@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.
- package/LICENSE +21 -0
- package/README.md +63 -0
- package/dist/admin/components/PackagingUnitsEditor.d.ts +12 -0
- package/dist/admin/components/PackagingUnitsEditor.d.ts.map +1 -0
- package/dist/admin/components/PackagingUnitsEditor.js +99 -0
- package/dist/admin/components/PackagingUnitsEditor.js.map +1 -0
- package/dist/admin/components/ProductAttributesTab.d.ts +13 -0
- package/dist/admin/components/ProductAttributesTab.d.ts.map +1 -0
- package/dist/admin/components/ProductAttributesTab.js +140 -0
- package/dist/admin/components/ProductAttributesTab.js.map +1 -0
- package/dist/admin/components/ProductInventoryTab.d.ts +14 -0
- package/dist/admin/components/ProductInventoryTab.d.ts.map +1 -0
- package/dist/admin/components/ProductInventoryTab.js +284 -0
- package/dist/admin/components/ProductInventoryTab.js.map +1 -0
- package/dist/admin/components/ProductScopeEditor.d.ts +94 -0
- package/dist/admin/components/ProductScopeEditor.d.ts.map +1 -0
- package/dist/admin/components/ProductScopeEditor.js +395 -0
- package/dist/admin/components/ProductScopeEditor.js.map +1 -0
- package/dist/admin/components/ProductsBulkEditDialog.d.ts +11 -0
- package/dist/admin/components/ProductsBulkEditDialog.d.ts.map +1 -0
- package/dist/admin/components/ProductsBulkEditDialog.js +304 -0
- package/dist/admin/components/ProductsBulkEditDialog.js.map +1 -0
- package/dist/admin/index.d.ts +45 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +184 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/lib/resolve-product-selection.d.ts +21 -0
- package/dist/admin/lib/resolve-product-selection.d.ts.map +1 -0
- package/dist/admin/lib/resolve-product-selection.js +25 -0
- package/dist/admin/lib/resolve-product-selection.js.map +1 -0
- package/dist/admin/pages/AttachmentTypesPage.d.ts +18 -0
- package/dist/admin/pages/AttachmentTypesPage.d.ts.map +1 -0
- package/dist/admin/pages/AttachmentTypesPage.js +92 -0
- package/dist/admin/pages/AttachmentTypesPage.js.map +1 -0
- package/dist/admin/pages/AttributeSetsPage.d.ts +21 -0
- package/dist/admin/pages/AttributeSetsPage.d.ts.map +1 -0
- package/dist/admin/pages/AttributeSetsPage.js +158 -0
- package/dist/admin/pages/AttributeSetsPage.js.map +1 -0
- package/dist/admin/pages/AttributesManager.d.ts +9 -0
- package/dist/admin/pages/AttributesManager.d.ts.map +1 -0
- package/dist/admin/pages/AttributesManager.js +305 -0
- package/dist/admin/pages/AttributesManager.js.map +1 -0
- package/dist/admin/pages/BulkOperationDetailPage.d.ts +9 -0
- package/dist/admin/pages/BulkOperationDetailPage.d.ts.map +1 -0
- package/dist/admin/pages/BulkOperationDetailPage.js +187 -0
- package/dist/admin/pages/BulkOperationDetailPage.js.map +1 -0
- package/dist/admin/pages/BulkOperationsPage.d.ts +9 -0
- package/dist/admin/pages/BulkOperationsPage.d.ts.map +1 -0
- package/dist/admin/pages/BulkOperationsPage.js +98 -0
- package/dist/admin/pages/BulkOperationsPage.js.map +1 -0
- package/dist/admin/pages/CategoriesTree.d.ts +9 -0
- package/dist/admin/pages/CategoriesTree.d.ts.map +1 -0
- package/dist/admin/pages/CategoriesTree.js +176 -0
- package/dist/admin/pages/CategoriesTree.js.map +1 -0
- package/dist/admin/pages/ProductEditor.d.ts +13 -0
- package/dist/admin/pages/ProductEditor.d.ts.map +1 -0
- package/dist/admin/pages/ProductEditor.js +1050 -0
- package/dist/admin/pages/ProductEditor.js.map +1 -0
- package/dist/admin/pages/ProductsList.d.ts +9 -0
- package/dist/admin/pages/ProductsList.d.ts.map +1 -0
- package/dist/admin/pages/ProductsList.js +399 -0
- package/dist/admin/pages/ProductsList.js.map +1 -0
- package/dist/backend/commands/attribute-commands.d.ts +111 -0
- package/dist/backend/commands/attribute-commands.d.ts.map +1 -0
- package/dist/backend/commands/attribute-commands.js +482 -0
- package/dist/backend/commands/attribute-commands.js.map +1 -0
- package/dist/backend/demo/reset.d.ts +23 -0
- package/dist/backend/demo/reset.d.ts.map +1 -0
- package/dist/backend/demo/reset.js +41 -0
- package/dist/backend/demo/reset.js.map +1 -0
- package/dist/backend/demo/rows.d.ts +103 -0
- package/dist/backend/demo/rows.d.ts.map +1 -0
- package/dist/backend/demo/rows.js +162 -0
- package/dist/backend/demo/rows.js.map +1 -0
- package/dist/backend/demo/seed.d.ts +35 -0
- package/dist/backend/demo/seed.d.ts.map +1 -0
- package/dist/backend/demo/seed.js +177 -0
- package/dist/backend/demo/seed.js.map +1 -0
- package/dist/backend/entities/attachment-type.entity.d.ts +16 -0
- package/dist/backend/entities/attachment-type.entity.d.ts.map +1 -0
- package/dist/backend/entities/attachment-type.entity.js +57 -0
- package/dist/backend/entities/attachment-type.entity.js.map +1 -0
- package/dist/backend/entities/attribute-set-attribute.entity.d.ts +26 -0
- package/dist/backend/entities/attribute-set-attribute.entity.d.ts.map +1 -0
- package/dist/backend/entities/attribute-set-attribute.entity.js +55 -0
- package/dist/backend/entities/attribute-set-attribute.entity.js.map +1 -0
- package/dist/backend/entities/attribute-set.entity.d.ts +22 -0
- package/dist/backend/entities/attribute-set.entity.d.ts.map +1 -0
- package/dist/backend/entities/attribute-set.entity.js +67 -0
- package/dist/backend/entities/attribute-set.entity.js.map +1 -0
- package/dist/backend/entities/bulk-operation.entity.d.ts +78 -0
- package/dist/backend/entities/bulk-operation.entity.d.ts.map +1 -0
- package/dist/backend/entities/bulk-operation.entity.js +138 -0
- package/dist/backend/entities/bulk-operation.entity.js.map +1 -0
- package/dist/backend/entities/bundle-slot-option.entity.d.ts +23 -0
- package/dist/backend/entities/bundle-slot-option.entity.d.ts.map +1 -0
- package/dist/backend/entities/bundle-slot-option.entity.js +68 -0
- package/dist/backend/entities/bundle-slot-option.entity.js.map +1 -0
- package/dist/backend/entities/bundle-slot.entity.d.ts +25 -0
- package/dist/backend/entities/bundle-slot.entity.d.ts.map +1 -0
- package/dist/backend/entities/bundle-slot.entity.js +74 -0
- package/dist/backend/entities/bundle-slot.entity.js.map +1 -0
- package/dist/backend/entities/category.entity.d.ts +26 -0
- package/dist/backend/entities/category.entity.d.ts.map +1 -0
- package/dist/backend/entities/category.entity.js +119 -0
- package/dist/backend/entities/category.entity.js.map +1 -0
- package/dist/backend/entities/gallery-item-label.entity.d.ts +22 -0
- package/dist/backend/entities/gallery-item-label.entity.d.ts.map +1 -0
- package/dist/backend/entities/gallery-item-label.entity.js +50 -0
- package/dist/backend/entities/gallery-item-label.entity.js.map +1 -0
- package/dist/backend/entities/gallery-item.entity.d.ts +17 -0
- package/dist/backend/entities/gallery-item.entity.d.ts.map +1 -0
- package/dist/backend/entities/gallery-item.entity.js +58 -0
- package/dist/backend/entities/gallery-item.entity.js.map +1 -0
- package/dist/backend/entities/grouped-item.entity.d.ts +23 -0
- package/dist/backend/entities/grouped-item.entity.d.ts.map +1 -0
- package/dist/backend/entities/grouped-item.entity.js +68 -0
- package/dist/backend/entities/grouped-item.entity.js.map +1 -0
- package/dist/backend/entities/product-attachment.entity.d.ts +23 -0
- package/dist/backend/entities/product-attachment.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-attachment.entity.js +77 -0
- package/dist/backend/entities/product-attachment.entity.js.map +1 -0
- package/dist/backend/entities/product-attribute.entity.d.ts +72 -0
- package/dist/backend/entities/product-attribute.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-attribute.entity.js +161 -0
- package/dist/backend/entities/product-attribute.entity.js.map +1 -0
- package/dist/backend/entities/product-editor-preference.entity.d.ts +28 -0
- package/dist/backend/entities/product-editor-preference.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-editor-preference.entity.js +63 -0
- package/dist/backend/entities/product-editor-preference.entity.js.map +1 -0
- package/dist/backend/entities/product-link.entity.d.ts +25 -0
- package/dist/backend/entities/product-link.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-link.entity.js +70 -0
- package/dist/backend/entities/product-link.entity.js.map +1 -0
- package/dist/backend/entities/product-packaging-unit.entity.d.ts +26 -0
- package/dist/backend/entities/product-packaging-unit.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-packaging-unit.entity.js +76 -0
- package/dist/backend/entities/product-packaging-unit.entity.js.map +1 -0
- package/dist/backend/entities/product-value-override.entity.d.ts +43 -0
- package/dist/backend/entities/product-value-override.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-value-override.entity.js +90 -0
- package/dist/backend/entities/product-value-override.entity.js.map +1 -0
- package/dist/backend/entities/product-variant.entity.d.ts +18 -0
- package/dist/backend/entities/product-variant.entity.d.ts.map +1 -0
- package/dist/backend/entities/product-variant.entity.js +68 -0
- package/dist/backend/entities/product-variant.entity.js.map +1 -0
- package/dist/backend/entities/product.entity.d.ts +108 -0
- package/dist/backend/entities/product.entity.d.ts.map +1 -0
- package/dist/backend/entities/product.entity.js +230 -0
- package/dist/backend/entities/product.entity.js.map +1 -0
- package/dist/backend/index.d.ts +262 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +642 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/plugin.d.ts +216 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +223 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/prompt-tools.d.ts +47 -0
- package/dist/backend/prompt-tools.d.ts.map +1 -0
- package/dist/backend/prompt-tools.js +284 -0
- package/dist/backend/prompt-tools.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +105 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +1162 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/routes.api-key.d.ts +33 -0
- package/dist/backend/routes.api-key.d.ts.map +1 -0
- package/dist/backend/routes.api-key.js +43 -0
- package/dist/backend/routes.api-key.js.map +1 -0
- package/dist/backend/routes.external.d.ts +32 -0
- package/dist/backend/routes.external.d.ts.map +1 -0
- package/dist/backend/routes.external.js +115 -0
- package/dist/backend/routes.external.js.map +1 -0
- package/dist/backend/routes.public.d.ts +46 -0
- package/dist/backend/routes.public.d.ts.map +1 -0
- package/dist/backend/routes.public.js +318 -0
- package/dist/backend/routes.public.js.map +1 -0
- package/dist/backend/services/asset-references.d.ts +4 -0
- package/dist/backend/services/asset-references.d.ts.map +1 -0
- package/dist/backend/services/asset-references.js +104 -0
- package/dist/backend/services/asset-references.js.map +1 -0
- package/dist/backend/services/attachment.service.d.ts +45 -0
- package/dist/backend/services/attachment.service.d.ts.map +1 -0
- package/dist/backend/services/attachment.service.js +268 -0
- package/dist/backend/services/attachment.service.js.map +1 -0
- package/dist/backend/services/attribute-option-validator.d.ts +47 -0
- package/dist/backend/services/attribute-option-validator.d.ts.map +1 -0
- package/dist/backend/services/attribute-option-validator.js +69 -0
- package/dist/backend/services/attribute-option-validator.js.map +1 -0
- package/dist/backend/services/attribute-set-validations.d.ts +65 -0
- package/dist/backend/services/attribute-set-validations.d.ts.map +1 -0
- package/dist/backend/services/attribute-set-validations.js +89 -0
- package/dist/backend/services/attribute-set-validations.js.map +1 -0
- package/dist/backend/services/attribute-set.service.d.ts +50 -0
- package/dist/backend/services/attribute-set.service.d.ts.map +1 -0
- package/dist/backend/services/attribute-set.service.js +401 -0
- package/dist/backend/services/attribute-set.service.js.map +1 -0
- package/dist/backend/services/attribute-type-mapping.d.ts +66 -0
- package/dist/backend/services/attribute-type-mapping.d.ts.map +1 -0
- package/dist/backend/services/attribute-type-mapping.js +121 -0
- package/dist/backend/services/attribute-type-mapping.js.map +1 -0
- package/dist/backend/services/attribute-value-key.service.d.ts +48 -0
- package/dist/backend/services/attribute-value-key.service.d.ts.map +1 -0
- package/dist/backend/services/attribute-value-key.service.js +118 -0
- package/dist/backend/services/attribute-value-key.service.js.map +1 -0
- package/dist/backend/services/audit-references.d.ts +13 -0
- package/dist/backend/services/audit-references.d.ts.map +1 -0
- package/dist/backend/services/audit-references.js +51 -0
- package/dist/backend/services/audit-references.js.map +1 -0
- package/dist/backend/services/bulk-operation-queue.d.ts +26 -0
- package/dist/backend/services/bulk-operation-queue.d.ts.map +1 -0
- package/dist/backend/services/bulk-operation-queue.js +34 -0
- package/dist/backend/services/bulk-operation-queue.js.map +1 -0
- package/dist/backend/services/bulk-operation.service.d.ts +195 -0
- package/dist/backend/services/bulk-operation.service.d.ts.map +1 -0
- package/dist/backend/services/bulk-operation.service.js +510 -0
- package/dist/backend/services/bulk-operation.service.js.map +1 -0
- package/dist/backend/services/bundle.service.d.ts +87 -0
- package/dist/backend/services/bundle.service.d.ts.map +1 -0
- package/dist/backend/services/bundle.service.js +286 -0
- package/dist/backend/services/bundle.service.js.map +1 -0
- package/dist/backend/services/catalog-admin.service.d.ts +398 -0
- package/dist/backend/services/catalog-admin.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-admin.service.js +1516 -0
- package/dist/backend/services/catalog-admin.service.js.map +1 -0
- package/dist/backend/services/catalog-attribute-read.service.d.ts +78 -0
- package/dist/backend/services/catalog-attribute-read.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-attribute-read.service.js +216 -0
- package/dist/backend/services/catalog-attribute-read.service.js.map +1 -0
- package/dist/backend/services/catalog-bulk-import.service.d.ts +30 -0
- package/dist/backend/services/catalog-bulk-import.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-bulk-import.service.js +136 -0
- package/dist/backend/services/catalog-bulk-import.service.js.map +1 -0
- package/dist/backend/services/catalog-bulk-update.service.d.ts +91 -0
- package/dist/backend/services/catalog-bulk-update.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-bulk-update.service.js +330 -0
- package/dist/backend/services/catalog-bulk-update.service.js.map +1 -0
- package/dist/backend/services/catalog-category-read.service.d.ts +66 -0
- package/dist/backend/services/catalog-category-read.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-category-read.service.js +248 -0
- package/dist/backend/services/catalog-category-read.service.js.map +1 -0
- package/dist/backend/services/catalog-org-price-decorator.d.ts +90 -0
- package/dist/backend/services/catalog-org-price-decorator.d.ts.map +1 -0
- package/dist/backend/services/catalog-org-price-decorator.js +184 -0
- package/dist/backend/services/catalog-org-price-decorator.js.map +1 -0
- package/dist/backend/services/catalog-product-filter.service.d.ts +82 -0
- package/dist/backend/services/catalog-product-filter.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-product-filter.service.js +275 -0
- package/dist/backend/services/catalog-product-filter.service.js.map +1 -0
- package/dist/backend/services/catalog-product-read.service.d.ts +46 -0
- package/dist/backend/services/catalog-product-read.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-product-read.service.js +197 -0
- package/dist/backend/services/catalog-product-read.service.js.map +1 -0
- package/dist/backend/services/catalog-query.service.d.ts +444 -0
- package/dist/backend/services/catalog-query.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-query.service.js +1633 -0
- package/dist/backend/services/catalog-query.service.js.map +1 -0
- package/dist/backend/services/catalog-quick-search.service.d.ts +78 -0
- package/dist/backend/services/catalog-quick-search.service.d.ts.map +1 -0
- package/dist/backend/services/catalog-quick-search.service.js +159 -0
- package/dist/backend/services/catalog-quick-search.service.js.map +1 -0
- package/dist/backend/services/catalog-write-ports.d.ts +25 -0
- package/dist/backend/services/catalog-write-ports.d.ts.map +1 -0
- package/dist/backend/services/catalog-write-ports.js +63 -0
- package/dist/backend/services/catalog-write-ports.js.map +1 -0
- package/dist/backend/services/category-admin.service.d.ts +102 -0
- package/dist/backend/services/category-admin.service.d.ts.map +1 -0
- package/dist/backend/services/category-admin.service.js +271 -0
- package/dist/backend/services/category-admin.service.js.map +1 -0
- package/dist/backend/services/gallery.service.d.ts +85 -0
- package/dist/backend/services/gallery.service.d.ts.map +1 -0
- package/dist/backend/services/gallery.service.js +326 -0
- package/dist/backend/services/gallery.service.js.map +1 -0
- package/dist/backend/services/grouped.service.d.ts +39 -0
- package/dist/backend/services/grouped.service.d.ts.map +1 -0
- package/dist/backend/services/grouped.service.js +136 -0
- package/dist/backend/services/grouped.service.js.map +1 -0
- package/dist/backend/services/label-resolver.d.ts +16 -0
- package/dist/backend/services/label-resolver.d.ts.map +1 -0
- package/dist/backend/services/label-resolver.js +43 -0
- package/dist/backend/services/label-resolver.js.map +1 -0
- package/dist/backend/services/packaging-unit.service.d.ts +28 -0
- package/dist/backend/services/packaging-unit.service.d.ts.map +1 -0
- package/dist/backend/services/packaging-unit.service.js +197 -0
- package/dist/backend/services/packaging-unit.service.js.map +1 -0
- package/dist/backend/services/primary-asset-url.d.ts +4 -0
- package/dist/backend/services/primary-asset-url.d.ts.map +1 -0
- package/dist/backend/services/primary-asset-url.js +55 -0
- package/dist/backend/services/primary-asset-url.js.map +1 -0
- package/dist/backend/services/product-editor-preferences.service.d.ts +20 -0
- package/dist/backend/services/product-editor-preferences.service.d.ts.map +1 -0
- package/dist/backend/services/product-editor-preferences.service.js +44 -0
- package/dist/backend/services/product-editor-preferences.service.js.map +1 -0
- package/dist/backend/services/product-link.service.d.ts +169 -0
- package/dist/backend/services/product-link.service.d.ts.map +1 -0
- package/dist/backend/services/product-link.service.js +297 -0
- package/dist/backend/services/product-link.service.js.map +1 -0
- package/dist/backend/services/product-overrides.service.d.ts +77 -0
- package/dist/backend/services/product-overrides.service.d.ts.map +1 -0
- package/dist/backend/services/product-overrides.service.js +204 -0
- package/dist/backend/services/product-overrides.service.js.map +1 -0
- package/dist/backend/services/product-scope-context.service.d.ts +36 -0
- package/dist/backend/services/product-scope-context.service.d.ts.map +1 -0
- package/dist/backend/services/product-scope-context.service.js +106 -0
- package/dist/backend/services/product-scope-context.service.js.map +1 -0
- package/dist/backend/services/product-type-validations.d.ts +42 -0
- package/dist/backend/services/product-type-validations.d.ts.map +1 -0
- package/dist/backend/services/product-type-validations.js +55 -0
- package/dist/backend/services/product-type-validations.js.map +1 -0
- package/dist/backend/services/product-value-resolver.service.d.ts +59 -0
- package/dist/backend/services/product-value-resolver.service.d.ts.map +1 -0
- package/dist/backend/services/product-value-resolver.service.js +111 -0
- package/dist/backend/services/product-value-resolver.service.js.map +1 -0
- package/dist/backend/services/system-attribute-scopes.d.ts +18 -0
- package/dist/backend/services/system-attribute-scopes.d.ts.map +1 -0
- package/dist/backend/services/system-attribute-scopes.js +18 -0
- package/dist/backend/services/system-attribute-scopes.js.map +1 -0
- package/dist/backend/services/viewer-organization.d.ts +25 -0
- package/dist/backend/services/viewer-organization.d.ts.map +1 -0
- package/dist/backend/services/viewer-organization.js +31 -0
- package/dist/backend/services/viewer-organization.js.map +1 -0
- package/dist/manifest.d.ts +204 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +686 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.d.ts +33 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.d.ts.map +1 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.js +118 -0
- package/dist/migrations/20260429T064146_catalog_attribute_sets_init.js.map +1 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.d.ts +24 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.d.ts.map +1 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.js +31 -0
- package/dist/migrations/20260429T070004_catalog_product_attribute_extensions.js.map +1 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.d.ts +32 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.d.ts.map +1 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.js +58 -0
- package/dist/migrations/20260429T102322_catalog_product_type_and_virtual_fields.js.map +1 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.d.ts +22 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.d.ts.map +1 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.js +66 -0
- package/dist/migrations/20260429T111839_catalog_gallery_items_and_labels.js.map +1 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.d.ts +18 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.d.ts.map +1 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.js +73 -0
- package/dist/migrations/20260429T112543_catalog_product_attachments.js.map +1 -0
- package/dist/migrations/20260429T123726_catalog_product_links.d.ts +21 -0
- package/dist/migrations/20260429T123726_catalog_product_links.d.ts.map +1 -0
- package/dist/migrations/20260429T123726_catalog_product_links.js +48 -0
- package/dist/migrations/20260429T123726_catalog_product_links.js.map +1 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.d.ts +23 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.d.ts.map +1 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.js +94 -0
- package/dist/migrations/20260429T130803_catalog_grouped_and_bundle.js.map +1 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.d.ts +24 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.d.ts.map +1 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.js +31 -0
- package/dist/migrations/20260501T185835_catalog_product_attribute_is_comparable.js.map +1 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.d.ts +31 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.d.ts.map +1 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.js +133 -0
- package/dist/migrations/20260505T060113_catalog_attribute_options_and_flags.js.map +1 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.d.ts +16 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.d.ts.map +1 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.js +23 -0
- package/dist/migrations/20260515T082629_catalog_attribute_mass_editable.js.map +1 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.d.ts +10 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.d.ts.map +1 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.js +22 -0
- package/dist/migrations/20260526T124736_catalog_product_status_inactive.js.map +1 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.d.ts +38 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.d.ts.map +1 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.js +98 -0
- package/dist/migrations/20260611T140346_catalog_product_value_overrides_init.js.map +1 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.d.ts +13 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.d.ts.map +1 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.js +17 -0
- package/dist/migrations/20260611T140400_catalog_attribute_quick_searchable.js.map +1 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.d.ts +16 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.d.ts.map +1 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.js +42 -0
- package/dist/migrations/20260611T140407_catalog_bulk_operations.js.map +1 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.d.ts +14 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.d.ts.map +1 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.js +18 -0
- package/dist/migrations/20260611T140408_catalog_bulk_operation_logs.js.map +1 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.d.ts +11 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.d.ts.map +1 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.js +29 -0
- package/dist/migrations/20260611T140412_catalog_product_packaging_units.js.map +1 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.d.ts +23 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.d.ts.map +1 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.js +35 -0
- package/dist/migrations/20260718T060659_catalog_bulk_operation_revert_state.js.map +1 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.d.ts +12 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.d.ts.map +1 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.js +16 -0
- package/dist/migrations/20260718T200343_catalog_category_custom_field_values.js.map +1 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.d.ts +32 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.d.ts.map +1 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.js +286 -0
- package/dist/migrations/20260723T230401_catalog_attributes_on_custom_fields.js.map +1 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.d.ts +36 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.d.ts.map +1 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.js +63 -0
- package/dist/migrations/20260804T152604_catalog_widen_product_sku.js.map +1 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.d.ts +18 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.d.ts.map +1 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.js +22 -0
- package/dist/migrations/20260804T160244_catalog_category_activation.js.map +1 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.d.ts +27 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.d.ts.map +1 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.js +44 -0
- package/dist/migrations/20260912T094557_catalog_sales_channel_products.js.map +1 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.d.ts +27 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.d.ts.map +1 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.js +44 -0
- package/dist/migrations/20260912T094623_catalog_sales_channel_categories.js.map +1 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.d.ts +36 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.d.ts.map +1 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.js +87 -0
- package/dist/migrations/20260925T125527_catalog_inventory_columns.js.map +1 -0
- package/dist/migrations/index.d.ts +55 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +80 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/ports/index.d.ts +96 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +2 -0
- package/dist/ports/index.js.map +1 -0
- package/docs/catalog/attachments.md +69 -0
- package/docs/catalog/attribute-sets.md +63 -0
- package/docs/catalog/attributes.md +244 -0
- package/docs/catalog/composite-products.md +115 -0
- package/docs/catalog/gallery-and-labels.md +73 -0
- package/docs/catalog/packaging-units.md +67 -0
- package/docs/catalog/per-channel-per-language-overrides.md +234 -0
- package/docs/catalog/product-links.md +79 -0
- package/docs/catalog.md +207 -0
- package/i18n/en.json +649 -0
- package/i18n/pl.json +649 -0
- package/package.json +109 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { AssignProductsToCategoryParamsSchema, RemoveProductsFromCategoryParamsSchema, SearchCategoriesParamsSchema, SearchProductsParamsSchema, SetProductStatusParamsSchema, SetProductsVisibilityParamsSchema, } from '@endora-commerce/contracts';
|
|
2
|
+
import { HttpError } from '@endora-commerce/platform/http';
|
|
3
|
+
import { Category } from './entities/category.entity.js';
|
|
4
|
+
import { Product } from './entities/product.entity.js';
|
|
5
|
+
import { CatalogAdminService } from './services/catalog-admin.service.js';
|
|
6
|
+
import { CategoryAdminService } from './services/category-admin.service.js';
|
|
7
|
+
import { CatalogBulkUpdateService } from './services/catalog-bulk-update.service.js';
|
|
8
|
+
import { BulkOperationService } from './services/bulk-operation.service.js';
|
|
9
|
+
import { BULK_OPERATION_JOB_NAME, createBulkOperationQueue, } from './services/bulk-operation-queue.js';
|
|
10
|
+
/** Mirrors the feature-022 route threshold (catalog/routes.admin.ts). */
|
|
11
|
+
const BULK_ASYNC_THRESHOLD = 50;
|
|
12
|
+
const RESULT_LIMIT = 20;
|
|
13
|
+
function localizedLabel(name) {
|
|
14
|
+
return name['en'] ?? Object.values(name)[0] ?? '(unnamed)';
|
|
15
|
+
}
|
|
16
|
+
export function catalogPromptResolverTools(deps) {
|
|
17
|
+
// Same cast catalog's own plugin performs when constructing this service.
|
|
18
|
+
const adminService = new CatalogAdminService(deps.emFactory, deps.events, deps.auditLogService);
|
|
19
|
+
const categoryService = new CategoryAdminService(deps.emFactory);
|
|
20
|
+
const searchProducts = {
|
|
21
|
+
id: 'catalog.search_products',
|
|
22
|
+
moduleId: 'catalog',
|
|
23
|
+
kind: 'resolver',
|
|
24
|
+
description: 'Search products by a name, SKU or slug fragment (case- and diacritic-insensitive substring). Returns up to 20 matches as {id, sku, label, status}. Use the returned id in mutation tools; never invent ids.',
|
|
25
|
+
requiredPermission: 'catalog:read',
|
|
26
|
+
paramsSchema: SearchProductsParamsSchema,
|
|
27
|
+
execute: async (params) => {
|
|
28
|
+
const result = await adminService.listProducts({
|
|
29
|
+
q: params.q,
|
|
30
|
+
pageSize: Math.min(params.limit ?? 10, RESULT_LIMIT),
|
|
31
|
+
});
|
|
32
|
+
return result.items.map((p) => ({
|
|
33
|
+
id: p.id,
|
|
34
|
+
sku: p.sku,
|
|
35
|
+
label: localizedLabel(p.name),
|
|
36
|
+
status: p.status,
|
|
37
|
+
}));
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
const searchCategories = {
|
|
41
|
+
id: 'catalog.search_categories',
|
|
42
|
+
moduleId: 'catalog',
|
|
43
|
+
kind: 'resolver',
|
|
44
|
+
description: 'Search product categories by a name fragment (case-insensitive). Returns up to 20 matches as {id, label, slug}.',
|
|
45
|
+
requiredPermission: 'catalog:read',
|
|
46
|
+
paramsSchema: SearchCategoriesParamsSchema,
|
|
47
|
+
execute: async (params) => {
|
|
48
|
+
const all = await categoryService.listAll();
|
|
49
|
+
const needle = params.q.toLowerCase();
|
|
50
|
+
return all
|
|
51
|
+
.filter((c) => {
|
|
52
|
+
const labels = Object.values(c.name).join(' ').toLowerCase();
|
|
53
|
+
return labels.includes(needle) || c.slug.toLowerCase().includes(needle);
|
|
54
|
+
})
|
|
55
|
+
.slice(0, RESULT_LIMIT)
|
|
56
|
+
.map((c) => ({ id: c.id, label: localizedLabel(c.name), slug: c.slug }));
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
return [searchProducts, searchCategories];
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// US2 — bulk category assignment (mutation) + delegated-progress resolver
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
function buildBulkServices(deps) {
|
|
65
|
+
const adminService = new CatalogAdminService(deps.emFactory, deps.events, deps.auditLogService, deps.salesChannelMembership);
|
|
66
|
+
const bulkUpdateService = new CatalogBulkUpdateService(deps.emFactory, adminService, deps.salesChannelMembership, deps.auditLogService);
|
|
67
|
+
const queue = deps.redis ? createBulkOperationQueue(deps.redis) : undefined;
|
|
68
|
+
const bulkOperationService = new BulkOperationService(deps.emFactory, bulkUpdateService, {
|
|
69
|
+
...(queue
|
|
70
|
+
? {
|
|
71
|
+
onEnqueued: async (operationId) => {
|
|
72
|
+
await queue.add(BULK_OPERATION_JOB_NAME, { operationId });
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
: {}),
|
|
76
|
+
});
|
|
77
|
+
return { bulkOperationService, bulkUpdateService };
|
|
78
|
+
}
|
|
79
|
+
/** Shared bulk-fields execution: ≤ threshold runs sync; larger delegates to the queue. */
|
|
80
|
+
async function runBulkFieldsUpdate(services, fields, productIds, ctx) {
|
|
81
|
+
const request = { productIds, fields };
|
|
82
|
+
if (productIds.length > BULK_ASYNC_THRESHOLD) {
|
|
83
|
+
const op = await services.bulkOperationService.create({
|
|
84
|
+
requestedByAdminUserId: ctx.adminUserId,
|
|
85
|
+
payload: request,
|
|
86
|
+
});
|
|
87
|
+
return { delegated: true, bulkOperationId: op.id };
|
|
88
|
+
}
|
|
89
|
+
const result = await services.bulkUpdateService.bulkUpdate(request, {
|
|
90
|
+
actorAdminUserId: ctx.adminUserId,
|
|
91
|
+
impersonatedCustomerAccountId: null,
|
|
92
|
+
ipAddress: ctx.auditCtx.ipAddress ?? null,
|
|
93
|
+
userAgent: ctx.auditCtx.userAgent ?? null,
|
|
94
|
+
requestId: ctx.auditCtx.requestId ?? null,
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
summary: {
|
|
98
|
+
total: result.summary.total,
|
|
99
|
+
succeeded: result.summary.succeeded,
|
|
100
|
+
failed: result.summary.failed + result.summary.skipped,
|
|
101
|
+
failures: result.results
|
|
102
|
+
.filter((r) => r.status !== 'succeeded')
|
|
103
|
+
.slice(0, 50)
|
|
104
|
+
.map((r) => ({ id: r.productId, reason: r.details?.message ?? r.reason ?? 'failed' })),
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** Shared preview: validate all ids exist and build the affected-count + sample. */
|
|
109
|
+
async function previewProducts(em, productIds, headline) {
|
|
110
|
+
const products = await em.find(Product, { id: { $in: productIds } }, { fields: ['id', 'name', 'sku'] });
|
|
111
|
+
if (products.length !== productIds.length) {
|
|
112
|
+
throw new HttpError(404, 'PRODUCT_NOT_FOUND', 'One or more products were not found.');
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
headline,
|
|
116
|
+
affectedCount: products.length,
|
|
117
|
+
sample: products.slice(0, 10).map((p) => ({ id: p.id, label: localizedLabel(p.name) })),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export function catalogPromptMutationTools(deps) {
|
|
121
|
+
const services = buildBulkServices(deps);
|
|
122
|
+
const { bulkOperationService, bulkUpdateService } = services;
|
|
123
|
+
const assignToCategory = {
|
|
124
|
+
id: 'catalog.assign_products_to_category',
|
|
125
|
+
moduleId: 'catalog',
|
|
126
|
+
kind: 'mutation',
|
|
127
|
+
description: 'Assign one or more products to a category (additive — existing category assignments are kept). Resolve products via catalog.search_products and the category via catalog.search_categories first. Captured into a plan the operator must confirm; not executed immediately.',
|
|
128
|
+
requiredPermission: 'catalog:write',
|
|
129
|
+
paramsSchema: AssignProductsToCategoryParamsSchema,
|
|
130
|
+
preview: async (params) => {
|
|
131
|
+
// D-75 — this module's own fork, not the caller's manager. A preview
|
|
132
|
+
// reads committed rows: the request row it would have shared a unit of
|
|
133
|
+
// work with is flushed before the interpreter runs, and nothing here
|
|
134
|
+
// writes.
|
|
135
|
+
const em = deps.emFactory();
|
|
136
|
+
const category = await em.findOne(Category, { id: params.categoryId, deletedAt: null });
|
|
137
|
+
if (!category)
|
|
138
|
+
throw new HttpError(404, 'NOT_FOUND', 'Category not found.');
|
|
139
|
+
// The preview runs the same membership query execution will use: the
|
|
140
|
+
// ids are validated to exist so the affected count is honest (FR-004).
|
|
141
|
+
const products = await em.find(Product, { id: { $in: params.productIds } }, { fields: ['id', 'name', 'sku'] });
|
|
142
|
+
if (products.length !== params.productIds.length) {
|
|
143
|
+
throw new HttpError(404, 'PRODUCT_NOT_FOUND', 'One or more products were not found.');
|
|
144
|
+
}
|
|
145
|
+
const label = category.name['en'] ?? Object.values(category.name)[0] ?? category.slug;
|
|
146
|
+
return {
|
|
147
|
+
headline: `Assign ${products.length} product(s) to category "${label}"`,
|
|
148
|
+
affectedCount: products.length,
|
|
149
|
+
sample: products.slice(0, 10).map((p) => ({
|
|
150
|
+
id: p.id,
|
|
151
|
+
label: p.name['en'] ?? Object.values(p.name)[0] ?? p.sku,
|
|
152
|
+
})),
|
|
153
|
+
};
|
|
154
|
+
},
|
|
155
|
+
execute: async (params, ctx) => {
|
|
156
|
+
const request = {
|
|
157
|
+
productIds: params.productIds,
|
|
158
|
+
fields: { categories: { mode: 'add', categoryIds: [params.categoryId] } },
|
|
159
|
+
};
|
|
160
|
+
if (params.productIds.length > BULK_ASYNC_THRESHOLD) {
|
|
161
|
+
const op = await bulkOperationService.create({
|
|
162
|
+
requestedByAdminUserId: ctx.adminUserId,
|
|
163
|
+
payload: request,
|
|
164
|
+
});
|
|
165
|
+
return { delegated: true, bulkOperationId: op.id };
|
|
166
|
+
}
|
|
167
|
+
const result = await bulkUpdateService.bulkUpdate(request, {
|
|
168
|
+
actorAdminUserId: ctx.adminUserId,
|
|
169
|
+
impersonatedCustomerAccountId: null,
|
|
170
|
+
ipAddress: ctx.auditCtx.ipAddress ?? null,
|
|
171
|
+
userAgent: ctx.auditCtx.userAgent ?? null,
|
|
172
|
+
requestId: ctx.auditCtx.requestId ?? null,
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
summary: {
|
|
176
|
+
total: result.summary.total,
|
|
177
|
+
succeeded: result.summary.succeeded,
|
|
178
|
+
failed: result.summary.failed + result.summary.skipped,
|
|
179
|
+
failures: result.results
|
|
180
|
+
.filter((r) => r.status !== 'succeeded')
|
|
181
|
+
.slice(0, 50)
|
|
182
|
+
.map((r) => ({
|
|
183
|
+
id: r.productId,
|
|
184
|
+
reason: r.details?.message ?? r.reason ?? 'failed',
|
|
185
|
+
})),
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
const removeFromCategory = {
|
|
191
|
+
id: 'catalog.remove_products_from_category',
|
|
192
|
+
moduleId: 'catalog',
|
|
193
|
+
kind: 'mutation',
|
|
194
|
+
description: 'Remove one or more products from a category (subtractive — only the named category is removed, other category assignments are kept). Resolve products via catalog.search_products and the category via catalog.search_categories first. Captured into a plan the operator must confirm; not executed immediately.',
|
|
195
|
+
requiredPermission: 'catalog:write',
|
|
196
|
+
paramsSchema: RemoveProductsFromCategoryParamsSchema,
|
|
197
|
+
preview: async (params) => {
|
|
198
|
+
// D-75 — this module's own fork, not the caller's manager. A preview
|
|
199
|
+
// reads committed rows: the request row it would have shared a unit of
|
|
200
|
+
// work with is flushed before the interpreter runs, and nothing here
|
|
201
|
+
// writes.
|
|
202
|
+
const em = deps.emFactory();
|
|
203
|
+
const category = await em.findOne(Category, { id: params.categoryId, deletedAt: null });
|
|
204
|
+
if (!category)
|
|
205
|
+
throw new HttpError(404, 'NOT_FOUND', 'Category not found.');
|
|
206
|
+
const products = await em.find(Product, { id: { $in: params.productIds } }, { fields: ['id', 'name', 'sku'] });
|
|
207
|
+
if (products.length !== params.productIds.length) {
|
|
208
|
+
throw new HttpError(404, 'PRODUCT_NOT_FOUND', 'One or more products were not found.');
|
|
209
|
+
}
|
|
210
|
+
const label = category.name['en'] ?? Object.values(category.name)[0] ?? category.slug;
|
|
211
|
+
return {
|
|
212
|
+
headline: `Remove ${products.length} product(s) from category "${label}"`,
|
|
213
|
+
affectedCount: products.length,
|
|
214
|
+
sample: products.slice(0, 10).map((p) => ({
|
|
215
|
+
id: p.id,
|
|
216
|
+
label: p.name['en'] ?? Object.values(p.name)[0] ?? p.sku,
|
|
217
|
+
})),
|
|
218
|
+
};
|
|
219
|
+
},
|
|
220
|
+
execute: async (params, ctx) => runBulkFieldsUpdate(services, { categories: { mode: 'remove', categoryIds: [params.categoryId] } }, params.productIds, ctx),
|
|
221
|
+
};
|
|
222
|
+
const setProductStatus = {
|
|
223
|
+
id: 'catalog.set_product_status',
|
|
224
|
+
moduleId: 'catalog',
|
|
225
|
+
kind: 'mutation',
|
|
226
|
+
description: 'Set the status (draft | active | inactive) of one or more products. Resolve products via catalog.search_products first. Captured into a plan the operator must confirm; not executed immediately.',
|
|
227
|
+
requiredPermission: 'catalog:write',
|
|
228
|
+
paramsSchema: SetProductStatusParamsSchema,
|
|
229
|
+
preview: async (params) => previewProducts(deps.emFactory(), params.productIds, `Set status of ${params.productIds.length} product(s) to "${params.status}"`),
|
|
230
|
+
execute: async (params, ctx) => runBulkFieldsUpdate(services, { status: params.status }, params.productIds, ctx),
|
|
231
|
+
};
|
|
232
|
+
const setProductsVisibility = {
|
|
233
|
+
id: 'catalog.set_products_visibility',
|
|
234
|
+
moduleId: 'catalog',
|
|
235
|
+
kind: 'mutation',
|
|
236
|
+
description: 'Set the storefront visibility (public | logged_in_only | organization_restricted) of one or more products as a bulk action. Resolve products via catalog.search_products first. Captured into a plan the operator must confirm; not executed immediately.',
|
|
237
|
+
requiredPermission: 'catalog:write',
|
|
238
|
+
paramsSchema: SetProductsVisibilityParamsSchema,
|
|
239
|
+
preview: async (params) => previewProducts(deps.emFactory(), params.productIds, `Set visibility of ${params.productIds.length} product(s) to "${params.visibility}"`),
|
|
240
|
+
execute: async (params, ctx) => runBulkFieldsUpdate(services, { visibility: params.visibility }, params.productIds, ctx),
|
|
241
|
+
};
|
|
242
|
+
return [
|
|
243
|
+
assignToCategory,
|
|
244
|
+
removeFromCategory,
|
|
245
|
+
setProductStatus,
|
|
246
|
+
setProductsVisibility,
|
|
247
|
+
];
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Live `catalog_bulk_operations` progress for one delegated prompt request
|
|
251
|
+
* (research §R6, FR-011/FR-018), contributed as `prompt_actions`'
|
|
252
|
+
* `BulkProgressReader`.
|
|
253
|
+
*
|
|
254
|
+
* D-76 — data out, and nothing else. This used to take
|
|
255
|
+
* `(row: PromptActionRequest, em: EntityManager)` and write `row.result`,
|
|
256
|
+
* `row.status` and `row.error` on `prompt_actions`' own entity, which put that
|
|
257
|
+
* module's state machine in this module's hands; the `em` was never bound at
|
|
258
|
+
* all. What a bulk operation did is this module's fact, and this returns
|
|
259
|
+
* exactly that fact — whether the request is `completed`, `failed` or
|
|
260
|
+
* `completed_with_errors` is decided by its owner.
|
|
261
|
+
*
|
|
262
|
+
* `null` means "not one of mine": the id names no bulk operation here, so the
|
|
263
|
+
* host may ask the next contributor.
|
|
264
|
+
*/
|
|
265
|
+
export function catalogBulkProgressReader(deps) {
|
|
266
|
+
const { bulkOperationService } = buildBulkServices(deps);
|
|
267
|
+
return async (bulkOperationId) => {
|
|
268
|
+
const op = await bulkOperationService.get(bulkOperationId);
|
|
269
|
+
if (!op)
|
|
270
|
+
return null;
|
|
271
|
+
return {
|
|
272
|
+
total: op.total,
|
|
273
|
+
succeeded: op.succeeded,
|
|
274
|
+
failed: op.failed + op.skipped,
|
|
275
|
+
failures: (op.results ?? [])
|
|
276
|
+
.filter((r) => r.status !== 'succeeded')
|
|
277
|
+
.slice(0, 50)
|
|
278
|
+
.map((r) => ({ id: r.productId, reason: r.details?.message ?? r.reason ?? 'failed' })),
|
|
279
|
+
terminal: op.status === 'completed' || op.status === 'failed' ? op.status : null,
|
|
280
|
+
error: op.error ?? null,
|
|
281
|
+
};
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=prompt-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-tools.js","sourceRoot":"","sources":["../../src/backend/prompt-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { FastifyInstance, FastifyRequest } from 'fastify';
|
|
2
|
+
import type { CatalogAdminService } from './services/catalog-admin.service.js';
|
|
3
|
+
import type { CatalogBulkUpdateService } from './services/catalog-bulk-update.service.js';
|
|
4
|
+
import type { BulkOperationService } from './services/bulk-operation.service.js';
|
|
5
|
+
import type { CategoryAdminService } from './services/category-admin.service.js';
|
|
6
|
+
import type { AttributeSetService } from './services/attribute-set.service.js';
|
|
7
|
+
import type { GalleryService } from './services/gallery.service.js';
|
|
8
|
+
import type { AttachmentService } from './services/attachment.service.js';
|
|
9
|
+
import type { PackagingUnitService } from './services/packaging-unit.service.js';
|
|
10
|
+
import type { ProductLinkService } from './services/product-link.service.js';
|
|
11
|
+
import type { GroupedService } from './services/grouped.service.js';
|
|
12
|
+
import type { BundleService } from './services/bundle.service.js';
|
|
13
|
+
import type { ProductScopeContextService } from './services/product-scope-context.service.js';
|
|
14
|
+
import type { ProductEditorPreferencesService } from './services/product-editor-preferences.service.js';
|
|
15
|
+
import type { ProductValueResolverService } from './services/product-value-resolver.service.js';
|
|
16
|
+
import type { ProductOverridesService } from './services/product-overrides.service.js';
|
|
17
|
+
import type { AuditPort } from '@endora-commerce/platform/kernel';
|
|
18
|
+
import type { RequireAdminFactory } from '@endora-commerce/platform/kernel';
|
|
19
|
+
export interface CatalogAdminDeps {
|
|
20
|
+
adminService: CatalogAdminService;
|
|
21
|
+
/** Optional — wired by the catalog plugin once instantiated. */
|
|
22
|
+
categoryAdminService?: CategoryAdminService;
|
|
23
|
+
/**
|
|
24
|
+
* Feature 002 — AttributeSet admin CRUD. Optional so dev/test composition
|
|
25
|
+
* roots can wire it up progressively without breaking foundation-era
|
|
26
|
+
* setups. When omitted, the attribute-set endpoints are NOT registered.
|
|
27
|
+
*/
|
|
28
|
+
attributeSetService?: AttributeSetService;
|
|
29
|
+
/**
|
|
30
|
+
* Feature 002 — Gallery admin CRUD (US3). Optional for the same
|
|
31
|
+
* progressive-rollout reason as `attributeSetService`.
|
|
32
|
+
*/
|
|
33
|
+
galleryService?: GalleryService;
|
|
34
|
+
/** Feature 002 — Attachments admin CRUD (US3). */
|
|
35
|
+
attachmentService?: AttachmentService;
|
|
36
|
+
/** Feature 043 — Packaging units admin CRUD. */
|
|
37
|
+
packagingUnitService?: PackagingUnitService;
|
|
38
|
+
/** Feature 002 — Product Links admin CRUD (US4). */
|
|
39
|
+
productLinkService?: ProductLinkService;
|
|
40
|
+
/** Feature 002 — Grouped product children admin CRUD (US5). */
|
|
41
|
+
groupedService?: GroupedService;
|
|
42
|
+
/** Feature 002 — Bundle slots + options admin CRUD (US5). */
|
|
43
|
+
bundleService?: BundleService;
|
|
44
|
+
/**
|
|
45
|
+
* Feature 023 — per-Sales-Channel + per-Language product scope
|
|
46
|
+
* context endpoint backing the product edit page switchers. When
|
|
47
|
+
* omitted, the scope-context route is NOT registered (back-compat).
|
|
48
|
+
*/
|
|
49
|
+
productScopeContextService?: ProductScopeContextService;
|
|
50
|
+
/**
|
|
51
|
+
* Feature 023 — editor preference upsert backing the remembered
|
|
52
|
+
* switcher state. Optional same reason as above.
|
|
53
|
+
*/
|
|
54
|
+
productEditorPreferencesService?: ProductEditorPreferencesService;
|
|
55
|
+
/**
|
|
56
|
+
* Feature 023 — resolver wrapper used by the modified
|
|
57
|
+
* `GET /admin/products/:id` to attach a `resolved` preview block
|
|
58
|
+
* when `channelId` / `languageCode` are passed.
|
|
59
|
+
*/
|
|
60
|
+
productValueResolverService?: ProductValueResolverService;
|
|
61
|
+
/**
|
|
62
|
+
* Feature 023 — channel-aware override CRUD. Powers the
|
|
63
|
+
* `PATCH /admin/products/:id/value-overrides` endpoint. Optional so
|
|
64
|
+
* the read-only path (GET value-overrides) can ship without the
|
|
65
|
+
* write surface in dev/test setups that haven't wired it yet.
|
|
66
|
+
*/
|
|
67
|
+
productOverridesService?: ProductOverridesService;
|
|
68
|
+
/**
|
|
69
|
+
* Feature 022 (products bulk edit) — POST /products/bulk-update. Optional
|
|
70
|
+
* so tests / dev composition roots that don't yet wire the service stay
|
|
71
|
+
* green; the route is only registered when this dep is present.
|
|
72
|
+
*/
|
|
73
|
+
bulkUpdateService?: CatalogBulkUpdateService;
|
|
74
|
+
/**
|
|
75
|
+
* Queued bulk-edit. When present, selections above
|
|
76
|
+
* {@link BULK_ASYNC_THRESHOLD} are enqueued as background operations
|
|
77
|
+
* instead of being applied inline, and the bulk-operations
|
|
78
|
+
* list/detail endpoints are registered. Optional so dev/test
|
|
79
|
+
* composition roots can omit the queue infrastructure.
|
|
80
|
+
*/
|
|
81
|
+
bulkOperationService?: BulkOperationService;
|
|
82
|
+
/**
|
|
83
|
+
* PreHandler gate — supplied by the composition root. Set to the real
|
|
84
|
+
* `requireAdmin('catalog:write')` factory at server boot. Optional so tests
|
|
85
|
+
* and dev-mode servers can wire this up progressively.
|
|
86
|
+
*/
|
|
87
|
+
requireAdmin: RequireAdminFactory;
|
|
88
|
+
/**
|
|
89
|
+
* Resolves an admin actor (admin user id, optional impersonated customer)
|
|
90
|
+
* for audit-log entries — passed through to the catalog admin service.
|
|
91
|
+
*/
|
|
92
|
+
resolveAdminAuditContext?: (req: FastifyRequest) => {
|
|
93
|
+
actorAdminUserId: string;
|
|
94
|
+
impersonatedCustomerAccountId?: string | null;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Audit-log writer used by the route layer to emit FR-084 entries for
|
|
98
|
+
* every catalog mutation introduced in feature 002 (AttributeSet,
|
|
99
|
+
* Gallery, Attachment, ProductLink, GroupedItem, BundleSlot CRUD).
|
|
100
|
+
* Optional so tests that don't wire it up stay green.
|
|
101
|
+
*/
|
|
102
|
+
auditLogService?: AuditPort;
|
|
103
|
+
}
|
|
104
|
+
export declare function registerCatalogAdminRoutes(app: FastifyInstance, deps: CatalogAdminDeps): Promise<void>;
|
|
105
|
+
//# sourceMappingURL=routes.admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.admin.d.ts","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAqC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAEvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAMlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AA2B5E,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,mBAAmB,CAAC;IAClC,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD;;;OAGG;IACH,+BAA+B,CAAC,EAAE,+BAA+B,CAAC;IAClE;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;OAIG;IACH,YAAY,EAAE,mBAAmB,CAAC;IAClC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK;QAClD,gBAAgB,EAAE,MAAM,CAAC;QACzB,6BAA6B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/C,CAAC;IACF;;;;;OAKG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAmhDf"}
|