aivilife-contracts 4.1.0 → 4.3.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,302 @@
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().max(255).nullable().optional(),
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 ProductVariantInputSchema = 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().default(false),
114
+ isActive: zod.z.boolean().default(true),
115
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0)
116
+ });
117
+ var CreateProductRequestSchema = zod.z.object({
118
+ code: CodeSchema,
119
+ slug: SlugSchema,
120
+ manufacturerCountryCode: zod.z.string().trim().toUpperCase().length(2),
121
+ manufacturerName: zod.z.string().trim().max(255).nullable().optional(),
122
+ sgr: zod.z.string().trim().max(255).nullable().optional(),
123
+ isFeatured: zod.z.boolean().default(false),
124
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0),
125
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
126
+ categoryPublicIds: zod.z.array(PublicIdSchema).min(1).max(100),
127
+ primaryCategoryPublicId: PublicIdSchema,
128
+ variants: zod.z.array(ProductVariantInputSchema).min(1).max(100).refine(
129
+ (items) => items.filter((item) => item.isDefault).length === 1,
130
+ "\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"
131
+ )
132
+ }).refine(
133
+ (value) => value.categoryPublicIds.includes(value.primaryCategoryPublicId),
134
+ {
135
+ 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",
136
+ path: ["primaryCategoryPublicId"]
137
+ }
138
+ );
139
+ var UpdateProductRequestSchema = zod.z.object({
140
+ slug: SlugSchema,
141
+ manufacturerCountryCode: zod.z.string().trim().toUpperCase().length(2),
142
+ manufacturerName: zod.z.string().trim().max(255).nullable(),
143
+ sgr: zod.z.string().trim().max(255).nullable(),
144
+ isFeatured: zod.z.boolean(),
145
+ sortOrder: zod.z.number().int().min(0).max(1e6),
146
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
147
+ categoryPublicIds: zod.z.array(PublicIdSchema).min(1).max(100),
148
+ primaryCategoryPublicId: PublicIdSchema,
149
+ version: zod.z.number().int().positive()
150
+ }).partial().required({ version: true }).refine(
151
+ (value) => !value.primaryCategoryPublicId || !value.categoryPublicIds || value.categoryPublicIds.includes(value.primaryCategoryPublicId),
152
+ {
153
+ 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",
154
+ path: ["primaryCategoryPublicId"]
155
+ }
156
+ );
157
+ var CreateProductVariantRequestSchema = ProductVariantInputSchema;
158
+ var UpdateProductVariantRequestSchema = ProductVariantInputSchema.partial().extend({
159
+ version: zod.z.number().int().positive()
160
+ });
161
+ var ProductPublicIdParamSchema = zod.z.object({
162
+ publicId: PublicIdSchema
163
+ });
164
+ var ProductSlugParamSchema = zod.z.object({ slug: SlugSchema });
165
+ var ProductVariantPublicIdParamSchema = zod.z.object({
166
+ publicId: PublicIdSchema,
167
+ variantPublicId: PublicIdSchema
168
+ });
169
+ var ProductMediaPublicIdParamSchema = zod.z.object({
170
+ publicId: PublicIdSchema,
171
+ mediaPublicId: PublicIdSchema
172
+ });
173
+ var ProductListQuerySchema = BaseListQuerySchema.extend({
174
+ status: zod.z.enum(ProductStatus).optional(),
175
+ category: SlugSchema.optional(),
176
+ featured: zod.z.coerce.boolean().optional()
177
+ });
178
+ var CreateExternalProductVideoRequestSchema = zod.z.object({
179
+ url: zod.z.url().max(2e3).refine((value) => {
180
+ const url = new URL(value);
181
+ const host = url.hostname.toLowerCase().replace(/^www\./, "");
182
+ return url.protocol === "https:" && ["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com"].includes(
183
+ host
184
+ );
185
+ }, "\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"),
186
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0)
187
+ });
188
+ var UploadProductImageRequestSchema = zod.z.object({
189
+ role: zod.z.enum(ProductMediaRole).default(ProductMediaRole.GALLERY),
190
+ sortOrder: zod.z.coerce.number().int().min(0).max(1e6).default(0)
191
+ });
192
+ var UploadProductVideoRequestSchema = zod.z.object({
193
+ sortOrder: zod.z.coerce.number().int().min(0).max(1e6).default(0)
194
+ });
195
+ var UpdateProductMediaRequestSchema = zod.z.object({
196
+ role: zod.z.enum(ProductMediaRole).optional(),
197
+ sortOrder: zod.z.number().int().min(0).max(1e6).optional()
198
+ });
199
+ var ProductCategorySchema = zod.z.object({
200
+ publicId: PublicIdSchema,
201
+ code: CodeSchema,
202
+ slug: SlugSchema,
203
+ status: zod.z.enum(ProductStatus),
204
+ sortOrder: zod.z.number().int().nonnegative(),
205
+ version: zod.z.number().int().positive(),
206
+ translations: zod.z.array(ProductCategoryTranslationInputSchema),
207
+ createdAt: zod.z.string().datetime(),
208
+ updatedAt: zod.z.string().datetime()
209
+ });
210
+ var ProductVariantSchema = ProductVariantInputSchema.extend({
211
+ publicId: PublicIdSchema,
212
+ version: zod.z.number().int().positive(),
213
+ createdAt: zod.z.string().datetime(),
214
+ updatedAt: zod.z.string().datetime()
215
+ });
216
+ var ProductMediaSchema = zod.z.object({
217
+ publicId: PublicIdSchema,
218
+ type: zod.z.enum(ProductMediaType),
219
+ role: zod.z.enum(ProductMediaRole),
220
+ externalUrl: zod.z.string().nullable(),
221
+ contentUrl: zod.z.string().nullable(),
222
+ mimeType: zod.z.string().nullable(),
223
+ sizeBytes: zod.z.number().int().positive().nullable(),
224
+ originalName: zod.z.string().nullable(),
225
+ sortOrder: zod.z.number().int().nonnegative(),
226
+ createdAt: zod.z.string().datetime(),
227
+ updatedAt: zod.z.string().datetime()
228
+ });
229
+ var ProductSchema = zod.z.object({
230
+ publicId: PublicIdSchema,
231
+ code: CodeSchema,
232
+ slug: SlugSchema,
233
+ status: zod.z.enum(ProductStatus),
234
+ manufacturerCountryCode: zod.z.string().length(2),
235
+ manufacturerName: zod.z.string().nullable(),
236
+ sgr: zod.z.string().nullable(),
237
+ isFeatured: zod.z.boolean(),
238
+ sortOrder: zod.z.number().int().nonnegative(),
239
+ publishedAt: zod.z.string().datetime().nullable(),
240
+ version: zod.z.number().int().positive(),
241
+ translations: zod.z.array(ProductTranslationInputSchema),
242
+ categories: zod.z.array(ProductCategorySchema),
243
+ primaryCategoryPublicId: PublicIdSchema,
244
+ variants: zod.z.array(ProductVariantSchema),
245
+ media: zod.z.array(ProductMediaSchema),
246
+ createdAt: zod.z.string().datetime(),
247
+ updatedAt: zod.z.string().datetime()
248
+ });
249
+ var LocalizedProductCategorySchema = zod.z.object({
250
+ publicId: PublicIdSchema,
251
+ code: CodeSchema,
252
+ slug: SlugSchema,
253
+ name: zod.z.string(),
254
+ description: zod.z.string().nullable()
255
+ });
256
+ var LocalizedProductSchema = ProductSchema.omit({
257
+ translations: true,
258
+ categories: true,
259
+ version: true
260
+ }).extend({
261
+ name: zod.z.string(),
262
+ shortDescription: zod.z.string(),
263
+ description: zod.z.string(),
264
+ composition: zod.z.string().nullable(),
265
+ usageInstructions: zod.z.string().nullable(),
266
+ features: zod.z.string().nullable(),
267
+ contraindications: zod.z.string().nullable(),
268
+ shelfLife: zod.z.string().nullable(),
269
+ packageContents: zod.z.string().nullable(),
270
+ categories: zod.z.array(LocalizedProductCategorySchema)
271
+ });
272
+
273
+ exports.CreateExternalProductVideoRequestSchema = CreateExternalProductVideoRequestSchema;
274
+ exports.CreateProductCategoryRequestSchema = CreateProductCategoryRequestSchema;
275
+ exports.CreateProductRequestSchema = CreateProductRequestSchema;
276
+ exports.CreateProductVariantRequestSchema = CreateProductVariantRequestSchema;
277
+ exports.LocalizedProductCategorySchema = LocalizedProductCategorySchema;
278
+ exports.LocalizedProductSchema = LocalizedProductSchema;
279
+ exports.ProductCategorySchema = ProductCategorySchema;
280
+ exports.ProductCategoryTranslationInputSchema = ProductCategoryTranslationInputSchema;
281
+ exports.ProductListQuerySchema = ProductListQuerySchema;
282
+ exports.ProductMediaPublicIdParamSchema = ProductMediaPublicIdParamSchema;
283
+ exports.ProductMediaRole = ProductMediaRole;
284
+ exports.ProductMediaSchema = ProductMediaSchema;
285
+ exports.ProductMediaType = ProductMediaType;
286
+ exports.ProductPublicIdParamSchema = ProductPublicIdParamSchema;
287
+ exports.ProductSchema = ProductSchema;
288
+ exports.ProductSlugParamSchema = ProductSlugParamSchema;
289
+ exports.ProductStatus = ProductStatus;
290
+ exports.ProductTranslationInputSchema = ProductTranslationInputSchema;
291
+ exports.ProductUnit = ProductUnit;
292
+ exports.ProductVariantInputSchema = ProductVariantInputSchema;
293
+ exports.ProductVariantPublicIdParamSchema = ProductVariantPublicIdParamSchema;
294
+ exports.ProductVariantSchema = ProductVariantSchema;
295
+ exports.UpdateProductCategoryRequestSchema = UpdateProductCategoryRequestSchema;
296
+ exports.UpdateProductMediaRequestSchema = UpdateProductMediaRequestSchema;
297
+ exports.UpdateProductRequestSchema = UpdateProductRequestSchema;
298
+ exports.UpdateProductVariantRequestSchema = UpdateProductVariantRequestSchema;
299
+ exports.UploadProductImageRequestSchema = UploadProductImageRequestSchema;
300
+ exports.UploadProductVideoRequestSchema = UploadProductVideoRequestSchema;
301
+ //# sourceMappingURL=index.js.map
302
+ //# 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().max(255).nullable().optional(),\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\nexport const ProductVariantInputSchema = 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().default(false),\n isActive: z.boolean().default(true),\n sortOrder: z.number().int().min(0).max(1_000_000).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 ProductVariantInputSchema.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\nexport const ProductListQuerySchema = BaseListQuerySchema.extend({\n status: z.enum(ProductStatus).optional(),\n category: SlugSchema.optional(),\n featured: z.coerce.boolean().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().nullable(),\n packageContents: z.string().nullable(),\n categories: z.array(LocalizedProductCategorySchema),\n});\n"]}
@@ -0,0 +1,273 @@
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().max(255).nullable().optional(),
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 ProductVariantInputSchema = 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().default(false),
112
+ isActive: z.boolean().default(true),
113
+ sortOrder: z.number().int().min(0).max(1e6).default(0)
114
+ });
115
+ var CreateProductRequestSchema = z.object({
116
+ code: CodeSchema,
117
+ slug: SlugSchema,
118
+ manufacturerCountryCode: z.string().trim().toUpperCase().length(2),
119
+ manufacturerName: z.string().trim().max(255).nullable().optional(),
120
+ sgr: z.string().trim().max(255).nullable().optional(),
121
+ isFeatured: z.boolean().default(false),
122
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
123
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
124
+ categoryPublicIds: z.array(PublicIdSchema).min(1).max(100),
125
+ primaryCategoryPublicId: PublicIdSchema,
126
+ variants: z.array(ProductVariantInputSchema).min(1).max(100).refine(
127
+ (items) => items.filter((item) => item.isDefault).length === 1,
128
+ "\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"
129
+ )
130
+ }).refine(
131
+ (value) => value.categoryPublicIds.includes(value.primaryCategoryPublicId),
132
+ {
133
+ 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",
134
+ path: ["primaryCategoryPublicId"]
135
+ }
136
+ );
137
+ var UpdateProductRequestSchema = z.object({
138
+ slug: SlugSchema,
139
+ manufacturerCountryCode: z.string().trim().toUpperCase().length(2),
140
+ manufacturerName: z.string().trim().max(255).nullable(),
141
+ sgr: z.string().trim().max(255).nullable(),
142
+ isFeatured: z.boolean(),
143
+ sortOrder: z.number().int().min(0).max(1e6),
144
+ translations: UniqueLocalesSchema(ProductTranslationInputSchema),
145
+ categoryPublicIds: z.array(PublicIdSchema).min(1).max(100),
146
+ primaryCategoryPublicId: PublicIdSchema,
147
+ version: z.number().int().positive()
148
+ }).partial().required({ version: true }).refine(
149
+ (value) => !value.primaryCategoryPublicId || !value.categoryPublicIds || value.categoryPublicIds.includes(value.primaryCategoryPublicId),
150
+ {
151
+ 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",
152
+ path: ["primaryCategoryPublicId"]
153
+ }
154
+ );
155
+ var CreateProductVariantRequestSchema = ProductVariantInputSchema;
156
+ var UpdateProductVariantRequestSchema = ProductVariantInputSchema.partial().extend({
157
+ version: z.number().int().positive()
158
+ });
159
+ var ProductPublicIdParamSchema = z.object({
160
+ publicId: PublicIdSchema
161
+ });
162
+ var ProductSlugParamSchema = z.object({ slug: SlugSchema });
163
+ var ProductVariantPublicIdParamSchema = z.object({
164
+ publicId: PublicIdSchema,
165
+ variantPublicId: PublicIdSchema
166
+ });
167
+ var ProductMediaPublicIdParamSchema = z.object({
168
+ publicId: PublicIdSchema,
169
+ mediaPublicId: PublicIdSchema
170
+ });
171
+ var ProductListQuerySchema = BaseListQuerySchema.extend({
172
+ status: z.enum(ProductStatus).optional(),
173
+ category: SlugSchema.optional(),
174
+ featured: z.coerce.boolean().optional()
175
+ });
176
+ var CreateExternalProductVideoRequestSchema = z.object({
177
+ url: z.url().max(2e3).refine((value) => {
178
+ const url = new URL(value);
179
+ const host = url.hostname.toLowerCase().replace(/^www\./, "");
180
+ return url.protocol === "https:" && ["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com"].includes(
181
+ host
182
+ );
183
+ }, "\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"),
184
+ sortOrder: z.number().int().min(0).max(1e6).default(0)
185
+ });
186
+ var UploadProductImageRequestSchema = z.object({
187
+ role: z.enum(ProductMediaRole).default(ProductMediaRole.GALLERY),
188
+ sortOrder: z.coerce.number().int().min(0).max(1e6).default(0)
189
+ });
190
+ var UploadProductVideoRequestSchema = z.object({
191
+ sortOrder: z.coerce.number().int().min(0).max(1e6).default(0)
192
+ });
193
+ var UpdateProductMediaRequestSchema = z.object({
194
+ role: z.enum(ProductMediaRole).optional(),
195
+ sortOrder: z.number().int().min(0).max(1e6).optional()
196
+ });
197
+ var ProductCategorySchema = z.object({
198
+ publicId: PublicIdSchema,
199
+ code: CodeSchema,
200
+ slug: SlugSchema,
201
+ status: z.enum(ProductStatus),
202
+ sortOrder: z.number().int().nonnegative(),
203
+ version: z.number().int().positive(),
204
+ translations: z.array(ProductCategoryTranslationInputSchema),
205
+ createdAt: z.string().datetime(),
206
+ updatedAt: z.string().datetime()
207
+ });
208
+ var ProductVariantSchema = ProductVariantInputSchema.extend({
209
+ publicId: PublicIdSchema,
210
+ version: z.number().int().positive(),
211
+ createdAt: z.string().datetime(),
212
+ updatedAt: z.string().datetime()
213
+ });
214
+ var ProductMediaSchema = z.object({
215
+ publicId: PublicIdSchema,
216
+ type: z.enum(ProductMediaType),
217
+ role: z.enum(ProductMediaRole),
218
+ externalUrl: z.string().nullable(),
219
+ contentUrl: z.string().nullable(),
220
+ mimeType: z.string().nullable(),
221
+ sizeBytes: z.number().int().positive().nullable(),
222
+ originalName: z.string().nullable(),
223
+ sortOrder: z.number().int().nonnegative(),
224
+ createdAt: z.string().datetime(),
225
+ updatedAt: z.string().datetime()
226
+ });
227
+ var ProductSchema = z.object({
228
+ publicId: PublicIdSchema,
229
+ code: CodeSchema,
230
+ slug: SlugSchema,
231
+ status: z.enum(ProductStatus),
232
+ manufacturerCountryCode: z.string().length(2),
233
+ manufacturerName: z.string().nullable(),
234
+ sgr: z.string().nullable(),
235
+ isFeatured: z.boolean(),
236
+ sortOrder: z.number().int().nonnegative(),
237
+ publishedAt: z.string().datetime().nullable(),
238
+ version: z.number().int().positive(),
239
+ translations: z.array(ProductTranslationInputSchema),
240
+ categories: z.array(ProductCategorySchema),
241
+ primaryCategoryPublicId: PublicIdSchema,
242
+ variants: z.array(ProductVariantSchema),
243
+ media: z.array(ProductMediaSchema),
244
+ createdAt: z.string().datetime(),
245
+ updatedAt: z.string().datetime()
246
+ });
247
+ var LocalizedProductCategorySchema = z.object({
248
+ publicId: PublicIdSchema,
249
+ code: CodeSchema,
250
+ slug: SlugSchema,
251
+ name: z.string(),
252
+ description: z.string().nullable()
253
+ });
254
+ var LocalizedProductSchema = ProductSchema.omit({
255
+ translations: true,
256
+ categories: true,
257
+ version: true
258
+ }).extend({
259
+ name: z.string(),
260
+ shortDescription: z.string(),
261
+ description: z.string(),
262
+ composition: z.string().nullable(),
263
+ usageInstructions: z.string().nullable(),
264
+ features: z.string().nullable(),
265
+ contraindications: z.string().nullable(),
266
+ shelfLife: z.string().nullable(),
267
+ packageContents: z.string().nullable(),
268
+ categories: z.array(LocalizedProductCategorySchema)
269
+ });
270
+
271
+ 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 };
272
+ //# sourceMappingURL=index.mjs.map
273
+ //# sourceMappingURL=index.mjs.map