@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.
Files changed (125) hide show
  1. package/dist/attributes-DP08iPCh.d.mts +889 -0
  2. package/dist/attributes-Ddhps_AU.d.ts +889 -0
  3. package/dist/{chunk-MAKSIK3P.js → chunk-5WATIVCA.js} +2 -2
  4. package/dist/{chunk-4KRLCWJM.mjs → chunk-6I2R22CX.mjs} +1 -1
  5. package/dist/{chunk-DC7YYE3U.js → chunk-ACKMC6FL.js} +2 -2
  6. package/dist/{chunk-TEQNVO7W.mjs → chunk-AYVHMVKQ.mjs} +1 -1
  7. package/dist/{chunk-P2BE2A2G.js → chunk-BV3IUMMW.js} +4 -7
  8. package/dist/{chunk-CCB4OY2O.js → chunk-E6JUYGJX.js} +2 -2
  9. package/dist/{chunk-7A3Y6O32.js → chunk-EBGRZUIH.js} +2 -2
  10. package/dist/{chunk-QWZHR2OO.js → chunk-EW5XR2X3.js} +2 -2
  11. package/dist/{chunk-UQVW4KPP.mjs → chunk-HRQEZUAA.mjs} +0 -1
  12. package/dist/{chunk-OAQWRMTP.js → chunk-HTSTPTNZ.js} +2 -2
  13. package/dist/{chunk-U4JC7P6D.mjs → chunk-HXDDJLHD.mjs} +37 -52
  14. package/dist/{chunk-Z75P63VF.mjs → chunk-JUKLL5RJ.mjs} +1 -1
  15. package/dist/{chunk-YQROI4IE.js → chunk-M5QIBMIH.js} +37 -52
  16. package/dist/{chunk-FQ2ZYOVS.js → chunk-MZOEL7FN.js} +47 -41
  17. package/dist/{chunk-KWVCGQ7N.mjs → chunk-NOMHDOVE.mjs} +2 -5
  18. package/dist/{chunk-OLJLCVNY.mjs → chunk-NS63SPNN.mjs} +1 -1
  19. package/dist/{chunk-J5HRK3WD.js → chunk-O44XVGHE.js} +2 -2
  20. package/dist/{chunk-TMYBEXBT.mjs → chunk-OSSGN43B.mjs} +1 -1
  21. package/dist/{chunk-LTHSU4NF.mjs → chunk-PMKCDRRO.mjs} +26 -21
  22. package/dist/{chunk-4TC27SMF.mjs → chunk-QEZUDVTN.mjs} +1 -1
  23. package/dist/{chunk-BLXQGQLK.mjs → chunk-QVLQPW3O.mjs} +1 -1
  24. package/dist/{chunk-EZHMVZQ4.js → chunk-QWKLQRBX.js} +4 -4
  25. package/dist/{chunk-ROAZLZA2.js → chunk-ROLWVTU3.js} +2 -2
  26. package/dist/{chunk-3JINFUN3.js → chunk-SGSGREPG.js} +2 -6
  27. package/dist/{chunk-VXOTYFEW.js → chunk-T6L2MUG2.js} +2 -2
  28. package/dist/{chunk-KNYZH2WD.mjs → chunk-UANQJ2GH.mjs} +8 -1
  29. package/dist/{chunk-IRTRJH37.mjs → chunk-UXAHLSWC.mjs} +1 -1
  30. package/dist/{chunk-ACQ3TUFK.js → chunk-V2UA2D4E.js} +2 -2
  31. package/dist/{chunk-R4CJHCC4.mjs → chunk-XZ5RG2OG.mjs} +1 -4
  32. package/dist/{chunk-TKN73433.js → chunk-YIP5FJ5H.js} +9 -2
  33. package/dist/{chunk-T225DB55.js → chunk-YKWSHBT5.js} +0 -1
  34. package/dist/{chunk-TBYXYSGA.mjs → chunk-YUFTHPOE.mjs} +1 -1
  35. package/dist/{chunk-ITTQ4FGR.mjs → chunk-ZDMOXF3U.mjs} +1 -1
  36. package/dist/{chunk-SMOHDR6M.mjs → chunk-ZDQ5AP26.mjs} +1 -1
  37. package/dist/{helpers-Y9rNQ6sz.d.ts → helpers-Bph8AoY7.d.mts} +15 -3
  38. package/dist/{helpers-HrKmSkLi.d.mts → helpers-D9klos6x.d.ts} +15 -3
  39. package/dist/index.d.mts +1121 -235
  40. package/dist/index.d.ts +1121 -235
  41. package/dist/index.js +2369 -854
  42. package/dist/index.mjs +2264 -774
  43. package/dist/{types-Bdlhgrf7.d.ts → types-D38kriFw.d.mts} +1 -2
  44. package/dist/{types-C5DittlR.d.mts → types-iKvYBe6v.d.ts} +1 -2
  45. package/dist/validation/all.d.mts +3 -3
  46. package/dist/validation/all.d.ts +3 -3
  47. package/dist/validation/all.js +30 -27
  48. package/dist/validation/all.mjs +17 -18
  49. package/dist/validation/complex/currency.d.mts +2 -2
  50. package/dist/validation/complex/currency.d.ts +2 -2
  51. package/dist/validation/complex/currency.js +3 -3
  52. package/dist/validation/complex/currency.mjs +2 -2
  53. package/dist/validation/complex/file.d.mts +2 -2
  54. package/dist/validation/complex/file.d.ts +2 -2
  55. package/dist/validation/complex/file.js +3 -3
  56. package/dist/validation/complex/file.mjs +2 -2
  57. package/dist/validation/complex/location.d.mts +2 -2
  58. package/dist/validation/complex/location.d.ts +2 -2
  59. package/dist/validation/complex/location.js +3 -3
  60. package/dist/validation/complex/location.mjs +2 -2
  61. package/dist/validation/complex/phone.d.mts +2 -2
  62. package/dist/validation/complex/phone.d.ts +2 -2
  63. package/dist/validation/complex/phone.js +3 -3
  64. package/dist/validation/complex/phone.mjs +2 -2
  65. package/dist/validation/complex/relation.d.mts +2 -2
  66. package/dist/validation/complex/relation.d.ts +2 -2
  67. package/dist/validation/complex/relation.js +5 -5
  68. package/dist/validation/complex/relation.mjs +2 -2
  69. package/dist/validation/complex/richtext.d.mts +2 -2
  70. package/dist/validation/complex/richtext.d.ts +2 -2
  71. package/dist/validation/complex/richtext.js +3 -3
  72. package/dist/validation/complex/richtext.mjs +2 -2
  73. package/dist/validation/complex/select.d.mts +2 -2
  74. package/dist/validation/complex/select.d.ts +2 -2
  75. package/dist/validation/complex/select.js +5 -5
  76. package/dist/validation/complex/select.mjs +2 -2
  77. package/dist/validation/complex/user.d.mts +2 -2
  78. package/dist/validation/complex/user.d.ts +2 -2
  79. package/dist/validation/complex/user.js +3 -3
  80. package/dist/validation/complex/user.mjs +2 -2
  81. package/dist/validation/computed/formula.d.mts +2 -2
  82. package/dist/validation/computed/formula.d.ts +2 -2
  83. package/dist/validation/computed/formula.js +3 -3
  84. package/dist/validation/computed/formula.mjs +2 -2
  85. package/dist/validation/computed/rollup.d.mts +2 -2
  86. package/dist/validation/computed/rollup.d.ts +2 -2
  87. package/dist/validation/computed/rollup.js +3 -3
  88. package/dist/validation/computed/rollup.mjs +2 -2
  89. package/dist/validation/config/index.d.mts +1 -1
  90. package/dist/validation/config/index.d.ts +1 -1
  91. package/dist/validation/config/index.js +4 -4
  92. package/dist/validation/config/index.mjs +1 -1
  93. package/dist/validation/core/index.d.mts +3 -3
  94. package/dist/validation/core/index.d.ts +3 -3
  95. package/dist/validation/core/index.js +3 -3
  96. package/dist/validation/core/index.mjs +1 -1
  97. package/dist/validation/object/index.d.mts +3 -3
  98. package/dist/validation/object/index.d.ts +3 -3
  99. package/dist/validation/object/index.js +32 -29
  100. package/dist/validation/object/index.mjs +16 -17
  101. package/dist/validation/primitives/checkbox.d.mts +2 -2
  102. package/dist/validation/primitives/checkbox.d.ts +2 -2
  103. package/dist/validation/primitives/checkbox.js +3 -3
  104. package/dist/validation/primitives/checkbox.mjs +2 -2
  105. package/dist/validation/primitives/date.d.mts +2 -2
  106. package/dist/validation/primitives/date.d.ts +2 -2
  107. package/dist/validation/primitives/date.js +3 -3
  108. package/dist/validation/primitives/date.mjs +2 -2
  109. package/dist/validation/primitives/number.d.mts +2 -2
  110. package/dist/validation/primitives/number.d.ts +2 -2
  111. package/dist/validation/primitives/number.js +3 -3
  112. package/dist/validation/primitives/number.mjs +2 -2
  113. package/dist/validation/primitives/text.d.mts +3 -8
  114. package/dist/validation/primitives/text.d.ts +3 -8
  115. package/dist/validation/primitives/text.js +3 -7
  116. package/dist/validation/primitives/text.mjs +2 -2
  117. package/package.json +2 -13
  118. package/dist/chunk-D7WFIGXW.js +0 -14
  119. package/dist/chunk-RUYUFXNW.mjs +0 -12
  120. package/dist/filters-DVBn5tov.d.ts +0 -1630
  121. package/dist/filters-HDG4kLoo.d.mts +0 -1630
  122. package/dist/validation/primitives/rating.d.mts +0 -12
  123. package/dist/validation/primitives/rating.d.ts +0 -12
  124. package/dist/validation/primitives/rating.js +0 -11
  125. package/dist/validation/primitives/rating.mjs +0 -2
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkT225DB55_js = require('./chunk-T225DB55.js');
3
+ var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
4
  var zod = require('zod');
5
5
 
6
- function createCheckboxValidator(_attr, _messages = chunkT225DB55_js.DEFAULT_VALIDATION_MESSAGES) {
6
+ function createCheckboxValidator(_attr, _messages = chunkYKWSHBT5_js.DEFAULT_VALIDATION_MESSAGES) {
7
7
  return zod.z.boolean();
8
8
  }
9
9
 
@@ -1,4 +1,4 @@
1
- import { DEFAULT_VALIDATION_MESSAGES } from './chunk-UQVW4KPP.mjs';
1
+ import { DEFAULT_VALIDATION_MESSAGES } from './chunk-HRQEZUAA.mjs';
2
2
  import { z } from 'zod';
3
3
 
4
4
  function createDateValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkT225DB55_js = require('./chunk-T225DB55.js');
3
+ var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
4
  var zod = require('zod');
5
5
 
6
- function createCurrencyValidator(attr, messages = chunkT225DB55_js.DEFAULT_VALIDATION_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,4 +1,4 @@
1
- import { DEFAULT_VALIDATION_MESSAGES } from './chunk-UQVW4KPP.mjs';
1
+ import { DEFAULT_VALIDATION_MESSAGES } from './chunk-HRQEZUAA.mjs';
2
2
  import { z } from 'zod';
3
3
 
4
4
  function createCurrencyValidator(attr, messages = DEFAULT_VALIDATION_MESSAGES) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkT225DB55_js = require('./chunk-T225DB55.js');
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 = chunkT225DB55_js.DEFAULT_VALIDATION_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 = chunkT225DB55_js.DEFAULT_VALIDATION_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 = chunkT225DB55_js.DEFAULT_VALIDATION_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 chunkT225DB55_js = require('./chunk-T225DB55.js');
3
+ var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
4
  var zod = require('zod');
5
5
 
6
- function createLocationValidator(attr, messages = chunkT225DB55_js.DEFAULT_VALIDATION_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 chunkT225DB55_js = require('./chunk-T225DB55.js');
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 = chunkT225DB55_js.DEFAULT_VALIDATION_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 chunkT225DB55_js = require('./chunk-T225DB55.js');
3
+ var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
4
  var zod = require('zod');
5
5
 
6
- function createRichtextValidator(attr, messages = chunkT225DB55_js.DEFAULT_VALIDATION_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 chunkT225DB55_js = require('./chunk-T225DB55.js');
3
+ var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
4
4
  var zod = require('zod');
5
5
 
6
- function createFormulaValidator(_attr, _messages = chunkT225DB55_js.DEFAULT_VALIDATION_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
- allowedRoles: z.array(z.string()).optional(),
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
- z.object({
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
- return attributeConfigSchemas[type];
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-UQVW4KPP.mjs';
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
- allowedRoles: zod.z.array(zod.z.string()).optional(),
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
- zod.z.object({
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
- return attributeConfigSchemas[type];
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);