@voyantjs/legal 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.
Files changed (36) hide show
  1. package/LICENSE +109 -0
  2. package/README.md +60 -0
  3. package/dist/contracts/index.d.ts +13 -0
  4. package/dist/contracts/index.d.ts.map +1 -0
  5. package/dist/contracts/index.js +19 -0
  6. package/dist/contracts/routes.d.ts +1297 -0
  7. package/dist/contracts/routes.d.ts.map +1 -0
  8. package/dist/contracts/routes.js +224 -0
  9. package/dist/contracts/schema.d.ts +1531 -0
  10. package/dist/contracts/schema.d.ts.map +1 -0
  11. package/dist/contracts/schema.js +227 -0
  12. package/dist/contracts/service.d.ts +1753 -0
  13. package/dist/contracts/service.d.ts.map +1 -0
  14. package/dist/contracts/service.js +570 -0
  15. package/dist/contracts/validation.d.ts +274 -0
  16. package/dist/contracts/validation.d.ts.map +1 -0
  17. package/dist/contracts/validation.js +125 -0
  18. package/dist/index.d.ts +14 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +26 -0
  21. package/dist/policies/index.d.ts +16 -0
  22. package/dist/policies/index.d.ts.map +1 -0
  23. package/dist/policies/index.js +26 -0
  24. package/dist/policies/routes.d.ts +916 -0
  25. package/dist/policies/routes.d.ts.map +1 -0
  26. package/dist/policies/routes.js +162 -0
  27. package/dist/policies/schema.d.ts +1176 -0
  28. package/dist/policies/schema.d.ts.map +1 -0
  29. package/dist/policies/schema.js +189 -0
  30. package/dist/policies/service.d.ts +1384 -0
  31. package/dist/policies/service.d.ts.map +1 -0
  32. package/dist/policies/service.js +438 -0
  33. package/dist/policies/validation.d.ts +273 -0
  34. package/dist/policies/validation.d.ts.map +1 -0
  35. package/dist/policies/validation.js +140 -0
  36. package/package.json +83 -0
@@ -0,0 +1,273 @@
1
+ import { z } from "zod";
2
+ export declare const policyKindSchema: z.ZodEnum<{
3
+ other: "other";
4
+ cancellation: "cancellation";
5
+ payment: "payment";
6
+ terms_and_conditions: "terms_and_conditions";
7
+ privacy: "privacy";
8
+ refund: "refund";
9
+ commission: "commission";
10
+ guarantee: "guarantee";
11
+ }>;
12
+ export declare const policyVersionStatusSchema: z.ZodEnum<{
13
+ draft: "draft";
14
+ published: "published";
15
+ retired: "retired";
16
+ }>;
17
+ export declare const policyRuleTypeSchema: z.ZodEnum<{
18
+ custom: "custom";
19
+ window: "window";
20
+ percentage: "percentage";
21
+ flat_amount: "flat_amount";
22
+ date_range: "date_range";
23
+ }>;
24
+ export declare const policyRefundTypeSchema: z.ZodEnum<{
25
+ cash: "cash";
26
+ credit: "credit";
27
+ cash_or_credit: "cash_or_credit";
28
+ none: "none";
29
+ }>;
30
+ export declare const policyAssignmentScopeSchema: z.ZodEnum<{
31
+ supplier: "supplier";
32
+ organization: "organization";
33
+ channel: "channel";
34
+ product: "product";
35
+ market: "market";
36
+ global: "global";
37
+ }>;
38
+ export declare const policyBodyFormatSchema: z.ZodEnum<{
39
+ markdown: "markdown";
40
+ html: "html";
41
+ plain: "plain";
42
+ }>;
43
+ export declare const policyAcceptanceMethodSchema: z.ZodEnum<{
44
+ signature: "signature";
45
+ implicit: "implicit";
46
+ explicit_checkbox: "explicit_checkbox";
47
+ }>;
48
+ export declare const insertPolicySchema: z.ZodObject<{
49
+ kind: z.ZodEnum<{
50
+ other: "other";
51
+ cancellation: "cancellation";
52
+ payment: "payment";
53
+ terms_and_conditions: "terms_and_conditions";
54
+ privacy: "privacy";
55
+ refund: "refund";
56
+ commission: "commission";
57
+ guarantee: "guarantee";
58
+ }>;
59
+ name: z.ZodString;
60
+ slug: z.ZodString;
61
+ description: z.ZodNullable<z.ZodOptional<z.ZodString>>;
62
+ language: z.ZodDefault<z.ZodString>;
63
+ metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
64
+ }, z.core.$strip>;
65
+ export declare const updatePolicySchema: z.ZodObject<{
66
+ kind: z.ZodOptional<z.ZodEnum<{
67
+ other: "other";
68
+ cancellation: "cancellation";
69
+ payment: "payment";
70
+ terms_and_conditions: "terms_and_conditions";
71
+ privacy: "privacy";
72
+ refund: "refund";
73
+ commission: "commission";
74
+ guarantee: "guarantee";
75
+ }>>;
76
+ name: z.ZodOptional<z.ZodString>;
77
+ slug: z.ZodOptional<z.ZodString>;
78
+ description: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
79
+ language: z.ZodOptional<z.ZodDefault<z.ZodString>>;
80
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
81
+ }, z.core.$strip>;
82
+ export declare const policyListQuerySchema: z.ZodObject<{
83
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
84
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
85
+ kind: z.ZodOptional<z.ZodEnum<{
86
+ other: "other";
87
+ cancellation: "cancellation";
88
+ payment: "payment";
89
+ terms_and_conditions: "terms_and_conditions";
90
+ privacy: "privacy";
91
+ refund: "refund";
92
+ commission: "commission";
93
+ guarantee: "guarantee";
94
+ }>>;
95
+ language: z.ZodOptional<z.ZodString>;
96
+ search: z.ZodOptional<z.ZodString>;
97
+ }, z.core.$strip>;
98
+ export declare const insertPolicyVersionSchema: z.ZodObject<{
99
+ title: z.ZodString;
100
+ bodyFormat: z.ZodDefault<z.ZodEnum<{
101
+ markdown: "markdown";
102
+ html: "html";
103
+ plain: "plain";
104
+ }>>;
105
+ body: z.ZodNullable<z.ZodOptional<z.ZodString>>;
106
+ publishedBy: z.ZodNullable<z.ZodOptional<z.ZodString>>;
107
+ metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
108
+ }, z.core.$strip>;
109
+ export declare const updatePolicyVersionSchema: z.ZodObject<{
110
+ title: z.ZodOptional<z.ZodString>;
111
+ bodyFormat: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
112
+ markdown: "markdown";
113
+ html: "html";
114
+ plain: "plain";
115
+ }>>>;
116
+ body: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
117
+ publishedBy: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
118
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
119
+ }, z.core.$strip>;
120
+ export declare const insertPolicyRuleSchema: z.ZodObject<{
121
+ ruleType: z.ZodEnum<{
122
+ custom: "custom";
123
+ window: "window";
124
+ percentage: "percentage";
125
+ flat_amount: "flat_amount";
126
+ date_range: "date_range";
127
+ }>;
128
+ label: z.ZodNullable<z.ZodOptional<z.ZodString>>;
129
+ daysBeforeDeparture: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
130
+ refundPercent: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
131
+ refundType: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
132
+ cash: "cash";
133
+ credit: "credit";
134
+ cash_or_credit: "cash_or_credit";
135
+ none: "none";
136
+ }>>>;
137
+ flatAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
138
+ currency: z.ZodNullable<z.ZodOptional<z.ZodString>>;
139
+ validFrom: z.ZodNullable<z.ZodOptional<z.ZodString>>;
140
+ validTo: z.ZodNullable<z.ZodOptional<z.ZodString>>;
141
+ conditions: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
142
+ sortOrder: z.ZodDefault<z.ZodNumber>;
143
+ }, z.core.$strip>;
144
+ export declare const updatePolicyRuleSchema: z.ZodObject<{
145
+ ruleType: z.ZodOptional<z.ZodEnum<{
146
+ custom: "custom";
147
+ window: "window";
148
+ percentage: "percentage";
149
+ flat_amount: "flat_amount";
150
+ date_range: "date_range";
151
+ }>>;
152
+ label: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
153
+ daysBeforeDeparture: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
154
+ refundPercent: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
155
+ refundType: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
156
+ cash: "cash";
157
+ credit: "credit";
158
+ cash_or_credit: "cash_or_credit";
159
+ none: "none";
160
+ }>>>>;
161
+ flatAmountCents: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
162
+ currency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
163
+ validFrom: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
164
+ validTo: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
165
+ conditions: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
166
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
167
+ }, z.core.$strip>;
168
+ export declare const insertPolicyAssignmentSchema: z.ZodObject<{
169
+ policyId: z.ZodString;
170
+ scope: z.ZodEnum<{
171
+ supplier: "supplier";
172
+ organization: "organization";
173
+ channel: "channel";
174
+ product: "product";
175
+ market: "market";
176
+ global: "global";
177
+ }>;
178
+ productId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
179
+ channelId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
180
+ supplierId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
181
+ marketId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
182
+ organizationId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
183
+ validFrom: z.ZodNullable<z.ZodOptional<z.ZodString>>;
184
+ validTo: z.ZodNullable<z.ZodOptional<z.ZodString>>;
185
+ priority: z.ZodDefault<z.ZodNumber>;
186
+ metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
187
+ }, z.core.$strip>;
188
+ export declare const updatePolicyAssignmentSchema: z.ZodObject<{
189
+ policyId: z.ZodOptional<z.ZodString>;
190
+ scope: z.ZodOptional<z.ZodEnum<{
191
+ supplier: "supplier";
192
+ organization: "organization";
193
+ channel: "channel";
194
+ product: "product";
195
+ market: "market";
196
+ global: "global";
197
+ }>>;
198
+ productId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
199
+ channelId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
200
+ supplierId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
201
+ marketId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
202
+ organizationId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
203
+ validFrom: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
204
+ validTo: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
205
+ priority: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
206
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
207
+ }, z.core.$strip>;
208
+ export declare const policyAssignmentListQuerySchema: z.ZodObject<{
209
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
210
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
211
+ policyId: z.ZodOptional<z.ZodString>;
212
+ scope: z.ZodOptional<z.ZodEnum<{
213
+ supplier: "supplier";
214
+ organization: "organization";
215
+ channel: "channel";
216
+ product: "product";
217
+ market: "market";
218
+ global: "global";
219
+ }>>;
220
+ productId: z.ZodOptional<z.ZodString>;
221
+ channelId: z.ZodOptional<z.ZodString>;
222
+ supplierId: z.ZodOptional<z.ZodString>;
223
+ marketId: z.ZodOptional<z.ZodString>;
224
+ organizationId: z.ZodOptional<z.ZodString>;
225
+ }, z.core.$strip>;
226
+ export declare const insertPolicyAcceptanceSchema: z.ZodObject<{
227
+ policyVersionId: z.ZodString;
228
+ personId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
229
+ bookingId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
230
+ orderId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
231
+ offerId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
232
+ acceptedBy: z.ZodNullable<z.ZodOptional<z.ZodString>>;
233
+ method: z.ZodDefault<z.ZodEnum<{
234
+ signature: "signature";
235
+ implicit: "implicit";
236
+ explicit_checkbox: "explicit_checkbox";
237
+ }>>;
238
+ ipAddress: z.ZodNullable<z.ZodOptional<z.ZodString>>;
239
+ userAgent: z.ZodNullable<z.ZodOptional<z.ZodString>>;
240
+ metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
241
+ }, z.core.$strip>;
242
+ export declare const policyAcceptanceListQuerySchema: z.ZodObject<{
243
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
244
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
245
+ policyVersionId: z.ZodOptional<z.ZodString>;
246
+ personId: z.ZodOptional<z.ZodString>;
247
+ bookingId: z.ZodOptional<z.ZodString>;
248
+ orderId: z.ZodOptional<z.ZodString>;
249
+ }, z.core.$strip>;
250
+ export declare const evaluateCancellationInputSchema: z.ZodObject<{
251
+ daysBeforeDeparture: z.ZodNumber;
252
+ totalCents: z.ZodNumber;
253
+ currency: z.ZodOptional<z.ZodString>;
254
+ }, z.core.$strip>;
255
+ export declare const resolvePolicyInputSchema: z.ZodObject<{
256
+ kind: z.ZodEnum<{
257
+ other: "other";
258
+ cancellation: "cancellation";
259
+ payment: "payment";
260
+ terms_and_conditions: "terms_and_conditions";
261
+ privacy: "privacy";
262
+ refund: "refund";
263
+ commission: "commission";
264
+ guarantee: "guarantee";
265
+ }>;
266
+ productId: z.ZodOptional<z.ZodString>;
267
+ channelId: z.ZodOptional<z.ZodString>;
268
+ supplierId: z.ZodOptional<z.ZodString>;
269
+ marketId: z.ZodOptional<z.ZodString>;
270
+ organizationId: z.ZodOptional<z.ZodString>;
271
+ at: z.ZodOptional<z.ZodString>;
272
+ }, z.core.$strip>;
273
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/policies/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB;;;;;;;;;EAS3B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;EAA4C,CAAA;AAElF,eAAO,MAAM,oBAAoB;;;;;;EAM/B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;EAAuD,CAAA;AAE1F,eAAO,MAAM,2BAA2B;;;;;;;EAOtC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;EAAwC,CAAA;AAE3E,eAAO,MAAM,4BAA4B;;;;EAAyD,CAAA;AAsBlG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAAmB,CAAA;AAClD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAA6B,CAAA;AAE5D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAIhC,CAAA;AAYF,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAA0B,CAAA;AAChE,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAAoC,CAAA;AAkB1E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;iBAAuB,CAAA;AAC1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;iBAAiC,CAAA;AAkBpE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;iBAA6B,CAAA;AACtE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;iBAAuC,CAAA;AAEhF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;iBAQ1C,CAAA;AAiBF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;iBAA6B,CAAA;AAEtE,eAAO,MAAM,+BAA+B;;;;;;;iBAK1C,CAAA;AAIF,eAAO,MAAM,+BAA+B;;;;iBAI1C,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;iBAQnC,CAAA"}
@@ -0,0 +1,140 @@
1
+ import { z } from "zod";
2
+ export const policyKindSchema = z.enum([
3
+ "cancellation",
4
+ "payment",
5
+ "terms_and_conditions",
6
+ "privacy",
7
+ "refund",
8
+ "commission",
9
+ "guarantee",
10
+ "other",
11
+ ]);
12
+ export const policyVersionStatusSchema = z.enum(["draft", "published", "retired"]);
13
+ export const policyRuleTypeSchema = z.enum([
14
+ "window",
15
+ "percentage",
16
+ "flat_amount",
17
+ "date_range",
18
+ "custom",
19
+ ]);
20
+ export const policyRefundTypeSchema = z.enum(["cash", "credit", "cash_or_credit", "none"]);
21
+ export const policyAssignmentScopeSchema = z.enum([
22
+ "product",
23
+ "channel",
24
+ "supplier",
25
+ "market",
26
+ "organization",
27
+ "global",
28
+ ]);
29
+ export const policyBodyFormatSchema = z.enum(["markdown", "html", "plain"]);
30
+ export const policyAcceptanceMethodSchema = z.enum(["implicit", "explicit_checkbox", "signature"]);
31
+ const paginationSchema = z.object({
32
+ limit: z.coerce.number().int().min(1).max(100).default(50),
33
+ offset: z.coerce.number().int().min(0).default(0),
34
+ });
35
+ // ---------- policies ----------
36
+ const policyCoreSchema = z.object({
37
+ kind: policyKindSchema,
38
+ name: z.string().min(1).max(255),
39
+ slug: z
40
+ .string()
41
+ .min(1)
42
+ .max(100)
43
+ .regex(/^[a-z0-9-]+$/, "slug must be kebab-case"),
44
+ description: z.string().max(2000).optional().nullable(),
45
+ language: z.string().min(2).max(10).default("en"),
46
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
47
+ });
48
+ export const insertPolicySchema = policyCoreSchema;
49
+ export const updatePolicySchema = policyCoreSchema.partial();
50
+ export const policyListQuerySchema = paginationSchema.extend({
51
+ kind: policyKindSchema.optional(),
52
+ language: z.string().optional(),
53
+ search: z.string().optional(),
54
+ });
55
+ // ---------- policy_versions ----------
56
+ const policyVersionCoreSchema = z.object({
57
+ title: z.string().min(1).max(500),
58
+ bodyFormat: policyBodyFormatSchema.default("markdown"),
59
+ body: z.string().optional().nullable(),
60
+ publishedBy: z.string().max(255).optional().nullable(),
61
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
62
+ });
63
+ export const insertPolicyVersionSchema = policyVersionCoreSchema;
64
+ export const updatePolicyVersionSchema = policyVersionCoreSchema.partial();
65
+ // ---------- policy_rules ----------
66
+ const policyRuleCoreSchema = z.object({
67
+ ruleType: policyRuleTypeSchema,
68
+ label: z.string().max(255).optional().nullable(),
69
+ daysBeforeDeparture: z.number().int().optional().nullable(),
70
+ refundPercent: z.number().int().min(0).max(10000).optional().nullable(),
71
+ refundType: policyRefundTypeSchema.optional().nullable(),
72
+ flatAmountCents: z.number().int().optional().nullable(),
73
+ currency: z.string().max(10).optional().nullable(),
74
+ validFrom: z.string().optional().nullable(),
75
+ validTo: z.string().optional().nullable(),
76
+ conditions: z.record(z.string(), z.unknown()).optional().nullable(),
77
+ sortOrder: z.number().int().default(0),
78
+ });
79
+ export const insertPolicyRuleSchema = policyRuleCoreSchema;
80
+ export const updatePolicyRuleSchema = policyRuleCoreSchema.partial();
81
+ // ---------- policy_assignments ----------
82
+ const policyAssignmentCoreSchema = z.object({
83
+ policyId: z.string(),
84
+ scope: policyAssignmentScopeSchema,
85
+ productId: z.string().optional().nullable(),
86
+ channelId: z.string().optional().nullable(),
87
+ supplierId: z.string().optional().nullable(),
88
+ marketId: z.string().optional().nullable(),
89
+ organizationId: z.string().optional().nullable(),
90
+ validFrom: z.string().optional().nullable(),
91
+ validTo: z.string().optional().nullable(),
92
+ priority: z.number().int().default(0),
93
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
94
+ });
95
+ export const insertPolicyAssignmentSchema = policyAssignmentCoreSchema;
96
+ export const updatePolicyAssignmentSchema = policyAssignmentCoreSchema.partial();
97
+ export const policyAssignmentListQuerySchema = paginationSchema.extend({
98
+ policyId: z.string().optional(),
99
+ scope: policyAssignmentScopeSchema.optional(),
100
+ productId: z.string().optional(),
101
+ channelId: z.string().optional(),
102
+ supplierId: z.string().optional(),
103
+ marketId: z.string().optional(),
104
+ organizationId: z.string().optional(),
105
+ });
106
+ // ---------- policy_acceptances ----------
107
+ const policyAcceptanceCoreSchema = z.object({
108
+ policyVersionId: z.string(),
109
+ personId: z.string().optional().nullable(),
110
+ bookingId: z.string().optional().nullable(),
111
+ orderId: z.string().optional().nullable(),
112
+ offerId: z.string().optional().nullable(),
113
+ acceptedBy: z.string().max(255).optional().nullable(),
114
+ method: policyAcceptanceMethodSchema.default("implicit"),
115
+ ipAddress: z.string().max(64).optional().nullable(),
116
+ userAgent: z.string().max(500).optional().nullable(),
117
+ metadata: z.record(z.string(), z.unknown()).optional().nullable(),
118
+ });
119
+ export const insertPolicyAcceptanceSchema = policyAcceptanceCoreSchema;
120
+ export const policyAcceptanceListQuerySchema = paginationSchema.extend({
121
+ policyVersionId: z.string().optional(),
122
+ personId: z.string().optional(),
123
+ bookingId: z.string().optional(),
124
+ orderId: z.string().optional(),
125
+ });
126
+ // ---------- evaluation ----------
127
+ export const evaluateCancellationInputSchema = z.object({
128
+ daysBeforeDeparture: z.number().int(),
129
+ totalCents: z.number().int().min(0),
130
+ currency: z.string().max(10).optional(),
131
+ });
132
+ export const resolvePolicyInputSchema = z.object({
133
+ kind: policyKindSchema,
134
+ productId: z.string().optional(),
135
+ channelId: z.string().optional(),
136
+ supplierId: z.string().optional(),
137
+ marketId: z.string().optional(),
138
+ organizationId: z.string().optional(),
139
+ at: z.string().optional(), // ISO date for validFrom/validTo filtering
140
+ });
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@voyantjs/legal",
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
+ "./contracts": {
12
+ "types": "./dist/contracts/index.d.ts",
13
+ "import": "./dist/contracts/index.js"
14
+ },
15
+ "./contracts/schema": {
16
+ "types": "./dist/contracts/schema.d.ts",
17
+ "import": "./dist/contracts/schema.js"
18
+ },
19
+ "./contracts/validation": {
20
+ "types": "./dist/contracts/validation.d.ts",
21
+ "import": "./dist/contracts/validation.js"
22
+ },
23
+ "./contracts/routes": {
24
+ "types": "./dist/contracts/routes.d.ts",
25
+ "import": "./dist/contracts/routes.js"
26
+ },
27
+ "./contracts/service": {
28
+ "types": "./dist/contracts/service.d.ts",
29
+ "import": "./dist/contracts/service.js"
30
+ },
31
+ "./policies": {
32
+ "types": "./dist/policies/index.d.ts",
33
+ "import": "./dist/policies/index.js"
34
+ },
35
+ "./policies/schema": {
36
+ "types": "./dist/policies/schema.d.ts",
37
+ "import": "./dist/policies/schema.js"
38
+ },
39
+ "./policies/validation": {
40
+ "types": "./dist/policies/validation.d.ts",
41
+ "import": "./dist/policies/validation.js"
42
+ },
43
+ "./policies/routes": {
44
+ "types": "./dist/policies/routes.d.ts",
45
+ "import": "./dist/policies/routes.js"
46
+ },
47
+ "./policies/service": {
48
+ "types": "./dist/policies/service.d.ts",
49
+ "import": "./dist/policies/service.js"
50
+ }
51
+ },
52
+ "dependencies": {
53
+ "drizzle-orm": "^0.45.2",
54
+ "hono": "^4.12.10",
55
+ "zod": "^4.3.6",
56
+ "@voyantjs/hono": "0.1.0",
57
+ "@voyantjs/core": "0.1.0",
58
+ "@voyantjs/crm": "0.1.0",
59
+ "@voyantjs/suppliers": "0.1.0",
60
+ "@voyantjs/db": "0.1.0"
61
+ },
62
+ "devDependencies": {
63
+ "typescript": "^6.0.2",
64
+ "vitest": "^4.0.0",
65
+ "@voyantjs/voyant-typescript-config": "0.1.0",
66
+ "@voyantjs/voyant-test-utils": "0.1.0"
67
+ },
68
+ "files": [
69
+ "dist"
70
+ ],
71
+ "publishConfig": {
72
+ "access": "public"
73
+ },
74
+ "scripts": {
75
+ "typecheck": "tsc --noEmit",
76
+ "lint": "biome check src/",
77
+ "test": "vitest run",
78
+ "build": "tsc -p tsconfig.json",
79
+ "clean": "rm -rf dist"
80
+ },
81
+ "main": "./dist/index.js",
82
+ "types": "./dist/index.d.ts"
83
+ }