@stndrds/schema 1.0.0-alpha.192 → 1.0.0-alpha.194
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/dist/attributes-DP08iPCh.d.mts +889 -0
- package/dist/attributes-Ddhps_AU.d.ts +889 -0
- package/dist/{chunk-MAKSIK3P.js → chunk-5WATIVCA.js} +2 -2
- package/dist/{chunk-4KRLCWJM.mjs → chunk-6I2R22CX.mjs} +1 -1
- package/dist/{chunk-DC7YYE3U.js → chunk-ACKMC6FL.js} +2 -2
- package/dist/{chunk-TEQNVO7W.mjs → chunk-AYVHMVKQ.mjs} +1 -1
- package/dist/{chunk-P2BE2A2G.js → chunk-BV3IUMMW.js} +4 -7
- package/dist/{chunk-CCB4OY2O.js → chunk-E6JUYGJX.js} +2 -2
- package/dist/{chunk-7A3Y6O32.js → chunk-EBGRZUIH.js} +2 -2
- package/dist/{chunk-QWZHR2OO.js → chunk-EW5XR2X3.js} +2 -2
- package/dist/{chunk-UQVW4KPP.mjs → chunk-HRQEZUAA.mjs} +0 -1
- package/dist/{chunk-OAQWRMTP.js → chunk-HTSTPTNZ.js} +2 -2
- package/dist/{chunk-U4JC7P6D.mjs → chunk-HXDDJLHD.mjs} +37 -52
- package/dist/{chunk-Z75P63VF.mjs → chunk-JUKLL5RJ.mjs} +1 -1
- package/dist/{chunk-YQROI4IE.js → chunk-M5QIBMIH.js} +37 -52
- package/dist/{chunk-FQ2ZYOVS.js → chunk-MZOEL7FN.js} +47 -41
- package/dist/{chunk-KWVCGQ7N.mjs → chunk-NOMHDOVE.mjs} +2 -5
- package/dist/{chunk-OLJLCVNY.mjs → chunk-NS63SPNN.mjs} +1 -1
- package/dist/{chunk-J5HRK3WD.js → chunk-O44XVGHE.js} +2 -2
- package/dist/{chunk-TMYBEXBT.mjs → chunk-OSSGN43B.mjs} +1 -1
- package/dist/{chunk-LTHSU4NF.mjs → chunk-PMKCDRRO.mjs} +26 -21
- package/dist/{chunk-4TC27SMF.mjs → chunk-QEZUDVTN.mjs} +1 -1
- package/dist/{chunk-BLXQGQLK.mjs → chunk-QVLQPW3O.mjs} +1 -1
- package/dist/{chunk-EZHMVZQ4.js → chunk-QWKLQRBX.js} +4 -4
- package/dist/{chunk-ROAZLZA2.js → chunk-ROLWVTU3.js} +2 -2
- package/dist/{chunk-3JINFUN3.js → chunk-SGSGREPG.js} +2 -6
- package/dist/{chunk-VXOTYFEW.js → chunk-T6L2MUG2.js} +2 -2
- package/dist/{chunk-KNYZH2WD.mjs → chunk-UANQJ2GH.mjs} +8 -1
- package/dist/{chunk-IRTRJH37.mjs → chunk-UXAHLSWC.mjs} +1 -1
- package/dist/{chunk-ACQ3TUFK.js → chunk-V2UA2D4E.js} +2 -2
- package/dist/{chunk-R4CJHCC4.mjs → chunk-XZ5RG2OG.mjs} +1 -4
- package/dist/{chunk-TKN73433.js → chunk-YIP5FJ5H.js} +9 -2
- package/dist/{chunk-T225DB55.js → chunk-YKWSHBT5.js} +0 -1
- package/dist/{chunk-TBYXYSGA.mjs → chunk-YUFTHPOE.mjs} +1 -1
- package/dist/{chunk-ITTQ4FGR.mjs → chunk-ZDMOXF3U.mjs} +1 -1
- package/dist/{chunk-SMOHDR6M.mjs → chunk-ZDQ5AP26.mjs} +1 -1
- package/dist/{helpers-Y9rNQ6sz.d.ts → helpers-Bph8AoY7.d.mts} +15 -3
- package/dist/{helpers-HrKmSkLi.d.mts → helpers-D9klos6x.d.ts} +15 -3
- package/dist/index.d.mts +1121 -235
- package/dist/index.d.ts +1121 -235
- package/dist/index.js +2369 -854
- package/dist/index.mjs +2264 -774
- package/dist/{types-Bdlhgrf7.d.ts → types-D38kriFw.d.mts} +1 -2
- package/dist/{types-C5DittlR.d.mts → types-iKvYBe6v.d.ts} +1 -2
- package/dist/validation/all.d.mts +3 -3
- package/dist/validation/all.d.ts +3 -3
- package/dist/validation/all.js +30 -27
- package/dist/validation/all.mjs +17 -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 +3 -3
- package/dist/validation/complex/currency.mjs +2 -2
- package/dist/validation/complex/file.d.mts +2 -2
- package/dist/validation/complex/file.d.ts +2 -2
- package/dist/validation/complex/file.js +3 -3
- package/dist/validation/complex/file.mjs +2 -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 +3 -3
- package/dist/validation/complex/location.mjs +2 -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 +3 -3
- package/dist/validation/complex/phone.mjs +2 -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 +5 -5
- package/dist/validation/complex/relation.mjs +2 -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 +3 -3
- package/dist/validation/complex/richtext.mjs +2 -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 +5 -5
- package/dist/validation/complex/select.mjs +2 -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 +3 -3
- package/dist/validation/complex/user.mjs +2 -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 +3 -3
- package/dist/validation/computed/formula.mjs +2 -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 +3 -3
- package/dist/validation/computed/rollup.mjs +2 -2
- package/dist/validation/config/index.d.mts +1 -1
- package/dist/validation/config/index.d.ts +1 -1
- package/dist/validation/config/index.js +4 -4
- package/dist/validation/config/index.mjs +1 -1
- package/dist/validation/core/index.d.mts +3 -3
- package/dist/validation/core/index.d.ts +3 -3
- package/dist/validation/core/index.js +3 -3
- package/dist/validation/core/index.mjs +1 -1
- package/dist/validation/object/index.d.mts +3 -3
- package/dist/validation/object/index.d.ts +3 -3
- package/dist/validation/object/index.js +32 -29
- package/dist/validation/object/index.mjs +16 -17
- package/dist/validation/primitives/checkbox.d.mts +2 -2
- package/dist/validation/primitives/checkbox.d.ts +2 -2
- package/dist/validation/primitives/checkbox.js +3 -3
- package/dist/validation/primitives/checkbox.mjs +2 -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 +3 -3
- package/dist/validation/primitives/date.mjs +2 -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 +3 -3
- package/dist/validation/primitives/number.mjs +2 -2
- package/dist/validation/primitives/text.d.mts +3 -8
- package/dist/validation/primitives/text.d.ts +3 -8
- package/dist/validation/primitives/text.js +3 -7
- package/dist/validation/primitives/text.mjs +2 -2
- package/package.json +2 -13
- package/dist/chunk-D7WFIGXW.js +0 -14
- package/dist/chunk-RUYUFXNW.mjs +0 -12
- package/dist/filters-DVBn5tov.d.ts +0 -1630
- package/dist/filters-HDG4kLoo.d.mts +0 -1630
- package/dist/validation/primitives/rating.d.mts +0 -12
- package/dist/validation/primitives/rating.d.ts +0 -12
- package/dist/validation/primitives/rating.js +0 -11
- package/dist/validation/primitives/rating.mjs +0 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
|
-
function createCheckboxValidator(_attr, _messages =
|
|
6
|
+
function createCheckboxValidator(_attr, _messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
7
7
|
return zod.z.boolean();
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
|
-
function createCurrencyValidator(attr, messages =
|
|
6
|
+
function createCurrencyValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
7
7
|
const valueSchema = attr.allowNegative ? zod.z.number() : zod.z.number().min(0);
|
|
8
8
|
return zod.z.object(
|
|
9
9
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
6
|
function extractRelationId(item) {
|
|
@@ -9,7 +9,7 @@ function extractRelationId(item) {
|
|
|
9
9
|
}
|
|
10
10
|
return item;
|
|
11
11
|
}
|
|
12
|
-
function createSingleRelationValidator(attr, messages =
|
|
12
|
+
function createSingleRelationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
13
13
|
const uuidSchema = zod.z.uuid({
|
|
14
14
|
message: messages.invalidId(attr)
|
|
15
15
|
});
|
|
@@ -23,7 +23,7 @@ function createSingleRelationValidator(attr, messages = chunkT225DB55_js.DEFAULT
|
|
|
23
23
|
// Allow additional properties (bilateral relations may have extra metadata)
|
|
24
24
|
]);
|
|
25
25
|
}
|
|
26
|
-
function createMultiRelationValidator(attr, messages =
|
|
26
|
+
function createMultiRelationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
27
27
|
const uuidSchema = zod.z.uuid({
|
|
28
28
|
message: messages.invalidId(attr)
|
|
29
29
|
});
|
|
@@ -36,9 +36,6 @@ function createMultiRelationValidator(attr, messages = chunkT225DB55_js.DEFAULT_
|
|
|
36
36
|
// Allow additional properties
|
|
37
37
|
]);
|
|
38
38
|
let arraySchema = zod.z.array(itemSchema);
|
|
39
|
-
if (attr.minItems !== void 0) {
|
|
40
|
-
arraySchema = arraySchema.min(attr.minItems, messages.minItems(attr, attr.minItems));
|
|
41
|
-
}
|
|
42
39
|
if (attr.maxItems !== void 0) {
|
|
43
40
|
arraySchema = arraySchema.max(attr.maxItems, messages.maxItems(attr, attr.maxItems));
|
|
44
41
|
}
|
|
@@ -52,7 +49,7 @@ function createMultiRelationValidator(attr, messages = chunkT225DB55_js.DEFAULT_
|
|
|
52
49
|
{ message: messages.invalidId(attr) }
|
|
53
50
|
);
|
|
54
51
|
}
|
|
55
|
-
function createRelationValidator(attr, messages =
|
|
52
|
+
function createRelationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
56
53
|
if (attr.cardinality === "many") {
|
|
57
54
|
return createMultiRelationValidator(attr, messages);
|
|
58
55
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
|
-
function createLocationValidator(attr, messages =
|
|
6
|
+
function createLocationValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
7
7
|
return zod.z.object(
|
|
8
8
|
{
|
|
9
9
|
address: zod.z.string().optional(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var constants = require('@stndrds/constants');
|
|
5
5
|
var zod = require('zod');
|
|
6
6
|
var libphonenumberJs = require('libphonenumber-js');
|
|
@@ -48,7 +48,7 @@ function formatPhoneForDisplay(phone) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
// src/validation/complex/phone.ts
|
|
51
|
-
function createPhoneValidator(attr, messages =
|
|
51
|
+
function createPhoneValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
52
52
|
return zod.z.object(
|
|
53
53
|
{
|
|
54
54
|
countryCode: zod.z.string().length(3),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
|
-
function createRichtextValidator(attr, messages =
|
|
6
|
+
function createRichtextValidator(attr, messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
7
7
|
return zod.z.string({
|
|
8
8
|
message: messages.invalidRichtext(attr)
|
|
9
9
|
});
|
|
@@ -11,7 +11,6 @@ var DEFAULT_VALIDATION_MESSAGES = {
|
|
|
11
11
|
invalidDate: (attr) => `${attr.label} must be a valid date`,
|
|
12
12
|
invalidOption: (attr, options) => `${attr.label} must be one of: ${options.join(", ")}`,
|
|
13
13
|
invalidId: (attr) => `${attr.label} must be a valid ID`,
|
|
14
|
-
minItems: (attr, min) => `${attr.label} must have at least ${min} item${min > 1 ? "s" : ""}`,
|
|
15
14
|
maxItems: (attr, max) => `${attr.label} must have at most ${max} item${max > 1 ? "s" : ""}`,
|
|
16
15
|
invalidRichtext: (attr) => `${attr.label} must be valid rich text content`,
|
|
17
16
|
invalidPhone: (attr) => `${attr.label} must be a valid phone number`,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
|
-
function createFormulaValidator(_attr, _messages =
|
|
6
|
+
function createFormulaValidator(_attr, _messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
|
|
7
7
|
return zod.z.unknown();
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -2,7 +2,6 @@ import { z } from 'zod';
|
|
|
2
2
|
|
|
3
3
|
// src/validation/config/schemas.ts
|
|
4
4
|
var baseConfigSchema = z.object({
|
|
5
|
-
disabled: z.boolean().optional(),
|
|
6
5
|
placeholder: z.string().optional(),
|
|
7
6
|
description: z.string().optional(),
|
|
8
7
|
defaultValue: z.unknown().optional(),
|
|
@@ -14,15 +13,14 @@ var baseConfigSchema = z.object({
|
|
|
14
13
|
metadata: z.record(z.string(), z.unknown()).optional()
|
|
15
14
|
});
|
|
16
15
|
var optionSchema = z.object({
|
|
17
|
-
id: z.string().min(1),
|
|
18
|
-
label: z.string().min(1),
|
|
19
16
|
value: z.string().min(1),
|
|
17
|
+
label: z.string().min(1),
|
|
20
18
|
color: z.string().optional(),
|
|
21
|
-
icon: z.string().optional(),
|
|
22
19
|
description: z.string().optional(),
|
|
23
20
|
group: z.enum(["idle", "in_progress", "finished"]).optional(),
|
|
24
|
-
inverse: z.string().optional()
|
|
25
|
-
|
|
21
|
+
inverse: z.string().optional(),
|
|
22
|
+
archived: z.boolean().optional()
|
|
23
|
+
}).strict();
|
|
26
24
|
var optionsArraySchema = z.array(optionSchema).min(1).refine(
|
|
27
25
|
(options) => {
|
|
28
26
|
const values = options.map((o) => o.value);
|
|
@@ -35,22 +33,31 @@ var relationTargetSchema = z.object({
|
|
|
35
33
|
displayTemplate: z.string().optional(),
|
|
36
34
|
filter: z.record(z.string(), z.unknown()).optional()
|
|
37
35
|
});
|
|
36
|
+
var bilateralConfigSchema = z.object({
|
|
37
|
+
object: z.string().min(1),
|
|
38
|
+
attribute: z.string().min(1),
|
|
39
|
+
cardinality: z.enum(["one", "many"]).optional(),
|
|
40
|
+
storageOwner: z.boolean().optional()
|
|
41
|
+
});
|
|
42
|
+
var computedOptionsSourceSchema = z.object({
|
|
43
|
+
objectName: z.string().min(1),
|
|
44
|
+
attributeName: z.string().min(1),
|
|
45
|
+
attributeId: z.string().optional()
|
|
46
|
+
});
|
|
38
47
|
var textConfigSchema = baseConfigSchema.extend({
|
|
48
|
+
multiline: z.boolean().optional(),
|
|
39
49
|
minLength: z.number().int().min(0).optional(),
|
|
40
50
|
maxLength: z.number().int().min(1).optional(),
|
|
41
|
-
pattern: z.string().optional()
|
|
42
|
-
|
|
43
|
-
var textareaConfigSchema = baseConfigSchema;
|
|
44
|
-
var richtextConfigSchema = baseConfigSchema.extend({
|
|
45
|
-
features: z.array(
|
|
46
|
-
z.enum(["headings", "bold", "italic", "lists", "links", "images", "codeBlocks", "tables"])
|
|
47
|
-
).optional()
|
|
51
|
+
pattern: z.string().optional(),
|
|
52
|
+
format: z.enum(["email", "url", "slug"]).optional()
|
|
48
53
|
});
|
|
54
|
+
var richtextConfigSchema = baseConfigSchema;
|
|
49
55
|
var numberConfigSchema = baseConfigSchema.extend({
|
|
56
|
+
renderAs: z.enum(["number", "rating"]).optional(),
|
|
50
57
|
min: z.number().optional(),
|
|
51
58
|
max: z.number().optional(),
|
|
52
59
|
unit: z.enum(["integer", "decimal", "percentage"]).optional(),
|
|
53
|
-
decimals: z.number().int().min(0).optional()
|
|
60
|
+
decimals: z.number().int().min(0).max(10).optional()
|
|
54
61
|
});
|
|
55
62
|
var checkboxConfigSchema = baseConfigSchema;
|
|
56
63
|
var dateConfigSchema = baseConfigSchema.extend({
|
|
@@ -63,18 +70,16 @@ var phoneConfigSchema = baseConfigSchema.extend({
|
|
|
63
70
|
});
|
|
64
71
|
var currencyConfigSchema = baseConfigSchema.extend({
|
|
65
72
|
defaultCurrency: z.string().length(3).optional(),
|
|
66
|
-
allowedCurrencies: z.array(z.string().length(3)).optional()
|
|
73
|
+
allowedCurrencies: z.array(z.string().length(3)).optional(),
|
|
74
|
+
allowNegative: z.boolean().optional()
|
|
67
75
|
});
|
|
68
76
|
var statusConfigSchema = baseConfigSchema.extend({
|
|
69
77
|
options: optionsArraySchema
|
|
70
78
|
});
|
|
71
79
|
var locationConfigSchema = baseConfigSchema.extend({
|
|
72
|
-
granularity: z.enum(["full", "address", "city", "state", "country", "coordinates"]),
|
|
73
|
-
enableAutocomplete: z.boolean().optional(),
|
|
74
|
-
enableMap: z.boolean().optional(),
|
|
80
|
+
granularity: z.enum(["full", "address", "city", "state", "country", "coordinates"]).optional(),
|
|
75
81
|
defaultCountry: z.string().length(3).optional(),
|
|
76
|
-
allowedCountries: z.array(z.string().length(3)).optional()
|
|
77
|
-
displayFormat: z.enum(["single_line", "multi_line", "compact"]).optional()
|
|
82
|
+
allowedCountries: z.array(z.string().length(3)).optional()
|
|
78
83
|
});
|
|
79
84
|
var selectConfigSchema = baseConfigSchema.extend({
|
|
80
85
|
options: optionsArraySchema
|
|
@@ -89,14 +94,14 @@ var fileConfigSchema = baseConfigSchema.extend({
|
|
|
89
94
|
multiple: z.boolean().optional()
|
|
90
95
|
});
|
|
91
96
|
var userConfigSchema = baseConfigSchema.extend({
|
|
92
|
-
|
|
97
|
+
types: z.array(z.enum(["user", "agent"])).min(1).optional(),
|
|
93
98
|
multiple: z.boolean().optional()
|
|
94
99
|
});
|
|
95
100
|
var relationConfigSchema = baseConfigSchema.extend({
|
|
96
101
|
targets: z.array(relationTargetSchema).min(1),
|
|
97
102
|
cardinality: z.enum(["one", "many"]),
|
|
98
|
-
minItems: z.number().int().min(0).optional(),
|
|
99
103
|
maxItems: z.number().int().min(1).optional(),
|
|
104
|
+
bilateral: bilateralConfigSchema.optional(),
|
|
100
105
|
/**
|
|
101
106
|
* PropertySchema declared via `.qualifyWith()`. Pass-through; structural
|
|
102
107
|
* validation happens at the builder level — see `propertySchemaPassthrough`
|
|
@@ -104,15 +109,12 @@ var relationConfigSchema = baseConfigSchema.extend({
|
|
|
104
109
|
*/
|
|
105
110
|
properties: z.object({ definitions: z.array(z.record(z.string(), z.unknown())) }).passthrough().optional()
|
|
106
111
|
});
|
|
107
|
-
var ratingConfigSchema = baseConfigSchema.extend({
|
|
108
|
-
max: z.number().int().min(1).optional(),
|
|
109
|
-
iconType: z.enum(["star", "heart", "thumbs", "number"]).optional()
|
|
110
|
-
});
|
|
111
112
|
var formulaConfigSchema = baseConfigSchema.extend({
|
|
112
113
|
expression: z.string().min(1),
|
|
113
|
-
returnType: z.enum(["text", "number", "boolean", "date"]),
|
|
114
|
+
returnType: z.enum(["text", "number", "boolean", "date", "select", "multiselect"]),
|
|
114
115
|
decimals: z.number().int().min(0).max(10).optional(),
|
|
115
|
-
allowRelations: z.boolean().optional()
|
|
116
|
+
allowRelations: z.boolean().optional(),
|
|
117
|
+
optionsSource: computedOptionsSourceSchema.optional()
|
|
116
118
|
});
|
|
117
119
|
var rollupConfigSchema = baseConfigSchema.extend({
|
|
118
120
|
relationAttribute: z.string().min(1).optional(),
|
|
@@ -133,20 +135,10 @@ var rollupConfigSchema = baseConfigSchema.extend({
|
|
|
133
135
|
]),
|
|
134
136
|
decimals: z.number().int().min(0).max(10).optional(),
|
|
135
137
|
targetAttributeType: z.string().optional(),
|
|
136
|
-
targetAttributeOptions: z.array(
|
|
137
|
-
|
|
138
|
-
id: z.string(),
|
|
139
|
-
label: z.string(),
|
|
140
|
-
value: z.string(),
|
|
141
|
-
color: z.string().optional(),
|
|
142
|
-
icon: z.string().optional(),
|
|
143
|
-
description: z.string().optional(),
|
|
144
|
-
group: z.enum(["idle", "in_progress", "finished"]).optional()
|
|
145
|
-
})
|
|
146
|
-
).optional()
|
|
138
|
+
targetAttributeOptions: z.array(optionSchema).optional(),
|
|
139
|
+
optionsSource: computedOptionsSourceSchema.optional()
|
|
147
140
|
});
|
|
148
141
|
var propertySchemaPassthrough = z.object({ definitions: z.array(z.record(z.string(), z.unknown())) }).passthrough();
|
|
149
|
-
var attributePassthrough = z.record(z.string(), z.unknown());
|
|
150
142
|
var documentSlotConfigPassthrough = z.object({
|
|
151
143
|
name: z.string(),
|
|
152
144
|
label: z.string().optional(),
|
|
@@ -156,26 +148,16 @@ var documentSlotConfigPassthrough = z.object({
|
|
|
156
148
|
maxSizeBytes: z.number().optional()
|
|
157
149
|
}).passthrough();
|
|
158
150
|
var documentConfigSchema = baseConfigSchema.extend({
|
|
159
|
-
multiple: z.boolean().optional(),
|
|
160
|
-
maxDocuments: z.number().int().min(1).optional(),
|
|
161
|
-
autoProcess: z.boolean().optional(),
|
|
162
151
|
/**
|
|
163
152
|
* PropertySchema declared via `.qualifyWith()` on a document attribute.
|
|
164
153
|
* Drives hydration into `[{id, props}]` shape and write-time validation.
|
|
165
154
|
*/
|
|
166
155
|
properties: propertySchemaPassthrough.optional(),
|
|
167
|
-
/**
|
|
168
|
-
* Legacy per-document attribute definitions via `.attribute(...)`.
|
|
169
|
-
* Kept for backward compatibility; the builder also mirrors property-typed
|
|
170
|
-
* entries into `properties.definitions`.
|
|
171
|
-
*/
|
|
172
|
-
attributes: z.array(attributePassthrough).optional(),
|
|
173
156
|
/** File slots declared via `.slots(...)`. */
|
|
174
157
|
slots: z.array(documentSlotConfigPassthrough).optional()
|
|
175
158
|
});
|
|
176
159
|
var attributeConfigSchemas = {
|
|
177
160
|
text: textConfigSchema,
|
|
178
|
-
textarea: textareaConfigSchema,
|
|
179
161
|
richtext: richtextConfigSchema,
|
|
180
162
|
number: numberConfigSchema,
|
|
181
163
|
checkbox: checkboxConfigSchema,
|
|
@@ -189,13 +171,16 @@ var attributeConfigSchemas = {
|
|
|
189
171
|
file: fileConfigSchema,
|
|
190
172
|
user: userConfigSchema,
|
|
191
173
|
relation: relationConfigSchema,
|
|
192
|
-
rating: ratingConfigSchema,
|
|
193
174
|
formula: formulaConfigSchema,
|
|
194
175
|
rollup: rollupConfigSchema,
|
|
195
176
|
document: documentConfigSchema
|
|
196
177
|
};
|
|
197
178
|
function getAttributeConfigSchema(type) {
|
|
198
|
-
|
|
179
|
+
const schema = attributeConfigSchemas[type];
|
|
180
|
+
if (!schema) {
|
|
181
|
+
throw new Error(`Unsupported attribute type: ${type}`);
|
|
182
|
+
}
|
|
183
|
+
return schema;
|
|
199
184
|
}
|
|
200
185
|
function parseAttributeConfig(type, config) {
|
|
201
186
|
const schema = getAttributeConfigSchema(type);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_VALIDATION_MESSAGES } from './chunk-
|
|
1
|
+
import { DEFAULT_VALIDATION_MESSAGES } from './chunk-HRQEZUAA.mjs';
|
|
2
2
|
import { getCountryByIso3, isValidIso3, stripTrunkPrefix } from '@stndrds/constants';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { parsePhoneNumberFromString } from 'libphonenumber-js';
|
|
@@ -4,7 +4,6 @@ var zod = require('zod');
|
|
|
4
4
|
|
|
5
5
|
// src/validation/config/schemas.ts
|
|
6
6
|
var baseConfigSchema = zod.z.object({
|
|
7
|
-
disabled: zod.z.boolean().optional(),
|
|
8
7
|
placeholder: zod.z.string().optional(),
|
|
9
8
|
description: zod.z.string().optional(),
|
|
10
9
|
defaultValue: zod.z.unknown().optional(),
|
|
@@ -16,15 +15,14 @@ var baseConfigSchema = zod.z.object({
|
|
|
16
15
|
metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
17
16
|
});
|
|
18
17
|
var optionSchema = zod.z.object({
|
|
19
|
-
id: zod.z.string().min(1),
|
|
20
|
-
label: zod.z.string().min(1),
|
|
21
18
|
value: zod.z.string().min(1),
|
|
19
|
+
label: zod.z.string().min(1),
|
|
22
20
|
color: zod.z.string().optional(),
|
|
23
|
-
icon: zod.z.string().optional(),
|
|
24
21
|
description: zod.z.string().optional(),
|
|
25
22
|
group: zod.z.enum(["idle", "in_progress", "finished"]).optional(),
|
|
26
|
-
inverse: zod.z.string().optional()
|
|
27
|
-
|
|
23
|
+
inverse: zod.z.string().optional(),
|
|
24
|
+
archived: zod.z.boolean().optional()
|
|
25
|
+
}).strict();
|
|
28
26
|
var optionsArraySchema = zod.z.array(optionSchema).min(1).refine(
|
|
29
27
|
(options) => {
|
|
30
28
|
const values = options.map((o) => o.value);
|
|
@@ -37,22 +35,31 @@ var relationTargetSchema = zod.z.object({
|
|
|
37
35
|
displayTemplate: zod.z.string().optional(),
|
|
38
36
|
filter: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
39
37
|
});
|
|
38
|
+
var bilateralConfigSchema = zod.z.object({
|
|
39
|
+
object: zod.z.string().min(1),
|
|
40
|
+
attribute: zod.z.string().min(1),
|
|
41
|
+
cardinality: zod.z.enum(["one", "many"]).optional(),
|
|
42
|
+
storageOwner: zod.z.boolean().optional()
|
|
43
|
+
});
|
|
44
|
+
var computedOptionsSourceSchema = zod.z.object({
|
|
45
|
+
objectName: zod.z.string().min(1),
|
|
46
|
+
attributeName: zod.z.string().min(1),
|
|
47
|
+
attributeId: zod.z.string().optional()
|
|
48
|
+
});
|
|
40
49
|
var textConfigSchema = baseConfigSchema.extend({
|
|
50
|
+
multiline: zod.z.boolean().optional(),
|
|
41
51
|
minLength: zod.z.number().int().min(0).optional(),
|
|
42
52
|
maxLength: zod.z.number().int().min(1).optional(),
|
|
43
|
-
pattern: zod.z.string().optional()
|
|
44
|
-
|
|
45
|
-
var textareaConfigSchema = baseConfigSchema;
|
|
46
|
-
var richtextConfigSchema = baseConfigSchema.extend({
|
|
47
|
-
features: zod.z.array(
|
|
48
|
-
zod.z.enum(["headings", "bold", "italic", "lists", "links", "images", "codeBlocks", "tables"])
|
|
49
|
-
).optional()
|
|
53
|
+
pattern: zod.z.string().optional(),
|
|
54
|
+
format: zod.z.enum(["email", "url", "slug"]).optional()
|
|
50
55
|
});
|
|
56
|
+
var richtextConfigSchema = baseConfigSchema;
|
|
51
57
|
var numberConfigSchema = baseConfigSchema.extend({
|
|
58
|
+
renderAs: zod.z.enum(["number", "rating"]).optional(),
|
|
52
59
|
min: zod.z.number().optional(),
|
|
53
60
|
max: zod.z.number().optional(),
|
|
54
61
|
unit: zod.z.enum(["integer", "decimal", "percentage"]).optional(),
|
|
55
|
-
decimals: zod.z.number().int().min(0).optional()
|
|
62
|
+
decimals: zod.z.number().int().min(0).max(10).optional()
|
|
56
63
|
});
|
|
57
64
|
var checkboxConfigSchema = baseConfigSchema;
|
|
58
65
|
var dateConfigSchema = baseConfigSchema.extend({
|
|
@@ -65,18 +72,16 @@ var phoneConfigSchema = baseConfigSchema.extend({
|
|
|
65
72
|
});
|
|
66
73
|
var currencyConfigSchema = baseConfigSchema.extend({
|
|
67
74
|
defaultCurrency: zod.z.string().length(3).optional(),
|
|
68
|
-
allowedCurrencies: zod.z.array(zod.z.string().length(3)).optional()
|
|
75
|
+
allowedCurrencies: zod.z.array(zod.z.string().length(3)).optional(),
|
|
76
|
+
allowNegative: zod.z.boolean().optional()
|
|
69
77
|
});
|
|
70
78
|
var statusConfigSchema = baseConfigSchema.extend({
|
|
71
79
|
options: optionsArraySchema
|
|
72
80
|
});
|
|
73
81
|
var locationConfigSchema = baseConfigSchema.extend({
|
|
74
|
-
granularity: zod.z.enum(["full", "address", "city", "state", "country", "coordinates"]),
|
|
75
|
-
enableAutocomplete: zod.z.boolean().optional(),
|
|
76
|
-
enableMap: zod.z.boolean().optional(),
|
|
82
|
+
granularity: zod.z.enum(["full", "address", "city", "state", "country", "coordinates"]).optional(),
|
|
77
83
|
defaultCountry: zod.z.string().length(3).optional(),
|
|
78
|
-
allowedCountries: zod.z.array(zod.z.string().length(3)).optional()
|
|
79
|
-
displayFormat: zod.z.enum(["single_line", "multi_line", "compact"]).optional()
|
|
84
|
+
allowedCountries: zod.z.array(zod.z.string().length(3)).optional()
|
|
80
85
|
});
|
|
81
86
|
var selectConfigSchema = baseConfigSchema.extend({
|
|
82
87
|
options: optionsArraySchema
|
|
@@ -91,14 +96,14 @@ var fileConfigSchema = baseConfigSchema.extend({
|
|
|
91
96
|
multiple: zod.z.boolean().optional()
|
|
92
97
|
});
|
|
93
98
|
var userConfigSchema = baseConfigSchema.extend({
|
|
94
|
-
|
|
99
|
+
types: zod.z.array(zod.z.enum(["user", "agent"])).min(1).optional(),
|
|
95
100
|
multiple: zod.z.boolean().optional()
|
|
96
101
|
});
|
|
97
102
|
var relationConfigSchema = baseConfigSchema.extend({
|
|
98
103
|
targets: zod.z.array(relationTargetSchema).min(1),
|
|
99
104
|
cardinality: zod.z.enum(["one", "many"]),
|
|
100
|
-
minItems: zod.z.number().int().min(0).optional(),
|
|
101
105
|
maxItems: zod.z.number().int().min(1).optional(),
|
|
106
|
+
bilateral: bilateralConfigSchema.optional(),
|
|
102
107
|
/**
|
|
103
108
|
* PropertySchema declared via `.qualifyWith()`. Pass-through; structural
|
|
104
109
|
* validation happens at the builder level — see `propertySchemaPassthrough`
|
|
@@ -106,15 +111,12 @@ var relationConfigSchema = baseConfigSchema.extend({
|
|
|
106
111
|
*/
|
|
107
112
|
properties: zod.z.object({ definitions: zod.z.array(zod.z.record(zod.z.string(), zod.z.unknown())) }).passthrough().optional()
|
|
108
113
|
});
|
|
109
|
-
var ratingConfigSchema = baseConfigSchema.extend({
|
|
110
|
-
max: zod.z.number().int().min(1).optional(),
|
|
111
|
-
iconType: zod.z.enum(["star", "heart", "thumbs", "number"]).optional()
|
|
112
|
-
});
|
|
113
114
|
var formulaConfigSchema = baseConfigSchema.extend({
|
|
114
115
|
expression: zod.z.string().min(1),
|
|
115
|
-
returnType: zod.z.enum(["text", "number", "boolean", "date"]),
|
|
116
|
+
returnType: zod.z.enum(["text", "number", "boolean", "date", "select", "multiselect"]),
|
|
116
117
|
decimals: zod.z.number().int().min(0).max(10).optional(),
|
|
117
|
-
allowRelations: zod.z.boolean().optional()
|
|
118
|
+
allowRelations: zod.z.boolean().optional(),
|
|
119
|
+
optionsSource: computedOptionsSourceSchema.optional()
|
|
118
120
|
});
|
|
119
121
|
var rollupConfigSchema = baseConfigSchema.extend({
|
|
120
122
|
relationAttribute: zod.z.string().min(1).optional(),
|
|
@@ -135,20 +137,10 @@ var rollupConfigSchema = baseConfigSchema.extend({
|
|
|
135
137
|
]),
|
|
136
138
|
decimals: zod.z.number().int().min(0).max(10).optional(),
|
|
137
139
|
targetAttributeType: zod.z.string().optional(),
|
|
138
|
-
targetAttributeOptions: zod.z.array(
|
|
139
|
-
|
|
140
|
-
id: zod.z.string(),
|
|
141
|
-
label: zod.z.string(),
|
|
142
|
-
value: zod.z.string(),
|
|
143
|
-
color: zod.z.string().optional(),
|
|
144
|
-
icon: zod.z.string().optional(),
|
|
145
|
-
description: zod.z.string().optional(),
|
|
146
|
-
group: zod.z.enum(["idle", "in_progress", "finished"]).optional()
|
|
147
|
-
})
|
|
148
|
-
).optional()
|
|
140
|
+
targetAttributeOptions: zod.z.array(optionSchema).optional(),
|
|
141
|
+
optionsSource: computedOptionsSourceSchema.optional()
|
|
149
142
|
});
|
|
150
143
|
var propertySchemaPassthrough = zod.z.object({ definitions: zod.z.array(zod.z.record(zod.z.string(), zod.z.unknown())) }).passthrough();
|
|
151
|
-
var attributePassthrough = zod.z.record(zod.z.string(), zod.z.unknown());
|
|
152
144
|
var documentSlotConfigPassthrough = zod.z.object({
|
|
153
145
|
name: zod.z.string(),
|
|
154
146
|
label: zod.z.string().optional(),
|
|
@@ -158,26 +150,16 @@ var documentSlotConfigPassthrough = zod.z.object({
|
|
|
158
150
|
maxSizeBytes: zod.z.number().optional()
|
|
159
151
|
}).passthrough();
|
|
160
152
|
var documentConfigSchema = baseConfigSchema.extend({
|
|
161
|
-
multiple: zod.z.boolean().optional(),
|
|
162
|
-
maxDocuments: zod.z.number().int().min(1).optional(),
|
|
163
|
-
autoProcess: zod.z.boolean().optional(),
|
|
164
153
|
/**
|
|
165
154
|
* PropertySchema declared via `.qualifyWith()` on a document attribute.
|
|
166
155
|
* Drives hydration into `[{id, props}]` shape and write-time validation.
|
|
167
156
|
*/
|
|
168
157
|
properties: propertySchemaPassthrough.optional(),
|
|
169
|
-
/**
|
|
170
|
-
* Legacy per-document attribute definitions via `.attribute(...)`.
|
|
171
|
-
* Kept for backward compatibility; the builder also mirrors property-typed
|
|
172
|
-
* entries into `properties.definitions`.
|
|
173
|
-
*/
|
|
174
|
-
attributes: zod.z.array(attributePassthrough).optional(),
|
|
175
158
|
/** File slots declared via `.slots(...)`. */
|
|
176
159
|
slots: zod.z.array(documentSlotConfigPassthrough).optional()
|
|
177
160
|
});
|
|
178
161
|
var attributeConfigSchemas = {
|
|
179
162
|
text: textConfigSchema,
|
|
180
|
-
textarea: textareaConfigSchema,
|
|
181
163
|
richtext: richtextConfigSchema,
|
|
182
164
|
number: numberConfigSchema,
|
|
183
165
|
checkbox: checkboxConfigSchema,
|
|
@@ -191,13 +173,16 @@ var attributeConfigSchemas = {
|
|
|
191
173
|
file: fileConfigSchema,
|
|
192
174
|
user: userConfigSchema,
|
|
193
175
|
relation: relationConfigSchema,
|
|
194
|
-
rating: ratingConfigSchema,
|
|
195
176
|
formula: formulaConfigSchema,
|
|
196
177
|
rollup: rollupConfigSchema,
|
|
197
178
|
document: documentConfigSchema
|
|
198
179
|
};
|
|
199
180
|
function getAttributeConfigSchema(type) {
|
|
200
|
-
|
|
181
|
+
const schema = attributeConfigSchemas[type];
|
|
182
|
+
if (!schema) {
|
|
183
|
+
throw new Error(`Unsupported attribute type: ${type}`);
|
|
184
|
+
}
|
|
185
|
+
return schema;
|
|
201
186
|
}
|
|
202
187
|
function parseAttributeConfig(type, config) {
|
|
203
188
|
const schema = getAttributeConfigSchema(type);
|