@voyantjs/products 0.2.0 → 0.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.
Files changed (39) hide show
  1. package/dist/routes.d.ts +4 -4
  2. package/dist/schema-core.d.ts +897 -0
  3. package/dist/schema-core.d.ts.map +1 -0
  4. package/dist/schema-core.js +77 -0
  5. package/dist/schema-itinerary.d.ts +828 -0
  6. package/dist/schema-itinerary.d.ts.map +1 -0
  7. package/dist/schema-itinerary.js +77 -0
  8. package/dist/schema-relations.d.ts +99 -0
  9. package/dist/schema-relations.d.ts.map +1 -0
  10. package/dist/schema-relations.js +155 -0
  11. package/dist/schema-settings.d.ts +1749 -0
  12. package/dist/schema-settings.d.ts.map +1 -0
  13. package/dist/schema-settings.js +175 -0
  14. package/dist/schema-shared.d.ts +15 -0
  15. package/dist/schema-shared.d.ts.map +1 -0
  16. package/dist/schema-shared.js +91 -0
  17. package/dist/schema-taxonomy.d.ts +573 -0
  18. package/dist/schema-taxonomy.d.ts.map +1 -0
  19. package/dist/schema-taxonomy.js +65 -0
  20. package/dist/schema.d.ts +6 -4155
  21. package/dist/schema.d.ts.map +1 -1
  22. package/dist/schema.js +6 -653
  23. package/dist/service.d.ts +4 -4
  24. package/dist/validation-config.d.ts +233 -0
  25. package/dist/validation-config.d.ts.map +1 -0
  26. package/dist/validation-config.js +73 -0
  27. package/dist/validation-content.d.ts +358 -0
  28. package/dist/validation-content.d.ts.map +1 -0
  29. package/dist/validation-content.js +177 -0
  30. package/dist/validation-core.d.ts +268 -0
  31. package/dist/validation-core.d.ts.map +1 -0
  32. package/dist/validation-core.js +91 -0
  33. package/dist/validation-shared.d.ts +103 -0
  34. package/dist/validation-shared.d.ts.map +1 -0
  35. package/dist/validation-shared.js +86 -0
  36. package/dist/validation.d.ts +4 -854
  37. package/dist/validation.d.ts.map +1 -1
  38. package/dist/validation.js +4 -433
  39. package/package.json +4 -4
@@ -0,0 +1,268 @@
1
+ import { z } from "./validation-shared.js";
2
+ export declare const insertProductSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ status: z.ZodDefault<z.ZodEnum<{
5
+ draft: "draft";
6
+ active: "active";
7
+ archived: "archived";
8
+ }>>;
9
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
10
+ bookingMode: z.ZodDefault<z.ZodEnum<{
11
+ date: "date";
12
+ other: "other";
13
+ date_time: "date_time";
14
+ open: "open";
15
+ stay: "stay";
16
+ transfer: "transfer";
17
+ itinerary: "itinerary";
18
+ }>>;
19
+ capacityMode: z.ZodDefault<z.ZodEnum<{
20
+ free_sale: "free_sale";
21
+ limited: "limited";
22
+ on_request: "on_request";
23
+ }>>;
24
+ timezone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
25
+ visibility: z.ZodDefault<z.ZodEnum<{
26
+ public: "public";
27
+ private: "private";
28
+ hidden: "hidden";
29
+ }>>;
30
+ activated: z.ZodDefault<z.ZodBoolean>;
31
+ reservationTimeoutMinutes: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
32
+ sellCurrency: z.ZodString;
33
+ facilityId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
34
+ productTypeId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
35
+ startDate: z.ZodNullable<z.ZodOptional<z.ZodString>>;
36
+ endDate: z.ZodNullable<z.ZodOptional<z.ZodString>>;
37
+ pax: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
38
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
39
+ sellAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
40
+ costAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
41
+ marginPercent: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
42
+ }, z.core.$strip>;
43
+ export declare const updateProductSchema: z.ZodObject<{
44
+ name: z.ZodOptional<z.ZodString>;
45
+ status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
46
+ draft: "draft";
47
+ active: "active";
48
+ archived: "archived";
49
+ }>>>;
50
+ description: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
51
+ bookingMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
52
+ date: "date";
53
+ other: "other";
54
+ date_time: "date_time";
55
+ open: "open";
56
+ stay: "stay";
57
+ transfer: "transfer";
58
+ itinerary: "itinerary";
59
+ }>>>;
60
+ capacityMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
61
+ free_sale: "free_sale";
62
+ limited: "limited";
63
+ on_request: "on_request";
64
+ }>>>;
65
+ timezone: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
66
+ visibility: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
67
+ public: "public";
68
+ private: "private";
69
+ hidden: "hidden";
70
+ }>>>;
71
+ activated: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
72
+ reservationTimeoutMinutes: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
73
+ sellCurrency: z.ZodOptional<z.ZodString>;
74
+ facilityId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
75
+ productTypeId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
76
+ startDate: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
77
+ endDate: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
78
+ pax: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
79
+ tags: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
80
+ sellAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
81
+ costAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
82
+ marginPercent: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
83
+ }, z.core.$strip>;
84
+ export declare const selectProductSchema: z.ZodObject<{
85
+ name: z.ZodString;
86
+ status: z.ZodDefault<z.ZodEnum<{
87
+ draft: "draft";
88
+ active: "active";
89
+ archived: "archived";
90
+ }>>;
91
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
92
+ bookingMode: z.ZodDefault<z.ZodEnum<{
93
+ date: "date";
94
+ other: "other";
95
+ date_time: "date_time";
96
+ open: "open";
97
+ stay: "stay";
98
+ transfer: "transfer";
99
+ itinerary: "itinerary";
100
+ }>>;
101
+ capacityMode: z.ZodDefault<z.ZodEnum<{
102
+ free_sale: "free_sale";
103
+ limited: "limited";
104
+ on_request: "on_request";
105
+ }>>;
106
+ timezone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
107
+ visibility: z.ZodDefault<z.ZodEnum<{
108
+ public: "public";
109
+ private: "private";
110
+ hidden: "hidden";
111
+ }>>;
112
+ activated: z.ZodDefault<z.ZodBoolean>;
113
+ reservationTimeoutMinutes: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
114
+ sellCurrency: z.ZodString;
115
+ facilityId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
116
+ productTypeId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
117
+ startDate: z.ZodNullable<z.ZodOptional<z.ZodString>>;
118
+ endDate: z.ZodNullable<z.ZodOptional<z.ZodString>>;
119
+ pax: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
120
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
121
+ id: z.ZodString;
122
+ sellAmountCents: z.ZodNullable<z.ZodNumber>;
123
+ costAmountCents: z.ZodNullable<z.ZodNumber>;
124
+ marginPercent: z.ZodNullable<z.ZodNumber>;
125
+ createdAt: z.ZodCoercedDate<unknown>;
126
+ updatedAt: z.ZodCoercedDate<unknown>;
127
+ }, z.core.$strip>;
128
+ export declare const productListQuerySchema: z.ZodObject<{
129
+ status: z.ZodOptional<z.ZodEnum<{
130
+ draft: "draft";
131
+ active: "active";
132
+ archived: "archived";
133
+ }>>;
134
+ bookingMode: z.ZodOptional<z.ZodEnum<{
135
+ date: "date";
136
+ other: "other";
137
+ date_time: "date_time";
138
+ open: "open";
139
+ stay: "stay";
140
+ transfer: "transfer";
141
+ itinerary: "itinerary";
142
+ }>>;
143
+ visibility: z.ZodOptional<z.ZodEnum<{
144
+ public: "public";
145
+ private: "private";
146
+ hidden: "hidden";
147
+ }>>;
148
+ activated: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
149
+ 0: "0";
150
+ 1: "1";
151
+ true: "true";
152
+ false: "false";
153
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>;
154
+ facilityId: z.ZodOptional<z.ZodString>;
155
+ search: z.ZodOptional<z.ZodString>;
156
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
157
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
158
+ }, z.core.$strip>;
159
+ export type InsertProduct = z.infer<typeof insertProductSchema>;
160
+ export type UpdateProduct = z.infer<typeof updateProductSchema>;
161
+ export type SelectProduct = z.infer<typeof selectProductSchema>;
162
+ export declare const insertProductOptionSchema: z.ZodObject<{
163
+ name: z.ZodString;
164
+ code: z.ZodNullable<z.ZodOptional<z.ZodString>>;
165
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
166
+ status: z.ZodDefault<z.ZodEnum<{
167
+ draft: "draft";
168
+ active: "active";
169
+ archived: "archived";
170
+ }>>;
171
+ isDefault: z.ZodDefault<z.ZodBoolean>;
172
+ sortOrder: z.ZodDefault<z.ZodNumber>;
173
+ availableFrom: z.ZodNullable<z.ZodOptional<z.ZodString>>;
174
+ availableTo: z.ZodNullable<z.ZodOptional<z.ZodString>>;
175
+ }, z.core.$strip>;
176
+ export declare const updateProductOptionSchema: z.ZodObject<{
177
+ name: z.ZodOptional<z.ZodString>;
178
+ code: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
179
+ description: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
180
+ status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
181
+ draft: "draft";
182
+ active: "active";
183
+ archived: "archived";
184
+ }>>>;
185
+ isDefault: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
186
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
187
+ availableFrom: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
188
+ availableTo: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
189
+ }, z.core.$strip>;
190
+ export declare const productOptionListQuerySchema: z.ZodObject<{
191
+ productId: z.ZodOptional<z.ZodString>;
192
+ status: z.ZodOptional<z.ZodEnum<{
193
+ draft: "draft";
194
+ active: "active";
195
+ archived: "archived";
196
+ }>>;
197
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
198
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
199
+ }, z.core.$strip>;
200
+ export type InsertProductOption = z.infer<typeof insertProductOptionSchema>;
201
+ export type UpdateProductOption = z.infer<typeof updateProductOptionSchema>;
202
+ export declare const insertOptionUnitSchema: z.ZodObject<{
203
+ name: z.ZodString;
204
+ code: z.ZodNullable<z.ZodOptional<z.ZodString>>;
205
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
206
+ unitType: z.ZodDefault<z.ZodEnum<{
207
+ person: "person";
208
+ group: "group";
209
+ room: "room";
210
+ vehicle: "vehicle";
211
+ service: "service";
212
+ other: "other";
213
+ }>>;
214
+ minQuantity: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
215
+ maxQuantity: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
216
+ minAge: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
217
+ maxAge: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
218
+ occupancyMin: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
219
+ occupancyMax: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
220
+ isRequired: z.ZodDefault<z.ZodBoolean>;
221
+ isHidden: z.ZodDefault<z.ZodBoolean>;
222
+ sortOrder: z.ZodDefault<z.ZodNumber>;
223
+ }, z.core.$strip>;
224
+ export declare const updateOptionUnitSchema: z.ZodObject<{
225
+ name: z.ZodOptional<z.ZodString>;
226
+ code: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
227
+ description: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
228
+ unitType: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
229
+ person: "person";
230
+ group: "group";
231
+ room: "room";
232
+ vehicle: "vehicle";
233
+ service: "service";
234
+ other: "other";
235
+ }>>>;
236
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
237
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
238
+ minAge: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
239
+ maxAge: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
240
+ occupancyMin: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
241
+ occupancyMax: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
242
+ isRequired: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
243
+ isHidden: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
244
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
245
+ }, z.core.$strip>;
246
+ export declare const optionUnitListQuerySchema: z.ZodObject<{
247
+ optionId: z.ZodOptional<z.ZodString>;
248
+ unitType: z.ZodOptional<z.ZodEnum<{
249
+ person: "person";
250
+ group: "group";
251
+ room: "room";
252
+ vehicle: "vehicle";
253
+ service: "service";
254
+ other: "other";
255
+ }>>;
256
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
257
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
258
+ }, z.core.$strip>;
259
+ export type InsertOptionUnit = z.infer<typeof insertOptionUnitSchema>;
260
+ export type UpdateOptionUnit = z.infer<typeof updateOptionUnitSchema>;
261
+ export declare const insertVersionSchema: z.ZodObject<{
262
+ notes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
263
+ }, z.core.$strip>;
264
+ export type InsertVersion = z.infer<typeof insertVersionSchema>;
265
+ export declare const insertProductNoteSchema: z.ZodObject<{
266
+ content: z.ZodString;
267
+ }, z.core.$strip>;
268
+ //# sourceMappingURL=validation-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-core.d.ts","sourceRoot":"","sources":["../src/validation-core.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,CAAC,EACF,MAAM,wBAAwB,CAAA;AA2B/B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAA;AACjF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA2D,CAAA;AAC3F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO9B,CAAA;AACF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASjC,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAY/D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;iBAA0B,CAAA;AAChE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;iBAAoC,CAAA;AAC1E,eAAO,MAAM,4BAA4B;;;;;;;;;iBAKvC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAiB3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;iBAAuB,CAAA;AAC1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;iBAAiC,CAAA;AACpE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;iBAKpC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE,eAAO,MAAM,mBAAmB;;iBAE9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,uBAAuB;;iBAElC,CAAA"}
@@ -0,0 +1,91 @@
1
+ import { booleanQueryParam, optionUnitTypeSchema, productBookingModeSchema, productCapacityModeSchema, productOptionStatusSchema, productStatusSchema, productVisibilitySchema, typeIdSchema, z, } from "./validation-shared.js";
2
+ const productCoreSchema = z.object({
3
+ name: z.string().min(1).max(255),
4
+ status: productStatusSchema.default("draft"),
5
+ description: z.string().optional().nullable(),
6
+ bookingMode: productBookingModeSchema.default("date"),
7
+ capacityMode: productCapacityModeSchema.default("limited"),
8
+ timezone: z.string().max(100).optional().nullable(),
9
+ visibility: productVisibilitySchema.default("private"),
10
+ activated: z.boolean().default(false),
11
+ reservationTimeoutMinutes: z.number().int().min(0).optional().nullable(),
12
+ sellCurrency: z.string().min(3).max(3),
13
+ facilityId: z.string().optional().nullable(),
14
+ productTypeId: z.string().optional().nullable(),
15
+ startDate: z.string().optional().nullable(),
16
+ endDate: z.string().optional().nullable(),
17
+ pax: z.number().int().positive().optional().nullable(),
18
+ tags: z.array(z.string()).default([]),
19
+ });
20
+ const productPricingFields = {
21
+ sellAmountCents: z.number().int().min(0).optional().nullable(),
22
+ costAmountCents: z.number().int().min(0).optional().nullable(),
23
+ marginPercent: z.number().int().optional().nullable(),
24
+ };
25
+ export const insertProductSchema = productCoreSchema.extend(productPricingFields);
26
+ export const updateProductSchema = productCoreSchema.partial().extend(productPricingFields);
27
+ export const selectProductSchema = productCoreSchema.extend({
28
+ id: typeIdSchema("products"),
29
+ sellAmountCents: z.number().int().nullable(),
30
+ costAmountCents: z.number().int().nullable(),
31
+ marginPercent: z.number().int().nullable(),
32
+ createdAt: z.coerce.date(),
33
+ updatedAt: z.coerce.date(),
34
+ });
35
+ export const productListQuerySchema = z.object({
36
+ status: productStatusSchema.optional(),
37
+ bookingMode: productBookingModeSchema.optional(),
38
+ visibility: productVisibilitySchema.optional(),
39
+ activated: booleanQueryParam.optional(),
40
+ facilityId: z.string().optional(),
41
+ search: z.string().optional(),
42
+ limit: z.coerce.number().int().min(1).max(100).default(50),
43
+ offset: z.coerce.number().int().min(0).default(0),
44
+ });
45
+ const productOptionCoreSchema = z.object({
46
+ name: z.string().min(1).max(255),
47
+ code: z.string().max(100).optional().nullable(),
48
+ description: z.string().optional().nullable(),
49
+ status: productOptionStatusSchema.default("draft"),
50
+ isDefault: z.boolean().default(false),
51
+ sortOrder: z.number().int().default(0),
52
+ availableFrom: z.string().optional().nullable(),
53
+ availableTo: z.string().optional().nullable(),
54
+ });
55
+ export const insertProductOptionSchema = productOptionCoreSchema;
56
+ export const updateProductOptionSchema = productOptionCoreSchema.partial();
57
+ export const productOptionListQuerySchema = z.object({
58
+ productId: z.string().optional(),
59
+ status: productOptionStatusSchema.optional(),
60
+ limit: z.coerce.number().int().min(1).max(100).default(50),
61
+ offset: z.coerce.number().int().min(0).default(0),
62
+ });
63
+ const optionUnitCoreSchema = z.object({
64
+ name: z.string().min(1).max(255),
65
+ code: z.string().max(100).optional().nullable(),
66
+ description: z.string().optional().nullable(),
67
+ unitType: optionUnitTypeSchema.default("person"),
68
+ minQuantity: z.number().int().min(0).optional().nullable(),
69
+ maxQuantity: z.number().int().min(0).optional().nullable(),
70
+ minAge: z.number().int().min(0).optional().nullable(),
71
+ maxAge: z.number().int().min(0).optional().nullable(),
72
+ occupancyMin: z.number().int().min(0).optional().nullable(),
73
+ occupancyMax: z.number().int().min(0).optional().nullable(),
74
+ isRequired: z.boolean().default(false),
75
+ isHidden: z.boolean().default(false),
76
+ sortOrder: z.number().int().default(0),
77
+ });
78
+ export const insertOptionUnitSchema = optionUnitCoreSchema;
79
+ export const updateOptionUnitSchema = optionUnitCoreSchema.partial();
80
+ export const optionUnitListQuerySchema = z.object({
81
+ optionId: z.string().optional(),
82
+ unitType: optionUnitTypeSchema.optional(),
83
+ limit: z.coerce.number().int().min(1).max(100).default(50),
84
+ offset: z.coerce.number().int().min(0).default(0),
85
+ });
86
+ export const insertVersionSchema = z.object({
87
+ notes: z.string().max(10000).optional().nullable(),
88
+ });
89
+ export const insertProductNoteSchema = z.object({
90
+ content: z.string().min(1).max(10000),
91
+ });
@@ -0,0 +1,103 @@
1
+ import { booleanQueryParam } from "@voyantjs/db/helpers";
2
+ import { typeIdSchema } from "@voyantjs/db/lib/typeid";
3
+ import { z } from "zod";
4
+ export { booleanQueryParam, typeIdSchema, z };
5
+ export declare const productStatusSchema: z.ZodEnum<{
6
+ draft: "draft";
7
+ active: "active";
8
+ archived: "archived";
9
+ }>;
10
+ export declare const productOptionStatusSchema: z.ZodEnum<{
11
+ draft: "draft";
12
+ active: "active";
13
+ archived: "archived";
14
+ }>;
15
+ export declare const optionUnitTypeSchema: z.ZodEnum<{
16
+ person: "person";
17
+ group: "group";
18
+ room: "room";
19
+ vehicle: "vehicle";
20
+ service: "service";
21
+ other: "other";
22
+ }>;
23
+ export declare const productBookingModeSchema: z.ZodEnum<{
24
+ date: "date";
25
+ other: "other";
26
+ date_time: "date_time";
27
+ open: "open";
28
+ stay: "stay";
29
+ transfer: "transfer";
30
+ itinerary: "itinerary";
31
+ }>;
32
+ export declare const productCapacityModeSchema: z.ZodEnum<{
33
+ free_sale: "free_sale";
34
+ limited: "limited";
35
+ on_request: "on_request";
36
+ }>;
37
+ export declare const productVisibilitySchema: z.ZodEnum<{
38
+ public: "public";
39
+ private: "private";
40
+ hidden: "hidden";
41
+ }>;
42
+ export declare const productActivationModeSchema: z.ZodEnum<{
43
+ manual: "manual";
44
+ scheduled: "scheduled";
45
+ channel_controlled: "channel_controlled";
46
+ }>;
47
+ export declare const productTicketFulfillmentSchema: z.ZodEnum<{
48
+ none: "none";
49
+ per_booking: "per_booking";
50
+ per_participant: "per_participant";
51
+ per_item: "per_item";
52
+ }>;
53
+ export declare const productDeliveryFormatSchema: z.ZodEnum<{
54
+ none: "none";
55
+ voucher: "voucher";
56
+ ticket: "ticket";
57
+ pdf: "pdf";
58
+ qr_code: "qr_code";
59
+ barcode: "barcode";
60
+ email: "email";
61
+ mobile: "mobile";
62
+ }>;
63
+ export declare const productCapabilitySchema: z.ZodEnum<{
64
+ on_request: "on_request";
65
+ private: "private";
66
+ instant_confirmation: "instant_confirmation";
67
+ pickup_available: "pickup_available";
68
+ dropoff_available: "dropoff_available";
69
+ guided: "guided";
70
+ shared: "shared";
71
+ digital_ticket: "digital_ticket";
72
+ voucher_required: "voucher_required";
73
+ external_inventory: "external_inventory";
74
+ multi_day: "multi_day";
75
+ accommodation: "accommodation";
76
+ transport: "transport";
77
+ }>;
78
+ export declare const productFeatureTypeSchema: z.ZodEnum<{
79
+ other: "other";
80
+ inclusion: "inclusion";
81
+ exclusion: "exclusion";
82
+ highlight: "highlight";
83
+ important_information: "important_information";
84
+ }>;
85
+ export declare const productLocationTypeSchema: z.ZodEnum<{
86
+ other: "other";
87
+ start: "start";
88
+ end: "end";
89
+ meeting_point: "meeting_point";
90
+ pickup: "pickup";
91
+ dropoff: "dropoff";
92
+ point_of_interest: "point_of_interest";
93
+ }>;
94
+ export declare const languageTagSchema: z.ZodString;
95
+ export declare const serviceTypeSchema: z.ZodEnum<{
96
+ other: "other";
97
+ transfer: "transfer";
98
+ accommodation: "accommodation";
99
+ experience: "experience";
100
+ guide: "guide";
101
+ meal: "meal";
102
+ }>;
103
+ //# sourceMappingURL=validation-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-shared.d.ts","sourceRoot":"","sources":["../src/validation-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;AAE7C,eAAO,MAAM,mBAAmB;;;;EAA0C,CAAA;AAC1E,eAAO,MAAM,yBAAyB;;;;EAA0C,CAAA;AAChF,eAAO,MAAM,oBAAoB;;;;;;;EAO/B,CAAA;AACF,eAAO,MAAM,wBAAwB;;;;;;;;EAQnC,CAAA;AACF,eAAO,MAAM,yBAAyB;;;;EAAiD,CAAA;AACvF,eAAO,MAAM,uBAAuB;;;;EAA0C,CAAA;AAC9E,eAAO,MAAM,2BAA2B;;;;EAAwD,CAAA;AAChG,eAAO,MAAM,8BAA8B;;;;;EAKzC,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;EAStC,CAAA;AACF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;EAclC,CAAA;AACF,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAA;AACF,eAAO,MAAM,yBAAyB;;;;;;;;EAQpC,CAAA;AACF,eAAO,MAAM,iBAAiB,aAIiB,CAAA;AAC/C,eAAO,MAAM,iBAAiB;;;;;;;EAO5B,CAAA"}
@@ -0,0 +1,86 @@
1
+ import { booleanQueryParam } from "@voyantjs/db/helpers";
2
+ import { typeIdSchema } from "@voyantjs/db/lib/typeid";
3
+ import { z } from "zod";
4
+ export { booleanQueryParam, typeIdSchema, z };
5
+ export const productStatusSchema = z.enum(["draft", "active", "archived"]);
6
+ export const productOptionStatusSchema = z.enum(["draft", "active", "archived"]);
7
+ export const optionUnitTypeSchema = z.enum([
8
+ "person",
9
+ "group",
10
+ "room",
11
+ "vehicle",
12
+ "service",
13
+ "other",
14
+ ]);
15
+ export const productBookingModeSchema = z.enum([
16
+ "date",
17
+ "date_time",
18
+ "open",
19
+ "stay",
20
+ "transfer",
21
+ "itinerary",
22
+ "other",
23
+ ]);
24
+ export const productCapacityModeSchema = z.enum(["free_sale", "limited", "on_request"]);
25
+ export const productVisibilitySchema = z.enum(["public", "private", "hidden"]);
26
+ export const productActivationModeSchema = z.enum(["manual", "scheduled", "channel_controlled"]);
27
+ export const productTicketFulfillmentSchema = z.enum([
28
+ "none",
29
+ "per_booking",
30
+ "per_participant",
31
+ "per_item",
32
+ ]);
33
+ export const productDeliveryFormatSchema = z.enum([
34
+ "voucher",
35
+ "ticket",
36
+ "pdf",
37
+ "qr_code",
38
+ "barcode",
39
+ "email",
40
+ "mobile",
41
+ "none",
42
+ ]);
43
+ export const productCapabilitySchema = z.enum([
44
+ "instant_confirmation",
45
+ "on_request",
46
+ "pickup_available",
47
+ "dropoff_available",
48
+ "guided",
49
+ "private",
50
+ "shared",
51
+ "digital_ticket",
52
+ "voucher_required",
53
+ "external_inventory",
54
+ "multi_day",
55
+ "accommodation",
56
+ "transport",
57
+ ]);
58
+ export const productFeatureTypeSchema = z.enum([
59
+ "inclusion",
60
+ "exclusion",
61
+ "highlight",
62
+ "important_information",
63
+ "other",
64
+ ]);
65
+ export const productLocationTypeSchema = z.enum([
66
+ "start",
67
+ "end",
68
+ "meeting_point",
69
+ "pickup",
70
+ "dropoff",
71
+ "point_of_interest",
72
+ "other",
73
+ ]);
74
+ export const languageTagSchema = z
75
+ .string()
76
+ .min(2)
77
+ .max(35)
78
+ .regex(/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/);
79
+ export const serviceTypeSchema = z.enum([
80
+ "accommodation",
81
+ "transfer",
82
+ "experience",
83
+ "guide",
84
+ "meal",
85
+ "other",
86
+ ]);