@open-mercato/core 0.6.6-develop.5617.1.62538c48ca → 0.6.6-develop.5619.1.29f01e2c42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/dist/modules/sales/acl.js +6 -0
- package/dist/modules/sales/acl.js.map +2 -2
- package/dist/modules/sales/api/returns/route.js +43 -3
- package/dist/modules/sales/api/returns/route.js.map +2 -2
- package/dist/modules/sales/commands/returns.js +473 -213
- package/dist/modules/sales/commands/returns.js.map +2 -2
- package/dist/modules/sales/commands/shared.js +2 -0
- package/dist/modules/sales/commands/shared.js.map +2 -2
- package/dist/modules/sales/components/documents/ReturnEditDialog.js +125 -0
- package/dist/modules/sales/components/documents/ReturnEditDialog.js.map +7 -0
- package/dist/modules/sales/components/documents/ReturnsSection.js +102 -6
- package/dist/modules/sales/components/documents/ReturnsSection.js.map +2 -2
- package/dist/modules/sales/data/validators.js +13 -0
- package/dist/modules/sales/data/validators.js.map +2 -2
- package/dist/modules/sales/setup.js +1 -0
- package/dist/modules/sales/setup.js.map +2 -2
- package/package.json +7 -7
- package/src/modules/sales/acl.ts +6 -0
- package/src/modules/sales/api/returns/route.ts +41 -3
- package/src/modules/sales/commands/returns.ts +561 -229
- package/src/modules/sales/commands/shared.ts +1 -0
- package/src/modules/sales/components/documents/ReturnEditDialog.tsx +157 -0
- package/src/modules/sales/components/documents/ReturnsSection.tsx +105 -3
- package/src/modules/sales/data/validators.ts +15 -0
- package/src/modules/sales/i18n/de.json +11 -0
- package/src/modules/sales/i18n/en.json +11 -0
- package/src/modules/sales/i18n/es.json +11 -0
- package/src/modules/sales/i18n/pl.json +11 -0
- package/src/modules/sales/setup.ts +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/sales/data/validators.ts"],
|
|
4
|
-
"sourcesContent": ["import { z } from 'zod'\nimport {\n createDictionaryEntrySchema,\n updateDictionaryEntrySchema,\n} from '@open-mercato/core/modules/dictionaries/data/validators'\nimport { getPaymentProvider, getShippingProvider } from '../lib/providers'\nimport { REFERENCE_UNIT_CODES } from '@open-mercato/shared/lib/units/unitCodes'\nimport { isValidPhoneNumber } from '@open-mercato/shared/lib/phone'\n\nexport const SALES_PHONE_INVALID_MESSAGE_KEY = 'customers.people.form.primaryPhone.invalid'\n\nconst optionalPhoneField = (max = 50) =>\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY })\n .optional()\n\nconst optionalNullablePhoneField = (max = 50) =>\n z\n .union([\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY }),\n z.literal(''),\n z.null(),\n ])\n .optional()\n\nexport const customerSnapshotSchema = z\n .object({\n customer: z\n .object({\n primaryPhone: optionalNullablePhoneField(),\n })\n .passthrough()\n .nullable()\n .optional(),\n contact: z.unknown().optional(),\n })\n .passthrough()\n\nconst uuid = () => z.string().uuid()\n\nconst scoped = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst currencyCode = z\n .string()\n .trim()\n .regex(/^[A-Z]{3}$/, 'currency code must be a three-letter ISO code')\n\nconst decimal = (opts?: { min?: number; max?: number; message?: string }) => {\n let schema = z.coerce.number()\n if (typeof opts?.min === 'number') schema = schema.min(opts.min)\n if (typeof opts?.max === 'number') schema = schema.max(opts.max, opts.message)\n return schema\n}\n\nconst MAX_QUANTITY = 999_999_999\n\nconst percentage = () => decimal({ min: 0, max: 100 })\n\nconst jsonRecord = z.record(z.string(), z.unknown())\n\nconst metadata = jsonRecord.optional()\nconst providerSettings = jsonRecord.optional()\n\nconst channelCodeSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120)\n\nconst numberFormatSchema = z.string().trim().min(1).max(191)\nconst statusListSchema = z\n .array(z.string().trim().min(1).max(120))\n .max(200)\n .optional()\n .nullable()\n\nexport const salesSettingsUpsertSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema,\n quoteNumberFormat: numberFormatSchema,\n orderNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n quoteNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesSettingsUpsertInput = z.infer<typeof salesSettingsUpsertSchema>\n\nexport const salesEditingSettingsSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema.optional(),\n quoteNumberFormat: numberFormatSchema.optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesEditingSettingsInput = z.infer<typeof salesEditingSettingsSchema>\n\nexport const channelCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: channelCodeSchema,\n description: z.string().trim().max(2000).optional(),\n statusEntryId: uuid().optional(),\n websiteUrl: z.string().trim().url().max(300).optional(),\n contactEmail: z.string().trim().email().max(320).optional(),\n contactPhone: optionalPhoneField(),\n addressLine1: z.string().trim().max(255).optional(),\n addressLine2: z.string().trim().max(255).optional(),\n city: z.string().trim().max(120).optional(),\n region: z.string().trim().max(120).optional(),\n postalCode: z.string().trim().max(30).optional(),\n country: z.string().trim().max(2).optional(),\n latitude: decimal().optional(),\n longitude: decimal().optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const channelUpdateSchema = z\n .object({\n id: uuid(),\n code: channelCodeSchema,\n })\n .merge(channelCreateSchema.omit({ code: true }).partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst shippingMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n carrierCode: z.string().trim().max(120).optional(),\n providerKey: z.string().trim().max(120).optional(),\n serviceLevel: z.string().trim().max(120).optional(),\n estimatedTransitDays: z.coerce.number().int().min(0).max(365).optional(),\n baseRateNet: decimal({ min: 0 }).optional(),\n baseRateGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst shippingMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getShippingProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const shippingMethodCreateSchema = shippingMethodBaseSchema.superRefine(shippingMethodRefine)\n\nexport const shippingMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shippingMethodBaseSchema.partial())\n .superRefine(shippingMethodRefine)\n\nexport const deliveryWindowCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n leadTimeDays: z.coerce.number().int().min(0).max(365).optional(),\n cutoffTime: z.string().trim().regex(/^\\d{2}:\\d{2}$/).optional(),\n timezone: z.string().trim().max(120).optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const deliveryWindowUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(deliveryWindowCreateSchema.partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst paymentMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n providerKey: z.string().trim().max(120).optional(),\n terms: z.string().trim().max(4000).optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst paymentMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getPaymentProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const paymentMethodCreateSchema = paymentMethodBaseSchema.superRefine(paymentMethodRefine)\n\nexport const paymentMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentMethodBaseSchema.partial())\n .superRefine(paymentMethodRefine)\n\nexport const salesTagCreateSchema = scoped.extend({\n slug: z\n .string()\n .trim()\n .min(1)\n .max(80)\n .regex(/^[a-z0-9_-]+$/, 'Slug must be lowercase and may contain dashes or underscores'),\n label: z.string().trim().min(1).max(120),\n color: z.string().trim().max(30).optional(),\n description: z.string().trim().max(400).optional(),\n})\n\nexport const salesTagUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(salesTagCreateSchema.partial())\n\nexport const taxRateCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n rate: percentage(),\n countryCode: z.string().trim().length(2).optional(),\n regionCode: z.string().trim().max(6).optional(),\n postalCode: z.string().trim().max(30).optional(),\n city: z.string().trim().max(120).optional(),\n customerGroupId: uuid().optional(),\n productCategoryId: uuid().optional(),\n channelId: uuid().optional(),\n priority: z.coerce.number().int().min(0).max(10).optional(),\n isCompound: z.boolean().optional(),\n isDefault: z.boolean().optional(),\n metadata,\n startsAt: z.coerce.date().optional(),\n endsAt: z.coerce.date().optional(),\n})\n\nexport const taxRateUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(taxRateCreateSchema.partial())\n\nconst statusDictionaryEntryCreateSchema = z.object({\n value: createDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: createDictionaryEntrySchema.shape.color,\n icon: createDictionaryEntrySchema.shape.icon,\n})\n\nconst statusDictionaryEntryUpdateFieldsSchema = z.object({\n value: updateDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: updateDictionaryEntrySchema.shape.color,\n icon: updateDictionaryEntrySchema.shape.icon,\n})\n\nconst validateStatusDictionaryUpdate = (\n payload: z.infer<typeof statusDictionaryEntryUpdateFieldsSchema>,\n) => Object.values(payload).some((value) => value !== undefined)\n\nconst statusDictionaryEntryUpdateSchema = statusDictionaryEntryUpdateFieldsSchema.refine(\n validateStatusDictionaryUpdate,\n { message: 'Provide at least one field to update.' },\n)\n\nexport const statusDictionaryCreateSchema = scoped.merge(statusDictionaryEntryCreateSchema)\n\nexport const statusDictionaryUpdateSchema = scoped\n .merge(statusDictionaryEntryUpdateFieldsSchema)\n .safeExtend({ id: uuid() })\n .refine(validateStatusDictionaryUpdate, { message: 'Provide at least one field to update.' })\n\nconst lineKindSchema = z.enum(['product', 'service', 'shipping', 'discount', 'adjustment'])\n\nconst adjustmentKindSchema = z.string().trim().min(1).max(150)\n\nconst linePricingSchema = z.object({\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n priceId: uuid().optional(),\n priceMode: z.enum(['net', 'gross']).optional(),\n taxRateId: uuid().optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nconst uomSnapshotSchema = z.object({\n version: z.literal(1),\n productId: z.string().nullable(),\n productVariantId: z.string().nullable(),\n baseUnitCode: z.string().nullable(),\n enteredUnitCode: z.string().nullable(),\n enteredQuantity: z.string(),\n toBaseFactor: z.string(),\n normalizedQuantity: z.string(),\n rounding: z.object({\n mode: z.enum(['half_up', 'down', 'up']),\n scale: z.number().int(),\n }),\n source: z.object({\n conversionId: z.string().nullable(),\n resolvedAt: z.string(),\n }),\n unitPriceReference: z.object({\n enabled: z.boolean(),\n referenceUnitCode: z.enum(REFERENCE_UNIT_CODES).nullable(),\n baseQuantity: z.string().nullable(),\n grossPerReference: z.string().nullable().optional(),\n netPerReference: z.string().nullable().optional(),\n }).optional(),\n}).nullable().optional()\n\nconst lineSharedSchema = z.object({\n kind: lineKindSchema.optional(),\n statusEntryId: uuid().optional(),\n productId: uuid().optional(),\n productVariantId: uuid().optional(),\n name: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n comment: z.string().trim().max(2000).optional(),\n currencyCode,\n configuration: z.record(z.string(), z.unknown()).optional(),\n promotionCode: z.string().trim().max(120).optional(),\n promotionSnapshot: z.record(z.string(), z.unknown()).optional(),\n uomSnapshot: uomSnapshotSchema,\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineCreateSchema = scoped.extend({\n orderId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderLineCreateSchema.partial())\n\nexport const quoteLineCreateSchema = scoped.extend({\n quoteId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const quoteLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteLineCreateSchema.partial())\n\n// Each adjustment kind has an intrinsic sign convention so the grand total\n// stays semantically correct regardless of operator input. The calculation\n// engine normalizes signs defensively, but the API edge rejects values that\n// would invert the kind's meaning so bad data never reaches storage.\n//\n// - `return`: non-positive \u2014 returns reduce the total (see #1705).\n// - `discount`: non-negative \u2014 discounts reduce the total.\n// - `surcharge`/`shipping`/`tax`: non-negative \u2014 they add to the total.\n// - `custom` and unknown kinds: unconstrained (operator-controlled).\n//\n// See #1905.\nexport const RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE =\n 'Return adjustments must use a non-positive amountNet (returns reduce the total).'\nexport const RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE =\n 'Return adjustments must use a non-positive amountGross (returns reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Discount adjustments must use a non-negative amountNet (discounts reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Discount adjustments must use a non-negative amountGross (discounts reduce the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountNet (surcharges add to the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountGross (surcharges add to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Shipping adjustments must use a non-negative amountNet (shipping adds to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Shipping adjustments must use a non-negative amountGross (shipping adds to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Tax adjustments must use a non-negative amountNet (taxes add to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Tax adjustments must use a non-negative amountGross (taxes add to the total).'\n\ntype AdjustmentSignInput = {\n kind?: string\n amountNet?: number\n amountGross?: number\n}\n\nconst NON_NEGATIVE_SIGN_MESSAGES: Record<string, { net: string; gross: string }> = {\n discount: {\n net: DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n surcharge: {\n net: SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n shipping: {\n net: SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n tax: {\n net: TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n}\n\nexport const enforceAdjustmentSign = (\n value: AdjustmentSignInput,\n ctx: z.RefinementCtx\n) => {\n if (!value.kind) return\n if (value.kind === 'return') {\n if (typeof value.amountNet === 'number' && value.amountNet > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE,\n path: ['amountGross'],\n })\n }\n return\n }\n const messages = NON_NEGATIVE_SIGN_MESSAGES[value.kind]\n if (!messages) return\n if (typeof value.amountNet === 'number' && value.amountNet < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.net,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.gross,\n path: ['amountGross'],\n })\n }\n}\n\n/**\n * @deprecated Use `enforceAdjustmentSign` \u2014 it enforces the sign convention\n * for every adjustment kind, not just `return`. Kept for backward compatibility\n * with third-party code that imported the original helper.\n */\nexport const enforceReturnAdjustmentSign = enforceAdjustmentSign\n\nexport const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE =\n 'Return adjustment amountNet exceeds the remaining grand total. Reduce the amount or remove existing returns first.'\nexport const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE =\n 'Return adjustment amountGross exceeds the remaining grand total. Reduce the amount or remove existing returns first.'\n\nexport type ReturnAdjustmentRemainingCheck = {\n kind?: string | null\n amountNet?: number | null\n amountGross?: number | null\n remainingNet: number\n remainingGross: number\n}\n\nexport type ReturnAdjustmentRemainingIssue = {\n path: 'amountNet' | 'amountGross'\n message: string\n}\n\n// Inclusive: abs(amount) === remaining is allowed. Tiny epsilon absorbs\n// floating-point rounding from upstream tax/rate adjustments.\nconst RETURN_REMAINING_EPSILON = 0.005\n\nexport const validateReturnAdjustmentWithinRemaining = (\n value: ReturnAdjustmentRemainingCheck\n): ReturnAdjustmentRemainingIssue[] => {\n if (value.kind !== 'return') return []\n const absNet = typeof value.amountNet === 'number' ? Math.abs(value.amountNet) : 0\n const absGross = typeof value.amountGross === 'number' ? Math.abs(value.amountGross) : 0\n const issues: ReturnAdjustmentRemainingIssue[] = []\n if (absGross > value.remainingGross + RETURN_REMAINING_EPSILON) {\n issues.push({ path: 'amountGross', message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE })\n }\n if (absNet > value.remainingNet + RETURN_REMAINING_EPSILON) {\n issues.push({ path: 'amountNet', message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE })\n }\n return issues\n}\n\nexport const orderAdjustmentCreateSchema = scoped.extend({\n orderId: uuid(),\n orderLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderAdjustmentCreateSchema.partial())\n\nexport const quoteAdjustmentCreateSchema = scoped.extend({\n quoteId: uuid(),\n quoteLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const quoteAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteAdjustmentCreateSchema.partial())\n\nconst orderTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n shippingNetAmount: decimal({ min: 0 }).optional(),\n shippingGrossAmount: decimal({ min: 0 }).optional(),\n surchargeTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n refundedTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nconst quoteTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderCreateSchema = scoped.extend({\n orderNumber: z.string().trim().min(1).max(191).optional(),\n externalReference: z.string().trim().max(191).optional(),\n customerReference: z.string().trim().max(191).optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n exchangeRate: decimal({ min: 0 }).optional(),\n statusEntryId: uuid().optional(),\n fulfillmentStatusEntryId: uuid().optional(),\n paymentStatusEntryId: uuid().optional(),\n taxStrategyKey: z.string().trim().max(120).optional(),\n discountStrategyKey: z.string().trim().max(120).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n channelId: uuid().optional(),\n placedAt: z.coerce.date().optional(),\n expectedDeliveryAt: z.coerce.date().optional(),\n dueAt: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n internalNotes: z.string().trim().max(4000).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z.array(orderLineCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n adjustments: z.array(orderAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n tags: z.array(uuid()).optional(),\n ...orderTotalsSchema.shape,\n})\n\nexport const orderUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderCreateSchema.partial())\n\nexport const quoteCreateSchema = scoped.extend({\n quoteNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n channelId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n validFrom: z.coerce.date().optional(),\n validUntil: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(quoteLineCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n adjustments: z\n .array(quoteAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n tags: z.array(uuid()).optional(),\n ...quoteTotalsSchema.shape,\n})\n\nexport const quoteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteCreateSchema.partial())\n\nconst documentKind = z.enum(['order', 'quote'])\n\nconst documentAddressFields = {\n documentId: uuid(),\n documentKind,\n customerAddressId: uuid().optional(),\n name: z.string().trim().max(255).nullable().optional(),\n purpose: z.string().trim().max(120).nullable().optional(),\n companyName: z.string().trim().max(255).nullable().optional(),\n addressLine1: z.string().trim().min(1).max(255),\n addressLine2: z.string().trim().max(255).nullable().optional(),\n city: z.string().trim().max(120).nullable().optional(),\n region: z.string().trim().max(120).nullable().optional(),\n postalCode: z.string().trim().max(60).nullable().optional(),\n country: z.string().trim().max(2).nullable().optional(),\n buildingNumber: z.string().trim().max(60).nullable().optional(),\n flatNumber: z.string().trim().max(60).nullable().optional(),\n latitude: z.coerce.number().optional().nullable(),\n longitude: z.coerce.number().optional().nullable(),\n}\n\nexport const documentAddressCreateSchema = scoped.extend(documentAddressFields)\n\nexport const documentAddressUpdateSchema = scoped.extend({\n id: uuid(),\n ...documentAddressFields,\n})\n\nexport const documentAddressDeleteSchema = scoped.extend({\n id: uuid(),\n documentId: uuid(),\n documentKind,\n})\n\nexport const shipmentCreateSchema = scoped.extend({\n orderId: uuid(),\n shipmentNumber: z.string().trim().max(191).optional(),\n shippingMethodId: uuid().optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n carrierName: z.string().trim().max(191).optional(),\n trackingNumbers: z.array(z.string().trim().max(191)).optional(),\n shippedAt: z.coerce.date().optional(),\n deliveredAt: z.coerce.date().optional(),\n weightValue: decimal({ min: 0 }).optional(),\n weightUnit: z.string().trim().max(25).optional(),\n declaredValueNet: decimal({ min: 0 }).optional(),\n declaredValueGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n notes: z.string().trim().max(4000).optional(),\n metadata,\n shipmentAddressSnapshot: jsonRecord.optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n items: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).int('Quantity must be a whole number.'),\n metadata,\n })\n )\n .optional(),\n})\n\nexport const shipmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shipmentCreateSchema.partial())\n\nconst returnLineQuantitySchema = z.coerce\n .number()\n .int('Return quantity must be a whole number.')\n .min(1, 'Return quantity must be at least 1.')\n .max(MAX_QUANTITY, 'Quantity is too large.')\n\nexport const returnCreateSchema = scoped.extend({\n orderId: uuid(),\n reason: z.string().trim().max(4000).optional(),\n notes: z.string().trim().max(4000).optional(),\n returnedAt: z.coerce.date().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: returnLineQuantitySchema,\n })\n )\n .min(1),\n})\n\nexport const invoiceCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n dueDate: z.coerce.date().optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n kind: lineKindSchema.optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n})\n\nexport const invoiceUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(invoiceCreateSchema.partial())\n\nexport const creditMemoCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n creditMemoNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n reason: z.string().trim().max(4000).optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nexport const creditMemoUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(creditMemoCreateSchema.partial())\n\nexport const paymentCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n paymentMethodId: uuid().optional(),\n paymentReference: z.string().trim().max(191).optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n capturedAmount: decimal({ min: 0 }).optional(),\n refundedAmount: decimal({ min: 0 }).optional(),\n receivedAt: z.coerce.date().optional(),\n capturedAt: z.coerce.date().optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n allocations: z\n .array(\n z.object({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n metadata,\n })\n )\n .optional(),\n})\n\nexport const paymentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentCreateSchema.partial())\n\nexport const noteCreateSchema = scoped.extend({\n contextType: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n contextId: uuid(),\n orderId: uuid().optional(),\n quoteId: uuid().optional(),\n authorUserId: uuid().optional(),\n body: z.string().trim().min(1).max(8000),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const noteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(\n z\n .object({\n body: z.string().trim().min(1).max(8000).optional(),\n })\n .extend({\n authorUserId: uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n })\n )\n\nexport const documentNumberRequestSchema = scoped.extend({\n kind: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n format: numberFormatSchema.optional(),\n})\n\nexport type DocumentNumberRequestInput = z.infer<typeof documentNumberRequestSchema>\n\nexport type ChannelCreateInput = z.infer<typeof channelCreateSchema>\nexport type ChannelUpdateInput = z.infer<typeof channelUpdateSchema>\nexport type ShippingMethodCreateInput = z.infer<typeof shippingMethodCreateSchema>\nexport type ShippingMethodUpdateInput = z.infer<typeof shippingMethodUpdateSchema>\nexport type DeliveryWindowCreateInput = z.infer<typeof deliveryWindowCreateSchema>\nexport type DeliveryWindowUpdateInput = z.infer<typeof deliveryWindowUpdateSchema>\nexport type PaymentMethodCreateInput = z.infer<typeof paymentMethodCreateSchema>\nexport type PaymentMethodUpdateInput = z.infer<typeof paymentMethodUpdateSchema>\nexport type TaxRateCreateInput = z.infer<typeof taxRateCreateSchema>\nexport type TaxRateUpdateInput = z.infer<typeof taxRateUpdateSchema>\nexport type OrderCreateInput = z.infer<typeof orderCreateSchema>\nexport type OrderUpdateInput = z.infer<typeof orderUpdateSchema>\nexport type OrderLineCreateInput = z.infer<typeof orderLineCreateSchema>\nexport type OrderLineUpdateInput = z.infer<typeof orderLineUpdateSchema>\nexport type OrderAdjustmentCreateInput = z.infer<typeof orderAdjustmentCreateSchema>\nexport type OrderAdjustmentUpdateInput = z.infer<typeof orderAdjustmentUpdateSchema>\nexport type QuoteCreateInput = z.infer<typeof quoteCreateSchema>\nexport type QuoteUpdateInput = z.infer<typeof quoteUpdateSchema>\nexport type QuoteLineCreateInput = z.infer<typeof quoteLineCreateSchema>\nexport type QuoteLineUpdateInput = z.infer<typeof quoteLineUpdateSchema>\nexport type QuoteAdjustmentCreateInput = z.infer<typeof quoteAdjustmentCreateSchema>\nexport type QuoteAdjustmentUpdateInput = z.infer<typeof quoteAdjustmentUpdateSchema>\nexport type ShipmentCreateInput = z.infer<typeof shipmentCreateSchema>\nexport type ShipmentUpdateInput = z.infer<typeof shipmentUpdateSchema>\nexport type ReturnCreateInput = z.infer<typeof returnCreateSchema>\nexport type InvoiceCreateInput = z.infer<typeof invoiceCreateSchema>\nexport type InvoiceUpdateInput = z.infer<typeof invoiceUpdateSchema>\nexport type CreditMemoCreateInput = z.infer<typeof creditMemoCreateSchema>\nexport type CreditMemoUpdateInput = z.infer<typeof creditMemoUpdateSchema>\nexport const quoteSendSchema = z.object({\n quoteId: z.string().uuid(),\n validForDays: z.coerce.number().int().min(1).max(365).default(14),\n})\n\nexport const quoteAcceptSchema = z.object({\n token: z.string().uuid(),\n})\n\nexport type PaymentCreateInput = z.infer<typeof paymentCreateSchema>\nexport type PaymentUpdateInput = z.infer<typeof paymentUpdateSchema>\nexport type NoteCreateInput = z.infer<typeof noteCreateSchema>\nexport type NoteUpdateInput = z.infer<typeof noteUpdateSchema>\nexport type SalesTagCreateInput = z.infer<typeof salesTagCreateSchema>\nexport type SalesTagUpdateInput = z.infer<typeof salesTagUpdateSchema>\nexport type DocumentAddressCreateInput = z.infer<typeof documentAddressCreateSchema>\nexport type DocumentAddressUpdateInput = z.infer<typeof documentAddressUpdateSchema>\nexport type DocumentAddressDeleteInput = z.infer<typeof documentAddressDeleteSchema>\nexport type QuoteSendInput = z.infer<typeof quoteSendSchema>\nexport type QuoteAcceptInput = z.infer<typeof quoteAcceptSchema>\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod'\nimport {\n createDictionaryEntrySchema,\n updateDictionaryEntrySchema,\n} from '@open-mercato/core/modules/dictionaries/data/validators'\nimport { getPaymentProvider, getShippingProvider } from '../lib/providers'\nimport { REFERENCE_UNIT_CODES } from '@open-mercato/shared/lib/units/unitCodes'\nimport { isValidPhoneNumber } from '@open-mercato/shared/lib/phone'\n\nexport const SALES_PHONE_INVALID_MESSAGE_KEY = 'customers.people.form.primaryPhone.invalid'\n\nconst optionalPhoneField = (max = 50) =>\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY })\n .optional()\n\nconst optionalNullablePhoneField = (max = 50) =>\n z\n .union([\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY }),\n z.literal(''),\n z.null(),\n ])\n .optional()\n\nexport const customerSnapshotSchema = z\n .object({\n customer: z\n .object({\n primaryPhone: optionalNullablePhoneField(),\n })\n .passthrough()\n .nullable()\n .optional(),\n contact: z.unknown().optional(),\n })\n .passthrough()\n\nconst uuid = () => z.string().uuid()\n\nconst scoped = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst currencyCode = z\n .string()\n .trim()\n .regex(/^[A-Z]{3}$/, 'currency code must be a three-letter ISO code')\n\nconst decimal = (opts?: { min?: number; max?: number; message?: string }) => {\n let schema = z.coerce.number()\n if (typeof opts?.min === 'number') schema = schema.min(opts.min)\n if (typeof opts?.max === 'number') schema = schema.max(opts.max, opts.message)\n return schema\n}\n\nconst MAX_QUANTITY = 999_999_999\n\nconst percentage = () => decimal({ min: 0, max: 100 })\n\nconst jsonRecord = z.record(z.string(), z.unknown())\n\nconst metadata = jsonRecord.optional()\nconst providerSettings = jsonRecord.optional()\n\nconst channelCodeSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120)\n\nconst numberFormatSchema = z.string().trim().min(1).max(191)\nconst statusListSchema = z\n .array(z.string().trim().min(1).max(120))\n .max(200)\n .optional()\n .nullable()\n\nexport const salesSettingsUpsertSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema,\n quoteNumberFormat: numberFormatSchema,\n orderNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n quoteNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesSettingsUpsertInput = z.infer<typeof salesSettingsUpsertSchema>\n\nexport const salesEditingSettingsSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema.optional(),\n quoteNumberFormat: numberFormatSchema.optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesEditingSettingsInput = z.infer<typeof salesEditingSettingsSchema>\n\nexport const channelCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: channelCodeSchema,\n description: z.string().trim().max(2000).optional(),\n statusEntryId: uuid().optional(),\n websiteUrl: z.string().trim().url().max(300).optional(),\n contactEmail: z.string().trim().email().max(320).optional(),\n contactPhone: optionalPhoneField(),\n addressLine1: z.string().trim().max(255).optional(),\n addressLine2: z.string().trim().max(255).optional(),\n city: z.string().trim().max(120).optional(),\n region: z.string().trim().max(120).optional(),\n postalCode: z.string().trim().max(30).optional(),\n country: z.string().trim().max(2).optional(),\n latitude: decimal().optional(),\n longitude: decimal().optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const channelUpdateSchema = z\n .object({\n id: uuid(),\n code: channelCodeSchema,\n })\n .merge(channelCreateSchema.omit({ code: true }).partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst shippingMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n carrierCode: z.string().trim().max(120).optional(),\n providerKey: z.string().trim().max(120).optional(),\n serviceLevel: z.string().trim().max(120).optional(),\n estimatedTransitDays: z.coerce.number().int().min(0).max(365).optional(),\n baseRateNet: decimal({ min: 0 }).optional(),\n baseRateGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst shippingMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getShippingProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const shippingMethodCreateSchema = shippingMethodBaseSchema.superRefine(shippingMethodRefine)\n\nexport const shippingMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shippingMethodBaseSchema.partial())\n .superRefine(shippingMethodRefine)\n\nexport const deliveryWindowCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n leadTimeDays: z.coerce.number().int().min(0).max(365).optional(),\n cutoffTime: z.string().trim().regex(/^\\d{2}:\\d{2}$/).optional(),\n timezone: z.string().trim().max(120).optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const deliveryWindowUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(deliveryWindowCreateSchema.partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst paymentMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n providerKey: z.string().trim().max(120).optional(),\n terms: z.string().trim().max(4000).optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst paymentMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getPaymentProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const paymentMethodCreateSchema = paymentMethodBaseSchema.superRefine(paymentMethodRefine)\n\nexport const paymentMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentMethodBaseSchema.partial())\n .superRefine(paymentMethodRefine)\n\nexport const salesTagCreateSchema = scoped.extend({\n slug: z\n .string()\n .trim()\n .min(1)\n .max(80)\n .regex(/^[a-z0-9_-]+$/, 'Slug must be lowercase and may contain dashes or underscores'),\n label: z.string().trim().min(1).max(120),\n color: z.string().trim().max(30).optional(),\n description: z.string().trim().max(400).optional(),\n})\n\nexport const salesTagUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(salesTagCreateSchema.partial())\n\nexport const taxRateCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n rate: percentage(),\n countryCode: z.string().trim().length(2).optional(),\n regionCode: z.string().trim().max(6).optional(),\n postalCode: z.string().trim().max(30).optional(),\n city: z.string().trim().max(120).optional(),\n customerGroupId: uuid().optional(),\n productCategoryId: uuid().optional(),\n channelId: uuid().optional(),\n priority: z.coerce.number().int().min(0).max(10).optional(),\n isCompound: z.boolean().optional(),\n isDefault: z.boolean().optional(),\n metadata,\n startsAt: z.coerce.date().optional(),\n endsAt: z.coerce.date().optional(),\n})\n\nexport const taxRateUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(taxRateCreateSchema.partial())\n\nconst statusDictionaryEntryCreateSchema = z.object({\n value: createDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: createDictionaryEntrySchema.shape.color,\n icon: createDictionaryEntrySchema.shape.icon,\n})\n\nconst statusDictionaryEntryUpdateFieldsSchema = z.object({\n value: updateDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: updateDictionaryEntrySchema.shape.color,\n icon: updateDictionaryEntrySchema.shape.icon,\n})\n\nconst validateStatusDictionaryUpdate = (\n payload: z.infer<typeof statusDictionaryEntryUpdateFieldsSchema>,\n) => Object.values(payload).some((value) => value !== undefined)\n\nconst statusDictionaryEntryUpdateSchema = statusDictionaryEntryUpdateFieldsSchema.refine(\n validateStatusDictionaryUpdate,\n { message: 'Provide at least one field to update.' },\n)\n\nexport const statusDictionaryCreateSchema = scoped.merge(statusDictionaryEntryCreateSchema)\n\nexport const statusDictionaryUpdateSchema = scoped\n .merge(statusDictionaryEntryUpdateFieldsSchema)\n .safeExtend({ id: uuid() })\n .refine(validateStatusDictionaryUpdate, { message: 'Provide at least one field to update.' })\n\nconst lineKindSchema = z.enum(['product', 'service', 'shipping', 'discount', 'adjustment'])\n\nconst adjustmentKindSchema = z.string().trim().min(1).max(150)\n\nconst linePricingSchema = z.object({\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n priceId: uuid().optional(),\n priceMode: z.enum(['net', 'gross']).optional(),\n taxRateId: uuid().optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nconst uomSnapshotSchema = z.object({\n version: z.literal(1),\n productId: z.string().nullable(),\n productVariantId: z.string().nullable(),\n baseUnitCode: z.string().nullable(),\n enteredUnitCode: z.string().nullable(),\n enteredQuantity: z.string(),\n toBaseFactor: z.string(),\n normalizedQuantity: z.string(),\n rounding: z.object({\n mode: z.enum(['half_up', 'down', 'up']),\n scale: z.number().int(),\n }),\n source: z.object({\n conversionId: z.string().nullable(),\n resolvedAt: z.string(),\n }),\n unitPriceReference: z.object({\n enabled: z.boolean(),\n referenceUnitCode: z.enum(REFERENCE_UNIT_CODES).nullable(),\n baseQuantity: z.string().nullable(),\n grossPerReference: z.string().nullable().optional(),\n netPerReference: z.string().nullable().optional(),\n }).optional(),\n}).nullable().optional()\n\nconst lineSharedSchema = z.object({\n kind: lineKindSchema.optional(),\n statusEntryId: uuid().optional(),\n productId: uuid().optional(),\n productVariantId: uuid().optional(),\n name: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n comment: z.string().trim().max(2000).optional(),\n currencyCode,\n configuration: z.record(z.string(), z.unknown()).optional(),\n promotionCode: z.string().trim().max(120).optional(),\n promotionSnapshot: z.record(z.string(), z.unknown()).optional(),\n uomSnapshot: uomSnapshotSchema,\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineCreateSchema = scoped.extend({\n orderId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderLineCreateSchema.partial())\n\nexport const quoteLineCreateSchema = scoped.extend({\n quoteId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const quoteLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteLineCreateSchema.partial())\n\n// Each adjustment kind has an intrinsic sign convention so the grand total\n// stays semantically correct regardless of operator input. The calculation\n// engine normalizes signs defensively, but the API edge rejects values that\n// would invert the kind's meaning so bad data never reaches storage.\n//\n// - `return`: non-positive \u2014 returns reduce the total (see #1705).\n// - `discount`: non-negative \u2014 discounts reduce the total.\n// - `surcharge`/`shipping`/`tax`: non-negative \u2014 they add to the total.\n// - `custom` and unknown kinds: unconstrained (operator-controlled).\n//\n// See #1905.\nexport const RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE =\n 'Return adjustments must use a non-positive amountNet (returns reduce the total).'\nexport const RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE =\n 'Return adjustments must use a non-positive amountGross (returns reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Discount adjustments must use a non-negative amountNet (discounts reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Discount adjustments must use a non-negative amountGross (discounts reduce the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountNet (surcharges add to the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountGross (surcharges add to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Shipping adjustments must use a non-negative amountNet (shipping adds to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Shipping adjustments must use a non-negative amountGross (shipping adds to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Tax adjustments must use a non-negative amountNet (taxes add to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Tax adjustments must use a non-negative amountGross (taxes add to the total).'\n\ntype AdjustmentSignInput = {\n kind?: string\n amountNet?: number\n amountGross?: number\n}\n\nconst NON_NEGATIVE_SIGN_MESSAGES: Record<string, { net: string; gross: string }> = {\n discount: {\n net: DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n surcharge: {\n net: SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n shipping: {\n net: SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n tax: {\n net: TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n}\n\nexport const enforceAdjustmentSign = (\n value: AdjustmentSignInput,\n ctx: z.RefinementCtx\n) => {\n if (!value.kind) return\n if (value.kind === 'return') {\n if (typeof value.amountNet === 'number' && value.amountNet > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE,\n path: ['amountGross'],\n })\n }\n return\n }\n const messages = NON_NEGATIVE_SIGN_MESSAGES[value.kind]\n if (!messages) return\n if (typeof value.amountNet === 'number' && value.amountNet < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.net,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.gross,\n path: ['amountGross'],\n })\n }\n}\n\n/**\n * @deprecated Use `enforceAdjustmentSign` \u2014 it enforces the sign convention\n * for every adjustment kind, not just `return`. Kept for backward compatibility\n * with third-party code that imported the original helper.\n */\nexport const enforceReturnAdjustmentSign = enforceAdjustmentSign\n\nexport const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE =\n 'Return adjustment amountNet exceeds the remaining grand total. Reduce the amount or remove existing returns first.'\nexport const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE =\n 'Return adjustment amountGross exceeds the remaining grand total. Reduce the amount or remove existing returns first.'\n\nexport type ReturnAdjustmentRemainingCheck = {\n kind?: string | null\n amountNet?: number | null\n amountGross?: number | null\n remainingNet: number\n remainingGross: number\n}\n\nexport type ReturnAdjustmentRemainingIssue = {\n path: 'amountNet' | 'amountGross'\n message: string\n}\n\n// Inclusive: abs(amount) === remaining is allowed. Tiny epsilon absorbs\n// floating-point rounding from upstream tax/rate adjustments.\nconst RETURN_REMAINING_EPSILON = 0.005\n\nexport const validateReturnAdjustmentWithinRemaining = (\n value: ReturnAdjustmentRemainingCheck\n): ReturnAdjustmentRemainingIssue[] => {\n if (value.kind !== 'return') return []\n const absNet = typeof value.amountNet === 'number' ? Math.abs(value.amountNet) : 0\n const absGross = typeof value.amountGross === 'number' ? Math.abs(value.amountGross) : 0\n const issues: ReturnAdjustmentRemainingIssue[] = []\n if (absGross > value.remainingGross + RETURN_REMAINING_EPSILON) {\n issues.push({ path: 'amountGross', message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE })\n }\n if (absNet > value.remainingNet + RETURN_REMAINING_EPSILON) {\n issues.push({ path: 'amountNet', message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE })\n }\n return issues\n}\n\nexport const orderAdjustmentCreateSchema = scoped.extend({\n orderId: uuid(),\n orderLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderAdjustmentCreateSchema.partial())\n\nexport const quoteAdjustmentCreateSchema = scoped.extend({\n quoteId: uuid(),\n quoteLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const quoteAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteAdjustmentCreateSchema.partial())\n\nconst orderTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n shippingNetAmount: decimal({ min: 0 }).optional(),\n shippingGrossAmount: decimal({ min: 0 }).optional(),\n surchargeTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n refundedTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nconst quoteTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderCreateSchema = scoped.extend({\n orderNumber: z.string().trim().min(1).max(191).optional(),\n externalReference: z.string().trim().max(191).optional(),\n customerReference: z.string().trim().max(191).optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n exchangeRate: decimal({ min: 0 }).optional(),\n statusEntryId: uuid().optional(),\n fulfillmentStatusEntryId: uuid().optional(),\n paymentStatusEntryId: uuid().optional(),\n taxStrategyKey: z.string().trim().max(120).optional(),\n discountStrategyKey: z.string().trim().max(120).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n channelId: uuid().optional(),\n placedAt: z.coerce.date().optional(),\n expectedDeliveryAt: z.coerce.date().optional(),\n dueAt: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n internalNotes: z.string().trim().max(4000).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z.array(orderLineCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n adjustments: z.array(orderAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n tags: z.array(uuid()).optional(),\n ...orderTotalsSchema.shape,\n})\n\nexport const orderUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderCreateSchema.partial())\n\nexport const quoteCreateSchema = scoped.extend({\n quoteNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n channelId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n validFrom: z.coerce.date().optional(),\n validUntil: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(quoteLineCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n adjustments: z\n .array(quoteAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n tags: z.array(uuid()).optional(),\n ...quoteTotalsSchema.shape,\n})\n\nexport const quoteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteCreateSchema.partial())\n\nconst documentKind = z.enum(['order', 'quote'])\n\nconst documentAddressFields = {\n documentId: uuid(),\n documentKind,\n customerAddressId: uuid().optional(),\n name: z.string().trim().max(255).nullable().optional(),\n purpose: z.string().trim().max(120).nullable().optional(),\n companyName: z.string().trim().max(255).nullable().optional(),\n addressLine1: z.string().trim().min(1).max(255),\n addressLine2: z.string().trim().max(255).nullable().optional(),\n city: z.string().trim().max(120).nullable().optional(),\n region: z.string().trim().max(120).nullable().optional(),\n postalCode: z.string().trim().max(60).nullable().optional(),\n country: z.string().trim().max(2).nullable().optional(),\n buildingNumber: z.string().trim().max(60).nullable().optional(),\n flatNumber: z.string().trim().max(60).nullable().optional(),\n latitude: z.coerce.number().optional().nullable(),\n longitude: z.coerce.number().optional().nullable(),\n}\n\nexport const documentAddressCreateSchema = scoped.extend(documentAddressFields)\n\nexport const documentAddressUpdateSchema = scoped.extend({\n id: uuid(),\n ...documentAddressFields,\n})\n\nexport const documentAddressDeleteSchema = scoped.extend({\n id: uuid(),\n documentId: uuid(),\n documentKind,\n})\n\nexport const shipmentCreateSchema = scoped.extend({\n orderId: uuid(),\n shipmentNumber: z.string().trim().max(191).optional(),\n shippingMethodId: uuid().optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n carrierName: z.string().trim().max(191).optional(),\n trackingNumbers: z.array(z.string().trim().max(191)).optional(),\n shippedAt: z.coerce.date().optional(),\n deliveredAt: z.coerce.date().optional(),\n weightValue: decimal({ min: 0 }).optional(),\n weightUnit: z.string().trim().max(25).optional(),\n declaredValueNet: decimal({ min: 0 }).optional(),\n declaredValueGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n notes: z.string().trim().max(4000).optional(),\n metadata,\n shipmentAddressSnapshot: jsonRecord.optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n items: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).int('Quantity must be a whole number.'),\n metadata,\n })\n )\n .optional(),\n})\n\nexport const shipmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shipmentCreateSchema.partial())\n\nconst returnLineQuantitySchema = z.coerce\n .number()\n .int('Return quantity must be a whole number.')\n .min(1, 'Return quantity must be at least 1.')\n .max(MAX_QUANTITY, 'Quantity is too large.')\n\nexport const returnCreateSchema = scoped.extend({\n orderId: uuid(),\n reason: z.string().trim().max(4000).optional(),\n notes: z.string().trim().max(4000).optional(),\n returnedAt: z.coerce.date().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: returnLineQuantitySchema,\n })\n )\n .min(1),\n})\n\nexport const returnUpdateSchema = scoped.extend({\n id: uuid(),\n orderId: uuid(),\n reason: z.string().trim().max(4000).optional(),\n notes: z.string().trim().max(4000).optional(),\n returnedAt: z.coerce.date().optional(),\n})\n\nexport const returnDeleteSchema = scoped.extend({\n id: uuid(),\n orderId: uuid(),\n})\n\nexport const invoiceCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n dueDate: z.coerce.date().optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n kind: lineKindSchema.optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n})\n\nexport const invoiceUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(invoiceCreateSchema.partial())\n\nexport const creditMemoCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n creditMemoNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n reason: z.string().trim().max(4000).optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nexport const creditMemoUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(creditMemoCreateSchema.partial())\n\nexport const paymentCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n paymentMethodId: uuid().optional(),\n paymentReference: z.string().trim().max(191).optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n capturedAmount: decimal({ min: 0 }).optional(),\n refundedAmount: decimal({ min: 0 }).optional(),\n receivedAt: z.coerce.date().optional(),\n capturedAt: z.coerce.date().optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n allocations: z\n .array(\n z.object({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n metadata,\n })\n )\n .optional(),\n})\n\nexport const paymentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentCreateSchema.partial())\n\nexport const noteCreateSchema = scoped.extend({\n contextType: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n contextId: uuid(),\n orderId: uuid().optional(),\n quoteId: uuid().optional(),\n authorUserId: uuid().optional(),\n body: z.string().trim().min(1).max(8000),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const noteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(\n z\n .object({\n body: z.string().trim().min(1).max(8000).optional(),\n })\n .extend({\n authorUserId: uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n })\n )\n\nexport const documentNumberRequestSchema = scoped.extend({\n kind: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n format: numberFormatSchema.optional(),\n})\n\nexport type DocumentNumberRequestInput = z.infer<typeof documentNumberRequestSchema>\n\nexport type ChannelCreateInput = z.infer<typeof channelCreateSchema>\nexport type ChannelUpdateInput = z.infer<typeof channelUpdateSchema>\nexport type ShippingMethodCreateInput = z.infer<typeof shippingMethodCreateSchema>\nexport type ShippingMethodUpdateInput = z.infer<typeof shippingMethodUpdateSchema>\nexport type DeliveryWindowCreateInput = z.infer<typeof deliveryWindowCreateSchema>\nexport type DeliveryWindowUpdateInput = z.infer<typeof deliveryWindowUpdateSchema>\nexport type PaymentMethodCreateInput = z.infer<typeof paymentMethodCreateSchema>\nexport type PaymentMethodUpdateInput = z.infer<typeof paymentMethodUpdateSchema>\nexport type TaxRateCreateInput = z.infer<typeof taxRateCreateSchema>\nexport type TaxRateUpdateInput = z.infer<typeof taxRateUpdateSchema>\nexport type OrderCreateInput = z.infer<typeof orderCreateSchema>\nexport type OrderUpdateInput = z.infer<typeof orderUpdateSchema>\nexport type OrderLineCreateInput = z.infer<typeof orderLineCreateSchema>\nexport type OrderLineUpdateInput = z.infer<typeof orderLineUpdateSchema>\nexport type OrderAdjustmentCreateInput = z.infer<typeof orderAdjustmentCreateSchema>\nexport type OrderAdjustmentUpdateInput = z.infer<typeof orderAdjustmentUpdateSchema>\nexport type QuoteCreateInput = z.infer<typeof quoteCreateSchema>\nexport type QuoteUpdateInput = z.infer<typeof quoteUpdateSchema>\nexport type QuoteLineCreateInput = z.infer<typeof quoteLineCreateSchema>\nexport type QuoteLineUpdateInput = z.infer<typeof quoteLineUpdateSchema>\nexport type QuoteAdjustmentCreateInput = z.infer<typeof quoteAdjustmentCreateSchema>\nexport type QuoteAdjustmentUpdateInput = z.infer<typeof quoteAdjustmentUpdateSchema>\nexport type ShipmentCreateInput = z.infer<typeof shipmentCreateSchema>\nexport type ShipmentUpdateInput = z.infer<typeof shipmentUpdateSchema>\nexport type ReturnCreateInput = z.infer<typeof returnCreateSchema>\nexport type ReturnUpdateInput = z.infer<typeof returnUpdateSchema>\nexport type ReturnDeleteInput = z.infer<typeof returnDeleteSchema>\nexport type InvoiceCreateInput = z.infer<typeof invoiceCreateSchema>\nexport type InvoiceUpdateInput = z.infer<typeof invoiceUpdateSchema>\nexport type CreditMemoCreateInput = z.infer<typeof creditMemoCreateSchema>\nexport type CreditMemoUpdateInput = z.infer<typeof creditMemoUpdateSchema>\nexport const quoteSendSchema = z.object({\n quoteId: z.string().uuid(),\n validForDays: z.coerce.number().int().min(1).max(365).default(14),\n})\n\nexport const quoteAcceptSchema = z.object({\n token: z.string().uuid(),\n})\n\nexport type PaymentCreateInput = z.infer<typeof paymentCreateSchema>\nexport type PaymentUpdateInput = z.infer<typeof paymentUpdateSchema>\nexport type NoteCreateInput = z.infer<typeof noteCreateSchema>\nexport type NoteUpdateInput = z.infer<typeof noteUpdateSchema>\nexport type SalesTagCreateInput = z.infer<typeof salesTagCreateSchema>\nexport type SalesTagUpdateInput = z.infer<typeof salesTagUpdateSchema>\nexport type DocumentAddressCreateInput = z.infer<typeof documentAddressCreateSchema>\nexport type DocumentAddressUpdateInput = z.infer<typeof documentAddressUpdateSchema>\nexport type DocumentAddressDeleteInput = z.infer<typeof documentAddressDeleteSchema>\nexport type QuoteSendInput = z.infer<typeof quoteSendSchema>\nexport type QuoteAcceptInput = z.infer<typeof quoteAcceptSchema>\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,SAAS;AAClB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB,2BAA2B;AACxD,SAAS,4BAA4B;AACrC,SAAS,0BAA0B;AAE5B,MAAM,kCAAkC;AAE/C,MAAM,qBAAqB,CAAC,MAAM,OAChC,EACG,OAAO,EACP,KAAK,EACL,IAAI,GAAG,EACP,OAAO,CAAC,QAAQ,mBAAmB,GAAG,GAAG,EAAE,SAAS,gCAAgC,CAAC,EACrF,SAAS;AAEd,MAAM,6BAA6B,CAAC,MAAM,OACxC,EACG,MAAM;AAAA,EACL,EACG,OAAO,EACP,KAAK,EACL,IAAI,GAAG,EACP,OAAO,CAAC,QAAQ,mBAAmB,GAAG,GAAG,EAAE,SAAS,gCAAgC,CAAC;AAAA,EACxF,EAAE,QAAQ,EAAE;AAAA,EACZ,EAAE,KAAK;AACT,CAAC,EACA,SAAS;AAEP,MAAM,yBAAyB,EACnC,OAAO;AAAA,EACN,UAAU,EACP,OAAO;AAAA,IACN,cAAc,2BAA2B;AAAA,EAC3C,CAAC,EACA,YAAY,EACZ,SAAS,EACT,SAAS;AAAA,EACZ,SAAS,EAAE,QAAQ,EAAE,SAAS;AAChC,CAAC,EACA,YAAY;AAEf,MAAM,OAAO,MAAM,EAAE,OAAO,EAAE,KAAK;AAEnC,MAAM,SAAS,EAAE,OAAO;AAAA,EACtB,gBAAgB,KAAK;AAAA,EACrB,UAAU,KAAK;AACjB,CAAC;AAED,MAAM,eAAe,EAClB,OAAO,EACP,KAAK,EACL,MAAM,cAAc,+CAA+C;AAEtE,MAAM,UAAU,CAAC,SAA4D;AAC3E,MAAI,SAAS,EAAE,OAAO,OAAO;AAC7B,MAAI,OAAO,MAAM,QAAQ,SAAU,UAAS,OAAO,IAAI,KAAK,GAAG;AAC/D,MAAI,OAAO,MAAM,QAAQ,SAAU,UAAS,OAAO,IAAI,KAAK,KAAK,KAAK,OAAO;AAC7E,SAAO;AACT;AAEA,MAAM,eAAe;AAErB,MAAM,aAAa,MAAM,QAAQ,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC;AAErD,MAAM,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAEnD,MAAM,WAAW,WAAW,SAAS;AACrC,MAAM,mBAAmB,WAAW,SAAS;AAE7C,MAAM,oBAAoB,EACvB,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,gBAAgB,EACtB,IAAI,GAAG;AAEV,MAAM,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC3D,MAAM,mBAAmB,EACtB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EACvC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAEL,MAAM,4BAA4B,OAAO,OAAO;AAAA,EACrD,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAa,EAAE,SAAS;AAAA,EAC5E,iBAAiB,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAa,EAAE,SAAS;AAAA,EAC5E,+BAA+B;AAAA,EAC/B,8BAA8B;AAChC,CAAC;AAIM,MAAM,6BAA6B,OAAO,OAAO;AAAA,EACtD,mBAAmB,mBAAmB,SAAS;AAAA,EAC/C,mBAAmB,mBAAmB,SAAS;AAAA,EAC/C,+BAA+B;AAAA,EAC/B,8BAA8B;AAChC,CAAC;AAIM,MAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,MAAM;AAAA,EACN,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAClD,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACtD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1D,cAAc,mBAAmB;AAAA,EACjC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAClD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAClD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1C,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC5C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EAC/C,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC3C,UAAU,QAAQ,EAAE,SAAS;AAAA,EAC7B,WAAW,QAAQ,EAAE,SAAS;AAAA,EAC9B,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B;AACF,CAAC;AAEM,MAAM,sBAAsB,EAChC,OAAO;AAAA,EACN,IAAI,KAAK;AAAA,EACT,MAAM;AACR,CAAC,EACA,MAAM,oBAAoB,KAAK,EAAE,MAAM,KAAK,CAAC,EAAE,QAAQ,CAAC;AAG3D,MAAM,2BAA2B,OAAO,OAAO;AAAA,EAC7C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,MAAM,EACH,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,gBAAgB,EACtB,IAAI,GAAG;AAAA,EACV,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAClD,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACjD,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACjD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAClD,sBAAsB,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACvE,aAAa,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC1C,eAAe,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC5C,cAAc,aAAa,SAAS;AAAA,EACpC,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B;AAAA,EACA;AACF,CAAC;AAGD,MAAM,uBAAuB,CAAC,OAA6E,QAAyB;AAClI,MAAI,MAAM,aAAa;AACrB,UAAM,WAAW,oBAAoB,MAAM,WAAW;AACtD,UAAM,SAAS,UAAU,UAAU;AACnC,QAAI,QAAQ;AACV,YAAM,SAAS,OAAO,UAAU,MAAM,oBAAoB,CAAC,CAAC;AAC5D,UAAI,CAAC,OAAO,SAAS;AACnB,YAAI,SAAS;AAAA,UACX,MAAM,EAAE,aAAa;AAAA,UACrB,SAAS,OAAO,MAAM,SAAS,CAAC,GAAG,WAAW;AAAA,UAC9C,MAAM,CAAC,kBAAkB;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,6BAA6B,yBAAyB,YAAY,oBAAoB;AAE5F,MAAM,6BAA6B,EACvC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,yBAAyB,QAAQ,CAAC,EACxC,YAAY,oBAAoB;AAE5B,MAAM,6BAA6B,OAAO,OAAO;AAAA,EACtD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,MAAM,EACH,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,gBAAgB,EACtB,IAAI,GAAG;AAAA,EACV,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAClD,cAAc,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC/D,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,EAAE,SAAS;AAAA,EAC9D,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC9C,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B;AACF,CAAC;AAEM,MAAM,6BAA6B,EACvC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,2BAA2B,QAAQ,CAAC;AAG7C,MAAM,0BAA0B,OAAO,OAAO;AAAA,EAC5C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,MAAM,EACH,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,gBAAgB,EACtB,IAAI,GAAG;AAAA,EACV,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAClD,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC5C,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B;AAAA,EACA;AACF,CAAC;AAGD,MAAM,sBAAsB,CAAC,OAA6E,QAAyB;AACjI,MAAI,MAAM,aAAa;AACrB,UAAM,WAAW,mBAAmB,MAAM,WAAW;AACrD,UAAM,SAAS,UAAU,UAAU;AACnC,QAAI,QAAQ;AACV,YAAM,SAAS,OAAO,UAAU,MAAM,oBAAoB,CAAC,CAAC;AAC5D,UAAI,CAAC,OAAO,SAAS;AACnB,YAAI,SAAS;AAAA,UACX,MAAM,EAAE,aAAa;AAAA,UACrB,SAAS,OAAO,MAAM,SAAS,CAAC,GAAG,WAAW;AAAA,UAC9C,MAAM,CAAC,kBAAkB;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,4BAA4B,wBAAwB,YAAY,mBAAmB;AAEzF,MAAM,4BAA4B,EACtC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,wBAAwB,QAAQ,CAAC,EACvC,YAAY,mBAAmB;AAE3B,MAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD,MAAM,EACH,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,EAAE,EACN,MAAM,iBAAiB,8DAA8D;AAAA,EACxF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EAC1C,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AACnD,CAAC;AAEM,MAAM,uBAAuB,EACjC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,qBAAqB,QAAQ,CAAC;AAEhC,MAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,MAAM,EACH,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,gBAAgB,EACtB,IAAI,GAAG;AAAA,EACV,MAAM,WAAW;AAAA,EACjB,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAClD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC9C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EAC/C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1C,iBAAiB,KAAK,EAAE,SAAS;AAAA,EACjC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,WAAW,KAAK,EAAE,SAAS;AAAA,EAC3B,UAAU,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EAC1D,YAAY,EAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,WAAW,EAAE,QAAQ,EAAE,SAAS;AAAA,EAChC;AAAA,EACA,UAAU,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACnC,QAAQ,EAAE,OAAO,KAAK,EAAE,SAAS;AACnC,CAAC;AAEM,MAAM,sBAAsB,EAChC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,oBAAoB,QAAQ,CAAC;AAEtC,MAAM,oCAAoC,EAAE,OAAO;AAAA,EACjD,OAAO,4BAA4B,MAAM;AAAA,EACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAClD,OAAO,4BAA4B,MAAM;AAAA,EACzC,MAAM,4BAA4B,MAAM;AAC1C,CAAC;AAED,MAAM,0CAA0C,EAAE,OAAO;AAAA,EACvD,OAAO,4BAA4B,MAAM;AAAA,EACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAClD,OAAO,4BAA4B,MAAM;AAAA,EACzC,MAAM,4BAA4B,MAAM;AAC1C,CAAC;AAED,MAAM,iCAAiC,CACrC,YACG,OAAO,OAAO,OAAO,EAAE,KAAK,CAAC,UAAU,UAAU,MAAS;AAE/D,MAAM,oCAAoC,wCAAwC;AAAA,EAChF;AAAA,EACA,EAAE,SAAS,wCAAwC;AACrD;AAEO,MAAM,+BAA+B,OAAO,MAAM,iCAAiC;AAEnF,MAAM,+BAA+B,OACzC,MAAM,uCAAuC,EAC7C,WAAW,EAAE,IAAI,KAAK,EAAE,CAAC,EACzB,OAAO,gCAAgC,EAAE,SAAS,wCAAwC,CAAC;AAE9F,MAAM,iBAAiB,EAAE,KAAK,CAAC,WAAW,WAAW,YAAY,YAAY,YAAY,CAAC;AAE1F,MAAM,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAE7D,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,UAAU,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC;AAAA,EAClF,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EACjD,oBAAoB,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC,EAAE,SAAS;AAAA,EACvG,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9D,cAAc,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC3C,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,SAAS,KAAK,EAAE,SAAS;AAAA,EACzB,WAAW,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,WAAW,KAAK,EAAE,SAAS;AAAA,EAC3B,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,iBAAiB,WAAW,EAAE,SAAS;AAAA,EACvC,SAAS,WAAW,EAAE,SAAS;AAAA,EAC/B,WAAW,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EACxC,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,kBAAkB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AACjD,CAAC;AAED,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,SAAS,EAAE,QAAQ,CAAC;AAAA,EACpB,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EACrC,iBAAiB,EAAE,OAAO;AAAA,EAC1B,cAAc,EAAE,OAAO;AAAA,EACvB,oBAAoB,EAAE,OAAO;AAAA,EAC7B,UAAU,EAAE,OAAO;AAAA,IACjB,MAAM,EAAE,KAAK,CAAC,WAAW,QAAQ,IAAI,CAAC;AAAA,IACtC,OAAO,EAAE,OAAO,EAAE,IAAI;AAAA,EACxB,CAAC;AAAA,EACD,QAAQ,EAAE,OAAO;AAAA,IACf,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,IAClC,YAAY,EAAE,OAAO;AAAA,EACvB,CAAC;AAAA,EACD,oBAAoB,EAAE,OAAO;AAAA,IAC3B,SAAS,EAAE,QAAQ;AAAA,IACnB,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,SAAS;AAAA,IACzD,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,IAClC,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAClD,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAClD,CAAC,EAAE,SAAS;AACd,CAAC,EAAE,SAAS,EAAE,SAAS;AAEvB,MAAM,mBAAmB,EAAE,OAAO;AAAA,EAChC,MAAM,eAAe,SAAS;AAAA,EAC9B,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,WAAW,KAAK,EAAE,SAAS;AAAA,EAC3B,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1C,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAClD,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC9C;AAAA,EACA,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC1D,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACnD,mBAAmB,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC9D,aAAa;AAAA,EACb;AAAA,EACA,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAC3D,CAAC;AAEM,MAAM,wBAAwB,OAAO,OAAO;AAAA,EACjD,SAAS,KAAK;AAAA,EACd,YAAY,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACpD,GAAG,iBAAiB;AAAA,EACpB,GAAG,kBAAkB;AAAA,EACrB,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAC9D,CAAC;AAEM,MAAM,wBAAwB,EAClC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,sBAAsB,QAAQ,CAAC;AAEjC,MAAM,wBAAwB,OAAO,OAAO;AAAA,EACjD,SAAS,KAAK;AAAA,EACd,YAAY,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACpD,GAAG,iBAAiB;AAAA,EACpB,GAAG,kBAAkB;AAAA,EACrB,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAC9D,CAAC;AAEM,MAAM,wBAAwB,EAClC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,sBAAsB,QAAQ,CAAC;AAajC,MAAM,yCACX;AACK,MAAM,2CACX;AACK,MAAM,2CACX;AACK,MAAM,6CACX;AACK,MAAM,4CACX;AACK,MAAM,8CACX;AACK,MAAM,2CACX;AACK,MAAM,6CACX;AACK,MAAM,sCACX;AACK,MAAM,wCACX;AAQF,MAAM,6BAA6E;AAAA,EACjF,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAAA,EACA,WAAW;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AACF;AAEO,MAAM,wBAAwB,CACnC,OACA,QACG;AACH,MAAI,CAAC,MAAM,KAAM;AACjB,MAAI,MAAM,SAAS,UAAU;AAC3B,QAAI,OAAO,MAAM,cAAc,YAAY,MAAM,YAAY,GAAG;AAC9D,UAAI,SAAS;AAAA,QACX,MAAM,EAAE,aAAa;AAAA,QACrB,SAAS;AAAA,QACT,MAAM,CAAC,WAAW;AAAA,MACpB,CAAC;AAAA,IACH;AACA,QAAI,OAAO,MAAM,gBAAgB,YAAY,MAAM,cAAc,GAAG;AAClE,UAAI,SAAS;AAAA,QACX,MAAM,EAAE,aAAa;AAAA,QACrB,SAAS;AAAA,QACT,MAAM,CAAC,aAAa;AAAA,MACtB,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,QAAM,WAAW,2BAA2B,MAAM,IAAI;AACtD,MAAI,CAAC,SAAU;AACf,MAAI,OAAO,MAAM,cAAc,YAAY,MAAM,YAAY,GAAG;AAC9D,QAAI,SAAS;AAAA,MACX,MAAM,EAAE,aAAa;AAAA,MACrB,SAAS,SAAS;AAAA,MAClB,MAAM,CAAC,WAAW;AAAA,IACpB,CAAC;AAAA,EACH;AACA,MAAI,OAAO,MAAM,gBAAgB,YAAY,MAAM,cAAc,GAAG;AAClE,QAAI,SAAS;AAAA,MACX,MAAM,EAAE,aAAa;AAAA,MACrB,SAAS,SAAS;AAAA,MAClB,MAAM,CAAC,aAAa;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAOO,MAAM,8BAA8B;AAEpC,MAAM,kDACX;AACK,MAAM,oDACX;AAiBF,MAAM,2BAA2B;AAE1B,MAAM,0CAA0C,CACrD,UACqC;AACrC,MAAI,MAAM,SAAS,SAAU,QAAO,CAAC;AACrC,QAAM,SAAS,OAAO,MAAM,cAAc,WAAW,KAAK,IAAI,MAAM,SAAS,IAAI;AACjF,QAAM,WAAW,OAAO,MAAM,gBAAgB,WAAW,KAAK,IAAI,MAAM,WAAW,IAAI;AACvF,QAAM,SAA2C,CAAC;AAClD,MAAI,WAAW,MAAM,iBAAiB,0BAA0B;AAC9D,WAAO,KAAK,EAAE,MAAM,eAAe,SAAS,kDAAkD,CAAC;AAAA,EACjG;AACA,MAAI,SAAS,MAAM,eAAe,0BAA0B;AAC1D,WAAO,KAAK,EAAE,MAAM,aAAa,SAAS,gDAAgD,CAAC;AAAA,EAC7F;AACA,SAAO;AACT;AAEO,MAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,SAAS,KAAK;AAAA,EACd,aAAa,KAAK,EAAE,SAAS;AAAA,EAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EAC1C,MAAM,qBAAqB,SAAS;AAAA,EACpC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC3C,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACnD,aAAa,KAAK,EAAE,SAAS;AAAA,EAC7B,MAAM,WAAW,EAAE,SAAS;AAAA,EAC5B,WAAW,QAAQ,EAAE,SAAS;AAAA,EAC9B,aAAa,QAAQ,EAAE,SAAS;AAAA,EAChC,cAAc,aAAa,SAAS;AAAA,EACpC;AAAA,EACA,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACzD,UAAU,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AACpD,CAAC;AAEM,MAAM,8BAA8B,EACxC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,4BAA4B,QAAQ,CAAC;AAEvC,MAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,SAAS,KAAK;AAAA,EACd,aAAa,KAAK,EAAE,SAAS;AAAA,EAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EAC1C,MAAM,qBAAqB,SAAS;AAAA,EACpC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC3C,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACnD,aAAa,KAAK,EAAE,SAAS;AAAA,EAC7B,MAAM,WAAW,EAAE,SAAS;AAAA,EAC5B,WAAW,QAAQ,EAAE,SAAS;AAAA,EAC9B,aAAa,QAAQ,EAAE,SAAS;AAAA,EAChC,cAAc,aAAa,SAAS;AAAA,EACpC;AAAA,EACA,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACzD,UAAU,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AACpD,CAAC;AAEM,MAAM,8BAA8B,EACxC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,4BAA4B,QAAQ,CAAC;AAE9C,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,mBAAmB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,mBAAmB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,sBAAsB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EACnD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,uBAAuB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EACpD,iBAAiB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC9C,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,mBAAmB,QAAQ,EAAE,SAAS;AAAA,EACtC,eAAe,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AACzD,CAAC;AAED,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,mBAAmB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,uBAAuB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EACpD,eAAe,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AACzD,CAAC;AAEM,MAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACvD,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACvD,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,kBAAkB,uBAAuB,SAAS;AAAA,EAClD,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,wBAAwB,WAAW,SAAS;AAAA,EAC5C,yBAAyB,WAAW,SAAS;AAAA,EAC7C;AAAA,EACA,cAAc,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC3C,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,0BAA0B,KAAK,EAAE,SAAS;AAAA,EAC1C,sBAAsB,KAAK,EAAE,SAAS;AAAA,EACtC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACpD,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACzD,SAAS,WAAW,SAAS;AAAA,EAC7B,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,iBAAiB,KAAK,EAAE,SAAS;AAAA,EACjC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACvD,WAAW,KAAK,EAAE,SAAS;AAAA,EAC3B,UAAU,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACnC,oBAAoB,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EAC7C,OAAO,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EAChC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC/C,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EACpD,wBAAwB,WAAW,SAAS;AAAA,EAC5C,wBAAwB,WAAW,SAAS;AAAA,EAC5C,uBAAuB,WAAW,SAAS;AAAA,EAC3C;AAAA,EACA,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,OAAO,EAAE,MAAM,sBAAsB,KAAK,EAAE,gBAAgB,MAAM,UAAU,MAAM,SAAS,KAAK,CAAC,CAAC,EAAE,SAAS;AAAA,EAC7G,aAAa,EAAE,MAAM,4BAA4B,KAAK,EAAE,gBAAgB,MAAM,UAAU,MAAM,SAAS,KAAK,CAAC,CAAC,EAAE,SAAS;AAAA,EACzH,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,SAAS;AAAA,EAC/B,GAAG,kBAAkB;AACvB,CAAC;AAEM,MAAM,oBAAoB,EAC9B,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,kBAAkB,QAAQ,CAAC;AAE7B,MAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,WAAW,KAAK,EAAE,SAAS;AAAA,EAC3B,kBAAkB,uBAAuB,SAAS;AAAA,EAClD,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,wBAAwB,WAAW,SAAS;AAAA,EAC5C,yBAAyB,WAAW,SAAS;AAAA,EAC7C;AAAA,EACA,WAAW,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACpC,YAAY,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACrC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC/C,SAAS,WAAW,SAAS;AAAA,EAC7B,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,iBAAiB,KAAK,EAAE,SAAS;AAAA,EACjC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACvD,wBAAwB,WAAW,SAAS;AAAA,EAC5C,wBAAwB,WAAW,SAAS;AAAA,EAC5C,uBAAuB,WAAW,SAAS;AAAA,EAC3C;AAAA,EACA,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,OAAO,EACJ,MAAM,sBAAsB,KAAK,EAAE,gBAAgB,MAAM,UAAU,MAAM,SAAS,KAAK,CAAC,CAAC,EACzF,SAAS;AAAA,EACZ,aAAa,EACV,MAAM,4BAA4B,KAAK,EAAE,gBAAgB,MAAM,UAAU,MAAM,SAAS,KAAK,CAAC,CAAC,EAC/F,SAAS;AAAA,EACZ,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,SAAS;AAAA,EAC/B,GAAG,kBAAkB;AACvB,CAAC;AAEM,MAAM,oBAAoB,EAC9B,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,kBAAkB,QAAQ,CAAC;AAEpC,MAAM,eAAe,EAAE,KAAK,CAAC,SAAS,OAAO,CAAC;AAE9C,MAAM,wBAAwB;AAAA,EAC5B,YAAY,KAAK;AAAA,EACjB;AAAA,EACA,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACrD,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACxD,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5D,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC9C,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACrD,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1D,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACtD,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9D,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1D,UAAU,EAAE,OAAO,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,WAAW,EAAE,OAAO,OAAO,EAAE,SAAS,EAAE,SAAS;AACnD;AAEO,MAAM,8BAA8B,OAAO,OAAO,qBAAqB;AAEvE,MAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,IAAI,KAAK;AAAA,EACT,GAAG;AACL,CAAC;AAEM,MAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,IAAI,KAAK;AAAA,EACT,YAAY,KAAK;AAAA,EACjB;AACF,CAAC;AAEM,MAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD,SAAS,KAAK;AAAA,EACd,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACpD,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,uBAAuB,KAAK,EAAE,SAAS;AAAA,EACvC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACjD,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS;AAAA,EAC9D,WAAW,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACpC,aAAa,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACtC,aAAa,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC1C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EAC/C,kBAAkB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC/C,oBAAoB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EACjD,cAAc,aAAa,SAAS;AAAA,EACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC5C;AAAA,EACA,yBAAyB,WAAW,SAAS;AAAA,EAC7C,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACzD,OAAO,EACJ;AAAA,IACC,EAAE,OAAO;AAAA,MACP,aAAa,KAAK;AAAA,MAClB,UAAU,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC,EAAE,IAAI,kCAAkC;AAAA,MAC1H;AAAA,IACF,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;AAEM,MAAM,uBAAuB,EACjC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,qBAAqB,QAAQ,CAAC;AAEvC,MAAM,2BAA2B,EAAE,OAChC,OAAO,EACP,IAAI,yCAAyC,EAC7C,IAAI,GAAG,qCAAqC,EAC5C,IAAI,cAAc,wBAAwB;AAEtC,MAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C,SAAS,KAAK;AAAA,EACd,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC5C,YAAY,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACrC,OAAO,EACJ;AAAA,IACC,EAAE,OAAO;AAAA,MACP,aAAa,KAAK;AAAA,MAClB,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,EACC,IAAI,CAAC;AACV,CAAC;AAEM,MAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C,IAAI,KAAK;AAAA,EACT,SAAS,KAAK;AAAA,EACd,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC5C,YAAY,EAAE,OAAO,KAAK,EAAE,SAAS;AACvC,CAAC;AAEM,MAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C,IAAI,KAAK;AAAA,EACT,SAAS,KAAK;AAChB,CAAC;AAEM,MAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C,SAAS,KAAK,EAAE,SAAS;AAAA,EACzB,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1D,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACpC,SAAS,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EAClC;AAAA,EACA;AAAA,EACA,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,OAAO,EACJ;AAAA,IACC,EAAE,OAAO;AAAA,MACP,aAAa,KAAK,EAAE,SAAS;AAAA,MAC7B,YAAY,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACpD,MAAM,eAAe,SAAS;AAAA,MAC9B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MAC1C,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MACzC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,MAClD,UAAU,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC;AAAA,MAClF,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,MACjD,oBAAoB,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC,EAAE,SAAS;AAAA,MACvG,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,MAC9D,aAAa;AAAA,MACb;AAAA,MACA,cAAc,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC3C,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC7C,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC7C,iBAAiB,WAAW,EAAE,SAAS;AAAA,MACvC,SAAS,WAAW,EAAE,SAAS;AAAA,MAC/B,WAAW,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MACxC,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC7C,kBAAkB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC/C;AAAA,IACF,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,mBAAmB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,uBAAuB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EACpD,iBAAiB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC9C,mBAAmB,QAAQ,EAAE,SAAS;AACxC,CAAC;AAEM,MAAM,sBAAsB,EAChC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,oBAAoB,QAAQ,CAAC;AAE/B,MAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD,SAAS,KAAK,EAAE,SAAS;AAAA,EACzB,WAAW,KAAK,EAAE,SAAS;AAAA,EAC3B,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC7D,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACpC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC7C;AAAA,EACA;AAAA,EACA,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,OAAO,EACJ;AAAA,IACC,EAAE,OAAO;AAAA,MACP,aAAa,KAAK,EAAE,SAAS;AAAA,MAC7B,YAAY,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACpD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MAC1C,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MACzC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,MAClD,UAAU,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC;AAAA,MAClF,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,MACjD,oBAAoB,QAAQ,EAAE,KAAK,GAAG,KAAK,cAAc,SAAS,yBAAyB,CAAC,EAAE,SAAS;AAAA,MACvG,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,MAC9D,aAAa;AAAA,MACb;AAAA,MACA,cAAc,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC3C,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC7C,SAAS,WAAW,EAAE,SAAS;AAAA,MAC/B,WAAW,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MACxC,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC7C,kBAAkB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,MAC/C;AAAA,IACF,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,mBAAmB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,qBAAqB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAClD,uBAAuB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AACtD,CAAC;AAEM,MAAM,yBAAyB,EACnC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,uBAAuB,QAAQ,CAAC;AAElC,MAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C,SAAS,KAAK,EAAE,SAAS;AAAA,EACzB,iBAAiB,KAAK,EAAE,SAAS;AAAA,EACjC,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACtD,eAAe,KAAK,EAAE,SAAS;AAAA,EAC/B,uBAAuB,KAAK,EAAE,SAAS;AAAA,EACvC,mBAAmB,KAAK,EAAE,SAAS;AAAA,EACnC,QAAQ,QAAQ,EAAE,KAAK,EAAE,CAAC;AAAA,EAC1B;AAAA,EACA,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,gBAAgB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS;AAAA,EAC7C,YAAY,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACrC,YAAY,EAAE,OAAO,KAAK,EAAE,SAAS;AAAA,EACrC;AAAA,EACA,kBAAkB,KAAK,EAAE,SAAS;AAAA,EAClC,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACzD,aAAa,EACV;AAAA,IACC,EAAE,OAAO;AAAA,MACP,SAAS,KAAK,EAAE,SAAS;AAAA,MACzB,WAAW,KAAK,EAAE,SAAS;AAAA,MAC3B,QAAQ,QAAQ,EAAE,KAAK,EAAE,CAAC;AAAA,MAC1B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;AAEM,MAAM,sBAAsB,EAChC,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA,MAAM,oBAAoB,QAAQ,CAAC;AAE/B,MAAM,mBAAmB,OAAO,OAAO;AAAA,EAC5C,aAAa,EAAE,KAAK,CAAC,SAAS,SAAS,WAAW,aAAa,CAAC;AAAA,EAChE,WAAW,KAAK;AAAA,EAChB,SAAS,KAAK,EAAE,SAAS;AAAA,EACzB,SAAS,KAAK,EAAE,SAAS;AAAA,EACzB,cAAc,KAAK,EAAE,SAAS;AAAA,EAC9B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI;AAAA,EACvC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/D,iBAAiB,EACd,OAAO,EACP,KAAK,EACL,MAAM,qBAAqB,EAC3B,SAAS,EACT,SAAS;AACd,CAAC;AAEM,MAAM,mBAAmB,EAC7B,OAAO;AAAA,EACN,IAAI,KAAK;AACX,CAAC,EACA;AAAA,EACC,EACG,OAAO;AAAA,IACN,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EACpD,CAAC,EACA,OAAO;AAAA,IACN,cAAc,KAAK,EAAE,SAAS;AAAA,IAC9B,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,IAC/D,iBAAiB,EACd,OAAO,EACP,KAAK,EACL,MAAM,qBAAqB,EAC3B,SAAS,EACT,SAAS;AAAA,EACd,CAAC;AACL;AAEK,MAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,MAAM,EAAE,KAAK,CAAC,SAAS,SAAS,WAAW,aAAa,CAAC;AAAA,EACzD,QAAQ,mBAAmB,SAAS;AACtC,CAAC;AAmCM,MAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,SAAS,EAAE,OAAO,EAAE,KAAK;AAAA,EACzB,cAAc,EAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAClE,CAAC;AAEM,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,OAAO,EAAE,OAAO,EAAE,KAAK;AACzB,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/modules/sales/setup.ts"],
|
|
4
|
-
"sourcesContent": ["import type { EntityManager } from '@mikro-orm/postgresql'\nimport type { ModuleSetupConfig } from '@open-mercato/shared/modules/setup'\nimport { SalesSettings, SalesDocumentSequence, SalesTaxRate } from './data/entities'\nimport { DEFAULT_ORDER_NUMBER_FORMAT, DEFAULT_QUOTE_NUMBER_FORMAT } from './lib/documentNumberTokens'\nimport { seedSalesStatusDictionaries, seedSalesAdjustmentKinds } from './lib/dictionaries'\nimport { ensureExampleShippingMethods, ensureExamplePaymentMethods } from './seed/examples-data'\nimport { seedSalesExamples } from './seed/examples'\n\ntype SeedScope = { tenantId: string; organizationId: string }\n\nconst DEFAULT_TAX_RATES = [\n { code: 'vat-23', name: '23% VAT', rate: '23' },\n { code: 'vat-0', name: '0% VAT', rate: '0' },\n] as const\n\nasync function seedSalesTaxRates(em: EntityManager, scope: SeedScope): Promise<void> {\n await em.transactional(async (tem) => {\n const existing = await tem.find(SalesTaxRate, {\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n deletedAt: null,\n })\n const existingCodes = new Set(existing.map((rate) => rate.code))\n const hasDefault = existing.some((rate) => rate.isDefault)\n const now = new Date()\n let isFirst = !hasDefault\n\n for (const seed of DEFAULT_TAX_RATES) {\n if (existingCodes.has(seed.code)) continue\n tem.persist(\n tem.create(SalesTaxRate, {\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n code: seed.code,\n name: seed.name,\n rate: seed.rate,\n priority: 0,\n isCompound: false,\n isDefault: isFirst,\n createdAt: now,\n updatedAt: now,\n })\n )\n isFirst = false\n }\n })\n}\n\nexport const setup: ModuleSetupConfig = {\n defaultRoleFeatures: {\n admin: ['sales.*', 'sales.documents.number.edit'],\n employee: [\n 'sales.channels.view',\n 'sales.settings.view',\n 'sales.orders.view',\n 'sales.orders.manage',\n 'sales.orders.approve',\n 'sales.widgets.new-orders',\n 'sales.widgets.new-quotes',\n 'sales.quotes.view',\n 'sales.quotes.manage',\n 'sales.shipments.manage',\n 'sales.payments.manage',\n 'sales.returns.view',\n 'sales.returns.create',\n 'sales.invoices.manage',\n 'sales.credit_memos.manage',\n ],\n },\n\n async onTenantCreated({ em, tenantId, organizationId }) {\n const exists = await em.findOne(SalesSettings, { tenantId, organizationId })\n if (!exists) {\n em.persist(\n em.create(SalesSettings, {\n tenantId,\n organizationId,\n orderNumberFormat: DEFAULT_ORDER_NUMBER_FORMAT,\n quoteNumberFormat: DEFAULT_QUOTE_NUMBER_FORMAT,\n createdAt: new Date(),\n updatedAt: new Date(),\n })\n )\n }\n\n for (const kind of ['order', 'quote', 'return', 'invoice', 'credit_memo'] as const) {\n const seq = await em.findOne(SalesDocumentSequence, {\n tenantId,\n organizationId,\n documentKind: kind,\n })\n if (!seq) {\n em.persist(\n em.create(SalesDocumentSequence, {\n tenantId,\n organizationId,\n documentKind: kind,\n currentValue: 0,\n createdAt: new Date(),\n updatedAt: new Date(),\n })\n )\n }\n }\n\n await em.flush()\n },\n\n async seedDefaults({ em, tenantId, organizationId }) {\n const scope = { tenantId, organizationId }\n await seedSalesTaxRates(em, scope)\n await seedSalesStatusDictionaries(em, scope)\n await seedSalesAdjustmentKinds(em, scope)\n await ensureExampleShippingMethods(em, scope)\n await ensureExamplePaymentMethods(em, scope)\n },\n\n async seedExamples({ em, container, tenantId, organizationId }) {\n const scope = { tenantId, organizationId }\n await seedSalesExamples(em, container, scope)\n },\n}\n\nexport default setup\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type { EntityManager } from '@mikro-orm/postgresql'\nimport type { ModuleSetupConfig } from '@open-mercato/shared/modules/setup'\nimport { SalesSettings, SalesDocumentSequence, SalesTaxRate } from './data/entities'\nimport { DEFAULT_ORDER_NUMBER_FORMAT, DEFAULT_QUOTE_NUMBER_FORMAT } from './lib/documentNumberTokens'\nimport { seedSalesStatusDictionaries, seedSalesAdjustmentKinds } from './lib/dictionaries'\nimport { ensureExampleShippingMethods, ensureExamplePaymentMethods } from './seed/examples-data'\nimport { seedSalesExamples } from './seed/examples'\n\ntype SeedScope = { tenantId: string; organizationId: string }\n\nconst DEFAULT_TAX_RATES = [\n { code: 'vat-23', name: '23% VAT', rate: '23' },\n { code: 'vat-0', name: '0% VAT', rate: '0' },\n] as const\n\nasync function seedSalesTaxRates(em: EntityManager, scope: SeedScope): Promise<void> {\n await em.transactional(async (tem) => {\n const existing = await tem.find(SalesTaxRate, {\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n deletedAt: null,\n })\n const existingCodes = new Set(existing.map((rate) => rate.code))\n const hasDefault = existing.some((rate) => rate.isDefault)\n const now = new Date()\n let isFirst = !hasDefault\n\n for (const seed of DEFAULT_TAX_RATES) {\n if (existingCodes.has(seed.code)) continue\n tem.persist(\n tem.create(SalesTaxRate, {\n tenantId: scope.tenantId,\n organizationId: scope.organizationId,\n code: seed.code,\n name: seed.name,\n rate: seed.rate,\n priority: 0,\n isCompound: false,\n isDefault: isFirst,\n createdAt: now,\n updatedAt: now,\n })\n )\n isFirst = false\n }\n })\n}\n\nexport const setup: ModuleSetupConfig = {\n defaultRoleFeatures: {\n admin: ['sales.*', 'sales.documents.number.edit'],\n employee: [\n 'sales.channels.view',\n 'sales.settings.view',\n 'sales.orders.view',\n 'sales.orders.manage',\n 'sales.orders.approve',\n 'sales.widgets.new-orders',\n 'sales.widgets.new-quotes',\n 'sales.quotes.view',\n 'sales.quotes.manage',\n 'sales.shipments.manage',\n 'sales.payments.manage',\n 'sales.returns.view',\n 'sales.returns.create',\n 'sales.returns.manage',\n 'sales.invoices.manage',\n 'sales.credit_memos.manage',\n ],\n },\n\n async onTenantCreated({ em, tenantId, organizationId }) {\n const exists = await em.findOne(SalesSettings, { tenantId, organizationId })\n if (!exists) {\n em.persist(\n em.create(SalesSettings, {\n tenantId,\n organizationId,\n orderNumberFormat: DEFAULT_ORDER_NUMBER_FORMAT,\n quoteNumberFormat: DEFAULT_QUOTE_NUMBER_FORMAT,\n createdAt: new Date(),\n updatedAt: new Date(),\n })\n )\n }\n\n for (const kind of ['order', 'quote', 'return', 'invoice', 'credit_memo'] as const) {\n const seq = await em.findOne(SalesDocumentSequence, {\n tenantId,\n organizationId,\n documentKind: kind,\n })\n if (!seq) {\n em.persist(\n em.create(SalesDocumentSequence, {\n tenantId,\n organizationId,\n documentKind: kind,\n currentValue: 0,\n createdAt: new Date(),\n updatedAt: new Date(),\n })\n )\n }\n }\n\n await em.flush()\n },\n\n async seedDefaults({ em, tenantId, organizationId }) {\n const scope = { tenantId, organizationId }\n await seedSalesTaxRates(em, scope)\n await seedSalesStatusDictionaries(em, scope)\n await seedSalesAdjustmentKinds(em, scope)\n await ensureExampleShippingMethods(em, scope)\n await ensureExamplePaymentMethods(em, scope)\n },\n\n async seedExamples({ em, container, tenantId, organizationId }) {\n const scope = { tenantId, organizationId }\n await seedSalesExamples(em, container, scope)\n },\n}\n\nexport default setup\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/core",
|
|
3
|
-
"version": "0.6.6-develop.
|
|
3
|
+
"version": "0.6.6-develop.5619.1.29f01e2c42",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -245,16 +245,16 @@
|
|
|
245
245
|
"zod": "^4.4.3"
|
|
246
246
|
},
|
|
247
247
|
"peerDependencies": {
|
|
248
|
-
"@open-mercato/ai-assistant": "0.6.6-develop.
|
|
249
|
-
"@open-mercato/shared": "0.6.6-develop.
|
|
250
|
-
"@open-mercato/ui": "0.6.6-develop.
|
|
248
|
+
"@open-mercato/ai-assistant": "0.6.6-develop.5619.1.29f01e2c42",
|
|
249
|
+
"@open-mercato/shared": "0.6.6-develop.5619.1.29f01e2c42",
|
|
250
|
+
"@open-mercato/ui": "0.6.6-develop.5619.1.29f01e2c42",
|
|
251
251
|
"react": "^19.0.0",
|
|
252
252
|
"react-dom": "^19.0.0"
|
|
253
253
|
},
|
|
254
254
|
"devDependencies": {
|
|
255
|
-
"@open-mercato/ai-assistant": "0.6.6-develop.
|
|
256
|
-
"@open-mercato/shared": "0.6.6-develop.
|
|
257
|
-
"@open-mercato/ui": "0.6.6-develop.
|
|
255
|
+
"@open-mercato/ai-assistant": "0.6.6-develop.5619.1.29f01e2c42",
|
|
256
|
+
"@open-mercato/shared": "0.6.6-develop.5619.1.29f01e2c42",
|
|
257
|
+
"@open-mercato/ui": "0.6.6-develop.5619.1.29f01e2c42",
|
|
258
258
|
"@testing-library/dom": "^10.4.1",
|
|
259
259
|
"@testing-library/jest-dom": "^6.9.1",
|
|
260
260
|
"@testing-library/react": "^16.3.1",
|
package/src/modules/sales/acl.ts
CHANGED
|
@@ -82,6 +82,12 @@ export const features = [
|
|
|
82
82
|
module: 'sales',
|
|
83
83
|
dependsOn: ['sales.returns.view', 'sales.orders.manage'],
|
|
84
84
|
},
|
|
85
|
+
{
|
|
86
|
+
id: 'sales.returns.manage',
|
|
87
|
+
title: 'Edit and delete order returns',
|
|
88
|
+
module: 'sales',
|
|
89
|
+
dependsOn: ['sales.returns.create'],
|
|
90
|
+
},
|
|
85
91
|
{
|
|
86
92
|
id: 'sales.invoices.manage',
|
|
87
93
|
title: 'Manage sales invoices',
|
|
@@ -5,7 +5,8 @@ import { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'
|
|
|
5
5
|
import { splitCustomFieldPayload } from '@open-mercato/shared/lib/crud/custom-fields'
|
|
6
6
|
import { withScopedPayload } from '../utils'
|
|
7
7
|
import { SalesReturn, SalesReturnLine } from '../../data/entities'
|
|
8
|
-
import { returnCreateSchema } from '../../data/validators'
|
|
8
|
+
import { returnCreateSchema, returnUpdateSchema, returnDeleteSchema } from '../../data/validators'
|
|
9
|
+
import { CrudHttpError } from '@open-mercato/shared/lib/crud/errors'
|
|
9
10
|
import { E } from '#generated/entities.ids.generated'
|
|
10
11
|
import * as F from '#generated/entities/sales_return'
|
|
11
12
|
import { createPagedListResponseSchema } from '../openapi'
|
|
@@ -27,6 +28,8 @@ const listSchema = z
|
|
|
27
28
|
const routeMetadata = {
|
|
28
29
|
GET: { requireAuth: true, requireFeatures: ['sales.returns.view'] },
|
|
29
30
|
POST: { requireAuth: true, requireFeatures: ['sales.returns.create'] },
|
|
31
|
+
PUT: { requireAuth: true, requireFeatures: ['sales.returns.manage'] },
|
|
32
|
+
DELETE: { requireAuth: true, requireFeatures: ['sales.returns.manage'] },
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
const toNumber = (value: unknown): number => {
|
|
@@ -91,6 +94,31 @@ const crud = makeCrudRoute({
|
|
|
91
94
|
response: ({ result }) => ({ id: result?.returnId ?? null }),
|
|
92
95
|
status: 201,
|
|
93
96
|
},
|
|
97
|
+
update: {
|
|
98
|
+
commandId: 'sales.returns.update',
|
|
99
|
+
schema: rawBodySchema,
|
|
100
|
+
mapInput: async ({ raw, ctx }) => {
|
|
101
|
+
const { translate } = await resolveTranslations()
|
|
102
|
+
const scoped = withScopedPayload(raw ?? {}, ctx, translate)
|
|
103
|
+
const { base } = splitCustomFieldPayload(scoped)
|
|
104
|
+
return returnUpdateSchema.parse(base)
|
|
105
|
+
},
|
|
106
|
+
response: () => ({ ok: true }),
|
|
107
|
+
},
|
|
108
|
+
delete: {
|
|
109
|
+
commandId: 'sales.returns.delete',
|
|
110
|
+
schema: rawBodySchema,
|
|
111
|
+
mapInput: async ({ raw, ctx }) => {
|
|
112
|
+
const { translate } = await resolveTranslations()
|
|
113
|
+
const merged = { ...(raw?.body ?? {}), ...(raw?.query ?? {}) }
|
|
114
|
+
const payload = returnDeleteSchema.parse(withScopedPayload(merged, ctx, translate))
|
|
115
|
+
if (!payload.id || !payload.orderId) {
|
|
116
|
+
throw new CrudHttpError(400, { error: translate('sales.returns.notFound', 'Return not found.') })
|
|
117
|
+
}
|
|
118
|
+
return payload
|
|
119
|
+
},
|
|
120
|
+
response: () => ({ ok: true }),
|
|
121
|
+
},
|
|
94
122
|
},
|
|
95
123
|
hooks: {
|
|
96
124
|
afterList: async (payload, ctx) => {
|
|
@@ -131,10 +159,10 @@ const crud = makeCrudRoute({
|
|
|
131
159
|
},
|
|
132
160
|
})
|
|
133
161
|
|
|
134
|
-
const { GET, POST } = crud
|
|
162
|
+
const { GET, POST, PUT, DELETE } = crud
|
|
135
163
|
|
|
136
164
|
export const metadata = routeMetadata
|
|
137
|
-
export { GET, POST }
|
|
165
|
+
export { GET, POST, PUT, DELETE }
|
|
138
166
|
|
|
139
167
|
const returnSchema = z
|
|
140
168
|
.object({
|
|
@@ -167,6 +195,16 @@ export const openApi: OpenApiRouteDoc = {
|
|
|
167
195
|
requestBody: { schema: returnCreateSchema },
|
|
168
196
|
responses: [{ status: 201, description: 'Return created', schema: z.object({ id: z.string().uuid().nullable() }) }],
|
|
169
197
|
},
|
|
198
|
+
PUT: {
|
|
199
|
+
summary: 'Update return',
|
|
200
|
+
requestBody: { schema: returnUpdateSchema },
|
|
201
|
+
responses: [{ status: 200, description: 'Return updated', schema: z.object({ ok: z.boolean() }) }],
|
|
202
|
+
},
|
|
203
|
+
DELETE: {
|
|
204
|
+
summary: 'Delete return',
|
|
205
|
+
requestBody: { schema: returnDeleteSchema },
|
|
206
|
+
responses: [{ status: 200, description: 'Return deleted', schema: z.object({ ok: z.boolean() }) }],
|
|
207
|
+
},
|
|
170
208
|
},
|
|
171
209
|
}
|
|
172
210
|
|