@stndrds/schema 0.1.0-alpha.67 → 1.0.0-alpha.102

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 (155) hide show
  1. package/dist/attributes-D7yQuTJK.d.mts +665 -0
  2. package/dist/attributes-DcbQC-4b.d.ts +665 -0
  3. package/dist/chunk-3JINFUN3.js +81 -0
  4. package/dist/chunk-4KRLCWJM.mjs +8 -0
  5. package/dist/chunk-4TC27SMF.mjs +18 -0
  6. package/dist/chunk-56QI6UTK.js +32 -0
  7. package/dist/chunk-5JVVPJJW.mjs +208 -0
  8. package/dist/chunk-5XL3JP73.mjs +83 -0
  9. package/dist/chunk-7HFZ7MVR.mjs +28 -0
  10. package/dist/chunk-ACQ3TUFK.js +10 -0
  11. package/dist/chunk-AYCSVKI2.mjs +14 -0
  12. package/dist/chunk-BLXQGQLK.mjs +10 -0
  13. package/dist/chunk-D7WFIGXW.js +14 -0
  14. package/dist/chunk-FRCDMQER.js +47 -0
  15. package/dist/chunk-GCRHSPZN.js +16 -0
  16. package/dist/chunk-IRTRJH37.mjs +8 -0
  17. package/dist/chunk-ITTQ4FGR.mjs +14 -0
  18. package/dist/chunk-J5HRK3WD.js +10 -0
  19. package/dist/chunk-KNYZH2WD.mjs +18 -0
  20. package/dist/chunk-KWVCGQ7N.mjs +78 -0
  21. package/dist/chunk-MAKSIK3P.js +10 -0
  22. package/dist/chunk-N7T66JVY.js +86 -0
  23. package/dist/chunk-OAQWRMTP.js +10 -0
  24. package/dist/chunk-OLJLCVNY.mjs +8 -0
  25. package/dist/chunk-P2BE2A2G.js +64 -0
  26. package/dist/chunk-PGERPYDR.js +2 -0
  27. package/dist/chunk-QWZHR2OO.js +12 -0
  28. package/dist/chunk-QY6QFRRV.mjs +41 -0
  29. package/dist/chunk-QYNPB37W.js +221 -0
  30. package/dist/chunk-R4CJHCC4.mjs +60 -0
  31. package/dist/chunk-RJ4LOX7P.js +22 -0
  32. package/dist/chunk-ROAZLZA2.js +20 -0
  33. package/dist/chunk-RUYUFXNW.mjs +12 -0
  34. package/dist/chunk-SP3PNHYF.mjs +1 -0
  35. package/dist/chunk-SS2NR6DH.mjs +176 -0
  36. package/dist/chunk-T225DB55.js +33 -0
  37. package/dist/chunk-TKN73433.js +20 -0
  38. package/dist/chunk-TMYBEXBT.mjs +8 -0
  39. package/dist/chunk-UQVW4KPP.mjs +30 -0
  40. package/dist/chunk-V6DE3MXC.js +180 -0
  41. package/dist/chunk-VXOTYFEW.js +16 -0
  42. package/dist/chunk-WV4V64D5.mjs +20 -0
  43. package/dist/helpers-DD6JzYfI.d.mts +860 -0
  44. package/dist/helpers-kMS5R7KX.d.ts +860 -0
  45. package/dist/index.d.mts +3597 -1768
  46. package/dist/index.d.ts +3597 -1768
  47. package/dist/index.js +4957 -1955
  48. package/dist/index.mjs +3920 -1116
  49. package/dist/types-BAPgWlpX.d.mts +39 -0
  50. package/dist/types-mZPUEZl0.d.ts +39 -0
  51. package/dist/utils.d.mts +20 -55
  52. package/dist/utils.d.ts +20 -55
  53. package/dist/utils.js +26 -19
  54. package/dist/utils.mjs +1 -19
  55. package/dist/validation/all.d.mts +8 -0
  56. package/dist/validation/all.d.ts +8 -0
  57. package/dist/validation/all.js +56 -0
  58. package/dist/validation/all.mjs +19 -0
  59. package/dist/validation/complex/currency.d.mts +15 -0
  60. package/dist/validation/complex/currency.d.ts +15 -0
  61. package/dist/validation/complex/currency.js +11 -0
  62. package/dist/validation/complex/currency.mjs +2 -0
  63. package/dist/validation/complex/file.d.mts +13 -0
  64. package/dist/validation/complex/file.d.ts +13 -0
  65. package/dist/validation/complex/file.js +11 -0
  66. package/dist/validation/complex/file.mjs +2 -0
  67. package/dist/validation/complex/location.d.mts +22 -0
  68. package/dist/validation/complex/location.d.ts +22 -0
  69. package/dist/validation/complex/location.js +11 -0
  70. package/dist/validation/complex/location.mjs +2 -0
  71. package/dist/validation/complex/phone.d.mts +22 -0
  72. package/dist/validation/complex/phone.d.ts +22 -0
  73. package/dist/validation/complex/phone.js +11 -0
  74. package/dist/validation/complex/phone.mjs +2 -0
  75. package/dist/validation/complex/relation.d.mts +25 -0
  76. package/dist/validation/complex/relation.d.ts +25 -0
  77. package/dist/validation/complex/relation.js +19 -0
  78. package/dist/validation/complex/relation.mjs +2 -0
  79. package/dist/validation/complex/richtext.d.mts +13 -0
  80. package/dist/validation/complex/richtext.d.ts +13 -0
  81. package/dist/validation/complex/richtext.js +11 -0
  82. package/dist/validation/complex/richtext.mjs +2 -0
  83. package/dist/validation/complex/select.d.mts +20 -0
  84. package/dist/validation/complex/select.d.ts +20 -0
  85. package/dist/validation/complex/select.js +19 -0
  86. package/dist/validation/complex/select.mjs +2 -0
  87. package/dist/validation/complex/user.d.mts +13 -0
  88. package/dist/validation/complex/user.d.ts +13 -0
  89. package/dist/validation/complex/user.js +11 -0
  90. package/dist/validation/complex/user.mjs +2 -0
  91. package/dist/validation/computed/formula.d.mts +14 -0
  92. package/dist/validation/computed/formula.d.ts +14 -0
  93. package/dist/validation/computed/formula.js +11 -0
  94. package/dist/validation/computed/formula.mjs +2 -0
  95. package/dist/validation/computed/rollup.d.mts +14 -0
  96. package/dist/validation/computed/rollup.d.ts +14 -0
  97. package/dist/validation/computed/rollup.js +11 -0
  98. package/dist/validation/computed/rollup.mjs +2 -0
  99. package/dist/validation/config/index.d.mts +20 -0
  100. package/dist/validation/config/index.d.ts +20 -0
  101. package/dist/validation/config/index.js +18 -0
  102. package/dist/validation/config/index.mjs +1 -0
  103. package/dist/validation/core/index.d.mts +19 -0
  104. package/dist/validation/core/index.d.ts +19 -0
  105. package/dist/validation/core/index.js +14 -0
  106. package/dist/validation/core/index.mjs +1 -0
  107. package/dist/validation/object/index.d.mts +31 -0
  108. package/dist/validation/object/index.d.ts +31 -0
  109. package/dist/validation/object/index.js +70 -0
  110. package/dist/validation/object/index.mjs +17 -0
  111. package/dist/validation/primitives/checkbox.d.mts +12 -0
  112. package/dist/validation/primitives/checkbox.d.ts +12 -0
  113. package/dist/validation/primitives/checkbox.js +11 -0
  114. package/dist/validation/primitives/checkbox.mjs +2 -0
  115. package/dist/validation/primitives/date.d.mts +12 -0
  116. package/dist/validation/primitives/date.d.ts +12 -0
  117. package/dist/validation/primitives/date.js +11 -0
  118. package/dist/validation/primitives/date.mjs +2 -0
  119. package/dist/validation/primitives/number.d.mts +12 -0
  120. package/dist/validation/primitives/number.d.ts +12 -0
  121. package/dist/validation/primitives/number.js +11 -0
  122. package/dist/validation/primitives/number.mjs +2 -0
  123. package/dist/validation/primitives/rating.d.mts +12 -0
  124. package/dist/validation/primitives/rating.d.ts +12 -0
  125. package/dist/validation/primitives/rating.js +11 -0
  126. package/dist/validation/primitives/rating.mjs +2 -0
  127. package/dist/validation/primitives/text.d.mts +17 -0
  128. package/dist/validation/primitives/text.d.ts +17 -0
  129. package/dist/validation/primitives/text.js +15 -0
  130. package/dist/validation/primitives/text.mjs +2 -0
  131. package/package.json +108 -13
  132. package/dist/chunk-36UBIXJN.js +0 -82
  133. package/dist/chunk-3RG5ZIWI.js +0 -10
  134. package/dist/chunk-A6T4UUZ2.mjs +0 -18669
  135. package/dist/chunk-NEVERCM3.js +0 -41
  136. package/dist/chunk-SV4BCGQU.mjs +0 -617
  137. package/dist/chunk-TOTUS3YS.js +0 -18669
  138. package/dist/chunk-U4AB53AM.js +0 -617
  139. package/dist/chunk-V2RPPE2Y.mjs +0 -41
  140. package/dist/chunk-V5QXU2OK.mjs +0 -82
  141. package/dist/chunk-Y6FXYEAI.mjs +0 -10
  142. package/dist/default-roles-42X3TJI5.mjs +0 -21
  143. package/dist/default-roles-C3FYDYMN.js +0 -21
  144. package/dist/runtime-BgtwoMx5.d.ts +0 -12759
  145. package/dist/runtime-DQlTgVZJ.d.mts +0 -12759
  146. package/dist/runtime.d.mts +0 -6
  147. package/dist/runtime.d.ts +0 -6
  148. package/dist/runtime.js +0 -323
  149. package/dist/runtime.mjs +0 -323
  150. package/dist/validation/validators.d.mts +0 -4
  151. package/dist/validation/validators.d.ts +0 -4
  152. package/dist/validation/validators.js +0 -121
  153. package/dist/validation/validators.mjs +0 -121
  154. package/dist/validators-BROsLGn4.d.mts +0 -1556
  155. package/dist/validators-CEzdvxEq.d.ts +0 -1556
@@ -0,0 +1,176 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/validation/config/schemas.ts
4
+ var baseConfigSchema = z.object({
5
+ disabled: z.boolean().optional(),
6
+ placeholder: z.string().optional(),
7
+ description: z.string().optional(),
8
+ defaultValue: z.unknown().optional(),
9
+ icon: z.string().optional(),
10
+ order: z.number().int().optional(),
11
+ hidden: z.boolean().optional(),
12
+ archived: z.boolean().optional(),
13
+ deprecated: z.boolean().optional(),
14
+ metadata: z.record(z.string(), z.unknown()).optional()
15
+ });
16
+ var optionSchema = z.object({
17
+ id: z.string().min(1),
18
+ label: z.string().min(1),
19
+ value: z.string().min(1),
20
+ color: z.string().optional(),
21
+ icon: z.string().optional(),
22
+ description: z.string().optional(),
23
+ group: z.enum(["idle", "in_progress", "finished"]).optional(),
24
+ inverse: z.string().optional()
25
+ });
26
+ var optionsArraySchema = z.array(optionSchema).min(1).refine(
27
+ (options) => {
28
+ const values = options.map((o) => o.value);
29
+ return new Set(values).size === values.length;
30
+ },
31
+ { message: "Duplicate option values are not allowed" }
32
+ );
33
+ var relationTargetSchema = z.object({
34
+ object: z.string().min(1),
35
+ displayTemplate: z.string().optional(),
36
+ filter: z.record(z.string(), z.unknown()).optional()
37
+ });
38
+ var textConfigSchema = baseConfigSchema.extend({
39
+ minLength: z.number().int().min(0).optional(),
40
+ 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()
48
+ });
49
+ var numberConfigSchema = baseConfigSchema.extend({
50
+ min: z.number().optional(),
51
+ max: z.number().optional(),
52
+ unit: z.enum(["integer", "decimal", "percentage"]).optional(),
53
+ decimals: z.number().int().min(0).optional()
54
+ });
55
+ var checkboxConfigSchema = baseConfigSchema;
56
+ var dateConfigSchema = baseConfigSchema.extend({
57
+ dateFormat: z.enum(["short", "long", "full", "relative"]).optional(),
58
+ minDate: z.string().optional(),
59
+ maxDate: z.string().optional()
60
+ });
61
+ var phoneConfigSchema = baseConfigSchema.extend({
62
+ defaultCountryCode: z.string().length(3).optional()
63
+ });
64
+ var currencyConfigSchema = baseConfigSchema.extend({
65
+ defaultCurrency: z.string().length(3).optional(),
66
+ allowedCurrencies: z.array(z.string().length(3)).optional()
67
+ });
68
+ var statusConfigSchema = baseConfigSchema.extend({
69
+ options: optionsArraySchema
70
+ });
71
+ var locationConfigSchema = baseConfigSchema.extend({
72
+ granularity: z.enum(["full", "address", "city", "state", "country", "coordinates"]),
73
+ enableAutocomplete: z.boolean().optional(),
74
+ enableMap: z.boolean().optional(),
75
+ 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()
78
+ });
79
+ var selectConfigSchema = baseConfigSchema.extend({
80
+ options: optionsArraySchema
81
+ });
82
+ var multiselectConfigSchema = baseConfigSchema.extend({
83
+ options: optionsArraySchema
84
+ });
85
+ var fileConfigSchema = baseConfigSchema.extend({
86
+ maxFiles: z.number().int().min(1).optional(),
87
+ maxSize: z.number().int().min(1).optional(),
88
+ allowedTypes: z.array(z.string()).optional(),
89
+ multiple: z.boolean().optional()
90
+ });
91
+ var userConfigSchema = baseConfigSchema.extend({
92
+ allowedRoles: z.array(z.string()).optional(),
93
+ multiple: z.boolean().optional()
94
+ });
95
+ var relationConfigSchema = baseConfigSchema.extend({
96
+ targets: z.array(relationTargetSchema).min(1),
97
+ cardinality: z.enum(["one", "many"]),
98
+ minItems: z.number().int().min(0).optional(),
99
+ maxItems: z.number().int().min(1).optional()
100
+ });
101
+ var ratingConfigSchema = baseConfigSchema.extend({
102
+ max: z.number().int().min(1).optional(),
103
+ iconType: z.enum(["star", "heart", "thumbs", "number"]).optional()
104
+ });
105
+ var formulaConfigSchema = baseConfigSchema.extend({
106
+ expression: z.string().min(1),
107
+ returnType: z.enum(["text", "number", "boolean", "date"]),
108
+ decimals: z.number().int().min(0).max(10).optional(),
109
+ allowRelations: z.boolean().optional()
110
+ });
111
+ var rollupConfigSchema = baseConfigSchema.extend({
112
+ relationAttribute: z.string().min(1).optional(),
113
+ relationPath: z.string().optional(),
114
+ targetAttribute: z.string().min(1),
115
+ function: z.enum([
116
+ "sum",
117
+ "avg",
118
+ "earliest",
119
+ "latest",
120
+ "count",
121
+ "countValues",
122
+ "countUniqueValues",
123
+ "countEmpty",
124
+ "percentEmpty",
125
+ "percentNotEmpty",
126
+ "original"
127
+ ]),
128
+ decimals: z.number().int().min(0).max(10).optional(),
129
+ targetAttributeType: z.string().optional(),
130
+ targetAttributeOptions: z.array(
131
+ z.object({
132
+ id: z.string(),
133
+ label: z.string(),
134
+ value: z.string(),
135
+ color: z.string().optional(),
136
+ icon: z.string().optional(),
137
+ description: z.string().optional(),
138
+ group: z.enum(["idle", "in_progress", "finished"]).optional()
139
+ })
140
+ ).optional()
141
+ });
142
+ var documentConfigSchema = baseConfigSchema.extend({
143
+ multiple: z.boolean().optional(),
144
+ maxDocuments: z.number().int().min(1).optional(),
145
+ autoProcess: z.boolean().optional()
146
+ });
147
+ var attributeConfigSchemas = {
148
+ text: textConfigSchema,
149
+ textarea: textareaConfigSchema,
150
+ richtext: richtextConfigSchema,
151
+ number: numberConfigSchema,
152
+ checkbox: checkboxConfigSchema,
153
+ date: dateConfigSchema,
154
+ phone: phoneConfigSchema,
155
+ currency: currencyConfigSchema,
156
+ status: statusConfigSchema,
157
+ location: locationConfigSchema,
158
+ select: selectConfigSchema,
159
+ multiselect: multiselectConfigSchema,
160
+ file: fileConfigSchema,
161
+ user: userConfigSchema,
162
+ relation: relationConfigSchema,
163
+ rating: ratingConfigSchema,
164
+ formula: formulaConfigSchema,
165
+ rollup: rollupConfigSchema,
166
+ document: documentConfigSchema
167
+ };
168
+ function getAttributeConfigSchema(type) {
169
+ return attributeConfigSchemas[type];
170
+ }
171
+ function parseAttributeConfig(type, config) {
172
+ const schema = getAttributeConfigSchema(type);
173
+ return schema.strip().parse(config);
174
+ }
175
+
176
+ export { attributeConfigSchemas, getAttributeConfigSchema, parseAttributeConfig };
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ // src/validation/core/messages.ts
4
+ var DEFAULT_VALIDATION_MESSAGES = {
5
+ required: (attr) => `${attr.label} is required`,
6
+ invalidType: (attr, expected) => `${attr.label} must be a ${expected}`,
7
+ minLength: (attr, min) => `${attr.label} must be at least ${min} characters`,
8
+ maxLength: (attr, max) => `${attr.label} must be at most ${max} characters`,
9
+ invalidPattern: (attr) => `${attr.label} format is invalid`,
10
+ minValue: (attr, min) => `${attr.label} must be at least ${min}`,
11
+ maxValue: (attr, max) => `${attr.label} must be at most ${max}`,
12
+ mustBeInteger: (attr) => `${attr.label} must be an integer`,
13
+ invalidDate: (attr) => `${attr.label} must be a valid date`,
14
+ invalidOption: (attr, options) => `${attr.label} must be one of: ${options.join(", ")}`,
15
+ invalidId: (attr) => `${attr.label} must be a valid ID`,
16
+ minItems: (attr, min) => `${attr.label} must have at least ${min} item${min > 1 ? "s" : ""}`,
17
+ maxItems: (attr, max) => `${attr.label} must have at most ${max} item${max > 1 ? "s" : ""}`,
18
+ invalidRichtext: (attr) => `${attr.label} must be valid rich text content`,
19
+ invalidPhone: (attr) => `${attr.label} must be a valid phone number`,
20
+ invalidCurrency: (attr) => `${attr.label} must be a valid currency value`,
21
+ invalidLocation: (attr) => `${attr.label} must be a valid location`
22
+ };
23
+
24
+ // src/validation/core/errors.ts
25
+ function formatZodErrors(error) {
26
+ return error.issues.map((err) => ({
27
+ path: err.path.map(String),
28
+ message: err.message
29
+ }));
30
+ }
31
+
32
+ exports.DEFAULT_VALIDATION_MESSAGES = DEFAULT_VALIDATION_MESSAGES;
33
+ exports.formatZodErrors = formatZodErrors;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var chunkT225DB55_js = require('./chunk-T225DB55.js');
4
+ var zod = require('zod');
5
+
6
+ function createNumberValidator(attr, messages = chunkT225DB55_js.DEFAULT_VALIDATION_MESSAGES) {
7
+ let schema = zod.z.number();
8
+ if (attr.min !== void 0) {
9
+ schema = schema.min(attr.min, messages.minValue(attr, attr.min));
10
+ }
11
+ if (attr.max !== void 0) {
12
+ schema = schema.max(attr.max, messages.maxValue(attr, attr.max));
13
+ }
14
+ if (attr.unit === "integer") {
15
+ schema = schema.int(messages.mustBeInteger(attr));
16
+ }
17
+ return schema;
18
+ }
19
+
20
+ exports.createNumberValidator = createNumberValidator;
@@ -0,0 +1,8 @@
1
+ import { DEFAULT_VALIDATION_MESSAGES } from './chunk-UQVW4KPP.mjs';
2
+ import { z } from 'zod';
3
+
4
+ function createCheckboxValidator(_attr, _messages = DEFAULT_VALIDATION_MESSAGES) {
5
+ return z.boolean();
6
+ }
7
+
8
+ export { createCheckboxValidator };
@@ -0,0 +1,30 @@
1
+ // src/validation/core/messages.ts
2
+ var DEFAULT_VALIDATION_MESSAGES = {
3
+ required: (attr) => `${attr.label} is required`,
4
+ invalidType: (attr, expected) => `${attr.label} must be a ${expected}`,
5
+ minLength: (attr, min) => `${attr.label} must be at least ${min} characters`,
6
+ maxLength: (attr, max) => `${attr.label} must be at most ${max} characters`,
7
+ invalidPattern: (attr) => `${attr.label} format is invalid`,
8
+ minValue: (attr, min) => `${attr.label} must be at least ${min}`,
9
+ maxValue: (attr, max) => `${attr.label} must be at most ${max}`,
10
+ mustBeInteger: (attr) => `${attr.label} must be an integer`,
11
+ invalidDate: (attr) => `${attr.label} must be a valid date`,
12
+ invalidOption: (attr, options) => `${attr.label} must be one of: ${options.join(", ")}`,
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
+ maxItems: (attr, max) => `${attr.label} must have at most ${max} item${max > 1 ? "s" : ""}`,
16
+ invalidRichtext: (attr) => `${attr.label} must be valid rich text content`,
17
+ invalidPhone: (attr) => `${attr.label} must be a valid phone number`,
18
+ invalidCurrency: (attr) => `${attr.label} must be a valid currency value`,
19
+ invalidLocation: (attr) => `${attr.label} must be a valid location`
20
+ };
21
+
22
+ // src/validation/core/errors.ts
23
+ function formatZodErrors(error) {
24
+ return error.issues.map((err) => ({
25
+ path: err.path.map(String),
26
+ message: err.message
27
+ }));
28
+ }
29
+
30
+ export { DEFAULT_VALIDATION_MESSAGES, formatZodErrors };
@@ -0,0 +1,180 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/validation/config/schemas.ts
6
+ var baseConfigSchema = zod.z.object({
7
+ disabled: zod.z.boolean().optional(),
8
+ placeholder: zod.z.string().optional(),
9
+ description: zod.z.string().optional(),
10
+ defaultValue: zod.z.unknown().optional(),
11
+ icon: zod.z.string().optional(),
12
+ order: zod.z.number().int().optional(),
13
+ hidden: zod.z.boolean().optional(),
14
+ archived: zod.z.boolean().optional(),
15
+ deprecated: zod.z.boolean().optional(),
16
+ metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
17
+ });
18
+ var optionSchema = zod.z.object({
19
+ id: zod.z.string().min(1),
20
+ label: zod.z.string().min(1),
21
+ value: zod.z.string().min(1),
22
+ color: zod.z.string().optional(),
23
+ icon: zod.z.string().optional(),
24
+ description: zod.z.string().optional(),
25
+ group: zod.z.enum(["idle", "in_progress", "finished"]).optional(),
26
+ inverse: zod.z.string().optional()
27
+ });
28
+ var optionsArraySchema = zod.z.array(optionSchema).min(1).refine(
29
+ (options) => {
30
+ const values = options.map((o) => o.value);
31
+ return new Set(values).size === values.length;
32
+ },
33
+ { message: "Duplicate option values are not allowed" }
34
+ );
35
+ var relationTargetSchema = zod.z.object({
36
+ object: zod.z.string().min(1),
37
+ displayTemplate: zod.z.string().optional(),
38
+ filter: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
39
+ });
40
+ var textConfigSchema = baseConfigSchema.extend({
41
+ minLength: zod.z.number().int().min(0).optional(),
42
+ 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()
50
+ });
51
+ var numberConfigSchema = baseConfigSchema.extend({
52
+ min: zod.z.number().optional(),
53
+ max: zod.z.number().optional(),
54
+ unit: zod.z.enum(["integer", "decimal", "percentage"]).optional(),
55
+ decimals: zod.z.number().int().min(0).optional()
56
+ });
57
+ var checkboxConfigSchema = baseConfigSchema;
58
+ var dateConfigSchema = baseConfigSchema.extend({
59
+ dateFormat: zod.z.enum(["short", "long", "full", "relative"]).optional(),
60
+ minDate: zod.z.string().optional(),
61
+ maxDate: zod.z.string().optional()
62
+ });
63
+ var phoneConfigSchema = baseConfigSchema.extend({
64
+ defaultCountryCode: zod.z.string().length(3).optional()
65
+ });
66
+ var currencyConfigSchema = baseConfigSchema.extend({
67
+ defaultCurrency: zod.z.string().length(3).optional(),
68
+ allowedCurrencies: zod.z.array(zod.z.string().length(3)).optional()
69
+ });
70
+ var statusConfigSchema = baseConfigSchema.extend({
71
+ options: optionsArraySchema
72
+ });
73
+ 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(),
77
+ 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()
80
+ });
81
+ var selectConfigSchema = baseConfigSchema.extend({
82
+ options: optionsArraySchema
83
+ });
84
+ var multiselectConfigSchema = baseConfigSchema.extend({
85
+ options: optionsArraySchema
86
+ });
87
+ var fileConfigSchema = baseConfigSchema.extend({
88
+ maxFiles: zod.z.number().int().min(1).optional(),
89
+ maxSize: zod.z.number().int().min(1).optional(),
90
+ allowedTypes: zod.z.array(zod.z.string()).optional(),
91
+ multiple: zod.z.boolean().optional()
92
+ });
93
+ var userConfigSchema = baseConfigSchema.extend({
94
+ allowedRoles: zod.z.array(zod.z.string()).optional(),
95
+ multiple: zod.z.boolean().optional()
96
+ });
97
+ var relationConfigSchema = baseConfigSchema.extend({
98
+ targets: zod.z.array(relationTargetSchema).min(1),
99
+ cardinality: zod.z.enum(["one", "many"]),
100
+ minItems: zod.z.number().int().min(0).optional(),
101
+ maxItems: zod.z.number().int().min(1).optional()
102
+ });
103
+ var ratingConfigSchema = baseConfigSchema.extend({
104
+ max: zod.z.number().int().min(1).optional(),
105
+ iconType: zod.z.enum(["star", "heart", "thumbs", "number"]).optional()
106
+ });
107
+ var formulaConfigSchema = baseConfigSchema.extend({
108
+ expression: zod.z.string().min(1),
109
+ returnType: zod.z.enum(["text", "number", "boolean", "date"]),
110
+ decimals: zod.z.number().int().min(0).max(10).optional(),
111
+ allowRelations: zod.z.boolean().optional()
112
+ });
113
+ var rollupConfigSchema = baseConfigSchema.extend({
114
+ relationAttribute: zod.z.string().min(1).optional(),
115
+ relationPath: zod.z.string().optional(),
116
+ targetAttribute: zod.z.string().min(1),
117
+ function: zod.z.enum([
118
+ "sum",
119
+ "avg",
120
+ "earliest",
121
+ "latest",
122
+ "count",
123
+ "countValues",
124
+ "countUniqueValues",
125
+ "countEmpty",
126
+ "percentEmpty",
127
+ "percentNotEmpty",
128
+ "original"
129
+ ]),
130
+ decimals: zod.z.number().int().min(0).max(10).optional(),
131
+ targetAttributeType: zod.z.string().optional(),
132
+ targetAttributeOptions: zod.z.array(
133
+ zod.z.object({
134
+ id: zod.z.string(),
135
+ label: zod.z.string(),
136
+ value: zod.z.string(),
137
+ color: zod.z.string().optional(),
138
+ icon: zod.z.string().optional(),
139
+ description: zod.z.string().optional(),
140
+ group: zod.z.enum(["idle", "in_progress", "finished"]).optional()
141
+ })
142
+ ).optional()
143
+ });
144
+ var documentConfigSchema = baseConfigSchema.extend({
145
+ multiple: zod.z.boolean().optional(),
146
+ maxDocuments: zod.z.number().int().min(1).optional(),
147
+ autoProcess: zod.z.boolean().optional()
148
+ });
149
+ var attributeConfigSchemas = {
150
+ text: textConfigSchema,
151
+ textarea: textareaConfigSchema,
152
+ richtext: richtextConfigSchema,
153
+ number: numberConfigSchema,
154
+ checkbox: checkboxConfigSchema,
155
+ date: dateConfigSchema,
156
+ phone: phoneConfigSchema,
157
+ currency: currencyConfigSchema,
158
+ status: statusConfigSchema,
159
+ location: locationConfigSchema,
160
+ select: selectConfigSchema,
161
+ multiselect: multiselectConfigSchema,
162
+ file: fileConfigSchema,
163
+ user: userConfigSchema,
164
+ relation: relationConfigSchema,
165
+ rating: ratingConfigSchema,
166
+ formula: formulaConfigSchema,
167
+ rollup: rollupConfigSchema,
168
+ document: documentConfigSchema
169
+ };
170
+ function getAttributeConfigSchema(type) {
171
+ return attributeConfigSchemas[type];
172
+ }
173
+ function parseAttributeConfig(type, config) {
174
+ const schema = getAttributeConfigSchema(type);
175
+ return schema.strip().parse(config);
176
+ }
177
+
178
+ exports.attributeConfigSchemas = attributeConfigSchemas;
179
+ exports.getAttributeConfigSchema = getAttributeConfigSchema;
180
+ exports.parseAttributeConfig = parseAttributeConfig;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var chunkT225DB55_js = require('./chunk-T225DB55.js');
4
+ var zod = require('zod');
5
+
6
+ function createUserValidator(attr, messages = chunkT225DB55_js.DEFAULT_VALIDATION_MESSAGES) {
7
+ const uuidSchema = zod.z.uuid({
8
+ message: messages.invalidId(attr)
9
+ });
10
+ if (attr.multiple) {
11
+ return zod.z.array(uuidSchema);
12
+ }
13
+ return uuidSchema;
14
+ }
15
+
16
+ exports.createUserValidator = createUserValidator;
@@ -0,0 +1,20 @@
1
+ import { DEFAULT_VALIDATION_MESSAGES } from './chunk-UQVW4KPP.mjs';
2
+ import { z } from 'zod';
3
+
4
+ function createLocationValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
5
+ return z.object(
6
+ {
7
+ address: z.string().optional(),
8
+ address2: z.string().optional(),
9
+ city: z.string().optional(),
10
+ state: z.string().optional(),
11
+ postalCode: z.string().optional(),
12
+ country: z.string().length(3).optional(),
13
+ latitude: z.number().optional(),
14
+ longitude: z.number().optional()
15
+ },
16
+ { message: messages.invalidLocation(attr) }
17
+ );
18
+ }
19
+
20
+ export { createLocationValidator };