@stndrds/schema 1.0.0-alpha.294 → 1.0.0-alpha.296
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.
- package/LICENSE +111 -0
- package/README.md +7 -0
- package/dist/{all-Cru_CaSY.d.mts → all-BekDmUP1.d.mts} +32 -32
- package/dist/{all-CDJSpI46.d.ts → all-Bl3DlCEn.d.ts} +32 -32
- package/dist/{attributes-CWPLbp7c.d.mts → attributes-CtS5Gf_i.d.mts} +1 -1
- package/dist/{attributes-CNYwg_Nr.d.ts → attributes-SIbTof03.d.ts} +1 -1
- package/dist/capabilities.js +2 -77
- package/dist/capabilities.mjs +2 -70
- package/dist/chunk-23KPS33D.js +2 -0
- package/dist/chunk-47EGJRW7.js +4 -0
- package/dist/chunk-47KVYDKG.js +2 -0
- package/dist/chunk-4OTKOCGB.mjs +2 -0
- package/dist/chunk-4VCADZK4.mjs +2 -0
- package/dist/chunk-5QAE5NPN.js +6 -0
- package/dist/chunk-72TQRSNX.js +12 -0
- package/dist/chunk-DPD6ZWL2.js +2 -0
- package/dist/chunk-GKXTXH4Y.mjs +2 -0
- package/dist/chunk-GWAHL4A2.mjs +2 -0
- package/dist/chunk-GXSNLYRR.js +2 -0
- package/dist/chunk-JCPAOH76.mjs +2 -0
- package/dist/chunk-JFSQ24XR.js +2 -0
- package/dist/chunk-JOS2XMXY.js +2 -0
- package/dist/chunk-JVLH3DVZ.js +2 -0
- package/dist/chunk-KG2ADZG6.mjs +2 -0
- package/dist/chunk-KLR22JMC.js +2 -0
- package/dist/chunk-KSPJP74K.mjs +2 -0
- package/dist/chunk-KYPEBOPW.mjs +2 -0
- package/dist/chunk-LB4TNMZU.mjs +2 -0
- package/dist/chunk-LQYUPOWB.js +2 -0
- package/dist/chunk-LSCBR4VS.js +2 -0
- package/dist/chunk-LWSOKXPF.js +2 -0
- package/dist/chunk-O34B5KOW.mjs +2 -0
- package/dist/chunk-PFO7NWQW.mjs +2 -0
- package/dist/chunk-PT25FZ62.mjs +12 -0
- package/dist/chunk-Q7TQCRSD.mjs +2 -0
- package/dist/chunk-RFKNNT2Q.mjs +4 -0
- package/dist/chunk-SDOYGWU4.js +2 -0
- package/dist/chunk-SLYRQ72J.js +2 -0
- package/dist/chunk-UXISKZ5Y.js +2 -0
- package/dist/chunk-V43RXKN2.mjs +6 -0
- package/dist/chunk-VKFLXFPP.mjs +2 -0
- package/dist/chunk-WMQRTFOP.mjs +2 -0
- package/dist/chunk-XHEBV2HE.js +2 -0
- package/dist/chunk-XMQV2WFY.mjs +2 -0
- package/dist/chunk-XRDP2Y4J.mjs +2 -0
- package/dist/chunk-XUAP7KWK.js +2 -0
- package/dist/chunk-XXTKNIBK.js +2 -0
- package/dist/chunk-YIXNAWH6.mjs +2 -0
- package/dist/exceptions.d.mts +8 -2
- package/dist/exceptions.d.ts +8 -2
- package/dist/exceptions.js +1 -158
- package/dist/exceptions.mjs +1 -1
- package/dist/{helpers-Dul_r9rJ.d.mts → helpers-BUsoR80N.d.mts} +3 -3
- package/dist/{helpers-CXkVwpsl.d.ts → helpers-DZFOorZt.d.ts} +3 -3
- package/dist/{index-CFhPHQaI.d.ts → index-DaY37pqb.d.ts} +2 -2
- package/dist/{index-BdVnHL3F.d.mts → index-EHhbbH-p.d.mts} +2 -2
- package/dist/index.d.mts +500 -146
- package/dist/index.d.ts +500 -146
- package/dist/index.js +30 -10514
- package/dist/index.mjs +30 -9626
- package/dist/{migrations-fRvadl6i.d.mts → migrations-DRBic-QO.d.mts} +1 -1
- package/dist/{migrations-DaFneOfx.d.ts → migrations-DhQ05TqN.d.ts} +1 -1
- package/dist/{objects-DJv6WrDE.d.ts → objects-DMOfJNYg.d.ts} +2 -2
- package/dist/{objects-CDwMSnqv.d.mts → objects-KU7alqZq.d.mts} +2 -2
- package/dist/{types-NGEww_ln.d.ts → types-BNaHEz_n.d.ts} +1 -1
- package/dist/{types-CVYiFc69.d.mts → types-ldo4nJxP.d.mts} +1 -1
- package/dist/utils.js +1 -31
- package/dist/utils.mjs +1 -2
- package/dist/validation/all.d.mts +7 -7
- package/dist/validation/all.d.ts +7 -7
- package/dist/validation/all.js +1 -131
- package/dist/validation/all.mjs +1 -18
- package/dist/validation/complex/currency.d.mts +2 -2
- package/dist/validation/complex/currency.d.ts +2 -2
- package/dist/validation/complex/currency.js +1 -11
- package/dist/validation/complex/currency.mjs +1 -2
- package/dist/validation/complex/location.d.mts +2 -2
- package/dist/validation/complex/location.d.ts +2 -2
- package/dist/validation/complex/location.js +1 -11
- package/dist/validation/complex/location.mjs +1 -2
- package/dist/validation/complex/phone.d.mts +2 -2
- package/dist/validation/complex/phone.d.ts +2 -2
- package/dist/validation/complex/phone.js +1 -11
- package/dist/validation/complex/phone.mjs +1 -2
- package/dist/validation/complex/relation.d.mts +2 -2
- package/dist/validation/complex/relation.d.ts +2 -2
- package/dist/validation/complex/relation.js +1 -19
- package/dist/validation/complex/relation.mjs +1 -2
- package/dist/validation/complex/richtext.d.mts +2 -2
- package/dist/validation/complex/richtext.d.ts +2 -2
- package/dist/validation/complex/richtext.js +1 -11
- package/dist/validation/complex/richtext.mjs +1 -2
- package/dist/validation/complex/select.d.mts +2 -2
- package/dist/validation/complex/select.d.ts +2 -2
- package/dist/validation/complex/select.js +1 -19
- package/dist/validation/complex/select.mjs +1 -2
- package/dist/validation/complex/user.d.mts +2 -2
- package/dist/validation/complex/user.d.ts +2 -2
- package/dist/validation/complex/user.js +1 -11
- package/dist/validation/complex/user.mjs +1 -2
- package/dist/validation/computed/formula.d.mts +2 -2
- package/dist/validation/computed/formula.d.ts +2 -2
- package/dist/validation/computed/formula.js +1 -11
- package/dist/validation/computed/formula.mjs +1 -2
- package/dist/validation/computed/rollup.d.mts +2 -2
- package/dist/validation/computed/rollup.d.ts +2 -2
- package/dist/validation/computed/rollup.js +1 -11
- package/dist/validation/computed/rollup.mjs +1 -2
- package/dist/validation/config/index.d.mts +4 -4
- package/dist/validation/config/index.d.ts +4 -4
- package/dist/validation/config/index.js +1 -52
- package/dist/validation/config/index.mjs +1 -7
- package/dist/validation/core/index.d.mts +3 -3
- package/dist/validation/core/index.d.ts +3 -3
- package/dist/validation/core/index.js +1 -14
- package/dist/validation/core/index.mjs +1 -1
- package/dist/validation/object/index.d.mts +5 -5
- package/dist/validation/object/index.d.ts +5 -5
- package/dist/validation/object/index.js +1 -69
- package/dist/validation/object/index.mjs +1 -16
- package/dist/validation/primitives/checkbox.d.mts +2 -2
- package/dist/validation/primitives/checkbox.d.ts +2 -2
- package/dist/validation/primitives/checkbox.js +1 -11
- package/dist/validation/primitives/checkbox.mjs +1 -2
- package/dist/validation/primitives/date.d.mts +2 -2
- package/dist/validation/primitives/date.d.ts +2 -2
- package/dist/validation/primitives/date.js +1 -11
- package/dist/validation/primitives/date.mjs +1 -2
- package/dist/validation/primitives/number.d.mts +2 -2
- package/dist/validation/primitives/number.d.ts +2 -2
- package/dist/validation/primitives/number.js +1 -11
- package/dist/validation/primitives/number.mjs +1 -2
- package/dist/validation/primitives/text.d.mts +2 -2
- package/dist/validation/primitives/text.d.ts +2 -2
- package/dist/validation/primitives/text.js +1 -11
- package/dist/validation/primitives/text.mjs +1 -2
- package/package.json +7 -5
- package/dist/chunk-2WWGHULM.mjs +0 -226
- package/dist/chunk-4KMUATDG.js +0 -609
- package/dist/chunk-5WATIVCA.js +0 -10
- package/dist/chunk-ACKMC6FL.js +0 -17
- package/dist/chunk-AYVHMVKQ.mjs +0 -15
- package/dist/chunk-CLZORRMS.mjs +0 -570
- package/dist/chunk-DVXGSTWJ.js +0 -81
- package/dist/chunk-E6JUYGJX.js +0 -22
- package/dist/chunk-EEH4XQ7W.js +0 -61
- package/dist/chunk-EW5XR2X3.js +0 -12
- package/dist/chunk-GO6LQADH.mjs +0 -57
- package/dist/chunk-HRQEZUAA.mjs +0 -29
- package/dist/chunk-HTSTPTNZ.js +0 -10
- package/dist/chunk-HURC6CW3.js +0 -241
- package/dist/chunk-JZNR4HKQ.mjs +0 -1432
- package/dist/chunk-KAWYU7TE.js +0 -657
- package/dist/chunk-KNGWHQLR.js +0 -16
- package/dist/chunk-LV3FEUKU.mjs +0 -14
- package/dist/chunk-NS63SPNN.mjs +0 -8
- package/dist/chunk-O73ROMWQ.mjs +0 -85
- package/dist/chunk-OSSGN43B.mjs +0 -8
- package/dist/chunk-Q44QKLN4.mjs +0 -43
- package/dist/chunk-Q4SZAMJT.js +0 -72
- package/dist/chunk-QT35SI3K.mjs +0 -641
- package/dist/chunk-QVLQPW3O.mjs +0 -10
- package/dist/chunk-QWKLQRBX.js +0 -35
- package/dist/chunk-R2DAEDRF.mjs +0 -74
- package/dist/chunk-R5LAJCBU.mjs +0 -67
- package/dist/chunk-SI34M4IC.js +0 -45
- package/dist/chunk-T5PM73EF.js +0 -1504
- package/dist/chunk-UANQJ2GH.mjs +0 -25
- package/dist/chunk-UXAHLSWC.mjs +0 -8
- package/dist/chunk-V2UA2D4E.js +0 -10
- package/dist/chunk-YIP5FJ5H.js +0 -27
- package/dist/chunk-YKWSHBT5.js +0 -32
- package/dist/chunk-YUFTHPOE.mjs +0 -20
- package/dist/chunk-ZDQ5AP26.mjs +0 -31
- package/dist/chunk-ZPFOKBIN.js +0 -89
package/dist/chunk-2WWGHULM.mjs
DELETED
|
@@ -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-CLZORRMS.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 };
|