@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
|
@@ -2,10 +2,18 @@ import type {
|
|
|
2
2
|
StoreProductCategory,
|
|
3
3
|
StoreProductCategoryListResponse,
|
|
4
4
|
} from '@medusajs/types';
|
|
5
|
-
import type {
|
|
5
|
+
import type {
|
|
6
|
+
Category,
|
|
7
|
+
Cache,
|
|
8
|
+
CategoryFactory,
|
|
9
|
+
CategoryFactoryCategoryOutput,
|
|
10
|
+
CategoryFactoryPaginatedOutput,
|
|
11
|
+
CategoryFactoryWithOutput,
|
|
12
|
+
CategoryPaginatedResult,
|
|
13
|
+
} from '@reactionary/core';
|
|
6
14
|
import {
|
|
7
15
|
CategoryIdentifierSchema,
|
|
8
|
-
|
|
16
|
+
CategoryCapability,
|
|
9
17
|
CategorySchema,
|
|
10
18
|
CategoryQueryByIdSchema,
|
|
11
19
|
CategoryQueryBySlugSchema,
|
|
@@ -28,18 +36,27 @@ import {
|
|
|
28
36
|
} from '@reactionary/core';
|
|
29
37
|
import type { MedusaAPI, MedusaConfiguration } from '../index.js';
|
|
30
38
|
import * as z from 'zod';
|
|
39
|
+
import type { MedusaCategoryFactory } from '../factories/category/category.factory.js';
|
|
31
40
|
|
|
32
|
-
export class
|
|
41
|
+
export class MedusaCategoryCapability<
|
|
42
|
+
TFactory extends CategoryFactory = MedusaCategoryFactory,
|
|
43
|
+
> extends CategoryCapability<
|
|
44
|
+
CategoryFactoryCategoryOutput<TFactory>,
|
|
45
|
+
CategoryFactoryPaginatedOutput<TFactory>
|
|
46
|
+
> {
|
|
33
47
|
protected config: MedusaConfiguration;
|
|
48
|
+
protected factory: CategoryFactoryWithOutput<TFactory>;
|
|
34
49
|
|
|
35
50
|
constructor(
|
|
36
51
|
config: MedusaConfiguration,
|
|
37
52
|
cache: Cache,
|
|
38
53
|
context: RequestContext,
|
|
39
|
-
public medusaApi: MedusaAPI
|
|
54
|
+
public medusaApi: MedusaAPI,
|
|
55
|
+
factory: CategoryFactoryWithOutput<TFactory>,
|
|
40
56
|
) {
|
|
41
57
|
super(cache, context);
|
|
42
58
|
this.config = config;
|
|
59
|
+
this.factory = factory;
|
|
43
60
|
}
|
|
44
61
|
|
|
45
62
|
protected async resolveCategoryIdByExternalId(
|
|
@@ -82,7 +99,9 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
82
99
|
inputSchema: CategoryQueryByIdSchema,
|
|
83
100
|
outputSchema: CategorySchema,
|
|
84
101
|
})
|
|
85
|
-
public override async getById(
|
|
102
|
+
public override async getById(
|
|
103
|
+
payload: CategoryQueryById,
|
|
104
|
+
): Promise<Result<CategoryFactoryCategoryOutput<TFactory>, NotFoundError>> {
|
|
86
105
|
const candidate = await this.resolveCategoryIdByExternalId(payload.id.key);
|
|
87
106
|
if (!candidate) {
|
|
88
107
|
return error<NotFoundError>({
|
|
@@ -107,7 +126,7 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
107
126
|
})
|
|
108
127
|
public override async getBySlug(
|
|
109
128
|
payload: CategoryQueryBySlug
|
|
110
|
-
): Promise<Result<
|
|
129
|
+
): Promise<Result<CategoryFactoryCategoryOutput<TFactory>, NotFoundError>> {
|
|
111
130
|
const sdk = await this.medusaApi.getClient();
|
|
112
131
|
|
|
113
132
|
const categoryResult = await sdk.store.category.list(this.getBySlugPayload(payload));
|
|
@@ -126,7 +145,7 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
126
145
|
})
|
|
127
146
|
public override async getBreadcrumbPathToCategory(
|
|
128
147
|
payload: CategoryQueryForBreadcrumb
|
|
129
|
-
): Promise<Result<
|
|
148
|
+
): Promise<Result<CategoryFactoryCategoryOutput<TFactory>[]>> {
|
|
130
149
|
const actualCategoryId = await this.resolveCategoryIdByExternalId(
|
|
131
150
|
payload.id.key
|
|
132
151
|
);
|
|
@@ -140,7 +159,7 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
140
159
|
include_ancestors_tree: true,
|
|
141
160
|
});
|
|
142
161
|
|
|
143
|
-
let results = new Array<
|
|
162
|
+
let results = new Array<CategoryFactoryCategoryOutput<TFactory>>();
|
|
144
163
|
let current: StoreProductCategory | null = path.product_category;
|
|
145
164
|
while (current) {
|
|
146
165
|
results.push(this.parseSingle(current));
|
|
@@ -209,7 +228,7 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
209
228
|
return success(result);
|
|
210
229
|
}
|
|
211
230
|
|
|
212
|
-
protected parseSingle(_body: StoreProductCategory):
|
|
231
|
+
protected parseSingle(_body: StoreProductCategory): CategoryFactoryCategoryOutput<TFactory> {
|
|
213
232
|
const identifier = CategoryIdentifierSchema.parse({
|
|
214
233
|
key: _body.metadata?.['external_id'] || '',
|
|
215
234
|
});
|
|
@@ -230,12 +249,12 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
230
249
|
images: [],
|
|
231
250
|
} satisfies Category;
|
|
232
251
|
|
|
233
|
-
return result;
|
|
252
|
+
return this.factory.parseCategory(this.context, result);
|
|
234
253
|
}
|
|
235
254
|
|
|
236
255
|
protected parsePaginatedResult(
|
|
237
256
|
body: StoreProductCategoryListResponse
|
|
238
|
-
) {
|
|
257
|
+
): CategoryFactoryPaginatedOutput<TFactory> {
|
|
239
258
|
const items = body.product_categories.map((x) => this.parseSingle(x));
|
|
240
259
|
|
|
241
260
|
const totalPages = Math.ceil(
|
|
@@ -254,7 +273,6 @@ export class MedusaCategoryProvider extends CategoryProvider {
|
|
|
254
273
|
items: items,
|
|
255
274
|
} satisfies CategoryPaginatedResult;
|
|
256
275
|
|
|
257
|
-
return result;
|
|
276
|
+
return this.factory.parseCategoryPaginatedResult(this.context, result);
|
|
258
277
|
}
|
|
259
278
|
}
|
|
260
|
-
|
|
@@ -12,6 +12,11 @@ import type {
|
|
|
12
12
|
CheckoutMutationRemovePaymentInstruction,
|
|
13
13
|
CheckoutMutationSetShippingAddress,
|
|
14
14
|
CheckoutMutationSetShippingInstruction,
|
|
15
|
+
CheckoutFactory,
|
|
16
|
+
CheckoutFactoryCheckoutOutput,
|
|
17
|
+
CheckoutFactoryPaymentMethodOutput,
|
|
18
|
+
CheckoutFactoryShippingMethodOutput,
|
|
19
|
+
CheckoutFactoryWithOutput,
|
|
15
20
|
CheckoutQueryById,
|
|
16
21
|
CheckoutQueryForAvailablePaymentMethods,
|
|
17
22
|
CheckoutQueryForAvailableShippingMethods,
|
|
@@ -35,7 +40,7 @@ import {
|
|
|
35
40
|
CheckoutMutationRemovePaymentInstructionSchema,
|
|
36
41
|
CheckoutMutationSetShippingAddressSchema,
|
|
37
42
|
CheckoutMutationSetShippingInstructionSchema,
|
|
38
|
-
|
|
43
|
+
CheckoutCapability,
|
|
39
44
|
CheckoutQueryByIdSchema,
|
|
40
45
|
CheckoutQueryForAvailablePaymentMethodsSchema,
|
|
41
46
|
CheckoutQueryForAvailableShippingMethodsSchema,
|
|
@@ -57,6 +62,7 @@ import {
|
|
|
57
62
|
type MedusaCartIdentifier,
|
|
58
63
|
type MedusaOrderIdentifier
|
|
59
64
|
} from '../schema/medusa.schema.js';
|
|
65
|
+
import type { MedusaCheckoutFactory } from '../factories/checkout/checkout.factory.js';
|
|
60
66
|
const debug = createDebug('reactionary:medusa:checkout');
|
|
61
67
|
|
|
62
68
|
export class CheckoutNotReadyForFinalizationError extends Error {
|
|
@@ -74,8 +80,15 @@ export class CheckoutNotReadyForFinalizationError extends Error {
|
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
82
|
|
|
77
|
-
export class
|
|
83
|
+
export class MedusaCheckoutCapability<
|
|
84
|
+
TFactory extends CheckoutFactory = MedusaCheckoutFactory,
|
|
85
|
+
> extends CheckoutCapability<
|
|
86
|
+
CheckoutFactoryCheckoutOutput<TFactory>,
|
|
87
|
+
CheckoutFactoryShippingMethodOutput<TFactory>,
|
|
88
|
+
CheckoutFactoryPaymentMethodOutput<TFactory>
|
|
89
|
+
> {
|
|
78
90
|
protected config: MedusaConfiguration;
|
|
91
|
+
protected factory: CheckoutFactoryWithOutput<TFactory>;
|
|
79
92
|
|
|
80
93
|
/**
|
|
81
94
|
* This controls which fields are always included when fetching a cart
|
|
@@ -91,10 +104,12 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
91
104
|
config: MedusaConfiguration,
|
|
92
105
|
cache: Cache,
|
|
93
106
|
context: RequestContext,
|
|
94
|
-
public medusaApi: MedusaAPI
|
|
107
|
+
public medusaApi: MedusaAPI,
|
|
108
|
+
factory: CheckoutFactoryWithOutput<TFactory>,
|
|
95
109
|
) {
|
|
96
110
|
super(cache, context);
|
|
97
111
|
this.config = config;
|
|
112
|
+
this.factory = factory;
|
|
98
113
|
}
|
|
99
114
|
|
|
100
115
|
protected initiateCheckoutForCartPayload(payload: CheckoutMutationInitiateCheckout): StoreUpdateCart {
|
|
@@ -118,7 +133,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
118
133
|
})
|
|
119
134
|
public override async initiateCheckoutForCart(
|
|
120
135
|
payload: CheckoutMutationInitiateCheckout
|
|
121
|
-
): Promise<Result<
|
|
136
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>>> {
|
|
122
137
|
const client = await this.medusaApi.getClient();
|
|
123
138
|
// we should eventually copy the cart.... but for now we just continue with the existing one.
|
|
124
139
|
if (debug.enabled) {
|
|
@@ -144,7 +159,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
144
159
|
})
|
|
145
160
|
public override async getById(
|
|
146
161
|
payload: CheckoutQueryById
|
|
147
|
-
): Promise<Result<
|
|
162
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>, NotFoundError>> {
|
|
148
163
|
const client = await this.medusaApi.getClient();
|
|
149
164
|
const response = await client.store.cart.retrieve(payload.identifier.key, {
|
|
150
165
|
fields: this.includedFields,
|
|
@@ -165,7 +180,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
165
180
|
})
|
|
166
181
|
public override async setShippingAddress(
|
|
167
182
|
payload: CheckoutMutationSetShippingAddress
|
|
168
|
-
): Promise<Result<
|
|
183
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>>> {
|
|
169
184
|
const client = await this.medusaApi.getClient();
|
|
170
185
|
|
|
171
186
|
const response = await client.store.cart.update(
|
|
@@ -191,7 +206,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
191
206
|
})
|
|
192
207
|
public override async getAvailableShippingMethods(
|
|
193
208
|
payload: CheckoutQueryForAvailableShippingMethods
|
|
194
|
-
): Promise<Result<
|
|
209
|
+
): Promise<Result<CheckoutFactoryShippingMethodOutput<TFactory>[]>> {
|
|
195
210
|
const client = await this.medusaApi.getClient();
|
|
196
211
|
|
|
197
212
|
if (debug.enabled) {
|
|
@@ -229,7 +244,9 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
229
244
|
shippingMethods
|
|
230
245
|
);
|
|
231
246
|
}
|
|
232
|
-
return success(
|
|
247
|
+
return success(
|
|
248
|
+
shippingMethods.map((x) => this.factory.parseShippingMethod(this.context, x)),
|
|
249
|
+
);
|
|
233
250
|
}
|
|
234
251
|
|
|
235
252
|
protected getAvailablePaymentMethodsPayload(payload: CheckoutQueryForAvailablePaymentMethods, regionId: string) {
|
|
@@ -244,7 +261,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
244
261
|
})
|
|
245
262
|
public override async getAvailablePaymentMethods(
|
|
246
263
|
payload: CheckoutQueryForAvailablePaymentMethods
|
|
247
|
-
): Promise<Result<
|
|
264
|
+
): Promise<Result<CheckoutFactoryPaymentMethodOutput<TFactory>[]>> {
|
|
248
265
|
const client = await this.medusaApi.getClient();
|
|
249
266
|
|
|
250
267
|
if (debug.enabled) {
|
|
@@ -286,7 +303,9 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
286
303
|
);
|
|
287
304
|
}
|
|
288
305
|
|
|
289
|
-
return success(
|
|
306
|
+
return success(
|
|
307
|
+
paymentMethods.map((x) => this.factory.parsePaymentMethod(this.context, x)),
|
|
308
|
+
);
|
|
290
309
|
}
|
|
291
310
|
|
|
292
311
|
|
|
@@ -307,7 +326,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
307
326
|
})
|
|
308
327
|
public override async addPaymentInstruction(
|
|
309
328
|
payload: CheckoutMutationAddPaymentInstruction
|
|
310
|
-
): Promise<Result<
|
|
329
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>>> {
|
|
311
330
|
const client = await this.medusaApi.getClient();
|
|
312
331
|
|
|
313
332
|
if (debug.enabled) {
|
|
@@ -347,7 +366,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
347
366
|
})
|
|
348
367
|
public override removePaymentInstruction(
|
|
349
368
|
payload: CheckoutMutationRemovePaymentInstruction
|
|
350
|
-
): Promise<Result<
|
|
369
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>>> {
|
|
351
370
|
throw new Error('Method not implemented.');
|
|
352
371
|
}
|
|
353
372
|
|
|
@@ -368,7 +387,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
368
387
|
})
|
|
369
388
|
public override async setShippingInstruction(
|
|
370
389
|
payload: CheckoutMutationSetShippingInstruction
|
|
371
|
-
): Promise<Result<
|
|
390
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>>> {
|
|
372
391
|
const client = await this.medusaApi.getClient();
|
|
373
392
|
const medusaId = payload.checkout as MedusaCartIdentifier;
|
|
374
393
|
try {
|
|
@@ -412,7 +431,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
412
431
|
})
|
|
413
432
|
public override async finalizeCheckout(
|
|
414
433
|
payload: CheckoutMutationFinalizeCheckout
|
|
415
|
-
): Promise<Result<
|
|
434
|
+
): Promise<Result<CheckoutFactoryCheckoutOutput<TFactory>>> {
|
|
416
435
|
const checkout = await this.getById({ identifier: payload.checkout });
|
|
417
436
|
if (!checkout.success || !checkout.value.readyForFinalization) {
|
|
418
437
|
throw new CheckoutNotReadyForFinalizationError(payload.checkout);
|
|
@@ -432,9 +451,15 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
432
451
|
order_display_id: response.order?.display_id ? +'' : '',
|
|
433
452
|
},
|
|
434
453
|
});
|
|
435
|
-
|
|
454
|
+
const refreshedCheckout = await this.getById({
|
|
436
455
|
identifier: payload.checkout,
|
|
437
|
-
})
|
|
456
|
+
});
|
|
457
|
+
|
|
458
|
+
if (!refreshedCheckout.success) {
|
|
459
|
+
throw new Error(`Unable to reload checkout ${payload.checkout.key} after completion`);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
return success(refreshedCheckout.value);
|
|
438
463
|
}
|
|
439
464
|
|
|
440
465
|
throw new Error('Something failed during order creation');
|
|
@@ -534,7 +559,7 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
534
559
|
* @param remote
|
|
535
560
|
* @returns
|
|
536
561
|
*/
|
|
537
|
-
protected parseSingle(remote: StoreCart):
|
|
562
|
+
protected parseSingle(remote: StoreCart): CheckoutFactoryCheckoutOutput<TFactory> {
|
|
538
563
|
const identifier = {
|
|
539
564
|
key: remote.id,
|
|
540
565
|
// region_id: remote.region_id,
|
|
@@ -668,6 +693,6 @@ export class MedusaCheckoutProvider extends CheckoutProvider {
|
|
|
668
693
|
shippingInstruction
|
|
669
694
|
};
|
|
670
695
|
|
|
671
|
-
return result;
|
|
696
|
+
return this.factory.parseCheckout(this.context, result);
|
|
672
697
|
}
|
|
673
698
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
type IdentityQuerySelf,
|
|
7
7
|
type RequestContext,
|
|
8
8
|
type Cache,
|
|
9
|
-
|
|
9
|
+
IdentityCapability,
|
|
10
10
|
Reactionary,
|
|
11
11
|
IdentityQuerySelfSchema,
|
|
12
12
|
IdentitySchema,
|
|
@@ -24,7 +24,7 @@ import createDebug from 'debug';
|
|
|
24
24
|
|
|
25
25
|
const debug = createDebug('reactionary:medusa:identity');
|
|
26
26
|
|
|
27
|
-
export class
|
|
27
|
+
export class MedusaIdentityCapability extends IdentityCapability {
|
|
28
28
|
protected config: MedusaConfiguration;
|
|
29
29
|
protected medusaApi: MedusaAPI;
|
|
30
30
|
|
|
@@ -32,7 +32,7 @@ export class MedusaIdentityProvider extends IdentityProvider {
|
|
|
32
32
|
config: MedusaConfiguration,
|
|
33
33
|
cache: Cache,
|
|
34
34
|
context: RequestContext,
|
|
35
|
-
medusaApi: MedusaAPI
|
|
35
|
+
medusaApi: MedusaAPI,
|
|
36
36
|
) {
|
|
37
37
|
super(cache, context);
|
|
38
38
|
|
|
@@ -3,11 +3,14 @@ import {
|
|
|
3
3
|
type InventoryQueryBySKU,
|
|
4
4
|
type RequestContext,
|
|
5
5
|
type Cache,
|
|
6
|
-
|
|
6
|
+
InventoryCapability,
|
|
7
7
|
InventorySchema,
|
|
8
8
|
InventoryQueryBySKUSchema,
|
|
9
9
|
Reactionary,
|
|
10
10
|
type InventoryIdentifier,
|
|
11
|
+
type InventoryFactory,
|
|
12
|
+
type InventoryFactoryOutput,
|
|
13
|
+
type InventoryFactoryWithOutput,
|
|
11
14
|
type InventoryStatus,
|
|
12
15
|
type NotFoundError,
|
|
13
16
|
type Result,
|
|
@@ -17,27 +20,35 @@ import type * as z from 'zod';
|
|
|
17
20
|
import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
18
21
|
import { MedusaAdminAPI, type MedusaAPI } from '../core/client.js';
|
|
19
22
|
import createDebug from 'debug';
|
|
23
|
+
import type { MedusaInventoryFactory } from '../factories/inventory/inventory.factory.js';
|
|
20
24
|
|
|
21
25
|
const debug = createDebug('reactionary:medusa:inventory');
|
|
22
26
|
|
|
23
|
-
export class
|
|
27
|
+
export class MedusaInventoryCapability<
|
|
28
|
+
TFactory extends InventoryFactory = MedusaInventoryFactory,
|
|
29
|
+
> extends InventoryCapability<InventoryFactoryOutput<TFactory>> {
|
|
24
30
|
protected config: MedusaConfiguration;
|
|
31
|
+
protected factory: InventoryFactoryWithOutput<TFactory>;
|
|
25
32
|
|
|
26
33
|
constructor(
|
|
27
34
|
config: MedusaConfiguration,
|
|
28
35
|
cache: Cache,
|
|
29
36
|
context: RequestContext,
|
|
30
|
-
public medusaApi: MedusaAPI
|
|
37
|
+
public medusaApi: MedusaAPI,
|
|
38
|
+
factory: InventoryFactoryWithOutput<TFactory>,
|
|
31
39
|
) {
|
|
32
40
|
super(cache, context);
|
|
33
41
|
this.config = config;
|
|
42
|
+
this.factory = factory;
|
|
34
43
|
}
|
|
35
44
|
|
|
36
45
|
@Reactionary({
|
|
37
46
|
inputSchema: InventoryQueryBySKUSchema,
|
|
38
47
|
outputSchema: InventorySchema,
|
|
39
48
|
})
|
|
40
|
-
public override async getBySKU(
|
|
49
|
+
public override async getBySKU(
|
|
50
|
+
payload: InventoryQueryBySKU,
|
|
51
|
+
): Promise<Result<InventoryFactoryOutput<TFactory>, NotFoundError>> {
|
|
41
52
|
const sku = payload.variant.sku;
|
|
42
53
|
const fulfillmentCenterKey = payload.fulfilmentCenter.key;
|
|
43
54
|
|
|
@@ -112,7 +123,7 @@ export class MedusaInventoryProvider extends InventoryProvider {
|
|
|
112
123
|
}
|
|
113
124
|
}
|
|
114
125
|
|
|
115
|
-
protected parseSingle(_body: unknown):
|
|
126
|
+
protected parseSingle(_body: unknown): InventoryFactoryOutput<TFactory> {
|
|
116
127
|
const { sku, fulfillmentCenterKey, quantity } = _body as {
|
|
117
128
|
sku: string;
|
|
118
129
|
fulfillmentCenterKey: string;
|
|
@@ -140,7 +151,7 @@ export class MedusaInventoryProvider extends InventoryProvider {
|
|
|
140
151
|
status
|
|
141
152
|
} satisfies Inventory;
|
|
142
153
|
|
|
143
|
-
return result;
|
|
154
|
+
return this.factory.parseInventory(this.context, result);
|
|
144
155
|
}
|
|
145
156
|
|
|
146
157
|
/**
|
|
@@ -150,7 +161,10 @@ export class MedusaInventoryProvider extends InventoryProvider {
|
|
|
150
161
|
* @param fulfillmentCenterKey
|
|
151
162
|
* @returns
|
|
152
163
|
*/
|
|
153
|
-
protected createEmptyInventoryResult(
|
|
164
|
+
protected createEmptyInventoryResult(
|
|
165
|
+
sku: string,
|
|
166
|
+
fulfillmentCenterKey: string,
|
|
167
|
+
): InventoryFactoryOutput<TFactory> {
|
|
154
168
|
const identifier = {
|
|
155
169
|
variant: { sku },
|
|
156
170
|
fulfillmentCenter: { key: fulfillmentCenterKey },
|
|
@@ -164,7 +178,7 @@ export class MedusaInventoryProvider extends InventoryProvider {
|
|
|
164
178
|
status
|
|
165
179
|
} satisfies Inventory;
|
|
166
180
|
|
|
167
|
-
return result;
|
|
181
|
+
return this.factory.parseInventory(this.context, result);
|
|
168
182
|
}
|
|
169
183
|
|
|
170
184
|
protected override getResourceName(): string {
|
|
@@ -13,10 +13,13 @@ import type {
|
|
|
13
13
|
OrderSearchIdentifier,
|
|
14
14
|
AddressIdentifier,
|
|
15
15
|
OrderInventoryStatus,
|
|
16
|
+
OrderSearchFactory,
|
|
17
|
+
OrderSearchFactoryOutput,
|
|
18
|
+
OrderSearchFactoryWithOutput,
|
|
16
19
|
} from '@reactionary/core';
|
|
17
20
|
import {
|
|
18
21
|
AddressIdentifierSchema,
|
|
19
|
-
|
|
22
|
+
OrderSearchCapability,
|
|
20
23
|
OrderSearchQueryByTermSchema,
|
|
21
24
|
OrderSearchResultSchema,
|
|
22
25
|
Reactionary,
|
|
@@ -26,21 +29,27 @@ import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
|
26
29
|
import type { MedusaAPI } from '../core/client.js';
|
|
27
30
|
import createDebug from 'debug';
|
|
28
31
|
import type { OrderStatus as MedusaOrderStatus, StoreOrder, StoreOrderAddress, StoreOrderListResponse } from '@medusajs/types';
|
|
32
|
+
import type { MedusaOrderSearchFactory } from '../factories/order-search/order-search.factory.js';
|
|
29
33
|
|
|
30
34
|
const debug = createDebug('reactionary:medusa:order-search');
|
|
31
35
|
|
|
32
|
-
export class
|
|
36
|
+
export class MedusaOrderSearchCapability<
|
|
37
|
+
TFactory extends OrderSearchFactory = MedusaOrderSearchFactory,
|
|
38
|
+
> extends OrderSearchCapability<OrderSearchFactoryOutput<TFactory>> {
|
|
33
39
|
protected config: MedusaConfiguration;
|
|
40
|
+
protected factory: OrderSearchFactoryWithOutput<TFactory>;
|
|
34
41
|
|
|
35
42
|
constructor(
|
|
36
43
|
config: MedusaConfiguration,
|
|
37
44
|
cache: Cache,
|
|
38
45
|
context: RequestContext,
|
|
39
|
-
public medusaApi: MedusaAPI
|
|
46
|
+
public medusaApi: MedusaAPI,
|
|
47
|
+
factory: OrderSearchFactoryWithOutput<TFactory>,
|
|
40
48
|
) {
|
|
41
49
|
super(cache, context);
|
|
42
50
|
|
|
43
51
|
this.config = config;
|
|
52
|
+
this.factory = factory;
|
|
44
53
|
|
|
45
54
|
}
|
|
46
55
|
|
|
@@ -99,7 +108,9 @@ export class MedusaOrderSearchProvider extends OrderSearchProvider {
|
|
|
99
108
|
inputSchema: OrderSearchQueryByTermSchema,
|
|
100
109
|
outputSchema: OrderSearchResultSchema,
|
|
101
110
|
})
|
|
102
|
-
public async queryByTerm(
|
|
111
|
+
public async queryByTerm(
|
|
112
|
+
payload: OrderSearchQueryByTerm,
|
|
113
|
+
): Promise<Result<OrderSearchFactoryOutput<TFactory>>> {
|
|
103
114
|
debug('queryByTerm', payload);
|
|
104
115
|
|
|
105
116
|
const medusa = await this.medusaApi.getClient();
|
|
@@ -109,14 +120,14 @@ export class MedusaOrderSearchProvider extends OrderSearchProvider {
|
|
|
109
120
|
|
|
110
121
|
const response = await medusa.store.order.list(this.queryByTermPayload(payload));
|
|
111
122
|
|
|
112
|
-
const result = this.parsePaginatedResult(response, payload)
|
|
123
|
+
const result = this.parsePaginatedResult(response, payload);
|
|
113
124
|
if (debug.enabled) {
|
|
114
125
|
debug(
|
|
115
126
|
`Search for term "${payload.search.term}" returned ${response.orders.length} orders (page ${payload.search.paginationOptions.pageNumber} of ${result.totalPages})`
|
|
116
127
|
);
|
|
117
128
|
}
|
|
118
129
|
|
|
119
|
-
return success(result);
|
|
130
|
+
return success(this.factory.parseOrderSearchResult(this.context, result, payload));
|
|
120
131
|
}
|
|
121
132
|
|
|
122
133
|
protected composeAddressFromStoreAddress(storeAddress: StoreOrderAddress): Address {
|
|
@@ -17,9 +17,12 @@ import type {
|
|
|
17
17
|
OrderInventoryStatus,
|
|
18
18
|
PaymentMethodIdentifier,
|
|
19
19
|
PaymentInstruction,
|
|
20
|
+
OrderFactory,
|
|
21
|
+
OrderFactoryOutput,
|
|
22
|
+
OrderFactoryWithOutput,
|
|
20
23
|
} from '@reactionary/core';
|
|
21
24
|
import {
|
|
22
|
-
|
|
25
|
+
OrderCapability,
|
|
23
26
|
OrderQueryByIdSchema,
|
|
24
27
|
OrderSchema,
|
|
25
28
|
Reactionary,
|
|
@@ -33,27 +36,35 @@ import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
|
33
36
|
import { handleProviderError } from '../utils/medusa-helpers.js';
|
|
34
37
|
import type { StoreOrder, StoreOrderLineItem, StorePaymentCollection } from '@medusajs/types';
|
|
35
38
|
import { parseMedusaItemPrice, parseMedusaCostBreakdown } from '../utils/medusa-helpers.js'
|
|
39
|
+
import type { MedusaOrderFactory } from '../factories/order/order.factory.js';
|
|
36
40
|
const debug = createDebug('reactionary:medusa:order');
|
|
37
41
|
|
|
38
|
-
export class
|
|
42
|
+
export class MedusaOrderCapability<
|
|
43
|
+
TFactory extends OrderFactory = MedusaOrderFactory,
|
|
44
|
+
> extends OrderCapability<OrderFactoryOutput<TFactory>> {
|
|
39
45
|
protected config: MedusaConfiguration;
|
|
46
|
+
protected factory: OrderFactoryWithOutput<TFactory>;
|
|
40
47
|
|
|
41
48
|
constructor(
|
|
42
49
|
config: MedusaConfiguration,
|
|
43
50
|
cache: Cache,
|
|
44
51
|
context: RequestContext,
|
|
45
|
-
public medusaApi: MedusaAPI
|
|
52
|
+
public medusaApi: MedusaAPI,
|
|
53
|
+
factory: OrderFactoryWithOutput<TFactory>,
|
|
46
54
|
) {
|
|
47
55
|
super(cache, context);
|
|
48
56
|
|
|
49
57
|
this.config = config;
|
|
58
|
+
this.factory = factory;
|
|
50
59
|
}
|
|
51
60
|
|
|
52
61
|
@Reactionary({
|
|
53
62
|
inputSchema: OrderQueryByIdSchema,
|
|
54
63
|
outputSchema: OrderSchema,
|
|
55
64
|
})
|
|
56
|
-
public async getById(
|
|
65
|
+
public async getById(
|
|
66
|
+
payload: OrderQueryById,
|
|
67
|
+
): Promise<Result<OrderFactoryOutput<TFactory>, NotFoundError>> {
|
|
57
68
|
debug('getById', payload);
|
|
58
69
|
|
|
59
70
|
const medusa = await this.medusaApi.getClient();
|
|
@@ -175,7 +186,7 @@ export class MedusaOrderProvider extends OrderProvider {
|
|
|
175
186
|
|
|
176
187
|
|
|
177
188
|
|
|
178
|
-
protected parseSingle(body: StoreOrder):
|
|
189
|
+
protected parseSingle(body: StoreOrder): OrderFactoryOutput<TFactory> {
|
|
179
190
|
|
|
180
191
|
const identifier = { key: body.id };
|
|
181
192
|
const userId: IdentityIdentifier = {
|
|
@@ -213,7 +224,7 @@ export class MedusaOrderProvider extends OrderProvider {
|
|
|
213
224
|
return this.parsePaymentInstruction(pc, body);
|
|
214
225
|
}) || [];
|
|
215
226
|
|
|
216
|
-
|
|
227
|
+
const result = {
|
|
217
228
|
identifier,
|
|
218
229
|
userId,
|
|
219
230
|
items,
|
|
@@ -222,5 +233,6 @@ export class MedusaOrderProvider extends OrderProvider {
|
|
|
222
233
|
inventoryStatus,
|
|
223
234
|
paymentInstructions
|
|
224
235
|
} satisfies Order;
|
|
236
|
+
return this.factory.parseOrder(this.context, result);
|
|
225
237
|
}
|
|
226
238
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StoreProductVariant } from '@medusajs/types';
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
PriceCapability,
|
|
4
4
|
PriceSchema,
|
|
5
5
|
CustomerPriceQuerySchema,
|
|
6
6
|
ListPriceQuerySchema,
|
|
@@ -11,6 +11,9 @@ import {
|
|
|
11
11
|
type CustomerPriceQuery,
|
|
12
12
|
type ListPriceQuery,
|
|
13
13
|
type Price,
|
|
14
|
+
type PriceFactory,
|
|
15
|
+
type PriceFactoryOutput,
|
|
16
|
+
type PriceFactoryWithOutput,
|
|
14
17
|
type RequestContext,
|
|
15
18
|
type PriceIdentifier,
|
|
16
19
|
type MonetaryAmount,
|
|
@@ -20,27 +23,35 @@ import createDebug from 'debug';
|
|
|
20
23
|
import type * as z from 'zod';
|
|
21
24
|
import type { MedusaAPI } from '../core/client.js';
|
|
22
25
|
import type { MedusaConfiguration } from '../schema/configuration.schema.js';
|
|
26
|
+
import type { MedusaPriceFactory } from '../factories/price/price.factory.js';
|
|
23
27
|
|
|
24
28
|
const debug = createDebug('reactionary:medusa:price');
|
|
25
29
|
|
|
26
|
-
export class
|
|
30
|
+
export class MedusaPriceCapability<
|
|
31
|
+
TFactory extends PriceFactory = MedusaPriceFactory,
|
|
32
|
+
> extends PriceCapability<PriceFactoryOutput<TFactory>> {
|
|
27
33
|
protected config: MedusaConfiguration;
|
|
34
|
+
protected factory: PriceFactoryWithOutput<TFactory>;
|
|
28
35
|
|
|
29
36
|
constructor(
|
|
30
37
|
config: MedusaConfiguration,
|
|
31
38
|
cache: Cache,
|
|
32
39
|
context: RequestContext,
|
|
33
|
-
public medusaApi: MedusaAPI
|
|
40
|
+
public medusaApi: MedusaAPI,
|
|
41
|
+
factory: PriceFactoryWithOutput<TFactory>,
|
|
34
42
|
) {
|
|
35
43
|
super(cache, context);
|
|
36
44
|
this.config = config;
|
|
45
|
+
this.factory = factory;
|
|
37
46
|
}
|
|
38
47
|
|
|
39
48
|
@Reactionary({
|
|
40
49
|
inputSchema: ListPriceQuerySchema,
|
|
41
50
|
outputSchema: PriceSchema,
|
|
42
51
|
})
|
|
43
|
-
public override async getListPrice(
|
|
52
|
+
public override async getListPrice(
|
|
53
|
+
payload: ListPriceQuery,
|
|
54
|
+
): Promise<Result<PriceFactoryOutput<TFactory>>> {
|
|
44
55
|
const result = await this.getBySKU(payload, 'list');
|
|
45
56
|
|
|
46
57
|
return success(result);
|
|
@@ -50,14 +61,19 @@ export class MedusaPriceProvider extends PriceProvider {
|
|
|
50
61
|
inputSchema: CustomerPriceQuerySchema,
|
|
51
62
|
outputSchema: PriceSchema,
|
|
52
63
|
})
|
|
53
|
-
public override async getCustomerPrice(
|
|
64
|
+
public override async getCustomerPrice(
|
|
65
|
+
payload: CustomerPriceQuery,
|
|
66
|
+
): Promise<Result<PriceFactoryOutput<TFactory>>> {
|
|
54
67
|
const result = await this.getBySKU(payload, 'customer');
|
|
55
68
|
|
|
56
69
|
return success(result);
|
|
57
70
|
}
|
|
58
71
|
|
|
59
72
|
|
|
60
|
-
protected async getBySKU(
|
|
73
|
+
protected async getBySKU(
|
|
74
|
+
payload: ListPriceQuery | CustomerPriceQuery,
|
|
75
|
+
mode: 'list' | 'customer',
|
|
76
|
+
): Promise<PriceFactoryOutput<TFactory>> {
|
|
61
77
|
const sku = payload.variant.sku;
|
|
62
78
|
|
|
63
79
|
if (debug.enabled) {
|
|
@@ -98,7 +114,10 @@ export class MedusaPriceProvider extends PriceProvider {
|
|
|
98
114
|
}
|
|
99
115
|
}
|
|
100
116
|
|
|
101
|
-
protected parseSingle(
|
|
117
|
+
protected parseSingle(
|
|
118
|
+
variant: StoreProductVariant,
|
|
119
|
+
mode: 'list' | 'customer',
|
|
120
|
+
): PriceFactoryOutput<TFactory> {
|
|
102
121
|
const identifier = {
|
|
103
122
|
variant: {
|
|
104
123
|
sku: variant.sku || '',
|
|
@@ -139,7 +158,7 @@ export class MedusaPriceProvider extends PriceProvider {
|
|
|
139
158
|
onSale: isOnSale,
|
|
140
159
|
} satisfies Price;
|
|
141
160
|
|
|
142
|
-
return result;
|
|
161
|
+
return this.factory.parsePrice(this.context, result);
|
|
143
162
|
}
|
|
144
163
|
|
|
145
164
|
|