aivilife-contracts 4.2.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,311 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/catalog/catalog.enums.ts
6
+ var ProductStatus = {
7
+ DRAFT: "DRAFT",
8
+ ACTIVE: "ACTIVE",
9
+ ARCHIVED: "ARCHIVED"
10
+ };
11
+ var ProductUnit = {
12
+ CAPSULE: "CAPSULE",
13
+ GRAM: "GRAM",
14
+ MILLILITER: "MILLILITER",
15
+ PIECE: "PIECE"
16
+ };
17
+ var ProductMediaType = {
18
+ IMAGE: "IMAGE",
19
+ UPLOADED_VIDEO: "UPLOADED_VIDEO",
20
+ EXTERNAL_VIDEO: "EXTERNAL_VIDEO"
21
+ };
22
+ var ProductMediaRole = {
23
+ COVER: "COVER",
24
+ GALLERY: "GALLERY"
25
+ };
26
+
27
+ // src/localization/app-locale.enum.ts
28
+ var AppLocale = {
29
+ RU: "ru",
30
+ KK: "kk",
31
+ UZ: "uz",
32
+ EN: "en"
33
+ };
34
+ Object.values(
35
+ AppLocale
36
+ );
37
+
38
+ // src/localization/app-locale.schema.ts
39
+ var AppLocaleSchema = zod.z.enum(AppLocale);
40
+ var PageSchema = zod.z.coerce.number().int().min(1).default(1);
41
+ var LimitSchema = zod.z.coerce.number().int().min(1).max(100).default(20);
42
+ var SortOrderSchema = zod.z.enum(["asc", "desc"]).default("desc");
43
+ zod.z.object({
44
+ page: PageSchema.optional(),
45
+ limit: LimitSchema.optional()
46
+ });
47
+
48
+ // src/common/list-query.schemas.ts
49
+ var DateFromSchema = zod.z.string().datetime().optional();
50
+ var DateToSchema = zod.z.string().datetime().optional();
51
+ var SearchSchema = zod.z.string().trim().min(1).max(255).optional();
52
+ var BaseListQuerySchema = zod.z.object({
53
+ page: PageSchema.optional(),
54
+ limit: LimitSchema.optional(),
55
+ search: SearchSchema,
56
+ dateFrom: DateFromSchema,
57
+ dateTo: DateToSchema,
58
+ sortOrder: SortOrderSchema.optional()
59
+ });
60
+
61
+ // src/catalog/catalog.schemas.ts
62
+ var CodeSchema = zod.z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
63
+ var SlugSchema = zod.z.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(160);
64
+ var PublicIdSchema = zod.z.uuid();
65
+ var MoneySchema = zod.z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
66
+ var PvSchema = zod.z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "PV \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
67
+ var PositiveDecimalSchema = zod.z.string().trim().regex(/^\d{1,9}(?:\.\d{1,3})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
68
+ var ProductCategoryTranslationInputSchema = zod.z.object({
69
+ locale: AppLocaleSchema,
70
+ name: zod.z.string().trim().min(1).max(120),
71
+ description: zod.z.string().trim().max(500).nullable().optional()
72
+ });
73
+ var ProductTranslationInputSchema = zod.z.object({
74
+ locale: AppLocaleSchema,
75
+ name: zod.z.string().trim().min(1).max(180),
76
+ shortDescription: zod.z.string().trim().min(1).max(500),
77
+ description: zod.z.string().trim().min(1).max(2e4),
78
+ composition: zod.z.string().trim().max(2e4).nullable().optional(),
79
+ usageInstructions: zod.z.string().trim().max(2e4).nullable().optional(),
80
+ features: zod.z.string().trim().max(2e4).nullable().optional(),
81
+ contraindications: zod.z.string().trim().max(2e4).nullable().optional(),
82
+ shelfLife: zod.z.string().trim().min(1).max(255),
83
+ packageContents: zod.z.string().trim().max(2e3).nullable().optional()
84
+ });
85
+ var UniqueLocalesSchema = (schema) => zod.z.array(schema).min(1).max(4).refine(
86
+ (items) => new Set(items.map((item) => item.locale)).size === items.length,
87
+ "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
88
+ );
89
+ var CreateProductCategoryRequestSchema = zod.z.object({
90
+ code: CodeSchema,
91
+ slug: SlugSchema,
92
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0),
93
+ translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema)
94
+ });
95
+ var UpdateProductCategoryRequestSchema = zod.z.object({
96
+ slug: SlugSchema,
97
+ sortOrder: zod.z.number().int().min(0).max(1e6),
98
+ translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema),
99
+ version: zod.z.number().int().positive()
100
+ }).partial().required({ version: true });
101
+ var ProductVariantFieldsSchema = zod.z.object({
102
+ sku: CodeSchema,
103
+ barcode: zod.z.string().trim().min(1).max(64).nullable().optional(),
104
+ quantity: PositiveDecimalSchema,
105
+ unit: zod.z.enum(ProductUnit),
106
+ netWeightGrams: PositiveDecimalSchema.nullable().optional(),
107
+ priceUsd: MoneySchema,
108
+ pv: PvSchema,
109
+ shippingWeightGrams: PositiveDecimalSchema.nullable().optional(),
110
+ lengthMm: PositiveDecimalSchema.nullable().optional(),
111
+ widthMm: PositiveDecimalSchema.nullable().optional(),
112
+ heightMm: PositiveDecimalSchema.nullable().optional(),
113
+ isDefault: zod.z.boolean(),
114
+ isActive: zod.z.boolean(),
115
+ sortOrder: zod.z.number().int().min(0).max(1e6)
116
+ });
117
+ var ProductVariantInputSchema = ProductVariantFieldsSchema.extend({
118
+ isDefault: ProductVariantFieldsSchema.shape.isDefault.default(false),
119
+ isActive: ProductVariantFieldsSchema.shape.isActive.default(true),
120
+ sortOrder: ProductVariantFieldsSchema.shape.sortOrder.default(0)
121
+ });
122
+ var CreateProductRequestSchema = zod.z.object({
123
+ code: CodeSchema,
124
+ slug: SlugSchema,
125
+ manufacturerCountryCode: zod.z.string().trim().toUpperCase().length(2),
126
+ manufacturerName: zod.z.string().trim().max(255).nullable().optional(),
127
+ sgr: zod.z.string().trim().max(255).nullable().optional(),
128
+ isFeatured: zod.z.boolean().default(false),
129
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0),
130
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
131
+ categoryPublicIds: zod.z.array(PublicIdSchema).min(1).max(100),
132
+ primaryCategoryPublicId: PublicIdSchema,
133
+ variants: zod.z.array(ProductVariantInputSchema).min(1).max(100).refine(
134
+ (items) => items.filter((item) => item.isDefault).length === 1,
135
+ "\u0414\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0440\u043E\u0432\u043D\u043E \u043E\u0434\u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044F"
136
+ )
137
+ }).refine(
138
+ (value) => value.categoryPublicIds.includes(value.primaryCategoryPublicId),
139
+ {
140
+ message: "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",
141
+ path: ["primaryCategoryPublicId"]
142
+ }
143
+ );
144
+ var UpdateProductRequestSchema = zod.z.object({
145
+ slug: SlugSchema,
146
+ manufacturerCountryCode: zod.z.string().trim().toUpperCase().length(2),
147
+ manufacturerName: zod.z.string().trim().max(255).nullable(),
148
+ sgr: zod.z.string().trim().max(255).nullable(),
149
+ isFeatured: zod.z.boolean(),
150
+ sortOrder: zod.z.number().int().min(0).max(1e6),
151
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
152
+ categoryPublicIds: zod.z.array(PublicIdSchema).min(1).max(100),
153
+ primaryCategoryPublicId: PublicIdSchema,
154
+ version: zod.z.number().int().positive()
155
+ }).partial().required({ version: true }).refine(
156
+ (value) => !value.primaryCategoryPublicId || !value.categoryPublicIds || value.categoryPublicIds.includes(value.primaryCategoryPublicId),
157
+ {
158
+ message: "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",
159
+ path: ["primaryCategoryPublicId"]
160
+ }
161
+ );
162
+ var CreateProductVariantRequestSchema = ProductVariantInputSchema;
163
+ var UpdateProductVariantRequestSchema = ProductVariantFieldsSchema.partial().extend({
164
+ version: zod.z.number().int().positive()
165
+ });
166
+ var ProductPublicIdParamSchema = zod.z.object({
167
+ publicId: PublicIdSchema
168
+ });
169
+ var ProductSlugParamSchema = zod.z.object({ slug: SlugSchema });
170
+ var ProductVariantPublicIdParamSchema = zod.z.object({
171
+ publicId: PublicIdSchema,
172
+ variantPublicId: PublicIdSchema
173
+ });
174
+ var ProductMediaPublicIdParamSchema = zod.z.object({
175
+ publicId: PublicIdSchema,
176
+ mediaPublicId: PublicIdSchema
177
+ });
178
+ var QueryBooleanSchema = zod.z.union([
179
+ zod.z.boolean(),
180
+ zod.z.enum(["true", "false"]).transform((value) => value === "true")
181
+ ]);
182
+ var ProductListQuerySchema = BaseListQuerySchema.extend({
183
+ status: zod.z.enum(ProductStatus).optional(),
184
+ category: SlugSchema.optional(),
185
+ featured: QueryBooleanSchema.optional()
186
+ });
187
+ var CreateExternalProductVideoRequestSchema = zod.z.object({
188
+ url: zod.z.url().max(2e3).refine((value) => {
189
+ const url = new URL(value);
190
+ const host = url.hostname.toLowerCase().replace(/^www\./, "");
191
+ return url.protocol === "https:" && ["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com"].includes(
192
+ host
193
+ );
194
+ }, "\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E HTTPS-\u0441\u0441\u044B\u043B\u043A\u0438 YouTube \u0438 Vimeo"),
195
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0)
196
+ });
197
+ var UploadProductImageRequestSchema = zod.z.object({
198
+ role: zod.z.enum(ProductMediaRole).default(ProductMediaRole.GALLERY),
199
+ sortOrder: zod.z.coerce.number().int().min(0).max(1e6).default(0)
200
+ });
201
+ var UploadProductVideoRequestSchema = zod.z.object({
202
+ sortOrder: zod.z.coerce.number().int().min(0).max(1e6).default(0)
203
+ });
204
+ var UpdateProductMediaRequestSchema = zod.z.object({
205
+ role: zod.z.enum(ProductMediaRole).optional(),
206
+ sortOrder: zod.z.number().int().min(0).max(1e6).optional()
207
+ });
208
+ var ProductCategorySchema = zod.z.object({
209
+ publicId: PublicIdSchema,
210
+ code: CodeSchema,
211
+ slug: SlugSchema,
212
+ status: zod.z.enum(ProductStatus),
213
+ sortOrder: zod.z.number().int().nonnegative(),
214
+ version: zod.z.number().int().positive(),
215
+ translations: zod.z.array(ProductCategoryTranslationInputSchema),
216
+ createdAt: zod.z.string().datetime(),
217
+ updatedAt: zod.z.string().datetime()
218
+ });
219
+ var ProductVariantSchema = ProductVariantInputSchema.extend({
220
+ publicId: PublicIdSchema,
221
+ version: zod.z.number().int().positive(),
222
+ createdAt: zod.z.string().datetime(),
223
+ updatedAt: zod.z.string().datetime()
224
+ });
225
+ var ProductMediaSchema = zod.z.object({
226
+ publicId: PublicIdSchema,
227
+ type: zod.z.enum(ProductMediaType),
228
+ role: zod.z.enum(ProductMediaRole),
229
+ externalUrl: zod.z.string().nullable(),
230
+ contentUrl: zod.z.string().nullable(),
231
+ mimeType: zod.z.string().nullable(),
232
+ sizeBytes: zod.z.number().int().positive().nullable(),
233
+ originalName: zod.z.string().nullable(),
234
+ sortOrder: zod.z.number().int().nonnegative(),
235
+ createdAt: zod.z.string().datetime(),
236
+ updatedAt: zod.z.string().datetime()
237
+ });
238
+ var ProductSchema = zod.z.object({
239
+ publicId: PublicIdSchema,
240
+ code: CodeSchema,
241
+ slug: SlugSchema,
242
+ status: zod.z.enum(ProductStatus),
243
+ manufacturerCountryCode: zod.z.string().length(2),
244
+ manufacturerName: zod.z.string().nullable(),
245
+ sgr: zod.z.string().nullable(),
246
+ isFeatured: zod.z.boolean(),
247
+ sortOrder: zod.z.number().int().nonnegative(),
248
+ publishedAt: zod.z.string().datetime().nullable(),
249
+ version: zod.z.number().int().positive(),
250
+ translations: zod.z.array(ProductTranslationInputSchema),
251
+ categories: zod.z.array(ProductCategorySchema),
252
+ primaryCategoryPublicId: PublicIdSchema,
253
+ variants: zod.z.array(ProductVariantSchema),
254
+ media: zod.z.array(ProductMediaSchema),
255
+ createdAt: zod.z.string().datetime(),
256
+ updatedAt: zod.z.string().datetime()
257
+ });
258
+ var LocalizedProductCategorySchema = zod.z.object({
259
+ publicId: PublicIdSchema,
260
+ code: CodeSchema,
261
+ slug: SlugSchema,
262
+ name: zod.z.string(),
263
+ description: zod.z.string().nullable()
264
+ });
265
+ var LocalizedProductSchema = ProductSchema.omit({
266
+ translations: true,
267
+ categories: true,
268
+ version: true
269
+ }).extend({
270
+ name: zod.z.string(),
271
+ shortDescription: zod.z.string(),
272
+ description: zod.z.string(),
273
+ composition: zod.z.string().nullable(),
274
+ usageInstructions: zod.z.string().nullable(),
275
+ features: zod.z.string().nullable(),
276
+ contraindications: zod.z.string().nullable(),
277
+ shelfLife: zod.z.string(),
278
+ packageContents: zod.z.string().nullable(),
279
+ categories: zod.z.array(LocalizedProductCategorySchema)
280
+ });
281
+
282
+ exports.CreateExternalProductVideoRequestSchema = CreateExternalProductVideoRequestSchema;
283
+ exports.CreateProductCategoryRequestSchema = CreateProductCategoryRequestSchema;
284
+ exports.CreateProductRequestSchema = CreateProductRequestSchema;
285
+ exports.CreateProductVariantRequestSchema = CreateProductVariantRequestSchema;
286
+ exports.LocalizedProductCategorySchema = LocalizedProductCategorySchema;
287
+ exports.LocalizedProductSchema = LocalizedProductSchema;
288
+ exports.ProductCategorySchema = ProductCategorySchema;
289
+ exports.ProductCategoryTranslationInputSchema = ProductCategoryTranslationInputSchema;
290
+ exports.ProductListQuerySchema = ProductListQuerySchema;
291
+ exports.ProductMediaPublicIdParamSchema = ProductMediaPublicIdParamSchema;
292
+ exports.ProductMediaRole = ProductMediaRole;
293
+ exports.ProductMediaSchema = ProductMediaSchema;
294
+ exports.ProductMediaType = ProductMediaType;
295
+ exports.ProductPublicIdParamSchema = ProductPublicIdParamSchema;
296
+ exports.ProductSchema = ProductSchema;
297
+ exports.ProductSlugParamSchema = ProductSlugParamSchema;
298
+ exports.ProductStatus = ProductStatus;
299
+ exports.ProductTranslationInputSchema = ProductTranslationInputSchema;
300
+ exports.ProductUnit = ProductUnit;
301
+ exports.ProductVariantInputSchema = ProductVariantInputSchema;
302
+ exports.ProductVariantPublicIdParamSchema = ProductVariantPublicIdParamSchema;
303
+ exports.ProductVariantSchema = ProductVariantSchema;
304
+ exports.UpdateProductCategoryRequestSchema = UpdateProductCategoryRequestSchema;
305
+ exports.UpdateProductMediaRequestSchema = UpdateProductMediaRequestSchema;
306
+ exports.UpdateProductRequestSchema = UpdateProductRequestSchema;
307
+ exports.UpdateProductVariantRequestSchema = UpdateProductVariantRequestSchema;
308
+ exports.UploadProductImageRequestSchema = UploadProductImageRequestSchema;
309
+ exports.UploadProductVideoRequestSchema = UploadProductVideoRequestSchema;
310
+ //# sourceMappingURL=index.js.map
311
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/catalog/catalog.enums.ts","../../src/localization/app-locale.enum.ts","../../src/localization/app-locale.schema.ts","../../src/common/pagination.schemas.ts","../../src/common/list-query.schemas.ts","../../src/catalog/catalog.schemas.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["export const ProductStatus = {\n DRAFT: 'DRAFT',\n ACTIVE: 'ACTIVE',\n ARCHIVED: 'ARCHIVED',\n} as const;\n\nexport type ProductStatus = (typeof ProductStatus)[keyof typeof ProductStatus];\n\nexport const ProductUnit = {\n CAPSULE: 'CAPSULE',\n GRAM: 'GRAM',\n MILLILITER: 'MILLILITER',\n PIECE: 'PIECE',\n} as const;\n\nexport type ProductUnit = (typeof ProductUnit)[keyof typeof ProductUnit];\n\nexport const ProductMediaType = {\n IMAGE: 'IMAGE',\n UPLOADED_VIDEO: 'UPLOADED_VIDEO',\n EXTERNAL_VIDEO: 'EXTERNAL_VIDEO',\n} as const;\n\nexport type ProductMediaType =\n (typeof ProductMediaType)[keyof typeof ProductMediaType];\n\nexport const ProductMediaRole = {\n COVER: 'COVER',\n GALLERY: 'GALLERY',\n} as const;\n\nexport type ProductMediaRole =\n (typeof ProductMediaRole)[keyof typeof ProductMediaRole];\n","export const AppLocale = {\n RU: 'ru',\n KK: 'kk',\n UZ: 'uz',\n EN: 'en',\n} as const;\n\nexport type AppLocale = (typeof AppLocale)[keyof typeof AppLocale];\n\nexport const SupportedLocales = Object.values(\n AppLocale,\n) as readonly AppLocale[];\n","import { z } from 'zod';\nimport { AppLocale } from './app-locale.enum';\n\nexport const AppLocaleSchema = z.enum(AppLocale);\n","import { z } from 'zod';\n\nexport const PageSchema = z.coerce.number().int().min(1).default(1);\nexport const LimitSchema = z.coerce.number().int().min(1).max(100).default(20);\nexport const SortOrderSchema = z.enum(['asc', 'desc']).default('desc');\n\nexport const PaginationQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n});\n","import { z } from 'zod';\nimport { LimitSchema, PageSchema, SortOrderSchema } from './pagination.schemas';\n\nexport const DateFromSchema = z.string().datetime().optional();\nexport const DateToSchema = z.string().datetime().optional();\n\nexport const SearchSchema = z.string().trim().min(1).max(255).optional();\n\nexport const BaseListQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n search: SearchSchema,\n dateFrom: DateFromSchema,\n dateTo: DateToSchema,\n sortOrder: SortOrderSchema.optional(),\n});\n","import { z } from 'zod';\nimport { AppLocaleSchema } from '../localization/app-locale.schema';\nimport { BaseListQuerySchema } from '../common/list-query.schemas';\nimport {\n ProductMediaRole,\n ProductMediaType,\n ProductStatus,\n ProductUnit,\n} from './catalog.enums';\n\nconst CodeSchema = z\n .string()\n .trim()\n .toUpperCase()\n .regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);\nconst SlugSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)\n .max(160);\nconst PublicIdSchema = z.uuid();\nconst MoneySchema = z\n .string()\n .trim()\n .regex(/^\\d{1,16}(?:\\.\\d{1,2})?$/)\n .refine((value) => Number(value) > 0, 'Значение должно быть больше нуля');\nconst PvSchema = z\n .string()\n .trim()\n .regex(/^\\d{1,16}(?:\\.\\d{1,2})?$/)\n .refine((value) => Number(value) > 0, 'PV должен быть больше нуля');\nconst PositiveDecimalSchema = z\n .string()\n .trim()\n .regex(/^\\d{1,9}(?:\\.\\d{1,3})?$/)\n .refine((value) => Number(value) > 0, 'Значение должно быть больше нуля');\n\nexport const ProductCategoryTranslationInputSchema = z.object({\n locale: AppLocaleSchema,\n name: z.string().trim().min(1).max(120),\n description: z.string().trim().max(500).nullable().optional(),\n});\n\nexport const ProductTranslationInputSchema = z.object({\n locale: AppLocaleSchema,\n name: z.string().trim().min(1).max(180),\n shortDescription: z.string().trim().min(1).max(500),\n description: z.string().trim().min(1).max(20_000),\n composition: z.string().trim().max(20_000).nullable().optional(),\n usageInstructions: z.string().trim().max(20_000).nullable().optional(),\n features: z.string().trim().max(20_000).nullable().optional(),\n contraindications: z.string().trim().max(20_000).nullable().optional(),\n shelfLife: z.string().trim().min(1).max(255),\n packageContents: z.string().trim().max(2_000).nullable().optional(),\n});\n\nconst UniqueLocalesSchema = <T extends z.ZodTypeAny>(schema: T) =>\n z\n .array(schema)\n .min(1)\n .max(4)\n .refine(\n (items) =>\n new Set(items.map((item) => (item as { locale: string }).locale))\n .size === items.length,\n 'Перевод для каждого языка можно передать только один раз',\n );\n\nexport const CreateProductCategoryRequestSchema = z.object({\n code: CodeSchema,\n slug: SlugSchema,\n sortOrder: z.number().int().min(0).max(1_000_000).default(0),\n translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema),\n});\n\nexport const UpdateProductCategoryRequestSchema = z\n .object({\n slug: SlugSchema,\n sortOrder: z.number().int().min(0).max(1_000_000),\n translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema),\n version: z.number().int().positive(),\n })\n .partial()\n .required({ version: true });\n\nconst ProductVariantFieldsSchema = z.object({\n sku: CodeSchema,\n barcode: z.string().trim().min(1).max(64).nullable().optional(),\n quantity: PositiveDecimalSchema,\n unit: z.enum(ProductUnit),\n netWeightGrams: PositiveDecimalSchema.nullable().optional(),\n priceUsd: MoneySchema,\n pv: PvSchema,\n shippingWeightGrams: PositiveDecimalSchema.nullable().optional(),\n lengthMm: PositiveDecimalSchema.nullable().optional(),\n widthMm: PositiveDecimalSchema.nullable().optional(),\n heightMm: PositiveDecimalSchema.nullable().optional(),\n isDefault: z.boolean(),\n isActive: z.boolean(),\n sortOrder: z.number().int().min(0).max(1_000_000),\n});\n\nexport const ProductVariantInputSchema = ProductVariantFieldsSchema.extend({\n isDefault: ProductVariantFieldsSchema.shape.isDefault.default(false),\n isActive: ProductVariantFieldsSchema.shape.isActive.default(true),\n sortOrder: ProductVariantFieldsSchema.shape.sortOrder.default(0),\n});\n\nexport const CreateProductRequestSchema = z\n .object({\n code: CodeSchema,\n slug: SlugSchema,\n manufacturerCountryCode: z.string().trim().toUpperCase().length(2),\n manufacturerName: z.string().trim().max(255).nullable().optional(),\n sgr: z.string().trim().max(255).nullable().optional(),\n isFeatured: z.boolean().default(false),\n sortOrder: z.number().int().min(0).max(1_000_000).default(0),\n translations: UniqueLocalesSchema(ProductTranslationInputSchema),\n categoryPublicIds: z.array(PublicIdSchema).min(1).max(100),\n primaryCategoryPublicId: PublicIdSchema,\n variants: z\n .array(ProductVariantInputSchema)\n .min(1)\n .max(100)\n .refine(\n (items) => items.filter((item) => item.isDefault).length === 1,\n 'Должна быть ровно одна основная вариация',\n ),\n })\n .refine(\n (value) => value.categoryPublicIds.includes(value.primaryCategoryPublicId),\n {\n message: 'Основная категория должна присутствовать в списке категорий',\n path: ['primaryCategoryPublicId'],\n },\n );\n\nexport const UpdateProductRequestSchema = z\n .object({\n slug: SlugSchema,\n manufacturerCountryCode: z.string().trim().toUpperCase().length(2),\n manufacturerName: z.string().trim().max(255).nullable(),\n sgr: z.string().trim().max(255).nullable(),\n isFeatured: z.boolean(),\n sortOrder: z.number().int().min(0).max(1_000_000),\n translations: UniqueLocalesSchema(ProductTranslationInputSchema),\n categoryPublicIds: z.array(PublicIdSchema).min(1).max(100),\n primaryCategoryPublicId: PublicIdSchema,\n version: z.number().int().positive(),\n })\n .partial()\n .required({ version: true })\n .refine(\n (value) =>\n !value.primaryCategoryPublicId ||\n !value.categoryPublicIds ||\n value.categoryPublicIds.includes(value.primaryCategoryPublicId),\n {\n message: 'Основная категория должна присутствовать в списке категорий',\n path: ['primaryCategoryPublicId'],\n },\n );\n\nexport const CreateProductVariantRequestSchema = ProductVariantInputSchema;\nexport const UpdateProductVariantRequestSchema =\n ProductVariantFieldsSchema.partial().extend({\n version: z.number().int().positive(),\n });\n\nexport const ProductPublicIdParamSchema = z.object({\n publicId: PublicIdSchema,\n});\nexport const ProductSlugParamSchema = z.object({ slug: SlugSchema });\nexport const ProductVariantPublicIdParamSchema = z.object({\n publicId: PublicIdSchema,\n variantPublicId: PublicIdSchema,\n});\nexport const ProductMediaPublicIdParamSchema = z.object({\n publicId: PublicIdSchema,\n mediaPublicId: PublicIdSchema,\n});\n\nconst QueryBooleanSchema = z.union([\n z.boolean(),\n z.enum(['true', 'false']).transform((value) => value === 'true'),\n]);\n\nexport const ProductListQuerySchema = BaseListQuerySchema.extend({\n status: z.enum(ProductStatus).optional(),\n category: SlugSchema.optional(),\n featured: QueryBooleanSchema.optional(),\n});\n\nexport const CreateExternalProductVideoRequestSchema = z.object({\n url: z\n .url()\n .max(2_000)\n .refine((value) => {\n const url = new URL(value);\n const host = url.hostname.toLowerCase().replace(/^www\\./, '');\n return (\n url.protocol === 'https:' &&\n ['youtube.com', 'youtu.be', 'vimeo.com', 'player.vimeo.com'].includes(\n host,\n )\n );\n }, 'Поддерживаются только HTTPS-ссылки YouTube и Vimeo'),\n sortOrder: z.number().int().min(0).max(1_000_000).default(0),\n});\n\nexport const UploadProductImageRequestSchema = z.object({\n role: z.enum(ProductMediaRole).default(ProductMediaRole.GALLERY),\n sortOrder: z.coerce.number().int().min(0).max(1_000_000).default(0),\n});\n\nexport const UploadProductVideoRequestSchema = z.object({\n sortOrder: z.coerce.number().int().min(0).max(1_000_000).default(0),\n});\n\nexport const UpdateProductMediaRequestSchema = z.object({\n role: z.enum(ProductMediaRole).optional(),\n sortOrder: z.number().int().min(0).max(1_000_000).optional(),\n});\n\nexport const ProductCategorySchema = z.object({\n publicId: PublicIdSchema,\n code: CodeSchema,\n slug: SlugSchema,\n status: z.enum(ProductStatus),\n sortOrder: z.number().int().nonnegative(),\n version: z.number().int().positive(),\n translations: z.array(ProductCategoryTranslationInputSchema),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const ProductVariantSchema = ProductVariantInputSchema.extend({\n publicId: PublicIdSchema,\n version: z.number().int().positive(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const ProductMediaSchema = z.object({\n publicId: PublicIdSchema,\n type: z.enum(ProductMediaType),\n role: z.enum(ProductMediaRole),\n externalUrl: z.string().nullable(),\n contentUrl: z.string().nullable(),\n mimeType: z.string().nullable(),\n sizeBytes: z.number().int().positive().nullable(),\n originalName: z.string().nullable(),\n sortOrder: z.number().int().nonnegative(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const ProductSchema = z.object({\n publicId: PublicIdSchema,\n code: CodeSchema,\n slug: SlugSchema,\n status: z.enum(ProductStatus),\n manufacturerCountryCode: z.string().length(2),\n manufacturerName: z.string().nullable(),\n sgr: z.string().nullable(),\n isFeatured: z.boolean(),\n sortOrder: z.number().int().nonnegative(),\n publishedAt: z.string().datetime().nullable(),\n version: z.number().int().positive(),\n translations: z.array(ProductTranslationInputSchema),\n categories: z.array(ProductCategorySchema),\n primaryCategoryPublicId: PublicIdSchema,\n variants: z.array(ProductVariantSchema),\n media: z.array(ProductMediaSchema),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const LocalizedProductCategorySchema = z.object({\n publicId: PublicIdSchema,\n code: CodeSchema,\n slug: SlugSchema,\n name: z.string(),\n description: z.string().nullable(),\n});\n\nexport const LocalizedProductSchema = ProductSchema.omit({\n translations: true,\n categories: true,\n version: true,\n}).extend({\n name: z.string(),\n shortDescription: z.string(),\n description: z.string(),\n composition: z.string().nullable(),\n usageInstructions: z.string().nullable(),\n features: z.string().nullable(),\n contraindications: z.string().nullable(),\n shelfLife: z.string(),\n packageContents: z.string().nullable(),\n categories: z.array(LocalizedProductCategorySchema),\n});\n"]}
@@ -0,0 +1,282 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/catalog/catalog.enums.ts
4
+ var ProductStatus = {
5
+ DRAFT: "DRAFT",
6
+ ACTIVE: "ACTIVE",
7
+ ARCHIVED: "ARCHIVED"
8
+ };
9
+ var ProductUnit = {
10
+ CAPSULE: "CAPSULE",
11
+ GRAM: "GRAM",
12
+ MILLILITER: "MILLILITER",
13
+ PIECE: "PIECE"
14
+ };
15
+ var ProductMediaType = {
16
+ IMAGE: "IMAGE",
17
+ UPLOADED_VIDEO: "UPLOADED_VIDEO",
18
+ EXTERNAL_VIDEO: "EXTERNAL_VIDEO"
19
+ };
20
+ var ProductMediaRole = {
21
+ COVER: "COVER",
22
+ GALLERY: "GALLERY"
23
+ };
24
+
25
+ // src/localization/app-locale.enum.ts
26
+ var AppLocale = {
27
+ RU: "ru",
28
+ KK: "kk",
29
+ UZ: "uz",
30
+ EN: "en"
31
+ };
32
+ Object.values(
33
+ AppLocale
34
+ );
35
+
36
+ // src/localization/app-locale.schema.ts
37
+ var AppLocaleSchema = z.enum(AppLocale);
38
+ var PageSchema = z.coerce.number().int().min(1).default(1);
39
+ var LimitSchema = z.coerce.number().int().min(1).max(100).default(20);
40
+ var SortOrderSchema = z.enum(["asc", "desc"]).default("desc");
41
+ z.object({
42
+ page: PageSchema.optional(),
43
+ limit: LimitSchema.optional()
44
+ });
45
+
46
+ // src/common/list-query.schemas.ts
47
+ var DateFromSchema = z.string().datetime().optional();
48
+ var DateToSchema = z.string().datetime().optional();
49
+ var SearchSchema = z.string().trim().min(1).max(255).optional();
50
+ var BaseListQuerySchema = z.object({
51
+ page: PageSchema.optional(),
52
+ limit: LimitSchema.optional(),
53
+ search: SearchSchema,
54
+ dateFrom: DateFromSchema,
55
+ dateTo: DateToSchema,
56
+ sortOrder: SortOrderSchema.optional()
57
+ });
58
+
59
+ // src/catalog/catalog.schemas.ts
60
+ var CodeSchema = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
61
+ var SlugSchema = z.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(160);
62
+ var PublicIdSchema = z.uuid();
63
+ var MoneySchema = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
64
+ var PvSchema = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/).refine((value) => Number(value) > 0, "PV \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
65
+ var PositiveDecimalSchema = z.string().trim().regex(/^\d{1,9}(?:\.\d{1,3})?$/).refine((value) => Number(value) > 0, "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F");
66
+ var ProductCategoryTranslationInputSchema = z.object({
67
+ locale: AppLocaleSchema,
68
+ name: z.string().trim().min(1).max(120),
69
+ description: z.string().trim().max(500).nullable().optional()
70
+ });
71
+ var ProductTranslationInputSchema = z.object({
72
+ locale: AppLocaleSchema,
73
+ name: z.string().trim().min(1).max(180),
74
+ shortDescription: z.string().trim().min(1).max(500),
75
+ description: z.string().trim().min(1).max(2e4),
76
+ composition: z.string().trim().max(2e4).nullable().optional(),
77
+ usageInstructions: z.string().trim().max(2e4).nullable().optional(),
78
+ features: z.string().trim().max(2e4).nullable().optional(),
79
+ contraindications: z.string().trim().max(2e4).nullable().optional(),
80
+ shelfLife: z.string().trim().min(1).max(255),
81
+ packageContents: z.string().trim().max(2e3).nullable().optional()
82
+ });
83
+ var UniqueLocalesSchema = (schema) => z.array(schema).min(1).max(4).refine(
84
+ (items) => new Set(items.map((item) => item.locale)).size === items.length,
85
+ "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
86
+ );
87
+ var CreateProductCategoryRequestSchema = z.object({
88
+ code: CodeSchema,
89
+ slug: SlugSchema,
90
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
91
+ translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema)
92
+ });
93
+ var UpdateProductCategoryRequestSchema = z.object({
94
+ slug: SlugSchema,
95
+ sortOrder: z.number().int().min(0).max(1e6),
96
+ translations: UniqueLocalesSchema(ProductCategoryTranslationInputSchema),
97
+ version: z.number().int().positive()
98
+ }).partial().required({ version: true });
99
+ var ProductVariantFieldsSchema = z.object({
100
+ sku: CodeSchema,
101
+ barcode: z.string().trim().min(1).max(64).nullable().optional(),
102
+ quantity: PositiveDecimalSchema,
103
+ unit: z.enum(ProductUnit),
104
+ netWeightGrams: PositiveDecimalSchema.nullable().optional(),
105
+ priceUsd: MoneySchema,
106
+ pv: PvSchema,
107
+ shippingWeightGrams: PositiveDecimalSchema.nullable().optional(),
108
+ lengthMm: PositiveDecimalSchema.nullable().optional(),
109
+ widthMm: PositiveDecimalSchema.nullable().optional(),
110
+ heightMm: PositiveDecimalSchema.nullable().optional(),
111
+ isDefault: z.boolean(),
112
+ isActive: z.boolean(),
113
+ sortOrder: z.number().int().min(0).max(1e6)
114
+ });
115
+ var ProductVariantInputSchema = ProductVariantFieldsSchema.extend({
116
+ isDefault: ProductVariantFieldsSchema.shape.isDefault.default(false),
117
+ isActive: ProductVariantFieldsSchema.shape.isActive.default(true),
118
+ sortOrder: ProductVariantFieldsSchema.shape.sortOrder.default(0)
119
+ });
120
+ var CreateProductRequestSchema = z.object({
121
+ code: CodeSchema,
122
+ slug: SlugSchema,
123
+ manufacturerCountryCode: z.string().trim().toUpperCase().length(2),
124
+ manufacturerName: z.string().trim().max(255).nullable().optional(),
125
+ sgr: z.string().trim().max(255).nullable().optional(),
126
+ isFeatured: z.boolean().default(false),
127
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
128
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
129
+ categoryPublicIds: z.array(PublicIdSchema).min(1).max(100),
130
+ primaryCategoryPublicId: PublicIdSchema,
131
+ variants: z.array(ProductVariantInputSchema).min(1).max(100).refine(
132
+ (items) => items.filter((item) => item.isDefault).length === 1,
133
+ "\u0414\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0440\u043E\u0432\u043D\u043E \u043E\u0434\u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044F"
134
+ )
135
+ }).refine(
136
+ (value) => value.categoryPublicIds.includes(value.primaryCategoryPublicId),
137
+ {
138
+ message: "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",
139
+ path: ["primaryCategoryPublicId"]
140
+ }
141
+ );
142
+ var UpdateProductRequestSchema = z.object({
143
+ slug: SlugSchema,
144
+ manufacturerCountryCode: z.string().trim().toUpperCase().length(2),
145
+ manufacturerName: z.string().trim().max(255).nullable(),
146
+ sgr: z.string().trim().max(255).nullable(),
147
+ isFeatured: z.boolean(),
148
+ sortOrder: z.number().int().min(0).max(1e6),
149
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
150
+ categoryPublicIds: z.array(PublicIdSchema).min(1).max(100),
151
+ primaryCategoryPublicId: PublicIdSchema,
152
+ version: z.number().int().positive()
153
+ }).partial().required({ version: true }).refine(
154
+ (value) => !value.primaryCategoryPublicId || !value.categoryPublicIds || value.categoryPublicIds.includes(value.primaryCategoryPublicId),
155
+ {
156
+ message: "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",
157
+ path: ["primaryCategoryPublicId"]
158
+ }
159
+ );
160
+ var CreateProductVariantRequestSchema = ProductVariantInputSchema;
161
+ var UpdateProductVariantRequestSchema = ProductVariantFieldsSchema.partial().extend({
162
+ version: z.number().int().positive()
163
+ });
164
+ var ProductPublicIdParamSchema = z.object({
165
+ publicId: PublicIdSchema
166
+ });
167
+ var ProductSlugParamSchema = z.object({ slug: SlugSchema });
168
+ var ProductVariantPublicIdParamSchema = z.object({
169
+ publicId: PublicIdSchema,
170
+ variantPublicId: PublicIdSchema
171
+ });
172
+ var ProductMediaPublicIdParamSchema = z.object({
173
+ publicId: PublicIdSchema,
174
+ mediaPublicId: PublicIdSchema
175
+ });
176
+ var QueryBooleanSchema = z.union([
177
+ z.boolean(),
178
+ z.enum(["true", "false"]).transform((value) => value === "true")
179
+ ]);
180
+ var ProductListQuerySchema = BaseListQuerySchema.extend({
181
+ status: z.enum(ProductStatus).optional(),
182
+ category: SlugSchema.optional(),
183
+ featured: QueryBooleanSchema.optional()
184
+ });
185
+ var CreateExternalProductVideoRequestSchema = z.object({
186
+ url: z.url().max(2e3).refine((value) => {
187
+ const url = new URL(value);
188
+ const host = url.hostname.toLowerCase().replace(/^www\./, "");
189
+ return url.protocol === "https:" && ["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com"].includes(
190
+ host
191
+ );
192
+ }, "\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E HTTPS-\u0441\u0441\u044B\u043B\u043A\u0438 YouTube \u0438 Vimeo"),
193
+ sortOrder: z.number().int().min(0).max(1e6).default(0)
194
+ });
195
+ var UploadProductImageRequestSchema = z.object({
196
+ role: z.enum(ProductMediaRole).default(ProductMediaRole.GALLERY),
197
+ sortOrder: z.coerce.number().int().min(0).max(1e6).default(0)
198
+ });
199
+ var UploadProductVideoRequestSchema = z.object({
200
+ sortOrder: z.coerce.number().int().min(0).max(1e6).default(0)
201
+ });
202
+ var UpdateProductMediaRequestSchema = z.object({
203
+ role: z.enum(ProductMediaRole).optional(),
204
+ sortOrder: z.number().int().min(0).max(1e6).optional()
205
+ });
206
+ var ProductCategorySchema = z.object({
207
+ publicId: PublicIdSchema,
208
+ code: CodeSchema,
209
+ slug: SlugSchema,
210
+ status: z.enum(ProductStatus),
211
+ sortOrder: z.number().int().nonnegative(),
212
+ version: z.number().int().positive(),
213
+ translations: z.array(ProductCategoryTranslationInputSchema),
214
+ createdAt: z.string().datetime(),
215
+ updatedAt: z.string().datetime()
216
+ });
217
+ var ProductVariantSchema = ProductVariantInputSchema.extend({
218
+ publicId: PublicIdSchema,
219
+ version: z.number().int().positive(),
220
+ createdAt: z.string().datetime(),
221
+ updatedAt: z.string().datetime()
222
+ });
223
+ var ProductMediaSchema = z.object({
224
+ publicId: PublicIdSchema,
225
+ type: z.enum(ProductMediaType),
226
+ role: z.enum(ProductMediaRole),
227
+ externalUrl: z.string().nullable(),
228
+ contentUrl: z.string().nullable(),
229
+ mimeType: z.string().nullable(),
230
+ sizeBytes: z.number().int().positive().nullable(),
231
+ originalName: z.string().nullable(),
232
+ sortOrder: z.number().int().nonnegative(),
233
+ createdAt: z.string().datetime(),
234
+ updatedAt: z.string().datetime()
235
+ });
236
+ var ProductSchema = z.object({
237
+ publicId: PublicIdSchema,
238
+ code: CodeSchema,
239
+ slug: SlugSchema,
240
+ status: z.enum(ProductStatus),
241
+ manufacturerCountryCode: z.string().length(2),
242
+ manufacturerName: z.string().nullable(),
243
+ sgr: z.string().nullable(),
244
+ isFeatured: z.boolean(),
245
+ sortOrder: z.number().int().nonnegative(),
246
+ publishedAt: z.string().datetime().nullable(),
247
+ version: z.number().int().positive(),
248
+ translations: z.array(ProductTranslationInputSchema),
249
+ categories: z.array(ProductCategorySchema),
250
+ primaryCategoryPublicId: PublicIdSchema,
251
+ variants: z.array(ProductVariantSchema),
252
+ media: z.array(ProductMediaSchema),
253
+ createdAt: z.string().datetime(),
254
+ updatedAt: z.string().datetime()
255
+ });
256
+ var LocalizedProductCategorySchema = z.object({
257
+ publicId: PublicIdSchema,
258
+ code: CodeSchema,
259
+ slug: SlugSchema,
260
+ name: z.string(),
261
+ description: z.string().nullable()
262
+ });
263
+ var LocalizedProductSchema = ProductSchema.omit({
264
+ translations: true,
265
+ categories: true,
266
+ version: true
267
+ }).extend({
268
+ name: z.string(),
269
+ shortDescription: z.string(),
270
+ description: z.string(),
271
+ composition: z.string().nullable(),
272
+ usageInstructions: z.string().nullable(),
273
+ features: z.string().nullable(),
274
+ contraindications: z.string().nullable(),
275
+ shelfLife: z.string(),
276
+ packageContents: z.string().nullable(),
277
+ categories: z.array(LocalizedProductCategorySchema)
278
+ });
279
+
280
+ export { CreateExternalProductVideoRequestSchema, CreateProductCategoryRequestSchema, CreateProductRequestSchema, CreateProductVariantRequestSchema, LocalizedProductCategorySchema, LocalizedProductSchema, ProductCategorySchema, ProductCategoryTranslationInputSchema, ProductListQuerySchema, ProductMediaPublicIdParamSchema, ProductMediaRole, ProductMediaSchema, ProductMediaType, ProductPublicIdParamSchema, ProductSchema, ProductSlugParamSchema, ProductStatus, ProductTranslationInputSchema, ProductUnit, ProductVariantInputSchema, ProductVariantPublicIdParamSchema, ProductVariantSchema, UpdateProductCategoryRequestSchema, UpdateProductMediaRequestSchema, UpdateProductRequestSchema, UpdateProductVariantRequestSchema, UploadProductImageRequestSchema, UploadProductVideoRequestSchema };
281
+ //# sourceMappingURL=index.mjs.map
282
+ //# sourceMappingURL=index.mjs.map