@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
package/README.md CHANGED
@@ -144,18 +144,8 @@ Vendors: Commercetools
144
144
  - Add to Shopping List
145
145
 
146
146
 
147
- ### Roadmap to V0.7
148
- Usecase: As a B2B user i want to shop using my own prices
149
- Vendors: Commercetools, Medusa
150
-
151
- - PDP / PLP
152
- - [ ] External Pricing
153
- - [ ] Customer specific pricing
154
- - [ ] Organizational/Entitlement Context. Choose to shop private or for company?
155
- - [ ] Multi currency/Multi lingual
156
-
157
147
 
158
- ### Roadmap to V0.8
148
+ ### Roadmap to V0.7
159
149
  Usecase: As a B2B user i want to see my organization data
160
150
  Vendors: Commercetools, Medusa
161
151
 
@@ -167,6 +157,19 @@ Vendors: Commercetools, Medusa
167
157
  - [ ] Self management of users and roles
168
158
 
169
159
 
160
+ ### Roadmap to V0.8
161
+ Usecase: As a B2B user i want to shop using my own prices
162
+ Vendors: Commercetools, Medusa
163
+
164
+ - PDP / PLP
165
+ - [ ] External Pricing / Pushed prices
166
+ - [ ] Customer specific pricing
167
+ - [ ] Organizational/Entitlement Context. Choose to shop private or for company?
168
+ - [ ] Multi currency/Multi lingual
169
+
170
+
171
+
172
+
170
173
  ### Roadmap to V0.9
171
174
  Usecase: As a B2B user i want have multiple carts and requisition lists
172
175
  Vendors: Commercetools
@@ -212,6 +215,25 @@ Vendors: Commercetools
212
215
  So, you want to add to the fun, and add a new provider.
213
216
  A new provider can be as partial or as complete as you need it to be, but each capability it undertakes, must be fully supported.
214
217
 
218
+ For creating the library in NX, the suitable command is:
219
+
220
+ ```npx nx g @nx/js:library packages/commercetools --publishable --importPath=@reactionary/commercetools --bundler=esbuild --linter=eslint --unitTestRunner=vitest```
221
+
222
+ After that is done, there are a few manual steps for aligning the build process for the library:
223
+
224
+ - In package.json
225
+ - Change type from "commonjs" to "module"
226
+ - Change main from "index.cjs" to "index.js"
227
+ - Change types from "./index.d.ts" to "./src/index.d.ts"
228
+ - Add "sideEffects": false
229
+ - In tsconfig.json
230
+ - Change module from "commonjs" to "nodenext"
231
+ - Add "moduleResolution": "nodenext",
232
+ - In project.json
233
+ - Change format from ["cjs"] to ["esm"]
234
+ - Remove the generatePackageJson line, if the generator still incorrectly generates it for libraries
235
+ - Add "bundle": false for the build target options
236
+
215
237
  ## Step 0
216
238
  Make sure you have a clean test environment. Ie not some half-baked instance with broken test data. Ideally, you are able to spin up and preconfigure instances via scripts.
217
239
 
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@reactionary/examples-node",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "main": "index.js",
5
5
  "types": "src/index.d.ts",
6
6
  "dependencies": {
7
- "@reactionary/core": "0.6.1",
8
- "@reactionary/provider-commercetools": "0.6.1",
9
- "@reactionary/provider-algolia": "0.6.1",
10
- "@reactionary/provider-medusa": "0.6.1",
11
- "@reactionary/provider-meilisearch": "0.6.1",
12
- "@reactionary/provider-fake": "0.6.1"
7
+ "@reactionary/core": "0.6.3",
8
+ "@reactionary/commercetools": "0.6.3",
9
+ "@reactionary/algolia": "0.6.3",
10
+ "@reactionary/medusa": "0.6.3",
11
+ "@reactionary/meilisearch": "0.6.3",
12
+ "@reactionary/fake": "0.6.3"
13
13
  },
14
14
  "type": "module"
15
15
  }
@@ -7,9 +7,10 @@ import {
7
7
  ProductSchema
8
8
  } from '@reactionary/core';
9
9
  import {
10
+ FakeProductFactory,
10
11
  FakeProductProvider,
11
12
  withFakeCapabilities,
12
- } from '@reactionary/provider-fake';
13
+ } from '@reactionary/fake';
13
14
  import { createInitialRequestContext } from '@reactionary/core'
14
15
  import * as z from 'zod';
15
16
  import { describe, expect, it } from 'vitest';
@@ -23,9 +24,9 @@ describe('basic node provider extension (models)', () => {
23
24
  type ExtendedProduct = z.infer<typeof ExtendedProductModel>;
24
25
 
25
26
  class ExtendedProductProvider extends FakeProductProvider {
26
- protected override parseSingle(body: string): ExtendedProduct {
27
+ protected override composeSingle(body: string): ExtendedProduct {
27
28
  const result = {
28
- ...super.parseSingle(body),
29
+ ...super.composeSingle(body),
29
30
  gtin: 'gtin-1234'
30
31
  } satisfies ExtendedProduct;
31
32
 
@@ -44,7 +45,8 @@ describe('basic node provider extension (models)', () => {
44
45
  search: 1
45
46
  } },
46
47
  cache,
47
- context
48
+ context,
49
+ new FakeProductFactory(ExtendedProductModel)
48
50
  ),
49
51
  };
50
52
 
@@ -66,7 +68,11 @@ describe('basic node provider extension (models)', () => {
66
68
  search: 1
67
69
  }
68
70
  },
69
- { productSearch: true, product: false, identity: false }
71
+ {
72
+ productSearch: { enabled: true },
73
+ product: { enabled: false },
74
+ identity: { enabled: false },
75
+ }
70
76
  )
71
77
  )
72
78
  .withCapability(withExtendedCapabilities())
@@ -9,9 +9,10 @@ import {
9
9
  ProductSchema
10
10
  } from '@reactionary/core';
11
11
  import {
12
+ FakeProductFactory,
12
13
  FakeProductProvider,
13
14
  withFakeCapabilities,
14
- } from '@reactionary/provider-fake';
15
+ } from '@reactionary/fake';
15
16
  import * as z from 'zod';
16
17
  import { describe, expect, it } from 'vitest';
17
18
 
@@ -60,7 +61,8 @@ describe('basic node provider extension (models)', () => {
60
61
  search: 1
61
62
  }},
62
63
  cache,
63
- context
64
+ context,
65
+ new FakeProductFactory(ProductSchema)
64
66
  ),
65
67
  };
66
68
 
@@ -83,7 +85,11 @@ describe('basic node provider extension (models)', () => {
83
85
  search: 1
84
86
  }
85
87
  },
86
- { productSearch: true, product: false, identity: false }
88
+ {
89
+ productSearch: { enabled: true },
90
+ product: { enabled: false },
91
+ identity: { enabled: false },
92
+ }
87
93
  )
88
94
  )
89
95
  .withCapability(withExtendedCapabilities())
@@ -6,7 +6,7 @@ import {
6
6
  type Client,
7
7
  type RequestContext,
8
8
  } from '@reactionary/core';
9
- import { withFakeCapabilities } from '@reactionary/provider-fake';
9
+ import { withFakeCapabilities } from '@reactionary/fake';
10
10
  import { assert, beforeAll, beforeEach, describe, expect, it } from 'vitest';
11
11
 
12
12
  describe('basic node setup', () => {
@@ -29,7 +29,11 @@ describe('basic node setup', () => {
29
29
  search: 1,
30
30
  },
31
31
  },
32
- { productSearch: true, product: true, identity: false }
32
+ {
33
+ productSearch: { enabled: true },
34
+ product: { enabled: true },
35
+ identity: { enabled: false },
36
+ }
33
37
  )
34
38
  )
35
39
  .withCache(new NoOpCache())
@@ -1,8 +1,8 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import { ClientBuilder, createInitialRequestContext, NoOpCache } from '@reactionary/core';
3
- import { FakeProductProvider, withFakeCapabilities } from '@reactionary/provider-fake';
4
- import { CommercetoolsCartProvider, withCommercetoolsCapabilities } from '@reactionary/provider-commercetools';
5
- import { AlgoliaProductSearchProvider, withAlgoliaCapabilities } from '@reactionary/provider-algolia';
3
+ import { FakeProductProvider, withFakeCapabilities } from '@reactionary/fake';
4
+ import { CommercetoolsCartProvider, withCommercetoolsCapabilities } from '@reactionary/commercetools';
5
+ import { AlgoliaProductSearchProvider, withAlgoliaCapabilities } from "@reactionary/algolia";
6
6
 
7
7
  describe('client creation', () => {
8
8
  it('should be able to mix providers and get a valid, typed client', async () => {
@@ -21,7 +21,7 @@ describe('client creation', () => {
21
21
  search: 1,
22
22
  },
23
23
  },
24
- { product: true }
24
+ { product: { enabled: true } }
25
25
  )
26
26
  )
27
27
  .withCapability(
@@ -34,14 +34,14 @@ describe('client creation', () => {
34
34
  projectKey: '',
35
35
  scopes: [],
36
36
  facetFieldsForSearch: []
37
- }, { cart: true })
37
+ }, { cart: { enabled: true } })
38
38
  )
39
39
  .withCapability(
40
40
  withAlgoliaCapabilities({
41
41
  apiKey: '',
42
42
  appId: '',
43
43
  indexName: ''
44
- }, { productSearch: true })
44
+ }, { productSearch: { enabled: true } })
45
45
  )
46
46
  .withCache(new NoOpCache())
47
47
  .build();
@@ -3,13 +3,13 @@ import {
3
3
  ClientBuilder,
4
4
  NoOpCache,
5
5
  } from '@reactionary/core';
6
- import type { CommercetoolsConfiguration } from '@reactionary/provider-commercetools';
7
- import { withCommercetoolsCapabilities } from '@reactionary/provider-commercetools';
8
- import { withAlgoliaCapabilities } from '@reactionary/provider-algolia';
9
- import { withMedusaCapabilities } from '@reactionary/provider-medusa';
10
- import { withMeilisearchCapabilities } from '@reactionary/provider-meilisearch';
11
- import { withFakeCapabilities } from '@reactionary/provider-fake';
12
- import type { FakeConfiguration } from '@reactionary/provider-fake';
6
+ import type { CommercetoolsConfiguration } from '@reactionary/commercetools';
7
+ import { withCommercetoolsCapabilities } from '@reactionary/commercetools';
8
+ import { withAlgoliaCapabilities } from "@reactionary/algolia";
9
+ import { withMedusaCapabilities } from '@reactionary/medusa';
10
+ import { withMeilisearchCapabilities } from '@reactionary/meilisearch';
11
+ import { withFakeCapabilities } from '@reactionary/fake';
12
+ import type { FakeConfiguration } from '@reactionary/fake';
13
13
 
14
14
  export function getAlgoliaTestConfiguration() {
15
15
  return {
@@ -99,20 +99,20 @@ export function createClient(provider: PrimaryProvider) {
99
99
  if (provider === PrimaryProvider.MEDUSA) {
100
100
  builder = builder.withCapability(
101
101
  withMedusaCapabilities( getMedusaTestConfiguration(), {
102
- cart: true,
103
- product: true,
104
- category: true,
105
- checkout: true,
106
- identity: true,
107
- inventory: true,
108
- order: true,
109
- price: true,
110
- productSearch: true,
111
- productRecommendations: true,
112
- productAssociations: true,
113
- orderSearch: true,
114
- store: true,
115
- profile: true,
102
+ cart: { enabled: true },
103
+ product: { enabled: true },
104
+ category: { enabled: true },
105
+ checkout: { enabled: true },
106
+ identity: { enabled: true },
107
+ inventory: { enabled: true },
108
+ order: { enabled: true },
109
+ price: { enabled: true },
110
+ productSearch: { enabled: true },
111
+ productRecommendations: { enabled: true },
112
+ productAssociations: { enabled: true },
113
+ orderSearch: { enabled: true },
114
+ store: { enabled: true },
115
+ profile: { enabled: true },
116
116
  })
117
117
  );
118
118
  }
@@ -120,11 +120,11 @@ export function createClient(provider: PrimaryProvider) {
120
120
  if (provider === PrimaryProvider.FAKE) {
121
121
  builder = builder.withCapability(
122
122
  withFakeCapabilities( getFakeConfiguration() , {
123
- price: true,
124
- inventory: true,
125
- product: true,
126
- productReviews: true,
127
- productAssociations: true,
123
+ price: { enabled: true },
124
+ inventory: { enabled: true },
125
+ product: { enabled: true },
126
+ productReviews: { enabled: true },
127
+ productAssociations: { enabled: true },
128
128
  }
129
129
  ))
130
130
  }
@@ -132,21 +132,21 @@ export function createClient(provider: PrimaryProvider) {
132
132
  if (provider === PrimaryProvider.COMMERCETOOLS) {
133
133
  builder = builder.withCapability(
134
134
  withCommercetoolsCapabilities(getCommercetoolsTestConfiguration(), {
135
- cart: true,
136
- product: true,
137
- category: true,
138
- checkout: true,
139
- identity: true,
140
- inventory: true,
141
- order: true,
142
- price: true,
143
- productSearch: true,
144
- productAssociations: true,
145
- productReviews: true,
146
- productList: true,
147
- orderSearch: true,
148
- store: true,
149
- profile: true,
135
+ cart: { enabled: true },
136
+ product: { enabled: true },
137
+ category: { enabled: true },
138
+ checkout: { enabled: true },
139
+ identity: { enabled: true },
140
+ inventory: { enabled: true },
141
+ order: { enabled: true },
142
+ price: { enabled: true },
143
+ productSearch: { enabled: true },
144
+ productAssociations: { enabled: true },
145
+ productReviews: { enabled: true },
146
+ productList: { enabled: true },
147
+ orderSearch: { enabled: true },
148
+ store: { enabled: true },
149
+ profile: { enabled: true },
150
150
  })
151
151
  );
152
152
  }
@@ -155,8 +155,8 @@ export function createClient(provider: PrimaryProvider) {
155
155
  if (provider === PrimaryProvider.ALGOLIA) {
156
156
  builder = builder.withCapability(
157
157
  withAlgoliaCapabilities(getAlgoliaTestConfiguration(), {
158
- productSearch: true,
159
- productRecommendations: true,
158
+ productSearch: { enabled: true },
159
+ productRecommendations: { enabled: true },
160
160
  })
161
161
  );
162
162
  }
@@ -164,15 +164,15 @@ export function createClient(provider: PrimaryProvider) {
164
164
  if (provider === PrimaryProvider.MEILISEARCH) {
165
165
  builder = builder.withCapability(
166
166
  withMeilisearchCapabilities(getMeilisearchTestConfiguration(), {
167
- productSearch: true,
168
- orderSearch: true,
169
- productRecommendations: true,
167
+ productSearch: { enabled: true },
168
+ orderSearch: { enabled: true },
169
+ productRecommendations: { enabled: true },
170
170
  }),
171
171
  );
172
172
  builder = builder.withCapability(
173
173
  withMedusaCapabilities(getMedusaTestConfiguration(), {
174
- cart: true,
175
- identity: true,
174
+ cart: { enabled: true },
175
+ identity: { enabled: true },
176
176
  })
177
177
  );
178
178
  }
@@ -5,5 +5,6 @@
5
5
  "declaration": true,
6
6
  "types": ["node"]
7
7
  },
8
- "include": ["src/**/*.ts"]
8
+ "include": ["src/**/*.ts"],
9
+ "exclude": ["src/**/*.spec.ts", "src/utils.ts"]
9
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reactionary/source",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "dependencies": {
@@ -0,0 +1,11 @@
1
+ # algolia
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build algolia` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test algolia` to execute the unit tests via [Vitest](https://vitest.dev/).
@@ -12,9 +12,7 @@ export default [
12
12
  '{projectRoot}/eslint.config.{js,cjs,mjs,ts,cts,mts}',
13
13
  '{projectRoot}/esbuild.config.{js,ts,mjs,mts}',
14
14
  '{projectRoot}/vite.config.{js,ts,mjs,mts}',
15
- '{projectRoot}/**/*.spec.ts',
16
15
  ],
17
- ignoredDependencies: ['vitest', '@nx/vite'],
18
16
  },
19
17
  ],
20
18
  },
@@ -1,13 +1,15 @@
1
1
  {
2
- "name": "@reactionary/provider-algolia",
2
+ "name": "@reactionary/algolia",
3
3
  "version": "0.0.1",
4
- "main": "index.js",
5
- "types": "src/index.d.ts",
4
+ "type": "module",
5
+ "main": "./index.js",
6
+ "types": "./src/index.d.ts",
6
7
  "dependencies": {
7
8
  "@reactionary/core": "0.0.1",
9
+ "zod": "4.1.9",
8
10
  "algoliasearch": "^5.48.0",
9
- "zod": "4.1.9"
11
+ "vitest": "^4.0.9",
12
+ "@nx/vite": "22.4.5"
10
13
  },
11
- "type": "module",
12
14
  "sideEffects": false
13
15
  }
@@ -1,7 +1,7 @@
1
1
  {
2
- "name": "posthog",
2
+ "name": "algolia",
3
3
  "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "providers/posthog/src",
4
+ "sourceRoot": "packages/algolia/src",
5
5
  "projectType": "library",
6
6
  "release": {
7
7
  "version": {
@@ -16,10 +16,10 @@
16
16
  "executor": "@nx/esbuild:esbuild",
17
17
  "outputs": ["{options.outputPath}"],
18
18
  "options": {
19
- "outputPath": "dist/providers/posthog",
20
- "main": "providers/posthog/src/index.ts",
21
- "tsConfig": "providers/posthog/tsconfig.lib.json",
22
- "assets": ["providers/posthog/*.md"],
19
+ "outputPath": "dist/packages/algolia",
20
+ "main": "packages/algolia/src/index.ts",
21
+ "tsConfig": "packages/algolia/tsconfig.lib.json",
22
+ "assets": ["packages/algolia/*.md"],
23
23
  "format": ["esm"],
24
24
  "bundle": false
25
25
  }
@@ -1,5 +1,5 @@
1
1
  import {
2
- AnalyticsProvider,
2
+ AnalyticsCapability,
3
3
  type AnalyticsMutationProductAddToCartEvent,
4
4
  type AnalyticsMutationProductSummaryClickEvent,
5
5
  type AnalyticsMutationProductSummaryViewEvent,
@@ -18,7 +18,7 @@ import {
18
18
  import type { AlgoliaConfiguration } from '../schema/configuration.schema.js';
19
19
  import type { AlgoliaProductSearchIdentifier } from '../schema/search.schema.js';
20
20
 
21
- export class AlgoliaAnalyticsProvider extends AnalyticsProvider {
21
+ export class AlgoliaAnalyticsCapability extends AnalyticsCapability {
22
22
  protected client: InsightsClient;
23
23
  protected config: AlgoliaConfiguration;
24
24
 
@@ -48,7 +48,7 @@ export class AlgoliaAnalyticsProvider extends AnalyticsProvider {
48
48
  .key,
49
49
  } satisfies AddedToCartObjectIDsAfterSearch;
50
50
 
51
- const response = await this.client.pushEvents({
51
+ await this.client.pushEvents({
52
52
  events: [algoliaEvent],
53
53
  });
54
54
  }
@@ -69,7 +69,7 @@ export class AlgoliaAnalyticsProvider extends AnalyticsProvider {
69
69
  .key,
70
70
  } satisfies ClickedObjectIDsAfterSearch;
71
71
 
72
- const response = await this.client.pushEvents({
72
+ await this.client.pushEvents({
73
73
  events: [algoliaEvent],
74
74
  });
75
75
  }
@@ -87,7 +87,7 @@ export class AlgoliaAnalyticsProvider extends AnalyticsProvider {
87
87
  userToken: this.context.session.identityContext.personalizationKey,
88
88
  } satisfies ViewedObjectIDs;
89
89
 
90
- const response = await this.client.pushEvents({
90
+ await this.client.pushEvents({
91
91
  events: [algoliaEvent],
92
92
  });
93
93
  }
@@ -107,7 +107,7 @@ export class AlgoliaAnalyticsProvider extends AnalyticsProvider {
107
107
  userToken: this.context.session.identityContext.personalizationKey,
108
108
  } satisfies PurchasedObjectIDs;
109
109
 
110
- const response = await this.client.pushEvents({
110
+ await this.client.pushEvents({
111
111
  events: [algoliaEvent],
112
112
  });
113
113
  }
@@ -0,0 +1,3 @@
1
+ export * from './analytics.capability.js';
2
+ export * from './product-search.capability.js';
3
+ export * from './product-recommendations.capability.js';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  type Cache,
3
- ProductRecommendationsProvider,
3
+ ProductRecommendationsCapability,
4
4
  type ProductRecommendation,
5
5
  type ProductRecommendationAlgorithmFrequentlyBoughtTogetherQuery,
6
6
  type ProductRecommendationAlgorithmSimilarProductsQuery,
@@ -29,7 +29,7 @@ import type { AlgoliaNativeRecord, AlgoliaNativeVariant } from '../schema/search
29
29
 
30
30
 
31
31
  /**
32
- * AlgoliaProductRecommendationsProvider
32
+ * AlgoliaProductRecommendationsCapability
33
33
  *
34
34
  * Provides product recommendations using Algolia's Recommend API.
35
35
  * Supports frequentlyBoughtTogether, similar, related, and trendingInCategory algorithms.
@@ -41,7 +41,7 @@ import type { AlgoliaNativeRecord, AlgoliaNativeVariant } from '../schema/search
41
41
 
42
42
 
43
43
 
44
- export class AlgoliaProductRecommendationsProvider extends ProductRecommendationsProvider {
44
+ export class AlgoliaProductRecommendationsCapability extends ProductRecommendationsCapability {
45
45
  protected config: AlgoliaConfiguration;
46
46
  protected client: LiteClient;
47
47
 
@@ -0,0 +1,119 @@
1
+ import {
2
+ type Cache,
3
+ type FacetIdentifier,
4
+ FacetIdentifierSchema,
5
+ type FacetValueIdentifier,
6
+ FacetValueIdentifierSchema,
7
+ ProductSearchCapability,
8
+ type ProductSearchFactory,
9
+ type ProductSearchFactoryOutput,
10
+ type ProductSearchFactoryWithOutput,
11
+ type ProductSearchQueryByTerm,
12
+ ProductSearchQueryByTermSchema,
13
+ type ProductSearchQueryCreateNavigationFilter,
14
+ type RequestContext,
15
+ type Result,
16
+ ProductSearchResultSchema,
17
+ Reactionary,
18
+ success,
19
+ } from '@reactionary/core';
20
+ import { algoliasearch } from 'algoliasearch';
21
+ import type { AlgoliaConfiguration } from '../schema/configuration.schema.js';
22
+ import type { AlgoliaNativeRecord } from '../schema/search.schema.js';
23
+ import type { AlgoliaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
24
+
25
+ export class AlgoliaProductSearchCapability<
26
+ TFactory extends ProductSearchFactory = AlgoliaProductSearchFactory,
27
+ > extends ProductSearchCapability<ProductSearchFactoryOutput<TFactory>> {
28
+ protected config: AlgoliaConfiguration;
29
+ protected factory: ProductSearchFactoryWithOutput<TFactory>;
30
+
31
+ constructor(
32
+ cache: Cache,
33
+ context: RequestContext,
34
+ config: AlgoliaConfiguration,
35
+ factory: ProductSearchFactoryWithOutput<TFactory>,
36
+ ) {
37
+ super(cache, context);
38
+ this.config = config;
39
+ this.factory = factory;
40
+ }
41
+
42
+ protected queryByTermPayload(payload: ProductSearchQueryByTerm) {
43
+ const facetsThatAreNotCategory = payload.search.facets.filter(
44
+ (x) => x.facet.key !== 'categories',
45
+ );
46
+ const categoryFacet =
47
+ payload.search.facets.find((x) => x.facet.key === 'categories') ||
48
+ payload.search.categoryFilter;
49
+
50
+ const finalFilters = [...(payload.search.filters || [])];
51
+
52
+ const finalFacetFilters = [
53
+ ...facetsThatAreNotCategory.map((x) => `${x.facet.key}:${x.key}`),
54
+ ];
55
+
56
+ if (categoryFacet) {
57
+ finalFilters.push(`categories:"${categoryFacet.key}"`);
58
+ }
59
+
60
+ return {
61
+ indexName: this.config.indexName,
62
+ query: payload.search.term,
63
+ page: payload.search.paginationOptions.pageNumber - 1,
64
+ hitsPerPage: payload.search.paginationOptions.pageSize,
65
+ facets: ['*'],
66
+ analytics: true,
67
+ clickAnalytics: true,
68
+ facetFilters: finalFacetFilters,
69
+ filters: finalFilters.join(' AND '),
70
+ };
71
+ }
72
+
73
+ @Reactionary({
74
+ inputSchema: ProductSearchQueryByTermSchema,
75
+ outputSchema: ProductSearchResultSchema,
76
+ })
77
+ public override async queryByTerm(
78
+ payload: ProductSearchQueryByTerm,
79
+ ): Promise<Result<ProductSearchFactoryOutput<TFactory>>> {
80
+ const client = algoliasearch(this.config.appId, this.config.apiKey);
81
+
82
+ const remote = await client.search<AlgoliaNativeRecord>({
83
+ requests: [this.queryByTermPayload(payload)],
84
+ });
85
+
86
+ const input = remote.results[0];
87
+ const result = this.factory.parseSearchResult(this.context, input, payload);
88
+
89
+ for (const selectedFacet of payload.search.facets) {
90
+ const facet = result.facets.find(
91
+ (f) => f.identifier.key === selectedFacet.facet.key,
92
+ );
93
+ if (!facet) {
94
+ continue;
95
+ }
96
+ const value = facet.values.find((v) => v.identifier.key === selectedFacet.key);
97
+ if (value) {
98
+ value.active = true;
99
+ }
100
+ }
101
+
102
+ return success(result);
103
+ }
104
+
105
+ public override async createCategoryNavigationFilter(
106
+ payload: ProductSearchQueryCreateNavigationFilter,
107
+ ): Promise<Result<FacetValueIdentifier>> {
108
+ const facetIdentifier = FacetIdentifierSchema.parse({
109
+ key: 'categories',
110
+ } satisfies Partial<FacetIdentifier>);
111
+
112
+ const facetValueIdentifier = FacetValueIdentifierSchema.parse({
113
+ facet: facetIdentifier,
114
+ key: payload.categoryPath.map((c) => c.name).join(' > '),
115
+ } satisfies Partial<FacetValueIdentifier>);
116
+
117
+ return success(facetValueIdentifier);
118
+ }
119
+ }