@weave-kit/engine 0.2.1 → 0.3.0

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 (195) hide show
  1. package/dist/adapters/mcp/generate.d.ts +2 -1
  2. package/dist/adapters/mcp/generate.d.ts.map +1 -1
  3. package/dist/adapters/mcp/generate.js +23 -23
  4. package/dist/adapters/mcp/generate.js.map +1 -1
  5. package/dist/adapters/openapi/document.js +1 -1
  6. package/dist/adapters/openapi/document.js.map +1 -1
  7. package/dist/adapters/openapi/schema.d.ts +5 -4
  8. package/dist/adapters/openapi/schema.d.ts.map +1 -1
  9. package/dist/adapters/openapi/schema.js +16 -16
  10. package/dist/adapters/openapi/schema.js.map +1 -1
  11. package/dist/adapters/openapi/types.d.ts +2 -0
  12. package/dist/adapters/openapi/types.d.ts.map +1 -1
  13. package/dist/cli/commands/build.d.ts.map +1 -1
  14. package/dist/cli/commands/build.js +22 -0
  15. package/dist/cli/commands/build.js.map +1 -1
  16. package/dist/cli/commands/dev.d.ts.map +1 -1
  17. package/dist/cli/commands/dev.js +9 -6
  18. package/dist/cli/commands/dev.js.map +1 -1
  19. package/dist/cli/commands/field-add.d.ts.map +1 -1
  20. package/dist/cli/commands/field-add.js +15 -11
  21. package/dist/cli/commands/field-add.js.map +1 -1
  22. package/dist/cli/commands/migrate.d.ts.map +1 -1
  23. package/dist/cli/commands/migrate.js +3 -0
  24. package/dist/cli/commands/migrate.js.map +1 -1
  25. package/dist/cli/commands/openapi.d.ts.map +1 -1
  26. package/dist/cli/commands/openapi.js +4 -0
  27. package/dist/cli/commands/openapi.js.map +1 -1
  28. package/dist/cli/commands/schema-map.d.ts.map +1 -1
  29. package/dist/cli/commands/schema-map.js +2 -0
  30. package/dist/cli/commands/schema-map.js.map +1 -1
  31. package/dist/cli/commands/types.d.ts.map +1 -1
  32. package/dist/cli/commands/types.js +8 -2
  33. package/dist/cli/commands/types.js.map +1 -1
  34. package/dist/cli/resolve-field-types.d.ts +9 -0
  35. package/dist/cli/resolve-field-types.d.ts.map +1 -0
  36. package/dist/cli/resolve-field-types.js +17 -0
  37. package/dist/cli/resolve-field-types.js.map +1 -0
  38. package/dist/core/i18n/ar.d.ts.map +1 -1
  39. package/dist/core/i18n/ar.js +6 -0
  40. package/dist/core/i18n/ar.js.map +1 -1
  41. package/dist/core/i18n/de.d.ts.map +1 -1
  42. package/dist/core/i18n/de.js +6 -0
  43. package/dist/core/i18n/de.js.map +1 -1
  44. package/dist/core/i18n/en.d.ts +6 -0
  45. package/dist/core/i18n/en.d.ts.map +1 -1
  46. package/dist/core/i18n/en.js +6 -0
  47. package/dist/core/i18n/en.js.map +1 -1
  48. package/dist/core/i18n/es.d.ts.map +1 -1
  49. package/dist/core/i18n/es.js +6 -0
  50. package/dist/core/i18n/es.js.map +1 -1
  51. package/dist/core/i18n/fr.d.ts.map +1 -1
  52. package/dist/core/i18n/fr.js +6 -0
  53. package/dist/core/i18n/fr.js.map +1 -1
  54. package/dist/core/i18n/hi.d.ts.map +1 -1
  55. package/dist/core/i18n/hi.js +6 -0
  56. package/dist/core/i18n/hi.js.map +1 -1
  57. package/dist/core/i18n/id.d.ts.map +1 -1
  58. package/dist/core/i18n/id.js +6 -0
  59. package/dist/core/i18n/id.js.map +1 -1
  60. package/dist/core/i18n/ja.d.ts.map +1 -1
  61. package/dist/core/i18n/ja.js +6 -0
  62. package/dist/core/i18n/ja.js.map +1 -1
  63. package/dist/core/i18n/ko.d.ts.map +1 -1
  64. package/dist/core/i18n/ko.js +6 -0
  65. package/dist/core/i18n/ko.js.map +1 -1
  66. package/dist/core/i18n/pt.d.ts.map +1 -1
  67. package/dist/core/i18n/pt.js +6 -0
  68. package/dist/core/i18n/pt.js.map +1 -1
  69. package/dist/core/i18n/ru.d.ts.map +1 -1
  70. package/dist/core/i18n/ru.js +6 -0
  71. package/dist/core/i18n/ru.js.map +1 -1
  72. package/dist/core/i18n/vi.d.ts.map +1 -1
  73. package/dist/core/i18n/vi.js +6 -0
  74. package/dist/core/i18n/vi.js.map +1 -1
  75. package/dist/core/i18n/zh-hant.d.ts.map +1 -1
  76. package/dist/core/i18n/zh-hant.js +6 -0
  77. package/dist/core/i18n/zh-hant.js.map +1 -1
  78. package/dist/core/i18n/zh.d.ts.map +1 -1
  79. package/dist/core/i18n/zh.js +6 -0
  80. package/dist/core/i18n/zh.js.map +1 -1
  81. package/dist/core/object/describe.d.ts.map +1 -1
  82. package/dist/core/object/describe.js +8 -13
  83. package/dist/core/object/describe.js.map +1 -1
  84. package/dist/core/object/gen-types.d.ts +2 -1
  85. package/dist/core/object/gen-types.d.ts.map +1 -1
  86. package/dist/core/object/gen-types.js +16 -18
  87. package/dist/core/object/gen-types.js.map +1 -1
  88. package/dist/core/object/registry.d.ts +10 -0
  89. package/dist/core/object/registry.d.ts.map +1 -1
  90. package/dist/core/object/registry.js +10 -0
  91. package/dist/core/object/registry.js.map +1 -1
  92. package/dist/core/object/validate/field.d.ts +13 -0
  93. package/dist/core/object/validate/field.d.ts.map +1 -0
  94. package/dist/core/object/validate/field.js +502 -0
  95. package/dist/core/object/validate/field.js.map +1 -0
  96. package/dist/core/object/validate/formulas.d.ts +8 -0
  97. package/dist/core/object/validate/formulas.d.ts.map +1 -0
  98. package/dist/core/object/validate/formulas.js +112 -0
  99. package/dist/core/object/validate/formulas.js.map +1 -0
  100. package/dist/core/object/validate/indexes.d.ts +5 -0
  101. package/dist/core/object/validate/indexes.d.ts.map +1 -0
  102. package/dist/core/object/validate/indexes.js +21 -0
  103. package/dist/core/object/validate/indexes.js.map +1 -0
  104. package/dist/core/object/validate/labels.d.ts +4 -0
  105. package/dist/core/object/validate/labels.d.ts.map +1 -0
  106. package/dist/core/object/validate/labels.js +21 -0
  107. package/dist/core/object/validate/labels.js.map +1 -0
  108. package/dist/core/object/validate/object.d.ts +24 -0
  109. package/dist/core/object/validate/object.d.ts.map +1 -0
  110. package/dist/core/object/validate/object.js +130 -0
  111. package/dist/core/object/validate/object.js.map +1 -0
  112. package/dist/core/object/validate/permissions.d.ts +4 -0
  113. package/dist/core/object/validate/permissions.d.ts.map +1 -0
  114. package/dist/core/object/validate/permissions.js +69 -0
  115. package/dist/core/object/validate/permissions.js.map +1 -0
  116. package/dist/core/object/validate/primitives.d.ts +34 -0
  117. package/dist/core/object/validate/primitives.d.ts.map +1 -0
  118. package/dist/core/object/validate/primitives.js +57 -0
  119. package/dist/core/object/validate/primitives.js.map +1 -0
  120. package/dist/core/object/validate.d.ts +5 -18
  121. package/dist/core/object/validate.d.ts.map +1 -1
  122. package/dist/core/object/validate.js +4 -816
  123. package/dist/core/object/validate.js.map +1 -1
  124. package/dist/core/script/index.d.ts +1 -1
  125. package/dist/core/script/index.d.ts.map +1 -1
  126. package/dist/core/script/index.js +1 -1
  127. package/dist/core/script/index.js.map +1 -1
  128. package/dist/core/script/source.d.ts +9 -0
  129. package/dist/core/script/source.d.ts.map +1 -1
  130. package/dist/core/script/source.js +46 -4
  131. package/dist/core/script/source.js.map +1 -1
  132. package/dist/core/storage/diff.d.ts +2 -1
  133. package/dist/core/storage/diff.d.ts.map +1 -1
  134. package/dist/core/storage/diff.js +7 -7
  135. package/dist/core/storage/diff.js.map +1 -1
  136. package/dist/core/storage/map.d.ts +6 -3
  137. package/dist/core/storage/map.d.ts.map +1 -1
  138. package/dist/core/storage/map.js +23 -22
  139. package/dist/core/storage/map.js.map +1 -1
  140. package/dist/core/storage/migrate.js +1 -1
  141. package/dist/core/storage/migrate.js.map +1 -1
  142. package/dist/core/storage/report.d.ts +2 -1
  143. package/dist/core/storage/report.d.ts.map +1 -1
  144. package/dist/core/storage/report.js +3 -3
  145. package/dist/core/storage/report.js.map +1 -1
  146. package/dist/core/types/field-type.d.ts +38 -0
  147. package/dist/core/types/field-type.d.ts.map +1 -0
  148. package/dist/core/types/field-type.js +12 -0
  149. package/dist/core/types/field-type.js.map +1 -0
  150. package/dist/core/types/fields.d.ts +22 -3
  151. package/dist/core/types/fields.d.ts.map +1 -1
  152. package/dist/core/types/index.d.ts +4 -3
  153. package/dist/core/types/index.d.ts.map +1 -1
  154. package/dist/core/types/index.js +2 -1
  155. package/dist/core/types/index.js.map +1 -1
  156. package/dist/core/types/registry.d.ts +19 -31
  157. package/dist/core/types/registry.d.ts.map +1 -1
  158. package/dist/core/types/registry.js +53 -19
  159. package/dist/core/types/registry.js.map +1 -1
  160. package/dist/core/types/values.d.ts +8 -1
  161. package/dist/core/types/values.d.ts.map +1 -1
  162. package/dist/core/types/values.js.map +1 -1
  163. package/dist/index.d.ts +2 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +17 -1
  166. package/dist/index.js.map +1 -1
  167. package/dist/runtime/engine.d.ts +11 -1
  168. package/dist/runtime/engine.d.ts.map +1 -1
  169. package/dist/runtime/engine.js.map +1 -1
  170. package/dist/runtime/fieldtypes/index.d.ts +3 -0
  171. package/dist/runtime/fieldtypes/index.d.ts.map +1 -0
  172. package/dist/runtime/fieldtypes/index.js +2 -0
  173. package/dist/runtime/fieldtypes/index.js.map +1 -0
  174. package/dist/runtime/fieldtypes/loader.d.ts +21 -0
  175. package/dist/runtime/fieldtypes/loader.d.ts.map +1 -0
  176. package/dist/runtime/fieldtypes/loader.js +125 -0
  177. package/dist/runtime/fieldtypes/loader.js.map +1 -0
  178. package/dist/runtime/git/loader.d.ts +2 -1
  179. package/dist/runtime/git/loader.d.ts.map +1 -1
  180. package/dist/runtime/git/loader.js +12 -3
  181. package/dist/runtime/git/loader.js.map +1 -1
  182. package/dist/runtime/git/sync.d.ts +3 -1
  183. package/dist/runtime/git/sync.d.ts.map +1 -1
  184. package/dist/runtime/git/sync.js +5 -1
  185. package/dist/runtime/git/sync.js.map +1 -1
  186. package/dist/runtime/sql-analyzer/index.d.ts +7 -0
  187. package/dist/runtime/sql-analyzer/index.d.ts.map +1 -1
  188. package/dist/runtime/sql-analyzer/index.js +29 -0
  189. package/dist/runtime/sql-analyzer/index.js.map +1 -1
  190. package/dist/subsystems/script/backend/isolated-vm.d.ts.map +1 -1
  191. package/dist/subsystems/script/backend/isolated-vm.js +3 -10
  192. package/dist/subsystems/script/backend/isolated-vm.js.map +1 -1
  193. package/dist/version.d.ts +1 -1
  194. package/dist/version.js +1 -1
  195. package/package.json +1 -1
@@ -1,12 +1,14 @@
1
1
  import { FIELD_TYPES, primaryFieldOf } from '../types/index.js';
2
+ import { DEFAULT_FIELD_TYPE_REGISTRY, fieldBase, } from '../types/index.js';
2
3
  /**
3
4
  * Compile object definitions into object-level TypeScript types
4
5
  * (`generated/types.ts`). This is the bridge from contract-level to
5
6
  * object-level type safety: consumers `import type { Lead } from './generated/types'`
6
7
  * and call `objects<Lead>('lead')`.
7
8
  *
8
- * Pure function, zero dependencies. Field→TS mapping is driven by the
9
- * `FIELD_TYPES` single source of truth (no hardcoded literals).
9
+ * Pure function, zero dependencies. Field→TS mapping is driven by the field
10
+ * type's **base** (resolved through the registry), so registered types inherit
11
+ * their base's TS type.
10
12
  */
11
13
  /** snake_case → PascalCase (lead → Lead, crm_lead → CrmLead) */
12
14
  function pascalCase(snake) {
@@ -20,11 +22,11 @@ function quote(value) {
20
22
  return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
21
23
  }
22
24
  /** primary key scalar type of a relation target (fallback: string) */
23
- function relatedPk(target, defs) {
25
+ function relatedPk(target, defs, registry) {
24
26
  const pk = primaryFieldOf(defs.get(target));
25
27
  if (pk === undefined)
26
28
  return 'string';
27
- const ts = tsTypeOf(pk, defs);
29
+ const ts = tsTypeOf(pk, defs, registry);
28
30
  return ts === null ? 'string' : ts;
29
31
  }
30
32
  function enumType(field) {
@@ -32,18 +34,14 @@ function enumType(field) {
32
34
  return field.multiple === true ? `(${union})[]` : union;
33
35
  }
34
36
  /** TS type for a field; null = excluded from the generated interface */
35
- function tsTypeOf(field, defs) {
36
- switch (field.type) {
37
+ function tsTypeOf(field, defs, registry) {
38
+ const base = fieldBase(registry, field.type);
39
+ switch (base) {
37
40
  case FIELD_TYPES.STRING:
38
41
  case FIELD_TYPES.TEXT:
39
42
  case FIELD_TYPES.DATETIME:
40
43
  case FIELD_TYPES.DATE:
41
44
  case FIELD_TYPES.SEQ_NO:
42
- case FIELD_TYPES.FIRST_NAME:
43
- case FIELD_TYPES.LAST_NAME:
44
- case FIELD_TYPES.EMAIL:
45
- case FIELD_TYPES.PHONE:
46
- case FIELD_TYPES.IMAGE:
47
45
  return 'string';
48
46
  case FIELD_TYPES.INTEGER:
49
47
  case FIELD_TYPES.NUMBER:
@@ -56,26 +54,26 @@ function tsTypeOf(field, defs) {
56
54
  case FIELD_TYPES.ENUM:
57
55
  return enumType(field);
58
56
  case FIELD_TYPES.RELATION:
59
- case FIELD_TYPES.PERSON:
60
- case FIELD_TYPES.DEPARTMENT:
61
- return relatedPk(field.target, defs);
57
+ return relatedPk(field.target, defs, registry);
62
58
  case FIELD_TYPES.MULTI_RELATION:
63
- return `${relatedPk(field.target, defs)}[]`;
59
+ return `${relatedPk(field.target, defs, registry)}[]`;
64
60
  case FIELD_TYPES.DETAILS:
65
61
  // child rows are managed via their own object; not embedded in the parent
66
62
  return null;
63
+ default:
64
+ return 'unknown';
67
65
  }
68
66
  }
69
67
  /** compile a set of object definitions into TS interface declarations */
70
- export function generateObjectTypes(objects) {
68
+ export function generateObjectTypes(objects, registry = DEFAULT_FIELD_TYPE_REGISTRY) {
71
69
  const defs = new Map(objects.map((obj) => [obj.name, obj]));
72
70
  const lines = ['// Generated by @weave-kit/engine — do not edit.', ''];
73
71
  for (const obj of objects) {
74
72
  lines.push(`export interface ${pascalCase(obj.name)} {`);
75
73
  for (const field of obj.fields) {
76
- if (field.type === FIELD_TYPES.DETAILS)
74
+ if (fieldBase(registry, field.type) === FIELD_TYPES.DETAILS)
77
75
  continue;
78
- const ts = tsTypeOf(field, defs);
76
+ const ts = tsTypeOf(field, defs, registry);
79
77
  if (ts === null)
80
78
  continue;
81
79
  const optional = ('required' in field && field.required === true) || field.primary === true ? '' : '?';
@@ -1 +1 @@
1
- {"version":3,"file":"gen-types.js","sourceRoot":"","sources":["../../../src/core/object/gen-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gen-types.js","sourceRoot":"","sources":["../../../src/core/object/gen-types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ObjectDefinition } from '../types/index.js';
2
+ import { type FieldTypeRegistry } from '../types/index.js';
2
3
  import { RelationGraph, type BuildGraphOptions } from './graph.js';
3
4
  import { type ValidateOptions } from './validate.js';
4
5
  /**
@@ -7,9 +8,18 @@ import { type ValidateOptions } from './validate.js';
7
8
  * Register validates each object (self-contained checks only — cross-object
8
9
  * checks happen in {@link buildGraph}) and rejects duplicates. `buildGraph`
9
10
  * then validates relations across the whole set and derives the relation graph.
11
+ *
12
+ * The effective {@link FieldTypeRegistry} (built-ins + user registrations) is
13
+ * carried on the registry so downstream consumers (describe/MCP) can resolve
14
+ * registered types without re-threading options.
10
15
  */
11
16
  export declare class ObjectRegistry {
12
17
  private readonly defs;
18
+ /** the effective field-type registry this set was validated against */
19
+ readonly fieldTypes: FieldTypeRegistry;
20
+ constructor(options?: {
21
+ fieldTypes?: FieldTypeRegistry;
22
+ });
13
23
  /** validate and store one object definition; throws on duplicate name */
14
24
  register(input: unknown, options?: ValidateOptions): ObjectDefinition;
15
25
  /** look up an object by name */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/object/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAc,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAE5D,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,gBAAgB;IASrE,gCAAgC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/C,oDAAoD;IACpD,IAAI,IAAI,gBAAgB,EAAE;IAI1B,2EAA2E;IAC3E,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,aAAa;CAGvD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,gBAAgB,CAExF"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/object/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAc,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAE3B,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,iBAAiB,CAAA;KAAO;IAI5D,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,gBAAgB;IASrE,gCAAgC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/C,oDAAoD;IACpD,IAAI,IAAI,gBAAgB,EAAE;IAI1B,2EAA2E;IAC3E,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,aAAa;CAGvD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,gBAAgB,CAExF"}
@@ -1,4 +1,5 @@
1
1
  import { SchemaError } from '../types/errors.js';
2
+ import { DEFAULT_FIELD_TYPE_REGISTRY } from '../types/index.js';
2
3
  import { buildGraph, RelationGraph } from './graph.js';
3
4
  import { validateObject } from './validate.js';
4
5
  /**
@@ -7,9 +8,18 @@ import { validateObject } from './validate.js';
7
8
  * Register validates each object (self-contained checks only — cross-object
8
9
  * checks happen in {@link buildGraph}) and rejects duplicates. `buildGraph`
9
10
  * then validates relations across the whole set and derives the relation graph.
11
+ *
12
+ * The effective {@link FieldTypeRegistry} (built-ins + user registrations) is
13
+ * carried on the registry so downstream consumers (describe/MCP) can resolve
14
+ * registered types without re-threading options.
10
15
  */
11
16
  export class ObjectRegistry {
12
17
  defs = new Map();
18
+ /** the effective field-type registry this set was validated against */
19
+ fieldTypes;
20
+ constructor(options = {}) {
21
+ this.fieldTypes = options.fieldTypes ?? DEFAULT_FIELD_TYPE_REGISTRY;
22
+ }
13
23
  /** validate and store one object definition; throws on duplicate name */
14
24
  register(input, options) {
15
25
  const def = validateObject(input, options);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/object/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAA0B,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IACR,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE5D,yEAAyE;IACzE,QAAQ,CAAC,KAAc,EAAE,OAAyB;QAChD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,oDAAoD;IACpD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,UAAU,CAAC,OAA2B;QACpC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAAyB;IACpE,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/object/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,2BAA2B,EAA0B,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,aAAa,EAA0B,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AAErE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,cAAc;IACR,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,uEAAuE;IAC9D,UAAU,CAAoB;IAEvC,YAAY,UAA8C,EAAE;QAC1D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,2BAA2B,CAAC;IACtE,CAAC;IAED,yEAAyE;IACzE,QAAQ,CAAC,KAAc,EAAE,OAAyB;QAChD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,oDAAoD;IACpD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,UAAU,CAAC,OAA2B;QACpC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAAyB;IACpE,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { FieldDefinition } from '../../types/index.js';
2
+ import { type FieldTypeRegistry } from '../../types/index.js';
3
+ import { type Vc } from './primitives.js';
4
+ /** validation options for a single field (built-in + registered types) */
5
+ export interface FieldValidateOptions {
6
+ /** field-type whitelist (config `features.fieldTypes`), fail-closed when provided */
7
+ allowedFieldTypes?: readonly string[];
8
+ /** the effective field-type registry (built-ins + user registrations) */
9
+ fieldTypes?: FieldTypeRegistry;
10
+ }
11
+ /** validate a single field definition into its typed discriminated-union member */
12
+ export declare function validateField(raw: unknown, vc: Vc, options?: FieldValidateOptions): FieldDefinition;
13
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../../src/core/object/validate/field.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAaL,KAAK,EAAE,EACR,MAAM,iBAAiB,CAAC;AAuGzB,0EAA0E;AAC1E,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,yEAAyE;IACzE,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,oBAAyB,GAAG,eAAe,CAwTvG"}