@open-mercato/core 0.4.5-develop-f4858e0ef3 → 0.4.5-develop-4849712ccb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/generated/entities/catalog_product/index.js +16 -0
  2. package/dist/generated/entities/catalog_product/index.js.map +2 -2
  3. package/dist/generated/entities/catalog_product_unit_conversion/index.js +27 -0
  4. package/dist/generated/entities/catalog_product_unit_conversion/index.js.map +7 -0
  5. package/dist/generated/entities/sales_credit_memo_line/index.js +7 -1
  6. package/dist/generated/entities/sales_credit_memo_line/index.js.map +2 -2
  7. package/dist/generated/entities/sales_invoice_line/index.js +7 -1
  8. package/dist/generated/entities/sales_invoice_line/index.js.map +2 -2
  9. package/dist/generated/entities/sales_order_line/index.js +6 -0
  10. package/dist/generated/entities/sales_order_line/index.js.map +2 -2
  11. package/dist/generated/entities/sales_quote_line/index.js +6 -0
  12. package/dist/generated/entities/sales_quote_line/index.js.map +2 -2
  13. package/dist/generated/entities.ids.generated.js +1 -0
  14. package/dist/generated/entities.ids.generated.js.map +2 -2
  15. package/dist/generated/entity-fields-registry.js +2 -0
  16. package/dist/generated/entity-fields-registry.js.map +2 -2
  17. package/dist/modules/catalog/api/prices/route.js +123 -8
  18. package/dist/modules/catalog/api/prices/route.js.map +2 -2
  19. package/dist/modules/catalog/api/product-unit-conversions/route.js +194 -0
  20. package/dist/modules/catalog/api/product-unit-conversions/route.js.map +7 -0
  21. package/dist/modules/catalog/api/products/route.js +351 -201
  22. package/dist/modules/catalog/api/products/route.js.map +2 -2
  23. package/dist/modules/catalog/backend/catalog/products/[id]/page.js +1267 -497
  24. package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
  25. package/dist/modules/catalog/backend/catalog/products/create/page.js +733 -210
  26. package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
  27. package/dist/modules/catalog/commands/index.js +1 -0
  28. package/dist/modules/catalog/commands/index.js.map +2 -2
  29. package/dist/modules/catalog/commands/productUnitConversions.js +503 -0
  30. package/dist/modules/catalog/commands/productUnitConversions.js.map +7 -0
  31. package/dist/modules/catalog/commands/products.js +355 -73
  32. package/dist/modules/catalog/commands/products.js.map +2 -2
  33. package/dist/modules/catalog/commands/shared.js +18 -4
  34. package/dist/modules/catalog/commands/shared.js.map +2 -2
  35. package/dist/modules/catalog/components/products/ProductUomSection.js +591 -0
  36. package/dist/modules/catalog/components/products/ProductUomSection.js.map +7 -0
  37. package/dist/modules/catalog/components/products/productForm.js +66 -5
  38. package/dist/modules/catalog/components/products/productForm.js.map +2 -2
  39. package/dist/modules/catalog/components/products/productFormUtils.js +68 -0
  40. package/dist/modules/catalog/components/products/productFormUtils.js.map +7 -0
  41. package/dist/modules/catalog/data/entities.js +86 -0
  42. package/dist/modules/catalog/data/entities.js.map +2 -2
  43. package/dist/modules/catalog/data/validators.js +65 -3
  44. package/dist/modules/catalog/data/validators.js.map +2 -2
  45. package/dist/modules/catalog/events.js +3 -0
  46. package/dist/modules/catalog/events.js.map +2 -2
  47. package/dist/modules/catalog/lib/unitCodes.js +7 -0
  48. package/dist/modules/catalog/lib/unitCodes.js.map +7 -0
  49. package/dist/modules/catalog/lib/unitResolution.js +53 -0
  50. package/dist/modules/catalog/lib/unitResolution.js.map +7 -0
  51. package/dist/modules/catalog/migrations/Migration20260218225422.js +19 -0
  52. package/dist/modules/catalog/migrations/Migration20260218225422.js.map +7 -0
  53. package/dist/modules/catalog/migrations/Migration20260219084500.js +27 -0
  54. package/dist/modules/catalog/migrations/Migration20260219084500.js.map +7 -0
  55. package/dist/modules/catalog/search.js +69 -1
  56. package/dist/modules/catalog/search.js.map +2 -2
  57. package/dist/modules/catalog/seed/examples.js +91 -42
  58. package/dist/modules/catalog/seed/examples.js.map +2 -2
  59. package/dist/modules/dashboards/seed/analytics.js +3 -0
  60. package/dist/modules/dashboards/seed/analytics.js.map +2 -2
  61. package/dist/modules/sales/api/order-lines/route.js +98 -15
  62. package/dist/modules/sales/api/order-lines/route.js.map +2 -2
  63. package/dist/modules/sales/api/quote-lines/route.js +101 -14
  64. package/dist/modules/sales/api/quote-lines/route.js.map +2 -2
  65. package/dist/modules/sales/api/quotes/public/[token]/route.js +87 -12
  66. package/dist/modules/sales/api/quotes/public/[token]/route.js.map +2 -2
  67. package/dist/modules/sales/commands/documents.js +1424 -260
  68. package/dist/modules/sales/commands/documents.js.map +3 -3
  69. package/dist/modules/sales/commands/shared.js +6 -2
  70. package/dist/modules/sales/commands/shared.js.map +2 -2
  71. package/dist/modules/sales/components/documents/ItemsSection.js +216 -86
  72. package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
  73. package/dist/modules/sales/components/documents/LineItemDialog.js +913 -241
  74. package/dist/modules/sales/components/documents/LineItemDialog.js.map +3 -3
  75. package/dist/modules/sales/components/documents/ShipmentsSection.js +15 -3
  76. package/dist/modules/sales/components/documents/ShipmentsSection.js.map +2 -2
  77. package/dist/modules/sales/data/entities.js +59 -3
  78. package/dist/modules/sales/data/entities.js.map +2 -2
  79. package/dist/modules/sales/data/validators.js +35 -0
  80. package/dist/modules/sales/data/validators.js.map +2 -2
  81. package/dist/modules/sales/frontend/quote/[token]/page.js +15 -1
  82. package/dist/modules/sales/frontend/quote/[token]/page.js.map +2 -2
  83. package/dist/modules/sales/migrations/Migration20260218225423.js +31 -0
  84. package/dist/modules/sales/migrations/Migration20260218225423.js.map +7 -0
  85. package/dist/modules/sales/migrations/Migration20260219084501.js +71 -0
  86. package/dist/modules/sales/migrations/Migration20260219084501.js.map +7 -0
  87. package/dist/modules/sales/search.js +28 -0
  88. package/dist/modules/sales/search.js.map +2 -2
  89. package/dist/modules/sales/seed/examples.js +14 -1
  90. package/dist/modules/sales/seed/examples.js.map +2 -2
  91. package/dist/modules/sales/widgets/injection/document-history/widget.client.js +1 -1
  92. package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
  93. package/generated/entities/catalog_product/index.ts +8 -0
  94. package/generated/entities/catalog_product_unit_conversion/index.ts +12 -0
  95. package/generated/entities/sales_credit_memo_line/index.ts +3 -0
  96. package/generated/entities/sales_invoice_line/index.ts +3 -0
  97. package/generated/entities/sales_order_line/index.ts +3 -0
  98. package/generated/entities/sales_quote_line/index.ts +3 -0
  99. package/generated/entities.ids.generated.ts +1 -0
  100. package/generated/entity-fields-registry.ts +2 -0
  101. package/package.json +2 -2
  102. package/src/modules/auth/i18n/de.json +1 -1
  103. package/src/modules/auth/i18n/en.json +1 -1
  104. package/src/modules/auth/i18n/es.json +1 -1
  105. package/src/modules/auth/i18n/pl.json +1 -1
  106. package/src/modules/catalog/api/prices/route.ts +213 -81
  107. package/src/modules/catalog/api/product-unit-conversions/route.ts +195 -0
  108. package/src/modules/catalog/api/products/route.ts +638 -402
  109. package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +2085 -1072
  110. package/src/modules/catalog/backend/catalog/products/create/page.tsx +1288 -593
  111. package/src/modules/catalog/commands/index.ts +1 -0
  112. package/src/modules/catalog/commands/productUnitConversions.ts +626 -0
  113. package/src/modules/catalog/commands/products.ts +1151 -693
  114. package/src/modules/catalog/commands/shared.ts +19 -5
  115. package/src/modules/catalog/components/products/ProductUomSection.tsx +745 -0
  116. package/src/modules/catalog/components/products/productForm.ts +369 -256
  117. package/src/modules/catalog/components/products/productFormUtils.ts +82 -0
  118. package/src/modules/catalog/data/entities.ts +82 -1
  119. package/src/modules/catalog/data/validators.ts +118 -34
  120. package/src/modules/catalog/events.ts +3 -0
  121. package/src/modules/catalog/i18n/de.json +56 -0
  122. package/src/modules/catalog/i18n/en.json +56 -0
  123. package/src/modules/catalog/i18n/es.json +56 -0
  124. package/src/modules/catalog/i18n/pl.json +56 -0
  125. package/src/modules/catalog/lib/unitCodes.ts +1 -0
  126. package/src/modules/catalog/lib/unitResolution.ts +62 -0
  127. package/src/modules/catalog/migrations/.snapshot-open-mercato.json +245 -0
  128. package/src/modules/catalog/migrations/Migration20260218225422.ts +21 -0
  129. package/src/modules/catalog/migrations/Migration20260219084500.ts +26 -0
  130. package/src/modules/catalog/search.ts +73 -1
  131. package/src/modules/catalog/seed/examples.ts +552 -479
  132. package/src/modules/dashboards/i18n/de.json +1 -1
  133. package/src/modules/dashboards/i18n/en.json +1 -1
  134. package/src/modules/dashboards/i18n/es.json +1 -1
  135. package/src/modules/dashboards/i18n/pl.json +1 -1
  136. package/src/modules/dashboards/seed/analytics.ts +3 -0
  137. package/src/modules/sales/api/order-lines/route.ts +158 -68
  138. package/src/modules/sales/api/quote-lines/route.ts +161 -67
  139. package/src/modules/sales/api/quotes/public/[token]/route.ts +122 -36
  140. package/src/modules/sales/commands/documents.ts +4250 -2424
  141. package/src/modules/sales/commands/shared.ts +7 -2
  142. package/src/modules/sales/components/documents/ItemsSection.tsx +580 -310
  143. package/src/modules/sales/components/documents/LineItemDialog.tsx +1988 -833
  144. package/src/modules/sales/components/documents/ShipmentsSection.tsx +17 -3
  145. package/src/modules/sales/components/documents/lineItemTypes.ts +6 -0
  146. package/src/modules/sales/data/entities.ts +53 -0
  147. package/src/modules/sales/data/validators.ts +36 -0
  148. package/src/modules/sales/frontend/quote/[token]/page.tsx +25 -1
  149. package/src/modules/sales/i18n/de.json +23 -3
  150. package/src/modules/sales/i18n/en.json +23 -3
  151. package/src/modules/sales/i18n/es.json +23 -3
  152. package/src/modules/sales/i18n/pl.json +23 -3
  153. package/src/modules/sales/lib/types.ts +30 -0
  154. package/src/modules/sales/migrations/.snapshot-open-mercato.json +172 -0
  155. package/src/modules/sales/migrations/Migration20260218225423.ts +37 -0
  156. package/src/modules/sales/migrations/Migration20260219084501.ts +73 -0
  157. package/src/modules/sales/search.ts +28 -0
  158. package/src/modules/sales/seed/examples.ts +20 -1
  159. package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +1 -1
  160. package/src/modules/workflows/i18n/de.json +4 -4
  161. package/src/modules/workflows/i18n/en.json +4 -4
  162. package/src/modules/workflows/i18n/es.json +4 -4
  163. package/src/modules/workflows/i18n/pl.json +4 -4
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/catalog/data/entities.ts"],
4
- "sourcesContent": ["import {\n Collection,\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n OptionalProps,\n PrimaryKey,\n Property,\n Unique,\n} from '@mikro-orm/core'\nimport type {\n CatalogPriceDisplayMode,\n CatalogProductOptionSchema,\n CatalogProductRelationType,\n CatalogProductType,\n} from './types'\n\n@Entity({ tableName: 'catalog_product_option_schemas' })\n@Index({\n name: 'catalog_product_option_schemas_scope_idx',\n properties: ['organizationId', 'tenantId'],\n})\n@Unique({\n name: 'catalog_product_option_schemas_code_unique',\n properties: ['organizationId', 'tenantId', 'code'],\n})\nexport class CatalogOptionSchemaTemplate {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ name: 'code', type: 'text' })\n code!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'schema', type: 'jsonb' })\n schema!: CatalogProductOptionSchema\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n@Entity({ tableName: 'catalog_products' })\n@Index({ name: 'catalog_products_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_products_sku_scope_unique', properties: ['organizationId', 'tenantId', 'sku'] })\n@Unique({ name: 'catalog_products_handle_scope_unique', properties: ['organizationId', 'tenantId', 'handle'] })\nexport class CatalogProduct {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n title!: string\n\n @Property({ type: 'text', nullable: true })\n subtitle?: string | null\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'text', nullable: true })\n sku?: string | null\n\n @Property({ type: 'text', nullable: true })\n handle?: string | null\n\n @Property({ name: 'tax_rate_id', type: 'uuid', nullable: true })\n taxRateId?: string | null\n\n @Property({ name: 'tax_rate', type: 'numeric', precision: 7, scale: 4, nullable: true })\n taxRate?: string | null\n\n @Property({ name: 'product_type', type: 'text', default: 'simple' })\n productType: CatalogProductType = 'simple'\n\n @Property({ name: 'status_entry_id', type: 'uuid', nullable: true })\n statusEntryId?: string | null\n\n @Property({ name: 'primary_currency_code', type: 'text', nullable: true })\n primaryCurrencyCode?: string | null\n\n @Property({ name: 'default_unit', type: 'text', nullable: true })\n defaultUnit?: string | null\n\n @Property({ name: 'default_media_id', type: 'uuid', nullable: true })\n defaultMediaId?: string | null\n\n @Property({ name: 'default_media_url', type: 'text', nullable: true })\n defaultMediaUrl?: string | null\n\n @Property({ name: 'weight_value', type: 'numeric', precision: 16, scale: 4, nullable: true })\n weightValue?: string | null\n\n @Property({ name: 'weight_unit', type: 'text', nullable: true })\n weightUnit?: string | null\n\n @Property({ name: 'dimensions', type: 'jsonb', nullable: true })\n dimensions?: {\n width?: number | null\n height?: number | null\n depth?: number | null\n unit?: string | null\n } | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'custom_fieldset_code', type: 'text', nullable: true })\n customFieldsetCode?: string | null\n\n @ManyToOne(() => CatalogOptionSchemaTemplate, {\n fieldName: 'option_schema_id',\n nullable: true,\n deleteRule: 'set null',\n })\n optionSchemaTemplate?: CatalogOptionSchemaTemplate | null\n\n @Property({ name: 'is_configurable', type: 'boolean', default: false })\n isConfigurable: boolean = false\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductVariant, (variant) => variant.product)\n variants = new Collection<CatalogProductVariant>(this)\n\n @OneToMany(() => CatalogOffer, (offer) => offer.product)\n offers = new Collection<CatalogOffer>(this)\n\n @OneToMany(() => CatalogProductCategoryAssignment, (assignment) => assignment.product)\n categoryAssignments = new Collection<CatalogProductCategoryAssignment>(this)\n\n @OneToMany(() => CatalogProductTagAssignment, (assignment) => assignment.product)\n tagAssignments = new Collection<CatalogProductTagAssignment>(this)\n\n}\n@Entity({ tableName: 'catalog_product_categories' })\n@Index({ name: 'catalog_product_categories_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_product_categories_slug_unique', properties: ['organizationId', 'tenantId', 'slug'] })\nexport class CatalogProductCategory {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n slug?: string | null\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'parent_id', type: 'uuid', nullable: true })\n parentId?: string | null\n\n @Property({ name: 'root_id', type: 'uuid', nullable: true })\n rootId?: string | null\n\n @Property({ name: 'tree_path', type: 'text', nullable: true })\n treePath?: string | null\n\n @Property({ type: 'int', default: 0 })\n depth: number = 0\n\n @Property({ name: 'ancestor_ids', type: 'jsonb', default: [], nullable: false })\n ancestorIds: string[] = []\n\n @Property({ name: 'child_ids', type: 'jsonb', default: [], nullable: false })\n childIds: string[] = []\n\n @Property({ name: 'descendant_ids', type: 'jsonb', default: [], nullable: false })\n descendantIds: string[] = []\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductCategoryAssignment, (assignment) => assignment.category)\n assignments = new Collection<CatalogProductCategoryAssignment>(this)\n}\n\n@Entity({ tableName: 'catalog_product_category_assignments' })\n@Index({\n name: 'catalog_product_category_assignments_scope_idx',\n properties: ['organizationId', 'tenantId'],\n})\n@Unique({\n name: 'catalog_product_category_assignments_unique',\n properties: ['product', 'category'],\n})\nexport class CatalogProductCategoryAssignment {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @ManyToOne(() => CatalogProductCategory, { fieldName: 'category_id', deleteRule: 'cascade' })\n category!: CatalogProductCategory\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'position', type: 'int', default: 0 })\n position: number = 0\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n@Entity({ tableName: 'catalog_product_tags' })\n@Index({ name: 'catalog_product_tags_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_product_tags_slug_unique', properties: ['organizationId', 'tenantId', 'slug'] })\nexport class CatalogProductTag {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n label!: string\n\n @Property({ type: 'text' })\n slug!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @OneToMany(() => CatalogProductTagAssignment, (assignment) => assignment.tag)\n assignments = new Collection<CatalogProductTagAssignment>(this)\n}\n\n@Entity({ tableName: 'catalog_product_tag_assignments' })\n@Index({ name: 'catalog_product_tag_assignments_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_product_tag_assignments_unique', properties: ['product', 'tag'] })\nexport class CatalogProductTagAssignment {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @ManyToOne(() => CatalogProductTag, { fieldName: 'tag_id', deleteRule: 'cascade' })\n tag!: CatalogProductTag\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n@Entity({ tableName: 'catalog_product_offers' })\n@Index({ name: 'catalog_product_offers_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({\n name: 'catalog_product_offers_product_channel_unique',\n properties: ['product', 'organizationId', 'tenantId', 'channelId'],\n})\nexport class CatalogOffer {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'channel_id', type: 'uuid' })\n channelId!: string\n\n @Property({ type: 'text' })\n title!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'default_media_id', type: 'uuid', nullable: true })\n defaultMediaId?: string | null\n\n @Property({ name: 'default_media_url', type: 'text', nullable: true })\n defaultMediaUrl?: string | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductPrice, (price) => price.offer)\n prices = new Collection<CatalogProductPrice>(this)\n}\n\n@Entity({ tableName: 'catalog_product_variants' })\n@Index({ name: 'catalog_product_variants_scope_idx', properties: ['product', 'organizationId', 'tenantId'] })\n@Unique({\n name: 'catalog_product_variants_sku_unique',\n properties: ['organizationId', 'tenantId', 'sku'],\n})\nexport class CatalogProductVariant {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id' })\n product!: CatalogProduct\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text', nullable: true })\n name?: string | null\n\n @Property({ type: 'text', nullable: true })\n sku?: string | null\n\n @Property({ type: 'text', nullable: true })\n barcode?: string | null\n\n @Property({ type: 'text', nullable: true })\n statusEntryId?: string | null\n\n @Property({ name: 'is_default', type: 'boolean', default: false })\n isDefault: boolean = false\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'weight_value', type: 'numeric', precision: 16, scale: 4, nullable: true })\n weightValue?: string | null\n\n @Property({ name: 'weight_unit', type: 'text', nullable: true })\n weightUnit?: string | null\n\n @Property({ name: 'dimensions', type: 'jsonb', nullable: true })\n dimensions?: {\n width?: number | null\n height?: number | null\n depth?: number | null\n unit?: string | null\n } | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'tax_rate_id', type: 'uuid', nullable: true })\n taxRateId?: string | null\n\n @Property({ name: 'tax_rate', type: 'numeric', precision: 7, scale: 4, nullable: true })\n taxRate?: string | null\n\n @Property({ name: 'option_values', type: 'jsonb', nullable: true })\n optionValues?: Record<string, string> | null\n\n @Property({ name: 'custom_fieldset_code', type: 'text', nullable: true })\n customFieldsetCode?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductPrice, (price) => price.variant)\n prices = new Collection<CatalogProductPrice>(this)\n\n\n @OneToMany(() => CatalogProductVariantRelation, (relation) => relation.parentVariant)\n componentRelations = new Collection<CatalogProductVariantRelation>(this)\n\n @OneToMany(() => CatalogProductVariantRelation, (relation) => relation.childVariant)\n parentRelations = new Collection<CatalogProductVariantRelation>(this)\n\n}\n\n@Entity({ tableName: 'catalog_product_variant_relations' })\n@Index({\n name: 'catalog_product_variant_relations_parent_idx',\n properties: ['parentVariant', 'organizationId', 'tenantId'],\n})\n@Index({\n name: 'catalog_product_variant_relations_child_idx',\n properties: ['childVariant', 'organizationId', 'tenantId'],\n})\n@Index({\n name: 'catalog_product_variant_relations_child_product_idx',\n properties: ['childProduct', 'organizationId', 'tenantId'],\n})\nexport class CatalogProductVariantRelation {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProductVariant, {\n fieldName: 'parent_variant_id',\n deleteRule: 'cascade',\n })\n parentVariant!: CatalogProductVariant\n\n @ManyToOne(() => CatalogProductVariant, {\n fieldName: 'child_variant_id',\n deleteRule: 'cascade',\n nullable: true,\n })\n childVariant?: CatalogProductVariant | null\n\n @ManyToOne(() => CatalogProduct, {\n fieldName: 'child_product_id',\n nullable: true,\n deleteRule: 'cascade',\n })\n childProduct?: CatalogProduct | null\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'relation_type', type: 'text' })\n relationType: CatalogProductRelationType = 'grouped'\n\n @Property({ name: 'is_required', type: 'boolean', default: false })\n isRequired: boolean = false\n\n @Property({ name: 'min_quantity', type: 'integer', nullable: true })\n minQuantity?: number | null\n\n @Property({ name: 'max_quantity', type: 'integer', nullable: true })\n maxQuantity?: number | null\n\n @Property({ type: 'integer', default: 0 })\n position: number = 0\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n@Entity({ tableName: 'catalog_price_kinds' })\n@Index({\n name: 'catalog_price_kinds_tenant_idx',\n properties: ['tenantId'],\n})\n@Unique({\n name: 'catalog_price_kinds_code_tenant_unique',\n properties: ['tenantId', 'code'],\n})\nexport class CatalogPriceKind {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid', nullable: true })\n organizationId?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n title!: string\n\n @Property({ name: 'display_mode', type: 'text', default: 'excluding-tax' })\n displayMode: CatalogPriceDisplayMode = 'excluding-tax'\n\n @Property({ name: 'currency_code', type: 'text', nullable: true })\n currencyCode?: string | null\n\n @Property({ name: 'is_promotion', type: 'boolean', default: false })\n isPromotion: boolean = false\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductPrice, (price) => price.priceKind)\n prices = new Collection<CatalogProductPrice>(this)\n}\n\n@Entity({ tableName: 'catalog_product_variant_prices' })\n@Index({\n name: 'catalog_product_variant_prices_variant_scope_idx',\n properties: ['variant', 'organizationId', 'tenantId'],\n})\n@Index({\n name: 'catalog_product_variant_prices_product_scope_idx',\n properties: ['product', 'organizationId', 'tenantId'],\n})\nexport class CatalogProductPrice {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProductVariant, { fieldName: 'variant_id', nullable: true })\n variant?: CatalogProductVariant | null\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', nullable: true })\n product?: CatalogProduct | null\n\n @ManyToOne(() => CatalogOffer, { fieldName: 'offer_id', nullable: true })\n offer?: CatalogOffer | null\n\n @ManyToOne(() => CatalogPriceKind, { fieldName: 'price_kind_id', deleteRule: 'restrict' })\n priceKind!: CatalogPriceKind\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'currency_code', type: 'text' })\n currencyCode!: string\n\n @Property({ name: 'kind', type: 'text', default: 'regular' })\n kind: string = 'regular'\n\n @Property({ name: 'min_quantity', type: 'integer', default: 1 })\n minQuantity: number = 1\n\n @Property({ name: 'max_quantity', type: 'integer', nullable: true })\n maxQuantity?: number | null\n\n @Property({ name: 'unit_price_net', type: 'numeric', precision: 16, scale: 4, nullable: true })\n unitPriceNet?: string | null\n\n @Property({ name: 'unit_price_gross', type: 'numeric', precision: 16, scale: 4, nullable: true })\n unitPriceGross?: string | null\n\n @Property({ name: 'tax_rate', type: 'numeric', precision: 7, scale: 4, nullable: true })\n taxRate?: string | null\n\n @Property({ name: 'tax_amount', type: 'numeric', precision: 16, scale: 4, nullable: true })\n taxAmount?: string | null\n\n @Property({ name: 'channel_id', type: 'uuid', nullable: true })\n channelId?: string | null\n\n @Property({ name: 'user_id', type: 'uuid', nullable: true })\n userId?: string | null\n\n @Property({ name: 'user_group_id', type: 'uuid', nullable: true })\n userGroupId?: string | null\n\n @Property({ name: 'customer_id', type: 'uuid', nullable: true })\n customerId?: string | null\n\n @Property({ name: 'customer_group_id', type: 'uuid', nullable: true })\n customerGroupId?: string | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'starts_at', type: Date, nullable: true })\n startsAt?: Date | null\n\n @Property({ name: 'ends_at', type: Date, nullable: true })\n endsAt?: Date | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n Collection,\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n OptionalProps,\n PrimaryKey,\n Property,\n Unique,\n} from '@mikro-orm/core'\nimport type {\n CatalogPriceDisplayMode,\n CatalogProductOptionSchema,\n CatalogProductRelationType,\n CatalogProductType,\n} from './types'\nimport type { ReferenceUnitCode } from '@open-mercato/shared/lib/units/unitCodes'\n\n@Entity({ tableName: 'catalog_product_option_schemas' })\n@Index({\n name: 'catalog_product_option_schemas_scope_idx',\n properties: ['organizationId', 'tenantId'],\n})\n@Unique({\n name: 'catalog_product_option_schemas_code_unique',\n properties: ['organizationId', 'tenantId', 'code'],\n})\nexport class CatalogOptionSchemaTemplate {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ name: 'code', type: 'text' })\n code!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'schema', type: 'jsonb' })\n schema!: CatalogProductOptionSchema\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n@Entity({ tableName: 'catalog_products' })\n@Index({ name: 'catalog_products_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_products_sku_scope_unique', properties: ['organizationId', 'tenantId', 'sku'] })\n@Unique({ name: 'catalog_products_handle_scope_unique', properties: ['organizationId', 'tenantId', 'handle'] })\nexport class CatalogProduct {\n [OptionalProps]?:\n | 'createdAt'\n | 'updatedAt'\n | 'deletedAt'\n | 'defaultSalesUnitQuantity'\n | 'uomRoundingScale'\n | 'uomRoundingMode'\n | 'unitPriceEnabled'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n title!: string\n\n @Property({ type: 'text', nullable: true })\n subtitle?: string | null\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'text', nullable: true })\n sku?: string | null\n\n @Property({ type: 'text', nullable: true })\n handle?: string | null\n\n @Property({ name: 'tax_rate_id', type: 'uuid', nullable: true })\n taxRateId?: string | null\n\n @Property({ name: 'tax_rate', type: 'numeric', precision: 7, scale: 4, nullable: true })\n taxRate?: string | null\n\n @Property({ name: 'product_type', type: 'text', default: 'simple' })\n productType: CatalogProductType = 'simple'\n\n @Property({ name: 'status_entry_id', type: 'uuid', nullable: true })\n statusEntryId?: string | null\n\n @Property({ name: 'primary_currency_code', type: 'text', nullable: true })\n primaryCurrencyCode?: string | null\n\n @Property({ name: 'default_unit', type: 'text', nullable: true })\n defaultUnit?: string | null\n\n @Property({ name: 'default_sales_unit', type: 'text', nullable: true })\n defaultSalesUnit?: string | null\n\n @Property({ name: 'default_sales_unit_quantity', type: 'numeric', precision: 18, scale: 6, default: '1' })\n defaultSalesUnitQuantity: string = '1'\n\n @Property({ name: 'uom_rounding_scale', type: 'smallint', default: 4 })\n uomRoundingScale: number = 4\n\n @Property({ name: 'uom_rounding_mode', type: 'text', default: 'half_up' })\n uomRoundingMode: 'half_up' | 'down' | 'up' = 'half_up'\n\n @Property({ name: 'unit_price_enabled', type: 'boolean', default: false })\n unitPriceEnabled: boolean = false\n\n @Property({ name: 'unit_price_reference_unit', type: 'text', nullable: true })\n unitPriceReferenceUnit?: ReferenceUnitCode | null\n\n @Property({ name: 'unit_price_base_quantity', type: 'numeric', precision: 18, scale: 6, nullable: true })\n unitPriceBaseQuantity?: string | null\n\n @Property({ name: 'default_media_id', type: 'uuid', nullable: true })\n defaultMediaId?: string | null\n\n @Property({ name: 'default_media_url', type: 'text', nullable: true })\n defaultMediaUrl?: string | null\n\n @Property({ name: 'weight_value', type: 'numeric', precision: 16, scale: 4, nullable: true })\n weightValue?: string | null\n\n @Property({ name: 'weight_unit', type: 'text', nullable: true })\n weightUnit?: string | null\n\n @Property({ name: 'dimensions', type: 'jsonb', nullable: true })\n dimensions?: {\n width?: number | null\n height?: number | null\n depth?: number | null\n unit?: string | null\n } | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'custom_fieldset_code', type: 'text', nullable: true })\n customFieldsetCode?: string | null\n\n @ManyToOne(() => CatalogOptionSchemaTemplate, {\n fieldName: 'option_schema_id',\n nullable: true,\n deleteRule: 'set null',\n })\n optionSchemaTemplate?: CatalogOptionSchemaTemplate | null\n\n @Property({ name: 'is_configurable', type: 'boolean', default: false })\n isConfigurable: boolean = false\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductVariant, (variant) => variant.product)\n variants = new Collection<CatalogProductVariant>(this)\n\n @OneToMany(() => CatalogOffer, (offer) => offer.product)\n offers = new Collection<CatalogOffer>(this)\n\n @OneToMany(() => CatalogProductCategoryAssignment, (assignment) => assignment.product)\n categoryAssignments = new Collection<CatalogProductCategoryAssignment>(this)\n\n @OneToMany(() => CatalogProductTagAssignment, (assignment) => assignment.product)\n tagAssignments = new Collection<CatalogProductTagAssignment>(this)\n\n @OneToMany(() => CatalogProductUnitConversion, (conversion) => conversion.product)\n unitConversions = new Collection<CatalogProductUnitConversion>(this)\n}\n\n@Entity({ tableName: 'catalog_product_unit_conversions' })\n@Index({\n name: 'catalog_product_unit_conversions_scope_idx',\n properties: ['organizationId', 'tenantId', 'product'],\n})\n@Unique({\n name: 'catalog_product_unit_conversions_unique',\n properties: ['product', 'unitCode'],\n})\nexport class CatalogProductUnitConversion {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt' | 'sortOrder' | 'isActive'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'unit_code', type: 'text' })\n unitCode!: string\n\n @Property({ name: 'to_base_factor', type: 'numeric', precision: 24, scale: 12 })\n toBaseFactor!: string\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n@Entity({ tableName: 'catalog_product_categories' })\n@Index({ name: 'catalog_product_categories_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_product_categories_slug_unique', properties: ['organizationId', 'tenantId', 'slug'] })\nexport class CatalogProductCategory {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n slug?: string | null\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'parent_id', type: 'uuid', nullable: true })\n parentId?: string | null\n\n @Property({ name: 'root_id', type: 'uuid', nullable: true })\n rootId?: string | null\n\n @Property({ name: 'tree_path', type: 'text', nullable: true })\n treePath?: string | null\n\n @Property({ type: 'int', default: 0 })\n depth: number = 0\n\n @Property({ name: 'ancestor_ids', type: 'jsonb', default: [], nullable: false })\n ancestorIds: string[] = []\n\n @Property({ name: 'child_ids', type: 'jsonb', default: [], nullable: false })\n childIds: string[] = []\n\n @Property({ name: 'descendant_ids', type: 'jsonb', default: [], nullable: false })\n descendantIds: string[] = []\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductCategoryAssignment, (assignment) => assignment.category)\n assignments = new Collection<CatalogProductCategoryAssignment>(this)\n}\n\n@Entity({ tableName: 'catalog_product_category_assignments' })\n@Index({\n name: 'catalog_product_category_assignments_scope_idx',\n properties: ['organizationId', 'tenantId'],\n})\n@Unique({\n name: 'catalog_product_category_assignments_unique',\n properties: ['product', 'category'],\n})\nexport class CatalogProductCategoryAssignment {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @ManyToOne(() => CatalogProductCategory, { fieldName: 'category_id', deleteRule: 'cascade' })\n category!: CatalogProductCategory\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'position', type: 'int', default: 0 })\n position: number = 0\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n@Entity({ tableName: 'catalog_product_tags' })\n@Index({ name: 'catalog_product_tags_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_product_tags_slug_unique', properties: ['organizationId', 'tenantId', 'slug'] })\nexport class CatalogProductTag {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n label!: string\n\n @Property({ type: 'text' })\n slug!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @OneToMany(() => CatalogProductTagAssignment, (assignment) => assignment.tag)\n assignments = new Collection<CatalogProductTagAssignment>(this)\n}\n\n@Entity({ tableName: 'catalog_product_tag_assignments' })\n@Index({ name: 'catalog_product_tag_assignments_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'catalog_product_tag_assignments_unique', properties: ['product', 'tag'] })\nexport class CatalogProductTagAssignment {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @ManyToOne(() => CatalogProductTag, { fieldName: 'tag_id', deleteRule: 'cascade' })\n tag!: CatalogProductTag\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n@Entity({ tableName: 'catalog_product_offers' })\n@Index({ name: 'catalog_product_offers_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({\n name: 'catalog_product_offers_product_channel_unique',\n properties: ['product', 'organizationId', 'tenantId', 'channelId'],\n})\nexport class CatalogOffer {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', deleteRule: 'cascade' })\n product!: CatalogProduct\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'channel_id', type: 'uuid' })\n channelId!: string\n\n @Property({ type: 'text' })\n title!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'default_media_id', type: 'uuid', nullable: true })\n defaultMediaId?: string | null\n\n @Property({ name: 'default_media_url', type: 'text', nullable: true })\n defaultMediaUrl?: string | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductPrice, (price) => price.offer)\n prices = new Collection<CatalogProductPrice>(this)\n}\n\n@Entity({ tableName: 'catalog_product_variants' })\n@Index({ name: 'catalog_product_variants_scope_idx', properties: ['product', 'organizationId', 'tenantId'] })\n@Unique({\n name: 'catalog_product_variants_sku_unique',\n properties: ['organizationId', 'tenantId', 'sku'],\n})\nexport class CatalogProductVariant {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id' })\n product!: CatalogProduct\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text', nullable: true })\n name?: string | null\n\n @Property({ type: 'text', nullable: true })\n sku?: string | null\n\n @Property({ type: 'text', nullable: true })\n barcode?: string | null\n\n @Property({ type: 'text', nullable: true })\n statusEntryId?: string | null\n\n @Property({ name: 'is_default', type: 'boolean', default: false })\n isDefault: boolean = false\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'weight_value', type: 'numeric', precision: 16, scale: 4, nullable: true })\n weightValue?: string | null\n\n @Property({ name: 'weight_unit', type: 'text', nullable: true })\n weightUnit?: string | null\n\n @Property({ name: 'dimensions', type: 'jsonb', nullable: true })\n dimensions?: {\n width?: number | null\n height?: number | null\n depth?: number | null\n unit?: string | null\n } | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'tax_rate_id', type: 'uuid', nullable: true })\n taxRateId?: string | null\n\n @Property({ name: 'tax_rate', type: 'numeric', precision: 7, scale: 4, nullable: true })\n taxRate?: string | null\n\n @Property({ name: 'option_values', type: 'jsonb', nullable: true })\n optionValues?: Record<string, string> | null\n\n @Property({ name: 'custom_fieldset_code', type: 'text', nullable: true })\n customFieldsetCode?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductPrice, (price) => price.variant)\n prices = new Collection<CatalogProductPrice>(this)\n\n\n @OneToMany(() => CatalogProductVariantRelation, (relation) => relation.parentVariant)\n componentRelations = new Collection<CatalogProductVariantRelation>(this)\n\n @OneToMany(() => CatalogProductVariantRelation, (relation) => relation.childVariant)\n parentRelations = new Collection<CatalogProductVariantRelation>(this)\n\n}\n\n@Entity({ tableName: 'catalog_product_variant_relations' })\n@Index({\n name: 'catalog_product_variant_relations_parent_idx',\n properties: ['parentVariant', 'organizationId', 'tenantId'],\n})\n@Index({\n name: 'catalog_product_variant_relations_child_idx',\n properties: ['childVariant', 'organizationId', 'tenantId'],\n})\n@Index({\n name: 'catalog_product_variant_relations_child_product_idx',\n properties: ['childProduct', 'organizationId', 'tenantId'],\n})\nexport class CatalogProductVariantRelation {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProductVariant, {\n fieldName: 'parent_variant_id',\n deleteRule: 'cascade',\n })\n parentVariant!: CatalogProductVariant\n\n @ManyToOne(() => CatalogProductVariant, {\n fieldName: 'child_variant_id',\n deleteRule: 'cascade',\n nullable: true,\n })\n childVariant?: CatalogProductVariant | null\n\n @ManyToOne(() => CatalogProduct, {\n fieldName: 'child_product_id',\n nullable: true,\n deleteRule: 'cascade',\n })\n childProduct?: CatalogProduct | null\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'relation_type', type: 'text' })\n relationType: CatalogProductRelationType = 'grouped'\n\n @Property({ name: 'is_required', type: 'boolean', default: false })\n isRequired: boolean = false\n\n @Property({ name: 'min_quantity', type: 'integer', nullable: true })\n minQuantity?: number | null\n\n @Property({ name: 'max_quantity', type: 'integer', nullable: true })\n maxQuantity?: number | null\n\n @Property({ type: 'integer', default: 0 })\n position: number = 0\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n@Entity({ tableName: 'catalog_price_kinds' })\n@Index({\n name: 'catalog_price_kinds_tenant_idx',\n properties: ['tenantId'],\n})\n@Unique({\n name: 'catalog_price_kinds_code_tenant_unique',\n properties: ['tenantId', 'code'],\n})\nexport class CatalogPriceKind {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid', nullable: true })\n organizationId?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n title!: string\n\n @Property({ name: 'display_mode', type: 'text', default: 'excluding-tax' })\n displayMode: CatalogPriceDisplayMode = 'excluding-tax'\n\n @Property({ name: 'currency_code', type: 'text', nullable: true })\n currencyCode?: string | null\n\n @Property({ name: 'is_promotion', type: 'boolean', default: false })\n isPromotion: boolean = false\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n\n @OneToMany(() => CatalogProductPrice, (price) => price.priceKind)\n prices = new Collection<CatalogProductPrice>(this)\n}\n\n@Entity({ tableName: 'catalog_product_variant_prices' })\n@Index({\n name: 'catalog_product_variant_prices_variant_scope_idx',\n properties: ['variant', 'organizationId', 'tenantId'],\n})\n@Index({\n name: 'catalog_product_variant_prices_product_scope_idx',\n properties: ['product', 'organizationId', 'tenantId'],\n})\nexport class CatalogProductPrice {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @ManyToOne(() => CatalogProductVariant, { fieldName: 'variant_id', nullable: true })\n variant?: CatalogProductVariant | null\n\n @ManyToOne(() => CatalogProduct, { fieldName: 'product_id', nullable: true })\n product?: CatalogProduct | null\n\n @ManyToOne(() => CatalogOffer, { fieldName: 'offer_id', nullable: true })\n offer?: CatalogOffer | null\n\n @ManyToOne(() => CatalogPriceKind, { fieldName: 'price_kind_id', deleteRule: 'restrict' })\n priceKind!: CatalogPriceKind\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'currency_code', type: 'text' })\n currencyCode!: string\n\n @Property({ name: 'kind', type: 'text', default: 'regular' })\n kind: string = 'regular'\n\n @Property({ name: 'min_quantity', type: 'integer', default: 1 })\n minQuantity: number = 1\n\n @Property({ name: 'max_quantity', type: 'integer', nullable: true })\n maxQuantity?: number | null\n\n @Property({ name: 'unit_price_net', type: 'numeric', precision: 16, scale: 4, nullable: true })\n unitPriceNet?: string | null\n\n @Property({ name: 'unit_price_gross', type: 'numeric', precision: 16, scale: 4, nullable: true })\n unitPriceGross?: string | null\n\n @Property({ name: 'tax_rate', type: 'numeric', precision: 7, scale: 4, nullable: true })\n taxRate?: string | null\n\n @Property({ name: 'tax_amount', type: 'numeric', precision: 16, scale: 4, nullable: true })\n taxAmount?: string | null\n\n @Property({ name: 'channel_id', type: 'uuid', nullable: true })\n channelId?: string | null\n\n @Property({ name: 'user_id', type: 'uuid', nullable: true })\n userId?: string | null\n\n @Property({ name: 'user_group_id', type: 'uuid', nullable: true })\n userGroupId?: string | null\n\n @Property({ name: 'customer_id', type: 'uuid', nullable: true })\n customerId?: string | null\n\n @Property({ name: 'customer_group_id', type: 'uuid', nullable: true })\n customerGroupId?: string | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'starts_at', type: Date, nullable: true })\n startsAt?: Date | null\n\n @Property({ name: 'ends_at', type: Date, nullable: true })\n endsAt?: Date | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n"],
5
+ "mappings": ";;;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmBJ;AADI,IAAM,8BAAN,MAAkC;AAAA,EAAlC;AA4BL,oBAAoB;AAGpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAI7B;AAlCE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,4BAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GANxC,4BAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GATlC,4BAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,4BAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,GAf7B,4BAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlB/B,4BAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,UAAU,MAAM,QAAQ,CAAC;AAAA,GArBhC,4BAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GAxBlD,4BAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GA3BpD,4BA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GA9B7D,4BA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAjC7D,4BAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GApCjD,4BAqCX;AArCW,8BAAN;AAAA,EATN,OAAO,EAAE,WAAW,iCAAiC,CAAC;AAAA,EACtD,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,UAAU;AAAA,EAC3C,CAAC;AAAA,EACA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,YAAY,MAAM;AAAA,EACnD,CAAC;AAAA,GACY;AA6CV;AADI,IAAM,iBAAN,MAAqB;AAAA,EAArB;AAyCL,uBAAkC;AAelC,oCAAmC;AAGnC,4BAA2B;AAG3B,2BAA6C;AAG7C,4BAA4B;AA0C5B,0BAA0B;AAG1B,oBAAoB;AAGpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAM3B,oBAAW,IAAI,WAAkC,IAAI;AAGrD,kBAAS,IAAI,WAAyB,IAAI;AAG1C,+BAAsB,IAAI,WAA6C,IAAI;AAG3E,0BAAiB,IAAI,WAAwC,IAAI;AAGjE,2BAAkB,IAAI,WAAyC,IAAI;AAAA;AACrE;AA5HE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAVlD,eAWX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GAbxC,eAcX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAhBlC,eAiBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAnBf,eAoBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAtB/B,eAuBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAzB/B,eA0BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA5B/B,eA6BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA/B/B,eAgCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlCpD,eAmCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,WAAW,WAAW,GAAG,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GArC5E,eAsCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,QAAQ,SAAS,SAAS,CAAC;AAAA,GAxCxD,eAyCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3CxD,eA4CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,yBAAyB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA9C9D,eA+CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAjDrD,eAkDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GApD3D,eAqDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,+BAA+B,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GAvD9F,eAwDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,YAAY,SAAS,EAAE,CAAC;AAAA,GA1D3D,eA2DX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,qBAAqB,MAAM,QAAQ,SAAS,UAAU,CAAC;AAAA,GA7D9D,eA8DX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAhE9D,eAiEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,6BAA6B,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAnElE,eAoEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,4BAA4B,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GAtE7F,eAuEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAzEzD,eA0EX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,qBAAqB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA5E1D,eA6EX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GA/EjF,eAgFX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlFpD,eAmFX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GArFpD,eAsFX;AAQA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA7FlD,eA8FX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,wBAAwB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAhG7D,eAiGX;AAOA;AAAA,EALC,UAAU,MAAM,6BAA6B;AAAA,IAC5C,WAAW;AAAA,IACX,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAAA,GAvGU,eAwGX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GA1G3D,eA2GX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GA7GpD,eA8GX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAhH7D,eAiHX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAnH7D,eAoHX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAtHjD,eAuHX;AAGA;AAAA,EADC,UAAU,MAAM,uBAAuB,CAAC,YAAY,QAAQ,OAAO;AAAA,GAzHzD,eA0HX;AAGA;AAAA,EADC,UAAU,MAAM,cAAc,CAAC,UAAU,MAAM,OAAO;AAAA,GA5H5C,eA6HX;AAGA;AAAA,EADC,UAAU,MAAM,kCAAkC,CAAC,eAAe,WAAW,OAAO;AAAA,GA/H1E,eAgIX;AAGA;AAAA,EADC,UAAU,MAAM,6BAA6B,CAAC,eAAe,WAAW,OAAO;AAAA,GAlIrE,eAmIX;AAGA;AAAA,EADC,UAAU,MAAM,8BAA8B,CAAC,eAAe,WAAW,OAAO;AAAA,GArItE,eAsIX;AAtIW,iBAAN;AAAA,EAJN,OAAO,EAAE,WAAW,mBAAmB,CAAC;AAAA,EACxC,MAAM,EAAE,MAAM,mCAAmC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC7F,OAAO,EAAE,MAAM,qCAAqC,YAAY,CAAC,kBAAkB,YAAY,KAAK,EAAE,CAAC;AAAA,EACvG,OAAO,EAAE,MAAM,wCAAwC,YAAY,CAAC,kBAAkB,YAAY,QAAQ,EAAE,CAAC;AAAA,GACjG;AAmJV;AADI,IAAM,+BAAN,MAAmC;AAAA,EAAnC;AAsBL,qBAAoB;AAGpB,oBAAoB;AAMpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAI7B;AAlCE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,6BAIX;AAGA;AAAA,EADC,UAAU,MAAM,gBAAgB,EAAE,WAAW,cAAc,YAAY,UAAU,CAAC;AAAA,GANxE,6BAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GATxC,6BAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAZlC,6BAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAflC,6BAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,CAAC;AAAA,GAlBpE,6BAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,EAAE,CAAC;AAAA,GArBlD,6BAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GAxBpD,6BAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA3BlD,6BA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GA9B7D,6BA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAjC7D,6BAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GApCjD,6BAqCX;AArCW,+BAAN;AAAA,EATN,OAAO,EAAE,WAAW,mCAAmC,CAAC;AAAA,EACxD,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,YAAY,SAAS;AAAA,EACtD,CAAC;AAAA,EACA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,UAAU;AAAA,EACpC,CAAC;AAAA,GACY;AA4CV;AADI,IAAM,yBAAN,MAA6B;AAAA,EAA7B;AA+BL,iBAAgB;AAGhB,uBAAwB,CAAC;AAGzB,oBAAqB,CAAC;AAGtB,yBAA0B,CAAC;AAM3B,oBAAoB;AAGpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAM3B,uBAAc,IAAI,WAA6C,IAAI;AAAA;AACrE;AAvDE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,uBAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GANxC,uBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GATlC,uBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,uBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAf/B,uBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlB/B,uBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GArBlD,uBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAxBhD,uBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3BlD,uBA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA,GA9B1B,uBA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,SAAS,SAAS,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA,GAjCpE,uBAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,SAAS,SAAS,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA,GApCjE,uBAqCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,SAAS,SAAS,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA,GAvCtE,uBAwCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA1ClD,uBA2CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GA7CpD,uBA8CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAhD7D,uBAiDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAnD7D,uBAoDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAtDjD,uBAuDX;AAGA;AAAA,EADC,UAAU,MAAM,kCAAkC,CAAC,eAAe,WAAW,QAAQ;AAAA,GAzD3E,uBA0DX;AA1DW,yBAAN;AAAA,EAHN,OAAO,EAAE,WAAW,6BAA6B,CAAC;AAAA,EAClD,MAAM,EAAE,MAAM,wCAAwC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAClG,OAAO,EAAE,MAAM,0CAA0C,YAAY,CAAC,kBAAkB,YAAY,MAAM,EAAE,CAAC;AAAA,GACjG;AAuEV;AADI,IAAM,mCAAN,MAAuC;AAAA,EAAvC;AAmBL,oBAAmB;AAGnB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAC7B;AAtBE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,iCAIX;AAGA;AAAA,EADC,UAAU,MAAM,gBAAgB,EAAE,WAAW,cAAc,YAAY,UAAU,CAAC;AAAA,GANxE,iCAOX;AAGA;AAAA,EADC,UAAU,MAAM,wBAAwB,EAAE,WAAW,eAAe,YAAY,UAAU,CAAC;AAAA,GATjF,iCAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GAZxC,iCAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAflC,iCAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,OAAO,SAAS,EAAE,CAAC;AAAA,GAlB5C,iCAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GArB7D,iCAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAxB7D,iCAyBX;AAzBW,mCAAN;AAAA,EATN,OAAO,EAAE,WAAW,uCAAuC,CAAC;AAAA,EAC5D,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,UAAU;AAAA,EAC3C,CAAC;AAAA,EACA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,UAAU;AAAA,EACpC,CAAC;AAAA,GACY;AAgCV;AADI,IAAM,oBAAN,MAAwB;AAAA,EAAxB;AAmBL,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAG3B,uBAAc,IAAI,WAAwC,IAAI;AAAA;AAChE;AAtBE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,kBAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GANxC,kBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GATlC,kBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,kBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAff,kBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAlB7D,kBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GArB7D,kBAsBX;AAGA;AAAA,EADC,UAAU,MAAM,6BAA6B,CAAC,eAAe,WAAW,GAAG;AAAA,GAxBjE,kBAyBX;AAzBW,oBAAN;AAAA,EAHN,OAAO,EAAE,WAAW,uBAAuB,CAAC;AAAA,EAC5C,MAAM,EAAE,MAAM,kCAAkC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC5F,OAAO,EAAE,MAAM,oCAAoC,YAAY,CAAC,kBAAkB,YAAY,MAAM,EAAE,CAAC;AAAA,GAC3F;AAgCV;AADI,IAAM,8BAAN,MAAkC;AAAA,EAAlC;AAmBL,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAC7B;AAnBE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,4BAIX;AAGA;AAAA,EADC,UAAU,MAAM,gBAAgB,EAAE,WAAW,cAAc,YAAY,UAAU,CAAC;AAAA,GANxE,4BAOX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,EAAE,WAAW,UAAU,YAAY,UAAU,CAAC;AAAA,GATvE,4BAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GAZxC,4BAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAflC,4BAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAlB7D,4BAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GArB7D,4BAsBX;AAtBW,8BAAN;AAAA,EAHN,OAAO,EAAE,WAAW,kCAAkC,CAAC;AAAA,EACvD,MAAM,EAAE,MAAM,6CAA6C,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACvG,OAAO,EAAE,MAAM,0CAA0C,YAAY,CAAC,WAAW,KAAK,EAAE,CAAC;AAAA,GAC7E;AAgCV;AADI,IAAM,eAAN,MAAmB;AAAA,EAAnB;AAkCL,oBAAoB;AAGpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAM3B,kBAAS,IAAI,WAAgC,IAAI;AAAA;AACnD;AA3CE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,aAIX;AAGA;AAAA,EADC,UAAU,MAAM,gBAAgB,EAAE,WAAW,cAAc,YAAY,UAAU,CAAC;AAAA,GANxE,aAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GATxC,aAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAZlC,aAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,OAAO,CAAC;AAAA,GAfnC,aAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAlBf,aAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GArB/B,aAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAxBzD,aAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,qBAAqB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3B1D,aA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA9BlD,aA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GAjCpD,aAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GApC7D,aAqCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAvC7D,aAwCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GA1CjD,aA2CX;AAGA;AAAA,EADC,UAAU,MAAM,qBAAqB,CAAC,UAAU,MAAM,KAAK;AAAA,GA7CjD,aA8CX;AA9CW,eAAN;AAAA,EANN,OAAO,EAAE,WAAW,yBAAyB,CAAC;AAAA,EAC9C,MAAM,EAAE,MAAM,oCAAoC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC9F,OAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,kBAAkB,YAAY,WAAW;AAAA,EACnE,CAAC;AAAA,GACY;AAwDV;AADI,IAAM,wBAAN,MAA4B;AAAA,EAA5B;AA4BL,qBAAqB;AAGrB,oBAAoB;AAgCpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAM3B,kBAAS,IAAI,WAAgC,IAAI;AAIjD,8BAAqB,IAAI,WAA0C,IAAI;AAGvE,2BAAkB,IAAI,WAA0C,IAAI;AAAA;AAEtE;AA7EE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,sBAIX;AAGA;AAAA,EADC,UAAU,MAAM,gBAAgB,EAAE,WAAW,aAAa,CAAC;AAAA,GANjD,sBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GATxC,sBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAZlC,sBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAf/B,sBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlB/B,sBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GArB/B,sBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAxB/B,sBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GA3BtD,sBA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GA9BpD,sBA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GAjCjF,sBAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GApCpD,sBAqCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GAvCpD,sBAwCX;AAQA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA/ClD,sBAgDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlDpD,sBAmDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,WAAW,WAAW,GAAG,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GArD5E,sBAsDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GAxDvD,sBAyDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,wBAAwB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3D7D,sBA4DX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GA9D7D,sBA+DX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAjE7D,sBAkEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GApEjD,sBAqEX;AAGA;AAAA,EADC,UAAU,MAAM,qBAAqB,CAAC,UAAU,MAAM,OAAO;AAAA,GAvEnD,sBAwEX;AAIA;AAAA,EADC,UAAU,MAAM,+BAA+B,CAAC,aAAa,SAAS,aAAa;AAAA,GA3EzE,sBA4EX;AAGA;AAAA,EADC,UAAU,MAAM,+BAA+B,CAAC,aAAa,SAAS,YAAY;AAAA,GA9ExE,sBA+EX;AA/EW,wBAAN;AAAA,EANN,OAAO,EAAE,WAAW,2BAA2B,CAAC;AAAA,EAChD,MAAM,EAAE,MAAM,sCAAsC,YAAY,CAAC,WAAW,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC3G,OAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,YAAY,KAAK;AAAA,EAClD,CAAC;AAAA,GACY;AAiGV;AADI,IAAM,gCAAN,MAAoC;AAAA,EAApC;AAiCL,wBAA2C;AAG3C,sBAAsB;AAStB,oBAAmB;AAMnB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAC7B;AAnDE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,8BAIX;AAMA;AAAA,EAJC,UAAU,MAAM,uBAAuB;AAAA,IACtC,WAAW;AAAA,IACX,YAAY;AAAA,EACd,CAAC;AAAA,GATU,8BAUX;AAOA;AAAA,EALC,UAAU,MAAM,uBAAuB;AAAA,IACtC,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ,CAAC;AAAA,GAhBU,8BAiBX;AAOA;AAAA,EALC,UAAU,MAAM,gBAAgB;AAAA,IAC/B,WAAW;AAAA,IACX,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAAA,GAvBU,8BAwBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GA1BxC,8BA2BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GA7BlC,8BA8BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,GAhCtC,8BAiCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAnCvD,8BAoCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,UAAU,KAAK,CAAC;AAAA,GAtCxD,8BAuCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,UAAU,KAAK,CAAC;AAAA,GAzCxD,8BA0CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,SAAS,EAAE,CAAC;AAAA,GA5C9B,8BA6CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA/ClD,8BAgDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAlD7D,8BAmDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GArD7D,8BAsDX;AAtDW,gCAAN;AAAA,EAbN,OAAO,EAAE,WAAW,oCAAoC,CAAC;AAAA,EACzD,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,iBAAiB,kBAAkB,UAAU;AAAA,EAC5D,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,gBAAgB,kBAAkB,UAAU;AAAA,EAC3D,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,gBAAgB,kBAAkB,UAAU;AAAA,EAC3D,CAAC;AAAA,GACY;AAmEV;AADI,IAAM,mBAAN,MAAuB;AAAA,EAAvB;AAmBL,uBAAuC;AAMvC,uBAAuB;AAGvB,oBAAoB;AAGpB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAM3B,kBAAS,IAAI,WAAgC,IAAI;AAAA;AACnD;AArCE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,iBAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GANxD,iBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GATlC,iBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,iBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAff,iBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,QAAQ,SAAS,gBAAgB,CAAC;AAAA,GAlB/D,iBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GArBtD,iBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAxBxD,iBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GA3BpD,iBA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GA9B7D,iBA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAjC7D,iBAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GApCjD,iBAqCX;AAGA;AAAA,EADC,UAAU,MAAM,qBAAqB,CAAC,UAAU,MAAM,SAAS;AAAA,GAvCrD,iBAwCX;AAxCW,mBAAN;AAAA,EATN,OAAO,EAAE,WAAW,sBAAsB,CAAC;AAAA,EAC3C,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,UAAU;AAAA,EACzB,CAAC;AAAA,EACA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAC,YAAY,MAAM;AAAA,EACjC,CAAC;AAAA,GACY;AAqDV;AADI,IAAM,sBAAN,MAA0B;AAAA,EAA1B;AA4BL,gBAAe;AAGf,uBAAsB;AA0CtB,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAC7B;AAzEE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GAHlD,oBAIX;AAGA;AAAA,EADC,UAAU,MAAM,uBAAuB,EAAE,WAAW,cAAc,UAAU,KAAK,CAAC;AAAA,GANxE,oBAOX;AAGA;AAAA,EADC,UAAU,MAAM,gBAAgB,EAAE,WAAW,cAAc,UAAU,KAAK,CAAC;AAAA,GATjE,oBAUX;AAGA;AAAA,EADC,UAAU,MAAM,cAAc,EAAE,WAAW,YAAY,UAAU,KAAK,CAAC;AAAA,GAZ7D,oBAaX;AAGA;AAAA,EADC,UAAU,MAAM,kBAAkB,EAAE,WAAW,iBAAiB,YAAY,WAAW,CAAC;AAAA,GAf9E,oBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GAlBxC,oBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GArBlC,oBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,GAxBtC,oBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,MAAM,QAAQ,SAAS,UAAU,CAAC;AAAA,GA3BjD,oBA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,SAAS,EAAE,CAAC;AAAA,GA9BpD,oBA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,UAAU,KAAK,CAAC;AAAA,GAjCxD,oBAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GApCnF,oBAqCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GAvCrF,oBAwCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,WAAW,WAAW,GAAG,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GA1C5E,oBA2CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GA7C/E,oBA8CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAhDnD,oBAiDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAnDhD,oBAoDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAtDtD,oBAuDX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAzDpD,oBA0DX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,qBAAqB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA5D1D,oBA6DX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,YAAY,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA/DlD,oBAgEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAlEhD,oBAmEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GArE9C,oBAsEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAxE7D,oBAyEX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GA3E7D,oBA4EX;AA5EW,sBAAN;AAAA,EATN,OAAO,EAAE,WAAW,iCAAiC,CAAC;AAAA,EACtD,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,kBAAkB,UAAU;AAAA,EACtD,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,kBAAkB,UAAU;AAAA,EACtD,CAAC;AAAA,GACY;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { CATALOG_PRICE_DISPLAY_MODES, CATALOG_PRODUCT_TYPES } from "./types.js";
3
+ import { REFERENCE_UNIT_CODES } from "../lib/unitCodes.js";
3
4
  const uuid = () => z.string().uuid();
4
5
  const scoped = z.object({
5
6
  organizationId: uuid(),
@@ -62,6 +63,42 @@ const offerUpdateSchema = z.object({
62
63
  }).partial()
63
64
  );
64
65
  const productTypeSchema = z.enum(CATALOG_PRODUCT_TYPES);
66
+ const uomRoundingModeSchema = z.enum(["half_up", "down", "up"]);
67
+ const unitPriceReferenceUnitSchema = z.enum(REFERENCE_UNIT_CODES);
68
+ const unitPriceConfigSchema = z.object({
69
+ enabled: z.boolean().optional(),
70
+ referenceUnit: unitPriceReferenceUnitSchema.nullable().optional(),
71
+ baseQuantity: z.coerce.number().positive().optional()
72
+ });
73
+ function productUomCrossFieldRefinement(input, ctx) {
74
+ const defaultUnit = typeof input.defaultUnit === "string" ? input.defaultUnit.trim() : "";
75
+ const defaultSalesUnit = typeof input.defaultSalesUnit === "string" ? input.defaultSalesUnit.trim() : "";
76
+ if (defaultSalesUnit && !defaultUnit) {
77
+ ctx.addIssue({
78
+ code: z.ZodIssueCode.custom,
79
+ path: ["defaultSalesUnit"],
80
+ message: "catalog.products.validation.baseUnitRequired"
81
+ });
82
+ }
83
+ const unitPriceEnabled = input.unitPrice?.enabled ?? input.unitPriceEnabled ?? false;
84
+ if (!unitPriceEnabled) return;
85
+ const referenceUnit = input.unitPrice?.referenceUnit ?? input.unitPriceReferenceUnit ?? null;
86
+ const baseQuantity = input.unitPrice?.baseQuantity ?? input.unitPriceBaseQuantity ?? null;
87
+ if (!referenceUnit) {
88
+ ctx.addIssue({
89
+ code: z.ZodIssueCode.custom,
90
+ path: ["unitPrice"],
91
+ message: "catalog.products.validation.referenceUnitRequired"
92
+ });
93
+ }
94
+ if (baseQuantity === null || baseQuantity === void 0 || Number(baseQuantity) <= 0) {
95
+ ctx.addIssue({
96
+ code: z.ZodIssueCode.custom,
97
+ path: ["unitPrice"],
98
+ message: "catalog.products.unitPrice.errors.baseQuantity"
99
+ });
100
+ }
101
+ }
65
102
  const productCreateSchema = scoped.extend({
66
103
  title: z.string().trim().min(1).max(255),
67
104
  subtitle: z.string().trim().max(255).optional(),
@@ -73,7 +110,15 @@ const productCreateSchema = scoped.extend({
73
110
  productType: productTypeSchema.default("simple"),
74
111
  statusEntryId: uuid().optional(),
75
112
  primaryCurrencyCode: currencyCodeSchema.optional(),
76
- defaultUnit: z.string().trim().max(50).optional(),
113
+ defaultUnit: z.string().trim().max(50).optional().nullable(),
114
+ defaultSalesUnit: z.string().trim().max(50).optional().nullable(),
115
+ defaultSalesUnitQuantity: z.coerce.number().positive().optional(),
116
+ uomRoundingScale: z.coerce.number().int().min(0).max(6).optional(),
117
+ uomRoundingMode: uomRoundingModeSchema.optional(),
118
+ unitPriceEnabled: z.boolean().optional(),
119
+ unitPriceReferenceUnit: unitPriceReferenceUnitSchema.nullable().optional(),
120
+ unitPriceBaseQuantity: z.coerce.number().positive().optional(),
121
+ unitPrice: unitPriceConfigSchema.optional(),
77
122
  defaultMediaId: uuid().optional().nullable(),
78
123
  defaultMediaUrl: z.string().trim().max(500).optional().nullable(),
79
124
  weightValue: z.coerce.number().min(0).optional().nullable(),
@@ -93,12 +138,12 @@ const productCreateSchema = scoped.extend({
93
138
  offers: z.array(offerInputSchema.omit({ id: true })).optional(),
94
139
  categoryIds: z.array(uuid()).max(100).optional(),
95
140
  tags: z.array(tagLabelSchema).max(100).optional()
96
- });
141
+ }).superRefine(productUomCrossFieldRefinement);
97
142
  const productUpdateSchema = z.object({
98
143
  id: uuid()
99
144
  }).merge(productCreateSchema.partial()).extend({
100
145
  productType: productTypeSchema.optional()
101
- });
146
+ }).superRefine(productUomCrossFieldRefinement);
102
147
  const variantCreateSchema = scoped.extend({
103
148
  productId: uuid(),
104
149
  name: z.string().trim().max(255).optional(),
@@ -183,6 +228,20 @@ const categoryCreateSchema = scoped.extend({
183
228
  const categoryUpdateSchema = z.object({
184
229
  id: uuid()
185
230
  }).merge(categoryCreateSchema.partial());
231
+ const productUnitConversionCreateSchema = scoped.extend({
232
+ productId: uuid(),
233
+ unitCode: z.string().trim().min(1).max(50),
234
+ toBaseFactor: z.coerce.number().positive().max(1e6),
235
+ sortOrder: z.coerce.number().int().optional(),
236
+ isActive: z.boolean().optional(),
237
+ metadata: metadataSchema
238
+ });
239
+ const productUnitConversionUpdateSchema = z.object({
240
+ id: uuid()
241
+ }).merge(productUnitConversionCreateSchema.omit({ productId: true }).partial());
242
+ const productUnitConversionDeleteSchema = scoped.extend({
243
+ id: uuid()
244
+ });
186
245
  export {
187
246
  categoryCreateSchema,
188
247
  categoryUpdateSchema,
@@ -195,6 +254,9 @@ export {
195
254
  priceKindUpdateSchema,
196
255
  priceUpdateSchema,
197
256
  productCreateSchema,
257
+ productUnitConversionCreateSchema,
258
+ productUnitConversionDeleteSchema,
259
+ productUnitConversionUpdateSchema,
198
260
  productUpdateSchema,
199
261
  variantCreateSchema,
200
262
  variantUpdateSchema
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/catalog/data/validators.ts"],
4
- "sourcesContent": ["import { z } from 'zod'\nimport { CATALOG_PRICE_DISPLAY_MODES, CATALOG_PRODUCT_TYPES } from './types'\n\nconst uuid = () => z.string().uuid()\n\nconst scoped = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst tenantScoped = z.object({\n tenantId: uuid(),\n})\n\nconst currencyCodeSchema = z\n .string()\n .trim()\n .regex(/^[A-Z]{3}$/, 'currency code must be a three-letter ISO code')\n\nconst metadataSchema = z.record(z.string(), z.unknown()).optional()\n\nconst slugSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/, 'code must contain lowercase letters, digits, hyphen, or underscore')\n .max(150)\n\nconst handleSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/, 'handle must contain lowercase letters, digits, hyphen, or underscore')\n .max(150)\n\nconst skuSchema = z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9\\-_\\.]+$/, 'SKU may include letters, numbers, hyphen, underscore, or period')\n .max(191)\n\nconst variantOptionValuesSchema = z\n .record(\n z\n .string()\n .trim()\n .min(1)\n .max(191),\n z.string().trim().max(255)\n )\n .optional()\n\nconst optionChoiceSchema = z.object({\n code: slugSchema,\n label: z.string().trim().max(255).optional(),\n})\n\nconst optionDefinitionSchema = z.object({\n code: slugSchema,\n label: z.string().trim().min(1).max(255),\n description: z.string().trim().max(2000).optional(),\n inputType: z.enum(['select', 'text', 'textarea', 'number']),\n isRequired: z.boolean().optional(),\n isMultiple: z.boolean().optional(),\n choices: z.array(optionChoiceSchema).max(200).optional(),\n})\n\nconst optionSchema = z.object({\n version: z.number().int().min(1).optional(),\n name: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n options: z.array(optionDefinitionSchema).max(64),\n})\n\nconst tagLabelSchema = z.string().trim().min(1).max(100)\n\nconst offerBaseSchema = z.object({\n channelId: uuid(),\n title: z.string().trim().min(1).max(255),\n description: z.string().trim().max(4000).optional(),\n defaultMediaId: uuid().optional().nullable(),\n defaultMediaUrl: z.string().trim().max(500).optional().nullable(),\n metadata: metadataSchema,\n isActive: z.boolean().optional(),\n})\n\nconst offerInputSchema = offerBaseSchema.extend({\n id: uuid().optional(),\n})\n\nexport const offerCreateSchema = scoped.merge(\n offerBaseSchema.extend({\n productId: uuid(),\n })\n)\n\nexport const offerUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(\n offerBaseSchema\n .extend({\n productId: uuid().optional(),\n })\n .partial()\n )\n\nconst productTypeSchema = z.enum(CATALOG_PRODUCT_TYPES)\n\nexport const productCreateSchema = scoped.extend({\n title: z.string().trim().min(1).max(255),\n subtitle: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n sku: skuSchema.optional(),\n handle: handleSchema.optional(),\n taxRateId: uuid().nullable().optional(),\n taxRate: z.coerce.number().min(0).max(100).optional().nullable(),\n productType: productTypeSchema.default('simple'),\n statusEntryId: uuid().optional(),\n primaryCurrencyCode: currencyCodeSchema.optional(),\n defaultUnit: z.string().trim().max(50).optional(),\n defaultMediaId: uuid().optional().nullable(),\n defaultMediaUrl: z.string().trim().max(500).optional().nullable(),\n weightValue: z.coerce.number().min(0).optional().nullable(),\n weightUnit: z.string().trim().max(25).optional().nullable(),\n dimensions: z\n .object({\n width: z.coerce.number().min(0).optional(),\n height: z.coerce.number().min(0).optional(),\n depth: z.coerce.number().min(0).optional(),\n unit: z.string().trim().max(25).optional(),\n })\n .optional()\n .nullable(),\n optionSchemaId: uuid().nullable().optional(),\n optionSchema: optionSchema.optional(),\n customFieldsetCode: slugSchema.nullable().optional(),\n isConfigurable: z.boolean().optional(),\n isActive: z.boolean().optional(),\n metadata: metadataSchema,\n offers: z.array(offerInputSchema.omit({ id: true })).optional(),\n categoryIds: z.array(uuid()).max(100).optional(),\n tags: z.array(tagLabelSchema).max(100).optional(),\n})\n\nexport const productUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(productCreateSchema.partial())\n .extend({\n productType: productTypeSchema.optional(),\n })\n\nexport const variantCreateSchema = scoped.extend({\n productId: uuid(),\n name: z.string().trim().max(255).optional(),\n sku: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9\\-_\\.]+$/)\n .max(191)\n .optional(),\n barcode: z.string().trim().max(191).optional(),\n statusEntryId: uuid().optional(),\n isDefault: z.boolean().optional(),\n isActive: z.boolean().optional(),\n defaultMediaId: uuid().optional().nullable(),\n defaultMediaUrl: z.string().trim().max(500).optional().nullable(),\n weightValue: z.coerce.number().min(0).optional(),\n weightUnit: z.string().trim().max(25).optional(),\n taxRateId: uuid().nullable().optional(),\n taxRate: z.coerce.number().min(0).max(100).optional().nullable(),\n dimensions: z\n .object({\n width: z.coerce.number().min(0).optional(),\n height: z.coerce.number().min(0).optional(),\n depth: z.coerce.number().min(0).optional(),\n unit: z.string().trim().max(25).optional(),\n })\n .optional(),\n metadata: metadataSchema,\n optionValues: variantOptionValuesSchema,\n customFieldsetCode: slugSchema.nullable().optional(),\n})\n\nexport const variantUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(variantCreateSchema.partial())\n\nexport const optionSchemaTemplateCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: slugSchema.optional(),\n description: z.string().trim().max(4000).optional(),\n schema: optionSchema,\n metadata: metadataSchema,\n isActive: z.boolean().optional(),\n})\n\nexport const optionSchemaTemplateUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(optionSchemaTemplateCreateSchema.partial())\n\nconst priceDisplayModeSchema = z.enum(CATALOG_PRICE_DISPLAY_MODES)\n\nexport const priceKindCreateSchema = tenantScoped.extend({\n code: slugSchema,\n title: z.string().trim().min(1).max(255),\n displayMode: priceDisplayModeSchema.default('excluding-tax'),\n currencyCode: currencyCodeSchema.optional(),\n isPromotion: z.boolean().optional(),\n isActive: z.boolean().optional(),\n})\n\nexport const priceKindUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(priceKindCreateSchema.partial())\n\nexport const priceCreateSchema = scoped.extend({\n variantId: uuid().optional(),\n productId: uuid().optional(),\n offerId: uuid().optional(),\n currencyCode: currencyCodeSchema,\n priceKindId: uuid(),\n minQuantity: z.coerce.number().int().min(1).optional(),\n maxQuantity: z.coerce.number().int().min(1).optional(),\n unitPriceNet: z.coerce.number().min(0).optional(),\n unitPriceGross: z.coerce.number().min(0).optional(),\n taxRate: z.coerce.number().min(0).max(100).optional(),\n taxRateId: uuid().nullable().optional(),\n channelId: uuid().optional(),\n userId: uuid().optional(),\n userGroupId: uuid().optional(),\n customerId: uuid().optional(),\n customerGroupId: uuid().optional(),\n metadata: metadataSchema,\n startsAt: z.coerce.date().optional(),\n endsAt: z.coerce.date().optional(),\n})\n\nexport const priceUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(priceCreateSchema.partial())\n\nexport const categoryCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n slug: slugSchema.optional().nullable(),\n description: z.string().trim().max(2000).optional(),\n parentId: uuid().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const categoryUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(categoryCreateSchema.partial())\n\nexport type ProductCreateInput = z.infer<typeof productCreateSchema>\nexport type ProductUpdateInput = z.infer<typeof productUpdateSchema>\nexport type VariantCreateInput = z.infer<typeof variantCreateSchema>\nexport type VariantUpdateInput = z.infer<typeof variantUpdateSchema>\nexport type OptionSchemaTemplateCreateInput = z.infer<typeof optionSchemaTemplateCreateSchema>\nexport type OptionSchemaTemplateUpdateInput = z.infer<typeof optionSchemaTemplateUpdateSchema>\nexport type PriceKindCreateInput = z.infer<typeof priceKindCreateSchema>\nexport type PriceKindUpdateInput = z.infer<typeof priceKindUpdateSchema>\nexport type PriceCreateInput = z.infer<typeof priceCreateSchema>\nexport type PriceUpdateInput = z.infer<typeof priceUpdateSchema>\nexport type CategoryCreateInput = z.infer<typeof categoryCreateSchema>\nexport type CategoryUpdateInput = z.infer<typeof categoryUpdateSchema>\nexport type OfferInput = z.infer<typeof offerInputSchema>\nexport type OfferCreateInput = z.infer<typeof offerCreateSchema>\nexport type OfferUpdateInput = z.infer<typeof offerUpdateSchema>\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { z } from 'zod'\nimport { CATALOG_PRICE_DISPLAY_MODES, CATALOG_PRODUCT_TYPES } from './types'\nimport { REFERENCE_UNIT_CODES } from '../lib/unitCodes'\n\nconst uuid = () => z.string().uuid()\n\nconst scoped = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst tenantScoped = z.object({\n tenantId: uuid(),\n})\n\nconst currencyCodeSchema = z\n .string()\n .trim()\n .regex(/^[A-Z]{3}$/, 'currency code must be a three-letter ISO code')\n\nconst metadataSchema = z.record(z.string(), z.unknown()).optional()\n\nconst slugSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/, 'code must contain lowercase letters, digits, hyphen, or underscore')\n .max(150)\n\nconst handleSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/, 'handle must contain lowercase letters, digits, hyphen, or underscore')\n .max(150)\n\nconst skuSchema = z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9\\-_\\.]+$/, 'SKU may include letters, numbers, hyphen, underscore, or period')\n .max(191)\n\nconst variantOptionValuesSchema = z\n .record(\n z\n .string()\n .trim()\n .min(1)\n .max(191),\n z.string().trim().max(255)\n )\n .optional()\n\nconst optionChoiceSchema = z.object({\n code: slugSchema,\n label: z.string().trim().max(255).optional(),\n})\n\nconst optionDefinitionSchema = z.object({\n code: slugSchema,\n label: z.string().trim().min(1).max(255),\n description: z.string().trim().max(2000).optional(),\n inputType: z.enum(['select', 'text', 'textarea', 'number']),\n isRequired: z.boolean().optional(),\n isMultiple: z.boolean().optional(),\n choices: z.array(optionChoiceSchema).max(200).optional(),\n})\n\nconst optionSchema = z.object({\n version: z.number().int().min(1).optional(),\n name: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n options: z.array(optionDefinitionSchema).max(64),\n})\n\nconst tagLabelSchema = z.string().trim().min(1).max(100)\n\nconst offerBaseSchema = z.object({\n channelId: uuid(),\n title: z.string().trim().min(1).max(255),\n description: z.string().trim().max(4000).optional(),\n defaultMediaId: uuid().optional().nullable(),\n defaultMediaUrl: z.string().trim().max(500).optional().nullable(),\n metadata: metadataSchema,\n isActive: z.boolean().optional(),\n})\n\nconst offerInputSchema = offerBaseSchema.extend({\n id: uuid().optional(),\n})\n\nexport const offerCreateSchema = scoped.merge(\n offerBaseSchema.extend({\n productId: uuid(),\n })\n)\n\nexport const offerUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(\n offerBaseSchema\n .extend({\n productId: uuid().optional(),\n })\n .partial()\n )\n\nconst productTypeSchema = z.enum(CATALOG_PRODUCT_TYPES)\nconst uomRoundingModeSchema = z.enum(['half_up', 'down', 'up'])\nconst unitPriceReferenceUnitSchema = z.enum(REFERENCE_UNIT_CODES)\nconst unitPriceConfigSchema = z.object({\n enabled: z.boolean().optional(),\n referenceUnit: unitPriceReferenceUnitSchema.nullable().optional(),\n baseQuantity: z.coerce.number().positive().optional(),\n})\n\nfunction productUomCrossFieldRefinement(\n input: {\n defaultUnit?: string | null\n defaultSalesUnit?: string | null\n unitPriceEnabled?: boolean\n unitPriceReferenceUnit?: string | null\n unitPriceBaseQuantity?: number\n unitPrice?: { enabled?: boolean; referenceUnit?: string | null; baseQuantity?: number }\n },\n ctx: z.RefinementCtx,\n) {\n const defaultUnit = typeof input.defaultUnit === 'string' ? input.defaultUnit.trim() : ''\n const defaultSalesUnit =\n typeof input.defaultSalesUnit === 'string' ? input.defaultSalesUnit.trim() : ''\n if (defaultSalesUnit && !defaultUnit) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['defaultSalesUnit'],\n message: 'catalog.products.validation.baseUnitRequired',\n })\n }\n const unitPriceEnabled = input.unitPrice?.enabled ?? input.unitPriceEnabled ?? false\n if (!unitPriceEnabled) return\n const referenceUnit =\n input.unitPrice?.referenceUnit ?? input.unitPriceReferenceUnit ?? null\n const baseQuantity =\n input.unitPrice?.baseQuantity ?? input.unitPriceBaseQuantity ?? null\n if (!referenceUnit) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['unitPrice'],\n message: 'catalog.products.validation.referenceUnitRequired',\n })\n }\n if (baseQuantity === null || baseQuantity === undefined || Number(baseQuantity) <= 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['unitPrice'],\n message: 'catalog.products.unitPrice.errors.baseQuantity',\n })\n }\n}\n\nexport const productCreateSchema = scoped\n .extend({\n title: z.string().trim().min(1).max(255),\n subtitle: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n sku: skuSchema.optional(),\n handle: handleSchema.optional(),\n taxRateId: uuid().nullable().optional(),\n taxRate: z.coerce.number().min(0).max(100).optional().nullable(),\n productType: productTypeSchema.default('simple'),\n statusEntryId: uuid().optional(),\n primaryCurrencyCode: currencyCodeSchema.optional(),\n defaultUnit: z.string().trim().max(50).optional().nullable(),\n defaultSalesUnit: z.string().trim().max(50).optional().nullable(),\n defaultSalesUnitQuantity: z.coerce.number().positive().optional(),\n uomRoundingScale: z.coerce.number().int().min(0).max(6).optional(),\n uomRoundingMode: uomRoundingModeSchema.optional(),\n unitPriceEnabled: z.boolean().optional(),\n unitPriceReferenceUnit: unitPriceReferenceUnitSchema.nullable().optional(),\n unitPriceBaseQuantity: z.coerce.number().positive().optional(),\n unitPrice: unitPriceConfigSchema.optional(),\n defaultMediaId: uuid().optional().nullable(),\n defaultMediaUrl: z.string().trim().max(500).optional().nullable(),\n weightValue: z.coerce.number().min(0).optional().nullable(),\n weightUnit: z.string().trim().max(25).optional().nullable(),\n dimensions: z\n .object({\n width: z.coerce.number().min(0).optional(),\n height: z.coerce.number().min(0).optional(),\n depth: z.coerce.number().min(0).optional(),\n unit: z.string().trim().max(25).optional(),\n })\n .optional()\n .nullable(),\n optionSchemaId: uuid().nullable().optional(),\n optionSchema: optionSchema.optional(),\n customFieldsetCode: slugSchema.nullable().optional(),\n isConfigurable: z.boolean().optional(),\n isActive: z.boolean().optional(),\n metadata: metadataSchema,\n offers: z.array(offerInputSchema.omit({ id: true })).optional(),\n categoryIds: z.array(uuid()).max(100).optional(),\n tags: z.array(tagLabelSchema).max(100).optional(),\n })\n .superRefine(productUomCrossFieldRefinement)\n\nexport const productUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(productCreateSchema.partial())\n .extend({\n productType: productTypeSchema.optional(),\n })\n .superRefine(productUomCrossFieldRefinement)\n\nexport const variantCreateSchema = scoped.extend({\n productId: uuid(),\n name: z.string().trim().max(255).optional(),\n sku: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9\\-_\\.]+$/)\n .max(191)\n .optional(),\n barcode: z.string().trim().max(191).optional(),\n statusEntryId: uuid().optional(),\n isDefault: z.boolean().optional(),\n isActive: z.boolean().optional(),\n defaultMediaId: uuid().optional().nullable(),\n defaultMediaUrl: z.string().trim().max(500).optional().nullable(),\n weightValue: z.coerce.number().min(0).optional(),\n weightUnit: z.string().trim().max(25).optional(),\n taxRateId: uuid().nullable().optional(),\n taxRate: z.coerce.number().min(0).max(100).optional().nullable(),\n dimensions: z\n .object({\n width: z.coerce.number().min(0).optional(),\n height: z.coerce.number().min(0).optional(),\n depth: z.coerce.number().min(0).optional(),\n unit: z.string().trim().max(25).optional(),\n })\n .optional(),\n metadata: metadataSchema,\n optionValues: variantOptionValuesSchema,\n customFieldsetCode: slugSchema.nullable().optional(),\n})\n\nexport const variantUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(variantCreateSchema.partial())\n\nexport const optionSchemaTemplateCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: slugSchema.optional(),\n description: z.string().trim().max(4000).optional(),\n schema: optionSchema,\n metadata: metadataSchema,\n isActive: z.boolean().optional(),\n})\n\nexport const optionSchemaTemplateUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(optionSchemaTemplateCreateSchema.partial())\n\nconst priceDisplayModeSchema = z.enum(CATALOG_PRICE_DISPLAY_MODES)\n\nexport const priceKindCreateSchema = tenantScoped.extend({\n code: slugSchema,\n title: z.string().trim().min(1).max(255),\n displayMode: priceDisplayModeSchema.default('excluding-tax'),\n currencyCode: currencyCodeSchema.optional(),\n isPromotion: z.boolean().optional(),\n isActive: z.boolean().optional(),\n})\n\nexport const priceKindUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(priceKindCreateSchema.partial())\n\nexport const priceCreateSchema = scoped.extend({\n variantId: uuid().optional(),\n productId: uuid().optional(),\n offerId: uuid().optional(),\n currencyCode: currencyCodeSchema,\n priceKindId: uuid(),\n minQuantity: z.coerce.number().int().min(1).optional(),\n maxQuantity: z.coerce.number().int().min(1).optional(),\n unitPriceNet: z.coerce.number().min(0).optional(),\n unitPriceGross: z.coerce.number().min(0).optional(),\n taxRate: z.coerce.number().min(0).max(100).optional(),\n taxRateId: uuid().nullable().optional(),\n channelId: uuid().optional(),\n userId: uuid().optional(),\n userGroupId: uuid().optional(),\n customerId: uuid().optional(),\n customerGroupId: uuid().optional(),\n metadata: metadataSchema,\n startsAt: z.coerce.date().optional(),\n endsAt: z.coerce.date().optional(),\n})\n\nexport const priceUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(priceCreateSchema.partial())\n\nexport const categoryCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n slug: slugSchema.optional().nullable(),\n description: z.string().trim().max(2000).optional(),\n parentId: uuid().optional().nullable(),\n isActive: z.boolean().optional(),\n})\n\nexport const categoryUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(categoryCreateSchema.partial())\n\nexport const productUnitConversionCreateSchema = scoped.extend({\n productId: uuid(),\n unitCode: z.string().trim().min(1).max(50),\n toBaseFactor: z.coerce.number().positive().max(1_000_000),\n sortOrder: z.coerce.number().int().optional(),\n isActive: z.boolean().optional(),\n metadata: metadataSchema,\n})\n\nexport const productUnitConversionUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(productUnitConversionCreateSchema.omit({ productId: true }).partial())\n\nexport const productUnitConversionDeleteSchema = scoped.extend({\n id: uuid(),\n})\n\nexport type ProductCreateInput = z.infer<typeof productCreateSchema>\nexport type ProductUpdateInput = z.infer<typeof productUpdateSchema>\nexport type VariantCreateInput = z.infer<typeof variantCreateSchema>\nexport type VariantUpdateInput = z.infer<typeof variantUpdateSchema>\nexport type OptionSchemaTemplateCreateInput = z.infer<typeof optionSchemaTemplateCreateSchema>\nexport type OptionSchemaTemplateUpdateInput = z.infer<typeof optionSchemaTemplateUpdateSchema>\nexport type PriceKindCreateInput = z.infer<typeof priceKindCreateSchema>\nexport type PriceKindUpdateInput = z.infer<typeof priceKindUpdateSchema>\nexport type PriceCreateInput = z.infer<typeof priceCreateSchema>\nexport type PriceUpdateInput = z.infer<typeof priceUpdateSchema>\nexport type CategoryCreateInput = z.infer<typeof categoryCreateSchema>\nexport type CategoryUpdateInput = z.infer<typeof categoryUpdateSchema>\nexport type OfferInput = z.infer<typeof offerInputSchema>\nexport type OfferCreateInput = z.infer<typeof offerCreateSchema>\nexport type OfferUpdateInput = z.infer<typeof offerUpdateSchema>\nexport type ProductUnitConversionCreateInput = z.infer<typeof productUnitConversionCreateSchema>\nexport type ProductUnitConversionUpdateInput = z.infer<typeof productUnitConversionUpdateSchema>\nexport type ProductUnitConversionDeleteInput = z.infer<typeof productUnitConversionDeleteSchema>\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -4,6 +4,9 @@ const events = [
4
4
  { id: "catalog.product.created", label: "Product Created", entity: "product", category: "crud" },
5
5
  { id: "catalog.product.updated", label: "Product Updated", entity: "product", category: "crud" },
6
6
  { id: "catalog.product.deleted", label: "Product Deleted", entity: "product", category: "crud" },
7
+ { id: "catalog.product_unit_conversion.created", label: "Product Unit Conversion Created", entity: "product_unit_conversion", category: "crud" },
8
+ { id: "catalog.product_unit_conversion.updated", label: "Product Unit Conversion Updated", entity: "product_unit_conversion", category: "crud" },
9
+ { id: "catalog.product_unit_conversion.deleted", label: "Product Unit Conversion Deleted", entity: "product_unit_conversion", category: "crud" },
7
10
  // Categories
8
11
  { id: "catalog.category.created", label: "Category Created", entity: "category", category: "crud" },
9
12
  { id: "catalog.category.updated", label: "Category Updated", entity: "category", category: "crud" },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/modules/catalog/events.ts"],
4
- "sourcesContent": ["import { createModuleEvents } from '@open-mercato/shared/modules/events'\n\n/**\n * Catalog Module Events\n *\n * Declares all events that can be emitted by the catalog module.\n */\nconst events = [\n // Products\n { id: 'catalog.product.created', label: 'Product Created', entity: 'product', category: 'crud' },\n { id: 'catalog.product.updated', label: 'Product Updated', entity: 'product', category: 'crud' },\n { id: 'catalog.product.deleted', label: 'Product Deleted', entity: 'product', category: 'crud' },\n\n // Categories\n { id: 'catalog.category.created', label: 'Category Created', entity: 'category', category: 'crud' },\n { id: 'catalog.category.updated', label: 'Category Updated', entity: 'category', category: 'crud' },\n { id: 'catalog.category.deleted', label: 'Category Deleted', entity: 'category', category: 'crud' },\n\n // Variants\n { id: 'catalog.variant.created', label: 'Variant Created', entity: 'variant', category: 'crud' },\n { id: 'catalog.variant.updated', label: 'Variant Updated', entity: 'variant', category: 'crud' },\n { id: 'catalog.variant.deleted', label: 'Variant Deleted', entity: 'variant', category: 'crud' },\n\n // Prices\n { id: 'catalog.price.created', label: 'Price Created', entity: 'price', category: 'crud' },\n { id: 'catalog.price.updated', label: 'Price Updated', entity: 'price', category: 'crud' },\n { id: 'catalog.price.deleted', label: 'Price Deleted', entity: 'price', category: 'crud' },\n\n // Lifecycle events - Pricing resolution\n { id: 'catalog.pricing.resolve.before', label: 'Before Pricing Resolve', category: 'lifecycle', excludeFromTriggers: true },\n { id: 'catalog.pricing.resolve.after', label: 'After Pricing Resolve', category: 'lifecycle', excludeFromTriggers: true },\n] as const\n\nexport const eventsConfig = createModuleEvents({\n moduleId: 'catalog',\n events,\n})\n\n/** Type-safe event emitter for catalog module */\nexport const emitCatalogEvent = eventsConfig.emit\n\n/** Event IDs that can be emitted by the catalog module */\nexport type CatalogEventId = typeof events[number]['id']\n\nexport default eventsConfig\n"],
5
- "mappings": "AAAA,SAAS,0BAA0B;AAOnC,MAAM,SAAS;AAAA;AAAA,EAEb,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA;AAAA,EAG/F,EAAE,IAAI,4BAA4B,OAAO,oBAAoB,QAAQ,YAAY,UAAU,OAAO;AAAA,EAClG,EAAE,IAAI,4BAA4B,OAAO,oBAAoB,QAAQ,YAAY,UAAU,OAAO;AAAA,EAClG,EAAE,IAAI,4BAA4B,OAAO,oBAAoB,QAAQ,YAAY,UAAU,OAAO;AAAA;AAAA,EAGlG,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA;AAAA,EAG/F,EAAE,IAAI,yBAAyB,OAAO,iBAAiB,QAAQ,SAAS,UAAU,OAAO;AAAA,EACzF,EAAE,IAAI,yBAAyB,OAAO,iBAAiB,QAAQ,SAAS,UAAU,OAAO;AAAA,EACzF,EAAE,IAAI,yBAAyB,OAAO,iBAAiB,QAAQ,SAAS,UAAU,OAAO;AAAA;AAAA,EAGzF,EAAE,IAAI,kCAAkC,OAAO,0BAA0B,UAAU,aAAa,qBAAqB,KAAK;AAAA,EAC1H,EAAE,IAAI,iCAAiC,OAAO,yBAAyB,UAAU,aAAa,qBAAqB,KAAK;AAC1H;AAEO,MAAM,eAAe,mBAAmB;AAAA,EAC7C,UAAU;AAAA,EACV;AACF,CAAC;AAGM,MAAM,mBAAmB,aAAa;AAK7C,IAAO,iBAAQ;",
4
+ "sourcesContent": ["import { createModuleEvents } from '@open-mercato/shared/modules/events'\n\n/**\n * Catalog Module Events\n *\n * Declares all events that can be emitted by the catalog module.\n */\nconst events = [\n // Products\n { id: 'catalog.product.created', label: 'Product Created', entity: 'product', category: 'crud' },\n { id: 'catalog.product.updated', label: 'Product Updated', entity: 'product', category: 'crud' },\n { id: 'catalog.product.deleted', label: 'Product Deleted', entity: 'product', category: 'crud' },\n { id: 'catalog.product_unit_conversion.created', label: 'Product Unit Conversion Created', entity: 'product_unit_conversion', category: 'crud' },\n { id: 'catalog.product_unit_conversion.updated', label: 'Product Unit Conversion Updated', entity: 'product_unit_conversion', category: 'crud' },\n { id: 'catalog.product_unit_conversion.deleted', label: 'Product Unit Conversion Deleted', entity: 'product_unit_conversion', category: 'crud' },\n\n // Categories\n { id: 'catalog.category.created', label: 'Category Created', entity: 'category', category: 'crud' },\n { id: 'catalog.category.updated', label: 'Category Updated', entity: 'category', category: 'crud' },\n { id: 'catalog.category.deleted', label: 'Category Deleted', entity: 'category', category: 'crud' },\n\n // Variants\n { id: 'catalog.variant.created', label: 'Variant Created', entity: 'variant', category: 'crud' },\n { id: 'catalog.variant.updated', label: 'Variant Updated', entity: 'variant', category: 'crud' },\n { id: 'catalog.variant.deleted', label: 'Variant Deleted', entity: 'variant', category: 'crud' },\n\n // Prices\n { id: 'catalog.price.created', label: 'Price Created', entity: 'price', category: 'crud' },\n { id: 'catalog.price.updated', label: 'Price Updated', entity: 'price', category: 'crud' },\n { id: 'catalog.price.deleted', label: 'Price Deleted', entity: 'price', category: 'crud' },\n\n // Lifecycle events - Pricing resolution\n { id: 'catalog.pricing.resolve.before', label: 'Before Pricing Resolve', category: 'lifecycle', excludeFromTriggers: true },\n { id: 'catalog.pricing.resolve.after', label: 'After Pricing Resolve', category: 'lifecycle', excludeFromTriggers: true },\n] as const\n\nexport const eventsConfig = createModuleEvents({\n moduleId: 'catalog',\n events,\n})\n\n/** Type-safe event emitter for catalog module */\nexport const emitCatalogEvent = eventsConfig.emit\n\n/** Event IDs that can be emitted by the catalog module */\nexport type CatalogEventId = typeof events[number]['id']\n\nexport default eventsConfig\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AAOnC,MAAM,SAAS;AAAA;AAAA,EAEb,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2CAA2C,OAAO,mCAAmC,QAAQ,2BAA2B,UAAU,OAAO;AAAA,EAC/I,EAAE,IAAI,2CAA2C,OAAO,mCAAmC,QAAQ,2BAA2B,UAAU,OAAO;AAAA,EAC/I,EAAE,IAAI,2CAA2C,OAAO,mCAAmC,QAAQ,2BAA2B,UAAU,OAAO;AAAA;AAAA,EAG/I,EAAE,IAAI,4BAA4B,OAAO,oBAAoB,QAAQ,YAAY,UAAU,OAAO;AAAA,EAClG,EAAE,IAAI,4BAA4B,OAAO,oBAAoB,QAAQ,YAAY,UAAU,OAAO;AAAA,EAClG,EAAE,IAAI,4BAA4B,OAAO,oBAAoB,QAAQ,YAAY,UAAU,OAAO;AAAA;AAAA,EAGlG,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA,EAC/F,EAAE,IAAI,2BAA2B,OAAO,mBAAmB,QAAQ,WAAW,UAAU,OAAO;AAAA;AAAA,EAG/F,EAAE,IAAI,yBAAyB,OAAO,iBAAiB,QAAQ,SAAS,UAAU,OAAO;AAAA,EACzF,EAAE,IAAI,yBAAyB,OAAO,iBAAiB,QAAQ,SAAS,UAAU,OAAO;AAAA,EACzF,EAAE,IAAI,yBAAyB,OAAO,iBAAiB,QAAQ,SAAS,UAAU,OAAO;AAAA;AAAA,EAGzF,EAAE,IAAI,kCAAkC,OAAO,0BAA0B,UAAU,aAAa,qBAAqB,KAAK;AAAA,EAC1H,EAAE,IAAI,iCAAiC,OAAO,yBAAyB,UAAU,aAAa,qBAAqB,KAAK;AAC1H;AAEO,MAAM,eAAe,mBAAmB;AAAA,EAC7C,UAAU;AAAA,EACV;AACF,CAAC;AAGM,MAAM,mBAAmB,aAAa;AAK7C,IAAO,iBAAQ;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,7 @@
1
+ import { canonicalizeUnitCode, toUnitLookupKey, REFERENCE_UNIT_CODES } from "@open-mercato/shared/lib/units/unitCodes";
2
+ export {
3
+ REFERENCE_UNIT_CODES,
4
+ canonicalizeUnitCode,
5
+ toUnitLookupKey
6
+ };
7
+ //# sourceMappingURL=unitCodes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/catalog/lib/unitCodes.ts"],
4
+ "sourcesContent": ["export { canonicalizeUnitCode, toUnitLookupKey, REFERENCE_UNIT_CODES, type ReferenceUnitCode } from \"@open-mercato/shared/lib/units/unitCodes\";\n"],
5
+ "mappings": "AAAA,SAAS,sBAAsB,iBAAiB,4BAAoD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,53 @@
1
+ import { CrudHttpError } from "@open-mercato/shared/lib/crud/errors";
2
+ import { findOneWithDecryption } from "@open-mercato/shared/lib/encryption/find";
3
+ import {
4
+ Dictionary,
5
+ DictionaryEntry
6
+ } from "@open-mercato/core/modules/dictionaries/data/entities";
7
+ import { canonicalizeUnitCode } from "./unitCodes.js";
8
+ const UOM_DICTIONARY_KEYS = ["unit", "units", "measurement_units"];
9
+ async function resolveUnitDictionary(em, organizationId, tenantId) {
10
+ return findOneWithDecryption(
11
+ em,
12
+ Dictionary,
13
+ {
14
+ organizationId,
15
+ tenantId,
16
+ key: { $in: UOM_DICTIONARY_KEYS },
17
+ deletedAt: null,
18
+ isActive: true
19
+ },
20
+ { orderBy: { createdAt: "asc" } }
21
+ );
22
+ }
23
+ async function resolveCanonicalUnitCode(em, params) {
24
+ const dictionary = await resolveUnitDictionary(
25
+ em,
26
+ params.organizationId,
27
+ params.tenantId
28
+ );
29
+ if (!dictionary) {
30
+ return canonicalizeUnitCode(params.unitCode) ?? params.unitCode;
31
+ }
32
+ const unitCode = canonicalizeUnitCode(params.unitCode);
33
+ if (!unitCode) {
34
+ throw new CrudHttpError(400, { error: "uom.unit_not_found" });
35
+ }
36
+ const entry = await findOneWithDecryption(em, DictionaryEntry, {
37
+ dictionary,
38
+ organizationId: dictionary.organizationId,
39
+ tenantId: dictionary.tenantId,
40
+ $or: [{ normalizedValue: unitCode }, { value: unitCode }]
41
+ });
42
+ if (!entry) {
43
+ throw new CrudHttpError(400, { error: "uom.unit_not_found" });
44
+ }
45
+ const canonical = typeof entry.value === "string" ? entry.value.trim() : "";
46
+ return canonical.length ? canonical : unitCode;
47
+ }
48
+ export {
49
+ UOM_DICTIONARY_KEYS,
50
+ resolveCanonicalUnitCode,
51
+ resolveUnitDictionary
52
+ };
53
+ //# sourceMappingURL=unitResolution.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/catalog/lib/unitResolution.ts"],
4
+ "sourcesContent": ["import type { EntityManager } from \"@mikro-orm/postgresql\";\nimport { CrudHttpError } from \"@open-mercato/shared/lib/crud/errors\";\nimport { findOneWithDecryption } from \"@open-mercato/shared/lib/encryption/find\";\nimport {\n Dictionary,\n DictionaryEntry,\n} from \"@open-mercato/core/modules/dictionaries/data/entities\";\nimport { canonicalizeUnitCode } from \"./unitCodes\";\n\nexport const UOM_DICTIONARY_KEYS = [\"unit\", \"units\", \"measurement_units\"] as const;\n\nexport async function resolveUnitDictionary(\n em: EntityManager,\n organizationId: string,\n tenantId: string,\n) {\n return findOneWithDecryption(\n em,\n Dictionary,\n {\n organizationId,\n tenantId,\n key: { $in: UOM_DICTIONARY_KEYS },\n deletedAt: null,\n isActive: true,\n },\n { orderBy: { createdAt: \"asc\" } },\n );\n}\n\nexport async function resolveCanonicalUnitCode(\n em: EntityManager,\n params: {\n organizationId: string;\n tenantId: string;\n unitCode: string;\n },\n): Promise<string> {\n const dictionary = await resolveUnitDictionary(\n em,\n params.organizationId,\n params.tenantId,\n );\n if (!dictionary) {\n return canonicalizeUnitCode(params.unitCode) ?? params.unitCode;\n }\n const unitCode = canonicalizeUnitCode(params.unitCode);\n if (!unitCode) {\n throw new CrudHttpError(400, { error: \"uom.unit_not_found\" });\n }\n const entry = await findOneWithDecryption(em, DictionaryEntry, {\n dictionary,\n organizationId: dictionary.organizationId,\n tenantId: dictionary.tenantId,\n $or: [{ normalizedValue: unitCode }, { value: unitCode }],\n });\n if (!entry) {\n throw new CrudHttpError(400, { error: \"uom.unit_not_found\" });\n }\n const canonical = typeof entry.value === \"string\" ? entry.value.trim() : \"\";\n return canonical.length ? canonical : unitCode;\n}\n"],
5
+ "mappings": "AACA,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AAE9B,MAAM,sBAAsB,CAAC,QAAQ,SAAS,mBAAmB;AAExE,eAAsB,sBACpB,IACA,gBACA,UACA;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,KAAK,EAAE,KAAK,oBAAoB;AAAA,MAChC,WAAW;AAAA,MACX,UAAU;AAAA,IACZ;AAAA,IACA,EAAE,SAAS,EAAE,WAAW,MAAM,EAAE;AAAA,EAClC;AACF;AAEA,eAAsB,yBACpB,IACA,QAKiB;AACjB,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACA,MAAI,CAAC,YAAY;AACf,WAAO,qBAAqB,OAAO,QAAQ,KAAK,OAAO;AAAA,EACzD;AACA,QAAM,WAAW,qBAAqB,OAAO,QAAQ;AACrD,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,cAAc,KAAK,EAAE,OAAO,qBAAqB,CAAC;AAAA,EAC9D;AACA,QAAM,QAAQ,MAAM,sBAAsB,IAAI,iBAAiB;AAAA,IAC7D;AAAA,IACA,gBAAgB,WAAW;AAAA,IAC3B,UAAU,WAAW;AAAA,IACrB,KAAK,CAAC,EAAE,iBAAiB,SAAS,GAAG,EAAE,OAAO,SAAS,CAAC;AAAA,EAC1D,CAAC;AACD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,cAAc,KAAK,EAAE,OAAO,qBAAqB,CAAC;AAAA,EAC9D;AACA,QAAM,YAAY,OAAO,MAAM,UAAU,WAAW,MAAM,MAAM,KAAK,IAAI;AACzE,SAAO,UAAU,SAAS,YAAY;AACxC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,19 @@
1
+ import { Migration } from "@mikro-orm/migrations";
2
+ class Migration20260218225422 extends Migration {
3
+ async up() {
4
+ this.addSql(`create table "catalog_product_unit_conversions" ("id" uuid not null default gen_random_uuid(), "product_id" uuid not null, "organization_id" uuid not null, "tenant_id" uuid not null, "unit_code" text not null, "to_base_factor" numeric(24,12) not null, "sort_order" int not null default 0, "is_active" boolean not null default true, "metadata" jsonb null, "created_at" timestamptz not null, "updated_at" timestamptz not null, "deleted_at" timestamptz null, constraint "catalog_product_unit_conversions_pkey" primary key ("id"));`);
5
+ this.addSql(`create index "catalog_product_unit_conversions_scope_idx" on "catalog_product_unit_conversions" ("organization_id", "tenant_id", "product_id");`);
6
+ this.addSql(`alter table "catalog_product_unit_conversions" add constraint "catalog_product_unit_conversions_unique" unique ("product_id", "unit_code");`);
7
+ this.addSql(`alter table "catalog_product_unit_conversions" add constraint "catalog_product_unit_conversions_product_id_foreign" foreign key ("product_id") references "catalog_products" ("id") on update cascade on delete cascade;`);
8
+ this.addSql(`alter table "catalog_products" add column "default_sales_unit" text null, add column "default_sales_unit_quantity" numeric(18,6) not null default '1', add column "uom_rounding_scale" smallint not null default 4, add column "uom_rounding_mode" text not null default 'half_up', add column "unit_price_enabled" boolean not null default false, add column "unit_price_reference_unit" text null, add column "unit_price_base_quantity" numeric(18,6) null;`);
9
+ this.addSql(`update "catalog_products" set "default_sales_unit" = "default_unit" where "default_sales_unit" is null and "default_unit" is not null;`);
10
+ }
11
+ async down() {
12
+ this.addSql(`drop table if exists "catalog_product_unit_conversions" cascade;`);
13
+ this.addSql(`alter table "catalog_products" drop column "default_sales_unit", drop column "default_sales_unit_quantity", drop column "uom_rounding_scale", drop column "uom_rounding_mode", drop column "unit_price_enabled", drop column "unit_price_reference_unit", drop column "unit_price_base_quantity";`);
14
+ }
15
+ }
16
+ export {
17
+ Migration20260218225422
18
+ };
19
+ //# sourceMappingURL=Migration20260218225422.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/catalog/migrations/Migration20260218225422.ts"],
4
+ "sourcesContent": ["import { Migration } from '@mikro-orm/migrations';\n\nexport class Migration20260218225422 extends Migration {\n\n override async up(): Promise<void> {\n this.addSql(`create table \"catalog_product_unit_conversions\" (\"id\" uuid not null default gen_random_uuid(), \"product_id\" uuid not null, \"organization_id\" uuid not null, \"tenant_id\" uuid not null, \"unit_code\" text not null, \"to_base_factor\" numeric(24,12) not null, \"sort_order\" int not null default 0, \"is_active\" boolean not null default true, \"metadata\" jsonb null, \"created_at\" timestamptz not null, \"updated_at\" timestamptz not null, \"deleted_at\" timestamptz null, constraint \"catalog_product_unit_conversions_pkey\" primary key (\"id\"));`);\n this.addSql(`create index \"catalog_product_unit_conversions_scope_idx\" on \"catalog_product_unit_conversions\" (\"organization_id\", \"tenant_id\", \"product_id\");`);\n this.addSql(`alter table \"catalog_product_unit_conversions\" add constraint \"catalog_product_unit_conversions_unique\" unique (\"product_id\", \"unit_code\");`);\n\n this.addSql(`alter table \"catalog_product_unit_conversions\" add constraint \"catalog_product_unit_conversions_product_id_foreign\" foreign key (\"product_id\") references \"catalog_products\" (\"id\") on update cascade on delete cascade;`);\n\n this.addSql(`alter table \"catalog_products\" add column \"default_sales_unit\" text null, add column \"default_sales_unit_quantity\" numeric(18,6) not null default '1', add column \"uom_rounding_scale\" smallint not null default 4, add column \"uom_rounding_mode\" text not null default 'half_up', add column \"unit_price_enabled\" boolean not null default false, add column \"unit_price_reference_unit\" text null, add column \"unit_price_base_quantity\" numeric(18,6) null;`);\n this.addSql(`update \"catalog_products\" set \"default_sales_unit\" = \"default_unit\" where \"default_sales_unit\" is null and \"default_unit\" is not null;`);\n }\n\n override async down(): Promise<void> {\n this.addSql(`drop table if exists \"catalog_product_unit_conversions\" cascade;`);\n this.addSql(`alter table \"catalog_products\" drop column \"default_sales_unit\", drop column \"default_sales_unit_quantity\", drop column \"uom_rounding_scale\", drop column \"uom_rounding_mode\", drop column \"unit_price_enabled\", drop column \"unit_price_reference_unit\", drop column \"unit_price_base_quantity\";`);\n }\n\n}\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;AAEnB,MAAM,gCAAgC,UAAU;AAAA,EAErD,MAAe,KAAoB;AACjC,SAAK,OAAO,ihBAAihB;AAC7hB,SAAK,OAAO,iJAAiJ;AAC7J,SAAK,OAAO,6IAA6I;AAEzJ,SAAK,OAAO,0NAA0N;AAEtO,SAAK,OAAO,icAAic;AAC7c,SAAK,OAAO,wIAAwI;AAAA,EACtJ;AAAA,EAEA,MAAe,OAAsB;AACnC,SAAK,OAAO,kEAAkE;AAC9E,SAAK,OAAO,mSAAmS;AAAA,EACjT;AAEF;",
6
+ "names": []
7
+ }