@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,216 +0,0 @@
1
- /**
2
- * Zod Form Builder
3
- *
4
- * Transforms FormDefinition into Zod validation schemas for
5
- * server and client-side validation.
6
- */
7
- import { z } from "zod";
8
- import { evaluatePredicate } from "./conditions.js";
9
- /**
10
- * Map field type to base Zod schema
11
- */
12
- function getBaseZodSchema(field) {
13
- switch (field.type) {
14
- case "text":
15
- case "textarea":
16
- return z.string();
17
- case "email":
18
- return z.string().email("Invalid email address");
19
- case "phone":
20
- return z.string().min(1, "Phone number is required");
21
- case "number":
22
- return z.coerce.number();
23
- case "date":
24
- return z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Invalid date format (YYYY-MM-DD)");
25
- case "select":
26
- case "radio":
27
- if (field.options && field.options.length > 0) {
28
- const values = field.options.map((opt) => opt.value);
29
- return z.enum(values);
30
- }
31
- return z.string();
32
- case "country":
33
- return z.string().length(2, "Country code must be 2 characters");
34
- case "checkbox":
35
- return z.boolean();
36
- default:
37
- return z.string();
38
- }
39
- }
40
- /**
41
- * Apply constraints to Zod schema
42
- */
43
- function applyConstraints(schema, field) {
44
- let result = schema;
45
- // String-specific constraints
46
- if (result instanceof z.ZodString) {
47
- let str = result;
48
- if (field.minLength !== undefined) {
49
- str = str.min(field.minLength, `Must be at least ${field.minLength} characters`);
50
- }
51
- if (field.maxLength !== undefined) {
52
- str = str.max(field.maxLength, `Must be at most ${field.maxLength} characters`);
53
- }
54
- if (field.pattern) {
55
- try {
56
- const regex = new RegExp(field.pattern);
57
- str = str.regex(regex, "Invalid format");
58
- }
59
- catch (error) {
60
- console.error(`Invalid regex pattern for field ${field.id}:`, error);
61
- }
62
- }
63
- result = str;
64
- }
65
- return result;
66
- }
67
- /**
68
- * Check if field should be visible based on context
69
- */
70
- function isFieldVisible(field, context) {
71
- // If explicitly hidden, not visible
72
- if (field.hidden) {
73
- return false;
74
- }
75
- // If has visibility condition, evaluate it
76
- if (field.visibleWhen) {
77
- try {
78
- return evaluatePredicate(field.visibleWhen, context);
79
- }
80
- catch (error) {
81
- console.error(`Error evaluating visibility for field ${field.id}:`, error);
82
- return false;
83
- }
84
- }
85
- // Default: visible
86
- return true;
87
- }
88
- /**
89
- * Check if field should be required based on context
90
- */
91
- function isFieldRequired(field, context) {
92
- // If has conditional required, evaluate it
93
- if (field.requiredWhen) {
94
- try {
95
- return evaluatePredicate(field.requiredWhen, context);
96
- }
97
- catch (error) {
98
- console.error(`Error evaluating required condition for field ${field.id}:`, error);
99
- return field.required || false;
100
- }
101
- }
102
- // Fall back to base required
103
- return field.required || false;
104
- }
105
- /**
106
- * Build Zod schema for a single field
107
- */
108
- export function buildFieldSchema(field, context) {
109
- // Check visibility first
110
- if (!isFieldVisible(field, context)) {
111
- return null; // Field not visible, exclude from schema
112
- }
113
- let schema = getBaseZodSchema(field);
114
- schema = applyConstraints(schema, field);
115
- // Handle required/optional
116
- const required = isFieldRequired(field, context);
117
- if (!required) {
118
- // Make optional and nullable
119
- schema = schema.optional().nullable();
120
- }
121
- else {
122
- // For strings, ensure not empty
123
- if (schema instanceof z.ZodString) {
124
- schema = (schema).min(1, "This field is required");
125
- }
126
- }
127
- return schema;
128
- }
129
- /**
130
- * Build Zod schema for an entire form
131
- */
132
- export function buildFormSchema(formDef, context) {
133
- if (!formDef || !formDef.fields || formDef.fields.length === 0) {
134
- return z.object({});
135
- }
136
- const shape = {};
137
- for (const field of formDef.fields) {
138
- const fieldSchema = buildFieldSchema(field, context);
139
- if (fieldSchema) {
140
- shape[field.id] = fieldSchema;
141
- }
142
- }
143
- return z.object(shape);
144
- }
145
- /**
146
- * Build Zod schema for billing form
147
- */
148
- export function buildBillingSchema(formDef, context) {
149
- return buildFormSchema(formDef, {
150
- ...context,
151
- // Ensure billing context is available
152
- billing: context.billing || {},
153
- });
154
- }
155
- /**
156
- * Build Zod schema for passenger form (per passenger)
157
- */
158
- export function buildPassengerSchema(formDef, context, passengerIndex) {
159
- return buildFormSchema(formDef, {
160
- ...context,
161
- // Ensure passenger context is available
162
- passenger: context.passenger || {},
163
- });
164
- }
165
- /**
166
- * Get visible fields from form definition based on context
167
- */
168
- export function getVisibleFields(formDef, context) {
169
- if (!formDef || !formDef.fields) {
170
- return [];
171
- }
172
- return formDef.fields.filter((field) => isFieldVisible(field, context));
173
- }
174
- /**
175
- * Get required fields from form definition based on context
176
- */
177
- export function getRequiredFields(formDef, context) {
178
- if (!formDef || !formDef.fields) {
179
- return [];
180
- }
181
- return formDef.fields
182
- .filter((field) => isFieldVisible(field, context) && isFieldRequired(field, context))
183
- .map((field) => field.id);
184
- }
185
- /**
186
- * Validate form data against form definition
187
- */
188
- export function validateFormData(formDef, data, context) {
189
- const schema = buildFormSchema(formDef, context);
190
- try {
191
- const validated = schema.parse(data);
192
- return { success: true, data: validated };
193
- }
194
- catch (error) {
195
- if (error instanceof z.ZodError) {
196
- return { success: false, errors: error };
197
- }
198
- throw error;
199
- }
200
- }
201
- /**
202
- * Get default values for visible fields
203
- */
204
- export function getDefaultValues(formDef, context) {
205
- if (!formDef || !formDef.fields) {
206
- return {};
207
- }
208
- const defaults = {};
209
- for (const field of formDef.fields) {
210
- if (isFieldVisible(field, context) && field.default !== undefined) {
211
- defaults[field.id] = field.default;
212
- }
213
- }
214
- return defaults;
215
- }
216
- //# sourceMappingURL=zod-form-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zod-form-builder.js","sourceRoot":"","sources":["../src/zod-form-builder.ts"],"names":[],"mappings":"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"}