@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.
Files changed (453) hide show
  1. package/README.md +33 -11
  2. package/examples/node/package.json +7 -7
  3. package/examples/node/src/basic/basic-node-provider-model-extension.spec.ts +11 -5
  4. package/examples/node/src/basic/basic-node-provider-query-extension.spec.ts +9 -3
  5. package/examples/node/src/basic/basic-node-setup.spec.ts +6 -2
  6. package/examples/node/src/basic/client-creation.spec.ts +6 -6
  7. package/examples/node/src/utils.ts +48 -48
  8. package/examples/node/tsconfig.lib.json +2 -1
  9. package/package.json +1 -1
  10. package/packages/algolia/README.md +11 -0
  11. package/{providers/google-analytics → packages/algolia}/eslint.config.mjs +0 -2
  12. package/{providers → packages}/algolia/package.json +7 -5
  13. package/{providers/posthog → packages/algolia}/project.json +6 -6
  14. package/{providers/algolia/src/providers/analytics.provider.ts → packages/algolia/src/capabilities/analytics.capability.ts} +6 -6
  15. package/packages/algolia/src/capabilities/index.ts +3 -0
  16. package/{providers/algolia/src/providers/product-recommendations.provider.ts → packages/algolia/src/capabilities/product-recommendations.capability.ts} +3 -3
  17. package/packages/algolia/src/capabilities/product-search.capability.ts +119 -0
  18. package/packages/algolia/src/core/initialize.ts +82 -0
  19. package/packages/algolia/src/core/initialize.types.ts +107 -0
  20. package/packages/algolia/src/factories/index.ts +1 -0
  21. package/packages/algolia/src/factories/product-search/product-search.factory.ts +182 -0
  22. package/{providers/fake → packages/algolia}/src/index.ts +3 -2
  23. package/packages/algolia/src/schema/capabilities.schema.ts +84 -0
  24. package/{providers → packages}/algolia/src/test/analytics.spec.ts +12 -4
  25. package/packages/algolia/src/test/client-builder-product-search-extension.example.ts +85 -0
  26. package/packages/algolia/vite.config.ts +26 -0
  27. package/packages/algolia/vitest.config.mts +21 -0
  28. package/packages/commercetools/README.md +11 -0
  29. package/{core → packages/commercetools}/eslint.config.mjs +2 -2
  30. package/packages/commercetools/package.json +17 -0
  31. package/{providers → packages}/commercetools/project.json +7 -8
  32. package/{providers/commercetools/src/providers/cart.provider.ts → packages/commercetools/src/capabilities/cart.capability.ts} +68 -194
  33. package/{providers/commercetools/src/providers/category.provider.ts → packages/commercetools/src/capabilities/category.capability.ts} +26 -66
  34. package/{providers/commercetools/src/providers/checkout.provider.ts → packages/commercetools/src/capabilities/checkout.capability.ts} +51 -323
  35. package/{providers/commercetools/src/providers/identity.provider.ts → packages/commercetools/src/capabilities/identity.capability.ts} +36 -16
  36. package/packages/commercetools/src/capabilities/index.ts +15 -0
  37. package/{providers/commercetools/src/providers/inventory.provider.ts → packages/commercetools/src/capabilities/inventory.capability.ts} +14 -32
  38. package/packages/commercetools/src/capabilities/order-search.capability.ts +135 -0
  39. package/packages/commercetools/src/capabilities/order.capability.ts +67 -0
  40. package/{providers/commercetools/src/providers/price.provider.ts → packages/commercetools/src/capabilities/price.capability.ts} +38 -52
  41. package/{providers/commercetools/src/providers/product-associations.provider.ts → packages/commercetools/src/capabilities/product-associations.capability.ts} +40 -105
  42. package/{providers/commercetools/src/providers/product-list.provider.ts → packages/commercetools/src/capabilities/product-list.capability.ts} +39 -24
  43. package/{providers/commercetools/src/providers/product-reviews.provider.ts → packages/commercetools/src/capabilities/product-reviews.capability.ts} +35 -15
  44. package/{providers/commercetools/src/providers/product-search.provider.ts → packages/commercetools/src/capabilities/product-search.capability.ts} +18 -171
  45. package/packages/commercetools/src/capabilities/product.capability.ts +133 -0
  46. package/{providers/commercetools/src/providers/profile.provider.ts → packages/commercetools/src/capabilities/profile.capability.ts} +28 -74
  47. package/{providers/commercetools/src/providers/store.provider.ts → packages/commercetools/src/capabilities/store.capability.ts} +14 -32
  48. package/packages/commercetools/src/core/capability-descriptors.ts +324 -0
  49. package/{providers → packages}/commercetools/src/core/client.ts +2 -2
  50. package/packages/commercetools/src/core/initialize.ts +58 -0
  51. package/packages/commercetools/src/core/initialize.types.ts +174 -0
  52. package/packages/commercetools/src/factories/cart/cart.factory.ts +142 -0
  53. package/packages/commercetools/src/factories/category/category.factory.ts +77 -0
  54. package/packages/commercetools/src/factories/checkout/checkout-initializer-overrides.example.ts +94 -0
  55. package/packages/commercetools/src/factories/checkout/checkout.factory.ts +338 -0
  56. package/packages/commercetools/src/factories/identity/identity.factory.ts +26 -0
  57. package/packages/commercetools/src/factories/inventory/inventory.factory.ts +49 -0
  58. package/packages/commercetools/src/factories/order/order.factory.ts +149 -0
  59. package/packages/commercetools/src/factories/order-search/order-search.factory.ts +108 -0
  60. package/packages/commercetools/src/factories/price/price.factory.ts +76 -0
  61. package/packages/commercetools/src/factories/product/product-capability-custom-method-only.example.ts +47 -0
  62. package/packages/commercetools/src/factories/product/product-capability-schema-signature-extension.example.ts +61 -0
  63. package/packages/commercetools/src/factories/product/product-factory-baseline.example.ts +14 -0
  64. package/packages/commercetools/src/factories/product/product-factory-schema-and-parse-extension.example.ts +35 -0
  65. package/packages/commercetools/src/factories/product/product-factory-schema-extension.example.ts +23 -0
  66. package/packages/commercetools/src/factories/product/product-initializer-factory-extension.example.ts +41 -0
  67. package/packages/commercetools/src/factories/product/product.factory.ts +220 -0
  68. package/packages/commercetools/src/factories/product/utils.example.ts +9 -0
  69. package/packages/commercetools/src/factories/product-associations/product-associations.factory.ts +103 -0
  70. package/packages/commercetools/src/factories/product-list/product-list.factory.ts +122 -0
  71. package/packages/commercetools/src/factories/product-reviews/product-reviews.factory.ts +81 -0
  72. package/packages/commercetools/src/factories/product-search/product-search.factory.ts +182 -0
  73. package/packages/commercetools/src/factories/profile/profile.factory.ts +94 -0
  74. package/packages/commercetools/src/factories/store/store.factory.ts +49 -0
  75. package/packages/commercetools/src/index.ts +30 -0
  76. package/packages/commercetools/src/schema/capabilities.schema.ts +260 -0
  77. package/{providers → packages}/commercetools/src/test/caching.spec.ts +24 -8
  78. package/packages/commercetools/src/test/client-builder-merge-extensions.example.ts +125 -0
  79. package/{providers/algolia → packages/commercetools}/tsconfig.json +1 -1
  80. package/{core → packages/commercetools}/tsconfig.lib.json +1 -1
  81. package/packages/commercetools/tsconfig.spec.json +28 -0
  82. package/packages/commercetools/vite.config.ts +26 -0
  83. package/packages/commercetools/vitest.config.mts +21 -0
  84. package/{providers/fake → packages/core}/eslint.config.mjs +2 -1
  85. package/{core → packages/core}/package.json +7 -7
  86. package/packages/core/project.json +33 -0
  87. package/{core/src/providers/analytics.provider.ts → packages/core/src/capabilities/analytics.capability.ts} +8 -8
  88. package/{core/src/providers/base.provider.ts → packages/core/src/capabilities/base.capability.ts} +2 -2
  89. package/{core/src/providers/cart.provider.ts → packages/core/src/capabilities/cart.capability.ts} +13 -11
  90. package/{core/src/providers/category.provider.ts → packages/core/src/capabilities/category.capability.ts} +12 -10
  91. package/{core/src/providers/checkout.provider.ts → packages/core/src/capabilities/checkout.capability.ts} +15 -11
  92. package/{core/src/providers/identity.provider.ts → packages/core/src/capabilities/identity.capability.ts} +8 -8
  93. package/packages/core/src/capabilities/index.ts +18 -0
  94. package/{core/src/providers/inventory.provider.ts → packages/core/src/capabilities/inventory.capability.ts} +5 -5
  95. package/{core/src/providers/order-search.provider.ts → packages/core/src/capabilities/order-search.capability.ts} +5 -3
  96. package/{core/src/providers/order.provider.ts → packages/core/src/capabilities/order.capability.ts} +5 -5
  97. package/{core/src/providers/price.provider.ts → packages/core/src/capabilities/price.capability.ts} +6 -6
  98. package/{core/src/providers/product-associations.provider.ts → packages/core/src/capabilities/product-associations.capability.ts} +7 -5
  99. package/{core/src/providers/product-list.provider.ts → packages/core/src/capabilities/product-list.capability.ts} +14 -9
  100. package/{core/src/providers/product-recommendations.provider.ts → packages/core/src/capabilities/product-recommendations.capability.ts} +21 -21
  101. package/{core/src/providers/product-reviews.provider.ts → packages/core/src/capabilities/product-reviews.capability.ts} +9 -5
  102. package/packages/core/src/capabilities/product-search.capability.ts +48 -0
  103. package/{core/src/providers/product.provider.ts → packages/core/src/capabilities/product.capability.ts} +7 -7
  104. package/{core/src/providers/profile.provider.ts → packages/core/src/capabilities/profile.capability.ts} +9 -9
  105. package/{core/src/providers/store.provider.ts → packages/core/src/capabilities/store.capability.ts} +3 -3
  106. package/packages/core/src/client/client-builder.ts +131 -0
  107. package/packages/core/src/client/client.ts +35 -0
  108. package/{core → packages/core}/src/decorators/reactionary.decorator.ts +7 -7
  109. package/packages/core/src/factories/cart.factory.ts +40 -0
  110. package/packages/core/src/factories/category.factory.ts +40 -0
  111. package/packages/core/src/factories/checkout.factory.ts +59 -0
  112. package/packages/core/src/factories/identity.factory.ts +26 -0
  113. package/packages/core/src/factories/index.ts +15 -0
  114. package/packages/core/src/factories/inventory.factory.ts +26 -0
  115. package/packages/core/src/factories/order-search.factory.ts +33 -0
  116. package/packages/core/src/factories/order.factory.ts +21 -0
  117. package/packages/core/src/factories/price.factory.ts +29 -0
  118. package/packages/core/src/factories/product-associations.factory.ts +30 -0
  119. package/packages/core/src/factories/product-list.factory.ts +82 -0
  120. package/packages/core/src/factories/product-reviews.factory.ts +58 -0
  121. package/packages/core/src/factories/product-search.factory.ts +31 -0
  122. package/packages/core/src/factories/product.factory.ts +21 -0
  123. package/packages/core/src/factories/profile.factory.ts +23 -0
  124. package/packages/core/src/factories/store.factory.ts +21 -0
  125. package/packages/core/src/index.ts +8 -0
  126. package/packages/core/src/test/client-builder.spec.ts +141 -0
  127. package/{core → packages/core}/src/test/reactionary.decorator.spec.ts +27 -27
  128. package/{providers/meilisearch → packages/core}/tsconfig.json +1 -1
  129. package/{providers/medusa → packages/core}/tsconfig.lib.json +1 -2
  130. package/packages/core/tsconfig.spec.json +28 -0
  131. package/packages/core/vite.config.ts +26 -0
  132. package/packages/core/vitest.config.mts +21 -0
  133. package/packages/fake/README.md +11 -0
  134. package/{providers/algolia → packages/fake}/eslint.config.mjs +2 -1
  135. package/{providers → packages}/fake/package.json +6 -4
  136. package/{providers → packages}/fake/project.json +7 -8
  137. package/{providers/fake/src/providers/analytics.provider.ts → packages/fake/src/capabilities/analytics.capability.ts} +2 -2
  138. package/{providers/fake/src/providers/cart.provider.ts → packages/fake/src/capabilities/cart.capability.ts} +24 -15
  139. package/packages/fake/src/capabilities/category.capability.ts +199 -0
  140. package/{providers/fake/src/providers/checkout.provider.ts → packages/fake/src/capabilities/checkout.capability.ts} +40 -21
  141. package/{providers/fake/src/providers/identity.provider.ts → packages/fake/src/capabilities/identity.capability.ts} +40 -34
  142. package/packages/fake/src/capabilities/index.ts +15 -0
  143. package/packages/fake/src/capabilities/inventory.capability.ts +74 -0
  144. package/packages/fake/src/capabilities/order-search.capability.ts +86 -0
  145. package/{providers/fake/src/providers/order.provider.ts → packages/fake/src/capabilities/order.capability.ts} +22 -38
  146. package/{providers/fake/src/providers/price.provider.ts → packages/fake/src/capabilities/price.capability.ts} +42 -34
  147. package/{providers/fake/src/providers/product-associations.provider.ts → packages/fake/src/capabilities/product-associations.capability.ts} +24 -11
  148. package/{providers/fake/src/providers/product-reviews.provider.ts → packages/fake/src/capabilities/product-reviews.capability.ts} +72 -70
  149. package/{providers/fake/src/providers/product-search.provider.ts → packages/fake/src/capabilities/product-search.capability.ts} +44 -71
  150. package/{providers/fake/src/providers/product.provider.ts → packages/fake/src/capabilities/product.capability.ts} +35 -33
  151. package/packages/fake/src/capabilities/profile.capability.ts +154 -0
  152. package/packages/fake/src/capabilities/store.capability.ts +72 -0
  153. package/packages/fake/src/core/initialize.ts +274 -0
  154. package/packages/fake/src/core/initialize.types.ts +164 -0
  155. package/packages/fake/src/factories/cart/cart.factory.ts +34 -0
  156. package/packages/fake/src/factories/category/category.factory.ts +40 -0
  157. package/packages/fake/src/factories/checkout/checkout.factory.ts +53 -0
  158. package/packages/fake/src/factories/identity/identity.factory.ts +25 -0
  159. package/packages/fake/src/factories/index.ts +14 -0
  160. package/packages/fake/src/factories/inventory/inventory.factory.ts +25 -0
  161. package/packages/fake/src/factories/order/order.factory.ts +22 -0
  162. package/packages/fake/src/factories/order-search/order-search.factory.ts +27 -0
  163. package/packages/fake/src/factories/price/price.factory.ts +26 -0
  164. package/packages/fake/src/factories/product/product.factory.ts +22 -0
  165. package/packages/fake/src/factories/product-associations/product-associations.factory.ts +25 -0
  166. package/packages/fake/src/factories/product-reviews/product-reviews.factory.ts +53 -0
  167. package/packages/fake/src/factories/product-search/product-search.factory.ts +27 -0
  168. package/packages/fake/src/factories/profile/profile.factory.ts +22 -0
  169. package/packages/fake/src/factories/store/store.factory.ts +22 -0
  170. package/{providers/algolia → packages/fake}/src/index.ts +4 -3
  171. package/packages/fake/src/schema/capabilities.schema.ts +178 -0
  172. package/{providers/fake/src/test/cart.provider.spec.ts → packages/fake/src/test/cart.capability.spec.ts} +24 -7
  173. package/{providers/fake/src/test/category.provider.spec.ts → packages/fake/src/test/category.capability.spec.ts} +7 -4
  174. package/{providers/fake/src/test/checkout.provider.spec.ts → packages/fake/src/test/checkout.capability.spec.ts} +15 -5
  175. package/packages/fake/src/test/client-builder-product-extension.example.ts +75 -0
  176. package/{providers/fake/src/test/order-search.provider.spec.ts → packages/fake/src/test/order-search.capability.spec.ts} +7 -10
  177. package/{providers/fake/src/test/order.provider.spec.ts → packages/fake/src/test/order.capability.spec.ts} +7 -9
  178. package/{providers/fake/src/test/price.provider.spec.ts → packages/fake/src/test/price.capability.spec.ts} +6 -4
  179. package/{providers/fake/src/test/product.provider.spec.ts → packages/fake/src/test/product.capability.spec.ts} +10 -4
  180. package/{providers/fake/src/test/profile.provider.spec.ts → packages/fake/src/test/profile.capability.spec.ts} +7 -5
  181. package/{providers/commercetools → packages/fake}/tsconfig.json +1 -1
  182. package/packages/fake/tsconfig.lib.json +23 -0
  183. package/packages/fake/tsconfig.spec.json +28 -0
  184. package/packages/fake/vite.config.ts +26 -0
  185. package/packages/fake/vitest.config.mts +21 -0
  186. package/packages/google-analytics/eslint.config.mjs +23 -0
  187. package/{providers → packages}/google-analytics/package.json +7 -5
  188. package/{providers → packages}/google-analytics/project.json +5 -5
  189. package/{providers/google-analytics/src/providers/analytics.provider.ts → packages/google-analytics/src/capabilities/analytics.capability.ts} +2 -2
  190. package/packages/google-analytics/src/core/initialize.ts +41 -0
  191. package/packages/google-analytics/src/core/initialize.types.ts +47 -0
  192. package/{providers → packages}/google-analytics/src/index.ts +2 -1
  193. package/packages/google-analytics/src/schema/capabilities.schema.ts +36 -0
  194. package/{providers/google-analytics/src/test/analytics.provider.spec.ts → packages/google-analytics/src/test/analytics.capability.spec.ts} +7 -7
  195. package/packages/google-analytics/tsconfig.json +24 -0
  196. package/packages/google-analytics/tsconfig.lib.json +23 -0
  197. package/packages/google-analytics/tsconfig.spec.json +28 -0
  198. package/{providers → packages}/google-analytics/vite.config.ts +2 -2
  199. package/{providers → packages}/google-analytics/vitest.config.mts +2 -2
  200. package/packages/medusa/README.md +11 -0
  201. package/packages/medusa/eslint.config.mjs +23 -0
  202. package/packages/medusa/package.json +17 -0
  203. package/{providers → packages}/medusa/project.json +7 -8
  204. package/{providers/medusa/src/providers/cart.provider.ts → packages/medusa/src/capabilities/cart.capability.ts} +34 -21
  205. package/{providers/medusa/src/providers/category.provider.ts → packages/medusa/src/capabilities/category.capability.ts} +31 -13
  206. package/{providers/medusa/src/providers/checkout.provider.ts → packages/medusa/src/capabilities/checkout.capability.ts} +43 -18
  207. package/{providers/medusa/src/providers/identity.provider.ts → packages/medusa/src/capabilities/identity.capability.ts} +3 -3
  208. package/{providers/medusa/src/providers/inventory.provider.ts → packages/medusa/src/capabilities/inventory.capability.ts} +22 -8
  209. package/{providers/medusa/src/providers/order-search.provider.ts → packages/medusa/src/capabilities/order-search.capability.ts} +17 -6
  210. package/{providers/medusa/src/providers/order.provider.ts → packages/medusa/src/capabilities/order.capability.ts} +18 -6
  211. package/{providers/medusa/src/providers/price.provider.ts → packages/medusa/src/capabilities/price.capability.ts} +27 -8
  212. package/{providers/medusa/src/providers/product-associations.provider.ts → packages/medusa/src/capabilities/product-associations.capability.ts} +20 -9
  213. package/{providers/medusa/src/providers/product-recommendations.provider.ts → packages/medusa/src/capabilities/product-recommendations.capability.ts} +3 -3
  214. package/{providers/medusa/src/providers/product-search.provider.ts → packages/medusa/src/capabilities/product-search.capability.ts} +20 -32
  215. package/{providers/medusa/src/providers/product.provider.ts → packages/medusa/src/capabilities/product.capability.ts} +48 -12
  216. package/{providers/medusa/src/providers/profile.provider.ts → packages/medusa/src/capabilities/profile.capability.ts} +37 -13
  217. package/packages/medusa/src/core/initialize.ts +330 -0
  218. package/packages/medusa/src/core/initialize.types.ts +184 -0
  219. package/packages/medusa/src/factories/cart/cart.factory.ts +34 -0
  220. package/packages/medusa/src/factories/category/category.factory.ts +37 -0
  221. package/packages/medusa/src/factories/checkout/checkout.factory.ts +50 -0
  222. package/packages/medusa/src/factories/identity/identity.factory.ts +22 -0
  223. package/packages/medusa/src/factories/index.ts +12 -0
  224. package/packages/medusa/src/factories/inventory/inventory.factory.ts +25 -0
  225. package/packages/medusa/src/factories/order/order.factory.ts +22 -0
  226. package/packages/medusa/src/factories/order-search/order-search.factory.ts +27 -0
  227. package/packages/medusa/src/factories/price/price.factory.ts +26 -0
  228. package/packages/medusa/src/factories/product/product.factory.ts +22 -0
  229. package/packages/medusa/src/factories/product-associations/product-associations.factory.ts +25 -0
  230. package/packages/medusa/src/factories/product-search/product-search.factory.ts +27 -0
  231. package/packages/medusa/src/factories/profile/profile.factory.ts +22 -0
  232. package/packages/medusa/src/index.ts +17 -0
  233. package/packages/medusa/src/schema/capabilities.schema.ts +231 -0
  234. package/{providers/medusa/src/test/cart.provider.spec.ts → packages/medusa/src/test/cart.capability.spec.ts} +20 -4
  235. package/{providers/medusa/src/test/category.provider.spec.ts → packages/medusa/src/test/category.capability.spec.ts} +7 -4
  236. package/{providers → packages}/medusa/src/test/checkout.spec.ts +9 -9
  237. package/{providers/medusa/src/test/identity.provider.spec.ts → packages/medusa/src/test/identity.capability.spec.ts} +3 -3
  238. package/{providers/medusa/src/test/inventory.provider.spec.ts → packages/medusa/src/test/inventory.capability.spec.ts} +6 -4
  239. package/{providers/medusa/src/test/large-cart.provider.spec.ts → packages/medusa/src/test/large-cart.capability.spec.ts} +14 -8
  240. package/{providers/medusa/src/test/price.provider.spec.ts → packages/medusa/src/test/price.capability.spec.ts} +10 -3
  241. package/{providers/medusa/src/test/product.provider.spec.ts → packages/medusa/src/test/product.capability.spec.ts} +6 -4
  242. package/{providers/medusa/src/test/search.provider.spec.ts → packages/medusa/src/test/search.capability.spec.ts} +20 -7
  243. package/{providers → packages}/medusa/src/utils/medusa-helpers.ts +1 -1
  244. package/packages/medusa/tsconfig.json +24 -0
  245. package/packages/medusa/tsconfig.lib.json +23 -0
  246. package/packages/medusa/tsconfig.spec.json +28 -0
  247. package/packages/medusa/vite.config.ts +26 -0
  248. package/packages/medusa/vitest.config.mts +21 -0
  249. package/packages/meilisearch/README.md +11 -0
  250. package/packages/meilisearch/eslint.config.mjs +23 -0
  251. package/packages/meilisearch/package.json +15 -0
  252. package/{providers → packages}/meilisearch/project.json +7 -8
  253. package/packages/meilisearch/src/capabilities/index.ts +3 -0
  254. package/{providers/meilisearch/src/providers/order-search.provider.ts → packages/meilisearch/src/capabilities/order-search.capability.ts} +22 -7
  255. package/{providers/meilisearch/src/providers/product-recommendations.provider.ts → packages/meilisearch/src/capabilities/product-recommendations.capability.ts} +3 -3
  256. package/{providers/meilisearch/src/providers/product-search.provider.ts → packages/meilisearch/src/capabilities/product-search.capability.ts} +25 -9
  257. package/packages/meilisearch/src/core/initialize.ts +94 -0
  258. package/packages/meilisearch/src/core/initialize.types.ts +119 -0
  259. package/packages/meilisearch/src/factories/index.ts +2 -0
  260. package/packages/meilisearch/src/factories/order-search/order-search.factory.ts +27 -0
  261. package/packages/meilisearch/src/factories/product-search/product-search.factory.ts +27 -0
  262. package/packages/meilisearch/src/index.ts +9 -0
  263. package/packages/meilisearch/src/schema/capabilities.schema.ts +98 -0
  264. package/packages/meilisearch/tsconfig.json +24 -0
  265. package/packages/meilisearch/tsconfig.lib.json +23 -0
  266. package/packages/meilisearch/tsconfig.spec.json +28 -0
  267. package/packages/meilisearch/vite.config.ts +26 -0
  268. package/packages/meilisearch/vitest.config.mts +21 -0
  269. package/tsconfig.base.json +13 -21
  270. package/core/project.json +0 -34
  271. package/core/src/client/client-builder.ts +0 -84
  272. package/core/src/client/client.ts +0 -35
  273. package/core/src/index.ts +0 -6
  274. package/core/src/providers/index.ts +0 -18
  275. package/core/src/providers/product-search.provider.ts +0 -61
  276. package/core/src/test/client-builder.spec.ts +0 -60
  277. package/core/tsconfig.json +0 -24
  278. package/core/tsconfig.spec.json +0 -4
  279. package/core/vitest.config.ts +0 -14
  280. package/providers/algolia/README.md +0 -56
  281. package/providers/algolia/project.json +0 -34
  282. package/providers/algolia/src/core/initialize.ts +0 -27
  283. package/providers/algolia/src/providers/index.ts +0 -3
  284. package/providers/algolia/src/providers/product-search.provider.ts +0 -236
  285. package/providers/algolia/src/schema/capabilities.schema.ts +0 -10
  286. package/providers/algolia/tsconfig.lib.json +0 -10
  287. package/providers/algolia/tsconfig.spec.json +0 -4
  288. package/providers/algolia/vitest.config.ts +0 -14
  289. package/providers/commercetools/README.md +0 -65
  290. package/providers/commercetools/eslint.config.mjs +0 -22
  291. package/providers/commercetools/package.json +0 -15
  292. package/providers/commercetools/src/core/initialize.ts +0 -174
  293. package/providers/commercetools/src/index.ts +0 -15
  294. package/providers/commercetools/src/providers/index.ts +0 -15
  295. package/providers/commercetools/src/providers/order-search.provider.ts +0 -229
  296. package/providers/commercetools/src/providers/order.provider.ts +0 -198
  297. package/providers/commercetools/src/providers/product.provider.ts +0 -312
  298. package/providers/commercetools/src/schema/capabilities.schema.ts +0 -22
  299. package/providers/commercetools/tsconfig.lib.json +0 -10
  300. package/providers/commercetools/tsconfig.spec.json +0 -4
  301. package/providers/commercetools/vitest.config.ts +0 -15
  302. package/providers/fake/README.md +0 -23
  303. package/providers/fake/src/core/initialize.ts +0 -105
  304. package/providers/fake/src/providers/category.provider.ts +0 -184
  305. package/providers/fake/src/providers/index.ts +0 -15
  306. package/providers/fake/src/providers/inventory.provider.ts +0 -72
  307. package/providers/fake/src/providers/order-search.provider.ts +0 -78
  308. package/providers/fake/src/providers/profile.provider.ts +0 -147
  309. package/providers/fake/src/providers/store.provider.ts +0 -56
  310. package/providers/fake/src/schema/capabilities.schema.ts +0 -21
  311. package/providers/fake/tsconfig.json +0 -25
  312. package/providers/fake/tsconfig.lib.json +0 -11
  313. package/providers/fake/tsconfig.spec.json +0 -4
  314. package/providers/fake/vitest.config.ts +0 -14
  315. package/providers/google-analytics/src/core/initialize.ts +0 -16
  316. package/providers/google-analytics/src/schema/capabilities.schema.ts +0 -10
  317. package/providers/medusa/README.md +0 -30
  318. package/providers/medusa/TESTING.md +0 -98
  319. package/providers/medusa/eslint.config.mjs +0 -19
  320. package/providers/medusa/package.json +0 -15
  321. package/providers/medusa/src/core/initialize.ts +0 -87
  322. package/providers/medusa/src/index.ts +0 -15
  323. package/providers/medusa/src/schema/capabilities.schema.ts +0 -20
  324. package/providers/medusa/tsconfig.json +0 -24
  325. package/providers/medusa/tsconfig.spec.json +0 -4
  326. package/providers/medusa/vitest.config.ts +0 -15
  327. package/providers/meilisearch/README.md +0 -48
  328. package/providers/meilisearch/eslint.config.mjs +0 -22
  329. package/providers/meilisearch/package.json +0 -13
  330. package/providers/meilisearch/src/core/initialize.ts +0 -27
  331. package/providers/meilisearch/src/index.ts +0 -7
  332. package/providers/meilisearch/src/providers/index.ts +0 -2
  333. package/providers/meilisearch/src/schema/capabilities.schema.ts +0 -11
  334. package/providers/meilisearch/tsconfig.lib.json +0 -10
  335. package/providers/meilisearch/tsconfig.spec.json +0 -4
  336. package/providers/meilisearch/vitest.config.ts +0 -14
  337. package/providers/posthog/README.md +0 -7
  338. package/providers/posthog/eslint.config.mjs +0 -22
  339. package/providers/posthog/package.json +0 -12
  340. package/providers/posthog/src/core/initialize.ts +0 -11
  341. package/providers/posthog/src/index.ts +0 -4
  342. package/providers/posthog/src/schema/capabilities.schema.ts +0 -8
  343. package/providers/posthog/src/schema/configuration.schema.ts +0 -8
  344. package/providers/posthog/tsconfig.json +0 -21
  345. package/providers/posthog/tsconfig.lib.json +0 -9
  346. /package/{providers → packages}/algolia/src/schema/configuration.schema.ts +0 -0
  347. /package/{providers → packages}/algolia/src/schema/index.ts +0 -0
  348. /package/{providers → packages}/algolia/src/schema/product-recommendation.schema.ts +0 -0
  349. /package/{providers → packages}/algolia/src/schema/search.schema.ts +0 -0
  350. /package/{providers/google-analytics → packages/algolia}/tsconfig.json +0 -0
  351. /package/{providers/google-analytics → packages/algolia}/tsconfig.lib.json +0 -0
  352. /package/{providers/google-analytics → packages/algolia}/tsconfig.spec.json +0 -0
  353. /package/{providers → packages}/commercetools/src/core/token-cache.ts +0 -0
  354. /package/{providers → packages}/commercetools/src/schema/commercetools.schema.ts +0 -0
  355. /package/{providers → packages}/commercetools/src/schema/configuration.schema.ts +0 -0
  356. /package/{providers → packages}/commercetools/src/schema/session.schema.ts +0 -0
  357. /package/{providers → packages}/commercetools/src/test/identity.spec.ts +0 -0
  358. /package/{providers → packages}/commercetools/src/test/test-utils.ts +0 -0
  359. /package/{core → packages/core}/README.md +0 -0
  360. /package/{core → packages/core}/src/cache/cache.interface.ts +0 -0
  361. /package/{core → packages/core}/src/cache/index.ts +0 -0
  362. /package/{core → packages/core}/src/cache/memory-cache.ts +0 -0
  363. /package/{core → packages/core}/src/cache/noop-cache.ts +0 -0
  364. /package/{core → packages/core}/src/cache/redis-cache.ts +0 -0
  365. /package/{core → packages/core}/src/client/index.ts +0 -0
  366. /package/{core → packages/core}/src/decorators/index.ts +0 -0
  367. /package/{core → packages/core}/src/initialization.ts +0 -0
  368. /package/{core → packages/core}/src/metrics/metrics.ts +0 -0
  369. /package/{core → packages/core}/src/schemas/capabilities.schema.ts +0 -0
  370. /package/{core → packages/core}/src/schemas/errors/generic.error.ts +0 -0
  371. /package/{core → packages/core}/src/schemas/errors/index.ts +0 -0
  372. /package/{core → packages/core}/src/schemas/errors/invalid-input.error.ts +0 -0
  373. /package/{core → packages/core}/src/schemas/errors/invalid-output.error.ts +0 -0
  374. /package/{core → packages/core}/src/schemas/errors/not-found.error.ts +0 -0
  375. /package/{core → packages/core}/src/schemas/index.ts +0 -0
  376. /package/{core → packages/core}/src/schemas/models/analytics.model.ts +0 -0
  377. /package/{core → packages/core}/src/schemas/models/base.model.ts +0 -0
  378. /package/{core → packages/core}/src/schemas/models/cart.model.ts +0 -0
  379. /package/{core → packages/core}/src/schemas/models/category.model.ts +0 -0
  380. /package/{core → packages/core}/src/schemas/models/checkout.model.ts +0 -0
  381. /package/{core → packages/core}/src/schemas/models/cost.model.ts +0 -0
  382. /package/{core → packages/core}/src/schemas/models/currency.model.ts +0 -0
  383. /package/{core → packages/core}/src/schemas/models/identifiers.model.ts +0 -0
  384. /package/{core → packages/core}/src/schemas/models/identity.model.ts +0 -0
  385. /package/{core → packages/core}/src/schemas/models/index.ts +0 -0
  386. /package/{core → packages/core}/src/schemas/models/inventory.model.ts +0 -0
  387. /package/{core → packages/core}/src/schemas/models/order-search.model.ts +0 -0
  388. /package/{core → packages/core}/src/schemas/models/order.model.ts +0 -0
  389. /package/{core → packages/core}/src/schemas/models/payment.model.ts +0 -0
  390. /package/{core → packages/core}/src/schemas/models/price.model.ts +0 -0
  391. /package/{core → packages/core}/src/schemas/models/product-associations.model.ts +0 -0
  392. /package/{core → packages/core}/src/schemas/models/product-list.model.ts +0 -0
  393. /package/{core → packages/core}/src/schemas/models/product-recommendations.model.ts +0 -0
  394. /package/{core → packages/core}/src/schemas/models/product-reviews.model.ts +0 -0
  395. /package/{core → packages/core}/src/schemas/models/product-search.model.ts +0 -0
  396. /package/{core → packages/core}/src/schemas/models/product.model.ts +0 -0
  397. /package/{core → packages/core}/src/schemas/models/profile.model.ts +0 -0
  398. /package/{core → packages/core}/src/schemas/models/shipping-method.model.ts +0 -0
  399. /package/{core → packages/core}/src/schemas/models/store.model.ts +0 -0
  400. /package/{core → packages/core}/src/schemas/mutations/analytics/index.ts +0 -0
  401. /package/{core → packages/core}/src/schemas/mutations/analytics/product-add-to-cart.mutation.ts +0 -0
  402. /package/{core → packages/core}/src/schemas/mutations/analytics/product-details-view.mutation.ts +0 -0
  403. /package/{core → packages/core}/src/schemas/mutations/analytics/product-summary-click.mutation.ts +0 -0
  404. /package/{core → packages/core}/src/schemas/mutations/analytics/product-summary-view.mutation.ts +0 -0
  405. /package/{core → packages/core}/src/schemas/mutations/analytics/purchase.mutation.ts +0 -0
  406. /package/{core → packages/core}/src/schemas/mutations/base.mutation.ts +0 -0
  407. /package/{core → packages/core}/src/schemas/mutations/cart.mutation.ts +0 -0
  408. /package/{core → packages/core}/src/schemas/mutations/checkout.mutation.ts +0 -0
  409. /package/{core → packages/core}/src/schemas/mutations/identity.mutation.ts +0 -0
  410. /package/{core → packages/core}/src/schemas/mutations/index.ts +0 -0
  411. /package/{core → packages/core}/src/schemas/mutations/inventory.mutation.ts +0 -0
  412. /package/{core → packages/core}/src/schemas/mutations/price.mutation.ts +0 -0
  413. /package/{core → packages/core}/src/schemas/mutations/product-list.mutation.ts +0 -0
  414. /package/{core → packages/core}/src/schemas/mutations/product-reviews.mutation.ts +0 -0
  415. /package/{core → packages/core}/src/schemas/mutations/product.mutation.ts +0 -0
  416. /package/{core → packages/core}/src/schemas/mutations/profile.mutation.ts +0 -0
  417. /package/{core → packages/core}/src/schemas/mutations/search.mutation.ts +0 -0
  418. /package/{core → packages/core}/src/schemas/queries/analytics.query.ts +0 -0
  419. /package/{core → packages/core}/src/schemas/queries/base.query.ts +0 -0
  420. /package/{core → packages/core}/src/schemas/queries/cart.query.ts +0 -0
  421. /package/{core → packages/core}/src/schemas/queries/category.query.ts +0 -0
  422. /package/{core → packages/core}/src/schemas/queries/checkout.query.ts +0 -0
  423. /package/{core → packages/core}/src/schemas/queries/identity.query.ts +0 -0
  424. /package/{core → packages/core}/src/schemas/queries/index.ts +0 -0
  425. /package/{core → packages/core}/src/schemas/queries/inventory.query.ts +0 -0
  426. /package/{core → packages/core}/src/schemas/queries/order-search.query.ts +0 -0
  427. /package/{core → packages/core}/src/schemas/queries/order.query.ts +0 -0
  428. /package/{core → packages/core}/src/schemas/queries/price.query.ts +0 -0
  429. /package/{core → packages/core}/src/schemas/queries/product-associations.query.ts +0 -0
  430. /package/{core → packages/core}/src/schemas/queries/product-list.query.ts +0 -0
  431. /package/{core → packages/core}/src/schemas/queries/product-recommendations.query.ts +0 -0
  432. /package/{core → packages/core}/src/schemas/queries/product-reviews.query.ts +0 -0
  433. /package/{core → packages/core}/src/schemas/queries/product-search.query.ts +0 -0
  434. /package/{core → packages/core}/src/schemas/queries/product.query.ts +0 -0
  435. /package/{core → packages/core}/src/schemas/queries/profile.query.ts +0 -0
  436. /package/{core → packages/core}/src/schemas/queries/store.query.ts +0 -0
  437. /package/{core → packages/core}/src/schemas/result.ts +0 -0
  438. /package/{core → packages/core}/src/schemas/session.schema.ts +0 -0
  439. /package/{core → packages/core}/src/test/request-context.spec.ts +0 -0
  440. /package/{core → packages/core}/src/zod-utils.ts +0 -0
  441. /package/{providers → packages}/fake/src/schema/configuration.schema.ts +0 -0
  442. /package/{providers → packages}/fake/src/test/test-utils.ts +0 -0
  443. /package/{providers → packages}/fake/src/utilities/jitter.ts +0 -0
  444. /package/{providers → packages}/fake/src/utilities/seed.ts +0 -0
  445. /package/{providers → packages}/google-analytics/README.md +0 -0
  446. /package/{providers → packages}/google-analytics/src/schema/configuration.schema.ts +0 -0
  447. /package/{providers → packages}/medusa/src/core/client.ts +0 -0
  448. /package/{providers → packages}/medusa/src/schema/configuration.schema.ts +0 -0
  449. /package/{providers → packages}/medusa/src/schema/medusa.schema.ts +0 -0
  450. /package/{providers → packages}/medusa/src/test/test-utils.ts +0 -0
  451. /package/{providers → packages}/meilisearch/src/schema/configuration.schema.ts +0 -0
  452. /package/{providers → packages}/meilisearch/src/schema/index.ts +0 -0
  453. /package/{providers → packages}/meilisearch/src/schema/search.schema.ts +0 -0
@@ -0,0 +1,22 @@
1
+ import type {
2
+ AnyOrderSchema,
3
+ OrderFactory,
4
+ OrderSchema,
5
+ RequestContext,
6
+ } from '@reactionary/core';
7
+ import type * as z from 'zod';
8
+
9
+ export class MedusaOrderFactory<
10
+ TOrderSchema extends AnyOrderSchema = typeof OrderSchema,
11
+ > implements OrderFactory<TOrderSchema>
12
+ {
13
+ public readonly orderSchema: TOrderSchema;
14
+
15
+ constructor(orderSchema: TOrderSchema) {
16
+ this.orderSchema = orderSchema;
17
+ }
18
+
19
+ public parseOrder(_context: RequestContext, data: unknown): z.output<TOrderSchema> {
20
+ return this.orderSchema.parse(data);
21
+ }
22
+ }
@@ -0,0 +1,27 @@
1
+ import type {
2
+ AnyOrderSearchResultSchema,
3
+ OrderSearchFactory,
4
+ OrderSearchQueryByTerm,
5
+ OrderSearchResultSchema,
6
+ RequestContext,
7
+ } from '@reactionary/core';
8
+ import type * as z from 'zod';
9
+
10
+ export class MedusaOrderSearchFactory<
11
+ TOrderSearchResultSchema extends AnyOrderSearchResultSchema = typeof OrderSearchResultSchema,
12
+ > implements OrderSearchFactory<TOrderSearchResultSchema>
13
+ {
14
+ public readonly orderSearchResultSchema: TOrderSearchResultSchema;
15
+
16
+ constructor(orderSearchResultSchema: TOrderSearchResultSchema) {
17
+ this.orderSearchResultSchema = orderSearchResultSchema;
18
+ }
19
+
20
+ public parseOrderSearchResult(
21
+ _context: RequestContext,
22
+ data: unknown,
23
+ _query: OrderSearchQueryByTerm,
24
+ ): z.output<TOrderSearchResultSchema> {
25
+ return this.orderSearchResultSchema.parse(data);
26
+ }
27
+ }
@@ -0,0 +1,26 @@
1
+ import type {
2
+ AnyPriceSchema,
3
+ PriceFactory,
4
+ PriceSchema,
5
+ RequestContext,
6
+ } from '@reactionary/core';
7
+ import type * as z from 'zod';
8
+
9
+ export class MedusaPriceFactory<
10
+ TPriceSchema extends AnyPriceSchema = typeof PriceSchema,
11
+ > implements PriceFactory<TPriceSchema>
12
+ {
13
+ public readonly priceSchema: TPriceSchema;
14
+
15
+ constructor(priceSchema: TPriceSchema) {
16
+ this.priceSchema = priceSchema;
17
+ }
18
+
19
+ public parsePrice(
20
+ _context: RequestContext,
21
+ data: unknown,
22
+ _options?: { includeDiscounts: boolean },
23
+ ): z.output<TPriceSchema> {
24
+ return this.priceSchema.parse(data);
25
+ }
26
+ }
@@ -0,0 +1,22 @@
1
+ import type {
2
+ AnyProductSchema,
3
+ ProductFactory,
4
+ ProductSchema,
5
+ RequestContext,
6
+ } from '@reactionary/core';
7
+ import type * as z from 'zod';
8
+
9
+ export class MedusaProductFactory<
10
+ TProductSchema extends AnyProductSchema = typeof ProductSchema,
11
+ > implements ProductFactory<TProductSchema>
12
+ {
13
+ public readonly productSchema: TProductSchema;
14
+
15
+ constructor(productSchema: TProductSchema) {
16
+ this.productSchema = productSchema;
17
+ }
18
+
19
+ public parseProduct(_context: RequestContext, data: unknown): z.output<TProductSchema> {
20
+ return this.productSchema.parse(data);
21
+ }
22
+ }
@@ -0,0 +1,25 @@
1
+ import type {
2
+ AnyProductAssociationSchema,
3
+ ProductAssociationSchema,
4
+ ProductAssociationsFactory,
5
+ RequestContext,
6
+ } from '@reactionary/core';
7
+ import type * as z from 'zod';
8
+
9
+ export class MedusaProductAssociationsFactory<
10
+ TProductAssociationSchema extends AnyProductAssociationSchema = typeof ProductAssociationSchema,
11
+ > implements ProductAssociationsFactory<TProductAssociationSchema>
12
+ {
13
+ public readonly productAssociationSchema: TProductAssociationSchema;
14
+
15
+ constructor(productAssociationSchema: TProductAssociationSchema) {
16
+ this.productAssociationSchema = productAssociationSchema;
17
+ }
18
+
19
+ public parseAssociation(
20
+ _context: RequestContext,
21
+ data: unknown,
22
+ ): z.output<TProductAssociationSchema> {
23
+ return this.productAssociationSchema.parse(data);
24
+ }
25
+ }
@@ -0,0 +1,27 @@
1
+ import type {
2
+ AnyProductSearchResultSchema,
3
+ ProductSearchFactory,
4
+ ProductSearchQueryByTerm,
5
+ ProductSearchResultSchema,
6
+ RequestContext,
7
+ } from '@reactionary/core';
8
+ import type * as z from 'zod';
9
+
10
+ export class MedusaProductSearchFactory<
11
+ TProductSearchResultSchema extends AnyProductSearchResultSchema = typeof ProductSearchResultSchema,
12
+ > implements ProductSearchFactory<TProductSearchResultSchema>
13
+ {
14
+ public readonly productSearchResultSchema: TProductSearchResultSchema;
15
+
16
+ constructor(productSearchResultSchema: TProductSearchResultSchema) {
17
+ this.productSearchResultSchema = productSearchResultSchema;
18
+ }
19
+
20
+ public parseSearchResult(
21
+ _context: RequestContext,
22
+ data: unknown,
23
+ _query: ProductSearchQueryByTerm,
24
+ ): z.output<TProductSearchResultSchema> {
25
+ return this.productSearchResultSchema.parse(data);
26
+ }
27
+ }
@@ -0,0 +1,22 @@
1
+ import type {
2
+ AnyProfileSchema,
3
+ ProfileFactory,
4
+ ProfileSchema,
5
+ RequestContext,
6
+ } from '@reactionary/core';
7
+ import type * as z from 'zod';
8
+
9
+ export class MedusaProfileFactory<
10
+ TProfileSchema extends AnyProfileSchema = typeof ProfileSchema,
11
+ > implements ProfileFactory<TProfileSchema>
12
+ {
13
+ public readonly profileSchema: TProfileSchema;
14
+
15
+ constructor(profileSchema: TProfileSchema) {
16
+ this.profileSchema = profileSchema;
17
+ }
18
+
19
+ public parseProfile(_context: RequestContext, data: unknown): z.output<TProfileSchema> {
20
+ return this.profileSchema.parse(data);
21
+ }
22
+ }
@@ -0,0 +1,17 @@
1
+ export * from './schema/configuration.schema.js';
2
+ export * from './schema/medusa.schema.js';
3
+ export * from './schema/capabilities.schema.js';
4
+ export * from './core/initialize.js';
5
+ export * from './core/initialize.types.js';
6
+ export * from './core/client.js';
7
+ export * from './factories/index.js';
8
+ export * from './capabilities/cart.capability.js';
9
+ export * from './capabilities/identity.capability.js';
10
+ export * from './capabilities/inventory.capability.js';
11
+ export * from './capabilities/order.capability.js';
12
+ export * from './capabilities/order-search.capability.js';
13
+ export * from './capabilities/price.capability.js';
14
+ export * from './capabilities/product-search.capability.js';
15
+ export * from './capabilities/product-recommendations.capability.js';
16
+ export * from './capabilities/product-associations.capability.js';
17
+ export * from './capabilities/profile.capability.js';
@@ -0,0 +1,231 @@
1
+ import type {
2
+ CartFactory,
3
+ CartFactoryWithOutput,
4
+ CartCapability,
5
+ CategoryFactory,
6
+ CategoryFactoryWithOutput,
7
+ CategoryCapability,
8
+ CheckoutFactory,
9
+ CheckoutFactoryWithOutput,
10
+ CheckoutCapability,
11
+ IdentityCapability,
12
+ InventoryFactory,
13
+ InventoryFactoryWithOutput,
14
+ InventoryCapability,
15
+ OrderFactory,
16
+ OrderFactoryWithOutput,
17
+ OrderCapability,
18
+ OrderSearchFactory,
19
+ OrderSearchFactoryWithOutput,
20
+ OrderSearchCapability,
21
+ PriceFactory,
22
+ PriceFactoryWithOutput,
23
+ PriceCapability,
24
+ ProductAssociationsFactory,
25
+ ProductAssociationsFactoryWithOutput,
26
+ ProductAssociationsCapability,
27
+ ProductFactory,
28
+ ProductFactoryWithOutput,
29
+ ProductCapability,
30
+ ProductRecommendationsCapability,
31
+ ProductSearchFactory,
32
+ ProductSearchFactoryWithOutput,
33
+ ProductSearchCapability,
34
+ ProfileFactory,
35
+ ProfileFactoryWithOutput,
36
+ ProfileCapability,
37
+ RequestContext,
38
+ Cache,
39
+ } from '@reactionary/core';
40
+ import { CapabilitiesSchema } from '@reactionary/core';
41
+ import type { MedusaConfiguration } from './configuration.schema.js';
42
+ import type { MedusaAPI } from '../core/client.js';
43
+ import * as z from 'zod';
44
+
45
+ const OverridableCapabilitySchema = z.looseObject({
46
+ enabled: z.boolean(),
47
+ factory: z.unknown().optional(),
48
+ capability: z.unknown().optional(),
49
+ });
50
+
51
+ const DirectCapabilitySchema = z.looseObject({
52
+ enabled: z.boolean(),
53
+ capability: z.unknown().optional(),
54
+ });
55
+
56
+ export const MedusaCapabilitiesSchema = CapabilitiesSchema.pick({
57
+ productSearch: true,
58
+ productRecommendations: true,
59
+ cart: true,
60
+ checkout: true,
61
+ category: true,
62
+ product: true,
63
+ price: true,
64
+ order: true,
65
+ orderSearch: true,
66
+ inventory: true,
67
+ identity: true,
68
+ profile: true,
69
+ productAssociations: true,
70
+ })
71
+ .extend({
72
+ product: OverridableCapabilitySchema.optional(),
73
+ productSearch: OverridableCapabilitySchema.optional(),
74
+ cart: OverridableCapabilitySchema.optional(),
75
+ checkout: OverridableCapabilitySchema.optional(),
76
+ category: OverridableCapabilitySchema.optional(),
77
+ price: OverridableCapabilitySchema.optional(),
78
+ order: OverridableCapabilitySchema.optional(),
79
+ orderSearch: OverridableCapabilitySchema.optional(),
80
+ inventory: OverridableCapabilitySchema.optional(),
81
+ identity: DirectCapabilitySchema.optional(),
82
+ profile: OverridableCapabilitySchema.optional(),
83
+ productAssociations: OverridableCapabilitySchema.optional(),
84
+ productRecommendations: DirectCapabilitySchema.optional(),
85
+ })
86
+ .partial();
87
+
88
+ export interface MedusaCapabilityFactoryArgs {
89
+ cache: Cache;
90
+ context: RequestContext;
91
+ config: MedusaConfiguration;
92
+ medusaApi: MedusaAPI;
93
+ }
94
+
95
+ export interface MedusaFactoryCapabilityArgs<TFactory>
96
+ extends MedusaCapabilityFactoryArgs {
97
+ factory: TFactory;
98
+ }
99
+
100
+ export interface MedusaCapabilityConfig<TFactory, TCapability> {
101
+ enabled: boolean;
102
+ factory?: TFactory;
103
+ capability?: (args: MedusaFactoryCapabilityArgs<TFactory>) => TCapability;
104
+ }
105
+
106
+ export interface MedusaDirectCapabilityConfig<TCapability> {
107
+ enabled: boolean;
108
+ capability?: (args: MedusaCapabilityFactoryArgs) => TCapability;
109
+ }
110
+
111
+ export type MedusaProductCapabilityConfig = MedusaCapabilityConfig<
112
+ ProductFactoryWithOutput<ProductFactory>,
113
+ ProductCapability
114
+ >;
115
+
116
+ export type MedusaProductSearchCapabilityConfig = MedusaCapabilityConfig<
117
+ ProductSearchFactoryWithOutput<ProductSearchFactory>,
118
+ ProductSearchCapability
119
+ >;
120
+
121
+ export type MedusaCartCapabilityConfig = MedusaCapabilityConfig<
122
+ CartFactoryWithOutput<CartFactory>,
123
+ CartCapability
124
+ >;
125
+
126
+ export type MedusaCheckoutCapabilityConfig = MedusaCapabilityConfig<
127
+ CheckoutFactoryWithOutput<CheckoutFactory>,
128
+ CheckoutCapability
129
+ >;
130
+
131
+ export type MedusaCategoryCapabilityConfig = MedusaCapabilityConfig<
132
+ CategoryFactoryWithOutput<CategoryFactory>,
133
+ CategoryCapability
134
+ >;
135
+
136
+ export type MedusaPriceCapabilityConfig = MedusaCapabilityConfig<
137
+ PriceFactoryWithOutput<PriceFactory>,
138
+ PriceCapability
139
+ >;
140
+
141
+ export type MedusaOrderCapabilityConfig = MedusaCapabilityConfig<
142
+ OrderFactoryWithOutput<OrderFactory>,
143
+ OrderCapability
144
+ >;
145
+
146
+ export type MedusaOrderSearchCapabilityConfig = MedusaCapabilityConfig<
147
+ OrderSearchFactoryWithOutput<OrderSearchFactory>,
148
+ OrderSearchCapability
149
+ >;
150
+
151
+ export type MedusaInventoryCapabilityConfig = MedusaCapabilityConfig<
152
+ InventoryFactoryWithOutput<InventoryFactory>,
153
+ InventoryCapability
154
+ >;
155
+
156
+ export type MedusaIdentityCapabilityConfig =
157
+ MedusaDirectCapabilityConfig<IdentityCapability>;
158
+
159
+ export type MedusaProfileCapabilityConfig = MedusaCapabilityConfig<
160
+ ProfileFactoryWithOutput<ProfileFactory>,
161
+ ProfileCapability
162
+ >;
163
+
164
+ export type MedusaProductAssociationsCapabilityConfig = MedusaCapabilityConfig<
165
+ ProductAssociationsFactoryWithOutput<ProductAssociationsFactory>,
166
+ ProductAssociationsCapability
167
+ >;
168
+
169
+ export type MedusaProductRecommendationsCapabilityConfig =
170
+ MedusaDirectCapabilityConfig<ProductRecommendationsCapability>;
171
+
172
+ export type MedusaCapabilities<
173
+ TProductFactory extends ProductFactory = ProductFactory,
174
+ TProductCapability extends ProductCapability = ProductCapability,
175
+ TProductSearchFactory extends ProductSearchFactory = ProductSearchFactory,
176
+ TProductSearchCapability extends ProductSearchCapability = ProductSearchCapability,
177
+ TCartFactory extends CartFactory = CartFactory,
178
+ TCartCapability extends CartCapability = CartCapability,
179
+ TCheckoutFactory extends CheckoutFactory = CheckoutFactory,
180
+ TCheckoutCapability extends CheckoutCapability = CheckoutCapability,
181
+ TCategoryFactory extends CategoryFactory = CategoryFactory,
182
+ TCategoryCapability extends CategoryCapability = CategoryCapability,
183
+ TPriceFactory extends PriceFactory = PriceFactory,
184
+ TPriceCapability extends PriceCapability = PriceCapability,
185
+ TOrderFactory extends OrderFactory = OrderFactory,
186
+ TOrderCapability extends OrderCapability = OrderCapability,
187
+ TOrderSearchFactory extends OrderSearchFactory = OrderSearchFactory,
188
+ TOrderSearchCapability extends OrderSearchCapability = OrderSearchCapability,
189
+ TInventoryFactory extends InventoryFactory = InventoryFactory,
190
+ TInventoryCapability extends InventoryCapability = InventoryCapability,
191
+ TIdentityCapability extends IdentityCapability = IdentityCapability,
192
+ TProfileFactory extends ProfileFactory = ProfileFactory,
193
+ TProfileCapability extends ProfileCapability = ProfileCapability,
194
+ TProductAssociationsFactory extends ProductAssociationsFactory = ProductAssociationsFactory,
195
+ TProductAssociationsCapability extends ProductAssociationsCapability = ProductAssociationsCapability,
196
+ TProductRecommendationsCapability extends ProductRecommendationsCapability = ProductRecommendationsCapability,
197
+ > = {
198
+ product?: MedusaCapabilityConfig<ProductFactoryWithOutput<TProductFactory>, TProductCapability>;
199
+ productSearch?: MedusaCapabilityConfig<
200
+ ProductSearchFactoryWithOutput<TProductSearchFactory>,
201
+ TProductSearchCapability
202
+ >;
203
+ cart?: MedusaCapabilityConfig<CartFactoryWithOutput<TCartFactory>, TCartCapability>;
204
+ checkout?: MedusaCapabilityConfig<
205
+ CheckoutFactoryWithOutput<TCheckoutFactory>,
206
+ TCheckoutCapability
207
+ >;
208
+ category?: MedusaCapabilityConfig<
209
+ CategoryFactoryWithOutput<TCategoryFactory>,
210
+ TCategoryCapability
211
+ >;
212
+ price?: MedusaCapabilityConfig<PriceFactoryWithOutput<TPriceFactory>, TPriceCapability>;
213
+ order?: MedusaCapabilityConfig<OrderFactoryWithOutput<TOrderFactory>, TOrderCapability>;
214
+ orderSearch?: MedusaCapabilityConfig<
215
+ OrderSearchFactoryWithOutput<TOrderSearchFactory>,
216
+ TOrderSearchCapability
217
+ >;
218
+ inventory?: MedusaCapabilityConfig<
219
+ InventoryFactoryWithOutput<TInventoryFactory>,
220
+ TInventoryCapability
221
+ >;
222
+ identity?: MedusaDirectCapabilityConfig<TIdentityCapability>;
223
+ profile?: MedusaCapabilityConfig<ProfileFactoryWithOutput<TProfileFactory>, TProfileCapability>;
224
+ productAssociations?: MedusaCapabilityConfig<
225
+ ProductAssociationsFactoryWithOutput<TProductAssociationsFactory>,
226
+ TProductAssociationsCapability
227
+ >;
228
+ productRecommendations?: MedusaDirectCapabilityConfig<TProductRecommendationsCapability>;
229
+ };
230
+
231
+ export type ParsedMedusaCapabilities = z.infer<typeof MedusaCapabilitiesSchema>;
@@ -1,8 +1,18 @@
1
1
 
2
- import { NoOpCache, createInitialRequestContext, unwrapValue, type Cart, type CartMutationItemAdd, type RequestContext } from '@reactionary/core';
2
+ import {
3
+ CartIdentifierSchema,
4
+ CartSchema,
5
+ NoOpCache,
6
+ createInitialRequestContext,
7
+ unwrapValue,
8
+ type Cart,
9
+ type CartMutationItemAdd,
10
+ type RequestContext,
11
+ } from '@reactionary/core';
3
12
  import { assert, beforeEach, describe, expect, it } from 'vitest';
4
13
  import { MedusaAPI } from '../core/client.js';
5
- import { MedusaCartProvider } from '../providers/cart.provider.js';
14
+ import { MedusaCartCapability } from '../capabilities/cart.capability.js';
15
+ import { MedusaCartFactory } from '../factories/cart/cart.factory.js';
6
16
  import { getMedusaTestConfiguration } from './test-utils.js';
7
17
 
8
18
 
@@ -13,13 +23,19 @@ const testData = {
13
23
 
14
24
 
15
25
  describe('Medusa Cart Provider', () => {
16
- let provider: MedusaCartProvider;
26
+ let provider: MedusaCartCapability;
17
27
  let reqCtx: RequestContext;
18
28
 
19
29
  beforeEach( () => {
20
30
  reqCtx = createInitialRequestContext();
21
31
  const client = new MedusaAPI(getMedusaTestConfiguration(), reqCtx);
22
- provider = new MedusaCartProvider(getMedusaTestConfiguration(), new NoOpCache(), reqCtx, client);
32
+ provider = new MedusaCartCapability(
33
+ getMedusaTestConfiguration(),
34
+ new NoOpCache(),
35
+ reqCtx,
36
+ client,
37
+ new MedusaCartFactory(CartSchema, CartIdentifierSchema),
38
+ );
23
39
  });
24
40
 
25
41
  describe('anonymous sessions', () => {
@@ -1,11 +1,13 @@
1
1
  import 'dotenv/config';
2
2
  import type { RequestContext } from '@reactionary/core';
3
3
  import {
4
+ CategoryPaginatedResultSchema,
4
5
  CategorySchema,
5
6
  NoOpCache,
6
7
  createInitialRequestContext,
7
8
  } from '@reactionary/core';
8
- import { MedusaCategoryProvider } from '../providers/category.provider.js';
9
+ import { MedusaCategoryCapability } from '../capabilities/category.capability.js';
10
+ import { MedusaCategoryFactory } from '../factories/category/category.factory.js';
9
11
  import { getMedusaTestConfiguration } from './test-utils.js';
10
12
  import { describe, expect, it, beforeEach, assert } from 'vitest';
11
13
  import { MedusaAPI } from '../core/client.js';
@@ -34,7 +36,7 @@ const testData = {
34
36
  };
35
37
 
36
38
  describe('Medusa Category Provider', () => {
37
- let provider: MedusaCategoryProvider;
39
+ let provider: MedusaCategoryCapability;
38
40
  let reqCtx: RequestContext;
39
41
 
40
42
  beforeEach(() => {
@@ -42,11 +44,12 @@ describe('Medusa Category Provider', () => {
42
44
  const config = getMedusaTestConfiguration();
43
45
  const client = new MedusaAPI(config, reqCtx);
44
46
 
45
- provider = new MedusaCategoryProvider(
47
+ provider = new MedusaCategoryCapability(
46
48
  config,
47
49
  new NoOpCache(),
48
50
  reqCtx,
49
- client
51
+ client,
52
+ new MedusaCategoryFactory(CategorySchema, CategoryPaginatedResultSchema),
50
53
  );
51
54
  });
52
55
 
@@ -23,15 +23,15 @@ function createMedusaClient(config: MedusaConfiguration, reqCtx: RequestContext)
23
23
  .withCache(new NoOpCache())
24
24
  .withCapability(
25
25
  withMedusaCapabilities(config, {
26
- cart: true,
27
- product: true,
28
- category: true,
29
- checkout: true,
30
- identity: true,
31
- inventory: true,
32
- order: true,
33
- price: true,
34
- productSearch: true,
26
+ cart: { enabled: true },
27
+ product: { enabled: true },
28
+ category: { enabled: true },
29
+ checkout: { enabled: true },
30
+ identity: { enabled: true },
31
+ inventory: { enabled: true },
32
+ order: { enabled: true },
33
+ price: { enabled: true },
34
+ productSearch: { enabled: true },
35
35
  })
36
36
  );
37
37
 
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, assert } from 'vitest';
2
- import { MedusaIdentityProvider } from '../providers/identity.provider.js';
2
+ import { MedusaIdentityCapability } from '../capabilities/identity.capability.js';
3
3
  import { IdentitySchema, NoOpCache, createInitialRequestContext, type RequestContext } from '@reactionary/core';
4
4
  import { getMedusaTestConfiguration } from './test-utils.js';
5
5
  import { MedusaAPI } from '../core/client.js';
@@ -12,7 +12,7 @@ const testData = {
12
12
  };
13
13
 
14
14
  describe('Medusa Identity Provider', () => {
15
- let provider: MedusaIdentityProvider;
15
+ let provider: MedusaIdentityCapability;
16
16
  let reqCtx: RequestContext;
17
17
 
18
18
  beforeEach(() => {
@@ -20,7 +20,7 @@ describe('Medusa Identity Provider', () => {
20
20
  const config = getMedusaTestConfiguration();
21
21
  const client = new MedusaAPI(config, reqCtx);
22
22
 
23
- provider = new MedusaIdentityProvider(config, new NoOpCache(), reqCtx, client);
23
+ provider = new MedusaIdentityCapability(config, new NoOpCache(), reqCtx, client);
24
24
  });
25
25
 
26
26
  it('should return anonymous identity when not authenticated', async () => {
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, assert } from 'vitest';
2
- import { MedusaInventoryProvider } from '../providers/inventory.provider.js';
2
+ import { MedusaInventoryCapability } from '../capabilities/inventory.capability.js';
3
3
  import {
4
4
  InventorySchema,
5
5
  NoOpCache,
@@ -8,6 +8,7 @@ import {
8
8
  } from '@reactionary/core';
9
9
  import { getMedusaTestConfiguration } from './test-utils.js';
10
10
  import { MedusaAPI } from '../core/client.js';
11
+ import { MedusaInventoryFactory } from '../factories/inventory/inventory.factory.js';
11
12
 
12
13
  const testData = {
13
14
  skuInStock: ' 4007249524126',
@@ -17,7 +18,7 @@ const testData = {
17
18
 
18
19
  // FIXME: Currently broken in terms of actually looking up anything...
19
20
  describe('Medusa Inventory Provider', () => {
20
- let provider: MedusaInventoryProvider;
21
+ let provider: MedusaInventoryCapability;
21
22
  let reqCtx: RequestContext;
22
23
 
23
24
  beforeEach(() => {
@@ -25,11 +26,12 @@ describe('Medusa Inventory Provider', () => {
25
26
  const config = getMedusaTestConfiguration();
26
27
  const client = new MedusaAPI(config, reqCtx);
27
28
 
28
- provider = new MedusaInventoryProvider(
29
+ provider = new MedusaInventoryCapability(
29
30
  config,
30
31
  new NoOpCache(),
31
32
  reqCtx,
32
- client
33
+ client,
34
+ new MedusaInventoryFactory(InventorySchema),
33
35
  );
34
36
  });
35
37
 
@@ -1,6 +1,8 @@
1
1
  import {
2
+ CartIdentifierSchema,
2
3
  CartSchema,
3
4
  NoOpCache,
5
+ ProductSearchResultSchema,
4
6
  ProductSearchQueryByTermSchema,
5
7
  ProductSearchResultItemSchema,
6
8
  createInitialRequestContext,
@@ -8,10 +10,12 @@ import {
8
10
  type RequestContext,
9
11
  } from '@reactionary/core';
10
12
  import { assert, beforeAll, beforeEach, describe, expect, it } from 'vitest';
11
- import { MedusaCartProvider } from '../providers/cart.provider.js';
12
- import { MedusaSearchProvider } from '../providers/product-search.provider.js';
13
+ import { MedusaCartCapability } from '../capabilities/cart.capability.js';
14
+ import { MedusaProductSearchCapability } from '../capabilities/product-search.capability.js';
13
15
  import { getMedusaTestConfiguration } from './test-utils.js';
14
16
  import { MedusaAPI } from '../core/client.js';
17
+ import { MedusaCartFactory } from '../factories/cart/cart.factory.js';
18
+ import { MedusaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
15
19
 
16
20
  /**
17
21
  const testData = {
@@ -21,24 +25,26 @@ const testData = {
21
25
  */
22
26
 
23
27
  describe('Medusa Cart Provider - Large Scenarios', () => {
24
- let provider: MedusaCartProvider;
25
- let searchProvider: MedusaSearchProvider;
28
+ let provider: MedusaCartCapability;
29
+ let searchProvider: MedusaProductSearchCapability;
26
30
  let reqCtx: RequestContext;
27
31
 
28
32
  beforeEach(() => {
29
33
  reqCtx = createInitialRequestContext();
30
34
  const client = new MedusaAPI(getMedusaTestConfiguration(), reqCtx);
31
- provider = new MedusaCartProvider(
35
+ provider = new MedusaCartCapability(
32
36
  getMedusaTestConfiguration(),
33
37
  new NoOpCache(),
34
38
  reqCtx,
35
- client
39
+ client,
40
+ new MedusaCartFactory(CartSchema, CartIdentifierSchema),
36
41
  );
37
- searchProvider = new MedusaSearchProvider(
42
+ searchProvider = new MedusaProductSearchCapability(
38
43
  getMedusaTestConfiguration(),
39
44
  new NoOpCache(),
40
45
  reqCtx,
41
- client
46
+ client,
47
+ new MedusaProductSearchFactory(ProductSearchResultSchema),
42
48
  );
43
49
  });
44
50