@revisium/schema-toolkit 0.21.3 → 0.21.5

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.
@@ -1159,28 +1159,10 @@ var FormulaSerializer = class _FormulaSerializer {
1159
1159
 
1160
1160
  // src/core/schema-diff/SchemaComparator.ts
1161
1161
  function areNodesEqual(current, base, context) {
1162
- if (current.nodeType() !== base.nodeType()) {
1163
- return false;
1164
- }
1165
1162
  if (current.name() !== base.name()) {
1166
1163
  return false;
1167
1164
  }
1168
- if (!areMetadataEqual(current, base)) {
1169
- return false;
1170
- }
1171
- if (current.isPrimitive()) {
1172
- return arePrimitivesEqual(current, base, context);
1173
- }
1174
- if (current.isObject()) {
1175
- return areObjectsEqual(current, base, context);
1176
- }
1177
- if (current.isArray()) {
1178
- return areArraysEqual(current, base, context);
1179
- }
1180
- if (current.isRef()) {
1181
- return current.ref() === base.ref();
1182
- }
1183
- return current.isNull() && base.isNull();
1165
+ return areNodesContentEqual(current, base, context);
1184
1166
  }
1185
1167
  function areNodesContentEqual(current, base, context) {
1186
1168
  if (current.nodeType() !== base.nodeType()) {
@@ -1192,15 +1174,15 @@ function areNodesContentEqual(current, base, context) {
1192
1174
  if (current.isPrimitive()) {
1193
1175
  return arePrimitivesEqual(current, base, context);
1194
1176
  }
1177
+ if (current.isRef()) {
1178
+ return current.ref() === base.ref();
1179
+ }
1195
1180
  if (current.isObject()) {
1196
1181
  return areObjectsEqual(current, base, context);
1197
1182
  }
1198
1183
  if (current.isArray()) {
1199
1184
  return areArraysEqual(current, base, context);
1200
1185
  }
1201
- if (current.isRef()) {
1202
- return current.ref() === base.ref();
1203
- }
1204
1186
  return current.isNull() && base.isNull();
1205
1187
  }
1206
1188
  function areMetadataEqual(current, base) {
@@ -1215,6 +1197,9 @@ function arePrimitivesEqual(current, base, context) {
1215
1197
  if (current.foreignKey() !== base.foreignKey()) {
1216
1198
  return false;
1217
1199
  }
1200
+ if (current.contentMediaType() !== base.contentMediaType()) {
1201
+ return false;
1202
+ }
1218
1203
  const currentFormula = current.formula();
1219
1204
  const baseFormula = base.formula();
1220
1205
  if (currentFormula === void 0 && baseFormula === void 0) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkRCCBUOGY_cjs = require('./chunk-RCCBUOGY.cjs');
3
+ var chunkPJ5OFCLO_cjs = require('./chunk-PJ5OFCLO.cjs');
4
4
  var chunk2PIMJSWJ_cjs = require('./chunk-2PIMJSWJ.cjs');
5
5
  var nanoid = require('nanoid');
6
6
  var formula = require('@revisium/formula');
@@ -69,7 +69,7 @@ var FormulaPath = class {
69
69
  resolveRootPath(rootPath) {
70
70
  const path = rootPath.startsWith("/") ? rootPath.slice(1) : rootPath;
71
71
  if (!path) {
72
- return chunkRCCBUOGY_cjs.EMPTY_PATH;
72
+ return chunkPJ5OFCLO_cjs.EMPTY_PATH;
73
73
  }
74
74
  try {
75
75
  return this.parseFormulaPath(path);
@@ -79,7 +79,7 @@ var FormulaPath = class {
79
79
  }
80
80
  parseFormulaPath(formulaPath) {
81
81
  const parts = formulaPath.split(".");
82
- let result = chunkRCCBUOGY_cjs.EMPTY_PATH;
82
+ let result = chunkPJ5OFCLO_cjs.EMPTY_PATH;
83
83
  for (const part of parts) {
84
84
  if (!part) {
85
85
  throw new Error(`Invalid path: empty segment`);
@@ -107,7 +107,7 @@ var ParsedFormula = class {
107
107
  this.astNode = parseResult.ast;
108
108
  const formulaPath = tree.pathOf(formulaNodeId);
109
109
  if (formulaPath.isEmpty() && tree.root().id() !== formulaNodeId) {
110
- throw new chunkRCCBUOGY_cjs.FormulaError("Formula node not found in tree", formulaNodeId);
110
+ throw new chunkPJ5OFCLO_cjs.FormulaError("Formula node not found in tree", formulaNodeId);
111
111
  }
112
112
  const deps = [];
113
113
  const astPathToNodeId = /* @__PURE__ */ new Map();
@@ -118,20 +118,20 @@ var ParsedFormula = class {
118
118
  depPath
119
119
  );
120
120
  if (!targetNodeId) {
121
- throw new chunkRCCBUOGY_cjs.FormulaError(
121
+ throw new chunkPJ5OFCLO_cjs.FormulaError(
122
122
  `Cannot resolve formula dependency: ${depPath}`,
123
123
  formulaNodeId,
124
124
  "Path not found in schema"
125
125
  );
126
126
  }
127
127
  if (targetNodeId === formulaNodeId) {
128
- throw new chunkRCCBUOGY_cjs.FormulaError(
128
+ throw new chunkPJ5OFCLO_cjs.FormulaError(
129
129
  "Formula cannot reference itself",
130
130
  formulaNodeId,
131
131
  "Self-reference detected"
132
132
  );
133
133
  }
134
- deps.push(new chunkRCCBUOGY_cjs.ResolvedDependency(targetNodeId));
134
+ deps.push(new chunkPJ5OFCLO_cjs.ResolvedDependency(targetNodeId));
135
135
  astPathToNodeId.set(depPath, targetNodeId);
136
136
  }
137
137
  this.deps = deps;
@@ -295,7 +295,7 @@ var FormulaChangeDetector = class {
295
295
  }
296
296
  getSerializedExpression(formula, tree, nodeId) {
297
297
  try {
298
- const xFormula = chunkRCCBUOGY_cjs.FormulaSerializer.toXFormula(tree, nodeId, formula);
298
+ const xFormula = chunkPJ5OFCLO_cjs.FormulaSerializer.toXFormula(tree, nodeId, formula);
299
299
  return xFormula.expression;
300
300
  } catch {
301
301
  return null;
@@ -308,10 +308,17 @@ var SchemaParser = class {
308
308
  pendingFormulas = [];
309
309
  _parseErrors = [];
310
310
  _refSchemas = {};
311
+ _resolvingRefs = /* @__PURE__ */ new Set();
311
312
  parse(schema, refSchemas) {
312
313
  this.pendingFormulas = [];
313
314
  this._parseErrors = [];
314
315
  this._refSchemas = refSchemas ?? {};
316
+ this._resolvingRefs = /* @__PURE__ */ new Set();
317
+ for (const [refKey, refSchema] of Object.entries(this._refSchemas)) {
318
+ if (refSchema === schema) {
319
+ this._resolvingRefs.add(refKey);
320
+ }
321
+ }
315
322
  return this.parseNode(schema, "root");
316
323
  }
317
324
  parseFormulas(tree) {
@@ -340,9 +347,15 @@ var SchemaParser = class {
340
347
  const refValue = schema.$ref;
341
348
  const resolvedSchema = this._refSchemas[refValue];
342
349
  if (resolvedSchema) {
343
- return this.parseNode(resolvedSchema, name, refValue);
350
+ if (this._resolvingRefs.has(refValue)) {
351
+ return chunkPJ5OFCLO_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
352
+ }
353
+ this._resolvingRefs.add(refValue);
354
+ const node = this.parseNode(resolvedSchema, name, refValue);
355
+ this._resolvingRefs.delete(refValue);
356
+ return node;
344
357
  }
345
- return chunkRCCBUOGY_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
358
+ return chunkPJ5OFCLO_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
346
359
  }
347
360
  const schemaWithType = schema;
348
361
  switch (schemaWithType.type) {
@@ -368,14 +381,14 @@ var SchemaParser = class {
368
381
  children.push(this.parseNode(propSchema, propName));
369
382
  }
370
383
  }
371
- return chunkRCCBUOGY_cjs.createObjectNode(nanoid.nanoid(), name, children, {
384
+ return chunkPJ5OFCLO_cjs.createObjectNode(nanoid.nanoid(), name, children, {
372
385
  metadata: this.extractMetadata(schema),
373
386
  ref: ref2
374
387
  });
375
388
  }
376
389
  parseArray(schema, name, ref2) {
377
390
  const items = this.parseNode(schema.items, "items");
378
- return chunkRCCBUOGY_cjs.createArrayNode(nanoid.nanoid(), name, items, {
391
+ return chunkPJ5OFCLO_cjs.createArrayNode(nanoid.nanoid(), name, items, {
379
392
  metadata: this.extractMetadata(schema),
380
393
  ref: ref2
381
394
  });
@@ -383,9 +396,10 @@ var SchemaParser = class {
383
396
  parseString(schema, name, ref2) {
384
397
  const nodeId = nanoid.nanoid();
385
398
  this.collectFormula(nodeId, schema["x-formula"]);
386
- return chunkRCCBUOGY_cjs.createStringNode(nodeId, name, {
399
+ return chunkPJ5OFCLO_cjs.createStringNode(nodeId, name, {
387
400
  defaultValue: schema.default,
388
401
  foreignKey: schema.foreignKey,
402
+ contentMediaType: schema.contentMediaType,
389
403
  metadata: this.extractMetadata(schema),
390
404
  ref: ref2
391
405
  });
@@ -393,7 +407,7 @@ var SchemaParser = class {
393
407
  parseNumber(schema, name, ref2) {
394
408
  const nodeId = nanoid.nanoid();
395
409
  this.collectFormula(nodeId, schema["x-formula"]);
396
- return chunkRCCBUOGY_cjs.createNumberNode(nodeId, name, {
410
+ return chunkPJ5OFCLO_cjs.createNumberNode(nodeId, name, {
397
411
  defaultValue: schema.default,
398
412
  metadata: this.extractMetadata(schema),
399
413
  ref: ref2
@@ -402,7 +416,7 @@ var SchemaParser = class {
402
416
  parseBoolean(schema, name, ref2) {
403
417
  const nodeId = nanoid.nanoid();
404
418
  this.collectFormula(nodeId, schema["x-formula"]);
405
- return chunkRCCBUOGY_cjs.createBooleanNode(nodeId, name, {
419
+ return chunkPJ5OFCLO_cjs.createBooleanNode(nodeId, name, {
406
420
  defaultValue: schema.default,
407
421
  metadata: this.extractMetadata(schema),
408
422
  ref: ref2
@@ -435,13 +449,13 @@ var NodeFactory = class {
435
449
  createNode(name, type) {
436
450
  switch (type) {
437
451
  case "string":
438
- return chunkRCCBUOGY_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
452
+ return chunkPJ5OFCLO_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
439
453
  case "number":
440
- return chunkRCCBUOGY_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
454
+ return chunkPJ5OFCLO_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
441
455
  case "boolean":
442
- return chunkRCCBUOGY_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
456
+ return chunkPJ5OFCLO_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
443
457
  case "object":
444
- return chunkRCCBUOGY_cjs.createObjectNode(nanoid.nanoid(), name, []);
458
+ return chunkPJ5OFCLO_cjs.createObjectNode(nanoid.nanoid(), name, []);
445
459
  case "array":
446
460
  return this.createArrayNodeInternal(name);
447
461
  default:
@@ -449,11 +463,11 @@ var NodeFactory = class {
449
463
  }
450
464
  }
451
465
  createArrayNodeInternal(name) {
452
- const items = chunkRCCBUOGY_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
453
- return chunkRCCBUOGY_cjs.createArrayNode(nanoid.nanoid(), name, items);
466
+ const items = chunkPJ5OFCLO_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
467
+ return chunkPJ5OFCLO_cjs.createArrayNode(nanoid.nanoid(), name, items);
454
468
  }
455
469
  createArrayNodeWithItems(name, items) {
456
- return chunkRCCBUOGY_cjs.createArrayNode(nanoid.nanoid(), name, items);
470
+ return chunkPJ5OFCLO_cjs.createArrayNode(nanoid.nanoid(), name, items);
457
471
  }
458
472
  };
459
473
 
@@ -552,7 +566,7 @@ var PrimitiveToArrayTransformer = class {
552
566
  const { sourceNode } = ctx;
553
567
  const itemsNode = sourceNode.cloneWithId(nanoid.nanoid());
554
568
  itemsNode.setName("items");
555
- const arrayNode = chunkRCCBUOGY_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
569
+ const arrayNode = chunkPJ5OFCLO_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
556
570
  return { node: arrayNode };
557
571
  }
558
572
  };
@@ -565,7 +579,7 @@ var ObjectToArrayTransformer = class {
565
579
  const { sourceNode } = ctx;
566
580
  const itemsNode = sourceNode.cloneWithId(nanoid.nanoid());
567
581
  itemsNode.setName("items");
568
- const arrayNode = chunkRCCBUOGY_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
582
+ const arrayNode = chunkPJ5OFCLO_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
569
583
  return { node: arrayNode };
570
584
  }
571
585
  };
@@ -615,7 +629,7 @@ var RefTransformer = class {
615
629
  return { node: newNode };
616
630
  }
617
631
  const metadata = this.extractMetadata(targetSpec);
618
- const node = chunkRCCBUOGY_cjs.createRefNode(sourceNode.id(), sourceNode.name(), refUri, metadata);
632
+ const node = chunkPJ5OFCLO_cjs.createRefNode(sourceNode.id(), sourceNode.name(), refUri, metadata);
619
633
  return { node };
620
634
  }
621
635
  extractMetadata(spec) {
@@ -650,23 +664,23 @@ var DefaultTransformer = class {
650
664
  createNode(id, name, type, spec, metadata) {
651
665
  switch (type) {
652
666
  case "string":
653
- return chunkRCCBUOGY_cjs.createStringNode(id, name, {
667
+ return chunkPJ5OFCLO_cjs.createStringNode(id, name, {
654
668
  defaultValue: spec.default ?? "",
655
669
  foreignKey: spec.foreignKey,
656
670
  metadata
657
671
  });
658
672
  case "number":
659
- return chunkRCCBUOGY_cjs.createNumberNode(id, name, {
673
+ return chunkPJ5OFCLO_cjs.createNumberNode(id, name, {
660
674
  defaultValue: spec.default ?? 0,
661
675
  metadata
662
676
  });
663
677
  case "boolean":
664
- return chunkRCCBUOGY_cjs.createBooleanNode(id, name, {
678
+ return chunkPJ5OFCLO_cjs.createBooleanNode(id, name, {
665
679
  defaultValue: spec.default ?? false,
666
680
  metadata
667
681
  });
668
682
  case "object":
669
- return chunkRCCBUOGY_cjs.createObjectNode(id, name, [], { metadata });
683
+ return chunkPJ5OFCLO_cjs.createObjectNode(id, name, [], { metadata });
670
684
  case "array":
671
685
  return this.createArrayNode(id, name, metadata);
672
686
  default:
@@ -674,8 +688,8 @@ var DefaultTransformer = class {
674
688
  }
675
689
  }
676
690
  createArrayNode(id, name, metadata) {
677
- const items = chunkRCCBUOGY_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
678
- return chunkRCCBUOGY_cjs.createArrayNode(id, name, items, { metadata });
691
+ const items = chunkPJ5OFCLO_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
692
+ return chunkPJ5OFCLO_cjs.createArrayNode(id, name, items, { metadata });
679
693
  }
680
694
  extractMetadata(spec) {
681
695
  const meta = {};
@@ -739,8 +753,8 @@ function createTypeTransformChain(options) {
739
753
  var SchemaModelImpl = class {
740
754
  _baseTree;
741
755
  _currentTree;
742
- _patchBuilder = new chunkRCCBUOGY_cjs.PatchBuilder();
743
- _serializer = new chunkRCCBUOGY_cjs.SchemaSerializer();
756
+ _patchBuilder = new chunkPJ5OFCLO_cjs.PatchBuilder();
757
+ _serializer = new chunkPJ5OFCLO_cjs.SchemaSerializer();
744
758
  _nodeFactory = new NodeFactory();
745
759
  _formulaIndex = new FormulaDependencyIndex();
746
760
  _transformChain;
@@ -754,12 +768,12 @@ var SchemaModelImpl = class {
754
768
  });
755
769
  const parser = new SchemaParser();
756
770
  const rootNode = parser.parse(schema, this._refSchemas);
757
- this._currentTree = chunkRCCBUOGY_cjs.createSchemaTree(rootNode);
771
+ this._currentTree = chunkPJ5OFCLO_cjs.createSchemaTree(rootNode);
758
772
  parser.parseFormulas(this._currentTree);
759
773
  this._formulaParseErrors = parser.parseErrors;
760
774
  this._buildFormulaIndex();
761
775
  this._baseTree = this._currentTree.clone();
762
- chunkRCCBUOGY_cjs.makeAutoObservable(this, {
776
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
763
777
  _patchBuilder: false,
764
778
  _serializer: false,
765
779
  _nodeFactory: false,
@@ -788,10 +802,10 @@ var SchemaModelImpl = class {
788
802
  insertFieldAt(parentId, index, name, type) {
789
803
  const parent = this._currentTree.nodeById(parentId);
790
804
  if (parent.isNull() || !parent.isObject()) {
791
- return chunkRCCBUOGY_cjs.NULL_NODE;
805
+ return chunkPJ5OFCLO_cjs.NULL_NODE;
792
806
  }
793
807
  if (index < 0 || index > parent.properties().length) {
794
- return chunkRCCBUOGY_cjs.NULL_NODE;
808
+ return chunkPJ5OFCLO_cjs.NULL_NODE;
795
809
  }
796
810
  const node = this._nodeFactory.createNode(name, type);
797
811
  this._currentTree.insertChildAt(parentId, index, node);
@@ -1016,7 +1030,7 @@ var SchemaModelImpl = class {
1016
1030
  return "";
1017
1031
  }
1018
1032
  try {
1019
- return chunkRCCBUOGY_cjs.FormulaSerializer.serializeExpression(
1033
+ return chunkPJ5OFCLO_cjs.FormulaSerializer.serializeExpression(
1020
1034
  this._currentTree,
1021
1035
  nodeId,
1022
1036
  formula,
@@ -1027,10 +1041,10 @@ var SchemaModelImpl = class {
1027
1041
  }
1028
1042
  }
1029
1043
  get validationErrors() {
1030
- return chunkRCCBUOGY_cjs.validateSchema(this._currentTree.root());
1044
+ return chunkPJ5OFCLO_cjs.validateSchema(this._currentTree.root());
1031
1045
  }
1032
1046
  get formulaErrors() {
1033
- return [...this._formulaParseErrors, ...chunkRCCBUOGY_cjs.validateFormulas(this._currentTree)];
1047
+ return [...this._formulaParseErrors, ...chunkPJ5OFCLO_cjs.validateFormulas(this._currentTree)];
1034
1048
  }
1035
1049
  get isDirty() {
1036
1050
  return this.patches.length > 0;
@@ -1542,7 +1556,7 @@ var FormulaEngine = class {
1542
1556
  this.setupReactions();
1543
1557
  }
1544
1558
  evaluateAll() {
1545
- chunkRCCBUOGY_cjs.runInAction(() => {
1559
+ chunkPJ5OFCLO_cjs.runInAction(() => {
1546
1560
  for (const field of this.evaluationOrder) {
1547
1561
  this.evaluator.evaluate(field);
1548
1562
  }
@@ -1555,7 +1569,7 @@ var FormulaEngine = class {
1555
1569
  continue;
1556
1570
  }
1557
1571
  watchedNodes.add(depNode);
1558
- const disposer = chunkRCCBUOGY_cjs.reaction(
1572
+ const disposer = chunkPJ5OFCLO_cjs.reaction(
1559
1573
  () => depNode.value,
1560
1574
  () => this.handleDependencyChange(depNode)
1561
1575
  );
@@ -1565,7 +1579,7 @@ var FormulaEngine = class {
1565
1579
  }
1566
1580
  setupArrayReactions(node) {
1567
1581
  if (node.isArray()) {
1568
- const disposer = chunkRCCBUOGY_cjs.reaction(
1582
+ const disposer = chunkPJ5OFCLO_cjs.reaction(
1569
1583
  () => node.length,
1570
1584
  () => this.handleStructureChange()
1571
1585
  );
@@ -1585,7 +1599,7 @@ var FormulaEngine = class {
1585
1599
  this.dependencyMap,
1586
1600
  this.evaluationOrder
1587
1601
  );
1588
- chunkRCCBUOGY_cjs.runInAction(() => {
1602
+ chunkPJ5OFCLO_cjs.runInAction(() => {
1589
1603
  for (const field of affected) {
1590
1604
  this.evaluator.evaluate(field);
1591
1605
  }
@@ -1685,7 +1699,7 @@ var ArrayValueNode = class extends BaseValueNode {
1685
1699
  _nodeFactory = null;
1686
1700
  constructor(id, name, schema, items) {
1687
1701
  super(id, name, schema);
1688
- this._items = chunkRCCBUOGY_cjs.observable.array();
1702
+ this._items = chunkPJ5OFCLO_cjs.observable.array();
1689
1703
  this._baseItems = [];
1690
1704
  if (items) {
1691
1705
  for (const item of items) {
@@ -1694,7 +1708,7 @@ var ArrayValueNode = class extends BaseValueNode {
1694
1708
  }
1695
1709
  }
1696
1710
  this._baseItems = [...this._items];
1697
- chunkRCCBUOGY_cjs.makeObservable(this, {
1711
+ chunkPJ5OFCLO_cjs.makeObservable(this, {
1698
1712
  _items: "observable",
1699
1713
  _baseItems: "observable",
1700
1714
  value: "computed",
@@ -1881,7 +1895,7 @@ var ArrayValueNode = class extends BaseValueNode {
1881
1895
  for (const item of this._items) {
1882
1896
  item.parent = null;
1883
1897
  }
1884
- this._items = chunkRCCBUOGY_cjs.observable.array();
1898
+ this._items = chunkPJ5OFCLO_cjs.observable.array();
1885
1899
  for (const baseItem of this._baseItems) {
1886
1900
  this._items.push(baseItem);
1887
1901
  }
@@ -1924,7 +1938,7 @@ var BasePrimitiveValueNode = class extends BaseValueNode {
1924
1938
  this._baseValue = initialValue;
1925
1939
  }
1926
1940
  initObservable() {
1927
- chunkRCCBUOGY_cjs.makeObservable(this, {
1941
+ chunkPJ5OFCLO_cjs.makeObservable(this, {
1928
1942
  _value: "observable",
1929
1943
  _baseValue: "observable",
1930
1944
  _formulaWarning: "observable",
@@ -2283,7 +2297,7 @@ var ObjectValueNode = class extends BaseValueNode {
2283
2297
  _baseChildren;
2284
2298
  constructor(id, name, schema, children) {
2285
2299
  super(id, name, schema);
2286
- this._children = chunkRCCBUOGY_cjs.observable.map();
2300
+ this._children = chunkPJ5OFCLO_cjs.observable.map();
2287
2301
  this._baseChildren = /* @__PURE__ */ new Map();
2288
2302
  if (children) {
2289
2303
  for (const child of children) {
@@ -2292,7 +2306,7 @@ var ObjectValueNode = class extends BaseValueNode {
2292
2306
  }
2293
2307
  }
2294
2308
  this._baseChildren = new Map(this._children);
2295
- chunkRCCBUOGY_cjs.makeObservable(this, {
2309
+ chunkPJ5OFCLO_cjs.makeObservable(this, {
2296
2310
  _children: "observable",
2297
2311
  _baseChildren: "observable",
2298
2312
  value: "computed",
@@ -2386,7 +2400,7 @@ var ObjectValueNode = class extends BaseValueNode {
2386
2400
  for (const child of this._children.values()) {
2387
2401
  child.parent = null;
2388
2402
  }
2389
- this._children = chunkRCCBUOGY_cjs.observable.map();
2403
+ this._children = chunkPJ5OFCLO_cjs.observable.map();
2390
2404
  for (const [key, value] of this._baseChildren) {
2391
2405
  this._children.set(key, value);
2392
2406
  }
@@ -2600,7 +2614,7 @@ var IndexSegment = class {
2600
2614
  };
2601
2615
 
2602
2616
  // src/core/value-path/ValuePath.ts
2603
- var ValuePathImpl = class _ValuePathImpl extends chunkRCCBUOGY_cjs.AbstractBasePath {
2617
+ var ValuePathImpl = class _ValuePathImpl extends chunkPJ5OFCLO_cjs.AbstractBasePath {
2604
2618
  asString() {
2605
2619
  const parts = [];
2606
2620
  for (const seg of this.segs) {
@@ -2705,7 +2719,7 @@ function parseValuePath(path) {
2705
2719
  var ChangeTracker = class {
2706
2720
  _changes = [];
2707
2721
  constructor() {
2708
- chunkRCCBUOGY_cjs.makeAutoObservable(this);
2722
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this);
2709
2723
  }
2710
2724
  get changes() {
2711
2725
  return this._changes;
@@ -2871,7 +2885,7 @@ var ValueTree = class {
2871
2885
  this.changeTracker = new ChangeTracker();
2872
2886
  this._nodeChangeListener = (event) => this.handleNodeChange(event);
2873
2887
  this.subscribe(this._root);
2874
- chunkRCCBUOGY_cjs.makeAutoObservable(this, {
2888
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
2875
2889
  _root: false,
2876
2890
  index: false,
2877
2891
  _nodeChangeListener: false,
@@ -3128,7 +3142,7 @@ var RowModelImpl = class {
3128
3142
  constructor(_rowId, _tree) {
3129
3143
  this._rowId = _rowId;
3130
3144
  this._tree = _tree;
3131
- chunkRCCBUOGY_cjs.makeAutoObservable(this, {
3145
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3132
3146
  _rowId: false,
3133
3147
  _tree: false,
3134
3148
  _tableModel: "observable.ref"
@@ -3239,13 +3253,13 @@ var TableModelImpl = class {
3239
3253
  this._schema = createSchemaModel(options.schema, { refSchemas: options.refSchemas });
3240
3254
  this._fkResolver = options.fkResolver;
3241
3255
  this._refSchemas = options.refSchemas;
3242
- this._rows = chunkRCCBUOGY_cjs.observable.array();
3256
+ this._rows = chunkPJ5OFCLO_cjs.observable.array();
3243
3257
  if (options.rows) {
3244
3258
  for (const row of options.rows) {
3245
3259
  this._rows.push(this.createRow(row.rowId, row.data));
3246
3260
  }
3247
3261
  }
3248
- chunkRCCBUOGY_cjs.makeAutoObservable(this, {
3262
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3249
3263
  _schema: false,
3250
3264
  _rows: false,
3251
3265
  _jsonSchema: false,
@@ -3376,13 +3390,13 @@ var ForeignKeyResolverImpl = class {
3376
3390
  constructor(options) {
3377
3391
  this.loader = options?.loader;
3378
3392
  this._prefetchEnabled = options?.prefetch ?? false;
3379
- this._schemaCache = chunkRCCBUOGY_cjs.observable.map();
3380
- this._tableCache = chunkRCCBUOGY_cjs.observable.map();
3393
+ this._schemaCache = chunkPJ5OFCLO_cjs.observable.map();
3394
+ this._tableCache = chunkPJ5OFCLO_cjs.observable.map();
3381
3395
  this._loadingTables = /* @__PURE__ */ new Set();
3382
3396
  this._loadingRows = /* @__PURE__ */ new Map();
3383
3397
  this._pendingTableLoads = /* @__PURE__ */ new Map();
3384
3398
  this._pendingRowLoads = /* @__PURE__ */ new Map();
3385
- chunkRCCBUOGY_cjs.makeAutoObservable(this, {
3399
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3386
3400
  _schemaCache: false,
3387
3401
  _tableCache: false,
3388
3402
  _loadingTables: false,
@@ -3420,7 +3434,7 @@ var ForeignKeyResolverImpl = class {
3420
3434
  if (this._disposed) {
3421
3435
  return;
3422
3436
  }
3423
- chunkRCCBUOGY_cjs.runInAction(() => {
3437
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3424
3438
  this._schemaCache.set(tableId, schema);
3425
3439
  });
3426
3440
  }
@@ -3428,12 +3442,12 @@ var ForeignKeyResolverImpl = class {
3428
3442
  if (this._disposed) {
3429
3443
  return;
3430
3444
  }
3431
- const rowMap = chunkRCCBUOGY_cjs.observable.map();
3445
+ const rowMap = chunkPJ5OFCLO_cjs.observable.map();
3432
3446
  for (const row of rows) {
3433
3447
  rowMap.set(row.rowId, row);
3434
3448
  }
3435
3449
  const cache = { schema, rows: rowMap };
3436
- chunkRCCBUOGY_cjs.runInAction(() => {
3450
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3437
3451
  this._tableCache.set(tableId, cache);
3438
3452
  this._schemaCache.set(tableId, schema);
3439
3453
  });
@@ -3448,7 +3462,7 @@ var ForeignKeyResolverImpl = class {
3448
3462
  const table = this._tableCache.get(tableId);
3449
3463
  if (table) {
3450
3464
  const rowData = { rowId, data };
3451
- chunkRCCBUOGY_cjs.runInAction(() => {
3465
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3452
3466
  table.rows.set(rowId, rowData);
3453
3467
  });
3454
3468
  if (this._prefetchEnabled) {
@@ -3462,7 +3476,7 @@ var ForeignKeyResolverImpl = class {
3462
3476
  }
3463
3477
  const schema = this._schemaCache.get(oldTableId);
3464
3478
  const tableCache = this._tableCache.get(oldTableId);
3465
- chunkRCCBUOGY_cjs.runInAction(() => {
3479
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3466
3480
  if (schema) {
3467
3481
  this._schemaCache.delete(oldTableId);
3468
3482
  this._schemaCache.set(newTableId, schema);
@@ -3564,9 +3578,9 @@ var ForeignKeyResolverImpl = class {
3564
3578
  }
3565
3579
  ensureTableCache(tableId, schema) {
3566
3580
  if (!this._tableCache.has(tableId)) {
3567
- const rowMap = chunkRCCBUOGY_cjs.observable.map();
3581
+ const rowMap = chunkPJ5OFCLO_cjs.observable.map();
3568
3582
  const cache = { schema, rows: rowMap };
3569
- chunkRCCBUOGY_cjs.runInAction(() => {
3583
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3570
3584
  this._tableCache.set(tableId, cache);
3571
3585
  });
3572
3586
  }
@@ -3666,7 +3680,7 @@ var DataModelImpl = class {
3666
3680
  _fk;
3667
3681
  _ownsFkResolver;
3668
3682
  constructor(options) {
3669
- this._tables = chunkRCCBUOGY_cjs.observable.map();
3683
+ this._tables = chunkPJ5OFCLO_cjs.observable.map();
3670
3684
  if (options?.fkResolver) {
3671
3685
  this._fk = options.fkResolver;
3672
3686
  this._ownsFkResolver = false;
@@ -3674,7 +3688,7 @@ var DataModelImpl = class {
3674
3688
  this._fk = createForeignKeyResolver();
3675
3689
  this._ownsFkResolver = true;
3676
3690
  }
3677
- chunkRCCBUOGY_cjs.makeAutoObservable(this, {
3691
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3678
3692
  _tables: false,
3679
3693
  _fk: false,
3680
3694
  _ownsFkResolver: false
@@ -1161,28 +1161,10 @@ var FormulaSerializer = class _FormulaSerializer {
1161
1161
 
1162
1162
  // src/core/schema-diff/SchemaComparator.ts
1163
1163
  function areNodesEqual(current, base, context) {
1164
- if (current.nodeType() !== base.nodeType()) {
1165
- return false;
1166
- }
1167
1164
  if (current.name() !== base.name()) {
1168
1165
  return false;
1169
1166
  }
1170
- if (!areMetadataEqual(current, base)) {
1171
- return false;
1172
- }
1173
- if (current.isPrimitive()) {
1174
- return arePrimitivesEqual(current, base, context);
1175
- }
1176
- if (current.isObject()) {
1177
- return areObjectsEqual(current, base, context);
1178
- }
1179
- if (current.isArray()) {
1180
- return areArraysEqual(current, base, context);
1181
- }
1182
- if (current.isRef()) {
1183
- return current.ref() === base.ref();
1184
- }
1185
- return current.isNull() && base.isNull();
1167
+ return areNodesContentEqual(current, base, context);
1186
1168
  }
1187
1169
  function areNodesContentEqual(current, base, context) {
1188
1170
  if (current.nodeType() !== base.nodeType()) {
@@ -1194,15 +1176,15 @@ function areNodesContentEqual(current, base, context) {
1194
1176
  if (current.isPrimitive()) {
1195
1177
  return arePrimitivesEqual(current, base, context);
1196
1178
  }
1179
+ if (current.isRef()) {
1180
+ return current.ref() === base.ref();
1181
+ }
1197
1182
  if (current.isObject()) {
1198
1183
  return areObjectsEqual(current, base, context);
1199
1184
  }
1200
1185
  if (current.isArray()) {
1201
1186
  return areArraysEqual(current, base, context);
1202
1187
  }
1203
- if (current.isRef()) {
1204
- return current.ref() === base.ref();
1205
- }
1206
1188
  return current.isNull() && base.isNull();
1207
1189
  }
1208
1190
  function areMetadataEqual(current, base) {
@@ -1217,6 +1199,9 @@ function arePrimitivesEqual(current, base, context) {
1217
1199
  if (current.foreignKey() !== base.foreignKey()) {
1218
1200
  return false;
1219
1201
  }
1202
+ if (current.contentMediaType() !== base.contentMediaType()) {
1203
+ return false;
1204
+ }
1220
1205
  const currentFormula = current.formula();
1221
1206
  const baseFormula = base.formula();
1222
1207
  if (currentFormula === void 0 && baseFormula === void 0) {