@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 @@
|
|
|
1
|
+
{"version":3,"file":"attachment-type.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/attachment-type.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAItF;;;;GAIG;AACH,qBAEa,cAAc;IACzB,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IAGhE,EAAE,EAAE,MAAM,CAAgB;IAI1B,IAAI,EAAG,MAAM,CAAC;IAGd,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG9B,QAAQ,EAAE,MAAM,CAAK;IAGrB,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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, OptionalProps, PrimaryKey, Property, Unique } from '@mikro-orm/core';
|
|
11
|
+
import { GlobalEntity } from '@endora-commerce/platform/tenancy';
|
|
12
|
+
import { randomUUID } from 'crypto';
|
|
13
|
+
/**
|
|
14
|
+
* AttachmentType — global dictionary of attachment categories
|
|
15
|
+
* (Certificate, Tech Spec, Product Card, …) shared across all
|
|
16
|
+
* Products. Feature 002 US3, data-model.md §2.5.
|
|
17
|
+
*/
|
|
18
|
+
let AttachmentType = class AttachmentType {
|
|
19
|
+
[OptionalProps];
|
|
20
|
+
id = randomUUID();
|
|
21
|
+
code;
|
|
22
|
+
name;
|
|
23
|
+
position = 0;
|
|
24
|
+
createdAt = new Date();
|
|
25
|
+
updatedAt = new Date();
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
PrimaryKey({ type: 'uuid' }),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], AttachmentType.prototype, "id", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
Property({ type: 'string', length: 64 }),
|
|
33
|
+
Unique(),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], AttachmentType.prototype, "code", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
Property({ type: 'json' }),
|
|
38
|
+
__metadata("design:type", Object)
|
|
39
|
+
], AttachmentType.prototype, "name", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
Property({ type: 'integer' }),
|
|
42
|
+
__metadata("design:type", Number)
|
|
43
|
+
], AttachmentType.prototype, "position", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
Property({ type: 'datetime', onCreate: () => new Date() }),
|
|
46
|
+
__metadata("design:type", Date)
|
|
47
|
+
], AttachmentType.prototype, "createdAt", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
Property({ type: 'datetime', onUpdate: () => new Date() }),
|
|
50
|
+
__metadata("design:type", Date)
|
|
51
|
+
], AttachmentType.prototype, "updatedAt", void 0);
|
|
52
|
+
AttachmentType = __decorate([
|
|
53
|
+
GlobalEntity(),
|
|
54
|
+
Entity({ tableName: 'attachment_types' })
|
|
55
|
+
], AttachmentType);
|
|
56
|
+
export { AttachmentType };
|
|
57
|
+
//# sourceMappingURL=attachment-type.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment-type.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/attachment-type.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtF,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,CAAiD;IAGhE,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,IAAI,CAAU;IAGd,IAAI,CAA0B;IAG9B,QAAQ,GAAW,CAAC,CAAC;IAGrB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAjBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,MAAM,EAAE;;4CACK;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACG;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDACT;AAGrB;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;AApBlB,cAAc;IAF1B,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;GAC7B,cAAc,CAqB1B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* AttributeSetAttribute — composite-PK bridge between AttributeSet and the
|
|
4
|
+
* product-host Custom Field definitions (feature 002, re-keyed by feature 061).
|
|
5
|
+
*
|
|
6
|
+
* Membership is stored by `custom_field_definition_id` (data-model.md §1.4);
|
|
7
|
+
* the admin API keeps accepting/returning attribute (extension) ids — the
|
|
8
|
+
* AttributeSetService maps extension id ⇄ definition id at the API boundary.
|
|
9
|
+
*
|
|
10
|
+
* `position` controls the order attributes are surfaced to the admin Product
|
|
11
|
+
* editor. Foreign-key cascades are owned by migration 102:
|
|
12
|
+
* - On AttributeSet delete → CASCADE (assignments removed with the set).
|
|
13
|
+
* - On definition delete → RESTRICT (the catalog delete command refuses
|
|
14
|
+
* while the attribute is still wired to any set; admin must un-assign
|
|
15
|
+
* first — same semantics as the pre-061 attribute RESTRICT).
|
|
16
|
+
*
|
|
17
|
+
* Modeled as a standalone entity (not auto-pivot) so services can query
|
|
18
|
+
* `position` directly and so seeds can reuse the standard EM-flush path.
|
|
19
|
+
*/
|
|
20
|
+
export declare class AttributeSetAttribute {
|
|
21
|
+
[OptionalProps]?: 'position';
|
|
22
|
+
attributeSetId: string;
|
|
23
|
+
customFieldDefinitionId: string;
|
|
24
|
+
position: number;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=attribute-set-attribute.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-set-attribute.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/attribute-set-attribute.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAGrF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAEa,qBAAqB;IAChC,CAAC,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC;IAI7B,cAAc,EAAG,MAAM,CAAC;IAIxB,uBAAuB,EAAG,MAAM,CAAC;IAGjC,QAAQ,EAAE,MAAM,CAAK;CACtB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
/**
|
|
13
|
+
* AttributeSetAttribute — composite-PK bridge between AttributeSet and the
|
|
14
|
+
* product-host Custom Field definitions (feature 002, re-keyed by feature 061).
|
|
15
|
+
*
|
|
16
|
+
* Membership is stored by `custom_field_definition_id` (data-model.md §1.4);
|
|
17
|
+
* the admin API keeps accepting/returning attribute (extension) ids — the
|
|
18
|
+
* AttributeSetService maps extension id ⇄ definition id at the API boundary.
|
|
19
|
+
*
|
|
20
|
+
* `position` controls the order attributes are surfaced to the admin Product
|
|
21
|
+
* editor. Foreign-key cascades are owned by migration 102:
|
|
22
|
+
* - On AttributeSet delete → CASCADE (assignments removed with the set).
|
|
23
|
+
* - On definition delete → RESTRICT (the catalog delete command refuses
|
|
24
|
+
* while the attribute is still wired to any set; admin must un-assign
|
|
25
|
+
* first — same semantics as the pre-061 attribute RESTRICT).
|
|
26
|
+
*
|
|
27
|
+
* Modeled as a standalone entity (not auto-pivot) so services can query
|
|
28
|
+
* `position` directly and so seeds can reuse the standard EM-flush path.
|
|
29
|
+
*/
|
|
30
|
+
let AttributeSetAttribute = class AttributeSetAttribute {
|
|
31
|
+
[OptionalProps];
|
|
32
|
+
attributeSetId;
|
|
33
|
+
customFieldDefinitionId;
|
|
34
|
+
position = 0;
|
|
35
|
+
};
|
|
36
|
+
__decorate([
|
|
37
|
+
PrimaryKey({ type: 'uuid' }),
|
|
38
|
+
Index({ name: 'attribute_set_attributes_set_id_index' }),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], AttributeSetAttribute.prototype, "attributeSetId", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
PrimaryKey({ type: 'uuid' }),
|
|
43
|
+
Index({ name: 'attribute_set_attributes_definition_id_index' }),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], AttributeSetAttribute.prototype, "customFieldDefinitionId", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
Property({ type: 'integer' }),
|
|
48
|
+
__metadata("design:type", Number)
|
|
49
|
+
], AttributeSetAttribute.prototype, "position", void 0);
|
|
50
|
+
AttributeSetAttribute = __decorate([
|
|
51
|
+
GlobalEntity(),
|
|
52
|
+
Entity({ tableName: 'attribute_set_attributes' })
|
|
53
|
+
], AttributeSetAttribute);
|
|
54
|
+
export { AttributeSetAttribute };
|
|
55
|
+
//# sourceMappingURL=attribute-set-attribute.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-set-attribute.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/attribute-set-attribute.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;AAEjE;;;;;;;;;;;;;;;;;GAiBG;AAGI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,CAAC,aAAa,CAAC,CAAc;IAI7B,cAAc,CAAU;IAIxB,uBAAuB,CAAU;IAGjC,QAAQ,GAAW,CAAC,CAAC;CACtB,CAAA;AARC;IAFC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC;;6DACjC;AAIxB;IAFC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC;;sEAC/B;AAGjC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;uDACT;AAZV,qBAAqB;IAFjC,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC;GACrC,qBAAqB,CAajC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* AttributeSet — named container of Product Attributes (feature 002,
|
|
4
|
+
* data-model.md §2.1).
|
|
5
|
+
*
|
|
6
|
+
* Every Product MUST point at exactly one AttributeSet via
|
|
7
|
+
* `Product.attributeSetId`. The system **Default** set has the
|
|
8
|
+
* deterministic UUID `00000000-0000-0000-0000-0000000a5e70` and
|
|
9
|
+
* `isSystem=true`; it cannot be deleted, and its `code` cannot be
|
|
10
|
+
* renamed (the localized `name` and `description` may be edited).
|
|
11
|
+
*/
|
|
12
|
+
export declare class AttributeSet {
|
|
13
|
+
[OptionalProps]?: 'id' | 'description' | 'isSystem' | 'createdAt' | 'updatedAt';
|
|
14
|
+
id: string;
|
|
15
|
+
code: string;
|
|
16
|
+
name: Record<string, string>;
|
|
17
|
+
description?: Record<string, string> | null;
|
|
18
|
+
isSystem: boolean;
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
updatedAt: Date;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=attribute-set.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-set.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/attribute-set.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAItF;;;;;;;;;GASG;AACH,qBAEa,YAAY;IACvB,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IAGhF,EAAE,EAAE,MAAM,CAAgB;IAI1B,IAAI,EAAG,MAAM,CAAC;IAGd,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG9B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAG5C,QAAQ,EAAE,OAAO,CAAS;IAG1B,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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, OptionalProps, PrimaryKey, Property, Unique } from '@mikro-orm/core';
|
|
11
|
+
import { GlobalEntity } from '@endora-commerce/platform/tenancy';
|
|
12
|
+
import { randomUUID } from 'crypto';
|
|
13
|
+
/**
|
|
14
|
+
* AttributeSet — named container of Product Attributes (feature 002,
|
|
15
|
+
* data-model.md §2.1).
|
|
16
|
+
*
|
|
17
|
+
* Every Product MUST point at exactly one AttributeSet via
|
|
18
|
+
* `Product.attributeSetId`. The system **Default** set has the
|
|
19
|
+
* deterministic UUID `00000000-0000-0000-0000-0000000a5e70` and
|
|
20
|
+
* `isSystem=true`; it cannot be deleted, and its `code` cannot be
|
|
21
|
+
* renamed (the localized `name` and `description` may be edited).
|
|
22
|
+
*/
|
|
23
|
+
let AttributeSet = class AttributeSet {
|
|
24
|
+
[OptionalProps];
|
|
25
|
+
id = randomUUID();
|
|
26
|
+
code;
|
|
27
|
+
name;
|
|
28
|
+
description;
|
|
29
|
+
isSystem = false;
|
|
30
|
+
createdAt = new Date();
|
|
31
|
+
updatedAt = new Date();
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
PrimaryKey({ type: 'uuid' }),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], AttributeSet.prototype, "id", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
Property({ type: 'string', length: 64 }),
|
|
39
|
+
Unique(),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], AttributeSet.prototype, "code", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
Property({ type: 'json' }),
|
|
44
|
+
__metadata("design:type", Object)
|
|
45
|
+
], AttributeSet.prototype, "name", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
Property({ type: 'json', nullable: true }),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], AttributeSet.prototype, "description", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
Property({ type: 'boolean' }),
|
|
52
|
+
__metadata("design:type", Boolean)
|
|
53
|
+
], AttributeSet.prototype, "isSystem", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
Property({ type: 'datetime', onCreate: () => new Date() }),
|
|
56
|
+
__metadata("design:type", Date)
|
|
57
|
+
], AttributeSet.prototype, "createdAt", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
Property({ type: 'datetime', onUpdate: () => new Date() }),
|
|
60
|
+
__metadata("design:type", Date)
|
|
61
|
+
], AttributeSet.prototype, "updatedAt", void 0);
|
|
62
|
+
AttributeSet = __decorate([
|
|
63
|
+
GlobalEntity(),
|
|
64
|
+
Entity({ tableName: 'attribute_sets' })
|
|
65
|
+
], AttributeSet);
|
|
66
|
+
export { AttributeSet };
|
|
67
|
+
//# sourceMappingURL=attribute-set.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-set.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/attribute-set.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;;;;GASG;AAGI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,CAAC,aAAa,CAAC,CAAiE;IAGhF,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,IAAI,CAAU;IAGd,IAAI,CAA0B;IAG9B,WAAW,CAAiC;IAG5C,QAAQ,GAAY,KAAK,CAAC;IAG1B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AApBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wCACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,MAAM,EAAE;;0CACK;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACG;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACC;AAG5C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CACJ;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAvBlB,YAAY;IAFxB,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;GAC3B,YAAY,CAwBxB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* BulkOperation — feature: queued product bulk-edit.
|
|
4
|
+
*
|
|
5
|
+
* A persisted record of an asynchronous bulk operation. When an admin
|
|
6
|
+
* selects more than the synchronous threshold of products for a bulk
|
|
7
|
+
* edit, the request is enqueued as one of these rows instead of being
|
|
8
|
+
* applied inline. An in-process sweeper (see `BulkOperationWorker`)
|
|
9
|
+
* picks up `pending` rows, applies the patch through
|
|
10
|
+
* `CatalogBulkUpdateService`, and updates the live counters so the
|
|
11
|
+
* "Bulk actions" admin page can show progress. On completion the
|
|
12
|
+
* requester receives an in-app (bell) notification and an email.
|
|
13
|
+
*
|
|
14
|
+
* `payload` holds the original request (`productIds` + `fields`); on
|
|
15
|
+
* finish, `results` holds the per-product outcome list (capped).
|
|
16
|
+
*/
|
|
17
|
+
export type BulkOperationStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
18
|
+
/** Undo state of a reversible operation (feature 054, FR-014). */
|
|
19
|
+
export type BulkOperationUndoStatus = 'none' | 'reverted' | 'partially_reverted';
|
|
20
|
+
export interface BulkOperationPayload {
|
|
21
|
+
productIds: string[];
|
|
22
|
+
fields: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* One affected record's captured pre/post state for undo (feature 054, §R3/§R5).
|
|
26
|
+
* `before` is the minimal changed-field values to restore; `after` is what the
|
|
27
|
+
* operation wrote, compared against current state to detect conflicts.
|
|
28
|
+
*/
|
|
29
|
+
export interface BulkOperationRevertRecord {
|
|
30
|
+
recordId: string;
|
|
31
|
+
before: Record<string, unknown>;
|
|
32
|
+
after: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* One timestamped lifecycle event in a bulk operation's log trail. The list
|
|
36
|
+
* grows as the operation moves through its lifecycle (created → started →
|
|
37
|
+
* completed/failed, plus notable milestones), giving the detail view a
|
|
38
|
+
* "what happened, when" record alongside the per-element `results`.
|
|
39
|
+
*/
|
|
40
|
+
export interface BulkOperationLogEntry {
|
|
41
|
+
/** ISO-8601 timestamp of the event. */
|
|
42
|
+
ts: string;
|
|
43
|
+
level: 'info' | 'warn' | 'error';
|
|
44
|
+
message: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class BulkOperation {
|
|
47
|
+
[OptionalProps]?: 'id' | 'type' | 'status' | 'processed' | 'succeeded' | 'skipped' | 'failed' | 'results' | 'logs' | 'error' | 'createdAt' | 'startedAt' | 'finishedAt' | 'reversible' | 'undoStatus';
|
|
48
|
+
id: string;
|
|
49
|
+
type: string;
|
|
50
|
+
status: BulkOperationStatus;
|
|
51
|
+
requestedByAdminUserId: string;
|
|
52
|
+
total: number;
|
|
53
|
+
processed: number;
|
|
54
|
+
succeeded: number;
|
|
55
|
+
skipped: number;
|
|
56
|
+
failed: number;
|
|
57
|
+
/** The original request payload — `{ productIds, fields }`. */
|
|
58
|
+
payload: BulkOperationPayload;
|
|
59
|
+
/** Per-product outcomes once finished (capped to keep the row small). */
|
|
60
|
+
results?: unknown | null;
|
|
61
|
+
/** Ordered lifecycle log entries (see {@link BulkOperationLogEntry}). */
|
|
62
|
+
logs?: BulkOperationLogEntry[] | null;
|
|
63
|
+
error?: string | null;
|
|
64
|
+
createdAt: Date;
|
|
65
|
+
startedAt?: Date | null;
|
|
66
|
+
finishedAt?: Date | null;
|
|
67
|
+
/** Per-record before/after snapshot captured for undo. Null ⇒ nothing to revert. */
|
|
68
|
+
revertState?: BulkOperationRevertRecord[] | null;
|
|
69
|
+
/** Whether this operation captured revert data and may be undone (FR-004). */
|
|
70
|
+
reversible: boolean;
|
|
71
|
+
/** Undo progress: `none` until undone, then `reverted` / `partially_reverted` (FR-014). */
|
|
72
|
+
undoStatus: BulkOperationUndoStatus;
|
|
73
|
+
/** When the undo completed. */
|
|
74
|
+
undoneAt?: Date | null;
|
|
75
|
+
/** Links the undo's own audited action back to this operation (FR-007). */
|
|
76
|
+
undoOperationId?: string | null;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=bulk-operation.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-operation.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/bulk-operation.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAIrF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEjF,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,UAAU,GAAG,oBAAoB,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAEa,aAAa;IACxB,CAAC,aAAa,CAAC,CAAC,EACZ,IAAI,GACJ,MAAM,GACN,QAAQ,GACR,WAAW,GACX,WAAW,GACX,SAAS,GACT,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,WAAW,GACX,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;IAGjB,EAAE,EAAE,MAAM,CAAgB;IAG1B,IAAI,EAAE,MAAM,CAAyB;IAIrC,MAAM,EAAE,mBAAmB,CAAa;IAIxC,sBAAsB,EAAG,MAAM,CAAC;IAGhC,KAAK,EAAG,MAAM,CAAC;IAGf,SAAS,SAAK;IAGd,SAAS,SAAK;IAGd,OAAO,SAAK;IAGZ,MAAM,SAAK;IAEX,+DAA+D;IAE/D,OAAO,EAAG,oBAAoB,CAAC;IAE/B,yEAAyE;IAEzE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEzB,yEAAyE;IAEzE,IAAI,CAAC,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAGtC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAItB,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAGxB,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAIzB,oFAAoF;IAEpF,WAAW,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAAC;IAEjD,8EAA8E;IAE9E,UAAU,UAAS;IAEnB,2FAA2F;IAE3F,UAAU,EAAE,uBAAuB,CAAU;IAE7C,+BAA+B;IAE/B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEvB,2EAA2E;IAE3E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
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
|
+
let BulkOperation = class BulkOperation {
|
|
14
|
+
[OptionalProps];
|
|
15
|
+
id = randomUUID();
|
|
16
|
+
type = 'product_bulk_update';
|
|
17
|
+
status = 'pending';
|
|
18
|
+
requestedByAdminUserId;
|
|
19
|
+
total;
|
|
20
|
+
processed = 0;
|
|
21
|
+
succeeded = 0;
|
|
22
|
+
skipped = 0;
|
|
23
|
+
failed = 0;
|
|
24
|
+
/** The original request payload — `{ productIds, fields }`. */
|
|
25
|
+
payload;
|
|
26
|
+
/** Per-product outcomes once finished (capped to keep the row small). */
|
|
27
|
+
results;
|
|
28
|
+
/** Ordered lifecycle log entries (see {@link BulkOperationLogEntry}). */
|
|
29
|
+
logs;
|
|
30
|
+
error;
|
|
31
|
+
createdAt = new Date();
|
|
32
|
+
startedAt;
|
|
33
|
+
finishedAt;
|
|
34
|
+
// ---- Feature 054 — reversible bulk operations (US2) --------------------
|
|
35
|
+
/** Per-record before/after snapshot captured for undo. Null ⇒ nothing to revert. */
|
|
36
|
+
revertState;
|
|
37
|
+
/** Whether this operation captured revert data and may be undone (FR-004). */
|
|
38
|
+
reversible = false;
|
|
39
|
+
/** Undo progress: `none` until undone, then `reverted` / `partially_reverted` (FR-014). */
|
|
40
|
+
undoStatus = 'none';
|
|
41
|
+
/** When the undo completed. */
|
|
42
|
+
undoneAt;
|
|
43
|
+
/** Links the undo's own audited action back to this operation (FR-007). */
|
|
44
|
+
undoOperationId;
|
|
45
|
+
};
|
|
46
|
+
__decorate([
|
|
47
|
+
PrimaryKey({ type: 'uuid' }),
|
|
48
|
+
__metadata("design:type", String)
|
|
49
|
+
], BulkOperation.prototype, "id", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
Property({ type: 'string', length: 64 }),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], BulkOperation.prototype, "type", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
Property({ type: 'string', length: 16 }),
|
|
56
|
+
Index(),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], BulkOperation.prototype, "status", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
Property({ type: 'uuid' }),
|
|
61
|
+
Index(),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], BulkOperation.prototype, "requestedByAdminUserId", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
Property({ type: 'integer' }),
|
|
66
|
+
__metadata("design:type", Number)
|
|
67
|
+
], BulkOperation.prototype, "total", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
Property({ type: 'integer' }),
|
|
70
|
+
__metadata("design:type", Object)
|
|
71
|
+
], BulkOperation.prototype, "processed", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
Property({ type: 'integer' }),
|
|
74
|
+
__metadata("design:type", Object)
|
|
75
|
+
], BulkOperation.prototype, "succeeded", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
Property({ type: 'integer' }),
|
|
78
|
+
__metadata("design:type", Object)
|
|
79
|
+
], BulkOperation.prototype, "skipped", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
Property({ type: 'integer' }),
|
|
82
|
+
__metadata("design:type", Object)
|
|
83
|
+
], BulkOperation.prototype, "failed", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
Property({ type: 'json' }),
|
|
86
|
+
__metadata("design:type", Object)
|
|
87
|
+
], BulkOperation.prototype, "payload", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
Property({ type: 'json', nullable: true }),
|
|
90
|
+
__metadata("design:type", Object)
|
|
91
|
+
], BulkOperation.prototype, "results", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
Property({ type: 'json', nullable: true }),
|
|
94
|
+
__metadata("design:type", Object)
|
|
95
|
+
], BulkOperation.prototype, "logs", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
Property({ type: 'text', nullable: true }),
|
|
98
|
+
__metadata("design:type", Object)
|
|
99
|
+
], BulkOperation.prototype, "error", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
Property({ type: 'datetime', onCreate: () => new Date() }),
|
|
102
|
+
Index(),
|
|
103
|
+
__metadata("design:type", Date)
|
|
104
|
+
], BulkOperation.prototype, "createdAt", void 0);
|
|
105
|
+
__decorate([
|
|
106
|
+
Property({ type: 'datetime', nullable: true }),
|
|
107
|
+
__metadata("design:type", Object)
|
|
108
|
+
], BulkOperation.prototype, "startedAt", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
Property({ type: 'datetime', nullable: true }),
|
|
111
|
+
__metadata("design:type", Object)
|
|
112
|
+
], BulkOperation.prototype, "finishedAt", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
Property({ type: 'json', nullable: true }),
|
|
115
|
+
__metadata("design:type", Object)
|
|
116
|
+
], BulkOperation.prototype, "revertState", void 0);
|
|
117
|
+
__decorate([
|
|
118
|
+
Property({ type: 'boolean' }),
|
|
119
|
+
__metadata("design:type", Object)
|
|
120
|
+
], BulkOperation.prototype, "reversible", void 0);
|
|
121
|
+
__decorate([
|
|
122
|
+
Property({ type: 'string', length: 24 }),
|
|
123
|
+
__metadata("design:type", String)
|
|
124
|
+
], BulkOperation.prototype, "undoStatus", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
Property({ type: 'datetime', nullable: true }),
|
|
127
|
+
__metadata("design:type", Object)
|
|
128
|
+
], BulkOperation.prototype, "undoneAt", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
Property({ type: 'uuid', nullable: true }),
|
|
131
|
+
__metadata("design:type", Object)
|
|
132
|
+
], BulkOperation.prototype, "undoOperationId", void 0);
|
|
133
|
+
BulkOperation = __decorate([
|
|
134
|
+
GlobalEntity(),
|
|
135
|
+
Entity({ tableName: 'catalog_bulk_operations' })
|
|
136
|
+
], BulkOperation);
|
|
137
|
+
export { BulkOperation };
|
|
138
|
+
//# sourceMappingURL=bulk-operation.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-operation.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/bulk-operation.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;AAqD7B,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,CAAC,aAAa,CAAC,CAeE;IAGjB,EAAE,GAAW,UAAU,EAAE,CAAC;IAG1B,IAAI,GAAW,qBAAqB,CAAC;IAIrC,MAAM,GAAwB,SAAS,CAAC;IAIxC,sBAAsB,CAAU;IAGhC,KAAK,CAAU;IAGf,SAAS,GAAG,CAAC,CAAC;IAGd,SAAS,GAAG,CAAC,CAAC;IAGd,OAAO,GAAG,CAAC,CAAC;IAGZ,MAAM,GAAG,CAAC,CAAC;IAEX,+DAA+D;IAE/D,OAAO,CAAwB;IAE/B,yEAAyE;IAEzE,OAAO,CAAkB;IAEzB,yEAAyE;IAEzE,IAAI,CAAkC;IAGtC,KAAK,CAAiB;IAItB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,CAAe;IAGxB,UAAU,CAAe;IAEzB,2EAA2E;IAE3E,oFAAoF;IAEpF,WAAW,CAAsC;IAEjD,8EAA8E;IAE9E,UAAU,GAAG,KAAK,CAAC;IAEnB,2FAA2F;IAE3F,UAAU,GAA4B,MAAM,CAAC;IAE7C,+BAA+B;IAE/B,QAAQ,CAAe;IAEvB,2EAA2E;IAE3E,eAAe,CAAiB;CACjC,CAAA;AA1EC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yCACH;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;2CACJ;AAIrC;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,KAAK,EAAE;;6CACgC;AAIxC;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE;;6DACwB;AAGhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;4CACf;AAGf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDAChB;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDAChB;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CAClB;AAGZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;6CACnB;AAIX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CACI;AAI/B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAClB;AAIzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACL;AAGtC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACrB;AAItB;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;IAC1D,KAAK,EAAE;8BACG,IAAI;gDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACvB;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACtB;AAMzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACM;AAIjD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;iDACX;AAInB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;iDACI;AAI7C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACxB;AAIvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sDACX;AA5FrB,aAAa;IAFzB,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC;GACpC,aAAa,CA6FzB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* BundleSlotOption — product the buyer can pick inside a BundleSlot
|
|
4
|
+
* (feature 002 US5, data-model.md §2.9).
|
|
5
|
+
*
|
|
6
|
+
* DB-level guarantees (migration 023):
|
|
7
|
+
* - UNIQUE (slot_id, option_product_id) — same product can't appear twice in a slot
|
|
8
|
+
* - CHECK default_quantity > 0
|
|
9
|
+
*
|
|
10
|
+
* The "option product can't itself be grouped/bundle" rule is enforced
|
|
11
|
+
* at the service layer (research R-8).
|
|
12
|
+
*/
|
|
13
|
+
export declare class BundleSlotOption {
|
|
14
|
+
[OptionalProps]?: 'id' | 'defaultQuantity' | 'position' | 'createdAt' | 'updatedAt';
|
|
15
|
+
id: string;
|
|
16
|
+
slotId: string;
|
|
17
|
+
optionProductId: string;
|
|
18
|
+
defaultQuantity: number;
|
|
19
|
+
position: number;
|
|
20
|
+
createdAt: Date;
|
|
21
|
+
updatedAt: Date;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=bundle-slot-option.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-slot-option.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/bundle-slot-option.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAIrF;;;;;;;;;;GAUG;AACH,qBAEa,gBAAgB;IAC3B,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,iBAAiB,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IAGpF,EAAE,EAAE,MAAM,CAAgB;IAI1B,MAAM,EAAG,MAAM,CAAC;IAGhB,eAAe,EAAG,MAAM,CAAC;IAGzB,eAAe,EAAE,MAAM,CAAK;IAG5B,QAAQ,EAAE,MAAM,CAAK;IAGrB,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 } from '@mikro-orm/core';
|
|
11
|
+
import { GlobalEntity } from '@endora-commerce/platform/tenancy';
|
|
12
|
+
import { randomUUID } from 'crypto';
|
|
13
|
+
/**
|
|
14
|
+
* BundleSlotOption — product the buyer can pick inside a BundleSlot
|
|
15
|
+
* (feature 002 US5, data-model.md §2.9).
|
|
16
|
+
*
|
|
17
|
+
* DB-level guarantees (migration 023):
|
|
18
|
+
* - UNIQUE (slot_id, option_product_id) — same product can't appear twice in a slot
|
|
19
|
+
* - CHECK default_quantity > 0
|
|
20
|
+
*
|
|
21
|
+
* The "option product can't itself be grouped/bundle" rule is enforced
|
|
22
|
+
* at the service layer (research R-8).
|
|
23
|
+
*/
|
|
24
|
+
let BundleSlotOption = class BundleSlotOption {
|
|
25
|
+
[OptionalProps];
|
|
26
|
+
id = randomUUID();
|
|
27
|
+
slotId;
|
|
28
|
+
optionProductId;
|
|
29
|
+
defaultQuantity = 1;
|
|
30
|
+
position = 0;
|
|
31
|
+
createdAt = new Date();
|
|
32
|
+
updatedAt = new Date();
|
|
33
|
+
};
|
|
34
|
+
__decorate([
|
|
35
|
+
PrimaryKey({ type: 'uuid' }),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], BundleSlotOption.prototype, "id", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
Property({ type: 'uuid' }),
|
|
40
|
+
Index(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], BundleSlotOption.prototype, "slotId", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
Property({ type: 'uuid' }),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], BundleSlotOption.prototype, "optionProductId", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
Property({ type: 'integer' }),
|
|
49
|
+
__metadata("design:type", Number)
|
|
50
|
+
], BundleSlotOption.prototype, "defaultQuantity", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
Property({ type: 'integer' }),
|
|
53
|
+
__metadata("design:type", Number)
|
|
54
|
+
], BundleSlotOption.prototype, "position", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
Property({ type: 'datetime', onCreate: () => new Date() }),
|
|
57
|
+
__metadata("design:type", Date)
|
|
58
|
+
], BundleSlotOption.prototype, "createdAt", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
Property({ type: 'datetime', onUpdate: () => new Date() }),
|
|
61
|
+
__metadata("design:type", Date)
|
|
62
|
+
], BundleSlotOption.prototype, "updatedAt", void 0);
|
|
63
|
+
BundleSlotOption = __decorate([
|
|
64
|
+
GlobalEntity(),
|
|
65
|
+
Entity({ tableName: 'bundle_slot_options' })
|
|
66
|
+
], BundleSlotOption);
|
|
67
|
+
export { BundleSlotOption };
|
|
68
|
+
//# sourceMappingURL=bundle-slot-option.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-slot-option.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/bundle-slot-option.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;;;;;;;;;;GAUG;AAGI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,CAAC,aAAa,CAAC,CAAqE;IAGpF,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,MAAM,CAAU;IAGhB,eAAe,CAAU;IAGzB,eAAe,GAAW,CAAC,CAAC;IAG5B,QAAQ,GAAW,CAAC,CAAC;IAGrB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AApBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE;;gDACQ;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yDACF;AAGzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;yDACF;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kDACT;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;mDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;mDAAc;AAvBlB,gBAAgB;IAF5B,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;GAChC,gBAAgB,CAwB5B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OptionalProps } from '@mikro-orm/core';
|
|
2
|
+
/**
|
|
3
|
+
* BundleSlot — named slot inside a bundle product (feature 002 US5,
|
|
4
|
+
* data-model.md §2.9). Each slot has a min/max quantity range and one
|
|
5
|
+
* or more `BundleSlotOption` rows that the buyer chooses between.
|
|
6
|
+
*
|
|
7
|
+
* `name` is multilingual jsonb so storefront localization works without
|
|
8
|
+
* a separate translation table (foundation pattern, same as Product).
|
|
9
|
+
*
|
|
10
|
+
* DB-level guarantees (migration 023):
|
|
11
|
+
* - CHECK min_quantity <= max_quantity
|
|
12
|
+
* - CHECK min_quantity >= 0, max_quantity > 0
|
|
13
|
+
*/
|
|
14
|
+
export declare class BundleSlot {
|
|
15
|
+
[OptionalProps]?: 'id' | 'minQuantity' | 'position' | 'createdAt' | 'updatedAt';
|
|
16
|
+
id: string;
|
|
17
|
+
parentProductId: string;
|
|
18
|
+
name: Record<string, string>;
|
|
19
|
+
minQuantity: number;
|
|
20
|
+
maxQuantity: number;
|
|
21
|
+
position: number;
|
|
22
|
+
createdAt: Date;
|
|
23
|
+
updatedAt: Date;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=bundle-slot.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-slot.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/bundle-slot.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAIrF;;;;;;;;;;;GAWG;AACH,qBAEa,UAAU;IACrB,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IAGhF,EAAE,EAAE,MAAM,CAAgB;IAI1B,eAAe,EAAG,MAAM,CAAC;IAGzB,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG9B,WAAW,EAAE,MAAM,CAAK;IAGxB,WAAW,EAAG,MAAM,CAAC;IAGrB,QAAQ,EAAE,MAAM,CAAK;IAGrB,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
|