@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
@@ -1,36 +1,41 @@
1
1
  import {
2
+ type Cache,
3
+ type NotFoundError,
4
+ type ProductFactory,
5
+ type ProductFactoryOutput,
6
+ type ProductFactoryWithOutput,
2
7
  type ProductQueryById,
3
- type ProductQueryBySlug,
4
- type RequestContext,
5
- type Cache as ReactinaryCache,
6
- ProductProvider,
7
- Reactionary,
8
- type ProductQueryBySKU,
9
- type Product,
10
8
  ProductQueryByIdSchema,
11
- ProductSchema,
12
- ProductQueryBySlugSchema,
9
+ type ProductQueryBySKU,
13
10
  ProductQueryBySKUSchema,
11
+ type ProductQueryBySlug,
12
+ ProductQueryBySlugSchema,
13
+ ProductCapability,
14
+ ProductSchema,
15
+ type RequestContext,
14
16
  type Result,
15
- error,
17
+ Reactionary,
16
18
  success,
17
- type NotFoundError,
18
19
  } from '@reactionary/core';
19
- import type * as z from 'zod';
20
20
  import type { FakeConfiguration } from '../schema/configuration.schema.js';
21
21
  import { base, en, Faker } from '@faker-js/faker';
22
+ import type { FakeProductFactory } from '../factories/product/product.factory.js';
22
23
 
23
- export class FakeProductProvider extends ProductProvider {
24
+ export class FakeProductCapability<
25
+ TFactory extends ProductFactory = FakeProductFactory,
26
+ > extends ProductCapability<ProductFactoryOutput<TFactory>> {
24
27
  protected config: FakeConfiguration;
28
+ protected factory: ProductFactoryWithOutput<TFactory>;
25
29
 
26
30
  constructor(
27
31
  config: FakeConfiguration,
28
- cache: ReactinaryCache,
29
- context: RequestContext
32
+ cache: Cache,
33
+ context: RequestContext,
34
+ factory: ProductFactoryWithOutput<TFactory>,
30
35
  ) {
31
36
  super(cache, context);
32
-
33
37
  this.config = config;
38
+ this.factory = factory;
34
39
  }
35
40
 
36
41
  @Reactionary({
@@ -42,9 +47,9 @@ export class FakeProductProvider extends ProductProvider {
42
47
  localeDependentCaching: true,
43
48
  })
44
49
  public override async getById(
45
- payload: ProductQueryById
46
- ): Promise<Result<Product>> {
47
- return success(this.parseSingle(payload.identifier.key));
50
+ payload: ProductQueryById,
51
+ ): Promise<Result<ProductFactoryOutput<TFactory>>> {
52
+ return success(this.composeSingle(payload.identifier.key));
48
53
  }
49
54
 
50
55
  @Reactionary({
@@ -52,9 +57,9 @@ export class FakeProductProvider extends ProductProvider {
52
57
  outputSchema: ProductSchema,
53
58
  })
54
59
  public override async getBySlug(
55
- payload: ProductQueryBySlug
56
- ): Promise<Result<Product, NotFoundError>> {
57
- return success(this.parseSingle(payload.slug));
60
+ payload: ProductQueryBySlug,
61
+ ): Promise<Result<ProductFactoryOutput<TFactory>, NotFoundError>> {
62
+ return success(this.composeSingle(payload.slug));
58
63
  }
59
64
 
60
65
  @Reactionary({
@@ -62,26 +67,23 @@ export class FakeProductProvider extends ProductProvider {
62
67
  outputSchema: ProductSchema,
63
68
  })
64
69
  public override async getBySKU(
65
- payload: ProductQueryBySKU
66
- ): Promise<Result<Product>> {
67
- return success(this.parseSingle(payload.variant.sku));
70
+ payload: ProductQueryBySKU,
71
+ ): Promise<Result<ProductFactoryOutput<TFactory>>> {
72
+ return success(this.composeSingle(payload.variant.sku));
68
73
  }
69
74
 
70
- protected parseSingle(body: string): Product {
75
+ protected composeSingle(body: string): ProductFactoryOutput<TFactory> {
71
76
  const generator = new Faker({
72
77
  seed: 42,
73
78
  locale: [en, base],
74
79
  });
75
80
 
76
- const key = body;
77
-
78
- // Merge the generated data into the model
79
81
  const result = {
80
82
  identifier: {
81
- key: key,
83
+ key: body,
82
84
  },
83
85
  name: generator.commerce.productName(),
84
- slug: key,
86
+ slug: body,
85
87
  brand: '',
86
88
  longDescription: '',
87
89
  mainVariant: {
@@ -103,8 +105,8 @@ export class FakeProductProvider extends ProductProvider {
103
105
  published: true,
104
106
  sharedAttributes: [],
105
107
  variants: [],
106
- } satisfies Product;
108
+ };
107
109
 
108
- return result;
110
+ return this.factory.parseProduct(this.context, result);
109
111
  }
110
112
  }
@@ -0,0 +1,154 @@
1
+ import {
2
+ AddressSchema,
3
+ ProfileMutationAddShippingAddressSchema,
4
+ ProfileMutationMakeShippingAddressDefaultSchema,
5
+ ProfileMutationRemoveShippingAddressSchema,
6
+ ProfileMutationSetBillingAddressSchema,
7
+ ProfileMutationUpdateSchema,
8
+ ProfileMutationUpdateShippingAddressSchema,
9
+ ProfileCapability,
10
+ ProfileQueryByIdSchema,
11
+ ProfileSchema,
12
+ Reactionary,
13
+ type Cache,
14
+ type Address,
15
+ type IdentityIdentifier,
16
+ type NotFoundError,
17
+ type Profile,
18
+ type ProfileFactory,
19
+ type ProfileFactoryOutput,
20
+ type ProfileFactoryWithOutput,
21
+ type ProfileMutationAddShippingAddress,
22
+ type ProfileMutationMakeShippingAddressDefault,
23
+ type ProfileMutationRemoveShippingAddress,
24
+ type ProfileMutationSetBillingAddress,
25
+ type ProfileMutationUpdate,
26
+ type ProfileMutationUpdateShippingAddress,
27
+ type ProfileQuerySelf,
28
+ type RequestContext,
29
+ type Result,
30
+ success,
31
+ } from '@reactionary/core';
32
+ import type { FakeConfiguration } from '../schema/configuration.schema.js';
33
+ import { base, en, Faker } from '@faker-js/faker';
34
+ import type { FakeProfileFactory } from '../factories/profile/profile.factory.js';
35
+
36
+ export class FakeProfileCapability<
37
+ TFactory extends ProfileFactory = FakeProfileFactory,
38
+ > extends ProfileCapability<ProfileFactoryOutput<TFactory>> {
39
+ protected config: FakeConfiguration;
40
+ protected factory: ProfileFactoryWithOutput<TFactory>;
41
+ private generator: Faker;
42
+
43
+ constructor(
44
+ config: FakeConfiguration,
45
+ cache: Cache,
46
+ context: RequestContext,
47
+ factory: ProfileFactoryWithOutput<TFactory>,
48
+ ) {
49
+ super(cache, context);
50
+ this.generator = new Faker({
51
+ locale: [en, base],
52
+ seed: config.seeds.product,
53
+ });
54
+ this.config = config;
55
+ this.factory = factory;
56
+ }
57
+
58
+ @Reactionary({ inputSchema: ProfileQueryByIdSchema, outputSchema: ProfileSchema })
59
+ public override async getById(
60
+ payload: ProfileQuerySelf,
61
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
62
+ return success(this.composeProfile(payload.identifier));
63
+ }
64
+
65
+ @Reactionary({ inputSchema: ProfileMutationUpdateSchema, outputSchema: ProfileSchema })
66
+ public override async update(
67
+ payload: ProfileMutationUpdate,
68
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
69
+ return success(this.composeProfile(payload.identifier));
70
+ }
71
+
72
+ @Reactionary({
73
+ inputSchema: ProfileMutationAddShippingAddressSchema,
74
+ outputSchema: ProfileSchema,
75
+ })
76
+ public override async addShippingAddress(
77
+ payload: ProfileMutationAddShippingAddress,
78
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
79
+ return success(this.composeProfile(payload.identifier));
80
+ }
81
+
82
+ @Reactionary({
83
+ inputSchema: ProfileMutationUpdateShippingAddressSchema,
84
+ outputSchema: ProfileSchema,
85
+ })
86
+ public override async updateShippingAddress(
87
+ payload: ProfileMutationUpdateShippingAddress,
88
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
89
+ return success(this.composeProfile(payload.identifier));
90
+ }
91
+
92
+ @Reactionary({
93
+ inputSchema: ProfileMutationRemoveShippingAddressSchema,
94
+ outputSchema: ProfileSchema,
95
+ })
96
+ public override async removeShippingAddress(
97
+ payload: ProfileMutationRemoveShippingAddress,
98
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
99
+ return success(this.composeProfile(payload.identifier));
100
+ }
101
+
102
+ @Reactionary({
103
+ inputSchema: ProfileMutationMakeShippingAddressDefaultSchema,
104
+ outputSchema: ProfileSchema,
105
+ })
106
+ public override async makeShippingAddressDefault(
107
+ payload: ProfileMutationMakeShippingAddressDefault,
108
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
109
+ return success(this.composeProfile(payload.identifier));
110
+ }
111
+
112
+ @Reactionary({
113
+ inputSchema: ProfileMutationSetBillingAddressSchema,
114
+ outputSchema: ProfileSchema,
115
+ })
116
+ public override async setBillingAddress(
117
+ payload: ProfileMutationSetBillingAddress,
118
+ ): Promise<Result<ProfileFactoryOutput<TFactory>, NotFoundError>> {
119
+ return success(this.composeProfile(payload.identifier));
120
+ }
121
+
122
+ protected composeProfile(identifier: IdentityIdentifier): ProfileFactoryOutput<TFactory> {
123
+ const baseProfile = {
124
+ identifier,
125
+ email: this.generator.internet.email(),
126
+ phone: this.generator.phone.number(),
127
+ emailVerified: true,
128
+ phoneVerified: true,
129
+ createdAt: this.generator.date.past().toISOString(),
130
+ updatedAt: this.generator.date.recent().toISOString(),
131
+ billingAddress: this.createEmptyAddress(),
132
+ shippingAddress: this.createEmptyAddress(),
133
+ alternateShippingAddresses: [],
134
+ } satisfies Profile;
135
+
136
+ return this.factory.parseProfile(this.context, baseProfile);
137
+ }
138
+
139
+ protected createEmptyAddress(): Address {
140
+ return AddressSchema.parse({
141
+ identifier: {
142
+ nickName: this.generator.person.firstName().toLowerCase(),
143
+ },
144
+ firstName: this.generator.person.firstName(),
145
+ lastName: this.generator.person.lastName(),
146
+ streetAddress: this.generator.location.street(),
147
+ streetNumber: this.generator.location.buildingNumber(),
148
+ city: this.generator.location.city(),
149
+ region: this.generator.location.state(),
150
+ postalCode: this.generator.location.zipCode(),
151
+ countryCode: this.generator.location.countryCode('alpha-2'),
152
+ });
153
+ }
154
+ }
@@ -0,0 +1,72 @@
1
+ import type {
2
+ Cache,
3
+ FulfillmentCenterIdentifier,
4
+ RequestContext,
5
+ Result,
6
+ StoreFactory,
7
+ StoreFactoryOutput,
8
+ StoreFactoryWithOutput,
9
+ StoreIdentifier,
10
+ StoreQueryByProximity,
11
+ } from '@reactionary/core';
12
+ import {
13
+ Reactionary,
14
+ StoreCapability,
15
+ StoreQueryByProximitySchema,
16
+ StoreSchema,
17
+ success,
18
+ } from '@reactionary/core';
19
+ import * as z from 'zod';
20
+ import type { FakeConfiguration } from '../schema/configuration.schema.js';
21
+ import { base, en, Faker } from '@faker-js/faker';
22
+ import type { FakeStoreFactory } from '../factories/store/store.factory.js';
23
+
24
+ export class FakeStoreCapability<
25
+ TFactory extends StoreFactory = FakeStoreFactory,
26
+ > extends StoreCapability<StoreFactoryOutput<TFactory>> {
27
+ protected config: FakeConfiguration;
28
+ protected factory: StoreFactoryWithOutput<TFactory>;
29
+
30
+ constructor(
31
+ config: FakeConfiguration,
32
+ cache: Cache,
33
+ context: RequestContext,
34
+ factory: StoreFactoryWithOutput<TFactory>,
35
+ ) {
36
+ super(cache, context);
37
+
38
+ this.config = config;
39
+ this.factory = factory;
40
+ }
41
+
42
+ @Reactionary({
43
+ inputSchema: StoreQueryByProximitySchema,
44
+ outputSchema: z.array(StoreSchema),
45
+ })
46
+ public override async queryByProximity(
47
+ payload: StoreQueryByProximity,
48
+ ): Promise<Result<StoreFactoryOutput<TFactory>[]>> {
49
+ const generator = new Faker({
50
+ seed: 42,
51
+ locale: [en, base],
52
+ });
53
+
54
+ const results: StoreFactoryOutput<TFactory>[] = [];
55
+
56
+ for (let i = 0; i < payload.limit; i++) {
57
+ results.push(
58
+ this.factory.parseStore(this.context, {
59
+ identifier: {
60
+ key: `${i}`,
61
+ } satisfies StoreIdentifier,
62
+ fulfillmentCenter: {
63
+ key: `${i}`,
64
+ } satisfies FulfillmentCenterIdentifier,
65
+ name: generator.company.name(),
66
+ }),
67
+ );
68
+ }
69
+
70
+ return success(results);
71
+ }
72
+ }
@@ -0,0 +1,274 @@
1
+ import type { Cache as ReactinaryCache, RequestContext } from '@reactionary/core';
2
+ import {
3
+ CartIdentifierSchema as CoreCartIdentifierSchema,
4
+ CartSchema as CoreCartSchema,
5
+ CategoryPaginatedResultSchema as CoreCategoryPaginatedResultSchema,
6
+ CategorySchema as CoreCategorySchema,
7
+ CheckoutSchema as CoreCheckoutSchema,
8
+ IdentitySchema as CoreIdentitySchema,
9
+ InventorySchema as CoreInventorySchema,
10
+ OrderSchema as CoreOrderSchema,
11
+ OrderSearchResultSchema as CoreOrderSearchResultSchema,
12
+ PaymentMethodSchema as CorePaymentMethodSchema,
13
+ PriceSchema as CorePriceSchema,
14
+ ProductAssociationSchema as CoreProductAssociationSchema,
15
+ ProductRatingSummarySchema as CoreProductRatingSummarySchema,
16
+ ProductReviewPaginatedResultSchema as CoreProductReviewPaginatedResultSchema,
17
+ ProductReviewSchema as CoreProductReviewSchema,
18
+ ProductSchema as CoreProductSchema,
19
+ ProductSearchResultSchema as CoreProductSearchResultSchema,
20
+ ProfileSchema as CoreProfileSchema,
21
+ ShippingMethodSchema as CoreShippingMethodSchema,
22
+ StoreSchema as CoreStoreSchema,
23
+ } from '@reactionary/core';
24
+ import { FakeProductCapability } from '../capabilities/product.capability.js';
25
+ import { FakeProductSearchCapability } from '../capabilities/product-search.capability.js';
26
+ import type { FakeConfiguration } from '../schema/configuration.schema.js';
27
+ import type { FakeCapabilities } from '../schema/capabilities.schema.js';
28
+ import { FakeCapabilitiesSchema } from '../schema/capabilities.schema.js';
29
+ import { FakeCategoryCapability } from '../capabilities/category.capability.js';
30
+ import {
31
+ FakeCartCapability,
32
+ FakeIdentityCapability,
33
+ FakeInventoryCapability,
34
+ FakePriceCapability,
35
+ FakeStoreCapability,
36
+ } from '../capabilities/index.js';
37
+ import { FakeCheckoutCapability } from '../capabilities/checkout.capability.js';
38
+ import { FakeOrderSearchCapability } from '../capabilities/order-search.capability.js';
39
+ import { FakeOrderCapability } from '../capabilities/order.capability.js';
40
+ import { FakeProfileCapability } from '../capabilities/profile.capability.js';
41
+ import { FakeProductReviewsCapability } from '../capabilities/product-reviews.capability.js';
42
+ import { FakeProductAssociationsCapability } from '../capabilities/product-associations.capability.js';
43
+ import {
44
+ FakeCartFactory,
45
+ FakeCategoryFactory,
46
+ FakeCheckoutFactory,
47
+ FakeIdentityFactory,
48
+ FakeInventoryFactory,
49
+ FakeOrderFactory,
50
+ FakeOrderSearchFactory,
51
+ FakePriceFactory,
52
+ FakeProductAssociationsFactory,
53
+ FakeProductFactory,
54
+ FakeProductReviewsFactory,
55
+ FakeProductSearchFactory,
56
+ FakeProfileFactory,
57
+ FakeStoreFactory,
58
+ } from '../factories/index.js';
59
+ import {
60
+ type FakeClientFromCapabilities,
61
+ resolveCapabilityWithFactory,
62
+ } from './initialize.types.js';
63
+
64
+ export function withFakeCapabilities<T extends FakeCapabilities>(
65
+ configuration: FakeConfiguration,
66
+ capabilities: T,
67
+ ) {
68
+ return (
69
+ cache: ReactinaryCache,
70
+ context: RequestContext,
71
+ ): FakeClientFromCapabilities<T> => {
72
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
+ const client: any = {};
74
+ const caps = FakeCapabilitiesSchema.parse(capabilities);
75
+
76
+ const buildCapabilityArgs = <TFactory,>(factory: TFactory) => ({
77
+ cache,
78
+ context,
79
+ config: configuration,
80
+ factory,
81
+ });
82
+
83
+ if (caps.product?.enabled) {
84
+ client.product = resolveCapabilityWithFactory(
85
+ capabilities.product,
86
+ {
87
+ factory: new FakeProductFactory(CoreProductSchema),
88
+ capability: (args) =>
89
+ new FakeProductCapability(args.config, args.cache, args.context, args.factory),
90
+ },
91
+ buildCapabilityArgs,
92
+ );
93
+ }
94
+
95
+ if (caps.productSearch?.enabled) {
96
+ client.productSearch = resolveCapabilityWithFactory(
97
+ capabilities.productSearch,
98
+ {
99
+ factory: new FakeProductSearchFactory(CoreProductSearchResultSchema),
100
+ capability: (args) =>
101
+ new FakeProductSearchCapability(args.config, args.cache, args.context, args.factory),
102
+ },
103
+ buildCapabilityArgs,
104
+ );
105
+ }
106
+
107
+ if (caps.category?.enabled) {
108
+ client.category = resolveCapabilityWithFactory(
109
+ capabilities.category,
110
+ {
111
+ factory: new FakeCategoryFactory(
112
+ CoreCategorySchema,
113
+ CoreCategoryPaginatedResultSchema,
114
+ ),
115
+ capability: (args) =>
116
+ new FakeCategoryCapability(args.config, args.cache, args.context, args.factory),
117
+ },
118
+ buildCapabilityArgs,
119
+ );
120
+ }
121
+
122
+ if (caps.cart?.enabled) {
123
+ client.cart = resolveCapabilityWithFactory(
124
+ capabilities.cart,
125
+ {
126
+ factory: new FakeCartFactory(CoreCartSchema, CoreCartIdentifierSchema),
127
+ capability: (args) =>
128
+ new FakeCartCapability(args.config, args.cache, args.context, args.factory),
129
+ },
130
+ buildCapabilityArgs,
131
+ );
132
+ }
133
+
134
+ if (caps.inventory?.enabled) {
135
+ client.inventory = resolveCapabilityWithFactory(
136
+ capabilities.inventory,
137
+ {
138
+ factory: new FakeInventoryFactory(CoreInventorySchema),
139
+ capability: (args) =>
140
+ new FakeInventoryCapability(args.config, args.cache, args.context, args.factory),
141
+ },
142
+ buildCapabilityArgs,
143
+ );
144
+ }
145
+
146
+ if (caps.store?.enabled) {
147
+ client.store = resolveCapabilityWithFactory(
148
+ capabilities.store,
149
+ {
150
+ factory: new FakeStoreFactory(CoreStoreSchema),
151
+ capability: (args) =>
152
+ new FakeStoreCapability(args.config, args.cache, args.context, args.factory),
153
+ },
154
+ buildCapabilityArgs,
155
+ );
156
+ }
157
+
158
+ if (caps.price?.enabled) {
159
+ client.price = resolveCapabilityWithFactory(
160
+ capabilities.price,
161
+ {
162
+ factory: new FakePriceFactory(CorePriceSchema),
163
+ capability: (args) =>
164
+ new FakePriceCapability(args.config, args.cache, args.context, args.factory),
165
+ },
166
+ buildCapabilityArgs,
167
+ );
168
+ }
169
+
170
+ if (caps.identity?.enabled) {
171
+ client.identity = resolveCapabilityWithFactory(
172
+ capabilities.identity,
173
+ {
174
+ factory: new FakeIdentityFactory(CoreIdentitySchema),
175
+ capability: (args) =>
176
+ new FakeIdentityCapability(args.config, args.cache, args.context, args.factory),
177
+ },
178
+ buildCapabilityArgs,
179
+ );
180
+ }
181
+
182
+ if (caps.checkout?.enabled) {
183
+ client.checkout = resolveCapabilityWithFactory(
184
+ capabilities.checkout,
185
+ {
186
+ factory: new FakeCheckoutFactory(
187
+ CoreCheckoutSchema,
188
+ CoreShippingMethodSchema,
189
+ CorePaymentMethodSchema,
190
+ ),
191
+ capability: (args) =>
192
+ new FakeCheckoutCapability(args.config, args.cache, args.context, args.factory),
193
+ },
194
+ buildCapabilityArgs,
195
+ );
196
+ }
197
+
198
+ if (caps.orderSearch?.enabled) {
199
+ client.orderSearch = resolveCapabilityWithFactory(
200
+ capabilities.orderSearch,
201
+ {
202
+ factory: new FakeOrderSearchFactory(CoreOrderSearchResultSchema),
203
+ capability: (args) =>
204
+ new FakeOrderSearchCapability(args.config, args.cache, args.context, args.factory),
205
+ },
206
+ buildCapabilityArgs,
207
+ );
208
+ }
209
+
210
+ if (caps.order?.enabled) {
211
+ client.order = resolveCapabilityWithFactory(
212
+ capabilities.order,
213
+ {
214
+ factory: new FakeOrderFactory(CoreOrderSchema),
215
+ capability: (args) =>
216
+ new FakeOrderCapability(args.config, args.cache, args.context, args.factory),
217
+ },
218
+ buildCapabilityArgs,
219
+ );
220
+ }
221
+
222
+ if (caps.profile?.enabled) {
223
+ client.profile = resolveCapabilityWithFactory(
224
+ capabilities.profile,
225
+ {
226
+ factory: new FakeProfileFactory(CoreProfileSchema),
227
+ capability: (args) =>
228
+ new FakeProfileCapability(args.config, args.cache, args.context, args.factory),
229
+ },
230
+ buildCapabilityArgs,
231
+ );
232
+ }
233
+
234
+ if (caps.productReviews?.enabled) {
235
+ client.productReviews = resolveCapabilityWithFactory(
236
+ capabilities.productReviews,
237
+ {
238
+ factory: new FakeProductReviewsFactory(
239
+ CoreProductRatingSummarySchema,
240
+ CoreProductReviewSchema,
241
+ CoreProductReviewPaginatedResultSchema,
242
+ ),
243
+ capability: (args) =>
244
+ new FakeProductReviewsCapability(
245
+ args.config,
246
+ args.cache,
247
+ args.context,
248
+ args.factory,
249
+ ),
250
+ },
251
+ buildCapabilityArgs,
252
+ );
253
+ }
254
+
255
+ if (caps.productAssociations?.enabled) {
256
+ client.productAssociations = resolveCapabilityWithFactory(
257
+ capabilities.productAssociations,
258
+ {
259
+ factory: new FakeProductAssociationsFactory(CoreProductAssociationSchema),
260
+ capability: (args) =>
261
+ new FakeProductAssociationsCapability(
262
+ args.config,
263
+ args.cache,
264
+ args.context,
265
+ args.factory,
266
+ ),
267
+ },
268
+ buildCapabilityArgs,
269
+ );
270
+ }
271
+
272
+ return client;
273
+ };
274
+ }