@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,131 @@
|
|
|
1
|
+
import type { Cache } from '../cache/cache.interface.js';
|
|
2
|
+
import { NoOpCache } from '../cache/noop-cache.js';
|
|
3
|
+
import type { Client } from './client.js';
|
|
4
|
+
import { MulticastAnalyticsCapability, type AnalyticsCapability } from '../capabilities/analytics.capability.js';
|
|
5
|
+
import {
|
|
6
|
+
RequestContextSchema,
|
|
7
|
+
type RequestContext,
|
|
8
|
+
} from '../schemas/session.schema.js';
|
|
9
|
+
import { MulticastProductRecommendationsCapability, type ProductRecommendationsCapability } from '../capabilities/product-recommendations.capability.js';
|
|
10
|
+
|
|
11
|
+
export interface ClientBuilderFactoryArgs {
|
|
12
|
+
cache: Cache;
|
|
13
|
+
context: RequestContext;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type CapabilityFactory<T> =
|
|
17
|
+
| ((cache: Cache, context: RequestContext) => T)
|
|
18
|
+
| ((args: ClientBuilderFactoryArgs) => T);
|
|
19
|
+
|
|
20
|
+
type MergeCapabilities<Acc, New> = Omit<Acc, keyof New> & New;
|
|
21
|
+
export type CapabilityCollisionStrategy = 'last-wins' | 'first-wins' | 'throw';
|
|
22
|
+
|
|
23
|
+
export class ClientBuilder<TClient = Client> {
|
|
24
|
+
private factories: Array<CapabilityFactory<Partial<Client>>> = [];
|
|
25
|
+
private cache: Cache | undefined;
|
|
26
|
+
private context: RequestContext;
|
|
27
|
+
private collisionStrategy: CapabilityCollisionStrategy = 'last-wins';
|
|
28
|
+
|
|
29
|
+
constructor(context: RequestContext) {
|
|
30
|
+
this.context = context;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
withCapability<TNew extends Partial<Client>>(
|
|
34
|
+
factory: CapabilityFactory<TNew>
|
|
35
|
+
): ClientBuilder<MergeCapabilities<TClient, TNew>> {
|
|
36
|
+
const newBuilder = new ClientBuilder<MergeCapabilities<TClient, TNew>>(this.context);
|
|
37
|
+
newBuilder.factories = [...this.factories, factory];
|
|
38
|
+
newBuilder.cache = this.cache;
|
|
39
|
+
newBuilder.context = this.context;
|
|
40
|
+
newBuilder.collisionStrategy = this.collisionStrategy;
|
|
41
|
+
return newBuilder;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
withCache(cache: Cache): ClientBuilder<TClient> {
|
|
45
|
+
const newBuilder = new ClientBuilder<TClient>(this.context);
|
|
46
|
+
newBuilder.factories = [...this.factories];
|
|
47
|
+
newBuilder.cache = cache;
|
|
48
|
+
newBuilder.context = this.context;
|
|
49
|
+
newBuilder.collisionStrategy = this.collisionStrategy;
|
|
50
|
+
return newBuilder;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
withCollisionStrategy(strategy: CapabilityCollisionStrategy): ClientBuilder<TClient> {
|
|
54
|
+
const newBuilder = new ClientBuilder<TClient>(this.context);
|
|
55
|
+
newBuilder.factories = [...this.factories];
|
|
56
|
+
newBuilder.cache = this.cache;
|
|
57
|
+
newBuilder.context = this.context;
|
|
58
|
+
newBuilder.collisionStrategy = strategy;
|
|
59
|
+
return newBuilder;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
build(): TClient & { cache: Cache } {
|
|
63
|
+
let client = {} as TClient;
|
|
64
|
+
|
|
65
|
+
// Default to no-op cache if none is provided
|
|
66
|
+
const sharedCache = this.cache || new NoOpCache();
|
|
67
|
+
const validatedContext = RequestContextSchema.safeParse(this.context);
|
|
68
|
+
|
|
69
|
+
// Avoid returning the parsed result for context, to preserve object equality at the top level
|
|
70
|
+
if (!validatedContext.success) {
|
|
71
|
+
throw new Error('Invalid context: ' + validatedContext.error);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const mergedAnalytics: AnalyticsCapability[] = [];
|
|
75
|
+
const mergedProductRecommendations: ProductRecommendationsCapability[] = [];
|
|
76
|
+
|
|
77
|
+
for (const factory of this.factories) {
|
|
78
|
+
const capability = this.resolveFactory(factory, sharedCache, this.context);
|
|
79
|
+
client = this.mergeCapabilities(client, capability as Partial<TClient>);
|
|
80
|
+
|
|
81
|
+
if (capability.analytics) {
|
|
82
|
+
mergedAnalytics.push(capability.analytics);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (capability.productRecommendations) {
|
|
86
|
+
mergedProductRecommendations.push(capability.productRecommendations);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Add cache to complete the client
|
|
91
|
+
const completeClient = {
|
|
92
|
+
...client,
|
|
93
|
+
analytics: new MulticastAnalyticsCapability(sharedCache, this.context, mergedAnalytics),
|
|
94
|
+
productRecommendations: new MulticastProductRecommendationsCapability(sharedCache, this.context, mergedProductRecommendations),
|
|
95
|
+
cache: sharedCache,
|
|
96
|
+
} as TClient & { cache: Cache };
|
|
97
|
+
|
|
98
|
+
return completeClient;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private resolveFactory<TNew extends Partial<Client>>(
|
|
102
|
+
factory: CapabilityFactory<TNew>,
|
|
103
|
+
cache: Cache,
|
|
104
|
+
context: RequestContext,
|
|
105
|
+
): TNew {
|
|
106
|
+
if (factory.length <= 1) {
|
|
107
|
+
return (factory as (args: ClientBuilderFactoryArgs) => TNew)({ cache, context });
|
|
108
|
+
}
|
|
109
|
+
return (factory as (cache: Cache, context: RequestContext) => TNew)(cache, context);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private mergeCapabilities(
|
|
113
|
+
target: TClient,
|
|
114
|
+
source: Partial<TClient>,
|
|
115
|
+
): TClient {
|
|
116
|
+
const result = { ...target } as Record<string, unknown>;
|
|
117
|
+
for (const key of Object.keys(source as object)) {
|
|
118
|
+
const hasExisting = Object.prototype.hasOwnProperty.call(result, key);
|
|
119
|
+
if (hasExisting) {
|
|
120
|
+
if (this.collisionStrategy === 'first-wins') {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (this.collisionStrategy === 'throw') {
|
|
124
|
+
throw new Error(`Capability collision detected for "${key}"`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
result[key] = (source as Record<string, unknown>)[key];
|
|
128
|
+
}
|
|
129
|
+
return result as TClient;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ProductCapability } from "../capabilities/product.capability.js";
|
|
2
|
+
import type { ProductSearchCapability } from "../capabilities/product-search.capability.js";
|
|
3
|
+
import type { IdentityCapability } from '../capabilities/identity.capability.js';
|
|
4
|
+
import type { CartCapability } from "../capabilities/cart.capability.js";
|
|
5
|
+
import type { PriceCapability } from "../capabilities/price.capability.js";
|
|
6
|
+
import type { InventoryCapability } from "../capabilities/inventory.capability.js";
|
|
7
|
+
import type { Cache } from "../cache/cache.interface.js";
|
|
8
|
+
import type { CategoryCapability } from "../capabilities/category.capability.js";
|
|
9
|
+
import type { AnalyticsCapability, CheckoutCapability, OrderCapability, ProductListCapability, ProfileCapability, StoreCapability } from "../capabilities/index.js";
|
|
10
|
+
import type { OrderSearchCapability } from "../capabilities/order-search.capability.js";
|
|
11
|
+
import type { ProductRecommendationsCapability } from "../capabilities/product-recommendations.capability.js";
|
|
12
|
+
import type { ProductAssociationsCapability } from "../capabilities/product-associations.capability.js";
|
|
13
|
+
import type { ProductReviewsCapability } from "../capabilities/product-reviews.capability.js";
|
|
14
|
+
|
|
15
|
+
export interface Client {
|
|
16
|
+
product: ProductCapability,
|
|
17
|
+
productSearch: ProductSearchCapability,
|
|
18
|
+
productRecommendations: ProductRecommendationsCapability,
|
|
19
|
+
productAssociations: ProductAssociationsCapability,
|
|
20
|
+
productReviews: ProductReviewsCapability,
|
|
21
|
+
productList: ProductListCapability,
|
|
22
|
+
identity: IdentityCapability,
|
|
23
|
+
cache: Cache,
|
|
24
|
+
cart: CartCapability,
|
|
25
|
+
checkout: CheckoutCapability,
|
|
26
|
+
analytics: AnalyticsCapability,
|
|
27
|
+
price: PriceCapability,
|
|
28
|
+
inventory: InventoryCapability,
|
|
29
|
+
category: CategoryCapability,
|
|
30
|
+
profile: ProfileCapability,
|
|
31
|
+
store: StoreCapability,
|
|
32
|
+
order: OrderCapability,
|
|
33
|
+
orderSearch: OrderSearchCapability,
|
|
34
|
+
}
|
|
35
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Tracer } from '@opentelemetry/api';
|
|
2
2
|
import { SpanStatusCode, trace } from '@opentelemetry/api';
|
|
3
3
|
import * as z from 'zod';
|
|
4
|
-
import type {
|
|
4
|
+
import type { BaseCapability } from '../capabilities/index.js';
|
|
5
5
|
import { getReactionaryMeter } from '../metrics/metrics.js';
|
|
6
6
|
import { error, success, type Result } from '../schemas/result.js';
|
|
7
7
|
import type {
|
|
@@ -18,7 +18,7 @@ export function getTracer(): Tracer {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* The options associated with annotating a
|
|
21
|
+
* The options associated with annotating a capability function and marking
|
|
22
22
|
* it as a reactionary entrypoint to be called
|
|
23
23
|
*/
|
|
24
24
|
export class ReactionaryDecoratorOptions {
|
|
@@ -59,13 +59,13 @@ export class ReactionaryDecoratorOptions {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
* Decorator for
|
|
62
|
+
* Decorator for capability functions to provide functionality such as caching, tracing and type-checked
|
|
63
63
|
* assertion through Zod. It should only be used with publically accessible queries or mutations on
|
|
64
|
-
*
|
|
64
|
+
* capabilities.
|
|
65
65
|
*/
|
|
66
66
|
export function Reactionary(options: Partial<ReactionaryDecoratorOptions>) {
|
|
67
67
|
return function (
|
|
68
|
-
target:
|
|
68
|
+
target: BaseCapability,
|
|
69
69
|
propertyKey: string | symbol,
|
|
70
70
|
descriptor: PropertyDescriptor
|
|
71
71
|
): PropertyDescriptor {
|
|
@@ -82,11 +82,11 @@ export function Reactionary(options: Partial<ReactionaryDecoratorOptions>) {
|
|
|
82
82
|
|
|
83
83
|
if (!original) {
|
|
84
84
|
throw new Error(
|
|
85
|
-
'@Reactionary decorator may only be applied to methods on classes extending
|
|
85
|
+
'@Reactionary decorator may only be applied to methods on classes extending BaseCapability.'
|
|
86
86
|
);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
descriptor.value = async function (this:
|
|
89
|
+
descriptor.value = async function (this: BaseCapability, ...args: any[]) {
|
|
90
90
|
return traceSpan(scope, async () => {
|
|
91
91
|
meter.requestInProgress.add(1, attributes);
|
|
92
92
|
try {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { CartSchema } from '../schemas/models/cart.model.js';
|
|
3
|
+
import type { CartIdentifierSchema } from '../schemas/models/identifiers.model.js';
|
|
4
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
5
|
+
|
|
6
|
+
export type AnyCartSchema = z.ZodType<z.output<typeof CartSchema>>;
|
|
7
|
+
export type AnyCartIdentifierSchema = z.ZodType<
|
|
8
|
+
z.output<typeof CartIdentifierSchema>
|
|
9
|
+
>;
|
|
10
|
+
|
|
11
|
+
export interface CartFactory<
|
|
12
|
+
TCartSchema extends AnyCartSchema = AnyCartSchema,
|
|
13
|
+
TCartIdentifierSchema extends AnyCartIdentifierSchema = AnyCartIdentifierSchema,
|
|
14
|
+
> {
|
|
15
|
+
cartSchema: TCartSchema;
|
|
16
|
+
cartIdentifierSchema: TCartIdentifierSchema;
|
|
17
|
+
parseCart(context: RequestContext, data: unknown): z.output<TCartSchema>;
|
|
18
|
+
parseCartIdentifier(
|
|
19
|
+
context: RequestContext,
|
|
20
|
+
data: unknown,
|
|
21
|
+
): z.output<TCartIdentifierSchema>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type CartFactoryCartOutput<TFactory extends CartFactory> = ReturnType<
|
|
25
|
+
TFactory['parseCart']
|
|
26
|
+
>;
|
|
27
|
+
export type CartFactoryIdentifierOutput<TFactory extends CartFactory> = ReturnType<
|
|
28
|
+
TFactory['parseCartIdentifier']
|
|
29
|
+
>;
|
|
30
|
+
|
|
31
|
+
export type CartFactoryWithOutput<TFactory extends CartFactory> = Omit<
|
|
32
|
+
TFactory,
|
|
33
|
+
'parseCart' | 'parseCartIdentifier'
|
|
34
|
+
> & {
|
|
35
|
+
parseCart(context: RequestContext, data: unknown): CartFactoryCartOutput<TFactory>;
|
|
36
|
+
parseCartIdentifier(
|
|
37
|
+
context: RequestContext,
|
|
38
|
+
data: unknown,
|
|
39
|
+
): CartFactoryIdentifierOutput<TFactory>;
|
|
40
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { CategoryPaginatedResultSchema, CategorySchema } from '../schemas/models/category.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
|
|
5
|
+
export type AnyCategorySchema = z.ZodType<z.output<typeof CategorySchema>>;
|
|
6
|
+
export type AnyCategoryPaginatedResultSchema = z.ZodType<
|
|
7
|
+
z.output<typeof CategoryPaginatedResultSchema>
|
|
8
|
+
>;
|
|
9
|
+
|
|
10
|
+
export interface CategoryFactory<
|
|
11
|
+
TCategorySchema extends AnyCategorySchema = AnyCategorySchema,
|
|
12
|
+
TCategoryPaginatedSchema extends AnyCategoryPaginatedResultSchema = AnyCategoryPaginatedResultSchema,
|
|
13
|
+
> {
|
|
14
|
+
categorySchema: TCategorySchema;
|
|
15
|
+
categoryPaginatedResultSchema: TCategoryPaginatedSchema;
|
|
16
|
+
parseCategory(context: RequestContext, data: unknown): z.output<TCategorySchema>;
|
|
17
|
+
parseCategoryPaginatedResult(
|
|
18
|
+
context: RequestContext,
|
|
19
|
+
data: unknown,
|
|
20
|
+
): z.output<TCategoryPaginatedSchema>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type CategoryFactoryCategoryOutput<TFactory extends CategoryFactory> =
|
|
24
|
+
ReturnType<TFactory['parseCategory']>;
|
|
25
|
+
export type CategoryFactoryPaginatedOutput<TFactory extends CategoryFactory> =
|
|
26
|
+
ReturnType<TFactory['parseCategoryPaginatedResult']>;
|
|
27
|
+
|
|
28
|
+
export type CategoryFactoryWithOutput<TFactory extends CategoryFactory> = Omit<
|
|
29
|
+
TFactory,
|
|
30
|
+
'parseCategory' | 'parseCategoryPaginatedResult'
|
|
31
|
+
> & {
|
|
32
|
+
parseCategory(
|
|
33
|
+
context: RequestContext,
|
|
34
|
+
data: unknown,
|
|
35
|
+
): CategoryFactoryCategoryOutput<TFactory>;
|
|
36
|
+
parseCategoryPaginatedResult(
|
|
37
|
+
context: RequestContext,
|
|
38
|
+
data: unknown,
|
|
39
|
+
): CategoryFactoryPaginatedOutput<TFactory>;
|
|
40
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { CheckoutSchema } from '../schemas/models/checkout.model.js';
|
|
3
|
+
import type { PaymentMethodSchema } from '../schemas/models/payment.model.js';
|
|
4
|
+
import type { ShippingMethodSchema } from '../schemas/models/shipping-method.model.js';
|
|
5
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
6
|
+
|
|
7
|
+
export type AnyCheckoutSchema = z.ZodType<z.output<typeof CheckoutSchema>>;
|
|
8
|
+
export type AnyShippingMethodSchema = z.ZodType<
|
|
9
|
+
z.output<typeof ShippingMethodSchema>
|
|
10
|
+
>;
|
|
11
|
+
export type AnyPaymentMethodSchema = z.ZodType<
|
|
12
|
+
z.output<typeof PaymentMethodSchema>
|
|
13
|
+
>;
|
|
14
|
+
|
|
15
|
+
export interface CheckoutFactory<
|
|
16
|
+
TCheckoutSchema extends AnyCheckoutSchema = AnyCheckoutSchema,
|
|
17
|
+
TShippingMethodSchema extends AnyShippingMethodSchema = AnyShippingMethodSchema,
|
|
18
|
+
TPaymentMethodSchema extends AnyPaymentMethodSchema = AnyPaymentMethodSchema,
|
|
19
|
+
> {
|
|
20
|
+
checkoutSchema: TCheckoutSchema;
|
|
21
|
+
shippingMethodSchema: TShippingMethodSchema;
|
|
22
|
+
paymentMethodSchema: TPaymentMethodSchema;
|
|
23
|
+
parseCheckout(context: RequestContext, data: unknown): z.output<TCheckoutSchema>;
|
|
24
|
+
parseShippingMethod(
|
|
25
|
+
context: RequestContext,
|
|
26
|
+
data: unknown,
|
|
27
|
+
): z.output<TShippingMethodSchema>;
|
|
28
|
+
parsePaymentMethod(
|
|
29
|
+
context: RequestContext,
|
|
30
|
+
data: unknown,
|
|
31
|
+
): z.output<TPaymentMethodSchema>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type CheckoutFactoryCheckoutOutput<TFactory extends CheckoutFactory> =
|
|
35
|
+
ReturnType<TFactory['parseCheckout']>;
|
|
36
|
+
export type CheckoutFactoryShippingMethodOutput<
|
|
37
|
+
TFactory extends CheckoutFactory,
|
|
38
|
+
> = ReturnType<TFactory['parseShippingMethod']>;
|
|
39
|
+
export type CheckoutFactoryPaymentMethodOutput<
|
|
40
|
+
TFactory extends CheckoutFactory,
|
|
41
|
+
> = ReturnType<TFactory['parsePaymentMethod']>;
|
|
42
|
+
|
|
43
|
+
export type CheckoutFactoryWithOutput<TFactory extends CheckoutFactory> = Omit<
|
|
44
|
+
TFactory,
|
|
45
|
+
'parseCheckout' | 'parseShippingMethod' | 'parsePaymentMethod'
|
|
46
|
+
> & {
|
|
47
|
+
parseCheckout(
|
|
48
|
+
context: RequestContext,
|
|
49
|
+
data: unknown,
|
|
50
|
+
): CheckoutFactoryCheckoutOutput<TFactory>;
|
|
51
|
+
parseShippingMethod(
|
|
52
|
+
context: RequestContext,
|
|
53
|
+
data: unknown,
|
|
54
|
+
): CheckoutFactoryShippingMethodOutput<TFactory>;
|
|
55
|
+
parsePaymentMethod(
|
|
56
|
+
context: RequestContext,
|
|
57
|
+
data: unknown,
|
|
58
|
+
): CheckoutFactoryPaymentMethodOutput<TFactory>;
|
|
59
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { IdentitySchema } from '../schemas/models/identity.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
|
|
5
|
+
export type AnyIdentitySchema = z.ZodType<z.output<typeof IdentitySchema>>;
|
|
6
|
+
|
|
7
|
+
export interface IdentityFactory<
|
|
8
|
+
TIdentitySchema extends AnyIdentitySchema = AnyIdentitySchema,
|
|
9
|
+
> {
|
|
10
|
+
identitySchema: TIdentitySchema;
|
|
11
|
+
parseIdentity(context: RequestContext, data: unknown): z.output<TIdentitySchema>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type IdentityFactoryOutput<TFactory extends IdentityFactory> = ReturnType<
|
|
15
|
+
TFactory['parseIdentity']
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
export type IdentityFactoryWithOutput<TFactory extends IdentityFactory> = Omit<
|
|
19
|
+
TFactory,
|
|
20
|
+
'parseIdentity'
|
|
21
|
+
> & {
|
|
22
|
+
parseIdentity(
|
|
23
|
+
context: RequestContext,
|
|
24
|
+
data: unknown,
|
|
25
|
+
): IdentityFactoryOutput<TFactory>;
|
|
26
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './cart.factory.js';
|
|
2
|
+
export * from './category.factory.js';
|
|
3
|
+
export * from './checkout.factory.js';
|
|
4
|
+
export * from './identity.factory.js';
|
|
5
|
+
export * from './inventory.factory.js';
|
|
6
|
+
export * from './order.factory.js';
|
|
7
|
+
export * from './order-search.factory.js';
|
|
8
|
+
export * from './price.factory.js';
|
|
9
|
+
export * from './product.factory.js';
|
|
10
|
+
export * from './product-associations.factory.js';
|
|
11
|
+
export * from './product-list.factory.js';
|
|
12
|
+
export * from './product-reviews.factory.js';
|
|
13
|
+
export * from './product-search.factory.js';
|
|
14
|
+
export * from './profile.factory.js';
|
|
15
|
+
export * from './store.factory.js';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { InventorySchema } from '../schemas/models/inventory.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
|
|
5
|
+
export type AnyInventorySchema = z.ZodType<z.output<typeof InventorySchema>>;
|
|
6
|
+
|
|
7
|
+
export interface InventoryFactory<
|
|
8
|
+
TInventorySchema extends AnyInventorySchema = AnyInventorySchema,
|
|
9
|
+
> {
|
|
10
|
+
inventorySchema: TInventorySchema;
|
|
11
|
+
parseInventory(context: RequestContext, data: unknown): z.output<TInventorySchema>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type InventoryFactoryOutput<TFactory extends InventoryFactory> = ReturnType<
|
|
15
|
+
TFactory['parseInventory']
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
export type InventoryFactoryWithOutput<TFactory extends InventoryFactory> = Omit<
|
|
19
|
+
TFactory,
|
|
20
|
+
'parseInventory'
|
|
21
|
+
> & {
|
|
22
|
+
parseInventory(
|
|
23
|
+
context: RequestContext,
|
|
24
|
+
data: unknown,
|
|
25
|
+
): InventoryFactoryOutput<TFactory>;
|
|
26
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { OrderSearchResultSchema } from '../schemas/models/order-search.model.js';
|
|
3
|
+
import type { OrderSearchQueryByTerm } from '../schemas/queries/order-search.query.js';
|
|
4
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
5
|
+
|
|
6
|
+
export type AnyOrderSearchResultSchema = z.ZodType<
|
|
7
|
+
z.output<typeof OrderSearchResultSchema>
|
|
8
|
+
>;
|
|
9
|
+
|
|
10
|
+
export interface OrderSearchFactory<
|
|
11
|
+
TOrderSearchResultSchema extends AnyOrderSearchResultSchema = AnyOrderSearchResultSchema,
|
|
12
|
+
> {
|
|
13
|
+
orderSearchResultSchema: TOrderSearchResultSchema;
|
|
14
|
+
parseOrderSearchResult(
|
|
15
|
+
context: RequestContext,
|
|
16
|
+
data: unknown,
|
|
17
|
+
query: OrderSearchQueryByTerm,
|
|
18
|
+
): z.output<TOrderSearchResultSchema>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type OrderSearchFactoryOutput<TFactory extends OrderSearchFactory> =
|
|
22
|
+
ReturnType<TFactory['parseOrderSearchResult']>;
|
|
23
|
+
|
|
24
|
+
export type OrderSearchFactoryWithOutput<TFactory extends OrderSearchFactory> = Omit<
|
|
25
|
+
TFactory,
|
|
26
|
+
'parseOrderSearchResult'
|
|
27
|
+
> & {
|
|
28
|
+
parseOrderSearchResult(
|
|
29
|
+
context: RequestContext,
|
|
30
|
+
data: unknown,
|
|
31
|
+
query: OrderSearchQueryByTerm,
|
|
32
|
+
): OrderSearchFactoryOutput<TFactory>;
|
|
33
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { OrderSchema } from '../schemas/models/order.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
|
|
5
|
+
export type AnyOrderSchema = z.ZodType<z.output<typeof OrderSchema>>;
|
|
6
|
+
|
|
7
|
+
export interface OrderFactory<TOrderSchema extends AnyOrderSchema = AnyOrderSchema> {
|
|
8
|
+
orderSchema: TOrderSchema;
|
|
9
|
+
parseOrder(context: RequestContext, data: unknown): z.output<TOrderSchema>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type OrderFactoryOutput<TFactory extends OrderFactory> = ReturnType<
|
|
13
|
+
TFactory['parseOrder']
|
|
14
|
+
>;
|
|
15
|
+
|
|
16
|
+
export type OrderFactoryWithOutput<TFactory extends OrderFactory> = Omit<
|
|
17
|
+
TFactory,
|
|
18
|
+
'parseOrder'
|
|
19
|
+
> & {
|
|
20
|
+
parseOrder(context: RequestContext, data: unknown): OrderFactoryOutput<TFactory>;
|
|
21
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { PriceSchema } from '../schemas/models/price.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
|
|
5
|
+
export type AnyPriceSchema = z.ZodType<z.output<typeof PriceSchema>>;
|
|
6
|
+
|
|
7
|
+
export interface PriceFactory<TPriceSchema extends AnyPriceSchema = AnyPriceSchema> {
|
|
8
|
+
priceSchema: TPriceSchema;
|
|
9
|
+
parsePrice(
|
|
10
|
+
context: RequestContext,
|
|
11
|
+
data: unknown,
|
|
12
|
+
options?: { includeDiscounts: boolean },
|
|
13
|
+
): z.output<TPriceSchema>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type PriceFactoryOutput<TFactory extends PriceFactory> = ReturnType<
|
|
17
|
+
TFactory['parsePrice']
|
|
18
|
+
>;
|
|
19
|
+
|
|
20
|
+
export type PriceFactoryWithOutput<TFactory extends PriceFactory> = Omit<
|
|
21
|
+
TFactory,
|
|
22
|
+
'parsePrice'
|
|
23
|
+
> & {
|
|
24
|
+
parsePrice(
|
|
25
|
+
context: RequestContext,
|
|
26
|
+
data: unknown,
|
|
27
|
+
options?: { includeDiscounts: boolean },
|
|
28
|
+
): PriceFactoryOutput<TFactory>;
|
|
29
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { ProductAssociationSchema } from '../schemas/models/product-associations.model.js';
|
|
3
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
4
|
+
|
|
5
|
+
export type AnyProductAssociationSchema = z.ZodType<
|
|
6
|
+
z.output<typeof ProductAssociationSchema>
|
|
7
|
+
>;
|
|
8
|
+
|
|
9
|
+
export interface ProductAssociationsFactory<
|
|
10
|
+
TProductAssociationSchema extends AnyProductAssociationSchema = AnyProductAssociationSchema,
|
|
11
|
+
> {
|
|
12
|
+
productAssociationSchema: TProductAssociationSchema;
|
|
13
|
+
parseAssociation(
|
|
14
|
+
context: RequestContext,
|
|
15
|
+
data: unknown,
|
|
16
|
+
): z.output<TProductAssociationSchema>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type ProductAssociationsFactoryOutput<
|
|
20
|
+
TFactory extends ProductAssociationsFactory,
|
|
21
|
+
> = ReturnType<TFactory['parseAssociation']>;
|
|
22
|
+
|
|
23
|
+
export type ProductAssociationsFactoryWithOutput<
|
|
24
|
+
TFactory extends ProductAssociationsFactory,
|
|
25
|
+
> = Omit<TFactory, 'parseAssociation'> & {
|
|
26
|
+
parseAssociation(
|
|
27
|
+
context: RequestContext,
|
|
28
|
+
data: unknown,
|
|
29
|
+
): ProductAssociationsFactoryOutput<TFactory>;
|
|
30
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type {
|
|
3
|
+
ProductListItemPaginatedResultsSchema,
|
|
4
|
+
ProductListItemSchema,
|
|
5
|
+
ProductListPaginatedResultsSchema,
|
|
6
|
+
ProductListSchema,
|
|
7
|
+
} from '../schemas/models/product-list.model.js';
|
|
8
|
+
import type { RequestContext } from '../schemas/session.schema.js';
|
|
9
|
+
|
|
10
|
+
export type AnyProductListSchema = z.ZodType<z.output<typeof ProductListSchema>>;
|
|
11
|
+
export type AnyProductListItemSchema = z.ZodType<
|
|
12
|
+
z.output<typeof ProductListItemSchema>
|
|
13
|
+
>;
|
|
14
|
+
export type AnyProductListPaginatedSchema = z.ZodType<
|
|
15
|
+
z.output<typeof ProductListPaginatedResultsSchema>
|
|
16
|
+
>;
|
|
17
|
+
export type AnyProductListItemPaginatedSchema = z.ZodType<
|
|
18
|
+
z.output<typeof ProductListItemPaginatedResultsSchema>
|
|
19
|
+
>;
|
|
20
|
+
|
|
21
|
+
export interface ProductListFactory<
|
|
22
|
+
TProductListSchema extends AnyProductListSchema = AnyProductListSchema,
|
|
23
|
+
TProductListItemSchema extends AnyProductListItemSchema = AnyProductListItemSchema,
|
|
24
|
+
TProductListPaginatedSchema extends AnyProductListPaginatedSchema = AnyProductListPaginatedSchema,
|
|
25
|
+
TProductListItemPaginatedSchema extends AnyProductListItemPaginatedSchema = AnyProductListItemPaginatedSchema,
|
|
26
|
+
> {
|
|
27
|
+
productListSchema: TProductListSchema;
|
|
28
|
+
productListItemSchema: TProductListItemSchema;
|
|
29
|
+
productListPaginatedSchema: TProductListPaginatedSchema;
|
|
30
|
+
productListItemPaginatedSchema: TProductListItemPaginatedSchema;
|
|
31
|
+
parseProductList(
|
|
32
|
+
context: RequestContext,
|
|
33
|
+
data: unknown,
|
|
34
|
+
): z.output<TProductListSchema>;
|
|
35
|
+
parseProductListItem(
|
|
36
|
+
context: RequestContext,
|
|
37
|
+
data: unknown,
|
|
38
|
+
): z.output<TProductListItemSchema>;
|
|
39
|
+
parseProductListPaginatedResult(
|
|
40
|
+
context: RequestContext,
|
|
41
|
+
data: unknown,
|
|
42
|
+
): z.output<TProductListPaginatedSchema>;
|
|
43
|
+
parseProductListItemPaginatedResult(
|
|
44
|
+
context: RequestContext,
|
|
45
|
+
data: unknown,
|
|
46
|
+
): z.output<TProductListItemPaginatedSchema>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type ProductListFactoryListOutput<TFactory extends ProductListFactory> =
|
|
50
|
+
ReturnType<TFactory['parseProductList']>;
|
|
51
|
+
export type ProductListFactoryItemOutput<TFactory extends ProductListFactory> =
|
|
52
|
+
ReturnType<TFactory['parseProductListItem']>;
|
|
53
|
+
export type ProductListFactoryListPaginatedOutput<TFactory extends ProductListFactory> =
|
|
54
|
+
ReturnType<TFactory['parseProductListPaginatedResult']>;
|
|
55
|
+
export type ProductListFactoryItemPaginatedOutput<TFactory extends ProductListFactory> =
|
|
56
|
+
ReturnType<TFactory['parseProductListItemPaginatedResult']>;
|
|
57
|
+
|
|
58
|
+
export type ProductListFactoryWithOutput<TFactory extends ProductListFactory> =
|
|
59
|
+
Omit<
|
|
60
|
+
TFactory,
|
|
61
|
+
| 'parseProductList'
|
|
62
|
+
| 'parseProductListItem'
|
|
63
|
+
| 'parseProductListPaginatedResult'
|
|
64
|
+
| 'parseProductListItemPaginatedResult'
|
|
65
|
+
> & {
|
|
66
|
+
parseProductList(
|
|
67
|
+
context: RequestContext,
|
|
68
|
+
data: unknown,
|
|
69
|
+
): ProductListFactoryListOutput<TFactory>;
|
|
70
|
+
parseProductListItem(
|
|
71
|
+
context: RequestContext,
|
|
72
|
+
data: unknown,
|
|
73
|
+
): ProductListFactoryItemOutput<TFactory>;
|
|
74
|
+
parseProductListPaginatedResult(
|
|
75
|
+
context: RequestContext,
|
|
76
|
+
data: unknown,
|
|
77
|
+
): ProductListFactoryListPaginatedOutput<TFactory>;
|
|
78
|
+
parseProductListItemPaginatedResult(
|
|
79
|
+
context: RequestContext,
|
|
80
|
+
data: unknown,
|
|
81
|
+
): ProductListFactoryItemPaginatedOutput<TFactory>;
|
|
82
|
+
};
|