@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,90 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Index, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * ProductValueOverride — feature 022.
15
+ *
16
+ * Stores channel-aware overrides for product attribute values. The
17
+ * global baseline lives on `products.name` / `products.description`
18
+ * (per-language JSONB) and `products.attribute_values` (per-attribute
19
+ * JSONB) — this entity only holds the (channel, [language]) slots.
20
+ *
21
+ * The resolver in `services/product-value-resolver.ts` (and its
22
+ * pure-function twin in `@endora-commerce/contracts`) fuses baseline + overrides
23
+ * into an effective value per (channel, language) context using the
24
+ * fallback chain documented in
25
+ * specs/023-product-scope-editor/data-model.md §3.2.
26
+ *
27
+ * `attributeKey` is a string — for user-defined attributes it matches
28
+ * `product_attributes.key`; for system attributes it is one of the
29
+ * reserved values `'name'` or `'description'` (see
30
+ * services/system-attribute-scopes.ts). There is no FK from
31
+ * `attribute_key` to `product_attributes` because system attributes
32
+ * are not rows there.
33
+ *
34
+ * `languageCode` is NULLABLE — a NULL row models a channel-only
35
+ * override (attribute is channel-scoped but not language-scoped);
36
+ * a non-null row models a channel+language override. Two partial
37
+ * UNIQUE indexes (see migration 043) enforce uniqueness across both
38
+ * shapes.
39
+ */
40
+ let ProductValueOverride = class ProductValueOverride {
41
+ [OptionalProps];
42
+ id = randomUUID();
43
+ productId;
44
+ attributeKey;
45
+ channelId;
46
+ languageCode;
47
+ /** Wrapped as `{ v: ... }` so the column is always a JSONB object. */
48
+ value;
49
+ createdAt = new Date();
50
+ updatedAt = new Date();
51
+ };
52
+ __decorate([
53
+ PrimaryKey({ type: 'uuid' }),
54
+ __metadata("design:type", String)
55
+ ], ProductValueOverride.prototype, "id", void 0);
56
+ __decorate([
57
+ Property({ type: 'uuid' }),
58
+ Index(),
59
+ __metadata("design:type", String)
60
+ ], ProductValueOverride.prototype, "productId", void 0);
61
+ __decorate([
62
+ Property({ type: 'string', length: 64 }),
63
+ __metadata("design:type", String)
64
+ ], ProductValueOverride.prototype, "attributeKey", void 0);
65
+ __decorate([
66
+ Property({ type: 'uuid' }),
67
+ __metadata("design:type", String)
68
+ ], ProductValueOverride.prototype, "channelId", void 0);
69
+ __decorate([
70
+ Property({ type: 'string', length: 16, nullable: true }),
71
+ __metadata("design:type", Object)
72
+ ], ProductValueOverride.prototype, "languageCode", void 0);
73
+ __decorate([
74
+ Property({ type: 'json' }),
75
+ __metadata("design:type", Object)
76
+ ], ProductValueOverride.prototype, "value", void 0);
77
+ __decorate([
78
+ Property({ type: 'datetime', onCreate: () => new Date() }),
79
+ __metadata("design:type", Date)
80
+ ], ProductValueOverride.prototype, "createdAt", void 0);
81
+ __decorate([
82
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
83
+ __metadata("design:type", Date)
84
+ ], ProductValueOverride.prototype, "updatedAt", void 0);
85
+ ProductValueOverride = __decorate([
86
+ GlobalEntity(),
87
+ Entity({ tableName: 'product_value_overrides' })
88
+ ], ProductValueOverride);
89
+ export { ProductValueOverride };
90
+ //# sourceMappingURL=product-value-override.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-value-override.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/product-value-override.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,CAAC,aAAa,CAAC,CAAqD;IAGpE,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,SAAS,CAAU;IAGnB,YAAY,CAAU;IAGtB,SAAS,CAAU;IAGnB,YAAY,CAAiB;IAE7B,sEAAsE;IAEtE,KAAK,CAAkB;IAGvB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAxBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;gDACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE;;uDACW;AAGnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;0DACnB;AAGtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;uDACR;AAGnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DAC5B;AAI7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;mDACJ;AAGvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;uDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;uDAAc;AA3BlB,oBAAoB;IAFhC,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC;GACpC,oBAAoB,CA4BhC"}
@@ -0,0 +1,18 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * Concrete variant of a `type=variant` Product.
4
+ * `variantAttributeValues` contains only keys where the parent's ProductAttribute
5
+ * has isVariantAxis=true.
6
+ */
7
+ export declare class ProductVariant {
8
+ [OptionalProps]?: 'id' | 'createdAt' | 'updatedAt' | 'priceOverride' | 'stockLevel';
9
+ id: string;
10
+ parentProductId: string;
11
+ sku: string;
12
+ variantAttributeValues: Record<string, unknown>;
13
+ priceOverride?: string | null;
14
+ stockLevel?: number | null;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
18
+ //# sourceMappingURL=product-variant.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-variant.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/product-variant.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAI7F;;;;GAIG;AACH,qBAEa,cAAc;IACzB,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,GAAG,YAAY,CAAC;IAGpF,EAAE,EAAE,MAAM,CAAgB;IAI1B,eAAe,EAAG,MAAM,CAAC;IAIzB,GAAG,EAAG,MAAM,CAAC;IAGb,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAGrD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,68 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Index, OptionalProps, PrimaryKey, Property, Unique } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * Concrete variant of a `type=variant` Product.
15
+ * `variantAttributeValues` contains only keys where the parent's ProductAttribute
16
+ * has isVariantAxis=true.
17
+ */
18
+ let ProductVariant = class ProductVariant {
19
+ [OptionalProps];
20
+ id = randomUUID();
21
+ parentProductId;
22
+ sku;
23
+ variantAttributeValues = {};
24
+ priceOverride;
25
+ stockLevel;
26
+ createdAt = new Date();
27
+ updatedAt = new Date();
28
+ };
29
+ __decorate([
30
+ PrimaryKey({ type: 'uuid' }),
31
+ __metadata("design:type", String)
32
+ ], ProductVariant.prototype, "id", void 0);
33
+ __decorate([
34
+ Property({ type: 'uuid' }),
35
+ Index(),
36
+ __metadata("design:type", String)
37
+ ], ProductVariant.prototype, "parentProductId", void 0);
38
+ __decorate([
39
+ Property({ type: 'string', length: 255 }),
40
+ Unique(),
41
+ __metadata("design:type", String)
42
+ ], ProductVariant.prototype, "sku", void 0);
43
+ __decorate([
44
+ Property({ type: 'json' }),
45
+ __metadata("design:type", Object)
46
+ ], ProductVariant.prototype, "variantAttributeValues", void 0);
47
+ __decorate([
48
+ Property({ type: 'decimal', precision: 12, scale: 2, nullable: true }),
49
+ __metadata("design:type", Object)
50
+ ], ProductVariant.prototype, "priceOverride", void 0);
51
+ __decorate([
52
+ Property({ type: 'integer', nullable: true }),
53
+ __metadata("design:type", Object)
54
+ ], ProductVariant.prototype, "stockLevel", void 0);
55
+ __decorate([
56
+ Property({ type: 'datetime', onCreate: () => new Date() }),
57
+ __metadata("design:type", Date)
58
+ ], ProductVariant.prototype, "createdAt", void 0);
59
+ __decorate([
60
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
61
+ __metadata("design:type", Date)
62
+ ], ProductVariant.prototype, "updatedAt", void 0);
63
+ ProductVariant = __decorate([
64
+ GlobalEntity(),
65
+ Entity({ tableName: 'product_variants' })
66
+ ], ProductVariant);
67
+ export { ProductVariant };
68
+ //# sourceMappingURL=product-variant.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-variant.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/product-variant.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;GAIG;AAGI,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,CAAC,aAAa,CAAC,CAAqE;IAGpF,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,eAAe,CAAU;IAIzB,GAAG,CAAU;IAGb,sBAAsB,GAA4B,EAAE,CAAC;IAGrD,aAAa,CAAiB;IAG9B,UAAU,CAAiB;IAG3B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAxBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE;;uDACiB;AAIzB;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzC,MAAM,EAAE;;2CACI;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8DAC0B;AAGrD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACzC;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACnB;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;iDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;iDAAc;AA3BlB,cAAc;IAF1B,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;GAC7B,cAAc,CA4B1B"}
@@ -0,0 +1,108 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * Product — the central catalog object. Supports four `type`s (FR-002).
4
+ * Soft-deleted via `deletedAt` (data-model.md cross-cutting section); inactive
5
+ * products still resolve from historical Orders, Invoices, RFQs, Shopping Lists
6
+ * but are excluded from search/filters.
7
+ *
8
+ * Multilingual fields (`name`, `description`) are stored as JSONB per
9
+ * data-model.md; `attributeValues` is a JSONB keyed by ProductAttribute.key.
10
+ */
11
+ export declare class Product {
12
+ [OptionalProps]?: 'id' | 'createdAt' | 'updatedAt' | 'status' | 'stockMode' | 'deletedAt' | 'archivedAt' | 'allowedOrganizationIds' | 'attributeSetId' | 'downloadAssetId' | 'downloadUrl' | 'manageStock' | 'backorderEnabled' | 'lowStockThreshold' | 'lowStockThresholdMode' | 'fulfilmentStrategy' | 'fulfilmentStrategyWarehouseOrder';
13
+ id: string;
14
+ sku: string;
15
+ slug: string;
16
+ type: 'simple' | 'configurable' | 'grouped' | 'bundle' | 'virtual';
17
+ status: 'draft' | 'active' | 'inactive';
18
+ name: Record<string, string>;
19
+ description: Record<string, string>;
20
+ /** Per-product override of global stock mode (categorical/numeric/null=inherit). */
21
+ stockMode?: 'categorical' | 'numeric' | null;
22
+ visibility: 'public' | 'logged_in_only' | 'organization_restricted';
23
+ /** JSONB `{ attributeKey: value }` validated against ProductAttribute definitions. */
24
+ attributeValues: Record<string, unknown>;
25
+ /**
26
+ * The organisations allowed to see this product — **this column is the
27
+ * storage**, not a cache of one. There is no bridge table: the comment that
28
+ * stood here until issue #227 named a `product_allowed_organizations` M:N
29
+ * source of truth that no migration has ever created and no query has ever
30
+ * read, which is worse than stale — it invites a writer to treat this column
31
+ * as rebuildable from a table that is not there.
32
+ *
33
+ * `products.allowed_organization_ids` is `jsonb not null default '[]'::jsonb`
34
+ * (`db/migrations/20260424T165847_core_foundation_init.ts`), and a read path
35
+ * that enforces it asks with `@>` containment over the array — the buyer's
36
+ * organisation id has to be *in* it, rather than the array being compared to
37
+ * anything.
38
+ *
39
+ * Two states an enforcing read must not conflate:
40
+ *
41
+ * - **empty array** — no organisation restriction. Disclosure is then
42
+ * `visibility`'s alone.
43
+ * - **empty array with `visibility = 'organization_restricted'`** — visible
44
+ * to nobody. The restriction was asked for and names no organisation; the
45
+ * permissive reading of it would disclose the row to everybody, which is
46
+ * the opposite of what the operator saved.
47
+ *
48
+ * A non-empty array restricts whatever `visibility` says, `public` included.
49
+ * Enforcement is per read path and not every path applies it today; the
50
+ * `CatalogQuickSearchPort` doc block in `@endora-commerce/contracts` states the predicate
51
+ * for the path that does.
52
+ *
53
+ * No foreign key holds these ids, so a deleted organisation leaves its id in
54
+ * every product that named it. That question — whether the relationship the
55
+ * old comment imagined should exist — is issue #227's second half and is not
56
+ * settled here.
57
+ */
58
+ allowedOrganizationIds: string[];
59
+ /**
60
+ * Attribute Set the Product is wired to (feature 002, data-model.md §1.1).
61
+ * Backfilled by the attribute-sets init migration to the system Default
62
+ * set; never null.
63
+ * Validation of `attributeValues` is performed against this set's
64
+ * attributes by `catalog-admin.service.ts` (T023).
65
+ *
66
+ * Default value matches
67
+ * `Migration20260429T064146CatalogAttributeSetsInit.DEFAULT_ATTRIBUTE_SET_ID`
68
+ * — the deterministic UUID of the system Default set. Inlined here as a
69
+ * literal so the entity has zero migration-package dependencies.
70
+ */
71
+ attributeSetId: string;
72
+ /**
73
+ * Feature 002 — virtual product download fields (data-model.md §1.1).
74
+ * Exactly one MUST be set when type='virtual'; both MUST be null
75
+ * otherwise. Cross-field rule enforced at the service layer (T047).
76
+ */
77
+ downloadAssetId?: string | null;
78
+ downloadUrl?: string | null;
79
+ createdAt: Date;
80
+ updatedAt: Date;
81
+ archivedAt?: Date | null;
82
+ deletedAt?: Date | null;
83
+ /** When false, the storefront always shows the product as available
84
+ * and the cart accepts any quantity (FR-022). */
85
+ manageStock: boolean;
86
+ /** When true, the storefront accepts zero-stock checkout and the
87
+ * resulting allocation is flagged `is_backorder` (FR-023). */
88
+ backorderEnabled: boolean;
89
+ /** Optional integer; when null the product is exempt from
90
+ * low-stock alerts (FR-013). Used in `cumulative` mode against the
91
+ * product's total on-hand across all warehouses. */
92
+ lowStockThreshold?: number | null;
93
+ /**
94
+ * Determines how `lowStockThreshold` is interpreted:
95
+ * - `cumulative` (default): one threshold applied to the cumulative
96
+ * on-hand across every warehouse holding stock for the product.
97
+ * - `per_warehouse`: the per-(product, warehouse) rows in
98
+ * `product_warehouse_low_stock_thresholds` are consulted instead,
99
+ * each warehouse evaluated independently against its own threshold.
100
+ */
101
+ lowStockThresholdMode: 'cumulative' | 'per_warehouse';
102
+ /** Per-product override of the global fulfilment strategy (FR-030). */
103
+ fulfilmentStrategy?: 'any' | 'default_first' | 'lowest_stock_first' | 'highest_stock_first' | 'defined_order' | null;
104
+ /** When `fulfilment_strategy = 'defined_order'`, the ordered list
105
+ * of warehouse UUIDs to walk. */
106
+ fulfilmentStrategyWarehouseOrder?: string[] | null;
107
+ }
108
+ //# sourceMappingURL=product.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/product.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAI7F;;;;;;;;GAQG;AACH,qBAEa,OAAO;IAClB,CAAC,aAAa,CAAC,CAAC,EACZ,IAAI,GACJ,WAAW,GACX,WAAW,GACX,QAAQ,GACR,WAAW,GACX,WAAW,GACX,YAAY,GACZ,wBAAwB,GACxB,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,GACvB,oBAAoB,GACpB,kCAAkC,CAAC;IAGvC,EAAE,EAAE,MAAM,CAAgB;IAI1B,GAAG,EAAG,MAAM,CAAC;IAKb,IAAI,EAAG,MAAM,CAAC;IAGd,IAAI,EAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAIpE,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAW;IAGlD,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG9B,WAAW,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,oFAAoF;IAEpF,SAAS,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;IAG7C,UAAU,EAAE,QAAQ,GAAG,gBAAgB,GAAG,yBAAyB,CAAY;IAE/E,sFAAsF;IAEtF,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IAEH,sBAAsB,EAAE,MAAM,EAAE,CAAM;IAEtC;;;;;;;;;;;OAWG;IAEH,cAAc,EAAE,MAAM,CAA0C;IAEhE;;;;OAIG;IAEH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI5B,SAAS,EAAE,IAAI,CAAc;IAI7B,SAAS,EAAE,IAAI,CAAc;IAI7B,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAGzB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAMxB;sDACkD;IAElD,WAAW,EAAE,OAAO,CAAQ;IAE5B;mEAC+D;IAE/D,gBAAgB,EAAE,OAAO,CAAS;IAElC;;yDAEqD;IAErD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC;;;;;;;OAOG;IAEH,qBAAqB,EAAE,YAAY,GAAG,eAAe,CAAgB;IAErE,uEAAuE;IAEvE,kBAAkB,CAAC,EACf,KAAK,GACL,eAAe,GACf,oBAAoB,GACpB,qBAAqB,GACrB,eAAe,GACf,IAAI,CAAC;IAET;sCACkC;IAElC,gCAAgC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACpD"}
@@ -0,0 +1,230 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Index, OptionalProps, PrimaryKey, Property, Unique } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * Product — the central catalog object. Supports four `type`s (FR-002).
15
+ * Soft-deleted via `deletedAt` (data-model.md cross-cutting section); inactive
16
+ * products still resolve from historical Orders, Invoices, RFQs, Shopping Lists
17
+ * but are excluded from search/filters.
18
+ *
19
+ * Multilingual fields (`name`, `description`) are stored as JSONB per
20
+ * data-model.md; `attributeValues` is a JSONB keyed by ProductAttribute.key.
21
+ */
22
+ let Product = class Product {
23
+ [OptionalProps];
24
+ id = randomUUID();
25
+ sku;
26
+ slug;
27
+ type;
28
+ status = 'draft';
29
+ name;
30
+ description;
31
+ /** Per-product override of global stock mode (categorical/numeric/null=inherit). */
32
+ stockMode;
33
+ visibility = 'public';
34
+ /** JSONB `{ attributeKey: value }` validated against ProductAttribute definitions. */
35
+ attributeValues = {};
36
+ /**
37
+ * The organisations allowed to see this product — **this column is the
38
+ * storage**, not a cache of one. There is no bridge table: the comment that
39
+ * stood here until issue #227 named a `product_allowed_organizations` M:N
40
+ * source of truth that no migration has ever created and no query has ever
41
+ * read, which is worse than stale — it invites a writer to treat this column
42
+ * as rebuildable from a table that is not there.
43
+ *
44
+ * `products.allowed_organization_ids` is `jsonb not null default '[]'::jsonb`
45
+ * (`db/migrations/20260424T165847_core_foundation_init.ts`), and a read path
46
+ * that enforces it asks with `@>` containment over the array — the buyer's
47
+ * organisation id has to be *in* it, rather than the array being compared to
48
+ * anything.
49
+ *
50
+ * Two states an enforcing read must not conflate:
51
+ *
52
+ * - **empty array** — no organisation restriction. Disclosure is then
53
+ * `visibility`'s alone.
54
+ * - **empty array with `visibility = 'organization_restricted'`** — visible
55
+ * to nobody. The restriction was asked for and names no organisation; the
56
+ * permissive reading of it would disclose the row to everybody, which is
57
+ * the opposite of what the operator saved.
58
+ *
59
+ * A non-empty array restricts whatever `visibility` says, `public` included.
60
+ * Enforcement is per read path and not every path applies it today; the
61
+ * `CatalogQuickSearchPort` doc block in `@endora-commerce/contracts` states the predicate
62
+ * for the path that does.
63
+ *
64
+ * No foreign key holds these ids, so a deleted organisation leaves its id in
65
+ * every product that named it. That question — whether the relationship the
66
+ * old comment imagined should exist — is issue #227's second half and is not
67
+ * settled here.
68
+ */
69
+ allowedOrganizationIds = [];
70
+ /**
71
+ * Attribute Set the Product is wired to (feature 002, data-model.md §1.1).
72
+ * Backfilled by the attribute-sets init migration to the system Default
73
+ * set; never null.
74
+ * Validation of `attributeValues` is performed against this set's
75
+ * attributes by `catalog-admin.service.ts` (T023).
76
+ *
77
+ * Default value matches
78
+ * `Migration20260429T064146CatalogAttributeSetsInit.DEFAULT_ATTRIBUTE_SET_ID`
79
+ * — the deterministic UUID of the system Default set. Inlined here as a
80
+ * literal so the entity has zero migration-package dependencies.
81
+ */
82
+ attributeSetId = 'defa0017-0000-4000-8000-000000000000';
83
+ /**
84
+ * Feature 002 — virtual product download fields (data-model.md §1.1).
85
+ * Exactly one MUST be set when type='virtual'; both MUST be null
86
+ * otherwise. Cross-field rule enforced at the service layer (T047).
87
+ */
88
+ downloadAssetId;
89
+ downloadUrl;
90
+ createdAt = new Date();
91
+ updatedAt = new Date();
92
+ archivedAt;
93
+ deletedAt;
94
+ // ----------------------------------------------------------------
95
+ // Inventory module (feature 010) — per-product stock-management flags
96
+ // ----------------------------------------------------------------
97
+ /** When false, the storefront always shows the product as available
98
+ * and the cart accepts any quantity (FR-022). */
99
+ manageStock = true;
100
+ /** When true, the storefront accepts zero-stock checkout and the
101
+ * resulting allocation is flagged `is_backorder` (FR-023). */
102
+ backorderEnabled = false;
103
+ /** Optional integer; when null the product is exempt from
104
+ * low-stock alerts (FR-013). Used in `cumulative` mode against the
105
+ * product's total on-hand across all warehouses. */
106
+ lowStockThreshold;
107
+ /**
108
+ * Determines how `lowStockThreshold` is interpreted:
109
+ * - `cumulative` (default): one threshold applied to the cumulative
110
+ * on-hand across every warehouse holding stock for the product.
111
+ * - `per_warehouse`: the per-(product, warehouse) rows in
112
+ * `product_warehouse_low_stock_thresholds` are consulted instead,
113
+ * each warehouse evaluated independently against its own threshold.
114
+ */
115
+ lowStockThresholdMode = 'cumulative';
116
+ /** Per-product override of the global fulfilment strategy (FR-030). */
117
+ fulfilmentStrategy;
118
+ /** When `fulfilment_strategy = 'defined_order'`, the ordered list
119
+ * of warehouse UUIDs to walk. */
120
+ fulfilmentStrategyWarehouseOrder;
121
+ };
122
+ __decorate([
123
+ PrimaryKey({ type: 'uuid' }),
124
+ __metadata("design:type", String)
125
+ ], Product.prototype, "id", void 0);
126
+ __decorate([
127
+ Property({ type: 'string', length: 255 }),
128
+ Unique(),
129
+ __metadata("design:type", String)
130
+ ], Product.prototype, "sku", void 0);
131
+ __decorate([
132
+ Property({ type: 'string', length: 160 }),
133
+ Index(),
134
+ Unique(),
135
+ __metadata("design:type", String)
136
+ ], Product.prototype, "slug", void 0);
137
+ __decorate([
138
+ Property({ type: 'string', length: 16 }),
139
+ __metadata("design:type", String)
140
+ ], Product.prototype, "type", void 0);
141
+ __decorate([
142
+ Property({ type: 'string', length: 16 }),
143
+ Index(),
144
+ __metadata("design:type", String)
145
+ ], Product.prototype, "status", void 0);
146
+ __decorate([
147
+ Property({ type: 'json' }),
148
+ __metadata("design:type", Object)
149
+ ], Product.prototype, "name", void 0);
150
+ __decorate([
151
+ Property({ type: 'json' }),
152
+ __metadata("design:type", Object)
153
+ ], Product.prototype, "description", void 0);
154
+ __decorate([
155
+ Property({ type: 'string', length: 16, nullable: true }),
156
+ __metadata("design:type", Object)
157
+ ], Product.prototype, "stockMode", void 0);
158
+ __decorate([
159
+ Property({ type: 'string', length: 32 }),
160
+ __metadata("design:type", String)
161
+ ], Product.prototype, "visibility", void 0);
162
+ __decorate([
163
+ Property({ type: 'json' }),
164
+ __metadata("design:type", Object)
165
+ ], Product.prototype, "attributeValues", void 0);
166
+ __decorate([
167
+ Property({ type: 'json' }),
168
+ __metadata("design:type", Array)
169
+ ], Product.prototype, "allowedOrganizationIds", void 0);
170
+ __decorate([
171
+ Property({ type: 'uuid' }),
172
+ __metadata("design:type", String)
173
+ ], Product.prototype, "attributeSetId", void 0);
174
+ __decorate([
175
+ Property({ type: 'uuid', nullable: true }),
176
+ __metadata("design:type", Object)
177
+ ], Product.prototype, "downloadAssetId", void 0);
178
+ __decorate([
179
+ Property({ type: 'string', length: 2048, nullable: true }),
180
+ __metadata("design:type", Object)
181
+ ], Product.prototype, "downloadUrl", void 0);
182
+ __decorate([
183
+ Property({ type: 'datetime', onCreate: () => new Date() }),
184
+ Index(),
185
+ __metadata("design:type", Date)
186
+ ], Product.prototype, "createdAt", void 0);
187
+ __decorate([
188
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
189
+ Index(),
190
+ __metadata("design:type", Date)
191
+ ], Product.prototype, "updatedAt", void 0);
192
+ __decorate([
193
+ Property({ type: 'datetime', nullable: true }),
194
+ Index(),
195
+ __metadata("design:type", Object)
196
+ ], Product.prototype, "archivedAt", void 0);
197
+ __decorate([
198
+ Property({ type: 'datetime', nullable: true }),
199
+ __metadata("design:type", Object)
200
+ ], Product.prototype, "deletedAt", void 0);
201
+ __decorate([
202
+ Property({ type: 'boolean' }),
203
+ __metadata("design:type", Boolean)
204
+ ], Product.prototype, "manageStock", void 0);
205
+ __decorate([
206
+ Property({ type: 'boolean' }),
207
+ __metadata("design:type", Boolean)
208
+ ], Product.prototype, "backorderEnabled", void 0);
209
+ __decorate([
210
+ Property({ type: 'integer', nullable: true }),
211
+ __metadata("design:type", Object)
212
+ ], Product.prototype, "lowStockThreshold", void 0);
213
+ __decorate([
214
+ Property({ type: 'string', length: 16 }),
215
+ __metadata("design:type", String)
216
+ ], Product.prototype, "lowStockThresholdMode", void 0);
217
+ __decorate([
218
+ Property({ type: 'string', length: 32, nullable: true }),
219
+ __metadata("design:type", Object)
220
+ ], Product.prototype, "fulfilmentStrategy", void 0);
221
+ __decorate([
222
+ Property({ type: 'json', nullable: true }),
223
+ __metadata("design:type", Object)
224
+ ], Product.prototype, "fulfilmentStrategyWarehouseOrder", void 0);
225
+ Product = __decorate([
226
+ GlobalEntity(),
227
+ Entity({ tableName: 'products' })
228
+ ], Product);
229
+ export { Product };
230
+ //# sourceMappingURL=product.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/product.entity.ts"],"names":[],"mappings":"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"}