@reactionary/source 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -11
- package/examples/node/package.json +7 -7
- package/examples/node/src/basic/basic-node-provider-model-extension.spec.ts +11 -5
- package/examples/node/src/basic/basic-node-provider-query-extension.spec.ts +9 -3
- package/examples/node/src/basic/basic-node-setup.spec.ts +6 -2
- package/examples/node/src/basic/client-creation.spec.ts +6 -6
- package/examples/node/src/utils.ts +48 -48
- package/examples/node/tsconfig.lib.json +2 -1
- package/package.json +1 -1
- package/packages/algolia/README.md +11 -0
- package/{providers/google-analytics → packages/algolia}/eslint.config.mjs +0 -2
- package/{providers → packages}/algolia/package.json +7 -5
- package/{providers/posthog → packages/algolia}/project.json +6 -6
- package/{providers/algolia/src/providers/analytics.provider.ts → packages/algolia/src/capabilities/analytics.capability.ts} +6 -6
- package/packages/algolia/src/capabilities/index.ts +3 -0
- package/{providers/algolia/src/providers/product-recommendations.provider.ts → packages/algolia/src/capabilities/product-recommendations.capability.ts} +3 -3
- package/packages/algolia/src/capabilities/product-search.capability.ts +119 -0
- package/packages/algolia/src/core/initialize.ts +82 -0
- package/packages/algolia/src/core/initialize.types.ts +107 -0
- package/packages/algolia/src/factories/index.ts +1 -0
- package/packages/algolia/src/factories/product-search/product-search.factory.ts +182 -0
- package/{providers/fake → packages/algolia}/src/index.ts +3 -2
- package/packages/algolia/src/schema/capabilities.schema.ts +84 -0
- package/{providers → packages}/algolia/src/test/analytics.spec.ts +12 -4
- package/packages/algolia/src/test/client-builder-product-search-extension.example.ts +85 -0
- package/packages/algolia/vite.config.ts +26 -0
- package/packages/algolia/vitest.config.mts +21 -0
- package/packages/commercetools/README.md +11 -0
- package/{core → packages/commercetools}/eslint.config.mjs +2 -2
- package/packages/commercetools/package.json +17 -0
- package/{providers → packages}/commercetools/project.json +7 -8
- package/{providers/commercetools/src/providers/cart.provider.ts → packages/commercetools/src/capabilities/cart.capability.ts} +68 -194
- package/{providers/commercetools/src/providers/category.provider.ts → packages/commercetools/src/capabilities/category.capability.ts} +26 -66
- package/{providers/commercetools/src/providers/checkout.provider.ts → packages/commercetools/src/capabilities/checkout.capability.ts} +51 -323
- package/{providers/commercetools/src/providers/identity.provider.ts → packages/commercetools/src/capabilities/identity.capability.ts} +36 -16
- package/packages/commercetools/src/capabilities/index.ts +15 -0
- package/{providers/commercetools/src/providers/inventory.provider.ts → packages/commercetools/src/capabilities/inventory.capability.ts} +14 -32
- package/packages/commercetools/src/capabilities/order-search.capability.ts +135 -0
- package/packages/commercetools/src/capabilities/order.capability.ts +67 -0
- package/{providers/commercetools/src/providers/price.provider.ts → packages/commercetools/src/capabilities/price.capability.ts} +38 -52
- package/{providers/commercetools/src/providers/product-associations.provider.ts → packages/commercetools/src/capabilities/product-associations.capability.ts} +40 -105
- package/{providers/commercetools/src/providers/product-list.provider.ts → packages/commercetools/src/capabilities/product-list.capability.ts} +39 -24
- package/{providers/commercetools/src/providers/product-reviews.provider.ts → packages/commercetools/src/capabilities/product-reviews.capability.ts} +35 -15
- package/{providers/commercetools/src/providers/product-search.provider.ts → packages/commercetools/src/capabilities/product-search.capability.ts} +18 -171
- package/packages/commercetools/src/capabilities/product.capability.ts +133 -0
- package/{providers/commercetools/src/providers/profile.provider.ts → packages/commercetools/src/capabilities/profile.capability.ts} +28 -74
- package/{providers/commercetools/src/providers/store.provider.ts → packages/commercetools/src/capabilities/store.capability.ts} +14 -32
- package/packages/commercetools/src/core/capability-descriptors.ts +324 -0
- package/{providers → packages}/commercetools/src/core/client.ts +2 -2
- package/packages/commercetools/src/core/initialize.ts +58 -0
- package/packages/commercetools/src/core/initialize.types.ts +174 -0
- package/packages/commercetools/src/factories/cart/cart.factory.ts +142 -0
- package/packages/commercetools/src/factories/category/category.factory.ts +77 -0
- package/packages/commercetools/src/factories/checkout/checkout-initializer-overrides.example.ts +94 -0
- package/packages/commercetools/src/factories/checkout/checkout.factory.ts +338 -0
- package/packages/commercetools/src/factories/identity/identity.factory.ts +26 -0
- package/packages/commercetools/src/factories/inventory/inventory.factory.ts +49 -0
- package/packages/commercetools/src/factories/order/order.factory.ts +149 -0
- package/packages/commercetools/src/factories/order-search/order-search.factory.ts +108 -0
- package/packages/commercetools/src/factories/price/price.factory.ts +76 -0
- package/packages/commercetools/src/factories/product/product-capability-custom-method-only.example.ts +47 -0
- package/packages/commercetools/src/factories/product/product-capability-schema-signature-extension.example.ts +61 -0
- package/packages/commercetools/src/factories/product/product-factory-baseline.example.ts +14 -0
- package/packages/commercetools/src/factories/product/product-factory-schema-and-parse-extension.example.ts +35 -0
- package/packages/commercetools/src/factories/product/product-factory-schema-extension.example.ts +23 -0
- package/packages/commercetools/src/factories/product/product-initializer-factory-extension.example.ts +41 -0
- package/packages/commercetools/src/factories/product/product.factory.ts +220 -0
- package/packages/commercetools/src/factories/product/utils.example.ts +9 -0
- package/packages/commercetools/src/factories/product-associations/product-associations.factory.ts +103 -0
- package/packages/commercetools/src/factories/product-list/product-list.factory.ts +122 -0
- package/packages/commercetools/src/factories/product-reviews/product-reviews.factory.ts +81 -0
- package/packages/commercetools/src/factories/product-search/product-search.factory.ts +182 -0
- package/packages/commercetools/src/factories/profile/profile.factory.ts +94 -0
- package/packages/commercetools/src/factories/store/store.factory.ts +49 -0
- package/packages/commercetools/src/index.ts +30 -0
- package/packages/commercetools/src/schema/capabilities.schema.ts +260 -0
- package/{providers → packages}/commercetools/src/test/caching.spec.ts +24 -8
- package/packages/commercetools/src/test/client-builder-merge-extensions.example.ts +125 -0
- package/{providers/algolia → packages/commercetools}/tsconfig.json +1 -1
- package/{core → packages/commercetools}/tsconfig.lib.json +1 -1
- package/packages/commercetools/tsconfig.spec.json +28 -0
- package/packages/commercetools/vite.config.ts +26 -0
- package/packages/commercetools/vitest.config.mts +21 -0
- package/{providers/fake → packages/core}/eslint.config.mjs +2 -1
- package/{core → packages/core}/package.json +7 -7
- package/packages/core/project.json +33 -0
- package/{core/src/providers/analytics.provider.ts → packages/core/src/capabilities/analytics.capability.ts} +8 -8
- package/{core/src/providers/base.provider.ts → packages/core/src/capabilities/base.capability.ts} +2 -2
- package/{core/src/providers/cart.provider.ts → packages/core/src/capabilities/cart.capability.ts} +13 -11
- package/{core/src/providers/category.provider.ts → packages/core/src/capabilities/category.capability.ts} +12 -10
- package/{core/src/providers/checkout.provider.ts → packages/core/src/capabilities/checkout.capability.ts} +15 -11
- package/{core/src/providers/identity.provider.ts → packages/core/src/capabilities/identity.capability.ts} +8 -8
- package/packages/core/src/capabilities/index.ts +18 -0
- package/{core/src/providers/inventory.provider.ts → packages/core/src/capabilities/inventory.capability.ts} +5 -5
- package/{core/src/providers/order-search.provider.ts → packages/core/src/capabilities/order-search.capability.ts} +5 -3
- package/{core/src/providers/order.provider.ts → packages/core/src/capabilities/order.capability.ts} +5 -5
- package/{core/src/providers/price.provider.ts → packages/core/src/capabilities/price.capability.ts} +6 -6
- package/{core/src/providers/product-associations.provider.ts → packages/core/src/capabilities/product-associations.capability.ts} +7 -5
- package/{core/src/providers/product-list.provider.ts → packages/core/src/capabilities/product-list.capability.ts} +14 -9
- package/{core/src/providers/product-recommendations.provider.ts → packages/core/src/capabilities/product-recommendations.capability.ts} +21 -21
- package/{core/src/providers/product-reviews.provider.ts → packages/core/src/capabilities/product-reviews.capability.ts} +9 -5
- package/packages/core/src/capabilities/product-search.capability.ts +48 -0
- package/{core/src/providers/product.provider.ts → packages/core/src/capabilities/product.capability.ts} +7 -7
- package/{core/src/providers/profile.provider.ts → packages/core/src/capabilities/profile.capability.ts} +9 -9
- package/{core/src/providers/store.provider.ts → packages/core/src/capabilities/store.capability.ts} +3 -3
- package/packages/core/src/client/client-builder.ts +131 -0
- package/packages/core/src/client/client.ts +35 -0
- package/{core → packages/core}/src/decorators/reactionary.decorator.ts +7 -7
- package/packages/core/src/factories/cart.factory.ts +40 -0
- package/packages/core/src/factories/category.factory.ts +40 -0
- package/packages/core/src/factories/checkout.factory.ts +59 -0
- package/packages/core/src/factories/identity.factory.ts +26 -0
- package/packages/core/src/factories/index.ts +15 -0
- package/packages/core/src/factories/inventory.factory.ts +26 -0
- package/packages/core/src/factories/order-search.factory.ts +33 -0
- package/packages/core/src/factories/order.factory.ts +21 -0
- package/packages/core/src/factories/price.factory.ts +29 -0
- package/packages/core/src/factories/product-associations.factory.ts +30 -0
- package/packages/core/src/factories/product-list.factory.ts +82 -0
- package/packages/core/src/factories/product-reviews.factory.ts +58 -0
- package/packages/core/src/factories/product-search.factory.ts +31 -0
- package/packages/core/src/factories/product.factory.ts +21 -0
- package/packages/core/src/factories/profile.factory.ts +23 -0
- package/packages/core/src/factories/store.factory.ts +21 -0
- package/packages/core/src/index.ts +8 -0
- package/packages/core/src/test/client-builder.spec.ts +141 -0
- package/{core → packages/core}/src/test/reactionary.decorator.spec.ts +27 -27
- package/{providers/meilisearch → packages/core}/tsconfig.json +1 -1
- package/{providers/medusa → packages/core}/tsconfig.lib.json +1 -2
- package/packages/core/tsconfig.spec.json +28 -0
- package/packages/core/vite.config.ts +26 -0
- package/packages/core/vitest.config.mts +21 -0
- package/packages/fake/README.md +11 -0
- package/{providers/algolia → packages/fake}/eslint.config.mjs +2 -1
- package/{providers → packages}/fake/package.json +6 -4
- package/{providers → packages}/fake/project.json +7 -8
- package/{providers/fake/src/providers/analytics.provider.ts → packages/fake/src/capabilities/analytics.capability.ts} +2 -2
- package/{providers/fake/src/providers/cart.provider.ts → packages/fake/src/capabilities/cart.capability.ts} +24 -15
- package/packages/fake/src/capabilities/category.capability.ts +199 -0
- package/{providers/fake/src/providers/checkout.provider.ts → packages/fake/src/capabilities/checkout.capability.ts} +40 -21
- package/{providers/fake/src/providers/identity.provider.ts → packages/fake/src/capabilities/identity.capability.ts} +40 -34
- package/packages/fake/src/capabilities/index.ts +15 -0
- package/packages/fake/src/capabilities/inventory.capability.ts +74 -0
- package/packages/fake/src/capabilities/order-search.capability.ts +86 -0
- package/{providers/fake/src/providers/order.provider.ts → packages/fake/src/capabilities/order.capability.ts} +22 -38
- package/{providers/fake/src/providers/price.provider.ts → packages/fake/src/capabilities/price.capability.ts} +42 -34
- package/{providers/fake/src/providers/product-associations.provider.ts → packages/fake/src/capabilities/product-associations.capability.ts} +24 -11
- package/{providers/fake/src/providers/product-reviews.provider.ts → packages/fake/src/capabilities/product-reviews.capability.ts} +72 -70
- package/{providers/fake/src/providers/product-search.provider.ts → packages/fake/src/capabilities/product-search.capability.ts} +44 -71
- package/{providers/fake/src/providers/product.provider.ts → packages/fake/src/capabilities/product.capability.ts} +35 -33
- package/packages/fake/src/capabilities/profile.capability.ts +154 -0
- package/packages/fake/src/capabilities/store.capability.ts +72 -0
- package/packages/fake/src/core/initialize.ts +274 -0
- package/packages/fake/src/core/initialize.types.ts +164 -0
- package/packages/fake/src/factories/cart/cart.factory.ts +34 -0
- package/packages/fake/src/factories/category/category.factory.ts +40 -0
- package/packages/fake/src/factories/checkout/checkout.factory.ts +53 -0
- package/packages/fake/src/factories/identity/identity.factory.ts +25 -0
- package/packages/fake/src/factories/index.ts +14 -0
- package/packages/fake/src/factories/inventory/inventory.factory.ts +25 -0
- package/packages/fake/src/factories/order/order.factory.ts +22 -0
- package/packages/fake/src/factories/order-search/order-search.factory.ts +27 -0
- package/packages/fake/src/factories/price/price.factory.ts +26 -0
- package/packages/fake/src/factories/product/product.factory.ts +22 -0
- package/packages/fake/src/factories/product-associations/product-associations.factory.ts +25 -0
- package/packages/fake/src/factories/product-reviews/product-reviews.factory.ts +53 -0
- package/packages/fake/src/factories/product-search/product-search.factory.ts +27 -0
- package/packages/fake/src/factories/profile/profile.factory.ts +22 -0
- package/packages/fake/src/factories/store/store.factory.ts +22 -0
- package/{providers/algolia → packages/fake}/src/index.ts +4 -3
- package/packages/fake/src/schema/capabilities.schema.ts +178 -0
- package/{providers/fake/src/test/cart.provider.spec.ts → packages/fake/src/test/cart.capability.spec.ts} +24 -7
- package/{providers/fake/src/test/category.provider.spec.ts → packages/fake/src/test/category.capability.spec.ts} +7 -4
- package/{providers/fake/src/test/checkout.provider.spec.ts → packages/fake/src/test/checkout.capability.spec.ts} +15 -5
- package/packages/fake/src/test/client-builder-product-extension.example.ts +75 -0
- package/{providers/fake/src/test/order-search.provider.spec.ts → packages/fake/src/test/order-search.capability.spec.ts} +7 -10
- package/{providers/fake/src/test/order.provider.spec.ts → packages/fake/src/test/order.capability.spec.ts} +7 -9
- package/{providers/fake/src/test/price.provider.spec.ts → packages/fake/src/test/price.capability.spec.ts} +6 -4
- package/{providers/fake/src/test/product.provider.spec.ts → packages/fake/src/test/product.capability.spec.ts} +10 -4
- package/{providers/fake/src/test/profile.provider.spec.ts → packages/fake/src/test/profile.capability.spec.ts} +7 -5
- package/{providers/commercetools → packages/fake}/tsconfig.json +1 -1
- package/packages/fake/tsconfig.lib.json +23 -0
- package/packages/fake/tsconfig.spec.json +28 -0
- package/packages/fake/vite.config.ts +26 -0
- package/packages/fake/vitest.config.mts +21 -0
- package/packages/google-analytics/eslint.config.mjs +23 -0
- package/{providers → packages}/google-analytics/package.json +7 -5
- package/{providers → packages}/google-analytics/project.json +5 -5
- package/{providers/google-analytics/src/providers/analytics.provider.ts → packages/google-analytics/src/capabilities/analytics.capability.ts} +2 -2
- package/packages/google-analytics/src/core/initialize.ts +41 -0
- package/packages/google-analytics/src/core/initialize.types.ts +47 -0
- package/{providers → packages}/google-analytics/src/index.ts +2 -1
- package/packages/google-analytics/src/schema/capabilities.schema.ts +36 -0
- package/{providers/google-analytics/src/test/analytics.provider.spec.ts → packages/google-analytics/src/test/analytics.capability.spec.ts} +7 -7
- package/packages/google-analytics/tsconfig.json +24 -0
- package/packages/google-analytics/tsconfig.lib.json +23 -0
- package/packages/google-analytics/tsconfig.spec.json +28 -0
- package/{providers → packages}/google-analytics/vite.config.ts +2 -2
- package/{providers → packages}/google-analytics/vitest.config.mts +2 -2
- package/packages/medusa/README.md +11 -0
- package/packages/medusa/eslint.config.mjs +23 -0
- package/packages/medusa/package.json +17 -0
- package/{providers → packages}/medusa/project.json +7 -8
- package/{providers/medusa/src/providers/cart.provider.ts → packages/medusa/src/capabilities/cart.capability.ts} +34 -21
- package/{providers/medusa/src/providers/category.provider.ts → packages/medusa/src/capabilities/category.capability.ts} +31 -13
- package/{providers/medusa/src/providers/checkout.provider.ts → packages/medusa/src/capabilities/checkout.capability.ts} +43 -18
- package/{providers/medusa/src/providers/identity.provider.ts → packages/medusa/src/capabilities/identity.capability.ts} +3 -3
- package/{providers/medusa/src/providers/inventory.provider.ts → packages/medusa/src/capabilities/inventory.capability.ts} +22 -8
- package/{providers/medusa/src/providers/order-search.provider.ts → packages/medusa/src/capabilities/order-search.capability.ts} +17 -6
- package/{providers/medusa/src/providers/order.provider.ts → packages/medusa/src/capabilities/order.capability.ts} +18 -6
- package/{providers/medusa/src/providers/price.provider.ts → packages/medusa/src/capabilities/price.capability.ts} +27 -8
- package/{providers/medusa/src/providers/product-associations.provider.ts → packages/medusa/src/capabilities/product-associations.capability.ts} +20 -9
- package/{providers/medusa/src/providers/product-recommendations.provider.ts → packages/medusa/src/capabilities/product-recommendations.capability.ts} +3 -3
- package/{providers/medusa/src/providers/product-search.provider.ts → packages/medusa/src/capabilities/product-search.capability.ts} +20 -32
- package/{providers/medusa/src/providers/product.provider.ts → packages/medusa/src/capabilities/product.capability.ts} +48 -12
- package/{providers/medusa/src/providers/profile.provider.ts → packages/medusa/src/capabilities/profile.capability.ts} +37 -13
- package/packages/medusa/src/core/initialize.ts +330 -0
- package/packages/medusa/src/core/initialize.types.ts +184 -0
- package/packages/medusa/src/factories/cart/cart.factory.ts +34 -0
- package/packages/medusa/src/factories/category/category.factory.ts +37 -0
- package/packages/medusa/src/factories/checkout/checkout.factory.ts +50 -0
- package/packages/medusa/src/factories/identity/identity.factory.ts +22 -0
- package/packages/medusa/src/factories/index.ts +12 -0
- package/packages/medusa/src/factories/inventory/inventory.factory.ts +25 -0
- package/packages/medusa/src/factories/order/order.factory.ts +22 -0
- package/packages/medusa/src/factories/order-search/order-search.factory.ts +27 -0
- package/packages/medusa/src/factories/price/price.factory.ts +26 -0
- package/packages/medusa/src/factories/product/product.factory.ts +22 -0
- package/packages/medusa/src/factories/product-associations/product-associations.factory.ts +25 -0
- package/packages/medusa/src/factories/product-search/product-search.factory.ts +27 -0
- package/packages/medusa/src/factories/profile/profile.factory.ts +22 -0
- package/packages/medusa/src/index.ts +17 -0
- package/packages/medusa/src/schema/capabilities.schema.ts +231 -0
- package/{providers/medusa/src/test/cart.provider.spec.ts → packages/medusa/src/test/cart.capability.spec.ts} +20 -4
- package/{providers/medusa/src/test/category.provider.spec.ts → packages/medusa/src/test/category.capability.spec.ts} +7 -4
- package/{providers → packages}/medusa/src/test/checkout.spec.ts +9 -9
- package/{providers/medusa/src/test/identity.provider.spec.ts → packages/medusa/src/test/identity.capability.spec.ts} +3 -3
- package/{providers/medusa/src/test/inventory.provider.spec.ts → packages/medusa/src/test/inventory.capability.spec.ts} +6 -4
- package/{providers/medusa/src/test/large-cart.provider.spec.ts → packages/medusa/src/test/large-cart.capability.spec.ts} +14 -8
- package/{providers/medusa/src/test/price.provider.spec.ts → packages/medusa/src/test/price.capability.spec.ts} +10 -3
- package/{providers/medusa/src/test/product.provider.spec.ts → packages/medusa/src/test/product.capability.spec.ts} +6 -4
- package/{providers/medusa/src/test/search.provider.spec.ts → packages/medusa/src/test/search.capability.spec.ts} +20 -7
- package/{providers → packages}/medusa/src/utils/medusa-helpers.ts +1 -1
- package/packages/medusa/tsconfig.json +24 -0
- package/packages/medusa/tsconfig.lib.json +23 -0
- package/packages/medusa/tsconfig.spec.json +28 -0
- package/packages/medusa/vite.config.ts +26 -0
- package/packages/medusa/vitest.config.mts +21 -0
- package/packages/meilisearch/README.md +11 -0
- package/packages/meilisearch/eslint.config.mjs +23 -0
- package/packages/meilisearch/package.json +15 -0
- package/{providers → packages}/meilisearch/project.json +7 -8
- package/packages/meilisearch/src/capabilities/index.ts +3 -0
- package/{providers/meilisearch/src/providers/order-search.provider.ts → packages/meilisearch/src/capabilities/order-search.capability.ts} +22 -7
- package/{providers/meilisearch/src/providers/product-recommendations.provider.ts → packages/meilisearch/src/capabilities/product-recommendations.capability.ts} +3 -3
- package/{providers/meilisearch/src/providers/product-search.provider.ts → packages/meilisearch/src/capabilities/product-search.capability.ts} +25 -9
- package/packages/meilisearch/src/core/initialize.ts +94 -0
- package/packages/meilisearch/src/core/initialize.types.ts +119 -0
- package/packages/meilisearch/src/factories/index.ts +2 -0
- package/packages/meilisearch/src/factories/order-search/order-search.factory.ts +27 -0
- package/packages/meilisearch/src/factories/product-search/product-search.factory.ts +27 -0
- package/packages/meilisearch/src/index.ts +9 -0
- package/packages/meilisearch/src/schema/capabilities.schema.ts +98 -0
- package/packages/meilisearch/tsconfig.json +24 -0
- package/packages/meilisearch/tsconfig.lib.json +23 -0
- package/packages/meilisearch/tsconfig.spec.json +28 -0
- package/packages/meilisearch/vite.config.ts +26 -0
- package/packages/meilisearch/vitest.config.mts +21 -0
- package/tsconfig.base.json +13 -21
- package/core/project.json +0 -34
- package/core/src/client/client-builder.ts +0 -84
- package/core/src/client/client.ts +0 -35
- package/core/src/index.ts +0 -6
- package/core/src/providers/index.ts +0 -18
- package/core/src/providers/product-search.provider.ts +0 -61
- package/core/src/test/client-builder.spec.ts +0 -60
- package/core/tsconfig.json +0 -24
- package/core/tsconfig.spec.json +0 -4
- package/core/vitest.config.ts +0 -14
- package/providers/algolia/README.md +0 -56
- package/providers/algolia/project.json +0 -34
- package/providers/algolia/src/core/initialize.ts +0 -27
- package/providers/algolia/src/providers/index.ts +0 -3
- package/providers/algolia/src/providers/product-search.provider.ts +0 -236
- package/providers/algolia/src/schema/capabilities.schema.ts +0 -10
- package/providers/algolia/tsconfig.lib.json +0 -10
- package/providers/algolia/tsconfig.spec.json +0 -4
- package/providers/algolia/vitest.config.ts +0 -14
- package/providers/commercetools/README.md +0 -65
- package/providers/commercetools/eslint.config.mjs +0 -22
- package/providers/commercetools/package.json +0 -15
- package/providers/commercetools/src/core/initialize.ts +0 -174
- package/providers/commercetools/src/index.ts +0 -15
- package/providers/commercetools/src/providers/index.ts +0 -15
- package/providers/commercetools/src/providers/order-search.provider.ts +0 -229
- package/providers/commercetools/src/providers/order.provider.ts +0 -198
- package/providers/commercetools/src/providers/product.provider.ts +0 -312
- package/providers/commercetools/src/schema/capabilities.schema.ts +0 -22
- package/providers/commercetools/tsconfig.lib.json +0 -10
- package/providers/commercetools/tsconfig.spec.json +0 -4
- package/providers/commercetools/vitest.config.ts +0 -15
- package/providers/fake/README.md +0 -23
- package/providers/fake/src/core/initialize.ts +0 -105
- package/providers/fake/src/providers/category.provider.ts +0 -184
- package/providers/fake/src/providers/index.ts +0 -15
- package/providers/fake/src/providers/inventory.provider.ts +0 -72
- package/providers/fake/src/providers/order-search.provider.ts +0 -78
- package/providers/fake/src/providers/profile.provider.ts +0 -147
- package/providers/fake/src/providers/store.provider.ts +0 -56
- package/providers/fake/src/schema/capabilities.schema.ts +0 -21
- package/providers/fake/tsconfig.json +0 -25
- package/providers/fake/tsconfig.lib.json +0 -11
- package/providers/fake/tsconfig.spec.json +0 -4
- package/providers/fake/vitest.config.ts +0 -14
- package/providers/google-analytics/src/core/initialize.ts +0 -16
- package/providers/google-analytics/src/schema/capabilities.schema.ts +0 -10
- package/providers/medusa/README.md +0 -30
- package/providers/medusa/TESTING.md +0 -98
- package/providers/medusa/eslint.config.mjs +0 -19
- package/providers/medusa/package.json +0 -15
- package/providers/medusa/src/core/initialize.ts +0 -87
- package/providers/medusa/src/index.ts +0 -15
- package/providers/medusa/src/schema/capabilities.schema.ts +0 -20
- package/providers/medusa/tsconfig.json +0 -24
- package/providers/medusa/tsconfig.spec.json +0 -4
- package/providers/medusa/vitest.config.ts +0 -15
- package/providers/meilisearch/README.md +0 -48
- package/providers/meilisearch/eslint.config.mjs +0 -22
- package/providers/meilisearch/package.json +0 -13
- package/providers/meilisearch/src/core/initialize.ts +0 -27
- package/providers/meilisearch/src/index.ts +0 -7
- package/providers/meilisearch/src/providers/index.ts +0 -2
- package/providers/meilisearch/src/schema/capabilities.schema.ts +0 -11
- package/providers/meilisearch/tsconfig.lib.json +0 -10
- package/providers/meilisearch/tsconfig.spec.json +0 -4
- package/providers/meilisearch/vitest.config.ts +0 -14
- package/providers/posthog/README.md +0 -7
- package/providers/posthog/eslint.config.mjs +0 -22
- package/providers/posthog/package.json +0 -12
- package/providers/posthog/src/core/initialize.ts +0 -11
- package/providers/posthog/src/index.ts +0 -4
- package/providers/posthog/src/schema/capabilities.schema.ts +0 -8
- package/providers/posthog/src/schema/configuration.schema.ts +0 -8
- package/providers/posthog/tsconfig.json +0 -21
- package/providers/posthog/tsconfig.lib.json +0 -9
- /package/{providers → packages}/algolia/src/schema/configuration.schema.ts +0 -0
- /package/{providers → packages}/algolia/src/schema/index.ts +0 -0
- /package/{providers → packages}/algolia/src/schema/product-recommendation.schema.ts +0 -0
- /package/{providers → packages}/algolia/src/schema/search.schema.ts +0 -0
- /package/{providers/google-analytics → packages/algolia}/tsconfig.json +0 -0
- /package/{providers/google-analytics → packages/algolia}/tsconfig.lib.json +0 -0
- /package/{providers/google-analytics → packages/algolia}/tsconfig.spec.json +0 -0
- /package/{providers → packages}/commercetools/src/core/token-cache.ts +0 -0
- /package/{providers → packages}/commercetools/src/schema/commercetools.schema.ts +0 -0
- /package/{providers → packages}/commercetools/src/schema/configuration.schema.ts +0 -0
- /package/{providers → packages}/commercetools/src/schema/session.schema.ts +0 -0
- /package/{providers → packages}/commercetools/src/test/identity.spec.ts +0 -0
- /package/{providers → packages}/commercetools/src/test/test-utils.ts +0 -0
- /package/{core → packages/core}/README.md +0 -0
- /package/{core → packages/core}/src/cache/cache.interface.ts +0 -0
- /package/{core → packages/core}/src/cache/index.ts +0 -0
- /package/{core → packages/core}/src/cache/memory-cache.ts +0 -0
- /package/{core → packages/core}/src/cache/noop-cache.ts +0 -0
- /package/{core → packages/core}/src/cache/redis-cache.ts +0 -0
- /package/{core → packages/core}/src/client/index.ts +0 -0
- /package/{core → packages/core}/src/decorators/index.ts +0 -0
- /package/{core → packages/core}/src/initialization.ts +0 -0
- /package/{core → packages/core}/src/metrics/metrics.ts +0 -0
- /package/{core → packages/core}/src/schemas/capabilities.schema.ts +0 -0
- /package/{core → packages/core}/src/schemas/errors/generic.error.ts +0 -0
- /package/{core → packages/core}/src/schemas/errors/index.ts +0 -0
- /package/{core → packages/core}/src/schemas/errors/invalid-input.error.ts +0 -0
- /package/{core → packages/core}/src/schemas/errors/invalid-output.error.ts +0 -0
- /package/{core → packages/core}/src/schemas/errors/not-found.error.ts +0 -0
- /package/{core → packages/core}/src/schemas/index.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/analytics.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/base.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/cart.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/category.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/checkout.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/cost.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/currency.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/identifiers.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/identity.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/index.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/inventory.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/order-search.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/order.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/payment.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/price.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/product-associations.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/product-list.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/product-recommendations.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/product-reviews.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/product-search.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/product.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/profile.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/shipping-method.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/models/store.model.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/analytics/index.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/analytics/product-add-to-cart.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/analytics/product-details-view.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/analytics/product-summary-click.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/analytics/product-summary-view.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/analytics/purchase.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/base.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/cart.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/checkout.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/identity.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/index.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/inventory.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/price.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/product-list.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/product-reviews.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/product.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/profile.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/mutations/search.mutation.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/analytics.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/base.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/cart.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/category.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/checkout.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/identity.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/index.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/inventory.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/order-search.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/order.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/price.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/product-associations.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/product-list.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/product-recommendations.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/product-reviews.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/product-search.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/product.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/profile.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/queries/store.query.ts +0 -0
- /package/{core → packages/core}/src/schemas/result.ts +0 -0
- /package/{core → packages/core}/src/schemas/session.schema.ts +0 -0
- /package/{core → packages/core}/src/test/request-context.spec.ts +0 -0
- /package/{core → packages/core}/src/zod-utils.ts +0 -0
- /package/{providers → packages}/fake/src/schema/configuration.schema.ts +0 -0
- /package/{providers → packages}/fake/src/test/test-utils.ts +0 -0
- /package/{providers → packages}/fake/src/utilities/jitter.ts +0 -0
- /package/{providers → packages}/fake/src/utilities/seed.ts +0 -0
- /package/{providers → packages}/google-analytics/README.md +0 -0
- /package/{providers → packages}/google-analytics/src/schema/configuration.schema.ts +0 -0
- /package/{providers → packages}/medusa/src/core/client.ts +0 -0
- /package/{providers → packages}/medusa/src/schema/configuration.schema.ts +0 -0
- /package/{providers → packages}/medusa/src/schema/medusa.schema.ts +0 -0
- /package/{providers → packages}/medusa/src/test/test-utils.ts +0 -0
- /package/{providers → packages}/meilisearch/src/schema/configuration.schema.ts +0 -0
- /package/{providers → packages}/meilisearch/src/schema/index.ts +0 -0
- /package/{providers → packages}/meilisearch/src/schema/search.schema.ts +0 -0
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
ProductAssociationsCapability,
|
|
3
3
|
Reactionary,
|
|
4
4
|
ImageSchema,
|
|
5
5
|
ProductSearchResultItemVariantSchema,
|
|
6
6
|
ProductVariantIdentifierSchema,
|
|
7
7
|
success,
|
|
8
8
|
} from '@reactionary/core';
|
|
9
|
+
import type {
|
|
10
|
+
ProductAssociationsFactory,
|
|
11
|
+
ProductAssociationsFactoryOutput,
|
|
12
|
+
ProductAssociationsFactoryWithOutput,
|
|
13
|
+
} from '@reactionary/core';
|
|
9
14
|
import type {
|
|
10
15
|
ProductVariantIdentifier,
|
|
11
16
|
ProductIdentifier,
|
|
@@ -22,20 +27,26 @@ import type {
|
|
|
22
27
|
import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
23
28
|
import type { MedusaAPI } from '../core/client.js';
|
|
24
29
|
import type { StoreProduct, StoreProductVariant } from '@medusajs/types';
|
|
30
|
+
import type { MedusaProductAssociationsFactory } from '../factories/product-associations/product-associations.factory.js';
|
|
25
31
|
|
|
26
|
-
export class
|
|
32
|
+
export class MedusaProductAssociationsCapability<
|
|
33
|
+
TFactory extends ProductAssociationsFactory = MedusaProductAssociationsFactory,
|
|
34
|
+
> extends ProductAssociationsCapability<ProductAssociationsFactoryOutput<TFactory>> {
|
|
27
35
|
protected config: MedusaConfiguration;
|
|
28
36
|
protected medusa: MedusaAPI;
|
|
37
|
+
protected factory: ProductAssociationsFactoryWithOutput<TFactory>;
|
|
29
38
|
|
|
30
39
|
constructor(
|
|
31
40
|
config: MedusaConfiguration,
|
|
32
41
|
cache: Cache,
|
|
33
42
|
context: RequestContext,
|
|
34
|
-
medusa: MedusaAPI
|
|
43
|
+
medusa: MedusaAPI,
|
|
44
|
+
factory: ProductAssociationsFactoryWithOutput<TFactory>,
|
|
35
45
|
) {
|
|
36
46
|
super(cache, context);
|
|
37
47
|
this.config = config;
|
|
38
48
|
this.medusa = medusa;
|
|
49
|
+
this.factory = factory;
|
|
39
50
|
}
|
|
40
51
|
|
|
41
52
|
protected async fetchAssociatedProductsFor(productKey: ProductIdentifier, maxNumberOfAssociations: number, attributeName: string): Promise<ProductSearchResultItem[]> {
|
|
@@ -87,7 +98,7 @@ export class MedusaProductAssociationsProvider extends ProductAssociationsProvid
|
|
|
87
98
|
})
|
|
88
99
|
public override async getAccessories(
|
|
89
100
|
query: ProductAssociationsGetAccessoriesQuery
|
|
90
|
-
): Promise<Result<
|
|
101
|
+
): Promise<Result<ProductAssociationsFactoryOutput<TFactory>[]>> {
|
|
91
102
|
const associatedProducts = await this.fetchAssociatedProductsFor(query.forProduct, query.numberOfAccessories || 4, 'reactionaryaccessories');
|
|
92
103
|
|
|
93
104
|
const result: ProductAssociation[] = associatedProducts.map(product => ({
|
|
@@ -98,7 +109,7 @@ export class MedusaProductAssociationsProvider extends ProductAssociationsProvid
|
|
|
98
109
|
product,
|
|
99
110
|
} satisfies ProductAssociation));
|
|
100
111
|
|
|
101
|
-
return success(result);
|
|
112
|
+
return success(result.map((x) => this.factory.parseAssociation(this.context, x)));
|
|
102
113
|
}
|
|
103
114
|
|
|
104
115
|
@Reactionary({
|
|
@@ -109,7 +120,7 @@ export class MedusaProductAssociationsProvider extends ProductAssociationsProvid
|
|
|
109
120
|
})
|
|
110
121
|
public override async getSpareparts(
|
|
111
122
|
query: ProductAssociationsGetSparepartsQuery
|
|
112
|
-
): Promise<Result<
|
|
123
|
+
): Promise<Result<ProductAssociationsFactoryOutput<TFactory>[]>> {
|
|
113
124
|
const associatedProducts = await this.fetchAssociatedProductsFor(query.forProduct, query.numberOfSpareparts || 4, 'reactionaryspareparts');
|
|
114
125
|
|
|
115
126
|
const result: ProductAssociation[] = associatedProducts.map(product => ({
|
|
@@ -120,7 +131,7 @@ export class MedusaProductAssociationsProvider extends ProductAssociationsProvid
|
|
|
120
131
|
product,
|
|
121
132
|
} satisfies ProductAssociation));
|
|
122
133
|
|
|
123
|
-
return success(result);
|
|
134
|
+
return success(result.map((x) => this.factory.parseAssociation(this.context, x)));
|
|
124
135
|
}
|
|
125
136
|
|
|
126
137
|
@Reactionary({
|
|
@@ -131,7 +142,7 @@ export class MedusaProductAssociationsProvider extends ProductAssociationsProvid
|
|
|
131
142
|
})
|
|
132
143
|
public override async getReplacements(
|
|
133
144
|
query: ProductAssociationsGetReplacementsQuery
|
|
134
|
-
): Promise<Result<
|
|
145
|
+
): Promise<Result<ProductAssociationsFactoryOutput<TFactory>[]>> {
|
|
135
146
|
const associatedProducts = await this.fetchAssociatedProductsFor(query.forProduct, query.numberOfReplacements || 4, 'reactionaryreplacements');
|
|
136
147
|
|
|
137
148
|
const result: ProductAssociation[] = associatedProducts.map(product => ({
|
|
@@ -142,7 +153,7 @@ export class MedusaProductAssociationsProvider extends ProductAssociationsProvid
|
|
|
142
153
|
product,
|
|
143
154
|
} satisfies ProductAssociation));
|
|
144
155
|
|
|
145
|
-
return success(result);
|
|
156
|
+
return success(result.map((x) => this.factory.parseAssociation(this.context, x)));
|
|
146
157
|
}
|
|
147
158
|
|
|
148
159
|
protected parseSingle(_body: StoreProduct): ProductSearchResultItem {
|
|
@@ -2,7 +2,7 @@ import type { StoreCollection, StoreProduct, StoreProductVariant } from '@medusa
|
|
|
2
2
|
import {
|
|
3
3
|
error,
|
|
4
4
|
ImageSchema,
|
|
5
|
-
|
|
5
|
+
ProductRecommendationsCapability,
|
|
6
6
|
ProductSearchResultItemVariantSchema,
|
|
7
7
|
ProductVariantIdentifierSchema,
|
|
8
8
|
success,
|
|
@@ -23,7 +23,7 @@ import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
|
23
23
|
const debug = createDebug('reactionary:medusa:product-recommendations');
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* MedusaProductRecommendationsCapability
|
|
27
27
|
*
|
|
28
28
|
* Provides product recommendations using Medusa's collection-based product grouping.
|
|
29
29
|
* Only overrides the getCollection method to fetch products from Medusa collections.
|
|
@@ -32,7 +32,7 @@ const debug = createDebug('reactionary:medusa:product-recommendations');
|
|
|
32
32
|
* curated product recommendations. Collections are typically manually managed or
|
|
33
33
|
* created through Medusa's admin panel or API.
|
|
34
34
|
*/
|
|
35
|
-
export class
|
|
35
|
+
export class MedusaProductRecommendationsCapability extends ProductRecommendationsCapability {
|
|
36
36
|
protected config: MedusaConfiguration;
|
|
37
37
|
protected medusaApi: MedusaAPI;
|
|
38
38
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
ProductSearchCapability,
|
|
3
3
|
ProductSearchQueryByTermSchema,
|
|
4
4
|
type Cache,
|
|
5
5
|
type RequestContext,
|
|
@@ -17,6 +17,9 @@ import {
|
|
|
17
17
|
type ProductSearchResultItemVariant,
|
|
18
18
|
type FacetIdentifier,
|
|
19
19
|
type FacetValueIdentifier,
|
|
20
|
+
type ProductSearchFactory,
|
|
21
|
+
type ProductSearchFactoryOutput,
|
|
22
|
+
type ProductSearchFactoryWithOutput,
|
|
20
23
|
type ProductSearchResultFacet,
|
|
21
24
|
type ProductSearchResultFacetValue,
|
|
22
25
|
Reactionary,
|
|
@@ -37,20 +40,26 @@ import type {
|
|
|
37
40
|
StoreProductListResponse,
|
|
38
41
|
StoreProductVariant,
|
|
39
42
|
} from '@medusajs/types';
|
|
43
|
+
import type { MedusaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
|
|
40
44
|
|
|
41
45
|
const debug = createDebug('reactionary:medusa:search');
|
|
42
46
|
|
|
43
|
-
export class
|
|
47
|
+
export class MedusaProductSearchCapability<
|
|
48
|
+
TFactory extends ProductSearchFactory = MedusaProductSearchFactory,
|
|
49
|
+
> extends ProductSearchCapability<ProductSearchFactoryOutput<TFactory>> {
|
|
44
50
|
protected config: MedusaConfiguration;
|
|
51
|
+
protected factory: ProductSearchFactoryWithOutput<TFactory>;
|
|
45
52
|
|
|
46
53
|
constructor(
|
|
47
54
|
config: MedusaConfiguration,
|
|
48
55
|
cache: Cache,
|
|
49
56
|
context: RequestContext,
|
|
50
|
-
public medusaApi: MedusaAPI
|
|
57
|
+
public medusaApi: MedusaAPI,
|
|
58
|
+
factory: ProductSearchFactoryWithOutput<TFactory>,
|
|
51
59
|
) {
|
|
52
60
|
super(cache, context);
|
|
53
61
|
this.config = config;
|
|
62
|
+
this.factory = factory;
|
|
54
63
|
}
|
|
55
64
|
|
|
56
65
|
protected async resolveCategoryIdByExternalId(
|
|
@@ -114,7 +123,7 @@ export class MedusaSearchProvider extends ProductSearchProvider {
|
|
|
114
123
|
})
|
|
115
124
|
public override async queryByTerm(
|
|
116
125
|
payload: ProductSearchQueryByTerm
|
|
117
|
-
): Promise<Result<
|
|
126
|
+
): Promise<Result<ProductSearchFactoryOutput<TFactory>>> {
|
|
118
127
|
const client = await this.medusaApi.getClient();
|
|
119
128
|
|
|
120
129
|
let categoryIdToFind: string | null = null;
|
|
@@ -141,22 +150,20 @@ export class MedusaSearchProvider extends ProductSearchProvider {
|
|
|
141
150
|
|
|
142
151
|
const response = await client.store.product.list(this.queryByTermPayload(payload, categoryIdToFind));
|
|
143
152
|
|
|
144
|
-
const result = this.parsePaginatedResult(response)
|
|
153
|
+
const result = this.parsePaginatedResult(response, payload);
|
|
145
154
|
if (debug.enabled) {
|
|
146
155
|
debug(
|
|
147
156
|
`Search for term "${payload.search.term}" returned ${response.products.length} products (page ${payload.search.paginationOptions.pageNumber} of ${result.totalPages})`
|
|
148
157
|
);
|
|
149
158
|
}
|
|
150
159
|
|
|
151
|
-
|
|
152
|
-
result.identifier = {
|
|
153
|
-
...payload.search,
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
return success(result);
|
|
160
|
+
return success(this.factory.parseSearchResult(this.context, result, payload));
|
|
157
161
|
}
|
|
158
162
|
|
|
159
|
-
protected parsePaginatedResult(
|
|
163
|
+
protected parsePaginatedResult(
|
|
164
|
+
remote: StoreProductListResponse,
|
|
165
|
+
query: ProductSearchQueryByTerm,
|
|
166
|
+
) {
|
|
160
167
|
// Parse facets
|
|
161
168
|
// no facets available from Medusa at the moment
|
|
162
169
|
|
|
@@ -166,13 +173,7 @@ export class MedusaSearchProvider extends ProductSearchProvider {
|
|
|
166
173
|
|
|
167
174
|
const result = {
|
|
168
175
|
identifier: {
|
|
169
|
-
|
|
170
|
-
filters: [],
|
|
171
|
-
paginationOptions: {
|
|
172
|
-
pageNumber: 1,
|
|
173
|
-
pageSize: 0,
|
|
174
|
-
},
|
|
175
|
-
term: '',
|
|
176
|
+
...query.search,
|
|
176
177
|
},
|
|
177
178
|
pageNumber: (Math.ceil(remote.offset / remote.limit) || 0) + 1,
|
|
178
179
|
pageSize: remote.limit,
|
|
@@ -237,17 +238,4 @@ export class MedusaSearchProvider extends ProductSearchProvider {
|
|
|
237
238
|
return success(facetValueIdentifier);
|
|
238
239
|
}
|
|
239
240
|
|
|
240
|
-
protected override parseFacetValue(
|
|
241
|
-
facetValueIdentifier: FacetValueIdentifier,
|
|
242
|
-
label: string,
|
|
243
|
-
count: number
|
|
244
|
-
): ProductSearchResultFacetValue {
|
|
245
|
-
throw new Error('Method not implemented.');
|
|
246
|
-
}
|
|
247
|
-
protected override parseFacet(
|
|
248
|
-
facetIdentifier: FacetIdentifier,
|
|
249
|
-
facetValue: unknown
|
|
250
|
-
): ProductSearchResultFacet {
|
|
251
|
-
throw new Error('Method not implemented.');
|
|
252
|
-
}
|
|
253
241
|
}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
Cache,
|
|
3
|
+
Image,
|
|
4
|
+
NotFoundError,
|
|
5
|
+
Product,
|
|
6
|
+
ProductAttribute,
|
|
7
|
+
ProductAttributeIdentifier,
|
|
8
|
+
ProductAttributeValueIdentifier,
|
|
9
|
+
ProductFactory,
|
|
10
|
+
ProductFactoryOutput,
|
|
11
|
+
ProductFactoryWithOutput,
|
|
12
|
+
ProductOptionIdentifier,
|
|
13
|
+
ProductOptionValueIdentifier,
|
|
14
|
+
ProductQueryById,
|
|
15
|
+
ProductQueryBySKU,
|
|
16
|
+
ProductQueryBySlug,
|
|
17
|
+
ProductVariant,
|
|
18
|
+
ProductVariantOption,
|
|
19
|
+
RequestContext,
|
|
20
|
+
Result,
|
|
21
|
+
} from '@reactionary/core';
|
|
2
22
|
import {
|
|
3
23
|
CategoryIdentifierSchema,
|
|
4
24
|
ProductIdentifierSchema,
|
|
5
|
-
|
|
25
|
+
ProductCapability,
|
|
6
26
|
ProductQueryByIdSchema,
|
|
7
27
|
ProductQueryBySKUSchema,
|
|
8
28
|
ProductQueryBySlugSchema,
|
|
@@ -16,16 +36,27 @@ import type { MedusaAPI } from '../core/client.js';
|
|
|
16
36
|
import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
17
37
|
|
|
18
38
|
import type { StoreProduct, StoreProductImage, StoreProductVariant } from '@medusajs/types';
|
|
39
|
+
import type { MedusaProductFactory } from '../factories/product/product.factory.js';
|
|
19
40
|
|
|
20
41
|
const debug = createDebug('reactionary:medusa:product');
|
|
21
42
|
|
|
22
|
-
export class
|
|
43
|
+
export class MedusaProductCapability<
|
|
44
|
+
TFactory extends ProductFactory = MedusaProductFactory,
|
|
45
|
+
> extends ProductCapability<ProductFactoryOutput<TFactory>> {
|
|
23
46
|
protected config: MedusaConfiguration;
|
|
24
|
-
protected alwaysIncludedFields = ["+metadata.*","+categories.metadata.*","+external_id"]
|
|
25
|
-
|
|
26
|
-
|
|
47
|
+
protected alwaysIncludedFields = ["+metadata.*","+categories.metadata.*","+external_id"];
|
|
48
|
+
protected factory: ProductFactoryWithOutput<TFactory>;
|
|
49
|
+
|
|
50
|
+
constructor(
|
|
51
|
+
config: MedusaConfiguration,
|
|
52
|
+
cache: Cache,
|
|
53
|
+
context: RequestContext,
|
|
54
|
+
public medusaApi: MedusaAPI,
|
|
55
|
+
factory: ProductFactoryWithOutput<TFactory>,
|
|
56
|
+
) {
|
|
27
57
|
super(cache, context);
|
|
28
58
|
this.config = config;
|
|
59
|
+
this.factory = factory;
|
|
29
60
|
}
|
|
30
61
|
|
|
31
62
|
protected getByIdPayload(payload: ProductQueryById) {
|
|
@@ -45,7 +76,9 @@ export class MedusaProductProvider extends ProductProvider {
|
|
|
45
76
|
currencyDependentCaching: false,
|
|
46
77
|
localeDependentCaching: true
|
|
47
78
|
})
|
|
48
|
-
public override async getById(
|
|
79
|
+
public override async getById(
|
|
80
|
+
payload: ProductQueryById,
|
|
81
|
+
): Promise<Result<ProductFactoryOutput<TFactory>>> {
|
|
49
82
|
const client = await this.medusaApi.getClient();
|
|
50
83
|
if (debug.enabled) {
|
|
51
84
|
debug(`Fetching product by ID: ${payload.identifier.key}`);
|
|
@@ -81,7 +114,9 @@ export class MedusaProductProvider extends ProductProvider {
|
|
|
81
114
|
currencyDependentCaching: false,
|
|
82
115
|
localeDependentCaching: true
|
|
83
116
|
})
|
|
84
|
-
public override async getBySlug(
|
|
117
|
+
public override async getBySlug(
|
|
118
|
+
payload: ProductQueryBySlug,
|
|
119
|
+
): Promise<Result<ProductFactoryOutput<TFactory>, NotFoundError>> {
|
|
85
120
|
const client = await this.medusaApi.getClient();
|
|
86
121
|
if (debug.enabled) {
|
|
87
122
|
debug(`Fetching product by slug: ${payload.slug}`);
|
|
@@ -111,7 +146,9 @@ export class MedusaProductProvider extends ProductProvider {
|
|
|
111
146
|
currencyDependentCaching: false,
|
|
112
147
|
localeDependentCaching: true
|
|
113
148
|
})
|
|
114
|
-
public override async getBySKU(
|
|
149
|
+
public override async getBySKU(
|
|
150
|
+
payload: ProductQueryBySKU,
|
|
151
|
+
): Promise<Result<ProductFactoryOutput<TFactory>>> {
|
|
115
152
|
if (debug.enabled) {
|
|
116
153
|
debug(`Fetching product by SKU: ${Array.isArray(payload) ? payload.join(', ') : payload}`);
|
|
117
154
|
}
|
|
@@ -129,7 +166,7 @@ export class MedusaProductProvider extends ProductProvider {
|
|
|
129
166
|
return success(this.parseSingle(product));
|
|
130
167
|
}
|
|
131
168
|
|
|
132
|
-
protected parseSingle(_body: StoreProduct):
|
|
169
|
+
protected parseSingle(_body: StoreProduct): ProductFactoryOutput<TFactory> {
|
|
133
170
|
const identifier = ProductIdentifierSchema.parse({ key: _body.external_id || _body.id });
|
|
134
171
|
const name = _body.title;
|
|
135
172
|
const slug = _body.handle;
|
|
@@ -171,7 +208,7 @@ export class MedusaProductProvider extends ProductProvider {
|
|
|
171
208
|
variants: otherVariants,
|
|
172
209
|
} satisfies Product;
|
|
173
210
|
|
|
174
|
-
return result;
|
|
211
|
+
return this.factory.parseProduct(this.context, result);
|
|
175
212
|
}
|
|
176
213
|
|
|
177
214
|
protected parseVariant(variant: StoreProductVariant, product: StoreProduct) {
|
|
@@ -275,4 +312,3 @@ export class MedusaProductProvider extends ProductProvider {
|
|
|
275
312
|
return sharedAttributes;
|
|
276
313
|
}
|
|
277
314
|
}
|
|
278
|
-
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
type Cache,
|
|
14
14
|
type Result,
|
|
15
15
|
type NotFoundError,
|
|
16
|
-
|
|
16
|
+
ProfileCapability,
|
|
17
17
|
Reactionary,
|
|
18
18
|
ProfileSchema,
|
|
19
19
|
ProfileMutationUpdateSchema,
|
|
@@ -24,6 +24,9 @@ import {
|
|
|
24
24
|
ProfileMutationSetBillingAddressSchema,
|
|
25
25
|
success,
|
|
26
26
|
type Address,
|
|
27
|
+
type ProfileFactory,
|
|
28
|
+
type ProfileFactoryOutput,
|
|
29
|
+
type ProfileFactoryWithOutput,
|
|
27
30
|
ProfileQueryByIdSchema,
|
|
28
31
|
error
|
|
29
32
|
} from '@reactionary/core';
|
|
@@ -31,10 +34,11 @@ import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
|
31
34
|
import type { MedusaAPI } from '../core/client.js';
|
|
32
35
|
import createDebug from 'debug';
|
|
33
36
|
import type { StoreCreateCustomerAddress, StoreCustomer, StoreCustomerAddress } from '@medusajs/types';
|
|
37
|
+
import type { MedusaProfileFactory } from '../factories/profile/profile.factory.js';
|
|
34
38
|
|
|
35
39
|
const debug = createDebug('reactionary:medusa:profile');
|
|
36
40
|
/**
|
|
37
|
-
* Medusa Profile
|
|
41
|
+
* Medusa Profile Capability
|
|
38
42
|
*
|
|
39
43
|
* Implements profile management using Medusa's customer APIs.
|
|
40
44
|
*
|
|
@@ -43,26 +47,33 @@ const debug = createDebug('reactionary:medusa:profile');
|
|
|
43
47
|
* - handle guest user scenarios (if applicable).
|
|
44
48
|
* - improve error handling and edge cases.
|
|
45
49
|
*/
|
|
46
|
-
export class
|
|
50
|
+
export class MedusaProfileCapability<
|
|
51
|
+
TFactory extends ProfileFactory = MedusaProfileFactory,
|
|
52
|
+
> extends ProfileCapability<ProfileFactoryOutput<TFactory>> {
|
|
47
53
|
protected config: MedusaConfiguration;
|
|
48
54
|
protected includedFields = ['+metadata.*'];
|
|
55
|
+
protected factory: ProfileFactoryWithOutput<TFactory>;
|
|
49
56
|
|
|
50
57
|
constructor(
|
|
51
58
|
config: MedusaConfiguration,
|
|
52
59
|
cache: Cache,
|
|
53
60
|
context: RequestContext,
|
|
54
|
-
public medusaApi: MedusaAPI
|
|
61
|
+
public medusaApi: MedusaAPI,
|
|
62
|
+
factory: ProfileFactoryWithOutput<TFactory>,
|
|
55
63
|
) {
|
|
56
64
|
super(cache, context);
|
|
57
65
|
|
|
58
66
|
this.config = config;
|
|
67
|
+
this.factory = factory;
|
|
59
68
|
}
|
|
60
69
|
|
|
61
70
|
@Reactionary({
|
|
62
71
|
inputSchema: ProfileQueryByIdSchema,
|
|
63
72
|
outputSchema: ProfileSchema,
|
|
64
73
|
})
|
|
65
|
-
public async getById(
|
|
74
|
+
public async getById(
|
|
75
|
+
payload: ProfileQueryById,
|
|
76
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
66
77
|
debug('getById', payload);
|
|
67
78
|
|
|
68
79
|
const client = await this.medusaApi.getClient();
|
|
@@ -91,7 +102,9 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
91
102
|
inputSchema: ProfileMutationUpdateSchema,
|
|
92
103
|
outputSchema: ProfileSchema,
|
|
93
104
|
})
|
|
94
|
-
public async update(
|
|
105
|
+
public async update(
|
|
106
|
+
payload: ProfileMutationUpdate,
|
|
107
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
95
108
|
debug('update', payload);
|
|
96
109
|
|
|
97
110
|
const client = await this.medusaApi.getClient();
|
|
@@ -120,7 +133,9 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
120
133
|
inputSchema: ProfileMutationAddShippingAddressSchema,
|
|
121
134
|
outputSchema: ProfileSchema,
|
|
122
135
|
})
|
|
123
|
-
public async addShippingAddress(
|
|
136
|
+
public async addShippingAddress(
|
|
137
|
+
payload: ProfileMutationAddShippingAddress,
|
|
138
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
124
139
|
debug('addShippingAddress', payload);
|
|
125
140
|
|
|
126
141
|
const client = await this.medusaApi.getClient();
|
|
@@ -162,7 +177,9 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
162
177
|
inputSchema: ProfileMutationUpdateShippingAddressSchema,
|
|
163
178
|
outputSchema: ProfileSchema,
|
|
164
179
|
})
|
|
165
|
-
public async updateShippingAddress(
|
|
180
|
+
public async updateShippingAddress(
|
|
181
|
+
payload: ProfileMutationUpdateShippingAddress,
|
|
182
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
166
183
|
debug('updateShippingAddress', payload);
|
|
167
184
|
|
|
168
185
|
const client = await this.medusaApi.getClient();
|
|
@@ -203,7 +220,9 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
203
220
|
inputSchema: ProfileMutationRemoveShippingAddressSchema,
|
|
204
221
|
outputSchema: ProfileSchema,
|
|
205
222
|
})
|
|
206
|
-
public async removeShippingAddress(
|
|
223
|
+
public async removeShippingAddress(
|
|
224
|
+
payload: ProfileMutationRemoveShippingAddress,
|
|
225
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
207
226
|
debug('removeShippingAddress', payload);
|
|
208
227
|
const client = await this.medusaApi.getClient();
|
|
209
228
|
|
|
@@ -247,7 +266,9 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
247
266
|
inputSchema: ProfileMutationMakeShippingAddressDefaultSchema,
|
|
248
267
|
outputSchema: ProfileSchema,
|
|
249
268
|
})
|
|
250
|
-
public async makeShippingAddressDefault(
|
|
269
|
+
public async makeShippingAddressDefault(
|
|
270
|
+
payload: ProfileMutationMakeShippingAddressDefault,
|
|
271
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
251
272
|
debug('makeShippingAddressDefault', payload);
|
|
252
273
|
|
|
253
274
|
const client = await this.medusaApi.getClient();
|
|
@@ -289,7 +310,9 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
289
310
|
inputSchema: ProfileMutationSetBillingAddressSchema,
|
|
290
311
|
outputSchema: ProfileSchema,
|
|
291
312
|
})
|
|
292
|
-
public async setBillingAddress(
|
|
313
|
+
public async setBillingAddress(
|
|
314
|
+
payload: ProfileMutationSetBillingAddress,
|
|
315
|
+
): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
|
|
293
316
|
debug('setBillingAddress', payload);
|
|
294
317
|
|
|
295
318
|
|
|
@@ -361,7 +384,7 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
361
384
|
}
|
|
362
385
|
}
|
|
363
386
|
|
|
364
|
-
protected parseSingle(customer: StoreCustomer):
|
|
387
|
+
protected parseSingle(customer: StoreCustomer): ProfileFactoryOutput<TFactory> {
|
|
365
388
|
const email = customer.email;
|
|
366
389
|
const emailVerified = customer.metadata?.['email_verified'] === 'true';
|
|
367
390
|
|
|
@@ -386,7 +409,7 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
386
409
|
|
|
387
410
|
alternateShippingAddresses.push(...addresses.filter(x => ! (x.is_default_billing || x.is_default_shipping)).map( addr => this.parseAddress(addr)));
|
|
388
411
|
|
|
389
|
-
|
|
412
|
+
const result = {
|
|
390
413
|
identifier: {
|
|
391
414
|
userId: customer.id,
|
|
392
415
|
},
|
|
@@ -400,6 +423,7 @@ export class MedusaProfileProvider extends ProfileProvider {
|
|
|
400
423
|
createdAt: new Date(customer.created_at || '').toISOString(),
|
|
401
424
|
updatedAt: new Date(customer.updated_at || '').toISOString()
|
|
402
425
|
} satisfies Profile;
|
|
426
|
+
return this.factory.parseProfile(this.context, result);
|
|
403
427
|
}
|
|
404
428
|
|
|
405
429
|
|