@endora-commerce/mod-catalog 0.100.0

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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +63 -0
  3. package/dist/admin/components/PackagingUnitsEditor.d.ts +12 -0
  4. package/dist/admin/components/PackagingUnitsEditor.d.ts.map +1 -0
  5. package/dist/admin/components/PackagingUnitsEditor.js +99 -0
  6. package/dist/admin/components/PackagingUnitsEditor.js.map +1 -0
  7. package/dist/admin/components/ProductAttributesTab.d.ts +13 -0
  8. package/dist/admin/components/ProductAttributesTab.d.ts.map +1 -0
  9. package/dist/admin/components/ProductAttributesTab.js +140 -0
  10. package/dist/admin/components/ProductAttributesTab.js.map +1 -0
  11. package/dist/admin/components/ProductInventoryTab.d.ts +14 -0
  12. package/dist/admin/components/ProductInventoryTab.d.ts.map +1 -0
  13. package/dist/admin/components/ProductInventoryTab.js +284 -0
  14. package/dist/admin/components/ProductInventoryTab.js.map +1 -0
  15. package/dist/admin/components/ProductScopeEditor.d.ts +94 -0
  16. package/dist/admin/components/ProductScopeEditor.d.ts.map +1 -0
  17. package/dist/admin/components/ProductScopeEditor.js +395 -0
  18. package/dist/admin/components/ProductScopeEditor.js.map +1 -0
  19. package/dist/admin/components/ProductsBulkEditDialog.d.ts +11 -0
  20. package/dist/admin/components/ProductsBulkEditDialog.d.ts.map +1 -0
  21. package/dist/admin/components/ProductsBulkEditDialog.js +304 -0
  22. package/dist/admin/components/ProductsBulkEditDialog.js.map +1 -0
  23. package/dist/admin/index.d.ts +45 -0
  24. package/dist/admin/index.d.ts.map +1 -0
  25. package/dist/admin/index.js +184 -0
  26. package/dist/admin/index.js.map +1 -0
  27. package/dist/admin/lib/resolve-product-selection.d.ts +21 -0
  28. package/dist/admin/lib/resolve-product-selection.d.ts.map +1 -0
  29. package/dist/admin/lib/resolve-product-selection.js +25 -0
  30. package/dist/admin/lib/resolve-product-selection.js.map +1 -0
  31. package/dist/admin/pages/AttachmentTypesPage.d.ts +18 -0
  32. package/dist/admin/pages/AttachmentTypesPage.d.ts.map +1 -0
  33. package/dist/admin/pages/AttachmentTypesPage.js +92 -0
  34. package/dist/admin/pages/AttachmentTypesPage.js.map +1 -0
  35. package/dist/admin/pages/AttributeSetsPage.d.ts +21 -0
  36. package/dist/admin/pages/AttributeSetsPage.d.ts.map +1 -0
  37. package/dist/admin/pages/AttributeSetsPage.js +158 -0
  38. package/dist/admin/pages/AttributeSetsPage.js.map +1 -0
  39. package/dist/admin/pages/AttributesManager.d.ts +9 -0
  40. package/dist/admin/pages/AttributesManager.d.ts.map +1 -0
  41. package/dist/admin/pages/AttributesManager.js +305 -0
  42. package/dist/admin/pages/AttributesManager.js.map +1 -0
  43. package/dist/admin/pages/BulkOperationDetailPage.d.ts +9 -0
  44. package/dist/admin/pages/BulkOperationDetailPage.d.ts.map +1 -0
  45. package/dist/admin/pages/BulkOperationDetailPage.js +187 -0
  46. package/dist/admin/pages/BulkOperationDetailPage.js.map +1 -0
  47. package/dist/admin/pages/BulkOperationsPage.d.ts +9 -0
  48. package/dist/admin/pages/BulkOperationsPage.d.ts.map +1 -0
  49. package/dist/admin/pages/BulkOperationsPage.js +98 -0
  50. package/dist/admin/pages/BulkOperationsPage.js.map +1 -0
  51. package/dist/admin/pages/CategoriesTree.d.ts +9 -0
  52. package/dist/admin/pages/CategoriesTree.d.ts.map +1 -0
  53. package/dist/admin/pages/CategoriesTree.js +176 -0
  54. package/dist/admin/pages/CategoriesTree.js.map +1 -0
  55. package/dist/admin/pages/ProductEditor.d.ts +13 -0
  56. package/dist/admin/pages/ProductEditor.d.ts.map +1 -0
  57. package/dist/admin/pages/ProductEditor.js +1050 -0
  58. package/dist/admin/pages/ProductEditor.js.map +1 -0
  59. package/dist/admin/pages/ProductsList.d.ts +9 -0
  60. package/dist/admin/pages/ProductsList.d.ts.map +1 -0
  61. package/dist/admin/pages/ProductsList.js +399 -0
  62. package/dist/admin/pages/ProductsList.js.map +1 -0
  63. package/dist/backend/commands/attribute-commands.d.ts +111 -0
  64. package/dist/backend/commands/attribute-commands.d.ts.map +1 -0
  65. package/dist/backend/commands/attribute-commands.js +482 -0
  66. package/dist/backend/commands/attribute-commands.js.map +1 -0
  67. package/dist/backend/demo/reset.d.ts +23 -0
  68. package/dist/backend/demo/reset.d.ts.map +1 -0
  69. package/dist/backend/demo/reset.js +41 -0
  70. package/dist/backend/demo/reset.js.map +1 -0
  71. package/dist/backend/demo/rows.d.ts +103 -0
  72. package/dist/backend/demo/rows.d.ts.map +1 -0
  73. package/dist/backend/demo/rows.js +162 -0
  74. package/dist/backend/demo/rows.js.map +1 -0
  75. package/dist/backend/demo/seed.d.ts +35 -0
  76. package/dist/backend/demo/seed.d.ts.map +1 -0
  77. package/dist/backend/demo/seed.js +177 -0
  78. package/dist/backend/demo/seed.js.map +1 -0
  79. package/dist/backend/entities/attachment-type.entity.d.ts +16 -0
  80. package/dist/backend/entities/attachment-type.entity.d.ts.map +1 -0
  81. package/dist/backend/entities/attachment-type.entity.js +57 -0
  82. package/dist/backend/entities/attachment-type.entity.js.map +1 -0
  83. package/dist/backend/entities/attribute-set-attribute.entity.d.ts +26 -0
  84. package/dist/backend/entities/attribute-set-attribute.entity.d.ts.map +1 -0
  85. package/dist/backend/entities/attribute-set-attribute.entity.js +55 -0
  86. package/dist/backend/entities/attribute-set-attribute.entity.js.map +1 -0
  87. package/dist/backend/entities/attribute-set.entity.d.ts +22 -0
  88. package/dist/backend/entities/attribute-set.entity.d.ts.map +1 -0
  89. package/dist/backend/entities/attribute-set.entity.js +67 -0
  90. package/dist/backend/entities/attribute-set.entity.js.map +1 -0
  91. package/dist/backend/entities/bulk-operation.entity.d.ts +78 -0
  92. package/dist/backend/entities/bulk-operation.entity.d.ts.map +1 -0
  93. package/dist/backend/entities/bulk-operation.entity.js +138 -0
  94. package/dist/backend/entities/bulk-operation.entity.js.map +1 -0
  95. package/dist/backend/entities/bundle-slot-option.entity.d.ts +23 -0
  96. package/dist/backend/entities/bundle-slot-option.entity.d.ts.map +1 -0
  97. package/dist/backend/entities/bundle-slot-option.entity.js +68 -0
  98. package/dist/backend/entities/bundle-slot-option.entity.js.map +1 -0
  99. package/dist/backend/entities/bundle-slot.entity.d.ts +25 -0
  100. package/dist/backend/entities/bundle-slot.entity.d.ts.map +1 -0
  101. package/dist/backend/entities/bundle-slot.entity.js +74 -0
  102. package/dist/backend/entities/bundle-slot.entity.js.map +1 -0
  103. package/dist/backend/entities/category.entity.d.ts +26 -0
  104. package/dist/backend/entities/category.entity.d.ts.map +1 -0
  105. package/dist/backend/entities/category.entity.js +119 -0
  106. package/dist/backend/entities/category.entity.js.map +1 -0
  107. package/dist/backend/entities/gallery-item-label.entity.d.ts +22 -0
  108. package/dist/backend/entities/gallery-item-label.entity.d.ts.map +1 -0
  109. package/dist/backend/entities/gallery-item-label.entity.js +50 -0
  110. package/dist/backend/entities/gallery-item-label.entity.js.map +1 -0
  111. package/dist/backend/entities/gallery-item.entity.d.ts +17 -0
  112. package/dist/backend/entities/gallery-item.entity.d.ts.map +1 -0
  113. package/dist/backend/entities/gallery-item.entity.js +58 -0
  114. package/dist/backend/entities/gallery-item.entity.js.map +1 -0
  115. package/dist/backend/entities/grouped-item.entity.d.ts +23 -0
  116. package/dist/backend/entities/grouped-item.entity.d.ts.map +1 -0
  117. package/dist/backend/entities/grouped-item.entity.js +68 -0
  118. package/dist/backend/entities/grouped-item.entity.js.map +1 -0
  119. package/dist/backend/entities/product-attachment.entity.d.ts +23 -0
  120. package/dist/backend/entities/product-attachment.entity.d.ts.map +1 -0
  121. package/dist/backend/entities/product-attachment.entity.js +77 -0
  122. package/dist/backend/entities/product-attachment.entity.js.map +1 -0
  123. package/dist/backend/entities/product-attribute.entity.d.ts +72 -0
  124. package/dist/backend/entities/product-attribute.entity.d.ts.map +1 -0
  125. package/dist/backend/entities/product-attribute.entity.js +161 -0
  126. package/dist/backend/entities/product-attribute.entity.js.map +1 -0
  127. package/dist/backend/entities/product-editor-preference.entity.d.ts +28 -0
  128. package/dist/backend/entities/product-editor-preference.entity.d.ts.map +1 -0
  129. package/dist/backend/entities/product-editor-preference.entity.js +63 -0
  130. package/dist/backend/entities/product-editor-preference.entity.js.map +1 -0
  131. package/dist/backend/entities/product-link.entity.d.ts +25 -0
  132. package/dist/backend/entities/product-link.entity.d.ts.map +1 -0
  133. package/dist/backend/entities/product-link.entity.js +70 -0
  134. package/dist/backend/entities/product-link.entity.js.map +1 -0
  135. package/dist/backend/entities/product-packaging-unit.entity.d.ts +26 -0
  136. package/dist/backend/entities/product-packaging-unit.entity.d.ts.map +1 -0
  137. package/dist/backend/entities/product-packaging-unit.entity.js +76 -0
  138. package/dist/backend/entities/product-packaging-unit.entity.js.map +1 -0
  139. package/dist/backend/entities/product-value-override.entity.d.ts +43 -0
  140. package/dist/backend/entities/product-value-override.entity.d.ts.map +1 -0
  141. package/dist/backend/entities/product-value-override.entity.js +90 -0
  142. package/dist/backend/entities/product-value-override.entity.js.map +1 -0
  143. package/dist/backend/entities/product-variant.entity.d.ts +18 -0
  144. package/dist/backend/entities/product-variant.entity.d.ts.map +1 -0
  145. package/dist/backend/entities/product-variant.entity.js +68 -0
  146. package/dist/backend/entities/product-variant.entity.js.map +1 -0
  147. package/dist/backend/entities/product.entity.d.ts +108 -0
  148. package/dist/backend/entities/product.entity.d.ts.map +1 -0
  149. package/dist/backend/entities/product.entity.js +230 -0
  150. package/dist/backend/entities/product.entity.js.map +1 -0
  151. package/dist/backend/index.d.ts +262 -0
  152. package/dist/backend/index.d.ts.map +1 -0
  153. package/dist/backend/index.js +642 -0
  154. package/dist/backend/index.js.map +1 -0
  155. package/dist/backend/plugin.d.ts +216 -0
  156. package/dist/backend/plugin.d.ts.map +1 -0
  157. package/dist/backend/plugin.js +223 -0
  158. package/dist/backend/plugin.js.map +1 -0
  159. package/dist/backend/prompt-tools.d.ts +47 -0
  160. package/dist/backend/prompt-tools.d.ts.map +1 -0
  161. package/dist/backend/prompt-tools.js +284 -0
  162. package/dist/backend/prompt-tools.js.map +1 -0
  163. package/dist/backend/routes.admin.d.ts +105 -0
  164. package/dist/backend/routes.admin.d.ts.map +1 -0
  165. package/dist/backend/routes.admin.js +1162 -0
  166. package/dist/backend/routes.admin.js.map +1 -0
  167. package/dist/backend/routes.api-key.d.ts +33 -0
  168. package/dist/backend/routes.api-key.d.ts.map +1 -0
  169. package/dist/backend/routes.api-key.js +43 -0
  170. package/dist/backend/routes.api-key.js.map +1 -0
  171. package/dist/backend/routes.external.d.ts +32 -0
  172. package/dist/backend/routes.external.d.ts.map +1 -0
  173. package/dist/backend/routes.external.js +115 -0
  174. package/dist/backend/routes.external.js.map +1 -0
  175. package/dist/backend/routes.public.d.ts +46 -0
  176. package/dist/backend/routes.public.d.ts.map +1 -0
  177. package/dist/backend/routes.public.js +318 -0
  178. package/dist/backend/routes.public.js.map +1 -0
  179. package/dist/backend/services/asset-references.d.ts +4 -0
  180. package/dist/backend/services/asset-references.d.ts.map +1 -0
  181. package/dist/backend/services/asset-references.js +104 -0
  182. package/dist/backend/services/asset-references.js.map +1 -0
  183. package/dist/backend/services/attachment.service.d.ts +45 -0
  184. package/dist/backend/services/attachment.service.d.ts.map +1 -0
  185. package/dist/backend/services/attachment.service.js +268 -0
  186. package/dist/backend/services/attachment.service.js.map +1 -0
  187. package/dist/backend/services/attribute-option-validator.d.ts +47 -0
  188. package/dist/backend/services/attribute-option-validator.d.ts.map +1 -0
  189. package/dist/backend/services/attribute-option-validator.js +69 -0
  190. package/dist/backend/services/attribute-option-validator.js.map +1 -0
  191. package/dist/backend/services/attribute-set-validations.d.ts +65 -0
  192. package/dist/backend/services/attribute-set-validations.d.ts.map +1 -0
  193. package/dist/backend/services/attribute-set-validations.js +89 -0
  194. package/dist/backend/services/attribute-set-validations.js.map +1 -0
  195. package/dist/backend/services/attribute-set.service.d.ts +50 -0
  196. package/dist/backend/services/attribute-set.service.d.ts.map +1 -0
  197. package/dist/backend/services/attribute-set.service.js +401 -0
  198. package/dist/backend/services/attribute-set.service.js.map +1 -0
  199. package/dist/backend/services/attribute-type-mapping.d.ts +66 -0
  200. package/dist/backend/services/attribute-type-mapping.d.ts.map +1 -0
  201. package/dist/backend/services/attribute-type-mapping.js +121 -0
  202. package/dist/backend/services/attribute-type-mapping.js.map +1 -0
  203. package/dist/backend/services/attribute-value-key.service.d.ts +48 -0
  204. package/dist/backend/services/attribute-value-key.service.d.ts.map +1 -0
  205. package/dist/backend/services/attribute-value-key.service.js +118 -0
  206. package/dist/backend/services/attribute-value-key.service.js.map +1 -0
  207. package/dist/backend/services/audit-references.d.ts +13 -0
  208. package/dist/backend/services/audit-references.d.ts.map +1 -0
  209. package/dist/backend/services/audit-references.js +51 -0
  210. package/dist/backend/services/audit-references.js.map +1 -0
  211. package/dist/backend/services/bulk-operation-queue.d.ts +26 -0
  212. package/dist/backend/services/bulk-operation-queue.d.ts.map +1 -0
  213. package/dist/backend/services/bulk-operation-queue.js +34 -0
  214. package/dist/backend/services/bulk-operation-queue.js.map +1 -0
  215. package/dist/backend/services/bulk-operation.service.d.ts +195 -0
  216. package/dist/backend/services/bulk-operation.service.d.ts.map +1 -0
  217. package/dist/backend/services/bulk-operation.service.js +510 -0
  218. package/dist/backend/services/bulk-operation.service.js.map +1 -0
  219. package/dist/backend/services/bundle.service.d.ts +87 -0
  220. package/dist/backend/services/bundle.service.d.ts.map +1 -0
  221. package/dist/backend/services/bundle.service.js +286 -0
  222. package/dist/backend/services/bundle.service.js.map +1 -0
  223. package/dist/backend/services/catalog-admin.service.d.ts +398 -0
  224. package/dist/backend/services/catalog-admin.service.d.ts.map +1 -0
  225. package/dist/backend/services/catalog-admin.service.js +1516 -0
  226. package/dist/backend/services/catalog-admin.service.js.map +1 -0
  227. package/dist/backend/services/catalog-attribute-read.service.d.ts +78 -0
  228. package/dist/backend/services/catalog-attribute-read.service.d.ts.map +1 -0
  229. package/dist/backend/services/catalog-attribute-read.service.js +216 -0
  230. package/dist/backend/services/catalog-attribute-read.service.js.map +1 -0
  231. package/dist/backend/services/catalog-bulk-import.service.d.ts +30 -0
  232. package/dist/backend/services/catalog-bulk-import.service.d.ts.map +1 -0
  233. package/dist/backend/services/catalog-bulk-import.service.js +136 -0
  234. package/dist/backend/services/catalog-bulk-import.service.js.map +1 -0
  235. package/dist/backend/services/catalog-bulk-update.service.d.ts +91 -0
  236. package/dist/backend/services/catalog-bulk-update.service.d.ts.map +1 -0
  237. package/dist/backend/services/catalog-bulk-update.service.js +330 -0
  238. package/dist/backend/services/catalog-bulk-update.service.js.map +1 -0
  239. package/dist/backend/services/catalog-category-read.service.d.ts +66 -0
  240. package/dist/backend/services/catalog-category-read.service.d.ts.map +1 -0
  241. package/dist/backend/services/catalog-category-read.service.js +248 -0
  242. package/dist/backend/services/catalog-category-read.service.js.map +1 -0
  243. package/dist/backend/services/catalog-org-price-decorator.d.ts +90 -0
  244. package/dist/backend/services/catalog-org-price-decorator.d.ts.map +1 -0
  245. package/dist/backend/services/catalog-org-price-decorator.js +184 -0
  246. package/dist/backend/services/catalog-org-price-decorator.js.map +1 -0
  247. package/dist/backend/services/catalog-product-filter.service.d.ts +82 -0
  248. package/dist/backend/services/catalog-product-filter.service.d.ts.map +1 -0
  249. package/dist/backend/services/catalog-product-filter.service.js +275 -0
  250. package/dist/backend/services/catalog-product-filter.service.js.map +1 -0
  251. package/dist/backend/services/catalog-product-read.service.d.ts +46 -0
  252. package/dist/backend/services/catalog-product-read.service.d.ts.map +1 -0
  253. package/dist/backend/services/catalog-product-read.service.js +197 -0
  254. package/dist/backend/services/catalog-product-read.service.js.map +1 -0
  255. package/dist/backend/services/catalog-query.service.d.ts +444 -0
  256. package/dist/backend/services/catalog-query.service.d.ts.map +1 -0
  257. package/dist/backend/services/catalog-query.service.js +1633 -0
  258. package/dist/backend/services/catalog-query.service.js.map +1 -0
  259. package/dist/backend/services/catalog-quick-search.service.d.ts +78 -0
  260. package/dist/backend/services/catalog-quick-search.service.d.ts.map +1 -0
  261. package/dist/backend/services/catalog-quick-search.service.js +159 -0
  262. package/dist/backend/services/catalog-quick-search.service.js.map +1 -0
  263. package/dist/backend/services/catalog-write-ports.d.ts +25 -0
  264. package/dist/backend/services/catalog-write-ports.d.ts.map +1 -0
  265. package/dist/backend/services/catalog-write-ports.js +63 -0
  266. package/dist/backend/services/catalog-write-ports.js.map +1 -0
  267. package/dist/backend/services/category-admin.service.d.ts +102 -0
  268. package/dist/backend/services/category-admin.service.d.ts.map +1 -0
  269. package/dist/backend/services/category-admin.service.js +271 -0
  270. package/dist/backend/services/category-admin.service.js.map +1 -0
  271. package/dist/backend/services/gallery.service.d.ts +85 -0
  272. package/dist/backend/services/gallery.service.d.ts.map +1 -0
  273. package/dist/backend/services/gallery.service.js +326 -0
  274. package/dist/backend/services/gallery.service.js.map +1 -0
  275. package/dist/backend/services/grouped.service.d.ts +39 -0
  276. package/dist/backend/services/grouped.service.d.ts.map +1 -0
  277. package/dist/backend/services/grouped.service.js +136 -0
  278. package/dist/backend/services/grouped.service.js.map +1 -0
  279. package/dist/backend/services/label-resolver.d.ts +16 -0
  280. package/dist/backend/services/label-resolver.d.ts.map +1 -0
  281. package/dist/backend/services/label-resolver.js +43 -0
  282. package/dist/backend/services/label-resolver.js.map +1 -0
  283. package/dist/backend/services/packaging-unit.service.d.ts +28 -0
  284. package/dist/backend/services/packaging-unit.service.d.ts.map +1 -0
  285. package/dist/backend/services/packaging-unit.service.js +197 -0
  286. package/dist/backend/services/packaging-unit.service.js.map +1 -0
  287. package/dist/backend/services/primary-asset-url.d.ts +4 -0
  288. package/dist/backend/services/primary-asset-url.d.ts.map +1 -0
  289. package/dist/backend/services/primary-asset-url.js +55 -0
  290. package/dist/backend/services/primary-asset-url.js.map +1 -0
  291. package/dist/backend/services/product-editor-preferences.service.d.ts +20 -0
  292. package/dist/backend/services/product-editor-preferences.service.d.ts.map +1 -0
  293. package/dist/backend/services/product-editor-preferences.service.js +44 -0
  294. package/dist/backend/services/product-editor-preferences.service.js.map +1 -0
  295. package/dist/backend/services/product-link.service.d.ts +169 -0
  296. package/dist/backend/services/product-link.service.d.ts.map +1 -0
  297. package/dist/backend/services/product-link.service.js +297 -0
  298. package/dist/backend/services/product-link.service.js.map +1 -0
  299. package/dist/backend/services/product-overrides.service.d.ts +77 -0
  300. package/dist/backend/services/product-overrides.service.d.ts.map +1 -0
  301. package/dist/backend/services/product-overrides.service.js +204 -0
  302. package/dist/backend/services/product-overrides.service.js.map +1 -0
  303. package/dist/backend/services/product-scope-context.service.d.ts +36 -0
  304. package/dist/backend/services/product-scope-context.service.d.ts.map +1 -0
  305. package/dist/backend/services/product-scope-context.service.js +106 -0
  306. package/dist/backend/services/product-scope-context.service.js.map +1 -0
  307. package/dist/backend/services/product-type-validations.d.ts +42 -0
  308. package/dist/backend/services/product-type-validations.d.ts.map +1 -0
  309. package/dist/backend/services/product-type-validations.js +55 -0
  310. package/dist/backend/services/product-type-validations.js.map +1 -0
  311. package/dist/backend/services/product-value-resolver.service.d.ts +59 -0
  312. package/dist/backend/services/product-value-resolver.service.d.ts.map +1 -0
  313. package/dist/backend/services/product-value-resolver.service.js +111 -0
  314. package/dist/backend/services/product-value-resolver.service.js.map +1 -0
  315. package/dist/backend/services/system-attribute-scopes.d.ts +18 -0
  316. package/dist/backend/services/system-attribute-scopes.d.ts.map +1 -0
  317. package/dist/backend/services/system-attribute-scopes.js +18 -0
  318. package/dist/backend/services/system-attribute-scopes.js.map +1 -0
  319. package/dist/backend/services/viewer-organization.d.ts +25 -0
  320. package/dist/backend/services/viewer-organization.d.ts.map +1 -0
  321. package/dist/backend/services/viewer-organization.js +31 -0
  322. package/dist/backend/services/viewer-organization.js.map +1 -0
  323. package/dist/manifest.d.ts +204 -0
  324. package/dist/manifest.d.ts.map +1 -0
  325. package/dist/manifest.js +686 -0
  326. package/dist/manifest.js.map +1 -0
  327. package/dist/migrations/20260429T064146_catalog_attribute_sets_init.d.ts +33 -0
  328. package/dist/migrations/20260429T064146_catalog_attribute_sets_init.d.ts.map +1 -0
  329. package/dist/migrations/20260429T064146_catalog_attribute_sets_init.js +118 -0
  330. package/dist/migrations/20260429T064146_catalog_attribute_sets_init.js.map +1 -0
  331. package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.d.ts +24 -0
  332. package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.d.ts.map +1 -0
  333. package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.js +31 -0
  334. package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.js.map +1 -0
  335. package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.d.ts +32 -0
  336. package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.d.ts.map +1 -0
  337. package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.js +58 -0
  338. package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.js.map +1 -0
  339. package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.d.ts +22 -0
  340. package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.d.ts.map +1 -0
  341. package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.js +66 -0
  342. package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.js.map +1 -0
  343. package/dist/migrations/20260429T112543_catalog_product_attachments.d.ts +18 -0
  344. package/dist/migrations/20260429T112543_catalog_product_attachments.d.ts.map +1 -0
  345. package/dist/migrations/20260429T112543_catalog_product_attachments.js +73 -0
  346. package/dist/migrations/20260429T112543_catalog_product_attachments.js.map +1 -0
  347. package/dist/migrations/20260429T123726_catalog_product_links.d.ts +21 -0
  348. package/dist/migrations/20260429T123726_catalog_product_links.d.ts.map +1 -0
  349. package/dist/migrations/20260429T123726_catalog_product_links.js +48 -0
  350. package/dist/migrations/20260429T123726_catalog_product_links.js.map +1 -0
  351. package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.d.ts +23 -0
  352. package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.d.ts.map +1 -0
  353. package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.js +94 -0
  354. package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.js.map +1 -0
  355. package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.d.ts +24 -0
  356. package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.d.ts.map +1 -0
  357. package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.js +31 -0
  358. package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.js.map +1 -0
  359. package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.d.ts +31 -0
  360. package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.d.ts.map +1 -0
  361. package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.js +133 -0
  362. package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.js.map +1 -0
  363. package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.d.ts +16 -0
  364. package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.d.ts.map +1 -0
  365. package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.js +23 -0
  366. package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.js.map +1 -0
  367. package/dist/migrations/20260526T124736_catalog_product_status_inactive.d.ts +10 -0
  368. package/dist/migrations/20260526T124736_catalog_product_status_inactive.d.ts.map +1 -0
  369. package/dist/migrations/20260526T124736_catalog_product_status_inactive.js +22 -0
  370. package/dist/migrations/20260526T124736_catalog_product_status_inactive.js.map +1 -0
  371. package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.d.ts +38 -0
  372. package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.d.ts.map +1 -0
  373. package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.js +98 -0
  374. package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.js.map +1 -0
  375. package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.d.ts +13 -0
  376. package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.d.ts.map +1 -0
  377. package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.js +17 -0
  378. package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.js.map +1 -0
  379. package/dist/migrations/20260611T140407_catalog_bulk_operations.d.ts +16 -0
  380. package/dist/migrations/20260611T140407_catalog_bulk_operations.d.ts.map +1 -0
  381. package/dist/migrations/20260611T140407_catalog_bulk_operations.js +42 -0
  382. package/dist/migrations/20260611T140407_catalog_bulk_operations.js.map +1 -0
  383. package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.d.ts +14 -0
  384. package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.d.ts.map +1 -0
  385. package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.js +18 -0
  386. package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.js.map +1 -0
  387. package/dist/migrations/20260611T140412_catalog_product_packaging_units.d.ts +11 -0
  388. package/dist/migrations/20260611T140412_catalog_product_packaging_units.d.ts.map +1 -0
  389. package/dist/migrations/20260611T140412_catalog_product_packaging_units.js +29 -0
  390. package/dist/migrations/20260611T140412_catalog_product_packaging_units.js.map +1 -0
  391. package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.d.ts +23 -0
  392. package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.d.ts.map +1 -0
  393. package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.js +35 -0
  394. package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.js.map +1 -0
  395. package/dist/migrations/20260718T200343_catalog_category_custom_field_values.d.ts +12 -0
  396. package/dist/migrations/20260718T200343_catalog_category_custom_field_values.d.ts.map +1 -0
  397. package/dist/migrations/20260718T200343_catalog_category_custom_field_values.js +16 -0
  398. package/dist/migrations/20260718T200343_catalog_category_custom_field_values.js.map +1 -0
  399. package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.d.ts +32 -0
  400. package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.d.ts.map +1 -0
  401. package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.js +286 -0
  402. package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.js.map +1 -0
  403. package/dist/migrations/20260804T152604_catalog_widen_product_sku.d.ts +36 -0
  404. package/dist/migrations/20260804T152604_catalog_widen_product_sku.d.ts.map +1 -0
  405. package/dist/migrations/20260804T152604_catalog_widen_product_sku.js +63 -0
  406. package/dist/migrations/20260804T152604_catalog_widen_product_sku.js.map +1 -0
  407. package/dist/migrations/20260804T160244_catalog_category_activation.d.ts +18 -0
  408. package/dist/migrations/20260804T160244_catalog_category_activation.d.ts.map +1 -0
  409. package/dist/migrations/20260804T160244_catalog_category_activation.js +22 -0
  410. package/dist/migrations/20260804T160244_catalog_category_activation.js.map +1 -0
  411. package/dist/migrations/20260912T094557_catalog_sales_channel_products.d.ts +27 -0
  412. package/dist/migrations/20260912T094557_catalog_sales_channel_products.d.ts.map +1 -0
  413. package/dist/migrations/20260912T094557_catalog_sales_channel_products.js +44 -0
  414. package/dist/migrations/20260912T094557_catalog_sales_channel_products.js.map +1 -0
  415. package/dist/migrations/20260912T094623_catalog_sales_channel_categories.d.ts +27 -0
  416. package/dist/migrations/20260912T094623_catalog_sales_channel_categories.d.ts.map +1 -0
  417. package/dist/migrations/20260912T094623_catalog_sales_channel_categories.js +44 -0
  418. package/dist/migrations/20260912T094623_catalog_sales_channel_categories.js.map +1 -0
  419. package/dist/migrations/20260925T125527_catalog_inventory_columns.d.ts +36 -0
  420. package/dist/migrations/20260925T125527_catalog_inventory_columns.d.ts.map +1 -0
  421. package/dist/migrations/20260925T125527_catalog_inventory_columns.js +87 -0
  422. package/dist/migrations/20260925T125527_catalog_inventory_columns.js.map +1 -0
  423. package/dist/migrations/index.d.ts +55 -0
  424. package/dist/migrations/index.d.ts.map +1 -0
  425. package/dist/migrations/index.js +80 -0
  426. package/dist/migrations/index.js.map +1 -0
  427. package/dist/ports/index.d.ts +96 -0
  428. package/dist/ports/index.d.ts.map +1 -0
  429. package/dist/ports/index.js +2 -0
  430. package/dist/ports/index.js.map +1 -0
  431. package/docs/catalog/attachments.md +69 -0
  432. package/docs/catalog/attribute-sets.md +63 -0
  433. package/docs/catalog/attributes.md +244 -0
  434. package/docs/catalog/composite-products.md +115 -0
  435. package/docs/catalog/gallery-and-labels.md +73 -0
  436. package/docs/catalog/packaging-units.md +67 -0
  437. package/docs/catalog/per-channel-per-language-overrides.md +234 -0
  438. package/docs/catalog/product-links.md +79 -0
  439. package/docs/catalog.md +207 -0
  440. package/i18n/en.json +649 -0
  441. package/i18n/pl.json +649 -0
  442. package/package.json +109 -0
  443. package/tailwind.css +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
2
+ import type { Worker } from 'bullmq';
3
+ import type { EntityManager } from '@mikro-orm/postgresql';
4
+ import type { Redis } from 'ioredis';
5
+ import type { CommandBus } from '@endora-commerce/platform/commands';
6
+ import { type AssetReadPort, type SearchQueryPort, type AdminUserReadPort, type EmailMailerPort, type LanguageReadPort, type ListingPriceOrderPort, type ListingPricePort, type OrgLinePricePort, type CustomFieldDefinitionReadPort, type CustomFieldValuePort, type OrganizationDetailsPort } from '@endora-commerce/contracts';
7
+ import type { EventBus } from '@endora-commerce/platform/events';
8
+ import type { StorefrontRevalidator } from '@endora-commerce/platform/http';
9
+ import type { PlatformLogger } from '@endora-commerce/platform/kernel';
10
+ import type { AuditPort } from '@endora-commerce/platform/kernel';
11
+ import type { SalesChannelMembershipPort } from '@endora-commerce/platform/kernel';
12
+ import { type CatalogWarehouseThresholdCopy } from './services/catalog-admin.service.js';
13
+ import { CatalogAttributeReadService } from './services/catalog-attribute-read.service.js';
14
+ import type { CustomFieldDefinitionApplyApi } from './commands/attribute-commands.js';
15
+ import { type BulkNotificationRecorder, type SearchReindexRunner } from './services/bulk-operation.service.js';
16
+ import { type ResolveAvailabilityPort } from './services/catalog-org-price-decorator.js';
17
+ import type { RequireAdminFactory } from '@endora-commerce/platform/kernel';
18
+ /**
19
+ * Composition root for the catalog module. Wires the ORM's per-request EM into
20
+ * the query/admin services and registers the public, admin, and api-key route
21
+ * surfaces.
22
+ */
23
+ export type RequireApiKeyFactory = (scope: string) => (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
24
+ export interface CatalogModuleOptions {
25
+ emFactory: () => EntityManager;
26
+ eventBus: EventBus;
27
+ /**
28
+ * Feature 068 — flushes the storefront's `catalog:categories` fetch-cache tag.
29
+ * Owned by `backend.ts`, which also owns the `category.updated.v1`
30
+ * subscription that drives it; passed here only so it can pick up `app.log`
31
+ * once the Fastify instance exists.
32
+ */
33
+ categoryRevalidator?: StorefrontRevalidator;
34
+ requireAdmin?: RequireAdminFactory;
35
+ /** Audit-log writer; if provided, mutations land an AuditLogEntry. */
36
+ auditLogService?: AuditPort;
37
+ /** Resolver for who's acting — used for audit attribution. */
38
+ resolveAdminAuditContext?: (req: FastifyRequest) => {
39
+ actorAdminUserId: string;
40
+ impersonatedCustomerAccountId?: string | null;
41
+ };
42
+ /**
43
+ * API-key gate factory injected by the integrations module composition root.
44
+ * When provided, the catalog by-sku upsert route uses real api-key auth
45
+ * (T220 out-of-scope → 403). When undefined, the route falls back to a
46
+ * pass-through gate.
47
+ */
48
+ requireApiKey?: RequireApiKeyFactory;
49
+ /**
50
+ * Feature 062 — bound-key gate injected by the integrations module. When
51
+ * BOTH this and `pricingService` are provided (alongside `requireApiKey`),
52
+ * the external catalog namespace (`/api/v1/external/catalog/*`) is
53
+ * registered. When omitted (legacy fixtures), the namespace is absent.
54
+ */
55
+ requireBoundApiKey?: RequireApiKeyFactory;
56
+ /**
57
+ * Feature 062 — the price-lists pricing engine (the same resolver cart
58
+ * pricing uses). Consumed only by the external catalog namespace's
59
+ * decoration layer — SC-001 parity by construction.
60
+ */
61
+ pricingService?: OrgLinePricePort & ListingPricePort & ListingPriceOrderPort;
62
+ /**
63
+ * Feature 062 — inventory availability port for the external namespace's
64
+ * `availability` indication. Optional: when omitted the field is omitted.
65
+ */
66
+ resolveExternalAvailability?: ResolveAvailabilityPort;
67
+ /**
68
+ * Feature 075 — `organizations`' read port. The external namespace's price
69
+ * decoration resolves the calling organisation through it, where it used to
70
+ * run `em.findOne(Organization, …)` against another module's table.
71
+ *
72
+ * The storefront listing, the PDP and the cross-sell strip resolve it too:
73
+ * the caller's own price is the caller's organisation's, and the one field
74
+ * the pricing engine needs beyond the id — the customer group a
75
+ * group-targeted list is selected by — lives on that row.
76
+ */
77
+ organizations?: OrganizationDetailsPort;
78
+ /**
79
+ * Feature 075 — `admin_users`' read port, for the one row the bulk-operation
80
+ * completion notice reads: the requester's e-mail address.
81
+ */
82
+ adminUsers?: AdminUserReadPort;
83
+ /**
84
+ * Feature 005 / T027 — when provided, every newly-created Product is
85
+ * automatically bound to the system-default Sales Channel unless it
86
+ * already had memberships set through some other path (FR-011).
87
+ * Production composition.ts always provides this; tests omit it for
88
+ * pre-feature-005 fixtures.
89
+ */
90
+ salesChannelMembership?: SalesChannelMembershipPort;
91
+ /**
92
+ * Issue #185 — `inventory`'s per-warehouse threshold copy, used by product
93
+ * duplication. Contributed as a presence-decided closure rather than resolved
94
+ * here, for the reason `resolveExternalAvailability` is: this module declares
95
+ * `inventory` `degrades-without`, so absence is decided in front of the gate
96
+ * and reaches the service in its return type.
97
+ */
98
+ copyWarehouseThresholds?: CatalogWarehouseThresholdCopy;
99
+ /**
100
+ * Feature 022 — language admin service used by the product scope
101
+ * editor's scope-context endpoint (for the primary admin language)
102
+ * and the resolver service (for the same). Optional: when omitted,
103
+ * the new admin endpoints are NOT registered.
104
+ */
105
+ languageService?: LanguageReadPort;
106
+ /**
107
+ * In-app (bell) notifications — used by the queued bulk-edit path to
108
+ * tell the requester their background operation finished. Optional;
109
+ * when omitted the notification is simply skipped.
110
+ *
111
+ * The **recorder** shape rather than `admin_notifications`' service: absence
112
+ * is an answer this module reads off the return type (D-60), not an exception
113
+ * it catches after the fact.
114
+ */
115
+ adminNotificationService?: BulkNotificationRecorder;
116
+ /**
117
+ * Email transport — used by the queued bulk-edit path to email the
118
+ * requester on completion. Optional; when omitted email is skipped.
119
+ */
120
+ mailer?: EmailMailerPort;
121
+ /**
122
+ * Redis connection used to back the bulk-operation queue (Principle X).
123
+ * When provided, `create()` enqueues each operation onto a durable BullMQ
124
+ * queue instead of processing it in-process. When omitted (tests), enqueue
125
+ * is a no-op and queued rows stay `pending` for direct-driven assertions.
126
+ */
127
+ redis?: Redis;
128
+ /** Feature 054 — enables bulk-edit undo (capture revert state + audited undo). */
129
+ commandBus?: CommandBus;
130
+ /**
131
+ * When `true` (and `redis` is provided), this process also runs the
132
+ * bulk-operation **consumer** (a BullMQ worker). Co-locating the worker in
133
+ * the API process is the default single-VPS posture; set `BACKEND_ROLE=api`
134
+ * and run `pnpm --filter backend run worker` to split it into its own
135
+ * independently scalable process without code changes.
136
+ */
137
+ runBulkOperationWorker?: boolean;
138
+ /**
139
+ * The lifecycle gate for a constructed BullMQ worker — `ctx.worker`, threaded
140
+ * in by `backend.ts`.
141
+ *
142
+ * The consumer is built inside the attach function, because it needs
143
+ * `app.log` and an `onClose` hook, so this file has no `ModuleContext` where
144
+ * the worker exists. It called `defineModuleWorker('catalog', …)` directly
145
+ * until T051, which `contracts/host-package.md` §1.4c classifies **A**:
146
+ * publishing that wrapper would re-open by bare specifier the seam
147
+ * `check:subscribe-seam` closed by relative path. Taking the seam as an
148
+ * argument is the same gate reached the sanctioned way.
149
+ */
150
+ registerWorker: (worker: Worker, options?: {
151
+ logger?: PlatformLogger;
152
+ }) => void;
153
+ /**
154
+ * Runs a full Meilisearch reindex (the `search:reindex` CLI equivalent).
155
+ * When provided, flipping an attribute's `searchable` flag enqueues a
156
+ * `search_reindex` bulk operation that calls this. Wired from the
157
+ * composition root so catalog stays decoupled from the search module.
158
+ */
159
+ reindexSearchIndexes?: SearchReindexRunner;
160
+ /**
161
+ * Resolves the `general.product_image_placeholder_url` setting (global or
162
+ * per sales channel) for a channel code. Wired from composition so catalog
163
+ * stays decoupled from the settings module. When provided, storefront
164
+ * product summaries / details with no image fall back to the configured URL.
165
+ */
166
+ resolveProductImagePlaceholderUrl?: (salesChannelCode: string | undefined) => Promise<string | null>;
167
+ /** Feature 055 — validates + reads Category custom-field values on the admin edit path. */
168
+ customFieldValues?: CustomFieldValuePort;
169
+ /**
170
+ * Feature 055 (US4) — custom-field definition source. When wired, Category
171
+ * custom fields flagged `config.filterable` are merged into the storefront
172
+ * filter set by `CatalogQueryService`. Catalog interprets the opaque config.
173
+ *
174
+ * Feature 061 — the same object (production wiring passes the
175
+ * `CustomFieldDefinitionService`) also backs the composed attribute read
176
+ * model, and since T053(b) the attribute write path's committed-state
177
+ * definition read with it.
178
+ */
179
+ customFieldDefinitions?: CustomFieldDefinitionReadPort;
180
+ /**
181
+ * Feature 061 — the custom_fields apply seam used by the attribute Commands.
182
+ * Production + test composition pass the `CustomFieldDefinitionService` here
183
+ * (it implements the interface). The committed-state definition read that
184
+ * used to travel with it is `customFieldDefinitions`' since T053(b).
185
+ */
186
+ customFieldsPort?: CustomFieldDefinitionApplyApi;
187
+ /**
188
+ * Feature 061 — pre-built composed attribute read service. When omitted but
189
+ * `customFieldDefinitions` is present, the plugin constructs its own.
190
+ */
191
+ attributeReadService?: CatalogAttributeReadService;
192
+ /**
193
+ * Issue #153 — `search`'s storefront listing backend, resolved as a port.
194
+ *
195
+ * This module used to `new SearchQueryService(...)` here out of `search`'s
196
+ * class, so a composition held two Meilisearch clients and two attribute-read
197
+ * wirings, and no gate stood between the public product list and an index
198
+ * whose maintenance subscribers had stopped with a switched-off `search`.
199
+ * `backend.ts` resolves `searchQueryPort` instead.
200
+ *
201
+ * Whether the listing *uses* it is still decided before the call, by
202
+ * `effectiveState.isPresent('search')` in `routes.public.ts` (MR !573) — a
203
+ * degrade to Postgres by decision, not by exception.
204
+ */
205
+ searchQueryService?: SearchQueryPort;
206
+ /**
207
+ * Feature 075 — `assets_library`'s read port. Every service below that shows
208
+ * or verifies an image takes it: the gallery and attachment writers check the
209
+ * asset's `kind` before storing a reference to it, and the storefront reads
210
+ * resolve the primary image URL through it. It replaces four
211
+ * `em.findOne/find(Asset, …)` calls and six raw `join assets` clauses.
212
+ */
213
+ assets?: AssetReadPort;
214
+ }
215
+ export declare function catalogModule(options: CatalogModuleOptions): (app: FastifyInstance) => Promise<void>;
216
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { BULK_OPERATION_TYPES, } from '@endora-commerce/contracts';
2
+ import { createBulkOperationQueue, createBulkOperationWorker, BULK_OPERATION_JOB_NAME, } from './services/bulk-operation-queue.js';
3
+ import { CatalogQueryService } from './services/catalog-query.service.js';
4
+ import { CatalogAdminService, } from './services/catalog-admin.service.js';
5
+ import { CatalogAttributeReadService } from './services/catalog-attribute-read.service.js';
6
+ import { CatalogBulkUpdateService } from './services/catalog-bulk-update.service.js';
7
+ import { BulkOperationService, } from './services/bulk-operation.service.js';
8
+ import { CategoryAdminService, } from './services/category-admin.service.js';
9
+ import { AttributeSetService } from './services/attribute-set.service.js';
10
+ import { GalleryService } from './services/gallery.service.js';
11
+ import { AttachmentService } from './services/attachment.service.js';
12
+ import { PackagingUnitService } from './services/packaging-unit.service.js';
13
+ import { ProductLinkService } from './services/product-link.service.js';
14
+ import { GroupedService } from './services/grouped.service.js';
15
+ import { BundleService } from './services/bundle.service.js';
16
+ import { ProductEditorPreferencesService } from './services/product-editor-preferences.service.js';
17
+ import { ProductOverridesService } from './services/product-overrides.service.js';
18
+ import { ProductScopeContextService } from './services/product-scope-context.service.js';
19
+ import { ProductValueResolverService } from './services/product-value-resolver.service.js';
20
+ import { registerCatalogPublicRoutes } from './routes.public.js';
21
+ import { registerCatalogAdminRoutes } from './routes.admin.js';
22
+ import { registerCatalogApiKeyRoutes } from './routes.api-key.js';
23
+ import { registerCatalogExternalRoutes } from './routes.external.js';
24
+ import { CatalogOrgPriceDecorator, } from './services/catalog-org-price-decorator.js';
25
+ export function catalogModule(options) {
26
+ return async (app) => {
27
+ const productLinkServiceForRead = new ProductLinkService(options.emFactory, options.commandBus, options.pricingService, options.assets, options.salesChannelMembership, options.organizations);
28
+ // Feature 061 — the composed attribute read model (definitions from the
29
+ // custom_fields cache + catalog extension rows). Constructed once and
30
+ // threaded into every attribute consumer in this module.
31
+ const attributeReadService = options.attributeReadService ??
32
+ (options.customFieldDefinitions
33
+ ? new CatalogAttributeReadService(options.emFactory, options.customFieldDefinitions)
34
+ : undefined);
35
+ const queryService = new CatalogQueryService(options.emFactory, productLinkServiceForRead, options.customFieldDefinitions, attributeReadService, options.pricingService, options.assets, options.salesChannelMembership, options.organizations,
36
+ // Feature 086 — the ordering slice of the same `pricingService`.
37
+ options.pricingService);
38
+ const adminService = new CatalogAdminService(options.emFactory, options.eventBus, options.auditLogService, options.salesChannelMembership, options.commandBus, attributeReadService, options.customFieldsPort, options.copyWarehouseThresholds);
39
+ const bulkUpdateService = new CatalogBulkUpdateService(options.emFactory, adminService, options.salesChannelMembership, options.auditLogService);
40
+ // Queued bulk-edit (Principle X): large selections persist as `pending`
41
+ // operations on a durable BullMQ queue. The producer (`create()`) only
42
+ // enqueues; a separable BullMQ worker (below / or its own process) is the
43
+ // consumer. When no Redis is wired (tests) enqueue is a no-op and rows
44
+ // stay `pending` for direct-driven assertions.
45
+ const bulkOperationQueue = options.redis
46
+ ? createBulkOperationQueue(options.redis)
47
+ : undefined;
48
+ const bulkOperationService = new BulkOperationService(options.emFactory, bulkUpdateService, {
49
+ ...(options.adminNotificationService
50
+ ? { notificationService: options.adminNotificationService }
51
+ : {}),
52
+ ...(options.mailer ? { mailer: options.mailer } : {}),
53
+ ...(options.adminUsers ? { adminUsers: options.adminUsers } : {}),
54
+ ...(options.reindexSearchIndexes
55
+ ? { reindexRunner: options.reindexSearchIndexes }
56
+ : {}),
57
+ ...(bulkOperationQueue
58
+ ? {
59
+ onEnqueued: async (operationId) => {
60
+ await bulkOperationQueue.add(BULK_OPERATION_JOB_NAME, { operationId });
61
+ },
62
+ }
63
+ : {}),
64
+ }, options.commandBus);
65
+ // When a reindex runner is wired, flipping an attribute's `searchable`
66
+ // flag enqueues a `search_reindex` bulk operation (visible on the
67
+ // "Akcje masowe" page, with the same bell + email notifications).
68
+ if (options.reindexSearchIndexes) {
69
+ const queue = bulkOperationService;
70
+ adminService.setSearchReindexEnqueuer(async ({ actorAdminUserId }) => {
71
+ await queue.create({
72
+ type: BULK_OPERATION_TYPES.SEARCH_REINDEX,
73
+ requestedByAdminUserId: actorAdminUserId ?? '00000000-0000-0000-0000-000000000000',
74
+ payload: { productIds: [], fields: {} },
75
+ });
76
+ });
77
+ }
78
+ const bundleServicePublic = new BundleService(options.emFactory, options.commandBus);
79
+ await registerCatalogPublicRoutes(app, {
80
+ queryService,
81
+ ...(options.searchQueryService ? { searchQueryService: options.searchQueryService } : {}),
82
+ productLinkService: productLinkServiceForRead,
83
+ bundleService: bundleServicePublic,
84
+ ...(options.resolveProductImagePlaceholderUrl
85
+ ? { resolveProductImagePlaceholderUrl: options.resolveProductImagePlaceholderUrl }
86
+ : {}),
87
+ // Feature 086 / FR-016 — the route's own refusal reads the page's display
88
+ // mode off the same container the ordering comes from.
89
+ ...(options.pricingService ? { listingPriceOrder: options.pricingService } : {}),
90
+ });
91
+ const categoryAdminService = new CategoryAdminService(options.emFactory, options.salesChannelMembership, options.commandBus, options.customFieldValues, options.eventBus);
92
+ // Feature 068 — the storefront serves the category tree from a fetch cache
93
+ // tagged `catalog:categories` with a 5-minute TTL, flushed on every category
94
+ // write so an activation toggle is visible immediately. The subscription
95
+ // lives in `backend.ts` and goes through `ctx.subscribe` (issue #107); this
96
+ // is where `app.log` exists, so the revalidator picks it up here.
97
+ options.categoryRevalidator?.setLogger(app.log);
98
+ const attributeSetService = new AttributeSetService(options.emFactory, options.commandBus, attributeReadService);
99
+ const galleryService = new GalleryService(options.emFactory, options.commandBus, options.assets);
100
+ const attachmentService = new AttachmentService(options.emFactory, options.commandBus, options.assets);
101
+ const packagingUnitService = new PackagingUnitService(options.emFactory, options.commandBus);
102
+ const productLinkService = new ProductLinkService(options.emFactory, options.commandBus, options.pricingService, options.assets, options.salesChannelMembership, options.organizations);
103
+ const groupedService = new GroupedService(options.emFactory, options.commandBus);
104
+ const bundleService = new BundleService(options.emFactory, options.commandBus);
105
+ await registerCatalogApiKeyRoutes(app, {
106
+ queryService,
107
+ adminService,
108
+ attributeSetService,
109
+ emFactory: options.emFactory,
110
+ ...(options.requireApiKey ? { requireApiKey: options.requireApiKey } : {}),
111
+ });
112
+ // Feature 062 — external catalog namespace (/api/v1/external/catalog/*).
113
+ // Registered only when the api-key gates AND the pricing engine are wired
114
+ // (production + full test harness); legacy fixtures skip it.
115
+ if (options.requireApiKey &&
116
+ options.requireBoundApiKey &&
117
+ options.pricingService &&
118
+ options.organizations &&
119
+ // Issue #185 — the assortment check goes through the channel-membership
120
+ // accessor, so the namespace is not mounted without it rather than
121
+ // falling back to a hand-written bridge read.
122
+ options.salesChannelMembership) {
123
+ const decorator = new CatalogOrgPriceDecorator({
124
+ emFactory: options.emFactory,
125
+ pricingService: options.pricingService,
126
+ organizations: options.organizations,
127
+ channelMembership: options.salesChannelMembership,
128
+ ...(options.resolveExternalAvailability
129
+ ? { resolveAvailability: options.resolveExternalAvailability }
130
+ : {}),
131
+ });
132
+ await registerCatalogExternalRoutes(app, {
133
+ queryService,
134
+ decorator,
135
+ requireApiKey: options.requireApiKey,
136
+ requireBoundApiKey: options.requireBoundApiKey,
137
+ });
138
+ }
139
+ // Feature 022 — scope editor services. Conditional on the
140
+ // composition root providing both LanguageService and the
141
+ // SalesChannelMembershipPort, since the context endpoint needs
142
+ // both to assemble its response.
143
+ const editorPreferencesService = new ProductEditorPreferencesService(options.emFactory);
144
+ const valueResolverService = options.languageService
145
+ ? new ProductValueResolverService(options.emFactory, options.languageService, attributeReadService)
146
+ : undefined;
147
+ const scopeContextService = options.salesChannelMembership && options.languageService
148
+ ? new ProductScopeContextService(options.emFactory, options.salesChannelMembership, options.languageService, editorPreferencesService)
149
+ : undefined;
150
+ const overridesService = options.salesChannelMembership
151
+ ? new ProductOverridesService(options.emFactory, options.salesChannelMembership, options.commandBus, attributeReadService)
152
+ : undefined;
153
+ await registerCatalogAdminRoutes(app, {
154
+ adminService,
155
+ categoryAdminService,
156
+ attributeSetService,
157
+ galleryService,
158
+ attachmentService,
159
+ packagingUnitService,
160
+ productLinkService,
161
+ groupedService,
162
+ bundleService,
163
+ bulkUpdateService,
164
+ bulkOperationService,
165
+ requireAdmin: options.requireAdmin ??
166
+ (() => async () => {
167
+ // no-op gate: development/tests default
168
+ }),
169
+ ...(options.resolveAdminAuditContext
170
+ ? { resolveAdminAuditContext: options.resolveAdminAuditContext }
171
+ : {}),
172
+ ...(options.auditLogService ? { auditLogService: options.auditLogService } : {}),
173
+ ...(scopeContextService ? { productScopeContextService: scopeContextService } : {}),
174
+ productEditorPreferencesService: editorPreferencesService,
175
+ ...(valueResolverService ? { productValueResolverService: valueResolverService } : {}),
176
+ ...(overridesService ? { productOverridesService: overridesService } : {}),
177
+ });
178
+ // Consumer side (Principle X). The BullMQ worker claims each queued
179
+ // operation atomically and runs the idempotent handler. It is a separable
180
+ // entrypoint: co-located here by default (single-VPS posture) but
181
+ // startable as its own process via `pnpm --filter backend run worker`
182
+ // (which sets BACKEND_ROLE so the API process skips this block).
183
+ if (bulkOperationQueue && options.runBulkOperationWorker && options.redis) {
184
+ const svc = bulkOperationService;
185
+ // BullMQ workers issue blocking Redis commands, so they need a
186
+ // dedicated connection rather than the app's shared client.
187
+ const workerConnection = options.redis.duplicate();
188
+ const worker = createBulkOperationWorker(workerConnection, async (job) => {
189
+ app.log.info({ operationId: job.data.operationId }, 'bulk-operation processing started');
190
+ await svc.processById(job.data.operationId);
191
+ app.log.info({ operationId: job.data.operationId }, 'bulk-operation processing finished');
192
+ });
193
+ options.registerWorker(worker, { logger: app.log });
194
+ app.addHook('onClose', async () => {
195
+ await worker.close();
196
+ workerConnection.disconnect();
197
+ await bulkOperationQueue.close();
198
+ });
199
+ // Boot reconciliation: re-enqueue rows left `pending` (e.g. created while
200
+ // the queue was unreachable, or predating this deploy). Not a draining
201
+ // sweeper — it only enqueues onto the durable queue, then returns.
202
+ void svc
203
+ .findPendingIds()
204
+ .then(async (ids) => {
205
+ for (const operationId of ids) {
206
+ await bulkOperationQueue.add(BULK_OPERATION_JOB_NAME, { operationId });
207
+ }
208
+ if (ids.length > 0) {
209
+ app.log.info({ count: ids.length }, 'bulk-operation boot reconciliation enqueued');
210
+ }
211
+ })
212
+ .catch((err) => app.log.error({ err }, 'bulk-operation boot reconciliation failed'));
213
+ }
214
+ else if (bulkOperationQueue) {
215
+ // Producer-only process (BACKEND_ROLE=api): close the queue handle on
216
+ // shutdown so its Redis connection is released cleanly.
217
+ app.addHook('onClose', async () => {
218
+ await bulkOperationQueue.close();
219
+ });
220
+ }
221
+ };
222
+ }
223
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { type BulkProgressReader, type PromptActionTool } from '@endora-commerce/contracts';
2
+ import type { EntityManager } from '@mikro-orm/postgresql';
3
+ import type { Redis } from 'ioredis';
4
+ import type { EventBus } from '@endora-commerce/platform/events';
5
+ import type { AuditPort } from '@endora-commerce/platform/kernel';
6
+ import type { SalesChannelMembershipPort } from '@endora-commerce/platform/kernel';
7
+ /**
8
+ * Catalog's contribution to the prompt-assistant tool catalogue
9
+ * (feature 043, data-model §4): two resolvers plus the US2 bulk
10
+ * category-assignment mutation. Handlers delegate to the same admin
11
+ * services that back the manual admin routes; descriptions are the LLM's
12
+ * only documentation (tool-contribution contract rule 4).
13
+ *
14
+ * The mutation mirrors the feature-022 bulk-update route exactly:
15
+ * ≤ 50 products run synchronously at confirm time; larger selections are
16
+ * enqueued onto the existing durable `catalog.bulk-operation` BullMQ queue
17
+ * (Principle X — this file only adds a second producer over the same
18
+ * queue; the consumer stays catalog's separable worker entrypoint).
19
+ */
20
+ export interface CatalogPromptToolsDeps {
21
+ emFactory: () => EntityManager;
22
+ events: EventBus;
23
+ auditLogService?: AuditPort;
24
+ salesChannelMembership?: SalesChannelMembershipPort;
25
+ /** Enables queue delegation for > BULK_ASYNC_THRESHOLD selections. */
26
+ redis?: Redis;
27
+ }
28
+ export declare function catalogPromptResolverTools(deps: CatalogPromptToolsDeps): PromptActionTool[];
29
+ export declare function catalogPromptMutationTools(deps: CatalogPromptToolsDeps): PromptActionTool[];
30
+ /**
31
+ * Live `catalog_bulk_operations` progress for one delegated prompt request
32
+ * (research §R6, FR-011/FR-018), contributed as `prompt_actions`'
33
+ * `BulkProgressReader`.
34
+ *
35
+ * D-76 — data out, and nothing else. This used to take
36
+ * `(row: PromptActionRequest, em: EntityManager)` and write `row.result`,
37
+ * `row.status` and `row.error` on `prompt_actions`' own entity, which put that
38
+ * module's state machine in this module's hands; the `em` was never bound at
39
+ * all. What a bulk operation did is this module's fact, and this returns
40
+ * exactly that fact — whether the request is `completed`, `failed` or
41
+ * `completed_with_errors` is decided by its owner.
42
+ *
43
+ * `null` means "not one of mine": the id names no bulk operation here, so the
44
+ * host may ask the next contributor.
45
+ */
46
+ export declare function catalogBulkProgressReader(deps: CatalogPromptToolsDeps): BulkProgressReader;
47
+ //# sourceMappingURL=prompt-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-tools.d.ts","sourceRoot":"","sources":["../../src/backend/prompt-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAWlE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAEnF;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,aAAa,CAAC;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,sBAAsB,CAAC,EAAE,0BAA0B,CAAC;IACpD,sEAAsE;IACtE,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAWD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,EAAE,CAqD3F;AAuFD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,EAAE,CAiK3F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAiB1F"}