@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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './analytics.capability.js';
|
|
2
|
+
export * from './base.capability.js';
|
|
3
|
+
export * from './cart.capability.js';
|
|
4
|
+
export * from './category.capability.js';
|
|
5
|
+
export * from './checkout.capability.js';
|
|
6
|
+
export * from './identity.capability.js';
|
|
7
|
+
export * from './inventory.capability.js';
|
|
8
|
+
export * from './price.capability.js';
|
|
9
|
+
export * from './product.capability.js';
|
|
10
|
+
export * from './profile.capability.js';
|
|
11
|
+
export * from './product-search.capability.js';
|
|
12
|
+
export * from './product-recommendations.capability.js';
|
|
13
|
+
export * from './product-associations.capability.js';
|
|
14
|
+
export * from './product-reviews.capability.js';
|
|
15
|
+
export * from './product-list.capability.js'
|
|
16
|
+
export * from './store.capability.js';
|
|
17
|
+
export * from './order.capability.js'
|
|
18
|
+
export * from './order-search.capability.js'
|
|
@@ -3,22 +3,22 @@ import type { InventoryIdentifier } from '../schemas/models/identifiers.model.js
|
|
|
3
3
|
import type { Inventory } from '../schemas/models/inventory.model.js';
|
|
4
4
|
import type { InventoryQueryBySKU } from '../schemas/queries/inventory.query.js';
|
|
5
5
|
import type { Result } from '../schemas/result.js';
|
|
6
|
-
import {
|
|
6
|
+
import { BaseCapability } from './base.capability.js';
|
|
7
7
|
|
|
8
|
-
export abstract class
|
|
9
|
-
public abstract getBySKU(payload: InventoryQueryBySKU): Promise<Result<
|
|
8
|
+
export abstract class InventoryCapability<TInventory extends Inventory = Inventory> extends BaseCapability {
|
|
9
|
+
public abstract getBySKU(payload: InventoryQueryBySKU): Promise<Result<TInventory, NotFoundError>>;
|
|
10
10
|
|
|
11
11
|
protected override getResourceName(): string {
|
|
12
12
|
return 'inventory';
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
protected createEmptyInventory(key: InventoryIdentifier):
|
|
15
|
+
protected createEmptyInventory(key: InventoryIdentifier): TInventory {
|
|
16
16
|
const inventory = {
|
|
17
17
|
identifier: key,
|
|
18
18
|
quantity: 0,
|
|
19
19
|
status: 'outOfStock'
|
|
20
20
|
} satisfies Inventory;
|
|
21
21
|
|
|
22
|
-
return inventory;
|
|
22
|
+
return inventory as unknown as TInventory;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { OrderSearchResult } from "../schemas/models/order-search.model.js";
|
|
2
2
|
import type { OrderSearchQueryByTerm } from "../schemas/queries/order-search.query.js";
|
|
3
3
|
import type { Result } from "../schemas/result.js";
|
|
4
|
-
import {
|
|
4
|
+
import { BaseCapability } from "./base.capability.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* This provider handles order search operations. In some situations you may have different providers for order history listing and detail retrieval.
|
|
@@ -9,7 +9,9 @@ import { BaseProvider } from "./base.provider.js";
|
|
|
9
9
|
*
|
|
10
10
|
* Usecase: An e-commerce platform wants to provide customers with a way to search through their past orders using filters like date range, order status, or total amount spent.
|
|
11
11
|
*/
|
|
12
|
-
export abstract class
|
|
12
|
+
export abstract class OrderSearchCapability<
|
|
13
|
+
TOrderSearchResult extends OrderSearchResult = OrderSearchResult,
|
|
14
|
+
> extends BaseCapability {
|
|
13
15
|
protected override getResourceName(): string {
|
|
14
16
|
return 'order-search';
|
|
15
17
|
}
|
|
@@ -21,7 +23,7 @@ export abstract class OrderSearchProvider extends BaseProvider {
|
|
|
21
23
|
* Usecase: A widget on the frontpage after login, shows the last 5 orders placed by the customer.
|
|
22
24
|
* @param payload The search criteria for querying orders.
|
|
23
25
|
*/
|
|
24
|
-
public abstract queryByTerm(payload: OrderSearchQueryByTerm): Promise<Result<
|
|
26
|
+
public abstract queryByTerm(payload: OrderSearchQueryByTerm): Promise<Result<TOrderSearchResult>>;
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
|
package/{core/src/providers/order.provider.ts → packages/core/src/capabilities/order.capability.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseCapability } from './base.capability.js';
|
|
2
2
|
import type { Order } from '../schemas/models/index.js';
|
|
3
3
|
import type { OrderQueryById } from '../schemas/queries/index.js';
|
|
4
4
|
import type { Result } from '../schemas/result.js';
|
|
5
5
|
import type { NotFoundError } from '../schemas/index.js';
|
|
6
6
|
|
|
7
|
-
export abstract class
|
|
7
|
+
export abstract class OrderCapability<TOrder extends Order = Order> extends BaseCapability {
|
|
8
8
|
/**
|
|
9
9
|
* Get order by ID.
|
|
10
10
|
*
|
|
@@ -12,9 +12,9 @@ export abstract class OrderProvider extends BaseProvider {
|
|
|
12
12
|
* @param payload
|
|
13
13
|
* @param session
|
|
14
14
|
*/
|
|
15
|
-
public abstract getById(payload: OrderQueryById): Promise<Result<
|
|
15
|
+
public abstract getById(payload: OrderQueryById): Promise<Result<TOrder, NotFoundError>>;
|
|
16
16
|
|
|
17
|
-
protected createEmptyOrder():
|
|
17
|
+
protected createEmptyOrder(): TOrder {
|
|
18
18
|
const order = {
|
|
19
19
|
identifier: {
|
|
20
20
|
key: '',
|
|
@@ -54,7 +54,7 @@ export abstract class OrderProvider extends BaseProvider {
|
|
|
54
54
|
},
|
|
55
55
|
} satisfies Order;
|
|
56
56
|
|
|
57
|
-
return order;
|
|
57
|
+
return order as unknown as TOrder;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
protected override getResourceName(): string {
|
package/{core/src/providers/price.provider.ts → packages/core/src/capabilities/price.capability.ts}
RENAMED
|
@@ -3,9 +3,9 @@ import type {
|
|
|
3
3
|
CustomerPriceQuery,
|
|
4
4
|
ListPriceQuery,
|
|
5
5
|
} from '../schemas/queries/price.query.js';
|
|
6
|
-
import {
|
|
6
|
+
import { BaseCapability } from './base.capability.js';
|
|
7
7
|
|
|
8
|
-
export abstract class
|
|
8
|
+
export abstract class PriceCapability<TPrice extends Price = Price> extends BaseCapability {
|
|
9
9
|
/**
|
|
10
10
|
* Get a list price price by SKU. This is the most general, undiscounted price and is typically
|
|
11
11
|
* used as the "before" price in most ecommerce setups.
|
|
@@ -14,7 +14,7 @@ export abstract class PriceProvider extends BaseProvider {
|
|
|
14
14
|
* @param payload The SKU to query
|
|
15
15
|
* @param session The session information
|
|
16
16
|
*/
|
|
17
|
-
public abstract getListPrice(payload: ListPriceQuery): Promise<Result<
|
|
17
|
+
public abstract getListPrice(payload: ListPriceQuery): Promise<Result<TPrice>>;
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Get a customer-specific price by SKU.
|
|
@@ -25,7 +25,7 @@ export abstract class PriceProvider extends BaseProvider {
|
|
|
25
25
|
* @param payload The SKU to query
|
|
26
26
|
* @param session The session information
|
|
27
27
|
*/
|
|
28
|
-
public abstract getCustomerPrice(payload: CustomerPriceQuery): Promise<Result<
|
|
28
|
+
public abstract getCustomerPrice(payload: CustomerPriceQuery): Promise<Result<TPrice>>;
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Utility function to create an empty price result, with a value of -1.
|
|
@@ -35,7 +35,7 @@ export abstract class PriceProvider extends BaseProvider {
|
|
|
35
35
|
* @param currency
|
|
36
36
|
* @returns
|
|
37
37
|
*/
|
|
38
|
-
protected createEmptyPriceResult(sku: string):
|
|
38
|
+
protected createEmptyPriceResult(sku: string): TPrice {
|
|
39
39
|
const price = {
|
|
40
40
|
identifier: {
|
|
41
41
|
variant: {
|
|
@@ -50,7 +50,7 @@ export abstract class PriceProvider extends BaseProvider {
|
|
|
50
50
|
onSale: false,
|
|
51
51
|
} satisfies Price;
|
|
52
52
|
|
|
53
|
-
return price;
|
|
53
|
+
return price as unknown as TPrice;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
protected override getResourceName(): string {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ProductIdentifier, ProductVariantIdentifier } from "../schemas/index.js";
|
|
2
2
|
import type { ProductAssociationsGetAccessoriesQuery, ProductAssociationsGetSparepartsQuery, ProductAssociationsGetReplacementsQuery } from "../schemas/queries/product-associations.query.js";
|
|
3
|
-
import {
|
|
3
|
+
import { BaseCapability } from "./base.capability.js";
|
|
4
4
|
import type { Result } from '../schemas/result.js';
|
|
5
5
|
import type { ProductAssociation } from '../schemas/models/product-associations.model.js';
|
|
6
6
|
|
|
@@ -9,7 +9,9 @@ import type { ProductAssociation } from '../schemas/models/product-associations.
|
|
|
9
9
|
* accessories, spareparts, and replacements. These associations are typically used to provide recommendations to customers on the product detail page, but can also be used in other contexts such as the cart or post-purchase, but
|
|
10
10
|
* do not carry any personalization concept to them.
|
|
11
11
|
*/
|
|
12
|
-
export abstract class
|
|
12
|
+
export abstract class ProductAssociationsCapability<
|
|
13
|
+
TProductAssociation extends ProductAssociation = ProductAssociation,
|
|
14
|
+
> extends BaseCapability {
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Returns a list of product identifiers which are accessories to the given product.
|
|
@@ -23,7 +25,7 @@ export abstract class ProductAssociationsProvider extends BaseProvider {
|
|
|
23
25
|
*
|
|
24
26
|
* TODO: This should be a PaginatedResult
|
|
25
27
|
*/
|
|
26
|
-
public abstract getAccessories(query: ProductAssociationsGetAccessoriesQuery): Promise<Result<
|
|
28
|
+
public abstract getAccessories(query: ProductAssociationsGetAccessoriesQuery): Promise<Result<TProductAssociation[]>>;
|
|
27
29
|
|
|
28
30
|
/**
|
|
29
31
|
* Returns a list of product identifiers which are spareparts to the given product.
|
|
@@ -34,7 +36,7 @@ export abstract class ProductAssociationsProvider extends BaseProvider {
|
|
|
34
36
|
*
|
|
35
37
|
* TODO: This should be a PaginatedResult
|
|
36
38
|
*/
|
|
37
|
-
public abstract getSpareparts(query: ProductAssociationsGetSparepartsQuery): Promise<Result<
|
|
39
|
+
public abstract getSpareparts(query: ProductAssociationsGetSparepartsQuery): Promise<Result<TProductAssociation[]>>;
|
|
38
40
|
|
|
39
41
|
|
|
40
42
|
/**
|
|
@@ -43,7 +45,7 @@ export abstract class ProductAssociationsProvider extends BaseProvider {
|
|
|
43
45
|
* TODO: This should be a PaginatedResult
|
|
44
46
|
* @param query
|
|
45
47
|
*/
|
|
46
|
-
public abstract getReplacements(query: ProductAssociationsGetReplacementsQuery): Promise<Result<
|
|
48
|
+
public abstract getReplacements(query: ProductAssociationsGetReplacementsQuery): Promise<Result<TProductAssociation[]>>;
|
|
47
49
|
|
|
48
50
|
|
|
49
51
|
getResourceName(): string {
|
|
@@ -3,7 +3,7 @@ import type { ProductListItemMutationCreate, ProductListItemMutationDelete, Prod
|
|
|
3
3
|
import type { ProductListQuery, ProductListQueryById } from "../schemas/queries/product-list.query.js";
|
|
4
4
|
import { type ProductListItemsQuery } from "../schemas/queries/product-list.query.js";
|
|
5
5
|
import type { Result } from "../schemas/result.js";
|
|
6
|
-
import {
|
|
6
|
+
import { BaseCapability } from "./base.capability.js";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* The product list provider is a general purpose provider for creating various types of product lists, such as favorite lists, projects, wishlists, requisitionlists, etc
|
|
@@ -13,7 +13,12 @@ import { BaseProvider } from "./base.provider.js";
|
|
|
13
13
|
*
|
|
14
14
|
* Some systems might only support single entries of each type, but the general case is to support multiples.
|
|
15
15
|
*/
|
|
16
|
-
export abstract class
|
|
16
|
+
export abstract class ProductListCapability<
|
|
17
|
+
TProductList extends ProductList = ProductList,
|
|
18
|
+
TProductListItem extends ProductListItem = ProductListItem,
|
|
19
|
+
TProductListPaginatedResult extends ProductListPaginatedResult = ProductListPaginatedResult,
|
|
20
|
+
TProductListItemPaginatedResult extends ProductListItemPaginatedResult = ProductListItemPaginatedResult,
|
|
21
|
+
> extends BaseCapability {
|
|
17
22
|
|
|
18
23
|
protected getResourceName(): string {
|
|
19
24
|
return 'product-lists';
|
|
@@ -24,7 +29,7 @@ export abstract class ProductListProvider extends BaseProvider {
|
|
|
24
29
|
* you might have stored the identifier from an earlier session or looked it up previously.
|
|
25
30
|
* @param payload
|
|
26
31
|
*/
|
|
27
|
-
public abstract getById(payload: ProductListQueryById): Promise<Result<
|
|
32
|
+
public abstract getById(payload: ProductListQueryById): Promise<Result<TProductList>>;
|
|
28
33
|
|
|
29
34
|
|
|
30
35
|
/**
|
|
@@ -33,7 +38,7 @@ export abstract class ProductListProvider extends BaseProvider {
|
|
|
33
38
|
*
|
|
34
39
|
* @param query
|
|
35
40
|
*/
|
|
36
|
-
public abstract queryLists(query: ProductListQuery): Promise<Result<
|
|
41
|
+
public abstract queryLists(query: ProductListQuery): Promise<Result<TProductListPaginatedResult>>;
|
|
37
42
|
|
|
38
43
|
|
|
39
44
|
/**
|
|
@@ -44,14 +49,14 @@ export abstract class ProductListProvider extends BaseProvider {
|
|
|
44
49
|
* which the customer can then add the product to.
|
|
45
50
|
* @param mutation
|
|
46
51
|
*/
|
|
47
|
-
public abstract addList(mutation: ProductListMutationCreate): Promise<Result<
|
|
52
|
+
public abstract addList(mutation: ProductListMutationCreate): Promise<Result<TProductList>>;
|
|
48
53
|
|
|
49
54
|
/**
|
|
50
55
|
*
|
|
51
56
|
* Usecase: update name of list, or other metadata related to the list, such as "this is my summer wishlist", or "this is my favorite list for cameras".
|
|
52
57
|
* @param mutation
|
|
53
58
|
*/
|
|
54
|
-
public abstract updateList(mutation: ProductListMutationUpdate): Promise<Result<
|
|
59
|
+
public abstract updateList(mutation: ProductListMutationUpdate): Promise<Result<TProductList>>;
|
|
55
60
|
|
|
56
61
|
/**
|
|
57
62
|
* Usecase: customer wants to delete a list, such as "delete my summer wishlist", including all the product list items
|
|
@@ -63,13 +68,13 @@ export abstract class ProductListProvider extends BaseProvider {
|
|
|
63
68
|
* Usecase: in the frontend you want to show a list of the products in the customers wishlist.
|
|
64
69
|
* @param query
|
|
65
70
|
*/
|
|
66
|
-
public abstract queryListItems(query: ProductListItemsQuery): Promise<Result<
|
|
71
|
+
public abstract queryListItems(query: ProductListItemsQuery): Promise<Result<TProductListItemPaginatedResult>>;
|
|
67
72
|
|
|
68
73
|
/**
|
|
69
74
|
* Usecase: Add a new product-variant to a list
|
|
70
75
|
* @param mutation
|
|
71
76
|
*/
|
|
72
|
-
public abstract addItem(mutation: ProductListItemMutationCreate): Promise<Result<
|
|
77
|
+
public abstract addItem(mutation: ProductListItemMutationCreate): Promise<Result<TProductListItem>>;
|
|
73
78
|
|
|
74
79
|
/**
|
|
75
80
|
* Usecase: Remove a product-variant from a list.
|
|
@@ -81,6 +86,6 @@ export abstract class ProductListProvider extends BaseProvider {
|
|
|
81
86
|
* Usecase: Update the quantity of a product-variant in a list.
|
|
82
87
|
* @param mutation
|
|
83
88
|
*/
|
|
84
|
-
public abstract updateItem(mutation: ProductListItemMutationUpdate): Promise<Result<
|
|
89
|
+
public abstract updateItem(mutation: ProductListItemMutationUpdate): Promise<Result<TProductListItem>>;
|
|
85
90
|
|
|
86
91
|
}
|
|
@@ -2,12 +2,12 @@ import type { Cache } from '../cache/cache.interface.js';
|
|
|
2
2
|
import { Reactionary } from "../decorators/reactionary.decorator.js";
|
|
3
3
|
import { success, type ProductRecommendation, type ProductRecommendationsByCollectionQuery, type RequestContext, type Result } from "../schemas/index.js";
|
|
4
4
|
import { ProductRecommendationsQuerySchema, type ProductRecommendationAlgorithmAlsoViewedProductsQuery, type ProductRecommendationAlgorithmFrequentlyBoughtTogetherQuery, type ProductRecommendationAlgorithmPopuplarProductsQuery, type ProductRecommendationAlgorithmRelatedProductsQuery, type ProductRecommendationAlgorithmSimilarProductsQuery, type ProductRecommendationAlgorithmTopPicksProductsQuery, type ProductRecommendationAlgorithmTrendingInCategoryQuery, type ProductRecommendationsQuery } from "../schemas/queries/product-recommendations.query.js";
|
|
5
|
-
import {
|
|
5
|
+
import { BaseCapability } from "./base.capability.js";
|
|
6
6
|
|
|
7
|
-
export abstract class
|
|
7
|
+
export abstract class ProductRecommendationsCapability extends BaseCapability {
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* returns a list of recommended products, based on the selected algorithm and the provided query parameters. The recommendations should be relevant to the product specified in the query, and can be personalized based on the customer segments or contexts provided. The
|
|
10
|
+
* returns a list of recommended products, based on the selected algorithm and the provided query parameters. The recommendations should be relevant to the product specified in the query, and can be personalized based on the customer segments or contexts provided. The capability should return a list of product variant identifiers that are recommended for the given product, which can then be used to fetch the full product details from the product capability if needed.
|
|
11
11
|
* *
|
|
12
12
|
* Usecase:
|
|
13
13
|
* - PDP - "Customers who viewed this product also viewed"
|
|
@@ -89,17 +89,17 @@ export abstract class ProductRecommendationsProvider extends BaseProvider {
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
|
|
92
|
-
export class
|
|
93
|
-
protected
|
|
92
|
+
export class MulticastProductRecommendationsCapability extends ProductRecommendationsCapability {
|
|
93
|
+
protected capabilities: Array<ProductRecommendationsCapability>;
|
|
94
94
|
|
|
95
95
|
constructor(
|
|
96
96
|
cache: Cache,
|
|
97
97
|
requestContext: RequestContext,
|
|
98
|
-
|
|
98
|
+
capabilities: Array<ProductRecommendationsCapability>
|
|
99
99
|
) {
|
|
100
100
|
super(cache, requestContext);
|
|
101
101
|
|
|
102
|
-
this.
|
|
102
|
+
this.capabilities = capabilities;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
@Reactionary({
|
|
@@ -107,15 +107,15 @@ export class MulticastProductRecommendationsProvider extends ProductRecommendati
|
|
|
107
107
|
})
|
|
108
108
|
public override async getRecommendations(query: ProductRecommendationsQuery): Promise<Result<ProductRecommendation[]>> {
|
|
109
109
|
const output = [];
|
|
110
|
-
for (const
|
|
111
|
-
const
|
|
112
|
-
if (
|
|
110
|
+
for (const capability of this.capabilities) {
|
|
111
|
+
const capabilityOutput = await capability.getRecommendations(query);
|
|
112
|
+
if (capabilityOutput.success) {
|
|
113
113
|
|
|
114
|
-
output.push(...
|
|
114
|
+
output.push(...capabilityOutput.value);
|
|
115
115
|
} else {
|
|
116
116
|
// For other types of errors, we might want to log them or handle them differently
|
|
117
|
-
console.error(`Error from
|
|
118
|
-
return
|
|
117
|
+
console.error(`Error from capability ${capability.constructor.name}:`, capabilityOutput.error);
|
|
118
|
+
return capabilityOutput
|
|
119
119
|
}
|
|
120
120
|
if (output.length >= query.numberOfRecommendations) {
|
|
121
121
|
break;
|
|
@@ -126,18 +126,18 @@ export class MulticastProductRecommendationsProvider extends ProductRecommendati
|
|
|
126
126
|
|
|
127
127
|
public override async getCollection(query: ProductRecommendationsByCollectionQuery): Promise<Result<ProductRecommendation[]>> {
|
|
128
128
|
const output = [];
|
|
129
|
-
for (const
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
132
|
-
output.push(...
|
|
129
|
+
for (const capability of this.capabilities) {
|
|
130
|
+
const capabilityOutput = await capability.getCollection(query);
|
|
131
|
+
if (capabilityOutput.success) {
|
|
132
|
+
output.push(...capabilityOutput.value);
|
|
133
133
|
} else {
|
|
134
|
-
if (
|
|
135
|
-
// If the error is a NotFound error, we can ignore it and continue to the next
|
|
134
|
+
if (capabilityOutput.error.type === 'NotFound') {
|
|
135
|
+
// If the error is a NotFound error, we can ignore it and continue to the next capability
|
|
136
136
|
continue;
|
|
137
137
|
} else {
|
|
138
138
|
// For other types of errors, we might want to log them or handle them differently
|
|
139
|
-
console.error(`Error from
|
|
140
|
-
return
|
|
139
|
+
console.error(`Error from capability ${capability.constructor.name}:`, capabilityOutput.error);
|
|
140
|
+
return capabilityOutput;
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
if (output.length >= query.numberOfRecommendations) {
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import type { Result, ProductReview, ProductRatingSummary, ProductReviewPaginatedResult } from '../schemas/index.js';
|
|
2
2
|
import type { ProductReviewsListQuery, ProductReviewsGetRatingSummaryQuery } from '../schemas/queries/product-reviews.query.js';
|
|
3
3
|
import type { ProductReviewMutationSubmit } from '../schemas/mutations/product-reviews.mutation.js';
|
|
4
|
-
import {
|
|
4
|
+
import { BaseCapability } from './base.capability.js';
|
|
5
5
|
import { type ProductRatingIdentifier } from '../schemas/models/identifiers.model.js';
|
|
6
6
|
/**
|
|
7
7
|
* The product reviews provider is responsible for providing detailed product reviews from customers.
|
|
8
8
|
* Reviews contain ratings along with textual feedback, author information, and verification status.
|
|
9
9
|
* This provider also handles aggregated rating summaries for products.
|
|
10
10
|
*/
|
|
11
|
-
export abstract class
|
|
11
|
+
export abstract class ProductReviewsCapability<
|
|
12
|
+
TProductRatingSummary extends ProductRatingSummary = ProductRatingSummary,
|
|
13
|
+
TProductReviewPaginatedResult extends ProductReviewPaginatedResult = ProductReviewPaginatedResult,
|
|
14
|
+
TProductReview extends ProductReview = ProductReview,
|
|
15
|
+
> extends BaseCapability {
|
|
12
16
|
/**
|
|
13
17
|
* Get the rating summary for a product, including average rating and distribution.
|
|
14
18
|
*
|
|
@@ -17,7 +21,7 @@ export abstract class ProductReviewsProvider extends BaseProvider {
|
|
|
17
21
|
*/
|
|
18
22
|
public abstract getRatingSummary(
|
|
19
23
|
query: ProductReviewsGetRatingSummaryQuery
|
|
20
|
-
): Promise<Result<
|
|
24
|
+
): Promise<Result<TProductRatingSummary>>;
|
|
21
25
|
|
|
22
26
|
/**
|
|
23
27
|
* Get a paginated list of reviews for a product.
|
|
@@ -27,7 +31,7 @@ export abstract class ProductReviewsProvider extends BaseProvider {
|
|
|
27
31
|
*/
|
|
28
32
|
public abstract findReviews(
|
|
29
33
|
query: ProductReviewsListQuery
|
|
30
|
-
): Promise<Result<
|
|
34
|
+
): Promise<Result<TProductReviewPaginatedResult>>;
|
|
31
35
|
/**
|
|
32
36
|
* Submit a review for a product.
|
|
33
37
|
*
|
|
@@ -36,7 +40,7 @@ export abstract class ProductReviewsProvider extends BaseProvider {
|
|
|
36
40
|
*/
|
|
37
41
|
public abstract submitReview(
|
|
38
42
|
mutation: ProductReviewMutationSubmit
|
|
39
|
-
): Promise<Result<
|
|
43
|
+
): Promise<Result<TProductReview>>;
|
|
40
44
|
|
|
41
45
|
|
|
42
46
|
protected createEmptyProductRatingSummary(key: ProductRatingIdentifier): ProductRatingSummary {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Category, FacetValueIdentifier, Result } from '../index.js';
|
|
2
|
+
import type { ProductSearchResult } from '../schemas/models/product-search.model.js';
|
|
3
|
+
import type {
|
|
4
|
+
ProductSearchQueryByTerm,
|
|
5
|
+
ProductSearchQueryCreateNavigationFilter,
|
|
6
|
+
} from '../schemas/queries/product-search.query.js';
|
|
7
|
+
import { BaseCapability } from './base.capability.js';
|
|
8
|
+
|
|
9
|
+
export abstract class ProductSearchCapability<
|
|
10
|
+
TProductSearchResult extends ProductSearchResult = ProductSearchResult,
|
|
11
|
+
> extends BaseCapability {
|
|
12
|
+
protected override getResourceName(): string {
|
|
13
|
+
return 'product-search';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public abstract queryByTerm(
|
|
17
|
+
payload: ProductSearchQueryByTerm,
|
|
18
|
+
): Promise<Result<TProductSearchResult>>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Since each platform has it own way of representing categories and their hierarchy, we leave it to the platform to tell us how to get from a
|
|
22
|
+
* category breadcrumb path to a global category navigation filter that can be applied to product searches.
|
|
23
|
+
*
|
|
24
|
+
* So, the CLP pattern would be
|
|
25
|
+
*
|
|
26
|
+
* const c: Category = await categoryProvider.getBySlug({ slug: 'some-category' });
|
|
27
|
+
* const breadcrumbPath: Category[] = await categoryProvider.getBreadcrumbPathToCategory({ id: c.identifier });
|
|
28
|
+
* const categoryFilter: FacetValueIdentifier = categoryNavigationProvider.createCategoryNavigationFilterBreadcrumbs(breadcrumbPath);
|
|
29
|
+
* const searchResult: ProductSearchResult = await productSearchProvider.queryByTerm({ term: 'some search', facets: [], categoryFilter: [categoryFilter], ... });
|
|
30
|
+
*
|
|
31
|
+
* from here, you would maybe get facets back with subcategories, but those are relative to the current category filter you have applied, so you
|
|
32
|
+
* do not need any special handling for that.
|
|
33
|
+
*
|
|
34
|
+
* Usecase: You are rendering a category page and you want to run a product search to find everything in that category (or below).
|
|
35
|
+
*
|
|
36
|
+
* @param categoryPath
|
|
37
|
+
*/
|
|
38
|
+
public abstract createCategoryNavigationFilter(
|
|
39
|
+
payload: ProductSearchQueryCreateNavigationFilter,
|
|
40
|
+
): Promise<Result<FacetValueIdentifier>>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Parses a facet value from the search response.
|
|
44
|
+
* @param facetValueIdentifier The identifier for the facet value.
|
|
45
|
+
* @param label The label for the facet value.
|
|
46
|
+
* @param count The count for the facet value.
|
|
47
|
+
*/
|
|
48
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Product } from '../schemas/models/product.model.js';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseCapability } from './base.capability.js';
|
|
3
3
|
import type { ProductQueryById, ProductQueryBySKU, ProductQueryBySlug } from '../schemas/queries/product.query.js';
|
|
4
4
|
import type { Result } from '../schemas/result.js';
|
|
5
5
|
import type { NotFoundError } from '../schemas/index.js';
|
|
6
6
|
|
|
7
|
-
export abstract class
|
|
7
|
+
export abstract class ProductCapability<TProduct extends Product = Product> extends BaseCapability {
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -17,7 +17,7 @@ export abstract class ProductProvider extends BaseProvider {
|
|
|
17
17
|
* Marketing will TYPICALLY recommend products, and in some cases maybe HeroVariants of a product.
|
|
18
18
|
* In that case, you would need to resolve the product to its hero variant first, and then get the SKU from there.
|
|
19
19
|
*/
|
|
20
|
-
public abstract getById(payload: ProductQueryById): Promise<Result<
|
|
20
|
+
public abstract getById(payload: ProductQueryById): Promise<Result<TProduct>>;
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -27,7 +27,7 @@ export abstract class ProductProvider extends BaseProvider {
|
|
|
27
27
|
*
|
|
28
28
|
* Usecase: You are rendering a product detail page, and you need to fetch the product by its slug.
|
|
29
29
|
*/
|
|
30
|
-
public abstract getBySlug(payload: ProductQueryBySlug): Promise<Result<
|
|
30
|
+
public abstract getBySlug(payload: ProductQueryBySlug): Promise<Result<TProduct, NotFoundError>>;
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
@@ -39,9 +39,9 @@ export abstract class ProductProvider extends BaseProvider {
|
|
|
39
39
|
* and you need to fetch the product details for that SKU. You will get the a Product back, with the variant matching the SKU set as heroSku.
|
|
40
40
|
* It might also be used on a quick-order page, or product recommendations from external system.
|
|
41
41
|
*/
|
|
42
|
-
public abstract getBySKU(payload: ProductQueryBySKU): Promise<Result<
|
|
42
|
+
public abstract getBySKU(payload: ProductQueryBySKU): Promise<Result<TProduct>>;
|
|
43
43
|
|
|
44
|
-
protected createEmptyProduct(id: string):
|
|
44
|
+
protected createEmptyProduct(id: string): TProduct {
|
|
45
45
|
// FIXME: We can probably get rid of this once we switch to errors as values, as we shouldn't even
|
|
46
46
|
// be materializing an empty product...
|
|
47
47
|
const product = {
|
|
@@ -73,7 +73,7 @@ export abstract class ProductProvider extends BaseProvider {
|
|
|
73
73
|
variants: [],
|
|
74
74
|
} satisfies Product;
|
|
75
75
|
|
|
76
|
-
return product;
|
|
76
|
+
return product as unknown as TProduct;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/**
|
|
@@ -3,9 +3,9 @@ import type { Profile } from '../schemas/models/index.js';
|
|
|
3
3
|
import type { ProfileMutationAddShippingAddress, ProfileMutationMakeShippingAddressDefault, ProfileMutationRemoveShippingAddress, ProfileMutationSetBillingAddress, ProfileMutationUpdate, ProfileMutationUpdateShippingAddress } from '../schemas/mutations/index.js';
|
|
4
4
|
import type { ProfileQuerySelf as ProfileQueryById } from '../schemas/queries/index.js';
|
|
5
5
|
import type { Result } from '../schemas/result.js';
|
|
6
|
-
import {
|
|
6
|
+
import { BaseCapability } from './base.capability.js';
|
|
7
7
|
|
|
8
|
-
export abstract class
|
|
8
|
+
export abstract class ProfileCapability<TProfile extends Profile = Profile> extends BaseCapability {
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Returns the profile of the currently authenticated (registered) user.
|
|
@@ -13,7 +13,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
13
13
|
* Usecase: Fetch the profile of the logged-in user for display in header, or account settings.
|
|
14
14
|
* @param payload
|
|
15
15
|
*/
|
|
16
|
-
public abstract getById(payload: ProfileQueryById): Promise<Result<
|
|
16
|
+
public abstract getById(payload: ProfileQueryById): Promise<Result<TProfile, NotFoundError>>;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Updates the base profile information of the currently authenticated (registered) user.
|
|
@@ -26,7 +26,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
26
26
|
* Usecase: Update the user's name, email, or phone number.
|
|
27
27
|
* @param payload
|
|
28
28
|
*/
|
|
29
|
-
public abstract update(payload: ProfileMutationUpdate): Promise<Result<
|
|
29
|
+
public abstract update(payload: ProfileMutationUpdate): Promise<Result<TProfile, NotFoundError>>;
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Creates a new shipping address for the currently authenticated (registered) user.
|
|
@@ -36,7 +36,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
36
36
|
* done at checkout should be considered local to that session, unless the addressbook is empty.
|
|
37
37
|
* @param payload
|
|
38
38
|
*/
|
|
39
|
-
public abstract addShippingAddress(payload: ProfileMutationAddShippingAddress): Promise<Result<
|
|
39
|
+
public abstract addShippingAddress(payload: ProfileMutationAddShippingAddress): Promise<Result<TProfile, NotFoundError>>;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* Updates an existing shipping address for the currently authenticated (registered) user.
|
|
@@ -45,7 +45,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
45
45
|
* done at checkout should be considered local to that session/order, unless the addressbook is empty.
|
|
46
46
|
* @param payload
|
|
47
47
|
*/
|
|
48
|
-
public abstract updateShippingAddress(payload: ProfileMutationUpdateShippingAddress): Promise<Result<
|
|
48
|
+
public abstract updateShippingAddress(payload: ProfileMutationUpdateShippingAddress): Promise<Result<TProfile, NotFoundError>>;
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
51
|
* Removes an existing shipping address for the currently authenticated (registered) user.
|
|
@@ -55,7 +55,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
55
55
|
* Usecase: User deletes a shipping address from their profile.
|
|
56
56
|
* @param payload
|
|
57
57
|
*/
|
|
58
|
-
public abstract removeShippingAddress(payload: ProfileMutationRemoveShippingAddress): Promise<Result<
|
|
58
|
+
public abstract removeShippingAddress(payload: ProfileMutationRemoveShippingAddress): Promise<Result<TProfile, NotFoundError>>;
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
61
|
* Configures an existing shipping address as the default shipping address for the currently authenticated (registered) user.
|
|
@@ -63,7 +63,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
63
63
|
* Usecase: User selects a default shipping address in their profile.
|
|
64
64
|
* @param payload
|
|
65
65
|
*/
|
|
66
|
-
public abstract makeShippingAddressDefault(payload: ProfileMutationMakeShippingAddressDefault): Promise<Result<
|
|
66
|
+
public abstract makeShippingAddressDefault(payload: ProfileMutationMakeShippingAddressDefault): Promise<Result<TProfile, NotFoundError>>;
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* Sets the current/active billing address for the currently authenticated (registered) user.
|
|
@@ -74,7 +74,7 @@ export abstract class ProfileProvider extends BaseProvider {
|
|
|
74
74
|
* entity being billed, and as such it makes sense to have a single authoritative billing address.
|
|
75
75
|
* @param payload
|
|
76
76
|
*/
|
|
77
|
-
public abstract setBillingAddress(payload: ProfileMutationSetBillingAddress): Promise<Result<
|
|
77
|
+
public abstract setBillingAddress(payload: ProfileMutationSetBillingAddress): Promise<Result<TProfile, NotFoundError>>;
|
|
78
78
|
|
|
79
79
|
protected override getResourceName(): string {
|
|
80
80
|
return 'profile';
|
package/{core/src/providers/store.provider.ts → packages/core/src/capabilities/store.capability.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Store } from '../schemas/models/store.model.js';
|
|
2
2
|
import type { StoreQueryByProximity } from '../schemas/queries/index.js';
|
|
3
3
|
import type { Result } from '../schemas/result.js';
|
|
4
|
-
import {
|
|
4
|
+
import { BaseCapability } from './base.capability.js';
|
|
5
5
|
|
|
6
|
-
export abstract class
|
|
7
|
-
public abstract queryByProximity(payload: StoreQueryByProximity): Promise<Result<Array<
|
|
6
|
+
export abstract class StoreCapability<TStore extends Store = Store> extends BaseCapability {
|
|
7
|
+
public abstract queryByProximity(payload: StoreQueryByProximity): Promise<Result<Array<TStore>>>;
|
|
8
8
|
|
|
9
9
|
protected override getResourceName(): string {
|
|
10
10
|
return 'store';
|