@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,312 +0,0 @@
1
- import {
2
- ImageSchema,
3
- ProductAttributeIdentifierSchema,
4
- ProductAttributeSchema,
5
- ProductAttributeValueIdentifierSchema,
6
- ProductAttributeValueSchema,
7
- ProductProvider,
8
- ProductQueryByIdSchema,
9
- ProductQueryBySKUSchema,
10
- ProductQueryBySlugSchema,
11
- ProductSchema,
12
- Reactionary,
13
- success,
14
- error,
15
- } from '@reactionary/core';
16
- import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
17
- import type {
18
- ProductProjection,
19
- ProductVariant as CTProductVariant,
20
- Attribute as CTAttribute,
21
- } from '@commercetools/platform-sdk';
22
- import type {
23
- Product,
24
- ProductVariant,
25
- ProductQueryById,
26
- ProductQueryBySKU,
27
- ProductQueryBySlug,
28
- ProductVariantIdentifier,
29
- RequestContext,
30
- ProductAttribute,
31
- ProductAttributeIdentifier,
32
- ProductAttributeValue,
33
- ProductAttributeValueIdentifier,
34
- ProductIdentifier,
35
- ProductVariantOption,
36
- ProductOptionIdentifier,
37
- Result,
38
- } from '@reactionary/core';
39
- import type { Cache, Image } from '@reactionary/core';
40
- import type { CommercetoolsAPI } from '../core/client.js';
41
- import type { NotFoundError } from '@reactionary/core';
42
-
43
- export class CommercetoolsProductProvider extends ProductProvider {
44
- protected config: CommercetoolsConfiguration;
45
- protected commercetools: CommercetoolsAPI;
46
-
47
- constructor(
48
- config: CommercetoolsConfiguration,
49
- cache: Cache,
50
- context: RequestContext,
51
- commercetools: CommercetoolsAPI
52
- ) {
53
- super(cache, context);
54
-
55
- this.config = config;
56
- this.commercetools = commercetools;
57
- }
58
-
59
- protected async getClient() {
60
- const client = await this.commercetools.getClient();
61
- return client
62
- .withProjectKey({ projectKey: this.config.projectKey })
63
- .productProjections();
64
- }
65
-
66
- @Reactionary({
67
- inputSchema: ProductQueryByIdSchema,
68
- outputSchema: ProductSchema,
69
- cache: true,
70
- cacheTimeToLiveInSeconds: 300,
71
- currencyDependentCaching: false,
72
- localeDependentCaching: true
73
- })
74
- public override async getById(
75
- payload: ProductQueryById
76
- ): Promise<Result<Product>> {
77
- const client = await this.getClient();
78
- const remote = await client
79
- .withKey({ key: payload.identifier.key })
80
- .get()
81
- .execute();
82
- const value = this.parseSingle(remote.body);
83
-
84
- return success(value);
85
- }
86
-
87
- @Reactionary({
88
- inputSchema: ProductQueryBySlugSchema,
89
- outputSchema: ProductSchema,
90
- cache: true,
91
- cacheTimeToLiveInSeconds: 300,
92
- currencyDependentCaching: false,
93
- localeDependentCaching: true
94
- })
95
- public override async getBySlug(
96
- payload: ProductQueryBySlug
97
- ): Promise<Result<Product, NotFoundError>> {
98
- const client = await this.getClient();
99
-
100
- const remote = await client
101
- .get({
102
- queryArgs: {
103
- // FIXME: Hardcoded locale
104
- where: 'slug(en = :slug)',
105
- 'var.slug': payload.slug,
106
- },
107
- })
108
- .execute();
109
-
110
- if (remote.body.count === 0) {
111
- return error<NotFoundError>({
112
- type: 'NotFound',
113
- identifier: payload.slug,
114
- });
115
- }
116
- const result = this.parseSingle(remote.body.results[0]);
117
-
118
- return success(result);
119
- }
120
-
121
- @Reactionary({
122
- inputSchema: ProductQueryBySKUSchema,
123
- outputSchema: ProductSchema,
124
- cache: true,
125
- cacheTimeToLiveInSeconds: 300,
126
- currencyDependentCaching: false,
127
- localeDependentCaching: true
128
- })
129
- public override async getBySKU(
130
- payload: ProductQueryBySKU
131
- ): Promise<Result<Product>> {
132
- const client = await this.getClient();
133
-
134
- const remote = await client
135
- .get({
136
- queryArgs: {
137
- staged: false,
138
- limit: 1,
139
- where: 'variants(sku in (:skus)) OR (masterVariant(sku in (:skus))) ',
140
- 'var.skus': [payload].map((p) => p.variant.sku),
141
- },
142
- })
143
- .execute();
144
-
145
- const result = this.parseSingle(remote.body.results[0]);
146
-
147
- return success(result);
148
- }
149
-
150
- protected parseSingle(data: ProductProjection): Product {
151
- const identifier = { key: data.key || data.id } satisfies ProductIdentifier;
152
- const name = data.name[this.context.languageContext.locale];
153
- const slug = data.slug[this.context.languageContext.locale];
154
-
155
- let description = '';
156
- if (data.description) {
157
- description = data.description[this.context.languageContext.locale];
158
- }
159
-
160
- const variantLevelAttributes =
161
- data.masterVariant.attributes?.map((x) => this.parseAttribute(x)) || [];
162
-
163
-
164
- const specialAttributes = [
165
- 'reactionaryaccessories',
166
- 'reactionaryspareparts',
167
- 'reactionaryreplacements'
168
- ]
169
-
170
- const productLevelAttributes =
171
- data.attributes.filter(x => !specialAttributes.includes(x.name)).map((x) => this.parseAttribute(x)) || [];
172
-
173
- const sharedAttributes = [
174
- ...productLevelAttributes,
175
- ...variantLevelAttributes,
176
- ];
177
- const mainVariant = this.parseVariant(data.masterVariant, data);
178
-
179
- const otherVariants = [];
180
- for (const variant of data.variants || []) {
181
- if (variant.id !== data.masterVariant.id) {
182
- otherVariants.push(this.parseVariant(variant, data));
183
- }
184
- }
185
-
186
- const result = {
187
- identifier,
188
- name,
189
- slug,
190
- description,
191
- sharedAttributes,
192
- mainVariant,
193
- brand: '',
194
- longDescription: '',
195
- manufacturer: '',
196
- options: [],
197
- parentCategories: [],
198
- published: true,
199
- variants: otherVariants,
200
- } satisfies Product;
201
-
202
- return result;
203
- }
204
-
205
- /**
206
- * Return true, if the attribute is a defining attribute (ie an option)
207
- * @param attr a variant attribute
208
- * @returns true if the attribute is an option
209
- */
210
- protected isVariantAttributeAnOption(attr: CTAttribute): boolean {
211
- // for now, the assumption is that any variant attribute is a defining attribute (ie an option)
212
- // ideally this should be verified with the product type.
213
- return true;
214
- }
215
-
216
- protected parseVariant(
217
- variant: CTProductVariant,
218
- product: ProductProjection
219
- ): ProductVariant {
220
- const identifier = {
221
- sku: variant.sku!,
222
- } satisfies ProductVariantIdentifier;
223
-
224
- const images = [
225
- ...(variant.images || []).map((img) =>
226
- ImageSchema.parse({
227
- sourceUrl: img.url,
228
- altText: img.label || '',
229
- width: img.dimensions?.w,
230
- height: img.dimensions?.h,
231
- } satisfies Image)
232
- ),
233
- ];
234
-
235
- const options =
236
- (variant.attributes ?? [])
237
- .filter((attr) => this.isVariantAttributeAnOption(attr))
238
- .map((attr) => {
239
- const attrVal = this.parseAttributeValue(attr);
240
- const optionIdentifier: ProductOptionIdentifier = {
241
- key: attr.name,
242
- };
243
- const option: ProductVariantOption = {
244
- identifier: optionIdentifier,
245
- name: attr.name,
246
- value: {
247
- identifier: {
248
- key: attrVal.value,
249
- option: optionIdentifier,
250
- },
251
- label: attrVal.label,
252
- },
253
- };
254
- return option;
255
- }) || [];
256
-
257
- const result = {
258
- identifier,
259
- images,
260
- barcode: '',
261
- ean: '',
262
- gtin: '',
263
- name: product.name[this.context.languageContext.locale],
264
- options,
265
- upc: '',
266
- } satisfies ProductVariant;
267
-
268
- return result;
269
- }
270
-
271
- protected parseAttribute(attr: CTAttribute): ProductAttribute {
272
- const result = ProductAttributeSchema.parse({
273
- identifier: ProductAttributeIdentifierSchema.parse({
274
- key: attr.name,
275
- } satisfies Partial<ProductAttributeIdentifier>),
276
- group: '',
277
- name: attr.name,
278
- values: [this.parseAttributeValue(attr)],
279
- } satisfies Partial<ProductAttribute>);
280
-
281
- return result;
282
- }
283
-
284
- protected parseAttributeValue(attr: CTAttribute): ProductAttributeValue {
285
- let attrValue = '';
286
- if (attr.value && Array.isArray(attr.value)) {
287
- attrValue = attr.value[0];
288
- }
289
-
290
- if (attr.value && typeof attr.value === 'object') {
291
- if (this.context.languageContext.locale in attr.value) {
292
- attrValue = attr.value[this.context.languageContext.locale];
293
- } else {
294
- attrValue = '-';
295
- }
296
- }
297
-
298
- if (typeof attr.value === 'string') {
299
- attrValue = attr.value;
300
- }
301
-
302
- const attrVal = ProductAttributeValueSchema.parse({
303
- identifier: ProductAttributeValueIdentifierSchema.parse({
304
- key: attrValue,
305
- } satisfies Partial<ProductAttributeValueIdentifier>),
306
- value: String(attrValue),
307
- label: String(attrValue),
308
- } satisfies Partial<ProductAttributeValue>);
309
-
310
- return attrVal;
311
- }
312
- }
@@ -1,22 +0,0 @@
1
- import { CapabilitiesSchema } from "@reactionary/core";
2
- import type * as z from 'zod';
3
-
4
- export const CommercetoolsCapabilitiesSchema = CapabilitiesSchema.pick({
5
- product: true,
6
- productSearch: true,
7
- productAssociations: true,
8
- productReviews: true,
9
- productList: true,
10
- identity: true,
11
- cart: true,
12
- checkout: true,
13
- order: true,
14
- orderSearch: true,
15
- inventory: true,
16
- price: true,
17
- category: true,
18
- store: true,
19
- profile: true
20
- }).partial();
21
-
22
- export type CommercetoolsCapabilities = z.infer<typeof CommercetoolsCapabilitiesSchema>;
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "declaration": true,
6
- "types": ["node"]
7
- },
8
- "include": ["src/**/*.ts"],
9
- "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts", "src/**/test-utils.ts"]
10
- }
@@ -1,4 +0,0 @@
1
- {
2
- "extends": "./tsconfig.lib.json",
3
- "exclude": []
4
- }
@@ -1,15 +0,0 @@
1
- /// <reference types="vitest" />
2
- import { defineConfig, defineProject } from 'vitest/config';
3
- import tsconfigPaths from 'vite-tsconfig-paths';
4
- import { resolve } from 'path';
5
- import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
6
-
7
- export default defineProject({
8
- plugins: [nxViteTsPaths()],
9
- test: {
10
- root: resolve(__dirname),
11
- globals: true,
12
- environment: 'node',
13
- include: ['src/**/*.spec.{ts,js}', 'src/**/*.test.ts'],
14
- },
15
- });
@@ -1,23 +0,0 @@
1
- # Fake provider for Reactionary
2
-
3
- ## Supports
4
-
5
-
6
-
7
- | Feature | Support | Notes |
8
- | ----------- | ----------- | --------- |
9
- | product | Full | |
10
- | productSearch | Full | |
11
- | identity | Full | |
12
- | cart | Full | |
13
- | checkout | Planned | |
14
- | order | Planned | |
15
- | inventory | Full | |
16
- | price | Full | |
17
- | category | Full | |
18
- | store | Full | |
19
-
20
-
21
- ## Notes
22
-
23
- Not as many different product names as we would have liked. Maybe we need to create our own faker test data.
@@ -1,105 +0,0 @@
1
- import type {
2
- Cache as ReactinaryCache,
3
- RequestContext,
4
- ClientFromCapabilities,
5
- } from '@reactionary/core';
6
- import { FakeProductProvider } from '../providers/product.provider.js';
7
- import { FakeSearchProvider } from '../providers/product-search.provider.js';
8
- import type { FakeConfiguration } from '../schema/configuration.schema.js';
9
- import type { FakeCapabilities } from '../schema/capabilities.schema.js';
10
- import { FakeCategoryProvider } from '../providers/category.provider.js';
11
- import {
12
- FakeCartProvider,
13
- FakeIdentityProvider,
14
- FakeInventoryProvider,
15
- FakePriceProvider,
16
- FakeStoreProvider,
17
- } from '../providers/index.js';
18
- import { FakeCheckoutProvider } from '../providers/checkout.provider.js';
19
- import { FakeOrderSearchProvider } from '../providers/order-search.provider.js';
20
- import { FakeOrderProvider } from '../providers/order.provider.js';
21
- import { FakeProfileProvider } from '../providers/profile.provider.js';
22
- import { FakeProductReviewsProvider } from '../providers/product-reviews.provider.js';
23
- import { FakeProductAssociationsProvider } from '../providers/product-associations.provider.js';
24
-
25
- export function withFakeCapabilities<T extends FakeCapabilities>(
26
- configuration: FakeConfiguration,
27
- capabilities: T
28
- ) {
29
- return (
30
- cache: ReactinaryCache,
31
- context: RequestContext
32
- ): ClientFromCapabilities<T> => {
33
- const client: any = {};
34
-
35
- if (capabilities.product) {
36
- client.product = new FakeProductProvider(configuration, cache, context);
37
- }
38
-
39
- if (capabilities.productSearch) {
40
- client.productSearch = new FakeSearchProvider(
41
- configuration,
42
- cache,
43
- context
44
- );
45
- }
46
-
47
- if (capabilities.category) {
48
- client.category = new FakeCategoryProvider(configuration, cache, context);
49
- }
50
-
51
- if (capabilities.cart) {
52
- client.cart = new FakeCartProvider(configuration, cache, context);
53
- }
54
-
55
- if (capabilities.inventory) {
56
- client.inventory = new FakeInventoryProvider(
57
- configuration,
58
- cache,
59
- context
60
- );
61
- }
62
-
63
- if (capabilities.store) {
64
- client.store = new FakeStoreProvider(configuration, cache, context);
65
- }
66
-
67
- if (capabilities.price) {
68
- client.price = new FakePriceProvider(configuration, cache, context);
69
- }
70
-
71
- if (capabilities.identity) {
72
- client.identity = new FakeIdentityProvider(configuration, cache, context);
73
- }
74
-
75
- if (capabilities.checkout) {
76
- client.checkout = new FakeCheckoutProvider(configuration, cache, context);
77
- }
78
-
79
- if (capabilities.orderSearch) {
80
- client.orderSearch = new FakeOrderSearchProvider(
81
- configuration,
82
- cache,
83
- context
84
- );
85
- }
86
-
87
- if (capabilities.order) {
88
- client.order = new FakeOrderProvider(configuration, cache, context);
89
- }
90
-
91
- if (capabilities.profile) {
92
- client.profile = new FakeProfileProvider(configuration, cache, context);
93
- }
94
-
95
- if (capabilities.productReviews) {
96
- client.productReviews = new FakeProductReviewsProvider(configuration, cache, context);
97
- }
98
-
99
- if (capabilities.productAssociations) {
100
- client.productAssociations = new FakeProductAssociationsProvider(configuration, cache, context);
101
- }
102
-
103
- return client;
104
- };
105
- }
@@ -1,184 +0,0 @@
1
- import type { Result, NotFoundError, Category, CategoryPaginatedResult, CategoryQueryById, CategoryQueryBySlug, CategoryQueryForBreadcrumb, CategoryQueryForChildCategories, CategoryQueryForTopCategories, RequestContext} from "@reactionary/core";
2
- import { success, error, CategoryPaginatedResultSchema, CategoryProvider, CategoryQueryByIdSchema, CategoryQueryBySlugSchema, CategoryQueryForBreadcrumbSchema, CategoryQueryForChildCategoriesSchema, CategoryQueryForTopCategoriesSchema, CategorySchema, Reactionary } from "@reactionary/core";
3
- import type { FakeConfiguration } from "../schema/configuration.schema.js";
4
- import type { Cache as ReactionaryCache } from "@reactionary/core";
5
- import * as z from "zod";
6
- import { Faker, en, base } from '@faker-js/faker';
7
-
8
- export class FakeCategoryProvider extends CategoryProvider {
9
-
10
- protected config: FakeConfiguration;
11
-
12
- protected topCategories = new Array<Category>();
13
- protected childCategories = new Map<string, Array<Category>>();
14
- protected allCategories = new Map<string, Category>();
15
-
16
- protected categoryGenerator: Faker;
17
-
18
- protected generateFakeCategory(parent: Category | undefined, index: number): Category {
19
- let name: string;
20
- if (!parent) {
21
- name = this.categoryGenerator.commerce.department();
22
- } else {
23
- name = `${parent.name}-${index}`;
24
- }
25
-
26
- const identifier = { key: name.toLowerCase().replace(/\s+/g, '-') };
27
- const text = this.categoryGenerator.lorem.sentences(3);
28
- const slug = identifier.key + '-slug';
29
-
30
- let parentCategory;
31
- if (parent) {
32
- parentCategory = parent.identifier;
33
- }
34
-
35
- const category = {
36
- identifier,
37
- images: [],
38
- name,
39
- slug,
40
- text,
41
- parentCategory
42
- } satisfies Category;
43
-
44
- this.allCategories.set(identifier.key, category);
45
- return category;
46
- }
47
-
48
-
49
- constructor(config: FakeConfiguration, cache: ReactionaryCache, context: RequestContext) {
50
- super(cache, context);
51
- this.config = config;
52
- this.categoryGenerator = new Faker({
53
- seed: this.config.seeds.category,
54
- locale: [en, base],
55
- });
56
-
57
- // Generate some top-level categories
58
- for (let i = 0; i < 6; i++) {
59
- const category = this.generateFakeCategory(undefined, i);
60
- this.topCategories.push(category);
61
- }
62
-
63
- // Generate two levels of child categories
64
- this.topCategories.forEach((parentCategory) => {
65
- const children = new Array<Category>();
66
- for (let j = 0; j < 5; j++) {
67
- const childCategory = this.generateFakeCategory(parentCategory, j);
68
- children.push(childCategory);
69
-
70
-
71
- const subCategoryChildren = new Array<Category>();
72
- for(let k = 0; k < 5; k++) {
73
- const subChildCategory = this.generateFakeCategory(childCategory, k);
74
- subCategoryChildren.push(subChildCategory);
75
- }
76
- this.childCategories.set(childCategory.identifier.key, subCategoryChildren);
77
- }
78
- this.childCategories.set(parentCategory.identifier.key, children);
79
- });
80
- }
81
-
82
- @Reactionary({
83
- inputSchema: CategoryQueryByIdSchema,
84
- outputSchema: CategorySchema
85
- })
86
- public override async getById(payload: CategoryQueryById): Promise<Result<Category, NotFoundError>> {
87
- const category = this.allCategories.get(payload.id.key);
88
-
89
- if(!category) {
90
- return error<NotFoundError>({
91
- type: 'NotFound',
92
- identifier: payload
93
- });
94
- }
95
-
96
- return success(category);
97
- }
98
-
99
- @Reactionary({
100
- inputSchema: CategoryQueryBySlugSchema,
101
- outputSchema: CategorySchema
102
- })
103
- public override async getBySlug(payload: CategoryQueryBySlug): Promise<Result<Category, NotFoundError>> {
104
- for(const p of this.allCategories.values()) {
105
- if(p.slug === payload.slug) {
106
- return success(p);
107
- }
108
- }
109
- return error<NotFoundError>({
110
- type: 'NotFound',
111
- identifier: payload
112
- });
113
- }
114
-
115
- @Reactionary({
116
- inputSchema: CategoryQueryForBreadcrumbSchema,
117
- outputSchema: z.array(CategorySchema)
118
- })
119
- public override async getBreadcrumbPathToCategory(payload: CategoryQueryForBreadcrumb): Promise<Result<Category[]>> {
120
- const path = new Array<Category>();
121
- let category = this.allCategories.get(payload.id.key);
122
- path.push(category!);
123
- while(category?.parentCategory) {
124
- category = this.allCategories.get(category.parentCategory.key);
125
- if(category) {
126
- path.unshift(category);
127
- }
128
- }
129
- return success(path);
130
- }
131
-
132
- @Reactionary({
133
- inputSchema: CategoryQueryForChildCategoriesSchema,
134
- outputSchema: CategoryPaginatedResultSchema
135
- })
136
- public override async findChildCategories(payload: CategoryQueryForChildCategories): Promise<Result<CategoryPaginatedResult>> {
137
- const children = this.childCategories.get(payload.parentId.key);
138
- const page = children?.slice((payload.paginationOptions.pageNumber - 1) * payload.paginationOptions.pageSize, payload.paginationOptions.pageNumber * payload.paginationOptions.pageSize);
139
-
140
- const res = {
141
- meta: {
142
- placeholder: false,
143
- cache: {
144
- hit: false,
145
- key: 'child-categories-' + payload.parentId.key + '-' + payload.paginationOptions.pageNumber + '-' + payload.paginationOptions.pageSize,
146
- },
147
- },
148
- items: page ? page : [],
149
- totalCount: children ? children.length : 0,
150
- pageNumber: payload.paginationOptions.pageNumber,
151
- pageSize: payload.paginationOptions.pageSize,
152
- totalPages: children ? Math.ceil(children.length / payload.paginationOptions.pageSize) : 1,
153
- };
154
-
155
- return success(res);
156
- }
157
-
158
- @Reactionary({
159
- inputSchema: CategoryQueryForTopCategoriesSchema,
160
- outputSchema: CategoryPaginatedResultSchema
161
- })
162
- public override async findTopCategories(payload: CategoryQueryForTopCategories): Promise<Result<CategoryPaginatedResult>> {
163
- const children = this.topCategories;
164
- const page = children?.slice((payload.paginationOptions.pageNumber - 1) * payload.paginationOptions.pageSize, payload.paginationOptions.pageNumber * payload.paginationOptions.pageSize);
165
-
166
- const res = {
167
- meta: {
168
- placeholder: false,
169
- cache: {
170
- hit: false,
171
- key: 'top' + '-' + payload.paginationOptions.pageNumber + '-' + payload.paginationOptions.pageSize,
172
- },
173
- },
174
- items: page ? page : [],
175
- totalCount: children ? children.length : 0,
176
- pageNumber: payload.paginationOptions.pageNumber,
177
- pageSize: payload.paginationOptions.pageSize,
178
- totalPages: children ? Math.ceil(children.length / payload.paginationOptions.pageSize) : 1,
179
- };
180
-
181
- return success(res);
182
- }
183
-
184
- }
@@ -1,15 +0,0 @@
1
- export * from './analytics.provider.js';
2
- export * from './cart.provider.js';
3
- export * from './category.provider.js';
4
- export * from './checkout.provider.js';
5
- export * from './identity.provider.js';
6
- export * from './inventory.provider.js';
7
- export * from './order-search.provider.js';
8
- export * from './order.provider.js';
9
- export * from './price.provider.js';
10
- export * from './product.provider.js';
11
- export * from './product-associations.provider.js';
12
- export * from './product-reviews.provider.js';
13
- export * from './product-search.provider.js';
14
- export * from './profile.provider.js';
15
- export * from './store.provider.js';