**What**
Align the index engine API to be similar to the Query API
## Example
```ts
// Benefit from the same level of typing like the remote query
const { data, metadata } = await indexEngine.query<'product'>({
fields: [
"product.*",
"product.variants.*",
"product.variants.prices.*",
],
filters: {
product: {
variants: {
prices: {
amount: { $gt: 50 },
},
},
},
},
pagination: {
order: {
product: {
variants: {
prices: {
amount: "DESC",
},
},
},
},
},
})
```
339 lines
9.6 KiB
TypeScript
339 lines
9.6 KiB
TypeScript
import { ModuleDefinition } from "@medusajs/types"
|
|
import {
|
|
ContainerRegistrationKeys,
|
|
Modules,
|
|
upperCaseFirst,
|
|
} from "@medusajs/utils"
|
|
import { MODULE_RESOURCE_TYPE, MODULE_SCOPE } from "./types"
|
|
|
|
export const MODULE_PACKAGE_NAMES = {
|
|
[Modules.AUTH]: "@medusajs/auth",
|
|
[Modules.CACHE]: "@medusajs/cache-inmemory",
|
|
[Modules.CART]: "@medusajs/cart",
|
|
[Modules.CUSTOMER]: "@medusajs/customer",
|
|
[Modules.EVENT_BUS]: "@medusajs/event-bus-local",
|
|
[Modules.INVENTORY]: "@medusajs/inventory-next", // TODO: To be replaced when current `@medusajs/inventory` is deprecated
|
|
[Modules.LINK]: "@medusajs/link-modules",
|
|
[Modules.PAYMENT]: "@medusajs/payment",
|
|
[Modules.PRICING]: "@medusajs/pricing",
|
|
[Modules.PRODUCT]: "@medusajs/product",
|
|
[Modules.PROMOTION]: "@medusajs/promotion",
|
|
[Modules.SALES_CHANNEL]: "@medusajs/sales-channel",
|
|
[Modules.FULFILLMENT]: "@medusajs/fulfillment",
|
|
[Modules.STOCK_LOCATION]: "@medusajs/stock-location-next", // TODO: To be replaced when current `@medusajs/stock-location` is deprecated
|
|
[Modules.TAX]: "@medusajs/tax",
|
|
[Modules.USER]: "@medusajs/user",
|
|
[Modules.WORKFLOW_ENGINE]: "@medusajs/workflow-engine-inmemory",
|
|
[Modules.REGION]: "@medusajs/region",
|
|
[Modules.ORDER]: "@medusajs/order",
|
|
[Modules.API_KEY]: "@medusajs/api-key",
|
|
[Modules.STORE]: "@medusajs/store",
|
|
[Modules.CURRENCY]: "@medusajs/currency",
|
|
[Modules.FILE]: "@medusajs/file",
|
|
[Modules.NOTIFICATION]: "@medusajs/notification",
|
|
[Modules.INDEX]: "@medusajs/index",
|
|
}
|
|
|
|
export const ModulesDefinition: {
|
|
[key: string]: ModuleDefinition
|
|
} = {
|
|
[Modules.EVENT_BUS]: {
|
|
key: Modules.EVENT_BUS,
|
|
defaultPackage: MODULE_PACKAGE_NAMES[Modules.EVENT_BUS],
|
|
label: upperCaseFirst(Modules.EVENT_BUS),
|
|
isRequired: true,
|
|
isQueryable: false,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.STOCK_LOCATION]: {
|
|
key: Modules.STOCK_LOCATION,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.STOCK_LOCATION),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: [Modules.EVENT_BUS],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.INVENTORY]: {
|
|
key: Modules.INVENTORY,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.INVENTORY),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: [Modules.EVENT_BUS],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.CACHE]: {
|
|
key: Modules.CACHE,
|
|
defaultPackage: MODULE_PACKAGE_NAMES[Modules.CACHE],
|
|
label: upperCaseFirst(Modules.CACHE),
|
|
isRequired: true,
|
|
isQueryable: false,
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.PRODUCT]: {
|
|
key: Modules.PRODUCT,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.PRODUCT),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: [Modules.EVENT_BUS, "logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.PRICING]: {
|
|
key: Modules.PRICING,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.PRICING),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: [Modules.EVENT_BUS, "logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.PROMOTION]: {
|
|
key: Modules.PROMOTION,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.PROMOTION),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.AUTH]: {
|
|
key: Modules.AUTH,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.AUTH),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.WORKFLOW_ENGINE]: {
|
|
key: Modules.WORKFLOW_ENGINE,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.WORKFLOW_ENGINE),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
__passSharedContainer: true,
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.SALES_CHANNEL]: {
|
|
key: Modules.SALES_CHANNEL,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.SALES_CHANNEL),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.FULFILLMENT]: {
|
|
key: Modules.FULFILLMENT,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.FULFILLMENT),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger", Modules.EVENT_BUS],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.CART]: {
|
|
key: Modules.CART,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.CART),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.CUSTOMER]: {
|
|
key: Modules.CUSTOMER,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.CUSTOMER),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.PAYMENT]: {
|
|
key: Modules.PAYMENT,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.PAYMENT),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.USER]: {
|
|
key: Modules.USER,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.USER),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: [Modules.EVENT_BUS, "logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.REGION]: {
|
|
key: Modules.REGION,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.REGION),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.ORDER]: {
|
|
key: Modules.ORDER,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.ORDER),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger", Modules.EVENT_BUS],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.TAX]: {
|
|
key: Modules.TAX,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.TAX),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger", Modules.EVENT_BUS],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.API_KEY]: {
|
|
key: Modules.API_KEY,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.API_KEY),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.STORE]: {
|
|
key: Modules.STORE,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.STORE),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.CURRENCY]: {
|
|
key: Modules.CURRENCY,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.CURRENCY),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.FILE]: {
|
|
key: Modules.FILE,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.FILE),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: ["logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.NOTIFICATION]: {
|
|
key: Modules.NOTIFICATION,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.NOTIFICATION),
|
|
isRequired: false,
|
|
isQueryable: true,
|
|
dependencies: [Modules.EVENT_BUS, "logger"],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
[Modules.INDEX]: {
|
|
key: Modules.INDEX,
|
|
defaultPackage: false,
|
|
label: upperCaseFirst(Modules.INDEX),
|
|
isRequired: false,
|
|
isQueryable: false,
|
|
dependencies: [
|
|
Modules.EVENT_BUS,
|
|
"logger",
|
|
ContainerRegistrationKeys.REMOTE_QUERY,
|
|
ContainerRegistrationKeys.QUERY,
|
|
],
|
|
defaultModuleDeclaration: {
|
|
scope: MODULE_SCOPE.INTERNAL,
|
|
resources: MODULE_RESOURCE_TYPE.SHARED,
|
|
},
|
|
},
|
|
}
|
|
|
|
export const MODULE_DEFINITIONS: ModuleDefinition[] =
|
|
Object.values(ModulesDefinition)
|
|
|
|
export default MODULE_DEFINITIONS
|