@reactionary/source 0.6.2 → 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 (427) hide show
  1. package/README.md +19 -0
  2. package/examples/node/package.json +7 -7
  3. package/examples/node/src/basic/basic-node-provider-model-extension.spec.ts +1 -1
  4. package/examples/node/src/basic/basic-node-provider-query-extension.spec.ts +1 -1
  5. package/examples/node/src/basic/basic-node-setup.spec.ts +1 -1
  6. package/examples/node/src/basic/client-creation.spec.ts +3 -3
  7. package/examples/node/src/utils.ts +7 -7
  8. package/package.json +1 -1
  9. package/packages/algolia/README.md +11 -0
  10. package/{providers/google-analytics → packages/algolia}/eslint.config.mjs +0 -2
  11. package/{providers → packages}/algolia/package.json +7 -5
  12. package/{providers/posthog → packages/algolia}/project.json +6 -6
  13. package/{providers/algolia/src/providers/analytics.provider.ts → packages/algolia/src/capabilities/analytics.capability.ts} +2 -2
  14. package/packages/algolia/src/capabilities/index.ts +3 -0
  15. package/{providers/algolia/src/providers/product-recommendations.provider.ts → packages/algolia/src/capabilities/product-recommendations.capability.ts} +3 -3
  16. package/{providers/algolia/src/providers/product-search.provider.ts → packages/algolia/src/capabilities/product-search.capability.ts} +3 -3
  17. package/{providers → packages}/algolia/src/core/initialize.ts +12 -12
  18. package/packages/algolia/src/core/initialize.types.ts +107 -0
  19. package/{providers → packages}/algolia/src/index.ts +1 -1
  20. package/{providers → packages}/algolia/src/schema/capabilities.schema.ts +23 -23
  21. package/{providers → packages}/algolia/src/test/analytics.spec.ts +4 -4
  22. package/packages/algolia/vite.config.ts +26 -0
  23. package/packages/algolia/vitest.config.mts +21 -0
  24. package/packages/commercetools/README.md +11 -0
  25. package/{core → packages/commercetools}/eslint.config.mjs +2 -2
  26. package/packages/commercetools/package.json +17 -0
  27. package/{providers → packages}/commercetools/project.json +7 -8
  28. package/{providers/commercetools/src/providers/cart.provider.ts → packages/commercetools/src/capabilities/cart.capability.ts} +3 -3
  29. package/{providers/commercetools/src/providers/category.provider.ts → packages/commercetools/src/capabilities/category.capability.ts} +4 -4
  30. package/{providers/commercetools/src/providers/checkout.provider.ts → packages/commercetools/src/capabilities/checkout.capability.ts} +3 -3
  31. package/{providers/commercetools/src/providers/identity.provider.ts → packages/commercetools/src/capabilities/identity.capability.ts} +3 -3
  32. package/packages/commercetools/src/capabilities/index.ts +15 -0
  33. package/{providers/commercetools/src/providers/inventory.provider.ts → packages/commercetools/src/capabilities/inventory.capability.ts} +3 -3
  34. package/{providers/commercetools/src/providers/order-search.provider.ts → packages/commercetools/src/capabilities/order-search.capability.ts} +4 -4
  35. package/{providers/commercetools/src/providers/order.provider.ts → packages/commercetools/src/capabilities/order.capability.ts} +3 -3
  36. package/{providers/commercetools/src/providers/price.provider.ts → packages/commercetools/src/capabilities/price.capability.ts} +3 -3
  37. package/{providers/commercetools/src/providers/product-associations.provider.ts → packages/commercetools/src/capabilities/product-associations.capability.ts} +3 -3
  38. package/{providers/commercetools/src/providers/product-list.provider.ts → packages/commercetools/src/capabilities/product-list.capability.ts} +3 -3
  39. package/{providers/commercetools/src/providers/product-reviews.provider.ts → packages/commercetools/src/capabilities/product-reviews.capability.ts} +3 -3
  40. package/{providers/commercetools/src/providers/product-search.provider.ts → packages/commercetools/src/capabilities/product-search.capability.ts} +3 -3
  41. package/{providers/commercetools/src/providers/product.provider.ts → packages/commercetools/src/capabilities/product.capability.ts} +4 -4
  42. package/{providers/commercetools/src/providers/profile.provider.ts → packages/commercetools/src/capabilities/profile.capability.ts} +3 -3
  43. package/{providers/commercetools/src/providers/store.provider.ts → packages/commercetools/src/capabilities/store.capability.ts} +3 -3
  44. package/{providers → packages}/commercetools/src/core/capability-descriptors.ts +48 -48
  45. package/{providers → packages}/commercetools/src/core/client.ts +2 -2
  46. package/{providers → packages}/commercetools/src/core/initialize.ts +5 -5
  47. package/{providers → packages}/commercetools/src/core/initialize.types.ts +47 -47
  48. package/{providers → packages}/commercetools/src/factories/checkout/checkout-initializer-overrides.example.ts +4 -4
  49. package/{providers/commercetools/src/factories/product/product-provider-custom-method-only.example.ts → packages/commercetools/src/factories/product/product-capability-custom-method-only.example.ts} +6 -6
  50. package/{providers/commercetools/src/factories/product/product-provider-schema-signature-extension.example.ts → packages/commercetools/src/factories/product/product-capability-schema-signature-extension.example.ts} +4 -4
  51. package/{providers → packages}/commercetools/src/index.ts +9 -9
  52. package/{providers → packages}/commercetools/src/schema/capabilities.schema.ts +61 -61
  53. package/{providers → packages}/commercetools/src/test/caching.spec.ts +8 -8
  54. package/{providers/algolia → packages/commercetools}/tsconfig.json +1 -1
  55. package/{core → packages/commercetools}/tsconfig.lib.json +1 -1
  56. package/packages/commercetools/tsconfig.spec.json +28 -0
  57. package/packages/commercetools/vite.config.ts +26 -0
  58. package/packages/commercetools/vitest.config.mts +21 -0
  59. package/{providers/fake → packages/core}/eslint.config.mjs +2 -1
  60. package/{core → packages/core}/package.json +7 -7
  61. package/packages/core/project.json +33 -0
  62. package/{core/src/providers/analytics.provider.ts → packages/core/src/capabilities/analytics.capability.ts} +8 -8
  63. package/{core/src/providers/base.provider.ts → packages/core/src/capabilities/base.capability.ts} +2 -2
  64. package/{core/src/providers/cart.provider.ts → packages/core/src/capabilities/cart.capability.ts} +3 -3
  65. package/{core/src/providers/category.provider.ts → packages/core/src/capabilities/category.capability.ts} +5 -5
  66. package/{core/src/providers/checkout.provider.ts → packages/core/src/capabilities/checkout.capability.ts} +3 -3
  67. package/{core/src/providers/identity.provider.ts → packages/core/src/capabilities/identity.capability.ts} +2 -2
  68. package/packages/core/src/capabilities/index.ts +18 -0
  69. package/{core/src/providers/inventory.provider.ts → packages/core/src/capabilities/inventory.capability.ts} +2 -2
  70. package/{core/src/providers/order-search.provider.ts → packages/core/src/capabilities/order-search.capability.ts} +3 -3
  71. package/{core/src/providers/order.provider.ts → packages/core/src/capabilities/order.capability.ts} +2 -2
  72. package/{core/src/providers/price.provider.ts → packages/core/src/capabilities/price.capability.ts} +2 -2
  73. package/{core/src/providers/product-associations.provider.ts → packages/core/src/capabilities/product-associations.capability.ts} +3 -3
  74. package/{core/src/providers/product-list.provider.ts → packages/core/src/capabilities/product-list.capability.ts} +3 -3
  75. package/{core/src/providers/product-recommendations.provider.ts → packages/core/src/capabilities/product-recommendations.capability.ts} +21 -21
  76. package/{core/src/providers/product-reviews.provider.ts → packages/core/src/capabilities/product-reviews.capability.ts} +3 -3
  77. package/{core/src/providers/product-search.provider.ts → packages/core/src/capabilities/product-search.capability.ts} +3 -3
  78. package/{core/src/providers/product.provider.ts → packages/core/src/capabilities/product.capability.ts} +2 -2
  79. package/{core/src/providers/profile.provider.ts → packages/core/src/capabilities/profile.capability.ts} +2 -2
  80. package/{core/src/providers/store.provider.ts → packages/core/src/capabilities/store.capability.ts} +2 -2
  81. package/{core → packages/core}/src/client/client-builder.ts +13 -14
  82. package/packages/core/src/client/client.ts +35 -0
  83. package/{core → packages/core}/src/decorators/reactionary.decorator.ts +7 -7
  84. package/{core → packages/core}/src/index.ts +1 -1
  85. package/{core → packages/core}/src/test/client-builder.spec.ts +20 -20
  86. package/{core → packages/core}/src/test/reactionary.decorator.spec.ts +27 -27
  87. package/{providers/meilisearch → packages/core}/tsconfig.json +1 -1
  88. package/{providers/medusa → packages/core}/tsconfig.lib.json +1 -2
  89. package/packages/core/tsconfig.spec.json +28 -0
  90. package/packages/core/vite.config.ts +26 -0
  91. package/packages/core/vitest.config.mts +21 -0
  92. package/packages/fake/README.md +11 -0
  93. package/{providers/algolia → packages/fake}/eslint.config.mjs +2 -1
  94. package/{providers → packages}/fake/package.json +6 -4
  95. package/{providers → packages}/fake/project.json +7 -8
  96. package/{providers/fake/src/providers/analytics.provider.ts → packages/fake/src/capabilities/analytics.capability.ts} +2 -2
  97. package/{providers/fake/src/providers/cart.provider.ts → packages/fake/src/capabilities/cart.capability.ts} +3 -3
  98. package/{providers/fake/src/providers/category.provider.ts → packages/fake/src/capabilities/category.capability.ts} +3 -3
  99. package/{providers/fake/src/providers/checkout.provider.ts → packages/fake/src/capabilities/checkout.capability.ts} +3 -3
  100. package/{providers/fake/src/providers/identity.provider.ts → packages/fake/src/capabilities/identity.capability.ts} +3 -3
  101. package/packages/fake/src/capabilities/index.ts +15 -0
  102. package/{providers/fake/src/providers/inventory.provider.ts → packages/fake/src/capabilities/inventory.capability.ts} +3 -3
  103. package/{providers/fake/src/providers/order-search.provider.ts → packages/fake/src/capabilities/order-search.capability.ts} +3 -3
  104. package/{providers/fake/src/providers/order.provider.ts → packages/fake/src/capabilities/order.capability.ts} +3 -3
  105. package/{providers/fake/src/providers/price.provider.ts → packages/fake/src/capabilities/price.capability.ts} +3 -3
  106. package/{providers/fake/src/providers/product-associations.provider.ts → packages/fake/src/capabilities/product-associations.capability.ts} +3 -3
  107. package/{providers/fake/src/providers/product-reviews.provider.ts → packages/fake/src/capabilities/product-reviews.capability.ts} +3 -3
  108. package/{providers/fake/src/providers/product-search.provider.ts → packages/fake/src/capabilities/product-search.capability.ts} +3 -3
  109. package/{providers/fake/src/providers/product.provider.ts → packages/fake/src/capabilities/product.capability.ts} +3 -3
  110. package/{providers/fake/src/providers/profile.provider.ts → packages/fake/src/capabilities/profile.capability.ts} +3 -3
  111. package/{providers/fake/src/providers/store.provider.ts → packages/fake/src/capabilities/store.capability.ts} +3 -3
  112. package/{providers → packages}/fake/src/core/initialize.ts +73 -73
  113. package/{providers → packages}/fake/src/core/initialize.types.ts +45 -45
  114. package/{providers → packages}/fake/src/index.ts +1 -1
  115. package/{providers → packages}/fake/src/schema/capabilities.schema.ts +32 -32
  116. package/{providers/fake/src/test/cart.provider.spec.ts → packages/fake/src/test/cart.capability.spec.ts} +6 -6
  117. package/{providers/fake/src/test/category.provider.spec.ts → packages/fake/src/test/category.capability.spec.ts} +3 -3
  118. package/{providers/fake/src/test/checkout.provider.spec.ts → packages/fake/src/test/checkout.capability.spec.ts} +3 -3
  119. package/{providers/fake/src/test/order-search.provider.spec.ts → packages/fake/src/test/order-search.capability.spec.ts} +3 -3
  120. package/{providers/fake/src/test/order.provider.spec.ts → packages/fake/src/test/order.capability.spec.ts} +3 -3
  121. package/{providers/fake/src/test/price.provider.spec.ts → packages/fake/src/test/price.capability.spec.ts} +3 -3
  122. package/{providers/fake/src/test/product.provider.spec.ts → packages/fake/src/test/product.capability.spec.ts} +3 -3
  123. package/{providers/fake/src/test/profile.provider.spec.ts → packages/fake/src/test/profile.capability.spec.ts} +3 -3
  124. package/{providers/commercetools → packages/fake}/tsconfig.json +1 -1
  125. package/packages/fake/tsconfig.lib.json +23 -0
  126. package/packages/fake/tsconfig.spec.json +28 -0
  127. package/packages/fake/vite.config.ts +26 -0
  128. package/packages/fake/vitest.config.mts +21 -0
  129. package/packages/google-analytics/eslint.config.mjs +23 -0
  130. package/{providers → packages}/google-analytics/package.json +7 -5
  131. package/{providers → packages}/google-analytics/project.json +5 -5
  132. package/{providers/google-analytics/src/providers/analytics.provider.ts → packages/google-analytics/src/capabilities/analytics.capability.ts} +2 -2
  133. package/{providers → packages}/google-analytics/src/core/initialize.ts +4 -4
  134. package/packages/google-analytics/src/core/initialize.types.ts +47 -0
  135. package/{providers → packages}/google-analytics/src/index.ts +1 -1
  136. package/{providers → packages}/google-analytics/src/schema/capabilities.schema.ts +7 -7
  137. package/{providers/google-analytics/src/test/analytics.provider.spec.ts → packages/google-analytics/src/test/analytics.capability.spec.ts} +7 -7
  138. package/packages/google-analytics/tsconfig.json +24 -0
  139. package/packages/google-analytics/tsconfig.lib.json +23 -0
  140. package/packages/google-analytics/tsconfig.spec.json +28 -0
  141. package/{providers → packages}/google-analytics/vite.config.ts +2 -2
  142. package/{providers → packages}/google-analytics/vitest.config.mts +2 -2
  143. package/packages/medusa/README.md +11 -0
  144. package/packages/medusa/eslint.config.mjs +23 -0
  145. package/packages/medusa/package.json +17 -0
  146. package/{providers → packages}/medusa/project.json +7 -8
  147. package/{providers/medusa/src/providers/cart.provider.ts → packages/medusa/src/capabilities/cart.capability.ts} +3 -3
  148. package/{providers/medusa/src/providers/category.provider.ts → packages/medusa/src/capabilities/category.capability.ts} +3 -3
  149. package/{providers/medusa/src/providers/checkout.provider.ts → packages/medusa/src/capabilities/checkout.capability.ts} +3 -3
  150. package/{providers/medusa/src/providers/identity.provider.ts → packages/medusa/src/capabilities/identity.capability.ts} +2 -2
  151. package/{providers/medusa/src/providers/inventory.provider.ts → packages/medusa/src/capabilities/inventory.capability.ts} +3 -3
  152. package/{providers/medusa/src/providers/order-search.provider.ts → packages/medusa/src/capabilities/order-search.capability.ts} +3 -3
  153. package/{providers/medusa/src/providers/order.provider.ts → packages/medusa/src/capabilities/order.capability.ts} +3 -3
  154. package/{providers/medusa/src/providers/price.provider.ts → packages/medusa/src/capabilities/price.capability.ts} +3 -3
  155. package/{providers/medusa/src/providers/product-associations.provider.ts → packages/medusa/src/capabilities/product-associations.capability.ts} +3 -3
  156. package/{providers/medusa/src/providers/product-recommendations.provider.ts → packages/medusa/src/capabilities/product-recommendations.capability.ts} +3 -3
  157. package/{providers/medusa/src/providers/product-search.provider.ts → packages/medusa/src/capabilities/product-search.capability.ts} +3 -3
  158. package/{providers/medusa/src/providers/product.provider.ts → packages/medusa/src/capabilities/product.capability.ts} +3 -3
  159. package/{providers/medusa/src/providers/profile.provider.ts → packages/medusa/src/capabilities/profile.capability.ts} +4 -4
  160. package/{providers → packages}/medusa/src/core/initialize.ts +64 -64
  161. package/{providers → packages}/medusa/src/core/initialize.types.ts +52 -52
  162. package/packages/medusa/src/index.ts +17 -0
  163. package/{providers → packages}/medusa/src/schema/capabilities.schema.ts +64 -64
  164. package/{providers/medusa/src/test/cart.provider.spec.ts → packages/medusa/src/test/cart.capability.spec.ts} +3 -3
  165. package/{providers/medusa/src/test/category.provider.spec.ts → packages/medusa/src/test/category.capability.spec.ts} +3 -3
  166. package/{providers/medusa/src/test/identity.provider.spec.ts → packages/medusa/src/test/identity.capability.spec.ts} +3 -3
  167. package/{providers/medusa/src/test/inventory.provider.spec.ts → packages/medusa/src/test/inventory.capability.spec.ts} +3 -3
  168. package/{providers/medusa/src/test/large-cart.provider.spec.ts → packages/medusa/src/test/large-cart.capability.spec.ts} +6 -6
  169. package/{providers/medusa/src/test/price.provider.spec.ts → packages/medusa/src/test/price.capability.spec.ts} +3 -3
  170. package/{providers/medusa/src/test/product.provider.spec.ts → packages/medusa/src/test/product.capability.spec.ts} +3 -3
  171. package/{providers/medusa/src/test/search.provider.spec.ts → packages/medusa/src/test/search.capability.spec.ts} +4 -4
  172. package/{providers → packages}/medusa/src/utils/medusa-helpers.ts +1 -1
  173. package/packages/medusa/tsconfig.json +24 -0
  174. package/packages/medusa/tsconfig.lib.json +23 -0
  175. package/packages/medusa/tsconfig.spec.json +28 -0
  176. package/packages/medusa/vite.config.ts +26 -0
  177. package/packages/medusa/vitest.config.mts +21 -0
  178. package/packages/meilisearch/README.md +11 -0
  179. package/packages/meilisearch/eslint.config.mjs +23 -0
  180. package/packages/meilisearch/package.json +15 -0
  181. package/{providers → packages}/meilisearch/project.json +7 -8
  182. package/packages/meilisearch/src/capabilities/index.ts +3 -0
  183. package/{providers/meilisearch/src/providers/order-search.provider.ts → packages/meilisearch/src/capabilities/order-search.capability.ts} +3 -3
  184. package/{providers/meilisearch/src/providers/product-recommendations.provider.ts → packages/meilisearch/src/capabilities/product-recommendations.capability.ts} +3 -3
  185. package/{providers/meilisearch/src/providers/product-search.provider.ts → packages/meilisearch/src/capabilities/product-search.capability.ts} +3 -3
  186. package/{providers → packages}/meilisearch/src/core/initialize.ts +13 -13
  187. package/{providers → packages}/meilisearch/src/core/initialize.types.ts +37 -37
  188. package/{providers → packages}/meilisearch/src/index.ts +3 -3
  189. package/{providers → packages}/meilisearch/src/schema/capabilities.schema.ts +24 -24
  190. package/packages/meilisearch/tsconfig.json +24 -0
  191. package/packages/meilisearch/tsconfig.lib.json +23 -0
  192. package/packages/meilisearch/tsconfig.spec.json +28 -0
  193. package/packages/meilisearch/vite.config.ts +26 -0
  194. package/packages/meilisearch/vitest.config.mts +21 -0
  195. package/tsconfig.base.json +13 -21
  196. package/core/project.json +0 -34
  197. package/core/src/client/client.ts +0 -35
  198. package/core/src/providers/index.ts +0 -18
  199. package/core/tsconfig.json +0 -24
  200. package/core/tsconfig.spec.json +0 -4
  201. package/core/vitest.config.ts +0 -14
  202. package/providers/algolia/README.md +0 -56
  203. package/providers/algolia/project.json +0 -34
  204. package/providers/algolia/src/core/initialize.types.ts +0 -107
  205. package/providers/algolia/src/providers/index.ts +0 -3
  206. package/providers/algolia/tsconfig.lib.json +0 -10
  207. package/providers/algolia/tsconfig.spec.json +0 -4
  208. package/providers/algolia/vitest.config.ts +0 -14
  209. package/providers/commercetools/README.md +0 -65
  210. package/providers/commercetools/eslint.config.mjs +0 -22
  211. package/providers/commercetools/package.json +0 -15
  212. package/providers/commercetools/src/providers/index.ts +0 -15
  213. package/providers/commercetools/tsconfig.lib.json +0 -10
  214. package/providers/commercetools/tsconfig.spec.json +0 -4
  215. package/providers/commercetools/vitest.config.ts +0 -15
  216. package/providers/fake/README.md +0 -23
  217. package/providers/fake/src/providers/index.ts +0 -15
  218. package/providers/fake/tsconfig.json +0 -25
  219. package/providers/fake/tsconfig.lib.json +0 -11
  220. package/providers/fake/tsconfig.spec.json +0 -4
  221. package/providers/fake/vitest.config.ts +0 -14
  222. package/providers/google-analytics/src/core/initialize.types.ts +0 -47
  223. package/providers/medusa/README.md +0 -30
  224. package/providers/medusa/TESTING.md +0 -98
  225. package/providers/medusa/eslint.config.mjs +0 -19
  226. package/providers/medusa/package.json +0 -15
  227. package/providers/medusa/src/index.ts +0 -17
  228. package/providers/medusa/tsconfig.json +0 -24
  229. package/providers/medusa/tsconfig.spec.json +0 -4
  230. package/providers/medusa/vitest.config.ts +0 -15
  231. package/providers/meilisearch/README.md +0 -48
  232. package/providers/meilisearch/eslint.config.mjs +0 -22
  233. package/providers/meilisearch/package.json +0 -13
  234. package/providers/meilisearch/src/providers/index.ts +0 -3
  235. package/providers/meilisearch/tsconfig.lib.json +0 -10
  236. package/providers/meilisearch/tsconfig.spec.json +0 -4
  237. package/providers/meilisearch/vitest.config.ts +0 -14
  238. package/providers/posthog/README.md +0 -7
  239. package/providers/posthog/eslint.config.mjs +0 -22
  240. package/providers/posthog/package.json +0 -12
  241. package/providers/posthog/src/core/initialize.ts +0 -11
  242. package/providers/posthog/src/index.ts +0 -4
  243. package/providers/posthog/src/schema/capabilities.schema.ts +0 -8
  244. package/providers/posthog/src/schema/configuration.schema.ts +0 -8
  245. package/providers/posthog/tsconfig.json +0 -21
  246. package/providers/posthog/tsconfig.lib.json +0 -9
  247. /package/{providers → packages}/algolia/src/factories/index.ts +0 -0
  248. /package/{providers → packages}/algolia/src/factories/product-search/product-search.factory.ts +0 -0
  249. /package/{providers → packages}/algolia/src/schema/configuration.schema.ts +0 -0
  250. /package/{providers → packages}/algolia/src/schema/index.ts +0 -0
  251. /package/{providers → packages}/algolia/src/schema/product-recommendation.schema.ts +0 -0
  252. /package/{providers → packages}/algolia/src/schema/search.schema.ts +0 -0
  253. /package/{providers → packages}/algolia/src/test/client-builder-product-search-extension.example.ts +0 -0
  254. /package/{providers/google-analytics → packages/algolia}/tsconfig.json +0 -0
  255. /package/{providers/google-analytics → packages/algolia}/tsconfig.lib.json +0 -0
  256. /package/{providers/google-analytics → packages/algolia}/tsconfig.spec.json +0 -0
  257. /package/{providers → packages}/commercetools/src/core/token-cache.ts +0 -0
  258. /package/{providers → packages}/commercetools/src/factories/cart/cart.factory.ts +0 -0
  259. /package/{providers → packages}/commercetools/src/factories/category/category.factory.ts +0 -0
  260. /package/{providers → packages}/commercetools/src/factories/checkout/checkout.factory.ts +0 -0
  261. /package/{providers → packages}/commercetools/src/factories/identity/identity.factory.ts +0 -0
  262. /package/{providers → packages}/commercetools/src/factories/inventory/inventory.factory.ts +0 -0
  263. /package/{providers → packages}/commercetools/src/factories/order/order.factory.ts +0 -0
  264. /package/{providers → packages}/commercetools/src/factories/order-search/order-search.factory.ts +0 -0
  265. /package/{providers → packages}/commercetools/src/factories/price/price.factory.ts +0 -0
  266. /package/{providers → packages}/commercetools/src/factories/product/product-factory-baseline.example.ts +0 -0
  267. /package/{providers → packages}/commercetools/src/factories/product/product-factory-schema-and-parse-extension.example.ts +0 -0
  268. /package/{providers → packages}/commercetools/src/factories/product/product-factory-schema-extension.example.ts +0 -0
  269. /package/{providers → packages}/commercetools/src/factories/product/product-initializer-factory-extension.example.ts +0 -0
  270. /package/{providers → packages}/commercetools/src/factories/product/product.factory.ts +0 -0
  271. /package/{providers → packages}/commercetools/src/factories/product/utils.example.ts +0 -0
  272. /package/{providers → packages}/commercetools/src/factories/product-associations/product-associations.factory.ts +0 -0
  273. /package/{providers → packages}/commercetools/src/factories/product-list/product-list.factory.ts +0 -0
  274. /package/{providers → packages}/commercetools/src/factories/product-reviews/product-reviews.factory.ts +0 -0
  275. /package/{providers → packages}/commercetools/src/factories/product-search/product-search.factory.ts +0 -0
  276. /package/{providers → packages}/commercetools/src/factories/profile/profile.factory.ts +0 -0
  277. /package/{providers → packages}/commercetools/src/factories/store/store.factory.ts +0 -0
  278. /package/{providers → packages}/commercetools/src/schema/commercetools.schema.ts +0 -0
  279. /package/{providers → packages}/commercetools/src/schema/configuration.schema.ts +0 -0
  280. /package/{providers → packages}/commercetools/src/schema/session.schema.ts +0 -0
  281. /package/{providers → packages}/commercetools/src/test/client-builder-merge-extensions.example.ts +0 -0
  282. /package/{providers → packages}/commercetools/src/test/identity.spec.ts +0 -0
  283. /package/{providers → packages}/commercetools/src/test/test-utils.ts +0 -0
  284. /package/{core → packages/core}/README.md +0 -0
  285. /package/{core → packages/core}/src/cache/cache.interface.ts +0 -0
  286. /package/{core → packages/core}/src/cache/index.ts +0 -0
  287. /package/{core → packages/core}/src/cache/memory-cache.ts +0 -0
  288. /package/{core → packages/core}/src/cache/noop-cache.ts +0 -0
  289. /package/{core → packages/core}/src/cache/redis-cache.ts +0 -0
  290. /package/{core → packages/core}/src/client/index.ts +0 -0
  291. /package/{core → packages/core}/src/decorators/index.ts +0 -0
  292. /package/{core → packages/core}/src/factories/cart.factory.ts +0 -0
  293. /package/{core → packages/core}/src/factories/category.factory.ts +0 -0
  294. /package/{core → packages/core}/src/factories/checkout.factory.ts +0 -0
  295. /package/{core → packages/core}/src/factories/identity.factory.ts +0 -0
  296. /package/{core → packages/core}/src/factories/index.ts +0 -0
  297. /package/{core → packages/core}/src/factories/inventory.factory.ts +0 -0
  298. /package/{core → packages/core}/src/factories/order-search.factory.ts +0 -0
  299. /package/{core → packages/core}/src/factories/order.factory.ts +0 -0
  300. /package/{core → packages/core}/src/factories/price.factory.ts +0 -0
  301. /package/{core → packages/core}/src/factories/product-associations.factory.ts +0 -0
  302. /package/{core → packages/core}/src/factories/product-list.factory.ts +0 -0
  303. /package/{core → packages/core}/src/factories/product-reviews.factory.ts +0 -0
  304. /package/{core → packages/core}/src/factories/product-search.factory.ts +0 -0
  305. /package/{core → packages/core}/src/factories/product.factory.ts +0 -0
  306. /package/{core → packages/core}/src/factories/profile.factory.ts +0 -0
  307. /package/{core → packages/core}/src/factories/store.factory.ts +0 -0
  308. /package/{core → packages/core}/src/initialization.ts +0 -0
  309. /package/{core → packages/core}/src/metrics/metrics.ts +0 -0
  310. /package/{core → packages/core}/src/schemas/capabilities.schema.ts +0 -0
  311. /package/{core → packages/core}/src/schemas/errors/generic.error.ts +0 -0
  312. /package/{core → packages/core}/src/schemas/errors/index.ts +0 -0
  313. /package/{core → packages/core}/src/schemas/errors/invalid-input.error.ts +0 -0
  314. /package/{core → packages/core}/src/schemas/errors/invalid-output.error.ts +0 -0
  315. /package/{core → packages/core}/src/schemas/errors/not-found.error.ts +0 -0
  316. /package/{core → packages/core}/src/schemas/index.ts +0 -0
  317. /package/{core → packages/core}/src/schemas/models/analytics.model.ts +0 -0
  318. /package/{core → packages/core}/src/schemas/models/base.model.ts +0 -0
  319. /package/{core → packages/core}/src/schemas/models/cart.model.ts +0 -0
  320. /package/{core → packages/core}/src/schemas/models/category.model.ts +0 -0
  321. /package/{core → packages/core}/src/schemas/models/checkout.model.ts +0 -0
  322. /package/{core → packages/core}/src/schemas/models/cost.model.ts +0 -0
  323. /package/{core → packages/core}/src/schemas/models/currency.model.ts +0 -0
  324. /package/{core → packages/core}/src/schemas/models/identifiers.model.ts +0 -0
  325. /package/{core → packages/core}/src/schemas/models/identity.model.ts +0 -0
  326. /package/{core → packages/core}/src/schemas/models/index.ts +0 -0
  327. /package/{core → packages/core}/src/schemas/models/inventory.model.ts +0 -0
  328. /package/{core → packages/core}/src/schemas/models/order-search.model.ts +0 -0
  329. /package/{core → packages/core}/src/schemas/models/order.model.ts +0 -0
  330. /package/{core → packages/core}/src/schemas/models/payment.model.ts +0 -0
  331. /package/{core → packages/core}/src/schemas/models/price.model.ts +0 -0
  332. /package/{core → packages/core}/src/schemas/models/product-associations.model.ts +0 -0
  333. /package/{core → packages/core}/src/schemas/models/product-list.model.ts +0 -0
  334. /package/{core → packages/core}/src/schemas/models/product-recommendations.model.ts +0 -0
  335. /package/{core → packages/core}/src/schemas/models/product-reviews.model.ts +0 -0
  336. /package/{core → packages/core}/src/schemas/models/product-search.model.ts +0 -0
  337. /package/{core → packages/core}/src/schemas/models/product.model.ts +0 -0
  338. /package/{core → packages/core}/src/schemas/models/profile.model.ts +0 -0
  339. /package/{core → packages/core}/src/schemas/models/shipping-method.model.ts +0 -0
  340. /package/{core → packages/core}/src/schemas/models/store.model.ts +0 -0
  341. /package/{core → packages/core}/src/schemas/mutations/analytics/index.ts +0 -0
  342. /package/{core → packages/core}/src/schemas/mutations/analytics/product-add-to-cart.mutation.ts +0 -0
  343. /package/{core → packages/core}/src/schemas/mutations/analytics/product-details-view.mutation.ts +0 -0
  344. /package/{core → packages/core}/src/schemas/mutations/analytics/product-summary-click.mutation.ts +0 -0
  345. /package/{core → packages/core}/src/schemas/mutations/analytics/product-summary-view.mutation.ts +0 -0
  346. /package/{core → packages/core}/src/schemas/mutations/analytics/purchase.mutation.ts +0 -0
  347. /package/{core → packages/core}/src/schemas/mutations/base.mutation.ts +0 -0
  348. /package/{core → packages/core}/src/schemas/mutations/cart.mutation.ts +0 -0
  349. /package/{core → packages/core}/src/schemas/mutations/checkout.mutation.ts +0 -0
  350. /package/{core → packages/core}/src/schemas/mutations/identity.mutation.ts +0 -0
  351. /package/{core → packages/core}/src/schemas/mutations/index.ts +0 -0
  352. /package/{core → packages/core}/src/schemas/mutations/inventory.mutation.ts +0 -0
  353. /package/{core → packages/core}/src/schemas/mutations/price.mutation.ts +0 -0
  354. /package/{core → packages/core}/src/schemas/mutations/product-list.mutation.ts +0 -0
  355. /package/{core → packages/core}/src/schemas/mutations/product-reviews.mutation.ts +0 -0
  356. /package/{core → packages/core}/src/schemas/mutations/product.mutation.ts +0 -0
  357. /package/{core → packages/core}/src/schemas/mutations/profile.mutation.ts +0 -0
  358. /package/{core → packages/core}/src/schemas/mutations/search.mutation.ts +0 -0
  359. /package/{core → packages/core}/src/schemas/queries/analytics.query.ts +0 -0
  360. /package/{core → packages/core}/src/schemas/queries/base.query.ts +0 -0
  361. /package/{core → packages/core}/src/schemas/queries/cart.query.ts +0 -0
  362. /package/{core → packages/core}/src/schemas/queries/category.query.ts +0 -0
  363. /package/{core → packages/core}/src/schemas/queries/checkout.query.ts +0 -0
  364. /package/{core → packages/core}/src/schemas/queries/identity.query.ts +0 -0
  365. /package/{core → packages/core}/src/schemas/queries/index.ts +0 -0
  366. /package/{core → packages/core}/src/schemas/queries/inventory.query.ts +0 -0
  367. /package/{core → packages/core}/src/schemas/queries/order-search.query.ts +0 -0
  368. /package/{core → packages/core}/src/schemas/queries/order.query.ts +0 -0
  369. /package/{core → packages/core}/src/schemas/queries/price.query.ts +0 -0
  370. /package/{core → packages/core}/src/schemas/queries/product-associations.query.ts +0 -0
  371. /package/{core → packages/core}/src/schemas/queries/product-list.query.ts +0 -0
  372. /package/{core → packages/core}/src/schemas/queries/product-recommendations.query.ts +0 -0
  373. /package/{core → packages/core}/src/schemas/queries/product-reviews.query.ts +0 -0
  374. /package/{core → packages/core}/src/schemas/queries/product-search.query.ts +0 -0
  375. /package/{core → packages/core}/src/schemas/queries/product.query.ts +0 -0
  376. /package/{core → packages/core}/src/schemas/queries/profile.query.ts +0 -0
  377. /package/{core → packages/core}/src/schemas/queries/store.query.ts +0 -0
  378. /package/{core → packages/core}/src/schemas/result.ts +0 -0
  379. /package/{core → packages/core}/src/schemas/session.schema.ts +0 -0
  380. /package/{core → packages/core}/src/test/request-context.spec.ts +0 -0
  381. /package/{core → packages/core}/src/zod-utils.ts +0 -0
  382. /package/{providers → packages}/fake/src/factories/cart/cart.factory.ts +0 -0
  383. /package/{providers → packages}/fake/src/factories/category/category.factory.ts +0 -0
  384. /package/{providers → packages}/fake/src/factories/checkout/checkout.factory.ts +0 -0
  385. /package/{providers → packages}/fake/src/factories/identity/identity.factory.ts +0 -0
  386. /package/{providers → packages}/fake/src/factories/index.ts +0 -0
  387. /package/{providers → packages}/fake/src/factories/inventory/inventory.factory.ts +0 -0
  388. /package/{providers → packages}/fake/src/factories/order/order.factory.ts +0 -0
  389. /package/{providers → packages}/fake/src/factories/order-search/order-search.factory.ts +0 -0
  390. /package/{providers → packages}/fake/src/factories/price/price.factory.ts +0 -0
  391. /package/{providers → packages}/fake/src/factories/product/product.factory.ts +0 -0
  392. /package/{providers → packages}/fake/src/factories/product-associations/product-associations.factory.ts +0 -0
  393. /package/{providers → packages}/fake/src/factories/product-reviews/product-reviews.factory.ts +0 -0
  394. /package/{providers → packages}/fake/src/factories/product-search/product-search.factory.ts +0 -0
  395. /package/{providers → packages}/fake/src/factories/profile/profile.factory.ts +0 -0
  396. /package/{providers → packages}/fake/src/factories/store/store.factory.ts +0 -0
  397. /package/{providers → packages}/fake/src/schema/configuration.schema.ts +0 -0
  398. /package/{providers → packages}/fake/src/test/client-builder-product-extension.example.ts +0 -0
  399. /package/{providers → packages}/fake/src/test/test-utils.ts +0 -0
  400. /package/{providers → packages}/fake/src/utilities/jitter.ts +0 -0
  401. /package/{providers → packages}/fake/src/utilities/seed.ts +0 -0
  402. /package/{providers → packages}/google-analytics/README.md +0 -0
  403. /package/{providers → packages}/google-analytics/src/schema/configuration.schema.ts +0 -0
  404. /package/{providers → packages}/medusa/src/core/client.ts +0 -0
  405. /package/{providers → packages}/medusa/src/factories/cart/cart.factory.ts +0 -0
  406. /package/{providers → packages}/medusa/src/factories/category/category.factory.ts +0 -0
  407. /package/{providers → packages}/medusa/src/factories/checkout/checkout.factory.ts +0 -0
  408. /package/{providers → packages}/medusa/src/factories/identity/identity.factory.ts +0 -0
  409. /package/{providers → packages}/medusa/src/factories/index.ts +0 -0
  410. /package/{providers → packages}/medusa/src/factories/inventory/inventory.factory.ts +0 -0
  411. /package/{providers → packages}/medusa/src/factories/order/order.factory.ts +0 -0
  412. /package/{providers → packages}/medusa/src/factories/order-search/order-search.factory.ts +0 -0
  413. /package/{providers → packages}/medusa/src/factories/price/price.factory.ts +0 -0
  414. /package/{providers → packages}/medusa/src/factories/product/product.factory.ts +0 -0
  415. /package/{providers → packages}/medusa/src/factories/product-associations/product-associations.factory.ts +0 -0
  416. /package/{providers → packages}/medusa/src/factories/product-search/product-search.factory.ts +0 -0
  417. /package/{providers → packages}/medusa/src/factories/profile/profile.factory.ts +0 -0
  418. /package/{providers → packages}/medusa/src/schema/configuration.schema.ts +0 -0
  419. /package/{providers → packages}/medusa/src/schema/medusa.schema.ts +0 -0
  420. /package/{providers → packages}/medusa/src/test/checkout.spec.ts +0 -0
  421. /package/{providers → packages}/medusa/src/test/test-utils.ts +0 -0
  422. /package/{providers → packages}/meilisearch/src/factories/index.ts +0 -0
  423. /package/{providers → packages}/meilisearch/src/factories/order-search/order-search.factory.ts +0 -0
  424. /package/{providers → packages}/meilisearch/src/factories/product-search/product-search.factory.ts +0 -0
  425. /package/{providers → packages}/meilisearch/src/schema/configuration.schema.ts +0 -0
  426. /package/{providers → packages}/meilisearch/src/schema/index.ts +0 -0
  427. /package/{providers → packages}/meilisearch/src/schema/search.schema.ts +0 -0
package/README.md CHANGED
@@ -215,6 +215,25 @@ Vendors: Commercetools
215
215
  So, you want to add to the fun, and add a new provider.
216
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.
217
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
+
218
237
  ## Step 0
219
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.
220
239
 
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@reactionary/examples-node",
3
- "version": "0.6.2",
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.2",
8
- "@reactionary/provider-commercetools": "0.6.2",
9
- "@reactionary/provider-algolia": "0.6.2",
10
- "@reactionary/provider-medusa": "0.6.2",
11
- "@reactionary/provider-meilisearch": "0.6.2",
12
- "@reactionary/provider-fake": "0.6.2"
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
  }
@@ -10,7 +10,7 @@ import {
10
10
  FakeProductFactory,
11
11
  FakeProductProvider,
12
12
  withFakeCapabilities,
13
- } from '@reactionary/provider-fake';
13
+ } from '@reactionary/fake';
14
14
  import { createInitialRequestContext } from '@reactionary/core'
15
15
  import * as z from 'zod';
16
16
  import { describe, expect, it } from 'vitest';
@@ -12,7 +12,7 @@ import {
12
12
  FakeProductFactory,
13
13
  FakeProductProvider,
14
14
  withFakeCapabilities,
15
- } from '@reactionary/provider-fake';
15
+ } from '@reactionary/fake';
16
16
  import * as z from 'zod';
17
17
  import { describe, expect, it } from 'vitest';
18
18
 
@@ -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', () => {
@@ -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 () => {
@@ -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 {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reactionary/source",
3
- "version": "0.6.2",
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
 
@@ -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
 
@@ -4,7 +4,7 @@ import {
4
4
  FacetIdentifierSchema,
5
5
  type FacetValueIdentifier,
6
6
  FacetValueIdentifierSchema,
7
- ProductSearchProvider,
7
+ ProductSearchCapability,
8
8
  type ProductSearchFactory,
9
9
  type ProductSearchFactoryOutput,
10
10
  type ProductSearchFactoryWithOutput,
@@ -22,9 +22,9 @@ import type { AlgoliaConfiguration } from '../schema/configuration.schema.js';
22
22
  import type { AlgoliaNativeRecord } from '../schema/search.schema.js';
23
23
  import type { AlgoliaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
24
24
 
25
- export class AlgoliaProductSearchProvider<
25
+ export class AlgoliaProductSearchCapability<
26
26
  TFactory extends ProductSearchFactory = AlgoliaProductSearchFactory,
27
- > extends ProductSearchProvider<ProductSearchFactoryOutput<TFactory>> {
27
+ > extends ProductSearchCapability<ProductSearchFactoryOutput<TFactory>> {
28
28
  protected config: AlgoliaConfiguration;
29
29
  protected factory: ProductSearchFactoryWithOutput<TFactory>;
30
30
 
@@ -1,15 +1,15 @@
1
1
  import type { Cache, RequestContext } from '@reactionary/core';
2
- import { AlgoliaProductSearchProvider } from '../providers/product-search.provider.js';
2
+ import { AlgoliaProductSearchCapability } from '../capabilities/product-search.capability.js';
3
3
  import type { AlgoliaCapabilities } from '../schema/capabilities.schema.js';
4
4
  import type { AlgoliaConfiguration } from '../schema/configuration.schema.js';
5
- import { AlgoliaAnalyticsProvider } from '../providers/analytics.provider.js';
6
- import { AlgoliaProductRecommendationsProvider } from '../providers/product-recommendations.provider.js';
5
+ import { AlgoliaAnalyticsCapability } from '../capabilities/analytics.capability.js';
6
+ import { AlgoliaProductRecommendationsCapability } from '../capabilities/product-recommendations.capability.js';
7
7
  import { AlgoliaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
8
8
  import { AlgoliaProductSearchResultSchema } from '../schema/search.schema.js';
9
9
  import {
10
10
  type AlgoliaClientFromCapabilities,
11
- resolveCapabilityProvider,
12
- resolveProviderOnlyCapability,
11
+ resolveCapabilityWithFactory,
12
+ resolveDirectCapability,
13
13
  } from './initialize.types.js';
14
14
 
15
15
  export function withAlgoliaCapabilities<T extends AlgoliaCapabilities>(
@@ -27,12 +27,12 @@ export function withAlgoliaCapabilities<T extends AlgoliaCapabilities>(
27
27
  const defaultFactory = new AlgoliaProductSearchFactory(
28
28
  AlgoliaProductSearchResultSchema,
29
29
  );
30
- client.productSearch = resolveCapabilityProvider(
30
+ client.productSearch = resolveCapabilityWithFactory(
31
31
  capabilities.productSearch,
32
32
  {
33
33
  factory: defaultFactory,
34
- provider: (args) =>
35
- new AlgoliaProductSearchProvider(
34
+ capability: (args) =>
35
+ new AlgoliaProductSearchCapability(
36
36
  args.cache,
37
37
  args.context,
38
38
  args.config,
@@ -49,9 +49,9 @@ export function withAlgoliaCapabilities<T extends AlgoliaCapabilities>(
49
49
  }
50
50
 
51
51
  if (capabilities.analytics?.enabled) {
52
- client.analytics = resolveProviderOnlyCapability(
52
+ client.analytics = resolveDirectCapability(
53
53
  capabilities.analytics,
54
- (args) => new AlgoliaAnalyticsProvider(args.cache, args.context, args.config),
54
+ (args) => new AlgoliaAnalyticsCapability(args.cache, args.context, args.config),
55
55
  {
56
56
  cache,
57
57
  context,
@@ -61,10 +61,10 @@ export function withAlgoliaCapabilities<T extends AlgoliaCapabilities>(
61
61
  }
62
62
 
63
63
  if (capabilities.productRecommendations?.enabled) {
64
- client.productRecommendations = resolveProviderOnlyCapability(
64
+ client.productRecommendations = resolveDirectCapability(
65
65
  capabilities.productRecommendations,
66
66
  (args) =>
67
- new AlgoliaProductRecommendationsProvider(
67
+ new AlgoliaProductRecommendationsCapability(
68
68
  args.config,
69
69
  args.cache,
70
70
  args.context,
@@ -0,0 +1,107 @@
1
+ import type {
2
+ ClientFromCapabilities,
3
+ ProductSearchFactory,
4
+ } from '@reactionary/core';
5
+ import type { AlgoliaCapabilities } from '../schema/capabilities.schema.js';
6
+ import type { AlgoliaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
7
+ import type { AlgoliaAnalyticsCapability } from '../capabilities/analytics.capability.js';
8
+ import type { AlgoliaProductRecommendationsCapability } from '../capabilities/product-recommendations.capability.js';
9
+ import type { AlgoliaProductSearchCapability } from '../capabilities/product-search.capability.js';
10
+
11
+ type EnabledCapability<TCapability> =
12
+ TCapability extends { enabled: true } ? true : false;
13
+
14
+ type NormalizeConfiguredCapabilities<T extends AlgoliaCapabilities> =
15
+ Omit<T, 'productSearch' | 'analytics' | 'productRecommendations'> & {
16
+ productSearch?: EnabledCapability<T['productSearch']>;
17
+ analytics?: EnabledCapability<T['analytics']>;
18
+ productRecommendations?: EnabledCapability<T['productRecommendations']>;
19
+ };
20
+
21
+ type ExtractCapabilityFactory<TCapability, TContract, TDefaultFactory> =
22
+ TCapability extends { enabled: true; factory?: infer TFactory }
23
+ ? TFactory extends TContract
24
+ ? TFactory
25
+ : TDefaultFactory
26
+ : TDefaultFactory;
27
+
28
+ type ExtractCapabilityImplementation<TCapability, TDefaultCapability> =
29
+ TCapability extends { enabled: true; capability?: infer TCapabilityFactory }
30
+ ? TCapabilityFactory extends (...args: unknown[]) => infer TResolvedCapability
31
+ ? TResolvedCapability
32
+ : TDefaultCapability
33
+ : TDefaultCapability;
34
+
35
+ type CapabilityOverride<
36
+ TCapability,
37
+ TKey extends string,
38
+ TResolvedCapability,
39
+ > = TCapability extends { enabled: true }
40
+ ? { [K in TKey]: TResolvedCapability }
41
+ : Record<never, never>;
42
+
43
+ type ProductSearchFactoryFor<T extends AlgoliaCapabilities> =
44
+ ExtractCapabilityFactory<
45
+ T['productSearch'],
46
+ ProductSearchFactory,
47
+ AlgoliaProductSearchFactory
48
+ >;
49
+
50
+ type ProductSearchCapabilityFor<T extends AlgoliaCapabilities> =
51
+ ExtractCapabilityImplementation<
52
+ T['productSearch'],
53
+ AlgoliaProductSearchCapability<ProductSearchFactoryFor<T>>
54
+ >;
55
+
56
+ type AnalyticsCapabilityFor<T extends AlgoliaCapabilities> =
57
+ ExtractCapabilityImplementation<T['analytics'], AlgoliaAnalyticsCapability>;
58
+
59
+ type ProductRecommendationsCapabilityFor<T extends AlgoliaCapabilities> =
60
+ ExtractCapabilityImplementation<
61
+ T['productRecommendations'],
62
+ AlgoliaProductRecommendationsCapability
63
+ >;
64
+
65
+ export type AlgoliaClientFromCapabilities<T extends AlgoliaCapabilities> = Omit<
66
+ ClientFromCapabilities<NormalizeConfiguredCapabilities<T>>,
67
+ 'productSearch' | 'analytics' | 'productRecommendations'
68
+ > &
69
+ CapabilityOverride<T['productSearch'], 'productSearch', ProductSearchCapabilityFor<T>> &
70
+ CapabilityOverride<T['analytics'], 'analytics', AnalyticsCapabilityFor<T>> &
71
+ CapabilityOverride<
72
+ T['productRecommendations'],
73
+ 'productRecommendations',
74
+ ProductRecommendationsCapabilityFor<T>
75
+ >;
76
+
77
+ export function resolveCapabilityWithFactory<TFactory, TResolvedCapability, TCapabilityArgs>(
78
+ capability:
79
+ | {
80
+ factory?: TFactory;
81
+ capability?: (args: TCapabilityArgs) => TResolvedCapability;
82
+ }
83
+ | undefined,
84
+ defaults: {
85
+ factory: TFactory;
86
+ capability: (args: TCapabilityArgs) => TResolvedCapability;
87
+ },
88
+ buildCapabilityArgs: (factory: TFactory) => TCapabilityArgs,
89
+ ): TResolvedCapability {
90
+ const factory = capability?.factory ?? defaults.factory;
91
+ const capabilityFactory = capability?.capability ?? defaults.capability;
92
+
93
+ return capabilityFactory(buildCapabilityArgs(factory));
94
+ }
95
+
96
+ export function resolveDirectCapability<TResolvedCapability, TCapabilityArgs>(
97
+ capability:
98
+ | {
99
+ capability?: (args: TCapabilityArgs) => TResolvedCapability;
100
+ }
101
+ | undefined,
102
+ defaultCapability: (args: TCapabilityArgs) => TResolvedCapability,
103
+ args: TCapabilityArgs,
104
+ ): TResolvedCapability {
105
+ const capabilityFactory = capability?.capability ?? defaultCapability;
106
+ return capabilityFactory(args);
107
+ }
@@ -1,5 +1,5 @@
1
1
  export * from './core/initialize.js';
2
- export * from './providers/index.js';
2
+ export * from './capabilities/index.js';
3
3
  export * from './factories/index.js';
4
4
 
5
5
  export * from './schema/configuration.schema.js';
@@ -1,10 +1,10 @@
1
1
  import type {
2
- AnalyticsProvider,
2
+ AnalyticsCapability,
3
3
  Cache,
4
- ProductRecommendationsProvider,
4
+ ProductRecommendationsCapability,
5
5
  ProductSearchFactory,
6
6
  ProductSearchFactoryWithOutput,
7
- ProductSearchProvider,
7
+ ProductSearchCapability,
8
8
  RequestContext,
9
9
  } from '@reactionary/core';
10
10
  import { CapabilitiesSchema } from '@reactionary/core';
@@ -14,12 +14,12 @@ import * as z from 'zod';
14
14
  const ProductSearchCapabilitySchema = z.looseObject({
15
15
  enabled: z.boolean(),
16
16
  factory: z.unknown().optional(),
17
- provider: z.unknown().optional(),
17
+ capability: z.unknown().optional(),
18
18
  });
19
19
 
20
- const ProviderCapabilitySchema = z.looseObject({
20
+ const CapabilityOverrideSchema = z.looseObject({
21
21
  enabled: z.boolean(),
22
- provider: z.unknown().optional(),
22
+ capability: z.unknown().optional(),
23
23
  });
24
24
 
25
25
  export const AlgoliaCapabilitiesSchema = CapabilitiesSchema.pick({
@@ -29,56 +29,56 @@ export const AlgoliaCapabilitiesSchema = CapabilitiesSchema.pick({
29
29
  })
30
30
  .extend({
31
31
  productSearch: ProductSearchCapabilitySchema.optional(),
32
- analytics: ProviderCapabilitySchema.optional(),
33
- productRecommendations: ProviderCapabilitySchema.optional(),
32
+ analytics: CapabilityOverrideSchema.optional(),
33
+ productRecommendations: CapabilityOverrideSchema.optional(),
34
34
  })
35
35
  .partial();
36
36
 
37
- export interface AlgoliaProviderFactoryArgs {
37
+ export interface AlgoliaCapabilityFactoryArgs {
38
38
  cache: Cache;
39
39
  context: RequestContext;
40
40
  config: AlgoliaConfiguration;
41
41
  }
42
42
 
43
- export interface AlgoliaProductSearchProviderFactoryArgs<
43
+ export interface AlgoliaProductSearchCapabilityFactoryArgs<
44
44
  TFactory extends ProductSearchFactory = ProductSearchFactory,
45
- > extends AlgoliaProviderFactoryArgs {
45
+ > extends AlgoliaCapabilityFactoryArgs {
46
46
  factory: ProductSearchFactoryWithOutput<TFactory>;
47
47
  }
48
48
 
49
49
  export interface AlgoliaProductSearchCapabilityConfig<
50
50
  TFactory extends ProductSearchFactory = ProductSearchFactory,
51
- TProvider extends ProductSearchProvider = ProductSearchProvider,
51
+ TCapability extends ProductSearchCapability = ProductSearchCapability,
52
52
  > {
53
53
  enabled: boolean;
54
54
  factory?: ProductSearchFactoryWithOutput<TFactory>;
55
- provider?: (args: AlgoliaProductSearchProviderFactoryArgs<TFactory>) => TProvider;
55
+ capability?: (args: AlgoliaProductSearchCapabilityFactoryArgs<TFactory>) => TCapability;
56
56
  }
57
57
 
58
58
  export interface AlgoliaAnalyticsCapabilityConfig<
59
- TProvider extends AnalyticsProvider = AnalyticsProvider,
59
+ TCapability extends AnalyticsCapability = AnalyticsCapability,
60
60
  > {
61
61
  enabled: boolean;
62
- provider?: (args: AlgoliaProviderFactoryArgs) => TProvider;
62
+ capability?: (args: AlgoliaCapabilityFactoryArgs) => TCapability;
63
63
  }
64
64
 
65
65
  export interface AlgoliaProductRecommendationsCapabilityConfig<
66
- TProvider extends ProductRecommendationsProvider = ProductRecommendationsProvider,
66
+ TCapability extends ProductRecommendationsCapability = ProductRecommendationsCapability,
67
67
  > {
68
68
  enabled: boolean;
69
- provider?: (args: AlgoliaProviderFactoryArgs) => TProvider;
69
+ capability?: (args: AlgoliaCapabilityFactoryArgs) => TCapability;
70
70
  }
71
71
 
72
72
  export type AlgoliaCapabilities<
73
73
  TProductSearchFactory extends ProductSearchFactory = ProductSearchFactory,
74
- TProductSearchProvider extends ProductSearchProvider = ProductSearchProvider,
75
- TAnalyticsProvider extends AnalyticsProvider = AnalyticsProvider,
76
- TProductRecommendationsProvider extends ProductRecommendationsProvider = ProductRecommendationsProvider,
74
+ TProductSearchCapability extends ProductSearchCapability = ProductSearchCapability,
75
+ TAnalyticsCapability extends AnalyticsCapability = AnalyticsCapability,
76
+ TProductRecommendationsCapability extends ProductRecommendationsCapability = ProductRecommendationsCapability,
77
77
  > = {
78
78
  productSearch?: AlgoliaProductSearchCapabilityConfig<
79
79
  TProductSearchFactory,
80
- TProductSearchProvider
80
+ TProductSearchCapability
81
81
  >;
82
- analytics?: AlgoliaAnalyticsCapabilityConfig<TAnalyticsProvider>;
83
- productRecommendations?: AlgoliaProductRecommendationsCapabilityConfig<TProductRecommendationsProvider>;
82
+ analytics?: AlgoliaAnalyticsCapabilityConfig<TAnalyticsCapability>;
83
+ productRecommendations?: AlgoliaProductRecommendationsCapabilityConfig<TProductRecommendationsCapability>;
84
84
  };
@@ -1,8 +1,8 @@
1
1
  import { describe, it, assert } from 'vitest';
2
- import { AlgoliaAnalyticsProvider } from '../providers/analytics.provider.js';
2
+ import { AlgoliaAnalyticsCapability } from '../capabilities/analytics.capability.js';
3
3
  import { createInitialRequestContext, NoOpCache } from '@reactionary/core';
4
4
  import type { AlgoliaConfiguration } from '../schema/configuration.schema.js';
5
- import { AlgoliaProductSearchProvider } from '../providers/product-search.provider.js';
5
+ import { AlgoliaProductSearchCapability } from '../capabilities/product-search.capability.js';
6
6
  import { AlgoliaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
7
7
  import { AlgoliaProductSearchResultSchema } from '../schema/search.schema.js';
8
8
 
@@ -16,13 +16,13 @@ describe('Analytics event tracking', async () => {
16
16
  const context = createInitialRequestContext();
17
17
 
18
18
  const searchFactory = new AlgoliaProductSearchFactory(AlgoliaProductSearchResultSchema);
19
- const search = new AlgoliaProductSearchProvider<typeof searchFactory>(
19
+ const search = new AlgoliaProductSearchCapability<typeof searchFactory>(
20
20
  cache,
21
21
  context,
22
22
  config,
23
23
  searchFactory,
24
24
  );
25
- const analytics = new AlgoliaAnalyticsProvider(cache, context, config);
25
+ const analytics = new AlgoliaAnalyticsCapability(cache, context, config);
26
26
  const searchResult = await search.queryByTerm({
27
27
  search: {
28
28
  facets: [],
@@ -0,0 +1,26 @@
1
+ /// <reference types='vitest' />
2
+ import { defineConfig } from 'vite';
3
+ import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
4
+ import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
5
+
6
+ export default defineConfig(() => ({
7
+ root: import.meta.dirname,
8
+ cacheDir: '../../node_modules/.vite/packages/algolia',
9
+ plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
10
+ // Uncomment this if you are using workers.
11
+ // worker: {
12
+ // plugins: () => [ nxViteTsPaths() ],
13
+ // },
14
+ test: {
15
+ name: 'algolia',
16
+ watch: false,
17
+ globals: true,
18
+ environment: 'node',
19
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
20
+ reporters: ['default'],
21
+ coverage: {
22
+ reportsDirectory: '../../coverage/packages/algolia',
23
+ provider: 'v8' as const,
24
+ },
25
+ },
26
+ }));
@@ -0,0 +1,21 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
3
+ import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
4
+
5
+ export default defineConfig(() => ({
6
+ root: __dirname,
7
+ cacheDir: '../../node_modules/.vite/packages/algolia',
8
+ plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
9
+ test: {
10
+ name: 'algolia',
11
+ watch: false,
12
+ globals: true,
13
+ environment: 'node',
14
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
15
+ reporters: ['default'],
16
+ coverage: {
17
+ reportsDirectory: '../../coverage/packages/algolia',
18
+ provider: 'v8' as const,
19
+ },
20
+ },
21
+ }));
@@ -0,0 +1,11 @@
1
+ # commercetools
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build commercetools` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test commercetools` to execute the unit tests via [Vitest](https://vitest.dev/).