@voyantjs/pricing 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 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,344 @@
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 currencyCodeSchema = z
8
+ .string()
9
+ .length(3)
10
+ .regex(/^[A-Z]{3}$/);
11
+ const nullableDateSchema = z.string().date().nullable().optional();
12
+ const moneySchema = z.number().int().min(0).nullable().optional();
13
+ export const pricingCategoryTypeSchema = z.enum([
14
+ "adult",
15
+ "child",
16
+ "infant",
17
+ "senior",
18
+ "group",
19
+ "room",
20
+ "vehicle",
21
+ "service",
22
+ "other",
23
+ ]);
24
+ export const pricingDependencyTypeSchema = z.enum([
25
+ "requires",
26
+ "limits_per_master",
27
+ "limits_sum",
28
+ "excludes",
29
+ ]);
30
+ export const cancellationPolicyTypeSchema = z.enum([
31
+ "simple",
32
+ "advanced",
33
+ "non_refundable",
34
+ "custom",
35
+ ]);
36
+ export const cancellationChargeTypeSchema = z.enum(["none", "amount", "percentage"]);
37
+ export const priceCatalogTypeSchema = z.enum([
38
+ "public",
39
+ "contract",
40
+ "net",
41
+ "gross",
42
+ "promo",
43
+ "internal",
44
+ "other",
45
+ ]);
46
+ export const optionPricingModeSchema = z.enum([
47
+ "per_person",
48
+ "per_booking",
49
+ "starting_from",
50
+ "free",
51
+ "on_request",
52
+ ]);
53
+ export const optionUnitPricingModeSchema = z.enum([
54
+ "per_unit",
55
+ "per_person",
56
+ "per_booking",
57
+ "included",
58
+ "free",
59
+ "on_request",
60
+ ]);
61
+ export const optionStartTimeRuleModeSchema = z.enum([
62
+ "included",
63
+ "excluded",
64
+ "override",
65
+ "adjustment",
66
+ ]);
67
+ export const priceAdjustmentTypeSchema = z.enum(["fixed", "percentage"]);
68
+ export const addonPricingModeSchema = z.enum([
69
+ "included",
70
+ "per_person",
71
+ "per_booking",
72
+ "on_request",
73
+ "unavailable",
74
+ ]);
75
+ export const pricingCategoryCoreSchema = z.object({
76
+ productId: z.string().nullable().optional(),
77
+ optionId: z.string().nullable().optional(),
78
+ unitId: z.string().nullable().optional(),
79
+ code: z.string().max(100).nullable().optional(),
80
+ name: z.string().min(1).max(255),
81
+ categoryType: pricingCategoryTypeSchema.default("other"),
82
+ seatOccupancy: z.number().int().min(0).default(1),
83
+ groupSize: z.number().int().min(1).nullable().optional(),
84
+ isAgeQualified: z.boolean().default(false),
85
+ minAge: z.number().int().min(0).nullable().optional(),
86
+ maxAge: z.number().int().min(0).nullable().optional(),
87
+ internalUseOnly: z.boolean().default(false),
88
+ active: z.boolean().default(true),
89
+ sortOrder: z.number().int().default(0),
90
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
91
+ });
92
+ export const insertPricingCategorySchema = pricingCategoryCoreSchema;
93
+ export const updatePricingCategorySchema = pricingCategoryCoreSchema.partial();
94
+ export const pricingCategoryListQuerySchema = paginationSchema.extend({
95
+ productId: z.string().optional(),
96
+ optionId: z.string().optional(),
97
+ unitId: z.string().optional(),
98
+ categoryType: pricingCategoryTypeSchema.optional(),
99
+ active: booleanQueryParam.optional(),
100
+ });
101
+ export const pricingCategoryDependencyCoreSchema = z.object({
102
+ pricingCategoryId: z.string(),
103
+ masterPricingCategoryId: z.string(),
104
+ dependencyType: pricingDependencyTypeSchema.default("requires"),
105
+ maxPerMaster: z.number().int().min(0).nullable().optional(),
106
+ maxDependentSum: z.number().int().min(0).nullable().optional(),
107
+ active: z.boolean().default(true),
108
+ notes: z.string().nullable().optional(),
109
+ });
110
+ export const insertPricingCategoryDependencySchema = pricingCategoryDependencyCoreSchema;
111
+ export const updatePricingCategoryDependencySchema = pricingCategoryDependencyCoreSchema.partial();
112
+ export const pricingCategoryDependencyListQuerySchema = paginationSchema.extend({
113
+ pricingCategoryId: z.string().optional(),
114
+ masterPricingCategoryId: z.string().optional(),
115
+ dependencyType: pricingDependencyTypeSchema.optional(),
116
+ active: booleanQueryParam.optional(),
117
+ });
118
+ export const cancellationPolicyCoreSchema = z.object({
119
+ code: z.string().max(100).nullable().optional(),
120
+ name: z.string().min(1).max(255),
121
+ policyType: cancellationPolicyTypeSchema.default("custom"),
122
+ simpleCutoffHours: z.number().int().min(0).nullable().optional(),
123
+ isDefault: z.boolean().default(false),
124
+ active: z.boolean().default(true),
125
+ notes: z.string().nullable().optional(),
126
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
127
+ });
128
+ export const insertCancellationPolicySchema = cancellationPolicyCoreSchema;
129
+ export const updateCancellationPolicySchema = cancellationPolicyCoreSchema.partial();
130
+ export const cancellationPolicyListQuerySchema = paginationSchema.extend({
131
+ policyType: cancellationPolicyTypeSchema.optional(),
132
+ active: booleanQueryParam.optional(),
133
+ isDefault: booleanQueryParam.optional(),
134
+ search: z.string().optional(),
135
+ });
136
+ export const cancellationPolicyRuleCoreSchema = z.object({
137
+ cancellationPolicyId: z.string(),
138
+ sortOrder: z.number().int().default(0),
139
+ cutoffMinutesBefore: z.number().int().min(0).nullable().optional(),
140
+ chargeType: cancellationChargeTypeSchema.default("none"),
141
+ chargeAmountCents: moneySchema,
142
+ chargePercentBasisPoints: z.number().int().min(0).max(10000).nullable().optional(),
143
+ active: z.boolean().default(true),
144
+ notes: z.string().nullable().optional(),
145
+ });
146
+ export const insertCancellationPolicyRuleSchema = cancellationPolicyRuleCoreSchema;
147
+ export const updateCancellationPolicyRuleSchema = cancellationPolicyRuleCoreSchema.partial();
148
+ export const cancellationPolicyRuleListQuerySchema = paginationSchema.extend({
149
+ cancellationPolicyId: z.string().optional(),
150
+ active: booleanQueryParam.optional(),
151
+ });
152
+ export const priceCatalogCoreSchema = z.object({
153
+ code: z.string().min(1).max(100),
154
+ name: z.string().min(1).max(255),
155
+ currencyCode: currencyCodeSchema.nullable().optional(),
156
+ catalogType: priceCatalogTypeSchema.default("public"),
157
+ isDefault: z.boolean().default(false),
158
+ active: z.boolean().default(true),
159
+ notes: z.string().nullable().optional(),
160
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
161
+ });
162
+ export const insertPriceCatalogSchema = priceCatalogCoreSchema;
163
+ export const updatePriceCatalogSchema = priceCatalogCoreSchema.partial();
164
+ export const priceCatalogListQuerySchema = paginationSchema.extend({
165
+ currencyCode: currencyCodeSchema.optional(),
166
+ catalogType: priceCatalogTypeSchema.optional(),
167
+ active: booleanQueryParam.optional(),
168
+ search: z.string().optional(),
169
+ });
170
+ export const priceScheduleCoreSchema = z.object({
171
+ priceCatalogId: z.string(),
172
+ code: z.string().max(100).nullable().optional(),
173
+ name: z.string().min(1).max(255),
174
+ recurrenceRule: z.string().min(1),
175
+ timezone: z.string().max(100).nullable().optional(),
176
+ validFrom: nullableDateSchema,
177
+ validTo: nullableDateSchema,
178
+ weekdays: z
179
+ .array(z.enum(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]))
180
+ .nullable()
181
+ .optional(),
182
+ priority: z.number().int().default(0),
183
+ active: z.boolean().default(true),
184
+ notes: z.string().nullable().optional(),
185
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
186
+ });
187
+ export const insertPriceScheduleSchema = priceScheduleCoreSchema;
188
+ export const updatePriceScheduleSchema = priceScheduleCoreSchema.partial();
189
+ export const priceScheduleListQuerySchema = paginationSchema.extend({
190
+ priceCatalogId: z.string().optional(),
191
+ active: booleanQueryParam.optional(),
192
+ });
193
+ export const optionPriceRuleCoreSchema = z.object({
194
+ productId: z.string(),
195
+ optionId: z.string(),
196
+ priceCatalogId: z.string(),
197
+ priceScheduleId: z.string().nullable().optional(),
198
+ cancellationPolicyId: z.string().nullable().optional(),
199
+ code: z.string().max(100).nullable().optional(),
200
+ name: z.string().min(1).max(255),
201
+ description: z.string().nullable().optional(),
202
+ pricingMode: optionPricingModeSchema.default("per_person"),
203
+ baseSellAmountCents: moneySchema,
204
+ baseCostAmountCents: moneySchema,
205
+ minPerBooking: z.number().int().min(0).nullable().optional(),
206
+ maxPerBooking: z.number().int().min(0).nullable().optional(),
207
+ allPricingCategories: z.boolean().default(true),
208
+ isDefault: z.boolean().default(false),
209
+ active: z.boolean().default(true),
210
+ notes: z.string().nullable().optional(),
211
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
212
+ });
213
+ export const insertOptionPriceRuleSchema = optionPriceRuleCoreSchema;
214
+ export const updateOptionPriceRuleSchema = optionPriceRuleCoreSchema.partial();
215
+ export const optionPriceRuleListQuerySchema = paginationSchema.extend({
216
+ productId: z.string().optional(),
217
+ optionId: z.string().optional(),
218
+ priceCatalogId: z.string().optional(),
219
+ priceScheduleId: z.string().optional(),
220
+ cancellationPolicyId: z.string().optional(),
221
+ pricingMode: optionPricingModeSchema.optional(),
222
+ active: booleanQueryParam.optional(),
223
+ });
224
+ export const optionUnitPriceRuleCoreSchema = z.object({
225
+ optionPriceRuleId: z.string(),
226
+ optionId: z.string(),
227
+ unitId: z.string(),
228
+ pricingCategoryId: z.string().nullable().optional(),
229
+ pricingMode: optionUnitPricingModeSchema.default("per_unit"),
230
+ sellAmountCents: moneySchema,
231
+ costAmountCents: moneySchema,
232
+ minQuantity: z.number().int().min(0).nullable().optional(),
233
+ maxQuantity: z.number().int().min(0).nullable().optional(),
234
+ active: z.boolean().default(true),
235
+ sortOrder: z.number().int().default(0),
236
+ notes: z.string().nullable().optional(),
237
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
238
+ });
239
+ export const insertOptionUnitPriceRuleSchema = optionUnitPriceRuleCoreSchema;
240
+ export const updateOptionUnitPriceRuleSchema = optionUnitPriceRuleCoreSchema.partial();
241
+ export const optionUnitPriceRuleListQuerySchema = paginationSchema.extend({
242
+ optionPriceRuleId: z.string().optional(),
243
+ optionId: z.string().optional(),
244
+ unitId: z.string().optional(),
245
+ pricingCategoryId: z.string().optional(),
246
+ active: booleanQueryParam.optional(),
247
+ });
248
+ export const optionStartTimeRuleCoreSchema = z.object({
249
+ optionPriceRuleId: z.string(),
250
+ optionId: z.string(),
251
+ startTimeId: z.string(),
252
+ ruleMode: optionStartTimeRuleModeSchema.default("included"),
253
+ adjustmentType: priceAdjustmentTypeSchema.nullable().optional(),
254
+ sellAdjustmentCents: moneySchema,
255
+ costAdjustmentCents: moneySchema,
256
+ adjustmentBasisPoints: z.number().int().min(0).max(10000).nullable().optional(),
257
+ active: z.boolean().default(true),
258
+ notes: z.string().nullable().optional(),
259
+ });
260
+ export const insertOptionStartTimeRuleSchema = optionStartTimeRuleCoreSchema;
261
+ export const updateOptionStartTimeRuleSchema = optionStartTimeRuleCoreSchema.partial();
262
+ export const optionStartTimeRuleListQuerySchema = paginationSchema.extend({
263
+ optionPriceRuleId: z.string().optional(),
264
+ optionId: z.string().optional(),
265
+ startTimeId: z.string().optional(),
266
+ active: booleanQueryParam.optional(),
267
+ });
268
+ export const optionUnitTierCoreSchema = z.object({
269
+ optionUnitPriceRuleId: z.string(),
270
+ minQuantity: z.number().int().min(1),
271
+ maxQuantity: z.number().int().min(1).nullable().optional(),
272
+ sellAmountCents: moneySchema,
273
+ costAmountCents: moneySchema,
274
+ active: z.boolean().default(true),
275
+ sortOrder: z.number().int().default(0),
276
+ });
277
+ export const insertOptionUnitTierSchema = optionUnitTierCoreSchema;
278
+ export const updateOptionUnitTierSchema = optionUnitTierCoreSchema.partial();
279
+ export const optionUnitTierListQuerySchema = paginationSchema.extend({
280
+ optionUnitPriceRuleId: z.string().optional(),
281
+ active: booleanQueryParam.optional(),
282
+ });
283
+ export const pickupPriceRuleCoreSchema = z.object({
284
+ optionPriceRuleId: z.string(),
285
+ optionId: z.string(),
286
+ pickupPointId: z.string(),
287
+ pricingMode: addonPricingModeSchema.default("included"),
288
+ sellAmountCents: moneySchema,
289
+ costAmountCents: moneySchema,
290
+ active: z.boolean().default(true),
291
+ sortOrder: z.number().int().default(0),
292
+ notes: z.string().nullable().optional(),
293
+ });
294
+ export const insertPickupPriceRuleSchema = pickupPriceRuleCoreSchema;
295
+ export const updatePickupPriceRuleSchema = pickupPriceRuleCoreSchema.partial();
296
+ export const pickupPriceRuleListQuerySchema = paginationSchema.extend({
297
+ optionPriceRuleId: z.string().optional(),
298
+ optionId: z.string().optional(),
299
+ pickupPointId: z.string().optional(),
300
+ active: booleanQueryParam.optional(),
301
+ });
302
+ export const dropoffPriceRuleCoreSchema = z.object({
303
+ optionPriceRuleId: z.string(),
304
+ optionId: z.string(),
305
+ facilityId: z.string().nullable().optional(),
306
+ dropoffCode: z.string().max(100).nullable().optional(),
307
+ dropoffName: z.string().min(1).max(255),
308
+ pricingMode: addonPricingModeSchema.default("included"),
309
+ sellAmountCents: moneySchema,
310
+ costAmountCents: moneySchema,
311
+ active: z.boolean().default(true),
312
+ sortOrder: z.number().int().default(0),
313
+ notes: z.string().nullable().optional(),
314
+ });
315
+ export const insertDropoffPriceRuleSchema = dropoffPriceRuleCoreSchema;
316
+ export const updateDropoffPriceRuleSchema = dropoffPriceRuleCoreSchema.partial();
317
+ export const dropoffPriceRuleListQuerySchema = paginationSchema.extend({
318
+ optionPriceRuleId: z.string().optional(),
319
+ optionId: z.string().optional(),
320
+ facilityId: z.string().optional(),
321
+ active: booleanQueryParam.optional(),
322
+ });
323
+ export const extraPriceRuleCoreSchema = z.object({
324
+ optionPriceRuleId: z.string(),
325
+ optionId: z.string(),
326
+ productExtraId: z.string().nullable().optional(),
327
+ optionExtraConfigId: z.string().nullable().optional(),
328
+ pricingMode: addonPricingModeSchema.default("included"),
329
+ sellAmountCents: moneySchema,
330
+ costAmountCents: moneySchema,
331
+ active: z.boolean().default(true),
332
+ sortOrder: z.number().int().default(0),
333
+ notes: z.string().nullable().optional(),
334
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
335
+ });
336
+ export const insertExtraPriceRuleSchema = extraPriceRuleCoreSchema;
337
+ export const updateExtraPriceRuleSchema = extraPriceRuleCoreSchema.partial();
338
+ export const extraPriceRuleListQuerySchema = paginationSchema.extend({
339
+ optionPriceRuleId: z.string().optional(),
340
+ optionId: z.string().optional(),
341
+ productExtraId: z.string().optional(),
342
+ optionExtraConfigId: z.string().optional(),
343
+ active: booleanQueryParam.optional(),
344
+ });
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@voyantjs/pricing",
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/products": "0.1.0",
35
+ "@voyantjs/availability": "0.1.0",
36
+ "@voyantjs/voyant-typescript-config": "0.1.0",
37
+ "@voyantjs/facilities": "0.1.0",
38
+ "@voyantjs/extras": "0.1.0"
39
+ },
40
+ "files": [
41
+ "dist"
42
+ ],
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "scripts": {
47
+ "typecheck": "tsc --noEmit",
48
+ "lint": "biome check src/",
49
+ "test": "vitest run",
50
+ "build": "tsc -p tsconfig.json",
51
+ "clean": "rm -rf dist"
52
+ },
53
+ "main": "./dist/index.js",
54
+ "types": "./dist/index.d.ts"
55
+ }