@stndrds/schema 1.0.0-alpha.293 → 1.0.0-alpha.68

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 (161) hide show
  1. package/dist/chunk-36UBIXJN.js +82 -0
  2. package/dist/chunk-3RG5ZIWI.js +10 -0
  3. package/dist/chunk-IXHWBBIY.mjs +721 -0
  4. package/dist/chunk-KG75T7MA.mjs +18664 -0
  5. package/dist/chunk-NEVERCM3.js +41 -0
  6. package/dist/chunk-V2RPPE2Y.mjs +41 -0
  7. package/dist/chunk-V32FQLWX.js +721 -0
  8. package/dist/chunk-V5QXU2OK.mjs +82 -0
  9. package/dist/chunk-XGFBT4K2.js +18664 -0
  10. package/dist/chunk-Y6FXYEAI.mjs +10 -0
  11. package/dist/default-roles-42X3TJI5.mjs +21 -0
  12. package/dist/default-roles-C3FYDYMN.js +21 -0
  13. package/dist/index.d.mts +3392 -10860
  14. package/dist/index.d.ts +3392 -10860
  15. package/dist/index.js +1705 -10255
  16. package/dist/index.mjs +1735 -9398
  17. package/dist/runtime-B0G6eBXO.d.ts +12810 -0
  18. package/dist/runtime-fj4EKCWH.d.mts +12810 -0
  19. package/dist/runtime.d.mts +6 -0
  20. package/dist/runtime.d.ts +6 -0
  21. package/dist/runtime.js +323 -0
  22. package/dist/runtime.mjs +323 -0
  23. package/dist/utils.d.mts +55 -35
  24. package/dist/utils.d.ts +55 -35
  25. package/dist/utils.js +19 -31
  26. package/dist/utils.mjs +19 -2
  27. package/dist/validation/validators.d.mts +4 -0
  28. package/dist/validation/validators.d.ts +4 -0
  29. package/dist/validation/validators.js +121 -0
  30. package/dist/validation/validators.mjs +121 -0
  31. package/dist/validators-B6L_hVBw.d.ts +1564 -0
  32. package/dist/validators-CgiGGhyH.d.mts +1564 -0
  33. package/package.json +16 -106
  34. package/dist/all-CDJSpI46.d.ts +0 -978
  35. package/dist/all-Cru_CaSY.d.mts +0 -978
  36. package/dist/attributes-CNYwg_Nr.d.ts +0 -584
  37. package/dist/attributes-CWPLbp7c.d.mts +0 -584
  38. package/dist/capabilities.d.mts +0 -146
  39. package/dist/capabilities.d.ts +0 -146
  40. package/dist/capabilities.js +0 -77
  41. package/dist/capabilities.mjs +0 -70
  42. package/dist/chunk-5N7OSHVX.js +0 -657
  43. package/dist/chunk-5WATIVCA.js +0 -10
  44. package/dist/chunk-ACKMC6FL.js +0 -17
  45. package/dist/chunk-APRL56F4.mjs +0 -226
  46. package/dist/chunk-AYVHMVKQ.mjs +0 -15
  47. package/dist/chunk-C32UUQ6D.js +0 -241
  48. package/dist/chunk-E6JUYGJX.js +0 -22
  49. package/dist/chunk-EEH4XQ7W.js +0 -61
  50. package/dist/chunk-EW5XR2X3.js +0 -12
  51. package/dist/chunk-GO6LQADH.mjs +0 -57
  52. package/dist/chunk-GRUSTQK3.mjs +0 -641
  53. package/dist/chunk-HRQEZUAA.mjs +0 -29
  54. package/dist/chunk-HTSTPTNZ.js +0 -10
  55. package/dist/chunk-KNGWHQLR.js +0 -16
  56. package/dist/chunk-LV3FEUKU.mjs +0 -14
  57. package/dist/chunk-NS63SPNN.mjs +0 -8
  58. package/dist/chunk-O73ROMWQ.mjs +0 -85
  59. package/dist/chunk-OASIPLEB.js +0 -1504
  60. package/dist/chunk-OSSGN43B.mjs +0 -8
  61. package/dist/chunk-P4VCAPJT.js +0 -81
  62. package/dist/chunk-Q44QKLN4.mjs +0 -43
  63. package/dist/chunk-Q4SZAMJT.js +0 -72
  64. package/dist/chunk-QVLQPW3O.mjs +0 -10
  65. package/dist/chunk-QWKLQRBX.js +0 -35
  66. package/dist/chunk-R5LAJCBU.mjs +0 -67
  67. package/dist/chunk-SI34M4IC.js +0 -45
  68. package/dist/chunk-UANQJ2GH.mjs +0 -25
  69. package/dist/chunk-ULM2BA5A.mjs +0 -1432
  70. package/dist/chunk-UXAHLSWC.mjs +0 -8
  71. package/dist/chunk-V2UA2D4E.js +0 -10
  72. package/dist/chunk-VGGGLTYJ.mjs +0 -74
  73. package/dist/chunk-Y3UPKP2B.js +0 -605
  74. package/dist/chunk-YIP5FJ5H.js +0 -27
  75. package/dist/chunk-YKWSHBT5.js +0 -32
  76. package/dist/chunk-YUFTHPOE.mjs +0 -20
  77. package/dist/chunk-Z5OPSBMQ.mjs +0 -566
  78. package/dist/chunk-ZDQ5AP26.mjs +0 -31
  79. package/dist/chunk-ZPFOKBIN.js +0 -89
  80. package/dist/exceptions.d.mts +0 -507
  81. package/dist/exceptions.d.ts +0 -507
  82. package/dist/exceptions.js +0 -158
  83. package/dist/exceptions.mjs +0 -1
  84. package/dist/helpers-CXkVwpsl.d.ts +0 -76
  85. package/dist/helpers-Dul_r9rJ.d.mts +0 -76
  86. package/dist/index-BdVnHL3F.d.mts +0 -853
  87. package/dist/index-CFhPHQaI.d.ts +0 -853
  88. package/dist/migrations-DaFneOfx.d.ts +0 -39
  89. package/dist/migrations-fRvadl6i.d.mts +0 -39
  90. package/dist/objects-CDwMSnqv.d.mts +0 -250
  91. package/dist/objects-DJv6WrDE.d.ts +0 -250
  92. package/dist/types-CVYiFc69.d.mts +0 -38
  93. package/dist/types-NGEww_ln.d.ts +0 -38
  94. package/dist/validation/all.d.mts +0 -11
  95. package/dist/validation/all.d.ts +0 -11
  96. package/dist/validation/all.js +0 -131
  97. package/dist/validation/all.mjs +0 -18
  98. package/dist/validation/complex/currency.d.mts +0 -15
  99. package/dist/validation/complex/currency.d.ts +0 -15
  100. package/dist/validation/complex/currency.js +0 -11
  101. package/dist/validation/complex/currency.mjs +0 -2
  102. package/dist/validation/complex/location.d.mts +0 -22
  103. package/dist/validation/complex/location.d.ts +0 -22
  104. package/dist/validation/complex/location.js +0 -11
  105. package/dist/validation/complex/location.mjs +0 -2
  106. package/dist/validation/complex/phone.d.mts +0 -22
  107. package/dist/validation/complex/phone.d.ts +0 -22
  108. package/dist/validation/complex/phone.js +0 -11
  109. package/dist/validation/complex/phone.mjs +0 -2
  110. package/dist/validation/complex/relation.d.mts +0 -25
  111. package/dist/validation/complex/relation.d.ts +0 -25
  112. package/dist/validation/complex/relation.js +0 -19
  113. package/dist/validation/complex/relation.mjs +0 -2
  114. package/dist/validation/complex/richtext.d.mts +0 -13
  115. package/dist/validation/complex/richtext.d.ts +0 -13
  116. package/dist/validation/complex/richtext.js +0 -11
  117. package/dist/validation/complex/richtext.mjs +0 -2
  118. package/dist/validation/complex/select.d.mts +0 -20
  119. package/dist/validation/complex/select.d.ts +0 -20
  120. package/dist/validation/complex/select.js +0 -19
  121. package/dist/validation/complex/select.mjs +0 -2
  122. package/dist/validation/complex/user.d.mts +0 -13
  123. package/dist/validation/complex/user.d.ts +0 -13
  124. package/dist/validation/complex/user.js +0 -11
  125. package/dist/validation/complex/user.mjs +0 -2
  126. package/dist/validation/computed/formula.d.mts +0 -14
  127. package/dist/validation/computed/formula.d.ts +0 -14
  128. package/dist/validation/computed/formula.js +0 -11
  129. package/dist/validation/computed/formula.mjs +0 -2
  130. package/dist/validation/computed/rollup.d.mts +0 -14
  131. package/dist/validation/computed/rollup.d.ts +0 -14
  132. package/dist/validation/computed/rollup.js +0 -11
  133. package/dist/validation/computed/rollup.mjs +0 -2
  134. package/dist/validation/config/index.d.mts +0 -7
  135. package/dist/validation/config/index.d.ts +0 -7
  136. package/dist/validation/config/index.js +0 -52
  137. package/dist/validation/config/index.mjs +0 -7
  138. package/dist/validation/core/index.d.mts +0 -19
  139. package/dist/validation/core/index.d.ts +0 -19
  140. package/dist/validation/core/index.js +0 -14
  141. package/dist/validation/core/index.mjs +0 -1
  142. package/dist/validation/object/index.d.mts +0 -32
  143. package/dist/validation/object/index.d.ts +0 -32
  144. package/dist/validation/object/index.js +0 -69
  145. package/dist/validation/object/index.mjs +0 -16
  146. package/dist/validation/primitives/checkbox.d.mts +0 -12
  147. package/dist/validation/primitives/checkbox.d.ts +0 -12
  148. package/dist/validation/primitives/checkbox.js +0 -11
  149. package/dist/validation/primitives/checkbox.mjs +0 -2
  150. package/dist/validation/primitives/date.d.mts +0 -25
  151. package/dist/validation/primitives/date.d.ts +0 -25
  152. package/dist/validation/primitives/date.js +0 -11
  153. package/dist/validation/primitives/date.mjs +0 -2
  154. package/dist/validation/primitives/number.d.mts +0 -12
  155. package/dist/validation/primitives/number.d.ts +0 -12
  156. package/dist/validation/primitives/number.js +0 -11
  157. package/dist/validation/primitives/number.mjs +0 -2
  158. package/dist/validation/primitives/text.d.mts +0 -12
  159. package/dist/validation/primitives/text.d.ts +0 -12
  160. package/dist/validation/primitives/text.js +0 -11
  161. package/dist/validation/primitives/text.mjs +0 -2
@@ -1,226 +0,0 @@
1
- import { createRelationValidator } from './chunk-GO6LQADH.mjs';
2
- import { createRichtextValidator } from './chunk-QVLQPW3O.mjs';
3
- import { createMultiselectValidator, createSelectValidator, createStatusValidator } from './chunk-ZDQ5AP26.mjs';
4
- import { createUserValidator } from './chunk-LV3FEUKU.mjs';
5
- import { createFormulaValidator } from './chunk-UXAHLSWC.mjs';
6
- import { createRollupValidator } from './chunk-NS63SPNN.mjs';
7
- import { createCheckboxValidator } from './chunk-OSSGN43B.mjs';
8
- import { createDateValidator } from './chunk-Q44QKLN4.mjs';
9
- import { createNumberValidator } from './chunk-UANQJ2GH.mjs';
10
- import { createTextValidator } from './chunk-O73ROMWQ.mjs';
11
- import { ValidationError } from './chunk-Z5OPSBMQ.mjs';
12
- import { createCurrencyValidator } from './chunk-AYVHMVKQ.mjs';
13
- import { createLocationValidator } from './chunk-YUFTHPOE.mjs';
14
- import { createPhoneValidator } from './chunk-R5LAJCBU.mjs';
15
- import { DEFAULT_VALIDATION_MESSAGES, formatZodErrors } from './chunk-HRQEZUAA.mjs';
16
- import { z } from 'zod';
17
-
18
- function isEmptyValue(value) {
19
- if (value === null || value === void 0) return true;
20
- if (typeof value === "string" && value.trim() === "") return true;
21
- if (value instanceof Date) return false;
22
- if (typeof value === "object" && !Array.isArray(value)) {
23
- return Object.values(value).every(
24
- (v) => v === null || v === void 0 || typeof v === "string" && v.trim() === ""
25
- );
26
- }
27
- return false;
28
- }
29
- function withEmptyToNull(validator) {
30
- return z.preprocess((val) => isEmptyValue(val) ? null : val, validator.nullish());
31
- }
32
-
33
- // src/validation/object/attribute-factory.ts
34
- function createAttributeValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
35
- switch (attr.type) {
36
- case "text":
37
- return createTextValidator(attr, messages);
38
- case "richtext":
39
- return createRichtextValidator(attr, messages);
40
- case "number":
41
- return createNumberValidator(attr, messages);
42
- case "checkbox":
43
- return createCheckboxValidator(attr, messages);
44
- case "date":
45
- return createDateValidator(attr, messages);
46
- case "phone":
47
- return createPhoneValidator(attr, messages);
48
- case "currency":
49
- return createCurrencyValidator(attr, messages);
50
- case "status":
51
- return createStatusValidator(attr, messages);
52
- case "location":
53
- return createLocationValidator(attr, messages);
54
- case "select":
55
- return createSelectValidator(attr, messages);
56
- case "multiselect":
57
- return createMultiselectValidator(attr, messages);
58
- case "user":
59
- return createUserValidator(attr, messages);
60
- case "relation":
61
- return createRelationValidator(attr, messages);
62
- case "formula":
63
- return createFormulaValidator(attr, messages);
64
- case "rollup":
65
- return createRollupValidator(attr, messages);
66
- default:
67
- return z.unknown();
68
- }
69
- }
70
- function createFormAttributeValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
71
- const validator = createAttributeValidator(attr, messages);
72
- if (!attr.required) {
73
- return withEmptyToNull(validator);
74
- }
75
- return validator;
76
- }
77
-
78
- // src/lib/empty.ts
79
- function isNullishOrEmptyString(value) {
80
- return value === null || value === void 0 || value === "";
81
- }
82
- function isValuePresent(value) {
83
- if (value === null || value === void 0) return false;
84
- if (typeof value === "string") return value.trim() !== "";
85
- if (Array.isArray(value)) return value.length > 0;
86
- return true;
87
- }
88
-
89
- // src/validation/object/object-validator.ts
90
- var objectValidatorCache = /* @__PURE__ */ new WeakMap();
91
- var draftValidatorCache = /* @__PURE__ */ new WeakMap();
92
- function createObjectValidator(objectDef) {
93
- const cached = objectValidatorCache.get(objectDef);
94
- if (cached) return cached;
95
- const shape = {};
96
- for (const attr of objectDef.attributes) {
97
- const validator = createAttributeValidator(attr);
98
- if (attr.required) {
99
- shape[attr.name] = validator.refine(isValuePresent, {
100
- message: DEFAULT_VALIDATION_MESSAGES.required(attr)
101
- });
102
- } else {
103
- shape[attr.name] = withEmptyToNull(validator);
104
- }
105
- }
106
- const schema = z.object(shape).passthrough();
107
- objectValidatorCache.set(objectDef, schema);
108
- return schema;
109
- }
110
- function createDraftValidator(objectDef) {
111
- const cached = draftValidatorCache.get(objectDef);
112
- if (cached) return cached;
113
- const shape = {};
114
- for (const attr of objectDef.attributes) {
115
- const validator = createAttributeValidator(attr);
116
- shape[attr.name] = withEmptyToNull(validator);
117
- }
118
- const schema = z.object(shape).passthrough();
119
- draftValidatorCache.set(objectDef, schema);
120
- return schema;
121
- }
122
-
123
- // src/validation/object/helpers.ts
124
- function validateAttribute(attr, value) {
125
- const validator = createAttributeValidator(attr);
126
- if (!attr.required && (value === void 0 || value === null)) {
127
- return { success: true, data: { [attr.name]: value } };
128
- }
129
- const result = validator.safeParse(value);
130
- if (result.success) {
131
- return {
132
- success: true,
133
- data: { [attr.name]: result.data }
134
- };
135
- }
136
- return {
137
- success: false,
138
- errors: formatZodErrors(result.error).map((err) => ({
139
- path: [attr.name, ...err.path],
140
- message: err.message
141
- }))
142
- };
143
- }
144
- function validateObject(objectDef, data) {
145
- const validator = createObjectValidator(objectDef);
146
- const result = validator.safeParse(data);
147
- if (result.success) {
148
- return {
149
- success: true,
150
- data: result.data
151
- };
152
- }
153
- return {
154
- success: false,
155
- errors: formatZodErrors(result.error)
156
- };
157
- }
158
- function validateObjectOrThrow(objectDef, data) {
159
- const result = validateObject(objectDef, data);
160
- if (!result.success) {
161
- const errors = result.errors ?? [];
162
- const detail = errors.map((err) => `${err.path.join(".")}: ${err.message}`).join("\n") || "Unknown validation error";
163
- throw new ValidationError(
164
- `Validation failed for ${objectDef.label}:
165
- ${detail}`,
166
- errors.map((err) => ({ path: err.path, message: err.message }))
167
- );
168
- }
169
- return result.data;
170
- }
171
- function validateDraft(objectDef, data) {
172
- const validator = createDraftValidator(objectDef);
173
- const result = validator.safeParse(data);
174
- if (result.success) {
175
- return {
176
- success: true,
177
- data: result.data
178
- };
179
- }
180
- return {
181
- success: false,
182
- errors: formatZodErrors(result.error)
183
- };
184
- }
185
- function validateDraftOrThrow(objectDef, data) {
186
- const result = validateDraft(objectDef, data);
187
- if (!result.success) {
188
- const errors = result.errors ?? [];
189
- const detail = errors.map((err) => `${err.path.join(".")}: ${err.message}`).join("\n") || "Unknown validation error";
190
- throw new ValidationError(
191
- `Draft validation failed for ${objectDef.label}:
192
- ${detail}`,
193
- errors.map((err) => ({ path: err.path, message: err.message }))
194
- );
195
- }
196
- return result.data;
197
- }
198
- function rejectUnknownAttributesOrThrow(objectDef, data) {
199
- const knownNames = new Set(objectDef.attributes.map((a) => a.name));
200
- const unknownKeys = Object.keys(data).filter((key) => !knownNames.has(key));
201
- if (unknownKeys.length > 0) {
202
- throw new ValidationError(
203
- `Unknown attribute${unknownKeys.length > 1 ? "s" : ""} for ${objectDef.label}: ${unknownKeys.join(", ")}`,
204
- unknownKeys.map((key) => ({ path: [key], message: "Unknown attribute" }))
205
- );
206
- }
207
- }
208
- function getMissingRequiredAttributes(objectDef, data) {
209
- const missing = [];
210
- for (const attr of objectDef.attributes) {
211
- if (attr.required && !isValuePresent(data[attr.name])) {
212
- missing.push(attr);
213
- }
214
- }
215
- return missing;
216
- }
217
- function isRecordComplete(objectDef, data) {
218
- const missing = getMissingRequiredAttributes(objectDef, data);
219
- if (missing.length > 0) {
220
- return false;
221
- }
222
- const validation = validateObject(objectDef, data);
223
- return validation.success;
224
- }
225
-
226
- export { createAttributeValidator, createDraftValidator, createFormAttributeValidator, createObjectValidator, getMissingRequiredAttributes, isNullishOrEmptyString, isRecordComplete, isValuePresent, rejectUnknownAttributesOrThrow, validateAttribute, validateDraft, validateDraftOrThrow, validateObject, validateObjectOrThrow };
@@ -1,15 +0,0 @@
1
- import { DEFAULT_VALIDATION_MESSAGES } from './chunk-HRQEZUAA.mjs';
2
- import { z } from 'zod';
3
-
4
- function createCurrencyValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
5
- const valueSchema = attr.allowNegative ? z.number() : z.number().min(0);
6
- return z.object(
7
- {
8
- code: z.string().length(3),
9
- value: valueSchema
10
- },
11
- { message: messages.invalidCurrency(attr) }
12
- );
13
- }
14
-
15
- export { createCurrencyValidator };
@@ -1,241 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkEEH4XQ7W_js = require('./chunk-EEH4XQ7W.js');
4
- var chunkEW5XR2X3_js = require('./chunk-EW5XR2X3.js');
5
- var chunkQWKLQRBX_js = require('./chunk-QWKLQRBX.js');
6
- var chunkKNGWHQLR_js = require('./chunk-KNGWHQLR.js');
7
- var chunkHTSTPTNZ_js = require('./chunk-HTSTPTNZ.js');
8
- var chunkV2UA2D4E_js = require('./chunk-V2UA2D4E.js');
9
- var chunk5WATIVCA_js = require('./chunk-5WATIVCA.js');
10
- var chunkSI34M4IC_js = require('./chunk-SI34M4IC.js');
11
- var chunkYIP5FJ5H_js = require('./chunk-YIP5FJ5H.js');
12
- var chunkZPFOKBIN_js = require('./chunk-ZPFOKBIN.js');
13
- var chunkY3UPKP2B_js = require('./chunk-Y3UPKP2B.js');
14
- var chunkACKMC6FL_js = require('./chunk-ACKMC6FL.js');
15
- var chunkE6JUYGJX_js = require('./chunk-E6JUYGJX.js');
16
- var chunkQ4SZAMJT_js = require('./chunk-Q4SZAMJT.js');
17
- var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
18
- var zod = require('zod');
19
-
20
- function isEmptyValue(value) {
21
- if (value === null || value === void 0) return true;
22
- if (typeof value === "string" && value.trim() === "") return true;
23
- if (value instanceof Date) return false;
24
- if (typeof value === "object" && !Array.isArray(value)) {
25
- return Object.values(value).every(
26
- (v) => v === null || v === void 0 || typeof v === "string" && v.trim() === ""
27
- );
28
- }
29
- return false;
30
- }
31
- function withEmptyToNull(validator) {
32
- return zod.z.preprocess((val) => isEmptyValue(val) ? null : val, validator.nullish());
33
- }
34
-
35
- // src/validation/object/attribute-factory.ts
36
- function createAttributeValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
37
- switch (attr.type) {
38
- case "text":
39
- return chunkZPFOKBIN_js.createTextValidator(attr, messages);
40
- case "richtext":
41
- return chunkEW5XR2X3_js.createRichtextValidator(attr, messages);
42
- case "number":
43
- return chunkYIP5FJ5H_js.createNumberValidator(attr, messages);
44
- case "checkbox":
45
- return chunk5WATIVCA_js.createCheckboxValidator(attr, messages);
46
- case "date":
47
- return chunkSI34M4IC_js.createDateValidator(attr, messages);
48
- case "phone":
49
- return chunkQ4SZAMJT_js.createPhoneValidator(attr, messages);
50
- case "currency":
51
- return chunkACKMC6FL_js.createCurrencyValidator(attr, messages);
52
- case "status":
53
- return chunkQWKLQRBX_js.createStatusValidator(attr, messages);
54
- case "location":
55
- return chunkE6JUYGJX_js.createLocationValidator(attr, messages);
56
- case "select":
57
- return chunkQWKLQRBX_js.createSelectValidator(attr, messages);
58
- case "multiselect":
59
- return chunkQWKLQRBX_js.createMultiselectValidator(attr, messages);
60
- case "user":
61
- return chunkKNGWHQLR_js.createUserValidator(attr, messages);
62
- case "relation":
63
- return chunkEEH4XQ7W_js.createRelationValidator(attr, messages);
64
- case "formula":
65
- return chunkHTSTPTNZ_js.createFormulaValidator(attr, messages);
66
- case "rollup":
67
- return chunkV2UA2D4E_js.createRollupValidator(attr, messages);
68
- default:
69
- return zod.z.unknown();
70
- }
71
- }
72
- function createFormAttributeValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
73
- const validator = createAttributeValidator(attr, messages);
74
- if (!attr.required) {
75
- return withEmptyToNull(validator);
76
- }
77
- return validator;
78
- }
79
-
80
- // src/lib/empty.ts
81
- function isNullishOrEmptyString(value) {
82
- return value === null || value === void 0 || value === "";
83
- }
84
- function isValuePresent(value) {
85
- if (value === null || value === void 0) return false;
86
- if (typeof value === "string") return value.trim() !== "";
87
- if (Array.isArray(value)) return value.length > 0;
88
- return true;
89
- }
90
-
91
- // src/validation/object/object-validator.ts
92
- var objectValidatorCache = /* @__PURE__ */ new WeakMap();
93
- var draftValidatorCache = /* @__PURE__ */ new WeakMap();
94
- function createObjectValidator(objectDef) {
95
- const cached = objectValidatorCache.get(objectDef);
96
- if (cached) return cached;
97
- const shape = {};
98
- for (const attr of objectDef.attributes) {
99
- const validator = createAttributeValidator(attr);
100
- if (attr.required) {
101
- shape[attr.name] = validator.refine(isValuePresent, {
102
- message: chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES.required(attr)
103
- });
104
- } else {
105
- shape[attr.name] = withEmptyToNull(validator);
106
- }
107
- }
108
- const schema = zod.z.object(shape).passthrough();
109
- objectValidatorCache.set(objectDef, schema);
110
- return schema;
111
- }
112
- function createDraftValidator(objectDef) {
113
- const cached = draftValidatorCache.get(objectDef);
114
- if (cached) return cached;
115
- const shape = {};
116
- for (const attr of objectDef.attributes) {
117
- const validator = createAttributeValidator(attr);
118
- shape[attr.name] = withEmptyToNull(validator);
119
- }
120
- const schema = zod.z.object(shape).passthrough();
121
- draftValidatorCache.set(objectDef, schema);
122
- return schema;
123
- }
124
-
125
- // src/validation/object/helpers.ts
126
- function validateAttribute(attr, value) {
127
- const validator = createAttributeValidator(attr);
128
- if (!attr.required && (value === void 0 || value === null)) {
129
- return { success: true, data: { [attr.name]: value } };
130
- }
131
- const result = validator.safeParse(value);
132
- if (result.success) {
133
- return {
134
- success: true,
135
- data: { [attr.name]: result.data }
136
- };
137
- }
138
- return {
139
- success: false,
140
- errors: chunkYKWSHBT5_js.formatZodErrors(result.error).map((err) => ({
141
- path: [attr.name, ...err.path],
142
- message: err.message
143
- }))
144
- };
145
- }
146
- function validateObject(objectDef, data) {
147
- const validator = createObjectValidator(objectDef);
148
- const result = validator.safeParse(data);
149
- if (result.success) {
150
- return {
151
- success: true,
152
- data: result.data
153
- };
154
- }
155
- return {
156
- success: false,
157
- errors: chunkYKWSHBT5_js.formatZodErrors(result.error)
158
- };
159
- }
160
- function validateObjectOrThrow(objectDef, data) {
161
- const result = validateObject(objectDef, data);
162
- if (!result.success) {
163
- const errors = result.errors ?? [];
164
- const detail = errors.map((err) => `${err.path.join(".")}: ${err.message}`).join("\n") || "Unknown validation error";
165
- throw new chunkY3UPKP2B_js.ValidationError(
166
- `Validation failed for ${objectDef.label}:
167
- ${detail}`,
168
- errors.map((err) => ({ path: err.path, message: err.message }))
169
- );
170
- }
171
- return result.data;
172
- }
173
- function validateDraft(objectDef, data) {
174
- const validator = createDraftValidator(objectDef);
175
- const result = validator.safeParse(data);
176
- if (result.success) {
177
- return {
178
- success: true,
179
- data: result.data
180
- };
181
- }
182
- return {
183
- success: false,
184
- errors: chunkYKWSHBT5_js.formatZodErrors(result.error)
185
- };
186
- }
187
- function validateDraftOrThrow(objectDef, data) {
188
- const result = validateDraft(objectDef, data);
189
- if (!result.success) {
190
- const errors = result.errors ?? [];
191
- const detail = errors.map((err) => `${err.path.join(".")}: ${err.message}`).join("\n") || "Unknown validation error";
192
- throw new chunkY3UPKP2B_js.ValidationError(
193
- `Draft validation failed for ${objectDef.label}:
194
- ${detail}`,
195
- errors.map((err) => ({ path: err.path, message: err.message }))
196
- );
197
- }
198
- return result.data;
199
- }
200
- function rejectUnknownAttributesOrThrow(objectDef, data) {
201
- const knownNames = new Set(objectDef.attributes.map((a) => a.name));
202
- const unknownKeys = Object.keys(data).filter((key) => !knownNames.has(key));
203
- if (unknownKeys.length > 0) {
204
- throw new chunkY3UPKP2B_js.ValidationError(
205
- `Unknown attribute${unknownKeys.length > 1 ? "s" : ""} for ${objectDef.label}: ${unknownKeys.join(", ")}`,
206
- unknownKeys.map((key) => ({ path: [key], message: "Unknown attribute" }))
207
- );
208
- }
209
- }
210
- function getMissingRequiredAttributes(objectDef, data) {
211
- const missing = [];
212
- for (const attr of objectDef.attributes) {
213
- if (attr.required && !isValuePresent(data[attr.name])) {
214
- missing.push(attr);
215
- }
216
- }
217
- return missing;
218
- }
219
- function isRecordComplete(objectDef, data) {
220
- const missing = getMissingRequiredAttributes(objectDef, data);
221
- if (missing.length > 0) {
222
- return false;
223
- }
224
- const validation = validateObject(objectDef, data);
225
- return validation.success;
226
- }
227
-
228
- exports.createAttributeValidator = createAttributeValidator;
229
- exports.createDraftValidator = createDraftValidator;
230
- exports.createFormAttributeValidator = createFormAttributeValidator;
231
- exports.createObjectValidator = createObjectValidator;
232
- exports.getMissingRequiredAttributes = getMissingRequiredAttributes;
233
- exports.isNullishOrEmptyString = isNullishOrEmptyString;
234
- exports.isRecordComplete = isRecordComplete;
235
- exports.isValuePresent = isValuePresent;
236
- exports.rejectUnknownAttributesOrThrow = rejectUnknownAttributesOrThrow;
237
- exports.validateAttribute = validateAttribute;
238
- exports.validateDraft = validateDraft;
239
- exports.validateDraftOrThrow = validateDraftOrThrow;
240
- exports.validateObject = validateObject;
241
- exports.validateObjectOrThrow = validateObjectOrThrow;
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
- var zod = require('zod');
5
-
6
- function createLocationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
7
- return zod.z.object(
8
- {
9
- address: zod.z.string().optional(),
10
- address2: zod.z.string().optional(),
11
- city: zod.z.string().optional(),
12
- state: zod.z.string().optional(),
13
- postalCode: zod.z.string().optional(),
14
- country: zod.z.string().length(3).optional(),
15
- latitude: zod.z.number().min(-90).max(90).optional(),
16
- longitude: zod.z.number().min(-180).max(180).optional()
17
- },
18
- { message: messages.invalidLocation(attr) }
19
- );
20
- }
21
-
22
- exports.createLocationValidator = createLocationValidator;
@@ -1,61 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
- var zod = require('zod');
5
-
6
- function extractRelationId(item) {
7
- if (typeof item === "object" && item !== null && "id" in item) {
8
- return item.id;
9
- }
10
- return item;
11
- }
12
- function createSingleRelationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
13
- const uuidSchema = zod.z.guid({
14
- message: messages.invalidId(attr)
15
- });
16
- const nullableUuidSchema = zod.z.union([uuidSchema, zod.z.null()]);
17
- return zod.z.union([
18
- nullableUuidSchema,
19
- zod.z.object({
20
- id: uuidSchema,
21
- props: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
22
- }).passthrough()
23
- // Allow additional properties (bilateral relations may have extra metadata)
24
- ]);
25
- }
26
- function createMultiRelationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
27
- const uuidSchema = zod.z.guid({
28
- message: messages.invalidId(attr)
29
- });
30
- const itemSchema = zod.z.union([
31
- uuidSchema,
32
- zod.z.object({
33
- id: uuidSchema,
34
- props: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
35
- }).passthrough()
36
- // Allow additional properties
37
- ]);
38
- let arraySchema = zod.z.array(itemSchema);
39
- if (attr.maxItems !== void 0) {
40
- arraySchema = arraySchema.max(attr.maxItems, messages.maxItems(attr, attr.maxItems));
41
- }
42
- return arraySchema.refine(
43
- (items) => {
44
- return items.every((item) => {
45
- const id = extractRelationId(item);
46
- return typeof id === "string" && uuidSchema.safeParse(id).success;
47
- });
48
- },
49
- { message: messages.invalidId(attr) }
50
- );
51
- }
52
- function createRelationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
53
- if (attr.cardinality === "many") {
54
- return createMultiRelationValidator(attr, messages);
55
- }
56
- return createSingleRelationValidator(attr, messages);
57
- }
58
-
59
- exports.createMultiRelationValidator = createMultiRelationValidator;
60
- exports.createRelationValidator = createRelationValidator;
61
- exports.createSingleRelationValidator = createSingleRelationValidator;
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
- var zod = require('zod');
5
-
6
- function createRichtextValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
7
- return zod.z.string({
8
- message: messages.invalidRichtext(attr)
9
- });
10
- }
11
-
12
- exports.createRichtextValidator = createRichtextValidator;
@@ -1,57 +0,0 @@
1
- import { DEFAULT_VALIDATION_MESSAGES } from './chunk-HRQEZUAA.mjs';
2
- import { z } from 'zod';
3
-
4
- function extractRelationId(item) {
5
- if (typeof item === "object" && item !== null && "id" in item) {
6
- return item.id;
7
- }
8
- return item;
9
- }
10
- function createSingleRelationValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
11
- const uuidSchema = z.guid({
12
- message: messages.invalidId(attr)
13
- });
14
- const nullableUuidSchema = z.union([uuidSchema, z.null()]);
15
- return z.union([
16
- nullableUuidSchema,
17
- z.object({
18
- id: uuidSchema,
19
- props: z.record(z.string(), z.unknown()).optional()
20
- }).passthrough()
21
- // Allow additional properties (bilateral relations may have extra metadata)
22
- ]);
23
- }
24
- function createMultiRelationValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
25
- const uuidSchema = z.guid({
26
- message: messages.invalidId(attr)
27
- });
28
- const itemSchema = z.union([
29
- uuidSchema,
30
- z.object({
31
- id: uuidSchema,
32
- props: z.record(z.string(), z.unknown()).optional()
33
- }).passthrough()
34
- // Allow additional properties
35
- ]);
36
- let arraySchema = z.array(itemSchema);
37
- if (attr.maxItems !== void 0) {
38
- arraySchema = arraySchema.max(attr.maxItems, messages.maxItems(attr, attr.maxItems));
39
- }
40
- return arraySchema.refine(
41
- (items) => {
42
- return items.every((item) => {
43
- const id = extractRelationId(item);
44
- return typeof id === "string" && uuidSchema.safeParse(id).success;
45
- });
46
- },
47
- { message: messages.invalidId(attr) }
48
- );
49
- }
50
- function createRelationValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
51
- if (attr.cardinality === "many") {
52
- return createMultiRelationValidator(attr, messages);
53
- }
54
- return createSingleRelationValidator(attr, messages);
55
- }
56
-
57
- export { createMultiRelationValidator, createRelationValidator, createSingleRelationValidator };