@revisium/schema-toolkit 0.20.2 → 0.21.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 (96) hide show
  1. package/README.md +216 -0
  2. package/dist/FormulaPathBuilder-BUJRR0Am.d.cts +48 -0
  3. package/dist/FormulaPathBuilder-QR0htn-e.d.ts +48 -0
  4. package/dist/chunk-2NARA22J.js +3 -0
  5. package/dist/{chunk-NY3H6C7K.js.map → chunk-2NARA22J.js.map} +1 -1
  6. package/dist/{chunk-EGC32GPY.cjs → chunk-3DDUT57J.cjs} +21 -21
  7. package/dist/chunk-3DDUT57J.cjs.map +1 -0
  8. package/dist/{chunk-LLHQWDAR.js → chunk-62A5JJJ3.js} +21 -21
  9. package/dist/chunk-62A5JJJ3.js.map +1 -0
  10. package/dist/{chunk-R4CFU33U.js → chunk-BIBFHULN.js} +12 -9
  11. package/dist/chunk-BIBFHULN.js.map +1 -0
  12. package/dist/chunk-BZWL424W.cjs +4 -0
  13. package/dist/{chunk-G6ZKEVVU.cjs.map → chunk-BZWL424W.cjs.map} +1 -1
  14. package/dist/{chunk-J6SCHJKG.cjs → chunk-CGVYS7EK.cjs} +2 -2
  15. package/dist/chunk-CGVYS7EK.cjs.map +1 -0
  16. package/dist/{chunk-MPF6VCB5.js → chunk-DRPNJ4YP.js} +2 -2
  17. package/dist/chunk-DRPNJ4YP.js.map +1 -0
  18. package/dist/{chunk-FZ2MS4Q5.cjs → chunk-F4POD7AE.cjs} +149 -90
  19. package/dist/chunk-F4POD7AE.cjs.map +1 -0
  20. package/dist/{chunk-B3T6YB2D.cjs → chunk-HH2LDPVV.cjs} +30 -30
  21. package/dist/chunk-HH2LDPVV.cjs.map +1 -0
  22. package/dist/{chunk-46ME2TAU.cjs → chunk-JWYYVKRT.cjs} +7 -7
  23. package/dist/{chunk-46ME2TAU.cjs.map → chunk-JWYYVKRT.cjs.map} +1 -1
  24. package/dist/{chunk-U5YDA3LA.js → chunk-MK3IKVZO.js} +80 -24
  25. package/dist/chunk-MK3IKVZO.js.map +1 -0
  26. package/dist/{chunk-VGADCIBG.cjs → chunk-SBO2UMI3.cjs} +14 -8
  27. package/dist/chunk-SBO2UMI3.cjs.map +1 -0
  28. package/dist/{chunk-55AMH44G.js → chunk-TKMR6CQW.js} +30 -30
  29. package/dist/chunk-TKMR6CQW.js.map +1 -0
  30. package/dist/{chunk-3JZKQWQH.js → chunk-TMCRV6V5.js} +7 -7
  31. package/dist/{chunk-3JZKQWQH.js.map → chunk-TMCRV6V5.js.map} +1 -1
  32. package/dist/{chunk-QEV4Q4TR.js → chunk-UTSL45Q4.js} +32 -32
  33. package/dist/chunk-UTSL45Q4.js.map +1 -0
  34. package/dist/{chunk-V6JTSET2.cjs → chunk-Z7M4ZGC6.cjs} +51 -51
  35. package/dist/chunk-Z7M4ZGC6.cjs.map +1 -0
  36. package/dist/core/index.cjs +60 -62
  37. package/dist/core/index.d.cts +6 -4
  38. package/dist/core/index.d.ts +6 -4
  39. package/dist/core/index.js +1 -3
  40. package/dist/formula/index.d.cts +1 -1
  41. package/dist/formula/index.d.ts +1 -1
  42. package/dist/index.cjs +237 -214
  43. package/dist/index.d.cts +8 -7
  44. package/dist/index.d.ts +8 -7
  45. package/dist/index.js +9 -10
  46. package/dist/{json-patch.types-DY7k9hxy.d.ts → json-patch.types-BpVnp08Z.d.ts} +1 -1
  47. package/dist/{json-patch.types-Cu0Medki.d.cts → json-patch.types-eM6pYC2P.d.cts} +1 -1
  48. package/dist/{json-string.store-C58zbl31.d.ts → json-string.store-DfdLcgnM.d.ts} +11 -11
  49. package/dist/{json-string.store-DuI--IL2.d.cts → json-string.store-cAOADo23.d.cts} +11 -11
  50. package/dist/lib/index.cjs +41 -42
  51. package/dist/lib/index.d.cts +3 -3
  52. package/dist/lib/index.d.ts +3 -3
  53. package/dist/lib/index.js +4 -5
  54. package/dist/mocks/index.cjs +30 -19
  55. package/dist/mocks/index.d.cts +22 -8
  56. package/dist/mocks/index.d.ts +22 -8
  57. package/dist/mocks/index.js +2 -3
  58. package/dist/model/index.cjs +85 -76
  59. package/dist/model/index.d.cts +158 -346
  60. package/dist/model/index.d.ts +158 -346
  61. package/dist/model/index.js +4 -7
  62. package/dist/plugins/index.cjs +19 -20
  63. package/dist/plugins/index.d.cts +10 -10
  64. package/dist/plugins/index.d.ts +10 -10
  65. package/dist/plugins/index.js +1 -2
  66. package/dist/{schema.types-B5OgKLpV.d.cts → schema.types-On_VGw2m.d.cts} +7 -6
  67. package/dist/{schema.types-B5OgKLpV.d.ts → schema.types-On_VGw2m.d.ts} +7 -6
  68. package/dist/typed-BinPIf3R.d.ts +455 -0
  69. package/dist/typed-LSaUJayS.d.cts +455 -0
  70. package/dist/types/index.cjs +5 -6
  71. package/dist/types/index.d.cts +7 -5
  72. package/dist/types/index.d.ts +7 -5
  73. package/dist/types/index.js +1 -2
  74. package/dist/{FormulaPathBuilder-DwlKOvVB.d.ts → types-BIvIURgy.d.cts} +37 -82
  75. package/dist/{FormulaPathBuilder-D9LkBcSv.d.cts → types-C_pTFtSY.d.ts} +37 -82
  76. package/package.json +1 -1
  77. package/dist/chunk-3IKI64T2.js +0 -3
  78. package/dist/chunk-3IKI64T2.js.map +0 -1
  79. package/dist/chunk-55AMH44G.js.map +0 -1
  80. package/dist/chunk-B3T6YB2D.cjs.map +0 -1
  81. package/dist/chunk-EGC32GPY.cjs.map +0 -1
  82. package/dist/chunk-FZ2MS4Q5.cjs.map +0 -1
  83. package/dist/chunk-G6ZKEVVU.cjs +0 -4
  84. package/dist/chunk-J6SCHJKG.cjs.map +0 -1
  85. package/dist/chunk-LLHQWDAR.js.map +0 -1
  86. package/dist/chunk-MPF6VCB5.js.map +0 -1
  87. package/dist/chunk-NY3H6C7K.js +0 -3
  88. package/dist/chunk-QEV4Q4TR.js.map +0 -1
  89. package/dist/chunk-R4CFU33U.js.map +0 -1
  90. package/dist/chunk-TBFTADML.cjs +0 -4
  91. package/dist/chunk-TBFTADML.cjs.map +0 -1
  92. package/dist/chunk-U5YDA3LA.js.map +0 -1
  93. package/dist/chunk-V6JTSET2.cjs.map +0 -1
  94. package/dist/chunk-VGADCIBG.cjs.map +0 -1
  95. package/dist/json-value-patch.types-CgiEpchp.d.ts +0 -24
  96. package/dist/json-value-patch.types-LEJxcIWR.d.cts +0 -24
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk46ME2TAU_cjs = require('./chunk-46ME2TAU.cjs');
4
- var chunkVGADCIBG_cjs = require('./chunk-VGADCIBG.cjs');
3
+ var chunkJWYYVKRT_cjs = require('./chunk-JWYYVKRT.cjs');
4
+ var chunkSBO2UMI3_cjs = require('./chunk-SBO2UMI3.cjs');
5
5
  var nanoid = require('nanoid');
6
6
  var formula = require('@revisium/formula');
7
7
 
@@ -68,7 +68,7 @@ var FormulaPath = class {
68
68
  resolveRootPath(rootPath) {
69
69
  const path = rootPath.startsWith("/") ? rootPath.slice(1) : rootPath;
70
70
  if (!path) {
71
- return chunk46ME2TAU_cjs.EMPTY_PATH;
71
+ return chunkJWYYVKRT_cjs.EMPTY_PATH;
72
72
  }
73
73
  try {
74
74
  return this.parseFormulaPath(path);
@@ -78,7 +78,7 @@ var FormulaPath = class {
78
78
  }
79
79
  parseFormulaPath(formulaPath) {
80
80
  const parts = formulaPath.split(".");
81
- let result = chunk46ME2TAU_cjs.EMPTY_PATH;
81
+ let result = chunkJWYYVKRT_cjs.EMPTY_PATH;
82
82
  for (const part of parts) {
83
83
  if (!part) {
84
84
  throw new Error(`Invalid path: empty segment`);
@@ -106,7 +106,7 @@ var ParsedFormula = class {
106
106
  this.astNode = parseResult.ast;
107
107
  const formulaPath = tree.pathOf(formulaNodeId);
108
108
  if (formulaPath.isEmpty() && tree.root().id() !== formulaNodeId) {
109
- throw new chunk46ME2TAU_cjs.FormulaError("Formula node not found in tree", formulaNodeId);
109
+ throw new chunkJWYYVKRT_cjs.FormulaError("Formula node not found in tree", formulaNodeId);
110
110
  }
111
111
  const deps = [];
112
112
  const astPathToNodeId = /* @__PURE__ */ new Map();
@@ -117,20 +117,20 @@ var ParsedFormula = class {
117
117
  depPath
118
118
  );
119
119
  if (!targetNodeId) {
120
- throw new chunk46ME2TAU_cjs.FormulaError(
120
+ throw new chunkJWYYVKRT_cjs.FormulaError(
121
121
  `Cannot resolve formula dependency: ${depPath}`,
122
122
  formulaNodeId,
123
123
  "Path not found in schema"
124
124
  );
125
125
  }
126
126
  if (targetNodeId === formulaNodeId) {
127
- throw new chunk46ME2TAU_cjs.FormulaError(
127
+ throw new chunkJWYYVKRT_cjs.FormulaError(
128
128
  "Formula cannot reference itself",
129
129
  formulaNodeId,
130
130
  "Self-reference detected"
131
131
  );
132
132
  }
133
- deps.push(new chunk46ME2TAU_cjs.ResolvedDependency(targetNodeId));
133
+ deps.push(new chunkJWYYVKRT_cjs.ResolvedDependency(targetNodeId));
134
134
  astPathToNodeId.set(depPath, targetNodeId);
135
135
  }
136
136
  this.deps = deps;
@@ -294,7 +294,7 @@ var FormulaChangeDetector = class {
294
294
  }
295
295
  getSerializedExpression(formula, tree, nodeId) {
296
296
  try {
297
- const xFormula = chunk46ME2TAU_cjs.FormulaSerializer.toXFormula(tree, nodeId, formula);
297
+ const xFormula = chunkJWYYVKRT_cjs.FormulaSerializer.toXFormula(tree, nodeId, formula);
298
298
  return xFormula.expression;
299
299
  } catch {
300
300
  return null;
@@ -341,19 +341,19 @@ var SchemaParser = class {
341
341
  if (resolvedSchema) {
342
342
  return this.parseNode(resolvedSchema, name, refValue);
343
343
  }
344
- return chunk46ME2TAU_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
344
+ return chunkJWYYVKRT_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
345
345
  }
346
346
  const schemaWithType = schema;
347
347
  switch (schemaWithType.type) {
348
- case "object" /* Object */:
348
+ case "object":
349
349
  return this.parseObject(schemaWithType, name, parentRef);
350
- case "array" /* Array */:
350
+ case "array":
351
351
  return this.parseArray(schemaWithType, name, parentRef);
352
- case "string" /* String */:
352
+ case "string":
353
353
  return this.parseString(schemaWithType, name, parentRef);
354
- case "number" /* Number */:
354
+ case "number":
355
355
  return this.parseNumber(schemaWithType, name, parentRef);
356
- case "boolean" /* Boolean */:
356
+ case "boolean":
357
357
  return this.parseBoolean(schemaWithType, name, parentRef);
358
358
  default:
359
359
  throw new Error(`Unknown schema type: ${schemaWithType.type}`);
@@ -367,14 +367,14 @@ var SchemaParser = class {
367
367
  children.push(this.parseNode(propSchema, propName));
368
368
  }
369
369
  }
370
- return chunk46ME2TAU_cjs.createObjectNode(nanoid.nanoid(), name, children, {
370
+ return chunkJWYYVKRT_cjs.createObjectNode(nanoid.nanoid(), name, children, {
371
371
  metadata: this.extractMetadata(schema),
372
372
  ref: ref2
373
373
  });
374
374
  }
375
375
  parseArray(schema, name, ref2) {
376
376
  const items = this.parseNode(schema.items, "items");
377
- return chunk46ME2TAU_cjs.createArrayNode(nanoid.nanoid(), name, items, {
377
+ return chunkJWYYVKRT_cjs.createArrayNode(nanoid.nanoid(), name, items, {
378
378
  metadata: this.extractMetadata(schema),
379
379
  ref: ref2
380
380
  });
@@ -382,7 +382,7 @@ var SchemaParser = class {
382
382
  parseString(schema, name, ref2) {
383
383
  const nodeId = nanoid.nanoid();
384
384
  this.collectFormula(nodeId, schema["x-formula"]);
385
- return chunk46ME2TAU_cjs.createStringNode(nodeId, name, {
385
+ return chunkJWYYVKRT_cjs.createStringNode(nodeId, name, {
386
386
  defaultValue: schema.default,
387
387
  foreignKey: schema.foreignKey,
388
388
  metadata: this.extractMetadata(schema),
@@ -392,7 +392,7 @@ var SchemaParser = class {
392
392
  parseNumber(schema, name, ref2) {
393
393
  const nodeId = nanoid.nanoid();
394
394
  this.collectFormula(nodeId, schema["x-formula"]);
395
- return chunk46ME2TAU_cjs.createNumberNode(nodeId, name, {
395
+ return chunkJWYYVKRT_cjs.createNumberNode(nodeId, name, {
396
396
  defaultValue: schema.default,
397
397
  metadata: this.extractMetadata(schema),
398
398
  ref: ref2
@@ -401,7 +401,7 @@ var SchemaParser = class {
401
401
  parseBoolean(schema, name, ref2) {
402
402
  const nodeId = nanoid.nanoid();
403
403
  this.collectFormula(nodeId, schema["x-formula"]);
404
- return chunk46ME2TAU_cjs.createBooleanNode(nodeId, name, {
404
+ return chunkJWYYVKRT_cjs.createBooleanNode(nodeId, name, {
405
405
  defaultValue: schema.default,
406
406
  metadata: this.extractMetadata(schema),
407
407
  ref: ref2
@@ -434,13 +434,13 @@ var NodeFactory = class {
434
434
  createNode(name, type) {
435
435
  switch (type) {
436
436
  case "string":
437
- return chunk46ME2TAU_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
437
+ return chunkJWYYVKRT_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
438
438
  case "number":
439
- return chunk46ME2TAU_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
439
+ return chunkJWYYVKRT_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
440
440
  case "boolean":
441
- return chunk46ME2TAU_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
441
+ return chunkJWYYVKRT_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
442
442
  case "object":
443
- return chunk46ME2TAU_cjs.createObjectNode(nanoid.nanoid(), name, []);
443
+ return chunkJWYYVKRT_cjs.createObjectNode(nanoid.nanoid(), name, []);
444
444
  case "array":
445
445
  return this.createArrayNodeInternal(name);
446
446
  default:
@@ -448,11 +448,11 @@ var NodeFactory = class {
448
448
  }
449
449
  }
450
450
  createArrayNodeInternal(name) {
451
- const items = chunk46ME2TAU_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
452
- return chunk46ME2TAU_cjs.createArrayNode(nanoid.nanoid(), name, items);
451
+ const items = chunkJWYYVKRT_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
452
+ return chunkJWYYVKRT_cjs.createArrayNode(nanoid.nanoid(), name, items);
453
453
  }
454
454
  createArrayNodeWithItems(name, items) {
455
- return chunk46ME2TAU_cjs.createArrayNode(nanoid.nanoid(), name, items);
455
+ return chunkJWYYVKRT_cjs.createArrayNode(nanoid.nanoid(), name, items);
456
456
  }
457
457
  };
458
458
 
@@ -464,10 +464,10 @@ function isRefSchema(schema) {
464
464
  return "$ref" in schema;
465
465
  }
466
466
  function isObjectSchema(schema) {
467
- return "type" in schema && schema.type === "object" /* Object */;
467
+ return "type" in schema && schema.type === "object";
468
468
  }
469
469
  function isArraySchema(schema) {
470
- return "type" in schema && schema.type === "array" /* Array */;
470
+ return "type" in schema && schema.type === "array";
471
471
  }
472
472
  function hasDefaultValue(schema) {
473
473
  return "default" in schema && schema.default !== void 0;
@@ -477,11 +477,11 @@ function generatePrimitiveDefault(schema) {
477
477
  return void 0;
478
478
  }
479
479
  switch (schema.type) {
480
- case "string" /* String */:
480
+ case "string":
481
481
  return DEFAULT_STRING;
482
- case "number" /* Number */:
482
+ case "number":
483
483
  return DEFAULT_NUMBER;
484
- case "boolean" /* Boolean */:
484
+ case "boolean":
485
485
  return DEFAULT_BOOLEAN;
486
486
  default:
487
487
  return void 0;
@@ -551,7 +551,7 @@ var PrimitiveToArrayTransformer = class {
551
551
  const { sourceNode } = ctx;
552
552
  const itemsNode = sourceNode.cloneWithId(nanoid.nanoid());
553
553
  itemsNode.setName("items");
554
- const arrayNode = chunk46ME2TAU_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
554
+ const arrayNode = chunkJWYYVKRT_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
555
555
  return { node: arrayNode };
556
556
  }
557
557
  };
@@ -564,7 +564,7 @@ var ObjectToArrayTransformer = class {
564
564
  const { sourceNode } = ctx;
565
565
  const itemsNode = sourceNode.cloneWithId(nanoid.nanoid());
566
566
  itemsNode.setName("items");
567
- const arrayNode = chunk46ME2TAU_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
567
+ const arrayNode = chunkJWYYVKRT_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
568
568
  return { node: arrayNode };
569
569
  }
570
570
  };
@@ -606,7 +606,7 @@ var RefTransformer = class {
606
606
  const resolvedSchema = refSchemas?.[refUri];
607
607
  if (resolvedSchema) {
608
608
  const parser = new SchemaParser();
609
- const wrapperSchema = chunkVGADCIBG_cjs.obj({ temp: chunkVGADCIBG_cjs.ref(refUri) });
609
+ const wrapperSchema = chunkSBO2UMI3_cjs.obj({ temp: chunkSBO2UMI3_cjs.ref(refUri) });
610
610
  const resolvedNode = parser.parse(wrapperSchema, refSchemas);
611
611
  const tempNode = resolvedNode.property("temp");
612
612
  const newNode = tempNode.cloneWithId(sourceNode.id());
@@ -614,7 +614,7 @@ var RefTransformer = class {
614
614
  return { node: newNode };
615
615
  }
616
616
  const metadata = this.extractMetadata(targetSpec);
617
- const node = chunk46ME2TAU_cjs.createRefNode(sourceNode.id(), sourceNode.name(), refUri, metadata);
617
+ const node = chunkJWYYVKRT_cjs.createRefNode(sourceNode.id(), sourceNode.name(), refUri, metadata);
618
618
  return { node };
619
619
  }
620
620
  extractMetadata(spec) {
@@ -649,23 +649,23 @@ var DefaultTransformer = class {
649
649
  createNode(id, name, type, spec, metadata) {
650
650
  switch (type) {
651
651
  case "string":
652
- return chunk46ME2TAU_cjs.createStringNode(id, name, {
652
+ return chunkJWYYVKRT_cjs.createStringNode(id, name, {
653
653
  defaultValue: spec.default ?? "",
654
654
  foreignKey: spec.foreignKey,
655
655
  metadata
656
656
  });
657
657
  case "number":
658
- return chunk46ME2TAU_cjs.createNumberNode(id, name, {
658
+ return chunkJWYYVKRT_cjs.createNumberNode(id, name, {
659
659
  defaultValue: spec.default ?? 0,
660
660
  metadata
661
661
  });
662
662
  case "boolean":
663
- return chunk46ME2TAU_cjs.createBooleanNode(id, name, {
663
+ return chunkJWYYVKRT_cjs.createBooleanNode(id, name, {
664
664
  defaultValue: spec.default ?? false,
665
665
  metadata
666
666
  });
667
667
  case "object":
668
- return chunk46ME2TAU_cjs.createObjectNode(id, name, [], { metadata });
668
+ return chunkJWYYVKRT_cjs.createObjectNode(id, name, [], { metadata });
669
669
  case "array":
670
670
  return this.createArrayNode(id, name, metadata);
671
671
  default:
@@ -673,8 +673,8 @@ var DefaultTransformer = class {
673
673
  }
674
674
  }
675
675
  createArrayNode(id, name, metadata) {
676
- const items = chunk46ME2TAU_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
677
- return chunk46ME2TAU_cjs.createArrayNode(id, name, items, { metadata });
676
+ const items = chunkJWYYVKRT_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
677
+ return chunkJWYYVKRT_cjs.createArrayNode(id, name, items, { metadata });
678
678
  }
679
679
  extractMetadata(spec) {
680
680
  const meta = {};
@@ -738,8 +738,8 @@ function createTypeTransformChain(options) {
738
738
  var SchemaModelImpl = class {
739
739
  _baseTree;
740
740
  _currentTree;
741
- _patchBuilder = new chunk46ME2TAU_cjs.PatchBuilder();
742
- _serializer = new chunk46ME2TAU_cjs.SchemaSerializer();
741
+ _patchBuilder = new chunkJWYYVKRT_cjs.PatchBuilder();
742
+ _serializer = new chunkJWYYVKRT_cjs.SchemaSerializer();
743
743
  _nodeFactory = new NodeFactory();
744
744
  _formulaIndex = new FormulaDependencyIndex();
745
745
  _transformChain;
@@ -753,12 +753,12 @@ var SchemaModelImpl = class {
753
753
  });
754
754
  const parser = new SchemaParser();
755
755
  const rootNode = parser.parse(schema, this._refSchemas);
756
- this._currentTree = chunk46ME2TAU_cjs.createSchemaTree(rootNode);
756
+ this._currentTree = chunkJWYYVKRT_cjs.createSchemaTree(rootNode);
757
757
  parser.parseFormulas(this._currentTree);
758
758
  this._formulaParseErrors = parser.parseErrors;
759
759
  this._buildFormulaIndex();
760
760
  this._baseTree = this._currentTree.clone();
761
- chunk46ME2TAU_cjs.makeAutoObservable(this, {
761
+ chunkJWYYVKRT_cjs.makeAutoObservable(this, {
762
762
  _patchBuilder: false,
763
763
  _serializer: false,
764
764
  _nodeFactory: false,
@@ -787,10 +787,10 @@ var SchemaModelImpl = class {
787
787
  insertFieldAt(parentId, index, name, type) {
788
788
  const parent = this._currentTree.nodeById(parentId);
789
789
  if (parent.isNull() || !parent.isObject()) {
790
- return chunk46ME2TAU_cjs.NULL_NODE;
790
+ return chunkJWYYVKRT_cjs.NULL_NODE;
791
791
  }
792
792
  if (index < 0 || index > parent.properties().length) {
793
- return chunk46ME2TAU_cjs.NULL_NODE;
793
+ return chunkJWYYVKRT_cjs.NULL_NODE;
794
794
  }
795
795
  const node = this._nodeFactory.createNode(name, type);
796
796
  this._currentTree.insertChildAt(parentId, index, node);
@@ -1015,7 +1015,7 @@ var SchemaModelImpl = class {
1015
1015
  return "";
1016
1016
  }
1017
1017
  try {
1018
- return chunk46ME2TAU_cjs.FormulaSerializer.serializeExpression(
1018
+ return chunkJWYYVKRT_cjs.FormulaSerializer.serializeExpression(
1019
1019
  this._currentTree,
1020
1020
  nodeId,
1021
1021
  formula,
@@ -1026,10 +1026,10 @@ var SchemaModelImpl = class {
1026
1026
  }
1027
1027
  }
1028
1028
  get validationErrors() {
1029
- return chunk46ME2TAU_cjs.validateSchema(this._currentTree.root());
1029
+ return chunkJWYYVKRT_cjs.validateSchema(this._currentTree.root());
1030
1030
  }
1031
1031
  get formulaErrors() {
1032
- return [...this._formulaParseErrors, ...chunk46ME2TAU_cjs.validateFormulas(this._currentTree)];
1032
+ return [...this._formulaParseErrors, ...chunkJWYYVKRT_cjs.validateFormulas(this._currentTree)];
1033
1033
  }
1034
1034
  get isDirty() {
1035
1035
  return this.patches.length > 0;
@@ -1541,7 +1541,7 @@ var FormulaEngine = class {
1541
1541
  this.setupReactions();
1542
1542
  }
1543
1543
  evaluateAll() {
1544
- chunk46ME2TAU_cjs.runInAction(() => {
1544
+ chunkJWYYVKRT_cjs.runInAction(() => {
1545
1545
  for (const field of this.evaluationOrder) {
1546
1546
  this.evaluator.evaluate(field);
1547
1547
  }
@@ -1554,7 +1554,7 @@ var FormulaEngine = class {
1554
1554
  continue;
1555
1555
  }
1556
1556
  watchedNodes.add(depNode);
1557
- const disposer = chunk46ME2TAU_cjs.reaction(
1557
+ const disposer = chunkJWYYVKRT_cjs.reaction(
1558
1558
  () => depNode.value,
1559
1559
  () => this.handleDependencyChange(depNode)
1560
1560
  );
@@ -1564,7 +1564,7 @@ var FormulaEngine = class {
1564
1564
  }
1565
1565
  setupArrayReactions(node) {
1566
1566
  if (node.isArray()) {
1567
- const disposer = chunk46ME2TAU_cjs.reaction(
1567
+ const disposer = chunkJWYYVKRT_cjs.reaction(
1568
1568
  () => node.length,
1569
1569
  () => this.handleStructureChange()
1570
1570
  );
@@ -1584,7 +1584,7 @@ var FormulaEngine = class {
1584
1584
  this.dependencyMap,
1585
1585
  this.evaluationOrder
1586
1586
  );
1587
- chunk46ME2TAU_cjs.runInAction(() => {
1587
+ chunkJWYYVKRT_cjs.runInAction(() => {
1588
1588
  for (const field of affected) {
1589
1589
  this.evaluator.evaluate(field);
1590
1590
  }
@@ -1676,7 +1676,7 @@ var ArrayValueNode = class extends BaseValueNode {
1676
1676
  _nodeFactory = null;
1677
1677
  constructor(id, name, schema, items) {
1678
1678
  super(id, name, schema);
1679
- this._items = chunk46ME2TAU_cjs.observable.array();
1679
+ this._items = chunkJWYYVKRT_cjs.observable.array();
1680
1680
  this._baseItems = [];
1681
1681
  if (items) {
1682
1682
  for (const item of items) {
@@ -1685,7 +1685,7 @@ var ArrayValueNode = class extends BaseValueNode {
1685
1685
  }
1686
1686
  }
1687
1687
  this._baseItems = [...this._items];
1688
- chunk46ME2TAU_cjs.makeObservable(this, {
1688
+ chunkJWYYVKRT_cjs.makeObservable(this, {
1689
1689
  _items: "observable",
1690
1690
  _baseItems: "observable",
1691
1691
  value: "computed",
@@ -1702,7 +1702,8 @@ var ArrayValueNode = class extends BaseValueNode {
1702
1702
  commit: "action",
1703
1703
  revert: "action",
1704
1704
  pushValue: "action",
1705
- insertValueAt: "action"
1705
+ insertValueAt: "action",
1706
+ setValue: "action"
1706
1707
  });
1707
1708
  }
1708
1709
  get value() {
@@ -1783,6 +1784,32 @@ var ArrayValueNode = class extends BaseValueNode {
1783
1784
  const node = this.createItemNode(index, value);
1784
1785
  this.insertAt(index, node);
1785
1786
  }
1787
+ setValue(value, options) {
1788
+ const commonLength = Math.min(this._items.length, value.length);
1789
+ for (let i = 0; i < commonLength; i++) {
1790
+ const item = this._items[i];
1791
+ if (!item) {
1792
+ continue;
1793
+ }
1794
+ const itemValue = value[i];
1795
+ if (item.isObject()) {
1796
+ item.setValue(itemValue, options);
1797
+ } else if (item.isArray()) {
1798
+ item.setValue(itemValue, options);
1799
+ } else if (item.isPrimitive()) {
1800
+ item.setValue(itemValue, options);
1801
+ }
1802
+ }
1803
+ if (value.length > this._items.length) {
1804
+ for (let i = this._items.length; i < value.length; i++) {
1805
+ this.pushValue(value[i]);
1806
+ }
1807
+ } else if (value.length < this._items.length) {
1808
+ for (let i = this._items.length - 1; i >= value.length; i--) {
1809
+ this.removeAt(i);
1810
+ }
1811
+ }
1812
+ }
1786
1813
  createItemNode(index, value) {
1787
1814
  if (!this._nodeFactory) {
1788
1815
  throw new Error("NodeFactory not set");
@@ -1840,7 +1867,7 @@ var ArrayValueNode = class extends BaseValueNode {
1840
1867
  for (const item of this._items) {
1841
1868
  item.parent = null;
1842
1869
  }
1843
- this._items = chunk46ME2TAU_cjs.observable.array();
1870
+ this._items = chunkJWYYVKRT_cjs.observable.array();
1844
1871
  for (const baseItem of this._baseItems) {
1845
1872
  this._items.push(baseItem);
1846
1873
  }
@@ -1883,7 +1910,7 @@ var BasePrimitiveValueNode = class extends BaseValueNode {
1883
1910
  this._baseValue = initialValue;
1884
1911
  }
1885
1912
  initObservable() {
1886
- chunk46ME2TAU_cjs.makeObservable(this, {
1913
+ chunkJWYYVKRT_cjs.makeObservable(this, {
1887
1914
  _value: "observable",
1888
1915
  _baseValue: "observable",
1889
1916
  _formulaWarning: "observable",
@@ -2186,7 +2213,7 @@ var NumberValueNode = class extends BasePrimitiveValueNode {
2186
2213
  }
2187
2214
  computeErrors() {
2188
2215
  const errors = [];
2189
- if (!("type" in this.schema) || this.schema.type !== "number" /* Number */) {
2216
+ if (!("type" in this.schema) || this.schema.type !== "number") {
2190
2217
  return errors;
2191
2218
  }
2192
2219
  const numberSchema = this.schema;
@@ -2231,7 +2258,7 @@ var ObjectValueNode = class extends BaseValueNode {
2231
2258
  _baseChildren;
2232
2259
  constructor(id, name, schema, children) {
2233
2260
  super(id, name, schema);
2234
- this._children = chunk46ME2TAU_cjs.observable.map();
2261
+ this._children = chunkJWYYVKRT_cjs.observable.map();
2235
2262
  this._baseChildren = /* @__PURE__ */ new Map();
2236
2263
  if (children) {
2237
2264
  for (const child of children) {
@@ -2240,7 +2267,7 @@ var ObjectValueNode = class extends BaseValueNode {
2240
2267
  }
2241
2268
  }
2242
2269
  this._baseChildren = new Map(this._children);
2243
- chunk46ME2TAU_cjs.makeObservable(this, {
2270
+ chunkJWYYVKRT_cjs.makeObservable(this, {
2244
2271
  _children: "observable",
2245
2272
  _baseChildren: "observable",
2246
2273
  value: "computed",
@@ -2250,6 +2277,7 @@ var ObjectValueNode = class extends BaseValueNode {
2250
2277
  warnings: "computed",
2251
2278
  addChild: "action",
2252
2279
  removeChild: "action",
2280
+ setValue: "action",
2253
2281
  commit: "action",
2254
2282
  revert: "action"
2255
2283
  });
@@ -2288,6 +2316,21 @@ var ObjectValueNode = class extends BaseValueNode {
2288
2316
  this._children.delete(name);
2289
2317
  }
2290
2318
  }
2319
+ setValue(value, options) {
2320
+ for (const [key, child] of this._children) {
2321
+ if (!(key in value)) {
2322
+ continue;
2323
+ }
2324
+ const childValue = value[key];
2325
+ if (child.isObject()) {
2326
+ child.setValue(childValue, options);
2327
+ } else if (child.isArray()) {
2328
+ child.setValue(childValue, options);
2329
+ } else if (child.isPrimitive()) {
2330
+ child.setValue(childValue, options);
2331
+ }
2332
+ }
2333
+ }
2291
2334
  get isDirty() {
2292
2335
  if (this._children.size !== this._baseChildren.size) {
2293
2336
  return true;
@@ -2316,7 +2359,7 @@ var ObjectValueNode = class extends BaseValueNode {
2316
2359
  for (const child of this._children.values()) {
2317
2360
  child.parent = null;
2318
2361
  }
2319
- this._children = chunk46ME2TAU_cjs.observable.map();
2362
+ this._children = chunkJWYYVKRT_cjs.observable.map();
2320
2363
  for (const [key, value] of this._baseChildren) {
2321
2364
  this._children.set(key, value);
2322
2365
  }
@@ -2530,7 +2573,7 @@ var IndexSegment = class {
2530
2573
  };
2531
2574
 
2532
2575
  // src/core/value-path/ValuePath.ts
2533
- var ValuePathImpl = class _ValuePathImpl extends chunk46ME2TAU_cjs.AbstractBasePath {
2576
+ var ValuePathImpl = class _ValuePathImpl extends chunkJWYYVKRT_cjs.AbstractBasePath {
2534
2577
  asString() {
2535
2578
  const parts = [];
2536
2579
  for (const seg of this.segs) {
@@ -2796,7 +2839,7 @@ var ValueTree = class {
2796
2839
  this._root = _root;
2797
2840
  this.index = new TreeIndex(_root);
2798
2841
  this.changeTracker = new ChangeTracker();
2799
- chunk46ME2TAU_cjs.makeAutoObservable(this, {
2842
+ chunkJWYYVKRT_cjs.makeAutoObservable(this, {
2800
2843
  _root: false,
2801
2844
  index: false,
2802
2845
  changeTracker: false,
@@ -2843,20 +2886,23 @@ var ValueTree = class {
2843
2886
  const node = this.get(path);
2844
2887
  return node?.getPlainValue();
2845
2888
  }
2846
- setValue(path, value) {
2889
+ setValue(path, value, options) {
2847
2890
  const node = this.get(path);
2848
2891
  if (!node) {
2849
2892
  throw new Error(`Path not found: ${path}`);
2850
2893
  }
2851
- if (!node.isPrimitive()) {
2852
- throw new Error(`Cannot set value on non-primitive node: ${path}`);
2894
+ const oldValue = node.getPlainValue();
2895
+ if (node.isPrimitive()) {
2896
+ node.setValue(value, options);
2897
+ } else if (node.isObject()) {
2898
+ node.setValue(value, options);
2899
+ } else if (node.isArray()) {
2900
+ node.setValue(value, options);
2853
2901
  }
2854
- const oldValue = node.value;
2855
- node.setValue(value);
2856
2902
  this.changeTracker.track({
2857
2903
  type: "setValue",
2858
2904
  path: this.index.pathOf(node),
2859
- value,
2905
+ value: node.getPlainValue(),
2860
2906
  oldValue
2861
2907
  });
2862
2908
  }
@@ -2923,7 +2969,7 @@ var RowModelImpl = class {
2923
2969
  constructor(_rowId, _tree) {
2924
2970
  this._rowId = _rowId;
2925
2971
  this._tree = _tree;
2926
- chunk46ME2TAU_cjs.makeAutoObservable(this, {
2972
+ chunkJWYYVKRT_cjs.makeAutoObservable(this, {
2927
2973
  _rowId: false,
2928
2974
  _tree: false,
2929
2975
  _tableModel: "observable.ref"
@@ -3034,13 +3080,13 @@ var TableModelImpl = class {
3034
3080
  this._schema = createSchemaModel(options.schema, { refSchemas: options.refSchemas });
3035
3081
  this._fkResolver = options.fkResolver;
3036
3082
  this._refSchemas = options.refSchemas;
3037
- this._rows = chunk46ME2TAU_cjs.observable.array();
3083
+ this._rows = chunkJWYYVKRT_cjs.observable.array();
3038
3084
  if (options.rows) {
3039
3085
  for (const row of options.rows) {
3040
3086
  this._rows.push(this.createRow(row.rowId, row.data));
3041
3087
  }
3042
3088
  }
3043
- chunk46ME2TAU_cjs.makeAutoObservable(this, {
3089
+ chunkJWYYVKRT_cjs.makeAutoObservable(this, {
3044
3090
  _schema: false,
3045
3091
  _rows: false,
3046
3092
  _jsonSchema: false,
@@ -3171,13 +3217,13 @@ var ForeignKeyResolverImpl = class {
3171
3217
  constructor(options) {
3172
3218
  this.loader = options?.loader;
3173
3219
  this._prefetchEnabled = options?.prefetch ?? false;
3174
- this._schemaCache = chunk46ME2TAU_cjs.observable.map();
3175
- this._tableCache = chunk46ME2TAU_cjs.observable.map();
3220
+ this._schemaCache = chunkJWYYVKRT_cjs.observable.map();
3221
+ this._tableCache = chunkJWYYVKRT_cjs.observable.map();
3176
3222
  this._loadingTables = /* @__PURE__ */ new Set();
3177
3223
  this._loadingRows = /* @__PURE__ */ new Map();
3178
3224
  this._pendingTableLoads = /* @__PURE__ */ new Map();
3179
3225
  this._pendingRowLoads = /* @__PURE__ */ new Map();
3180
- chunk46ME2TAU_cjs.makeAutoObservable(this, {
3226
+ chunkJWYYVKRT_cjs.makeAutoObservable(this, {
3181
3227
  _schemaCache: false,
3182
3228
  _tableCache: false,
3183
3229
  _loadingTables: false,
@@ -3215,7 +3261,7 @@ var ForeignKeyResolverImpl = class {
3215
3261
  if (this._disposed) {
3216
3262
  return;
3217
3263
  }
3218
- chunk46ME2TAU_cjs.runInAction(() => {
3264
+ chunkJWYYVKRT_cjs.runInAction(() => {
3219
3265
  this._schemaCache.set(tableId, schema);
3220
3266
  });
3221
3267
  }
@@ -3223,12 +3269,12 @@ var ForeignKeyResolverImpl = class {
3223
3269
  if (this._disposed) {
3224
3270
  return;
3225
3271
  }
3226
- const rowMap = chunk46ME2TAU_cjs.observable.map();
3272
+ const rowMap = chunkJWYYVKRT_cjs.observable.map();
3227
3273
  for (const row of rows) {
3228
3274
  rowMap.set(row.rowId, row);
3229
3275
  }
3230
3276
  const cache = { schema, rows: rowMap };
3231
- chunk46ME2TAU_cjs.runInAction(() => {
3277
+ chunkJWYYVKRT_cjs.runInAction(() => {
3232
3278
  this._tableCache.set(tableId, cache);
3233
3279
  this._schemaCache.set(tableId, schema);
3234
3280
  });
@@ -3243,7 +3289,7 @@ var ForeignKeyResolverImpl = class {
3243
3289
  const table = this._tableCache.get(tableId);
3244
3290
  if (table) {
3245
3291
  const rowData = { rowId, data };
3246
- chunk46ME2TAU_cjs.runInAction(() => {
3292
+ chunkJWYYVKRT_cjs.runInAction(() => {
3247
3293
  table.rows.set(rowId, rowData);
3248
3294
  });
3249
3295
  if (this._prefetchEnabled) {
@@ -3257,7 +3303,7 @@ var ForeignKeyResolverImpl = class {
3257
3303
  }
3258
3304
  const schema = this._schemaCache.get(oldTableId);
3259
3305
  const tableCache = this._tableCache.get(oldTableId);
3260
- chunk46ME2TAU_cjs.runInAction(() => {
3306
+ chunkJWYYVKRT_cjs.runInAction(() => {
3261
3307
  if (schema) {
3262
3308
  this._schemaCache.delete(oldTableId);
3263
3309
  this._schemaCache.set(newTableId, schema);
@@ -3359,9 +3405,9 @@ var ForeignKeyResolverImpl = class {
3359
3405
  }
3360
3406
  ensureTableCache(tableId, schema) {
3361
3407
  if (!this._tableCache.has(tableId)) {
3362
- const rowMap = chunk46ME2TAU_cjs.observable.map();
3408
+ const rowMap = chunkJWYYVKRT_cjs.observable.map();
3363
3409
  const cache = { schema, rows: rowMap };
3364
- chunk46ME2TAU_cjs.runInAction(() => {
3410
+ chunkJWYYVKRT_cjs.runInAction(() => {
3365
3411
  this._tableCache.set(tableId, cache);
3366
3412
  });
3367
3413
  }
@@ -3445,7 +3491,7 @@ var ForeignKeyResolverImpl = class {
3445
3491
  return foreignKeys;
3446
3492
  }
3447
3493
  getForeignKeyFromSchema(schema) {
3448
- if ("type" in schema && schema.type === "string" /* String */) {
3494
+ if ("type" in schema && schema.type === "string") {
3449
3495
  return schema.foreignKey;
3450
3496
  }
3451
3497
  return void 0;
@@ -3461,7 +3507,7 @@ var DataModelImpl = class {
3461
3507
  _fk;
3462
3508
  _ownsFkResolver;
3463
3509
  constructor(options) {
3464
- this._tables = chunk46ME2TAU_cjs.observable.map();
3510
+ this._tables = chunkJWYYVKRT_cjs.observable.map();
3465
3511
  if (options?.fkResolver) {
3466
3512
  this._fk = options.fkResolver;
3467
3513
  this._ownsFkResolver = false;
@@ -3469,7 +3515,7 @@ var DataModelImpl = class {
3469
3515
  this._fk = createForeignKeyResolver();
3470
3516
  this._ownsFkResolver = true;
3471
3517
  }
3472
- chunk46ME2TAU_cjs.makeAutoObservable(this, {
3518
+ chunkJWYYVKRT_cjs.makeAutoObservable(this, {
3473
3519
  _tables: false,
3474
3520
  _fk: false,
3475
3521
  _ownsFkResolver: false
@@ -3549,6 +3595,16 @@ function createDataModel(options) {
3549
3595
  return new DataModelImpl(options);
3550
3596
  }
3551
3597
 
3598
+ // src/model/value-tree/typed.ts
3599
+ function typedNode(node) {
3600
+ return node;
3601
+ }
3602
+ function createTypedTree(schema, data, options) {
3603
+ const factory = createNodeFactory(options);
3604
+ const root = factory.createTree(schema, data);
3605
+ return new ValueTree(root);
3606
+ }
3607
+
3552
3608
  exports.ArrayToItemsTypeTransformer = ArrayToItemsTypeTransformer;
3553
3609
  exports.ArrayValueNode = ArrayValueNode;
3554
3610
  exports.BasePrimitiveValueNode = BasePrimitiveValueNode;
@@ -3577,6 +3633,7 @@ exports.SchemaParser = SchemaParser;
3577
3633
  exports.StringValueNode = StringValueNode;
3578
3634
  exports.TableModelImpl = TableModelImpl;
3579
3635
  exports.TypeTransformChain = TypeTransformChain;
3636
+ exports.ValueTree = ValueTree;
3580
3637
  exports.ValueType = ValueType;
3581
3638
  exports.createDataModel = createDataModel;
3582
3639
  exports.createDefaultRegistry = createDefaultRegistry;
@@ -3586,10 +3643,12 @@ exports.createRowModel = createRowModel;
3586
3643
  exports.createSchemaModel = createSchemaModel;
3587
3644
  exports.createTableModel = createTableModel;
3588
3645
  exports.createTypeTransformChain = createTypeTransformChain;
3646
+ exports.createTypedTree = createTypedTree;
3589
3647
  exports.extractFormulaDefinition = extractFormulaDefinition;
3590
3648
  exports.generateDefaultValue = generateDefaultValue;
3591
3649
  exports.generateNodeId = generateNodeId;
3592
3650
  exports.isForeignKeyValueNode = isForeignKeyValueNode;
3593
3651
  exports.resetNodeIdCounter = resetNodeIdCounter;
3594
- //# sourceMappingURL=chunk-FZ2MS4Q5.cjs.map
3595
- //# sourceMappingURL=chunk-FZ2MS4Q5.cjs.map
3652
+ exports.typedNode = typedNode;
3653
+ //# sourceMappingURL=chunk-F4POD7AE.cjs.map
3654
+ //# sourceMappingURL=chunk-F4POD7AE.cjs.map