@voyantjs/extras 0.1.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,319 @@
1
+ import { z } from "zod";
2
+ export declare const extraSelectionTypeSchema: z.ZodEnum<{
3
+ optional: "optional";
4
+ required: "required";
5
+ default_selected: "default_selected";
6
+ unavailable: "unavailable";
7
+ }>;
8
+ export declare const extraPricingModeSchema: z.ZodEnum<{
9
+ included: "included";
10
+ per_person: "per_person";
11
+ per_booking: "per_booking";
12
+ quantity_based: "quantity_based";
13
+ on_request: "on_request";
14
+ free: "free";
15
+ }>;
16
+ export declare const bookingExtraStatusSchema: z.ZodEnum<{
17
+ draft: "draft";
18
+ selected: "selected";
19
+ confirmed: "confirmed";
20
+ cancelled: "cancelled";
21
+ fulfilled: "fulfilled";
22
+ }>;
23
+ export declare const productExtraCoreSchema: z.ZodObject<{
24
+ productId: z.ZodString;
25
+ code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
26
+ name: z.ZodString;
27
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ selectionType: z.ZodDefault<z.ZodEnum<{
29
+ optional: "optional";
30
+ required: "required";
31
+ default_selected: "default_selected";
32
+ unavailable: "unavailable";
33
+ }>>;
34
+ pricingMode: z.ZodDefault<z.ZodEnum<{
35
+ included: "included";
36
+ per_person: "per_person";
37
+ per_booking: "per_booking";
38
+ quantity_based: "quantity_based";
39
+ on_request: "on_request";
40
+ free: "free";
41
+ }>>;
42
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
43
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
44
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
45
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
46
+ active: z.ZodDefault<z.ZodBoolean>;
47
+ sortOrder: z.ZodDefault<z.ZodNumber>;
48
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
49
+ }, z.core.$strip>;
50
+ export declare const insertProductExtraSchema: z.ZodObject<{
51
+ productId: z.ZodString;
52
+ code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
+ name: z.ZodString;
54
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
55
+ selectionType: z.ZodDefault<z.ZodEnum<{
56
+ optional: "optional";
57
+ required: "required";
58
+ default_selected: "default_selected";
59
+ unavailable: "unavailable";
60
+ }>>;
61
+ pricingMode: z.ZodDefault<z.ZodEnum<{
62
+ included: "included";
63
+ per_person: "per_person";
64
+ per_booking: "per_booking";
65
+ quantity_based: "quantity_based";
66
+ on_request: "on_request";
67
+ free: "free";
68
+ }>>;
69
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
70
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
71
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
72
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
73
+ active: z.ZodDefault<z.ZodBoolean>;
74
+ sortOrder: z.ZodDefault<z.ZodNumber>;
75
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
76
+ }, z.core.$strip>;
77
+ export declare const updateProductExtraSchema: z.ZodObject<{
78
+ productId: z.ZodOptional<z.ZodString>;
79
+ code: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
80
+ name: z.ZodOptional<z.ZodString>;
81
+ description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
82
+ selectionType: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
83
+ optional: "optional";
84
+ required: "required";
85
+ default_selected: "default_selected";
86
+ unavailable: "unavailable";
87
+ }>>>;
88
+ pricingMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
89
+ included: "included";
90
+ per_person: "per_person";
91
+ per_booking: "per_booking";
92
+ quantity_based: "quantity_based";
93
+ on_request: "on_request";
94
+ free: "free";
95
+ }>>>;
96
+ pricedPerPerson: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
97
+ minQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
98
+ maxQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
99
+ defaultQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
100
+ active: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
101
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
102
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
103
+ }, z.core.$strip>;
104
+ export declare const productExtraListQuerySchema: z.ZodObject<{
105
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
106
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
107
+ productId: z.ZodOptional<z.ZodString>;
108
+ active: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
109
+ 0: "0";
110
+ 1: "1";
111
+ true: "true";
112
+ false: "false";
113
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>;
114
+ search: z.ZodOptional<z.ZodString>;
115
+ }, z.core.$strip>;
116
+ export declare const optionExtraConfigCoreSchema: z.ZodObject<{
117
+ optionId: z.ZodString;
118
+ productExtraId: z.ZodString;
119
+ selectionType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
120
+ optional: "optional";
121
+ required: "required";
122
+ default_selected: "default_selected";
123
+ unavailable: "unavailable";
124
+ }>>>;
125
+ pricingMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
126
+ included: "included";
127
+ per_person: "per_person";
128
+ per_booking: "per_booking";
129
+ quantity_based: "quantity_based";
130
+ on_request: "on_request";
131
+ free: "free";
132
+ }>>>;
133
+ pricedPerPerson: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
134
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
135
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
136
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
137
+ isDefault: z.ZodDefault<z.ZodBoolean>;
138
+ active: z.ZodDefault<z.ZodBoolean>;
139
+ sortOrder: z.ZodDefault<z.ZodNumber>;
140
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
141
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
142
+ }, z.core.$strip>;
143
+ export declare const insertOptionExtraConfigSchema: z.ZodObject<{
144
+ optionId: z.ZodString;
145
+ productExtraId: z.ZodString;
146
+ selectionType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
147
+ optional: "optional";
148
+ required: "required";
149
+ default_selected: "default_selected";
150
+ unavailable: "unavailable";
151
+ }>>>;
152
+ pricingMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
153
+ included: "included";
154
+ per_person: "per_person";
155
+ per_booking: "per_booking";
156
+ quantity_based: "quantity_based";
157
+ on_request: "on_request";
158
+ free: "free";
159
+ }>>>;
160
+ pricedPerPerson: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
161
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
162
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
163
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
164
+ isDefault: z.ZodDefault<z.ZodBoolean>;
165
+ active: z.ZodDefault<z.ZodBoolean>;
166
+ sortOrder: z.ZodDefault<z.ZodNumber>;
167
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
168
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
169
+ }, z.core.$strip>;
170
+ export declare const updateOptionExtraConfigSchema: z.ZodObject<{
171
+ optionId: z.ZodOptional<z.ZodString>;
172
+ productExtraId: z.ZodOptional<z.ZodString>;
173
+ selectionType: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
174
+ optional: "optional";
175
+ required: "required";
176
+ default_selected: "default_selected";
177
+ unavailable: "unavailable";
178
+ }>>>>;
179
+ pricingMode: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
180
+ included: "included";
181
+ per_person: "per_person";
182
+ per_booking: "per_booking";
183
+ quantity_based: "quantity_based";
184
+ on_request: "on_request";
185
+ free: "free";
186
+ }>>>>;
187
+ pricedPerPerson: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>>;
188
+ minQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
189
+ maxQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
190
+ defaultQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
191
+ isDefault: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
192
+ active: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
193
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
194
+ notes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
195
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
196
+ }, z.core.$strip>;
197
+ export declare const optionExtraConfigListQuerySchema: z.ZodObject<{
198
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
199
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
200
+ optionId: z.ZodOptional<z.ZodString>;
201
+ productExtraId: z.ZodOptional<z.ZodString>;
202
+ active: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
203
+ 0: "0";
204
+ 1: "1";
205
+ true: "true";
206
+ false: "false";
207
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>;
208
+ }, z.core.$strip>;
209
+ export declare const bookingExtraCoreSchema: z.ZodObject<{
210
+ bookingId: z.ZodString;
211
+ productExtraId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
212
+ optionExtraConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
213
+ name: z.ZodString;
214
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
215
+ status: z.ZodDefault<z.ZodEnum<{
216
+ draft: "draft";
217
+ selected: "selected";
218
+ confirmed: "confirmed";
219
+ cancelled: "cancelled";
220
+ fulfilled: "fulfilled";
221
+ }>>;
222
+ pricingMode: z.ZodDefault<z.ZodEnum<{
223
+ included: "included";
224
+ per_person: "per_person";
225
+ per_booking: "per_booking";
226
+ quantity_based: "quantity_based";
227
+ on_request: "on_request";
228
+ free: "free";
229
+ }>>;
230
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
231
+ quantity: z.ZodDefault<z.ZodNumber>;
232
+ sellCurrency: z.ZodString;
233
+ unitSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
234
+ totalSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
235
+ costCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
236
+ unitCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
237
+ totalCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
238
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
239
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
240
+ }, z.core.$strip>;
241
+ export declare const insertBookingExtraSchema: z.ZodObject<{
242
+ bookingId: z.ZodString;
243
+ productExtraId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
244
+ optionExtraConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
245
+ name: z.ZodString;
246
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
247
+ status: z.ZodDefault<z.ZodEnum<{
248
+ draft: "draft";
249
+ selected: "selected";
250
+ confirmed: "confirmed";
251
+ cancelled: "cancelled";
252
+ fulfilled: "fulfilled";
253
+ }>>;
254
+ pricingMode: z.ZodDefault<z.ZodEnum<{
255
+ included: "included";
256
+ per_person: "per_person";
257
+ per_booking: "per_booking";
258
+ quantity_based: "quantity_based";
259
+ on_request: "on_request";
260
+ free: "free";
261
+ }>>;
262
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
263
+ quantity: z.ZodDefault<z.ZodNumber>;
264
+ sellCurrency: z.ZodString;
265
+ unitSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
266
+ totalSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
267
+ costCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
268
+ unitCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
269
+ totalCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
270
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
271
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
272
+ }, z.core.$strip>;
273
+ export declare const updateBookingExtraSchema: z.ZodObject<{
274
+ bookingId: z.ZodOptional<z.ZodString>;
275
+ productExtraId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
276
+ optionExtraConfigId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
277
+ name: z.ZodOptional<z.ZodString>;
278
+ description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
279
+ status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
280
+ draft: "draft";
281
+ selected: "selected";
282
+ confirmed: "confirmed";
283
+ cancelled: "cancelled";
284
+ fulfilled: "fulfilled";
285
+ }>>>;
286
+ pricingMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
287
+ included: "included";
288
+ per_person: "per_person";
289
+ per_booking: "per_booking";
290
+ quantity_based: "quantity_based";
291
+ on_request: "on_request";
292
+ free: "free";
293
+ }>>>;
294
+ pricedPerPerson: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
295
+ quantity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
296
+ sellCurrency: z.ZodOptional<z.ZodString>;
297
+ unitSellAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
298
+ totalSellAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
299
+ costCurrency: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
300
+ unitCostAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
301
+ totalCostAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
302
+ notes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
303
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
304
+ }, z.core.$strip>;
305
+ export declare const bookingExtraListQuerySchema: z.ZodObject<{
306
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
307
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
308
+ bookingId: z.ZodOptional<z.ZodString>;
309
+ productExtraId: z.ZodOptional<z.ZodString>;
310
+ optionExtraConfigId: z.ZodOptional<z.ZodString>;
311
+ status: z.ZodOptional<z.ZodEnum<{
312
+ draft: "draft";
313
+ selected: "selected";
314
+ confirmed: "confirmed";
315
+ cancelled: "cancelled";
316
+ fulfilled: "fulfilled";
317
+ }>>;
318
+ }, z.core.$strip>;
319
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,wBAAwB;;;;;EAKnC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;EAOjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyB,CAAA;AAC9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmC,CAAA;AACxE,eAAO,MAAM,2BAA2B;;;;;;;;;;;iBAItC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;iBActC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAA;AACxE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwC,CAAA;AAClF,eAAO,MAAM,gCAAgC;;;;;;;;;;;iBAI3C,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyB,CAAA;AAC9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmC,CAAA;AACxE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;iBAKtC,CAAA"}
@@ -0,0 +1,99 @@
1
+ import { booleanQueryParam } from "@voyantjs/db/helpers";
2
+ import { z } from "zod";
3
+ const paginationSchema = z.object({
4
+ limit: z.coerce.number().int().min(1).max(200).default(50),
5
+ offset: z.coerce.number().int().min(0).default(0),
6
+ });
7
+ const moneySchema = z.number().int().min(0).nullable().optional();
8
+ export const extraSelectionTypeSchema = z.enum([
9
+ "optional",
10
+ "required",
11
+ "default_selected",
12
+ "unavailable",
13
+ ]);
14
+ export const extraPricingModeSchema = z.enum([
15
+ "included",
16
+ "per_person",
17
+ "per_booking",
18
+ "quantity_based",
19
+ "on_request",
20
+ "free",
21
+ ]);
22
+ export const bookingExtraStatusSchema = z.enum([
23
+ "draft",
24
+ "selected",
25
+ "confirmed",
26
+ "cancelled",
27
+ "fulfilled",
28
+ ]);
29
+ export const productExtraCoreSchema = z.object({
30
+ productId: z.string(),
31
+ code: z.string().max(100).nullable().optional(),
32
+ name: z.string().min(1).max(255),
33
+ description: z.string().nullable().optional(),
34
+ selectionType: extraSelectionTypeSchema.default("optional"),
35
+ pricingMode: extraPricingModeSchema.default("per_booking"),
36
+ pricedPerPerson: z.boolean().default(false),
37
+ minQuantity: z.number().int().min(0).nullable().optional(),
38
+ maxQuantity: z.number().int().min(0).nullable().optional(),
39
+ defaultQuantity: z.number().int().min(0).nullable().optional(),
40
+ active: z.boolean().default(true),
41
+ sortOrder: z.number().int().default(0),
42
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
43
+ });
44
+ export const insertProductExtraSchema = productExtraCoreSchema;
45
+ export const updateProductExtraSchema = productExtraCoreSchema.partial();
46
+ export const productExtraListQuerySchema = paginationSchema.extend({
47
+ productId: z.string().optional(),
48
+ active: booleanQueryParam.optional(),
49
+ search: z.string().optional(),
50
+ });
51
+ export const optionExtraConfigCoreSchema = z.object({
52
+ optionId: z.string(),
53
+ productExtraId: z.string(),
54
+ selectionType: extraSelectionTypeSchema.nullable().optional(),
55
+ pricingMode: extraPricingModeSchema.nullable().optional(),
56
+ pricedPerPerson: z.boolean().nullable().optional(),
57
+ minQuantity: z.number().int().min(0).nullable().optional(),
58
+ maxQuantity: z.number().int().min(0).nullable().optional(),
59
+ defaultQuantity: z.number().int().min(0).nullable().optional(),
60
+ isDefault: z.boolean().default(false),
61
+ active: z.boolean().default(true),
62
+ sortOrder: z.number().int().default(0),
63
+ notes: z.string().nullable().optional(),
64
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
65
+ });
66
+ export const insertOptionExtraConfigSchema = optionExtraConfigCoreSchema;
67
+ export const updateOptionExtraConfigSchema = optionExtraConfigCoreSchema.partial();
68
+ export const optionExtraConfigListQuerySchema = paginationSchema.extend({
69
+ optionId: z.string().optional(),
70
+ productExtraId: z.string().optional(),
71
+ active: booleanQueryParam.optional(),
72
+ });
73
+ export const bookingExtraCoreSchema = z.object({
74
+ bookingId: z.string(),
75
+ productExtraId: z.string().nullable().optional(),
76
+ optionExtraConfigId: z.string().nullable().optional(),
77
+ name: z.string().min(1).max(255),
78
+ description: z.string().nullable().optional(),
79
+ status: bookingExtraStatusSchema.default("draft"),
80
+ pricingMode: extraPricingModeSchema.default("per_booking"),
81
+ pricedPerPerson: z.boolean().default(false),
82
+ quantity: z.number().int().min(1).default(1),
83
+ sellCurrency: z.string().length(3),
84
+ unitSellAmountCents: moneySchema,
85
+ totalSellAmountCents: moneySchema,
86
+ costCurrency: z.string().length(3).nullable().optional(),
87
+ unitCostAmountCents: moneySchema,
88
+ totalCostAmountCents: moneySchema,
89
+ notes: z.string().nullable().optional(),
90
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
91
+ });
92
+ export const insertBookingExtraSchema = bookingExtraCoreSchema;
93
+ export const updateBookingExtraSchema = bookingExtraCoreSchema.partial();
94
+ export const bookingExtraListQuerySchema = paginationSchema.extend({
95
+ bookingId: z.string().optional(),
96
+ productExtraId: z.string().optional(),
97
+ optionExtraConfigId: z.string().optional(),
98
+ status: bookingExtraStatusSchema.optional(),
99
+ });
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@voyantjs/extras",
3
+ "version": "0.1.0",
4
+ "license": "FSL-1.1-Apache-2.0",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ },
11
+ "./schema": {
12
+ "types": "./dist/schema.d.ts",
13
+ "import": "./dist/schema.js"
14
+ },
15
+ "./validation": {
16
+ "types": "./dist/validation.d.ts",
17
+ "import": "./dist/validation.js"
18
+ },
19
+ "./routes": {
20
+ "types": "./dist/routes.d.ts",
21
+ "import": "./dist/routes.js"
22
+ }
23
+ },
24
+ "dependencies": {
25
+ "drizzle-orm": "^0.45.2",
26
+ "hono": "^4.12.10",
27
+ "zod": "^4.3.6",
28
+ "@voyantjs/core": "0.1.0",
29
+ "@voyantjs/db": "0.1.0",
30
+ "@voyantjs/hono": "0.1.0"
31
+ },
32
+ "devDependencies": {
33
+ "typescript": "^6.0.2",
34
+ "@voyantjs/voyant-typescript-config": "0.1.0"
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "scripts": {
43
+ "typecheck": "tsc --noEmit",
44
+ "lint": "biome check src/",
45
+ "test": "vitest run",
46
+ "build": "tsc -p tsconfig.json",
47
+ "clean": "rm -rf dist"
48
+ },
49
+ "main": "./dist/index.js",
50
+ "types": "./dist/index.d.ts"
51
+ }