@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,174 +0,0 @@
1
- import type { Cache, RequestContext, Client, ClientFromCapabilities } from '@reactionary/core';
2
- import {
3
- CommercetoolsCapabilitiesSchema,
4
- type CommercetoolsCapabilities,
5
- } from '../schema/capabilities.schema.js';
6
- import { CommercetoolsSearchProvider } from '../providers/product-search.provider.js';
7
- import { CommercetoolsProductProvider } from '../providers/product.provider.js';
8
- import {
9
- CommercetoolsConfigurationSchema,
10
- type CommercetoolsConfiguration,
11
- } from '../schema/configuration.schema.js';
12
- import { CommercetoolsIdentityProvider } from '../providers/identity.provider.js';
13
- import { CommercetoolsCartProvider } from '../providers/cart.provider.js';
14
- import { CommercetoolsInventoryProvider } from '../providers/inventory.provider.js';
15
- import { CommercetoolsPriceProvider } from '../providers/price.provider.js';
16
- import { CommercetoolsCategoryProvider } from '../providers/category.provider.js';
17
- import {
18
- CommercetoolsCheckoutProvider,
19
- CommercetoolsOrderProvider,
20
- CommercetoolsOrderSearchProvider,
21
- CommercetoolsProfileProvider,
22
- CommercetoolsStoreProvider,
23
- CommercetoolsProductReviewsProvider,
24
- CommercetoolsProductAssociationsProvider,
25
- CommercetoolsProductListProvider,
26
- } from '../providers/index.js';
27
- import { CommercetoolsAPI } from './client.js';
28
-
29
- export function withCommercetoolsCapabilities<
30
- T extends CommercetoolsCapabilities
31
- >(configuration: CommercetoolsConfiguration, capabilities: T) {
32
- return (cache: Cache, context: RequestContext): ClientFromCapabilities<T> => {
33
- const client: any = {};
34
- const config = CommercetoolsConfigurationSchema.parse(configuration);
35
- const caps = CommercetoolsCapabilitiesSchema.parse(capabilities);
36
- const commercetoolsApi = new CommercetoolsAPI(config, context);
37
-
38
- if (caps.product) {
39
- client.product = new CommercetoolsProductProvider(
40
- config,
41
- cache,
42
- context,
43
- commercetoolsApi
44
- );
45
- }
46
-
47
- if (caps.profile) {
48
- client.profile = new CommercetoolsProfileProvider(
49
- config,
50
- cache,
51
- context,
52
- commercetoolsApi
53
- );
54
- }
55
-
56
- if (caps.productSearch) {
57
- client.productSearch = new CommercetoolsSearchProvider(
58
- config,
59
- cache,
60
- context,
61
- commercetoolsApi
62
- );
63
- }
64
-
65
- if (caps.productAssociations) {
66
- client.productAssociations = new CommercetoolsProductAssociationsProvider(
67
- config,
68
- cache,
69
- context,
70
- commercetoolsApi
71
- );
72
- }
73
-
74
- if (caps.productList) {
75
- client.productList = new CommercetoolsProductListProvider(
76
- config,
77
- cache,
78
- context,
79
- commercetoolsApi
80
- );
81
- }
82
-
83
- if (caps.productReviews) {
84
- client.productReviews = new CommercetoolsProductReviewsProvider(
85
- config,
86
- cache,
87
- context,
88
- commercetoolsApi
89
- );
90
- }
91
-
92
- if (caps.identity) {
93
- client.identity = new CommercetoolsIdentityProvider(
94
- config,
95
- cache,
96
- context,
97
- commercetoolsApi
98
- );
99
- }
100
-
101
- if (caps.cart) {
102
- client.cart = new CommercetoolsCartProvider(
103
- config,
104
- cache,
105
- context,
106
- commercetoolsApi
107
- );
108
- }
109
-
110
- if (caps.inventory) {
111
- client.inventory = new CommercetoolsInventoryProvider(
112
- config,
113
- cache,
114
- context,
115
- commercetoolsApi
116
- );
117
- }
118
-
119
- if (caps.price) {
120
- client.price = new CommercetoolsPriceProvider(
121
- config,
122
- cache,
123
- context,
124
- commercetoolsApi
125
- );
126
- }
127
-
128
- if (caps.category) {
129
- client.category = new CommercetoolsCategoryProvider(
130
- config,
131
- cache,
132
- context,
133
- commercetoolsApi
134
- );
135
- }
136
-
137
- if (caps.checkout) {
138
- client.checkout = new CommercetoolsCheckoutProvider(
139
- config,
140
- cache,
141
- context,
142
- commercetoolsApi
143
- );
144
- }
145
-
146
- if (caps.store) {
147
- client.store = new CommercetoolsStoreProvider(
148
- config,
149
- cache,
150
- context,
151
- commercetoolsApi
152
- );
153
- }
154
-
155
- if (caps.order) {
156
- client.store = new CommercetoolsOrderProvider(
157
- config,
158
- cache,
159
- context,
160
- commercetoolsApi
161
- );
162
- }
163
- if (caps.orderSearch) {
164
- client.orderSearch = new CommercetoolsOrderSearchProvider(
165
- config,
166
- cache,
167
- context,
168
- commercetoolsApi
169
- );
170
- }
171
-
172
- return client;
173
- };
174
- }
@@ -1,15 +0,0 @@
1
- export * from './core/client.js';
2
- export * from './core/initialize.js';
3
-
4
- export * from './providers/cart.provider.js';
5
- export * from './providers/identity.provider.js';
6
- export * from './providers/inventory.provider.js';
7
- export * from './providers/order-search.provider.js';
8
- export * from './providers/price.provider.js';
9
- export * from './providers/product-associations.provider.js';
10
- export * from './providers/product.provider.js';
11
- export * from './providers/product-reviews.provider.js';
12
- export * from './providers/product-search.provider.js';
13
-
14
- export * from './schema/capabilities.schema.js';
15
- export * from './schema/configuration.schema.js';
@@ -1,15 +0,0 @@
1
- export * from './cart.provider.js';
2
- export * from './category.provider.js';
3
- export * from './identity.provider.js';
4
- export * from './inventory.provider.js';
5
- export * from './order-search.provider.js';
6
- export * from './price.provider.js';
7
- export * from './product-associations.provider.js';
8
- export * from './product-list.provider.js';
9
- export * from './product.provider.js';
10
- export * from './product-reviews.provider.js';
11
- export * from './profile.provider.js';
12
- export * from './product-search.provider.js';
13
- export * from './store.provider.js';
14
- export * from './order.provider.js';
15
- export * from './checkout.provider.js';
@@ -1,229 +0,0 @@
1
- import type {
2
- RequestContext,
3
- Cache,
4
- OrderSearchQueryByTerm,
5
- OrderSearchResult,
6
- Result,
7
- OrderSearchIdentifier,
8
- MonetaryAmount,
9
- Currency,
10
- IdentityIdentifier,
11
- Address,
12
- OrderStatus,
13
- } from '@reactionary/core';
14
- import {
15
- OrderSearchProvider,
16
- OrderSearchQueryByTermSchema,
17
- OrderSearchResultSchema,
18
- type OrderSearchResultItem,
19
- Reactionary,
20
- success,
21
- } from '@reactionary/core';
22
- import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
23
- import type { CommercetoolsAPI } from '../core/client.js';
24
- import createDebug from 'debug';
25
- import type { Order as CTOrder, OrderPagedSearchResponse , Address as CTAddress, OrderPagedQueryResponse} from '@commercetools/platform-sdk';
26
-
27
- const debug = createDebug('reactionary:commercetools:order-search');
28
-
29
- export class CommercetoolsOrderSearchProvider extends OrderSearchProvider {
30
- protected config: CommercetoolsConfiguration;
31
- protected commercetools: CommercetoolsAPI;
32
-
33
- constructor(
34
- config: CommercetoolsConfiguration,
35
- cache: Cache,
36
- context: RequestContext,
37
- commercetools: CommercetoolsAPI
38
- ) {
39
- super(cache, context);
40
-
41
- this.config = config;
42
- this.commercetools = commercetools;
43
- }
44
-
45
- protected async getClient() {
46
- const client = await this.commercetools.getClient();
47
- return client
48
- .withProjectKey({ projectKey: this.config.projectKey })
49
- .me()
50
- .orders();
51
- }
52
-
53
- @Reactionary({
54
- inputSchema: OrderSearchQueryByTermSchema,
55
- outputSchema: OrderSearchResultSchema,
56
- })
57
- public async queryByTerm(payload: OrderSearchQueryByTerm): Promise<Result<OrderSearchResult>> {
58
- debug('queryByTerm', payload);
59
-
60
- const client = await this.getClient();
61
- const where: string[] = [];
62
- if (payload.search) {
63
- if (payload.search.term) {
64
- debug('Search by term is not implemented yet in CommercetoolsOrderSearchProvider');
65
- }
66
-
67
- if (payload.search.partNumber) {
68
- for (const partNumber of payload.search.partNumber) {
69
- where.push(`lineItems(variant(sku="${partNumber}"))`);
70
- }
71
- }
72
-
73
- if (payload.search.user && payload.search.user.userId) {
74
-
75
- // where.push(`customerId="${payload.search.user.userId}"`);
76
- }
77
-
78
- if (payload.search.orderStatus) {
79
- const orderStatusWhere = payload.search.orderStatus.map(x => {
80
- let mappedStatus = 'Open';
81
- if (x === 'AwaitingPayment') {
82
- mappedStatus = `Open`
83
- }
84
- if (x === 'ReleasedToFulfillment') {
85
- mappedStatus = `Confirmed`
86
- }
87
- if (x === 'Shipped') {
88
- mappedStatus = `Complete`
89
- }
90
- if (x === 'Cancelled') {
91
- mappedStatus = `Cancelled`
92
- }
93
- return `orderState="${mappedStatus}"`
94
- }).join(' OR ');
95
- where.push(orderStatusWhere);
96
- }
97
-
98
- if (payload.search.startDate) {
99
- where.push(`createdAt >= "${payload.search.startDate}"`);
100
- }
101
-
102
- if (payload.search.endDate) {
103
- where.push(`createdAt <= "${payload.search.endDate}"`);
104
- }
105
- }
106
-
107
- const response = await client.get({
108
- queryArgs: {
109
- where: where,
110
- withTotal: true,
111
- limit: payload.search.paginationOptions.pageSize,
112
- offset:
113
- (payload.search.paginationOptions.pageNumber - 1) *
114
- payload.search.paginationOptions.pageSize,
115
- }
116
- }).execute();
117
-
118
- const responseBody = response.body;
119
- const result = this.parsePaginatedResult(
120
- responseBody,
121
- payload
122
- ) as OrderSearchResult;
123
-
124
- if (debug.enabled) {
125
- debug(
126
- `Search for term "${payload.search.term}" returned ${responseBody.results.length} orders (page ${payload.search.paginationOptions.pageNumber} of ${result.totalPages})`
127
- );
128
- }
129
-
130
- return success(result);
131
- }
132
-
133
- protected parseAddress(remote: CTAddress) {
134
- return {
135
- countryCode: remote.country || '',
136
- firstName: remote.firstName || '',
137
- lastName: remote.lastName || '',
138
- streetAddress: remote.streetName || '',
139
- streetNumber: remote.streetNumber || '',
140
- postalCode: remote.postalCode || '',
141
- city: remote.city || '',
142
- identifier: {
143
- nickName: '',
144
- },
145
- region: '',
146
- } satisfies Address;
147
- }
148
-
149
-
150
- protected parseSingle(body: CTOrder) {
151
- const identifier = { key: body.id };
152
- const userId: IdentityIdentifier = {
153
- userId: body.customerId || body.anonymousId || '',
154
- };
155
- const customerName = `${body.billingAddress?.firstName} ${body.billingAddress?.lastName}`;
156
- const shippingAddress = this.parseAddress(body.shippingAddress!);
157
- const orderDate = body.createdAt;
158
- let orderStatus: OrderStatus = 'AwaitingPayment';
159
- if (body.paymentState === 'Pending' && body.orderState === 'Open') {
160
- orderStatus = 'AwaitingPayment';
161
- } else if (
162
- body.paymentState === 'Paid' &&
163
- body.orderState === 'Confirmed'
164
- ) {
165
- orderStatus = 'ReleasedToFulfillment';
166
- }
167
- if (body.shipmentState === 'Ready' && body.orderState === 'Confirmed') {
168
- orderStatus = 'ReleasedToFulfillment';
169
- }
170
- if (
171
- (body.shipmentState === 'Shipped' ||
172
- body.shipmentState === 'Delivered') &&
173
- body.orderState === 'Completed'
174
- ) {
175
- orderStatus = 'Shipped';
176
- }
177
- let inventoryStatus: OrderSearchResultItem['inventoryStatus'];
178
-
179
- if (orderStatus === 'Shipped') {
180
- inventoryStatus = 'Allocated'
181
- } else {
182
- inventoryStatus = 'NotAllocated'
183
- }
184
-
185
- const totalAmount: MonetaryAmount = {
186
- currency: body.totalPrice ? body.totalPrice.currencyCode as Currency : this.context.languageContext.currencyCode,
187
- value: body.totalPrice ? body.totalPrice.centAmount / 100 : 0
188
- };
189
-
190
- const order = {
191
- identifier,
192
- userId,
193
- customerName,
194
- shippingAddress,
195
- orderDate,
196
- orderStatus,
197
- inventoryStatus,
198
- totalAmount
199
- } satisfies OrderSearchResultItem;
200
-
201
- return order;
202
- }
203
-
204
- protected parsePaginatedResult(
205
- body: OrderPagedQueryResponse,
206
- query: OrderSearchQueryByTerm
207
- ) {
208
- const identifier = {
209
- ...query.search,
210
- } satisfies OrderSearchIdentifier;
211
-
212
- const orders: OrderSearchResultItem[] = body.results.map((o) => {
213
- return this.parseSingle(o);
214
- })
215
-
216
- const result = {
217
- identifier,
218
- pageNumber: (Math.ceil(body.offset / body.limit) || 0) + 1,
219
- pageSize: body.limit,
220
- totalCount: body.total || 0,
221
- totalPages: Math.ceil((body.total || 0) / body.limit || 0) + 1,
222
- items: orders,
223
- } satisfies OrderSearchResult;
224
-
225
- return result;
226
- }
227
-
228
-
229
- }
@@ -1,198 +0,0 @@
1
- import type {
2
- RequestContext,
3
- Cache,
4
- Order,
5
- OrderQueryById,
6
- Currency,
7
- OrderIdentifier,
8
- CostBreakDown,
9
- OrderStatus,
10
- OrderItem,
11
- ProductVariantIdentifier,
12
- ItemCostBreakdown,
13
- Result,
14
- NotFoundError,
15
- } from '@reactionary/core';
16
- import { OrderProvider, OrderQueryByIdSchema, OrderSchema, Reactionary, success, error } from '@reactionary/core';
17
- import type * as z from 'zod';
18
- import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
19
- import type { Order as CTOrder } from '@commercetools/platform-sdk';
20
- import { type CommercetoolsOrderIdentifier } from '../schema/commercetools.schema.js';
21
- import type { CommercetoolsAPI } from '../core/client.js';
22
-
23
- export class CommercetoolsOrderProvider extends OrderProvider {
24
- protected config: CommercetoolsConfiguration;
25
- protected commercetools: CommercetoolsAPI;
26
-
27
- constructor(
28
- config: CommercetoolsConfiguration,
29
- cache: Cache,
30
- context: RequestContext,
31
- commercetools: CommercetoolsAPI
32
- ) {
33
- super(cache, context);
34
-
35
- this.config = config;
36
- this.commercetools = commercetools;
37
- }
38
-
39
- protected async getClient() {
40
- const client = await this.commercetools.getClient();
41
- return client
42
- .withProjectKey({ projectKey: this.config.projectKey })
43
- .me()
44
- .orders();
45
- }
46
-
47
- @Reactionary({
48
- inputSchema: OrderQueryByIdSchema,
49
- outputSchema: OrderSchema,
50
- })
51
- public override async getById(payload: OrderQueryById): Promise<Result<Order, NotFoundError>> {
52
- const client = await this.getClient();
53
-
54
- try {
55
- const remote = await client
56
- .withId({ ID: payload.order.key })
57
- .get()
58
- .execute();
59
-
60
- return success(this.parseSingle(remote.body));
61
- } catch (e) {
62
- return error<NotFoundError>({
63
- type: 'NotFound',
64
- identifier: payload
65
- })
66
- }
67
- }
68
-
69
- protected parseSingle(_body: unknown): Order {
70
- const remote = _body as CTOrder;
71
-
72
- const identifier = {
73
- key: remote.id,
74
- version: remote.version || 0,
75
- } satisfies CommercetoolsOrderIdentifier;
76
-
77
- const name = remote.custom?.fields['name'] || '';
78
- const description = remote.custom?.fields['description'] || '';
79
-
80
- const grandTotal = remote.totalPrice.centAmount || 0;
81
- const shippingTotal = remote.shippingInfo?.price.centAmount || 0;
82
- const productTotal = grandTotal - shippingTotal;
83
- const taxTotal = remote.taxedPrice?.totalTax?.centAmount || 0;
84
- const discountTotal =
85
- remote.discountOnTotalPrice?.discountedAmount.centAmount || 0;
86
- const surchargeTotal = 0;
87
- const currency = remote.totalPrice.currencyCode as Currency;
88
-
89
- const price = {
90
- totalTax: {
91
- value: taxTotal / 100,
92
- currency,
93
- },
94
- totalDiscount: {
95
- value: discountTotal / 100,
96
- currency,
97
- },
98
- totalSurcharge: {
99
- value: surchargeTotal / 100,
100
- currency,
101
- },
102
- totalShipping: {
103
- value: shippingTotal / 100,
104
- currency: remote.shippingInfo?.price.currencyCode as Currency,
105
- },
106
- totalProductPrice: {
107
- value: productTotal / 100,
108
- currency,
109
- },
110
- grandTotal: {
111
- value: grandTotal / 100,
112
- currency,
113
- },
114
- } satisfies CostBreakDown;
115
-
116
- let orderStatus: OrderStatus = 'AwaitingPayment';
117
- if (remote.paymentState === 'Pending' && remote.orderState === 'Open') {
118
- orderStatus = 'AwaitingPayment';
119
- } else if (
120
- remote.paymentState === 'Paid' &&
121
- remote.orderState === 'Confirmed'
122
- ) {
123
- orderStatus = 'ReleasedToFulfillment';
124
- }
125
- if (remote.shipmentState === 'Ready' && remote.orderState === 'Confirmed') {
126
- orderStatus = 'ReleasedToFulfillment';
127
- }
128
- if (
129
- (remote.shipmentState === 'Shipped' ||
130
- remote.shipmentState === 'Delivered') &&
131
- remote.orderState === 'Completed'
132
- ) {
133
- orderStatus = 'Shipped';
134
- }
135
-
136
- const items = new Array<OrderItem>();
137
- for (const remoteItem of remote.lineItems) {
138
- const identifier = {
139
- key: remoteItem.id
140
- } satisfies OrderIdentifier;
141
-
142
- const variant = {
143
- sku: remoteItem.variant.sku || ''
144
- } satisfies ProductVariantIdentifier;
145
- const quantity = remoteItem.quantity;
146
-
147
- const unitPrice = remoteItem.price.value.centAmount;
148
- const totalPrice = remoteItem.totalPrice.centAmount || 0;
149
- const totalDiscount = remoteItem.price.discounted?.value.centAmount || 0;
150
- const unitDiscount = totalDiscount / remoteItem.quantity;
151
-
152
- const price = {
153
- unitPrice: {
154
- value: unitPrice / 100,
155
- currency,
156
- },
157
- unitDiscount: {
158
- value: unitDiscount / 100,
159
- currency,
160
- },
161
- totalPrice: {
162
- value: (totalPrice || 0) / 100,
163
- currency,
164
- },
165
- totalDiscount: {
166
- value: totalDiscount / 100,
167
- currency,
168
- },
169
- } satisfies ItemCostBreakdown;
170
-
171
- const item = {
172
- identifier,
173
- inventoryStatus: 'NotAllocated',
174
- price,
175
- quantity,
176
- variant
177
- } satisfies OrderItem;
178
-
179
- items.push(item);
180
- }
181
-
182
- const result = {
183
- identifier,
184
- name,
185
- description,
186
- price,
187
- items,
188
- inventoryStatus: 'NotAllocated',
189
- paymentInstructions: [],
190
- userId: {
191
- userId: ''
192
- },
193
- orderStatus
194
- } satisfies Order;
195
-
196
- return result;
197
- }
198
- }