@voyantjs/utils 0.1.0 → 0.2.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 (114) hide show
  1. package/dist/kms-aws.d.ts.map +1 -1
  2. package/dist/kms-aws.js +1 -4
  3. package/dist/kms-aws.js.map +1 -1
  4. package/dist/kms.d.ts +1 -1
  5. package/dist/kms.d.ts.map +1 -1
  6. package/package.json +2 -2
  7. package/dist/accounting-countries.d.ts +0 -12
  8. package/dist/accounting-countries.d.ts.map +0 -1
  9. package/dist/accounting-countries.js +0 -307
  10. package/dist/accounting-countries.js.map +0 -1
  11. package/dist/accounting-regions.d.ts +0 -103
  12. package/dist/accounting-regions.d.ts.map +0 -1
  13. package/dist/accounting-regions.js +0 -38
  14. package/dist/accounting-regions.js.map +0 -1
  15. package/dist/airlines.d.ts +0 -960
  16. package/dist/airlines.d.ts.map +0 -1
  17. package/dist/airlines.js +0 -989
  18. package/dist/airlines.js.map +0 -1
  19. package/dist/analytics/api-key-events.d.ts +0 -89
  20. package/dist/analytics/api-key-events.d.ts.map +0 -1
  21. package/dist/analytics/api-key-events.js +0 -99
  22. package/dist/analytics/api-key-events.js.map +0 -1
  23. package/dist/api-keys-client.d.ts +0 -40
  24. package/dist/api-keys-client.d.ts.map +0 -1
  25. package/dist/api-keys-client.js +0 -63
  26. package/dist/api-keys-client.js.map +0 -1
  27. package/dist/api-keys.d.ts +0 -48
  28. package/dist/api-keys.d.ts.map +0 -1
  29. package/dist/api-keys.js +0 -108
  30. package/dist/api-keys.js.map +0 -1
  31. package/dist/checkout-signature.d.ts +0 -15
  32. package/dist/checkout-signature.d.ts.map +0 -1
  33. package/dist/checkout-signature.js +0 -64
  34. package/dist/checkout-signature.js.map +0 -1
  35. package/dist/conditions.d.ts +0 -36
  36. package/dist/conditions.d.ts.map +0 -1
  37. package/dist/conditions.js +0 -396
  38. package/dist/conditions.js.map +0 -1
  39. package/dist/email/send.d.ts +0 -20
  40. package/dist/email/send.d.ts.map +0 -1
  41. package/dist/email/send.js +0 -53
  42. package/dist/email/send.js.map +0 -1
  43. package/dist/form-runtime.d.ts +0 -38
  44. package/dist/form-runtime.d.ts.map +0 -1
  45. package/dist/form-runtime.js +0 -174
  46. package/dist/form-runtime.js.map +0 -1
  47. package/dist/gcs/storage.d.ts +0 -23
  48. package/dist/gcs/storage.d.ts.map +0 -1
  49. package/dist/gcs/storage.js +0 -25
  50. package/dist/gcs/storage.js.map +0 -1
  51. package/dist/geo.d.ts +0 -85
  52. package/dist/geo.d.ts.map +0 -1
  53. package/dist/geo.js +0 -141
  54. package/dist/geo.js.map +0 -1
  55. package/dist/kms-crypto.d.ts +0 -20
  56. package/dist/kms-crypto.d.ts.map +0 -1
  57. package/dist/kms-crypto.js +0 -108
  58. package/dist/kms-crypto.js.map +0 -1
  59. package/dist/kv-codecs.d.ts +0 -6
  60. package/dist/kv-codecs.d.ts.map +0 -1
  61. package/dist/kv-codecs.js +0 -4
  62. package/dist/kv-codecs.js.map +0 -1
  63. package/dist/price/resolve.d.ts +0 -91
  64. package/dist/price/resolve.d.ts.map +0 -1
  65. package/dist/price/resolve.js +0 -227
  66. package/dist/price/resolve.js.map +0 -1
  67. package/dist/redis.d.ts +0 -13
  68. package/dist/redis.d.ts.map +0 -1
  69. package/dist/redis.js +0 -16
  70. package/dist/redis.js.map +0 -1
  71. package/dist/region-only.d.ts +0 -11
  72. package/dist/region-only.d.ts.map +0 -1
  73. package/dist/region-only.js +0 -49
  74. package/dist/region-only.js.map +0 -1
  75. package/dist/region.d.ts +0 -11
  76. package/dist/region.d.ts.map +0 -1
  77. package/dist/region.js +0 -47
  78. package/dist/region.js.map +0 -1
  79. package/dist/romania-bucharest-sectors.d.ts +0 -6
  80. package/dist/romania-bucharest-sectors.d.ts.map +0 -1
  81. package/dist/romania-bucharest-sectors.js +0 -27
  82. package/dist/romania-bucharest-sectors.js.map +0 -1
  83. package/dist/romania-counties.d.ts +0 -6
  84. package/dist/romania-counties.d.ts.map +0 -1
  85. package/dist/romania-counties.js +0 -171
  86. package/dist/romania-counties.js.map +0 -1
  87. package/dist/sms/provider.d.ts +0 -28
  88. package/dist/sms/provider.d.ts.map +0 -1
  89. package/dist/sms/provider.js +0 -50
  90. package/dist/sms/provider.js.map +0 -1
  91. package/dist/sms/segments.d.ts +0 -3
  92. package/dist/sms/segments.d.ts.map +0 -1
  93. package/dist/sms/segments.js +0 -33
  94. package/dist/sms/segments.js.map +0 -1
  95. package/dist/twilio/client.d.ts +0 -13
  96. package/dist/twilio/client.d.ts.map +0 -1
  97. package/dist/twilio/client.js +0 -26
  98. package/dist/twilio/client.js.map +0 -1
  99. package/dist/usage/index.d.ts +0 -34
  100. package/dist/usage/index.d.ts.map +0 -1
  101. package/dist/usage/index.js +0 -18
  102. package/dist/usage/index.js.map +0 -1
  103. package/dist/usage/policy.d.ts +0 -27
  104. package/dist/usage/policy.d.ts.map +0 -1
  105. package/dist/usage/policy.js +0 -17
  106. package/dist/usage/policy.js.map +0 -1
  107. package/dist/validation/log.d.ts +0 -10
  108. package/dist/validation/log.d.ts.map +0 -1
  109. package/dist/validation/log.js +0 -37
  110. package/dist/validation/log.js.map +0 -1
  111. package/dist/zod-form-builder.d.ts +0 -45
  112. package/dist/zod-form-builder.d.ts.map +0 -1
  113. package/dist/zod-form-builder.js +0 -216
  114. package/dist/zod-form-builder.js.map +0 -1
@@ -1,36 +0,0 @@
1
- /**
2
- * Predicate Evaluator for Form Conditions
3
- *
4
- * Provides a safe, deterministic evaluator for condition expressions
5
- * used in booking form visibility and requirement rules.
6
- */
7
- import type { Predicate, PredicateContext } from "@pxmstudio/voyant-types";
8
- /**
9
- * Error thrown when predicate evaluation fails
10
- */
11
- export declare class PredicateEvaluationError extends Error {
12
- readonly field?: string | undefined;
13
- constructor(message: string, field?: string | undefined);
14
- }
15
- /**
16
- * Evaluate a predicate expression
17
- *
18
- * @param predicate - The predicate to evaluate
19
- * @param context - The evaluation context
20
- * @returns boolean result
21
- */
22
- export declare function evaluatePredicate(predicate: Predicate, context: PredicateContext): boolean;
23
- /**
24
- * Validate a predicate structure without evaluating it
25
- * Useful for configuration validation
26
- *
27
- * @param predicate - The predicate to validate
28
- * @returns true if valid, throws PredicateEvaluationError if invalid
29
- */
30
- export declare function validatePredicate(predicate: Predicate): boolean;
31
- /**
32
- * Safe evaluation that catches errors and returns false
33
- * Useful for non-critical conditional logic
34
- */
35
- export declare function safeEvaluatePredicate(predicate: Predicate, context: PredicateContext): boolean;
36
- //# sourceMappingURL=conditions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../src/conditions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EACjB,MAAM,yBAAyB,CAAA;AAwBhC;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;aAG/B,KAAK,CAAC,EAAE,MAAM;gBAD9B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,MAAM,YAAA;CAKjC;AAkPD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CA0F1F;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAsC/D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAO9F"}
@@ -1,396 +0,0 @@
1
- /**
2
- * Predicate Evaluator for Form Conditions
3
- *
4
- * Provides a safe, deterministic evaluator for condition expressions
5
- * used in booking form visibility and requirement rules.
6
- */
7
- import { computeRegionsFromCountries, getCountryRegions } from "./geo.js";
8
- /**
9
- * Whitelist of allowed field references
10
- */
11
- // Whitelist derives from @pxmstudio/voyant-types PREDICATE_ALLOWED_FIELDS plus itinerary.items.*
12
- const ALLOWED_FIELDS = new Set([
13
- "billing.buyerType",
14
- "billing.country",
15
- "passenger.country",
16
- "itinerary.countries_any",
17
- "itinerary.countries_all",
18
- "itinerary.countries_only",
19
- "itinerary.jurisdictions",
20
- "itinerary.region",
21
- // Support per-item derived context (countries/regions)
22
- "itinerary.items.country",
23
- "itinerary.items.region",
24
- "product.categoryKey",
25
- "extensions.countries_any",
26
- ]);
27
- /**
28
- * Error thrown when predicate evaluation fails
29
- */
30
- export class PredicateEvaluationError extends Error {
31
- field;
32
- constructor(message, field) {
33
- super(message);
34
- this.field = field;
35
- this.name = "PredicateEvaluationError";
36
- }
37
- }
38
- /**
39
- * Safely get nested value from context object
40
- */
41
- function getFieldValue(context, field) {
42
- // Fast-path for derived itinerary regions to avoid whitelist error and to compute when missing
43
- if (field === "itinerary.items.region") {
44
- try {
45
- const items = context?.itinerary?.items || {};
46
- const direct = items?.region;
47
- if (Array.isArray(direct) && direct.length > 0)
48
- return direct;
49
- const byItems = Array.isArray(items?.country) ? items.country : [];
50
- if (byItems.length > 0)
51
- return computeRegionsFromCountries(byItems);
52
- const any = Array.isArray(context?.itinerary?.countries_any)
53
- ? context.itinerary.countries_any
54
- : [];
55
- if (any.length > 0)
56
- return computeRegionsFromCountries(any);
57
- return [];
58
- }
59
- catch {
60
- return [];
61
- }
62
- }
63
- if (!ALLOWED_FIELDS.has(field) && !field.startsWith("input.")) {
64
- throw new PredicateEvaluationError(`Field "${field}" is not in the allowed whitelist`, field);
65
- }
66
- const parts = field.split(".");
67
- let value = context;
68
- for (const part of parts) {
69
- if (value === null || value === undefined) {
70
- return undefined;
71
- }
72
- // Prevent prototype pollution
73
- if (part === "__proto__" || part === "constructor" || part === "prototype") {
74
- throw new PredicateEvaluationError(`Unsafe field access attempted: ${field}`, field);
75
- }
76
- value = value[part];
77
- }
78
- return value;
79
- }
80
- /**
81
- * Coerce value to boolean for comparison
82
- */
83
- function toBoolean(value) {
84
- if (typeof value === "boolean")
85
- return value;
86
- if (typeof value === "string") {
87
- const lower = value.toLowerCase();
88
- if (lower === "true" || lower === "1")
89
- return true;
90
- if (lower === "false" || lower === "0")
91
- return false;
92
- }
93
- if (typeof value === "number")
94
- return value !== 0;
95
- return Boolean(value);
96
- }
97
- /**
98
- * Coerce value to number for comparison
99
- */
100
- function toNumber(value) {
101
- if (typeof value === "number")
102
- return value;
103
- if (typeof value === "string") {
104
- const num = parseFloat(value);
105
- return isNaN(num) ? null : num;
106
- }
107
- if (typeof value === "boolean")
108
- return value ? 1 : 0;
109
- return null;
110
- }
111
- /**
112
- * Check if value is an array
113
- */
114
- function isArray(value) {
115
- return Array.isArray(value);
116
- }
117
- /**
118
- * Normalize value for comparison (case-insensitive string comparison)
119
- */
120
- function normalizeForComparison(value) {
121
- if (typeof value === "string") {
122
- return value.trim().toLowerCase();
123
- }
124
- return value;
125
- }
126
- /**
127
- * Evaluate a leaf condition
128
- */
129
- function evaluateLeafCondition(condition, context) {
130
- const { op, value } = condition;
131
- switch (op) {
132
- case "exists": {
133
- const fieldValue = getFieldValue(context, condition.field);
134
- return fieldValue !== null && fieldValue !== undefined && fieldValue !== "";
135
- }
136
- case "not_exists": {
137
- const fieldValue = getFieldValue(context, condition.field);
138
- return fieldValue === null || fieldValue === undefined || fieldValue === "";
139
- }
140
- case "equals": {
141
- // Special handling: when comparing a region field, "equals" means ALL countries are in that region
142
- if (condition.field === "itinerary.items.region") {
143
- const countries = context?.itinerary?.items?.country ?? context?.itinerary?.countries_any;
144
- if (Array.isArray(countries) && typeof value === "string" && value.trim() !== "") {
145
- const region = String(value).trim().toLowerCase();
146
- if (countries.length === 0)
147
- return false;
148
- return countries.every((c) => {
149
- const regions = getCountryRegions(String(c || ""));
150
- return regions.map((r) => String(r).toLowerCase()).includes(region);
151
- });
152
- }
153
- }
154
- // Special handling: when comparing country list, treat "equals" as array inclusion check
155
- if (condition.field === "itinerary.items.country") {
156
- const countries = context?.itinerary?.items?.country ?? context?.itinerary?.countries_any;
157
- if (Array.isArray(countries) && typeof value === "string") {
158
- const code = String(value).trim().toUpperCase();
159
- if (!code)
160
- return false;
161
- return countries.some((c) => String(c || "")
162
- .trim()
163
- .toUpperCase() === code);
164
- }
165
- }
166
- // Fallback to default: compare scalar field value
167
- const fieldValue = getFieldValue(context, condition.field);
168
- const normalizedField = normalizeForComparison(fieldValue);
169
- const normalizedValue = normalizeForComparison(value);
170
- return normalizedField === normalizedValue;
171
- }
172
- case "not_equals": {
173
- // Special handling: when comparing a region field, "not_equals" means ALL countries are NOT in that region
174
- if (condition.field === "itinerary.items.region") {
175
- const countries = context?.itinerary?.items?.country ?? context?.itinerary?.countries_any;
176
- if (Array.isArray(countries) && typeof value === "string" && value.trim() !== "") {
177
- const region = String(value).trim().toLowerCase();
178
- if (countries.length === 0)
179
- return false;
180
- return countries.every((c) => {
181
- const regions = getCountryRegions(String(c || ""));
182
- return !regions.map((r) => String(r).toLowerCase()).includes(region);
183
- });
184
- }
185
- }
186
- // Special handling: for country list, treat not_equals as array not containing value
187
- if (condition.field === "itinerary.items.country") {
188
- const countries = context?.itinerary?.items?.country ?? context?.itinerary?.countries_any;
189
- if (Array.isArray(countries) && typeof value === "string") {
190
- const code = String(value).trim().toUpperCase();
191
- if (!code)
192
- return true;
193
- return !countries.some((c) => String(c || "")
194
- .trim()
195
- .toUpperCase() === code);
196
- }
197
- }
198
- const fieldValue = getFieldValue(context, condition.field);
199
- const normalizedField = normalizeForComparison(fieldValue);
200
- const normalizedValue = normalizeForComparison(value);
201
- return normalizedField !== normalizedValue;
202
- }
203
- case "in": {
204
- // Two modes:
205
- // 1. Field value is scalar, check if it's in the provided array
206
- // 2. Field value is array, check if it contains the provided scalar
207
- const fieldValue = getFieldValue(context, condition.field);
208
- if (isArray(value)) {
209
- // Mode 1: scalar field in array value
210
- const normalized = normalizeForComparison(fieldValue);
211
- return value.some((v) => normalizeForComparison(v) === normalized);
212
- }
213
- else if (isArray(fieldValue)) {
214
- // Mode 2: array field contains scalar value
215
- const normalized = normalizeForComparison(value);
216
- return fieldValue.some((v) => normalizeForComparison(v) === normalized);
217
- }
218
- return false;
219
- }
220
- case "contains": {
221
- // For array fields, check if array contains the scalar value
222
- const fieldValue = getFieldValue(context, condition.field);
223
- if (isArray(fieldValue)) {
224
- const normalized = normalizeForComparison(value);
225
- return fieldValue.some((v) => normalizeForComparison(v) === normalized);
226
- }
227
- // For string fields, check substring
228
- if (typeof fieldValue === "string" &&
229
- (typeof value === "string" || typeof value === "number")) {
230
- return fieldValue.toLowerCase().includes(String(value).toLowerCase());
231
- }
232
- return false;
233
- }
234
- case "not_contains": {
235
- // Opposite of contains
236
- const fieldValue = getFieldValue(context, condition.field);
237
- if (isArray(fieldValue)) {
238
- const normalized = normalizeForComparison(value);
239
- return !fieldValue.some((v) => normalizeForComparison(v) === normalized);
240
- }
241
- if (typeof fieldValue === "string" &&
242
- (typeof value === "string" || typeof value === "number")) {
243
- return !fieldValue.toLowerCase().includes(String(value).toLowerCase());
244
- }
245
- // If incompatible types, treat as not containing
246
- return true;
247
- }
248
- default:
249
- throw new PredicateEvaluationError(`Unknown operator: ${op}`, condition.field);
250
- }
251
- }
252
- /**
253
- * Evaluate a predicate expression
254
- *
255
- * @param predicate - The predicate to evaluate
256
- * @param context - The evaluation context
257
- * @returns boolean result
258
- */
259
- export function evaluatePredicate(predicate, context) {
260
- // Handle AND (all) group
261
- if ("all" in predicate) {
262
- if (!Array.isArray(predicate.all)) {
263
- throw new PredicateEvaluationError("'all' must be an array");
264
- }
265
- // Special combine logic: region == X + explicit country contains exceptions
266
- try {
267
- const group = predicate.all;
268
- const regionEqIndex = group.findIndex((p) => p &&
269
- typeof p === "object" &&
270
- "field" in p &&
271
- "op" in p &&
272
- p.field === "itinerary.items.region" &&
273
- p.op === "equals");
274
- if (regionEqIndex >= 0) {
275
- const regionValue = String((group[regionEqIndex])?.value || "")
276
- .trim()
277
- .toLowerCase();
278
- const countryContainsIndices = [];
279
- const allowedCountries = new Set();
280
- for (let i = 0; i < group.length; i++) {
281
- const p = group[i];
282
- if (p &&
283
- typeof p === "object" &&
284
- "field" in p &&
285
- "op" in p &&
286
- p.field === "itinerary.items.country" &&
287
- (p.op === "contains" || p.op === "equals")) {
288
- const v = (p).value;
289
- if (typeof v === "string" && v.trim().length === 2) {
290
- allowedCountries.add(v.trim().toUpperCase());
291
- countryContainsIndices.push(i);
292
- }
293
- }
294
- }
295
- if (regionValue) {
296
- const items = context?.itinerary?.items || {};
297
- const countries = Array.isArray(items?.country)
298
- ? items.country
299
- : Array.isArray(context?.itinerary?.countries_any)
300
- ? context.itinerary.countries_any
301
- : [];
302
- const allRegions = computeRegionsFromCountries(countries);
303
- const pass = countries.every((c) => {
304
- const code = String(c || "")
305
- .trim()
306
- .toUpperCase();
307
- if (allowedCountries.has(code))
308
- return true;
309
- const regs = getCountryRegions(code).map((r) => String(r).toLowerCase());
310
- return regs.includes(regionValue);
311
- });
312
- if (!pass)
313
- return false;
314
- // Evaluate the rest of predicates excluding the combined ones
315
- for (let i = 0; i < group.length; i++) {
316
- if (i === regionEqIndex)
317
- continue;
318
- if (countryContainsIndices.includes(i))
319
- continue;
320
- if (!evaluatePredicate(group[i], context))
321
- return false;
322
- }
323
- return true;
324
- }
325
- }
326
- }
327
- catch (e) {
328
- // Fall through to default behavior on any error
329
- }
330
- return predicate.all.every((p) => evaluatePredicate(p, context));
331
- }
332
- // Handle OR (any) group
333
- if ("any" in predicate) {
334
- if (!Array.isArray(predicate.any)) {
335
- throw new PredicateEvaluationError("'any' must be an array");
336
- }
337
- return predicate.any.some((p) => evaluatePredicate(p, context));
338
- }
339
- // Handle leaf condition
340
- if ("field" in predicate && "op" in predicate) {
341
- return evaluateLeafCondition(predicate, context);
342
- }
343
- throw new PredicateEvaluationError("Invalid predicate structure: must have 'all', 'any', or 'field' and 'op'");
344
- }
345
- /**
346
- * Validate a predicate structure without evaluating it
347
- * Useful for configuration validation
348
- *
349
- * @param predicate - The predicate to validate
350
- * @returns true if valid, throws PredicateEvaluationError if invalid
351
- */
352
- export function validatePredicate(predicate) {
353
- // Handle AND (all) group
354
- if ("all" in predicate) {
355
- if (!Array.isArray(predicate.all)) {
356
- throw new PredicateEvaluationError("'all' must be an array");
357
- }
358
- predicate.all.forEach((p) => validatePredicate(p));
359
- return true;
360
- }
361
- // Handle OR (any) group
362
- if ("any" in predicate) {
363
- if (!Array.isArray(predicate.any)) {
364
- throw new PredicateEvaluationError("'any' must be an array");
365
- }
366
- predicate.any.forEach((p) => validatePredicate(p));
367
- return true;
368
- }
369
- // Handle leaf condition
370
- if ("field" in predicate && "op" in predicate) {
371
- const { field, op } = predicate;
372
- if (!ALLOWED_FIELDS.has(field) && !field.startsWith("input.")) {
373
- throw new PredicateEvaluationError(`Field "${field}" is not in the allowed whitelist`, field);
374
- }
375
- const validOps = ["equals", "not_equals", "in", "contains", "exists", "not_exists"];
376
- if (!validOps.includes(op)) {
377
- throw new PredicateEvaluationError(`Unknown operator: ${op}`, field);
378
- }
379
- return true;
380
- }
381
- throw new PredicateEvaluationError("Invalid predicate structure: must have 'all', 'any', or 'field' and 'op'");
382
- }
383
- /**
384
- * Safe evaluation that catches errors and returns false
385
- * Useful for non-critical conditional logic
386
- */
387
- export function safeEvaluatePredicate(predicate, context) {
388
- try {
389
- return evaluatePredicate(predicate, context);
390
- }
391
- catch (error) {
392
- console.error("Predicate evaluation error:", error);
393
- return false;
394
- }
395
- }
396
- //# sourceMappingURL=conditions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../src/conditions.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- export type EmailAttachment = {
2
- filename: string;
3
- contentBase64: string;
4
- contentType: string;
5
- cid?: string;
6
- };
7
- export type SendEmailInput = {
8
- from: string;
9
- to: string | string[];
10
- subject: string;
11
- html?: string;
12
- text?: string;
13
- attachments?: EmailAttachment[];
14
- idempotencyKey?: string;
15
- };
16
- export type SendEmailResult = {
17
- id: string;
18
- };
19
- export declare function sendEmail(input: SendEmailInput): Promise<SendEmailResult>;
20
- //# sourceMappingURL=send.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,eAAe,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAQD,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAgD/E"}
@@ -1,53 +0,0 @@
1
- import { Resend } from "resend";
2
- function getResendClient() {
3
- const apiKey = process.env.RESEND_API_KEY;
4
- if (!apiKey)
5
- throw new Error("RESEND_API_KEY is not set");
6
- return new Resend(apiKey);
7
- }
8
- export async function sendEmail(input) {
9
- const resend = getResendClient();
10
- const to = Array.isArray(input.to) ? input.to : [input.to];
11
- const attachments = (input.attachments || []).map((a) => ({
12
- filename: a.filename,
13
- content: a.contentBase64,
14
- contentType: a.contentType,
15
- cid: a.cid,
16
- }));
17
- const headers = {};
18
- const key = input.idempotencyKey || crypto.randomUUID();
19
- headers["Idempotency-Key"] = key;
20
- // Basic retry with backoff + jitter for transient errors (429/5xx)
21
- const maxAttempts = 3;
22
- let lastError;
23
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
24
- const { data, error } = await resend.emails.send({
25
- from: input.from,
26
- to,
27
- subject: input.subject,
28
- html: input.html,
29
- text: input.text,
30
- attachments,
31
- headers,
32
- });
33
- if (!error) {
34
- const id = data?.id;
35
- if (!id)
36
- throw new Error("Resend send response missing id");
37
- return { id };
38
- }
39
- lastError = error;
40
- const message = String(error?.message || "");
41
- const is429 = message.includes("429") || /rate/i.test(message);
42
- const is5xx = /5\d\d/.test(message) || /temporarily|timeout|unavailable/i.test(message);
43
- if (attempt < maxAttempts && (is429 || is5xx)) {
44
- const base = 100 * Math.pow(2, attempt - 1);
45
- const jitter = Math.floor(Math.random() * 50);
46
- await new Promise((r) => setTimeout(r, base + jitter));
47
- continue;
48
- }
49
- break;
50
- }
51
- throw Object.assign(new Error(lastError?.message || "Resend send failed"), { cause: lastError });
52
- }
53
- //# sourceMappingURL=send.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAuB/B,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IACzD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAqB;IACnD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,aAAa;QACxB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC,CAAA;IAEH,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,EAAE,CAAA;IACvD,OAAO,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAA;IAEhC,mEAAmE;IACnE,MAAM,WAAW,GAAG,CAAC,CAAA;IACrB,IAAI,SAAc,CAAA;IAClB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAC/C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,EAAE;YACF,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW;YACX,OAAO;SACD,CAAC,CAAA;QAET,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,EAAE,GAAI,IAAY,EAAE,EAAY,CAAA;YACtC,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAC3D,OAAO,EAAE,EAAE,EAAE,CAAA;QACf,CAAC;QACD,SAAS,GAAG,KAAK,CAAA;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvF,IAAI,OAAO,GAAG,WAAW,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAA;YACtD,SAAQ;QACV,CAAC;QACD,MAAK;IACP,CAAC;IAED,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AAClG,CAAC"}
@@ -1,38 +0,0 @@
1
- import type { FormDefinition, PredicateContext } from "@pxmstudio/voyant-types";
2
- import { evaluatePredicate } from "./conditions.js";
3
- import { buildBillingSchema, buildPassengerSchema, getDefaultValues, getRequiredFields, getVisibleFields } from "./zod-form-builder.js";
4
- export { buildBillingSchema, buildPassengerSchema, evaluatePredicate, getDefaultValues, getRequiredFields, getVisibleFields, };
5
- export declare function isDebugEnabled(): boolean;
6
- export declare function getProductCountriesFromUrl(): string[];
7
- export declare function buildItineraryContext(productCountries?: string[]): {
8
- countries_any: string[];
9
- items: {
10
- country: string[];
11
- region: string[];
12
- };
13
- };
14
- export declare function computeVisibility(formDef: FormDefinition | null | undefined, ctx: PredicateContext, id: string, alias?: Record<string, string>): boolean;
15
- /**
16
- * Normalize a field definition to the canonical model.
17
- * - Coerce boolean-like strings to booleans
18
- * - Drop conflicting `visible` flag; hidden wins
19
- * - Ensure options array integrity
20
- */
21
- export declare function normalizeFieldDefinition<TField extends {
22
- [key: string]: any;
23
- }>(field: TField): TField;
24
- /**
25
- * Map an id through an alias registry to the canonical id.
26
- */
27
- export declare function canonicalizeFieldId(id: string, aliases?: Record<string, string>): string;
28
- /**
29
- * Convert a Date to YYYY-MM-DD string in UTC.
30
- */
31
- export declare function toIsoDateUtc(date: Date): string;
32
- export declare function visibleCustomFields(formDef: FormDefinition | null | undefined, ctx: PredicateContext, defaultsToExclude: Set<string>, excludePrefixes?: string[]): Array<NonNullable<FormDefinition>["fields"][number]>;
33
- export declare function requiredIdsWithAliases(formDef: FormDefinition | null | undefined, ctx: PredicateContext, aliasRules: Array<{
34
- ifHas: string;
35
- add: string[];
36
- }>): Set<string>;
37
- export declare function makeZodResolver(schema: any): any;
38
- //# sourceMappingURL=form-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-runtime.d.ts","sourceRoot":"","sources":["../src/form-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,CAAA;AAKD,wBAAgB,cAAc,IAAI,OAAO,CASxC;AAED,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAcrD;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG;IAClE,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC/C,CAYA;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC1C,GAAG,EAAE,gBAAgB,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAkBT;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC5E,KAAK,EAAE,MAAM,GACZ,MAAM,CA2BR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIxF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAG/C;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC1C,GAAG,EAAE,gBAAgB,EACrB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,eAAe,GAAE,MAAM,EAAO,GAC7B,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAYtD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC1C,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAClD,GAAG,CAAC,MAAM,CAAC,CASb;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAoBhD"}