@revisium/schema-toolkit 0.21.4 → 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.
@@ -1197,6 +1197,9 @@ function arePrimitivesEqual(current, base, context) {
1197
1197
  if (current.foreignKey() !== base.foreignKey()) {
1198
1198
  return false;
1199
1199
  }
1200
+ if (current.contentMediaType() !== base.contentMediaType()) {
1201
+ return false;
1202
+ }
1200
1203
  const currentFormula = current.formula();
1201
1204
  const baseFormula = base.formula();
1202
1205
  if (currentFormula === void 0 && baseFormula === void 0) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkT46TZYJL_cjs = require('./chunk-T46TZYJL.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 chunkT46TZYJL_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 = chunkT46TZYJL_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 chunkT46TZYJL_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 chunkT46TZYJL_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 chunkT46TZYJL_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 chunkT46TZYJL_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 = chunkT46TZYJL_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;
@@ -348,14 +348,14 @@ var SchemaParser = class {
348
348
  const resolvedSchema = this._refSchemas[refValue];
349
349
  if (resolvedSchema) {
350
350
  if (this._resolvingRefs.has(refValue)) {
351
- return chunkT46TZYJL_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
351
+ return chunkPJ5OFCLO_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
352
352
  }
353
353
  this._resolvingRefs.add(refValue);
354
354
  const node = this.parseNode(resolvedSchema, name, refValue);
355
355
  this._resolvingRefs.delete(refValue);
356
356
  return node;
357
357
  }
358
- return chunkT46TZYJL_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
358
+ return chunkPJ5OFCLO_cjs.createRefNode(nanoid.nanoid(), name, refValue, this.extractMetadata(schema));
359
359
  }
360
360
  const schemaWithType = schema;
361
361
  switch (schemaWithType.type) {
@@ -381,14 +381,14 @@ var SchemaParser = class {
381
381
  children.push(this.parseNode(propSchema, propName));
382
382
  }
383
383
  }
384
- return chunkT46TZYJL_cjs.createObjectNode(nanoid.nanoid(), name, children, {
384
+ return chunkPJ5OFCLO_cjs.createObjectNode(nanoid.nanoid(), name, children, {
385
385
  metadata: this.extractMetadata(schema),
386
386
  ref: ref2
387
387
  });
388
388
  }
389
389
  parseArray(schema, name, ref2) {
390
390
  const items = this.parseNode(schema.items, "items");
391
- return chunkT46TZYJL_cjs.createArrayNode(nanoid.nanoid(), name, items, {
391
+ return chunkPJ5OFCLO_cjs.createArrayNode(nanoid.nanoid(), name, items, {
392
392
  metadata: this.extractMetadata(schema),
393
393
  ref: ref2
394
394
  });
@@ -396,9 +396,10 @@ var SchemaParser = class {
396
396
  parseString(schema, name, ref2) {
397
397
  const nodeId = nanoid.nanoid();
398
398
  this.collectFormula(nodeId, schema["x-formula"]);
399
- return chunkT46TZYJL_cjs.createStringNode(nodeId, name, {
399
+ return chunkPJ5OFCLO_cjs.createStringNode(nodeId, name, {
400
400
  defaultValue: schema.default,
401
401
  foreignKey: schema.foreignKey,
402
+ contentMediaType: schema.contentMediaType,
402
403
  metadata: this.extractMetadata(schema),
403
404
  ref: ref2
404
405
  });
@@ -406,7 +407,7 @@ var SchemaParser = class {
406
407
  parseNumber(schema, name, ref2) {
407
408
  const nodeId = nanoid.nanoid();
408
409
  this.collectFormula(nodeId, schema["x-formula"]);
409
- return chunkT46TZYJL_cjs.createNumberNode(nodeId, name, {
410
+ return chunkPJ5OFCLO_cjs.createNumberNode(nodeId, name, {
410
411
  defaultValue: schema.default,
411
412
  metadata: this.extractMetadata(schema),
412
413
  ref: ref2
@@ -415,7 +416,7 @@ var SchemaParser = class {
415
416
  parseBoolean(schema, name, ref2) {
416
417
  const nodeId = nanoid.nanoid();
417
418
  this.collectFormula(nodeId, schema["x-formula"]);
418
- return chunkT46TZYJL_cjs.createBooleanNode(nodeId, name, {
419
+ return chunkPJ5OFCLO_cjs.createBooleanNode(nodeId, name, {
419
420
  defaultValue: schema.default,
420
421
  metadata: this.extractMetadata(schema),
421
422
  ref: ref2
@@ -448,13 +449,13 @@ var NodeFactory = class {
448
449
  createNode(name, type) {
449
450
  switch (type) {
450
451
  case "string":
451
- return chunkT46TZYJL_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
452
+ return chunkPJ5OFCLO_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
452
453
  case "number":
453
- return chunkT46TZYJL_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
454
+ return chunkPJ5OFCLO_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
454
455
  case "boolean":
455
- return chunkT46TZYJL_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
456
+ return chunkPJ5OFCLO_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
456
457
  case "object":
457
- return chunkT46TZYJL_cjs.createObjectNode(nanoid.nanoid(), name, []);
458
+ return chunkPJ5OFCLO_cjs.createObjectNode(nanoid.nanoid(), name, []);
458
459
  case "array":
459
460
  return this.createArrayNodeInternal(name);
460
461
  default:
@@ -462,11 +463,11 @@ var NodeFactory = class {
462
463
  }
463
464
  }
464
465
  createArrayNodeInternal(name) {
465
- const items = chunkT46TZYJL_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
466
- return chunkT46TZYJL_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);
467
468
  }
468
469
  createArrayNodeWithItems(name, items) {
469
- return chunkT46TZYJL_cjs.createArrayNode(nanoid.nanoid(), name, items);
470
+ return chunkPJ5OFCLO_cjs.createArrayNode(nanoid.nanoid(), name, items);
470
471
  }
471
472
  };
472
473
 
@@ -565,7 +566,7 @@ var PrimitiveToArrayTransformer = class {
565
566
  const { sourceNode } = ctx;
566
567
  const itemsNode = sourceNode.cloneWithId(nanoid.nanoid());
567
568
  itemsNode.setName("items");
568
- const arrayNode = chunkT46TZYJL_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
569
+ const arrayNode = chunkPJ5OFCLO_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
569
570
  return { node: arrayNode };
570
571
  }
571
572
  };
@@ -578,7 +579,7 @@ var ObjectToArrayTransformer = class {
578
579
  const { sourceNode } = ctx;
579
580
  const itemsNode = sourceNode.cloneWithId(nanoid.nanoid());
580
581
  itemsNode.setName("items");
581
- const arrayNode = chunkT46TZYJL_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
582
+ const arrayNode = chunkPJ5OFCLO_cjs.createArrayNode(sourceNode.id(), sourceNode.name(), itemsNode);
582
583
  return { node: arrayNode };
583
584
  }
584
585
  };
@@ -628,7 +629,7 @@ var RefTransformer = class {
628
629
  return { node: newNode };
629
630
  }
630
631
  const metadata = this.extractMetadata(targetSpec);
631
- const node = chunkT46TZYJL_cjs.createRefNode(sourceNode.id(), sourceNode.name(), refUri, metadata);
632
+ const node = chunkPJ5OFCLO_cjs.createRefNode(sourceNode.id(), sourceNode.name(), refUri, metadata);
632
633
  return { node };
633
634
  }
634
635
  extractMetadata(spec) {
@@ -663,23 +664,23 @@ var DefaultTransformer = class {
663
664
  createNode(id, name, type, spec, metadata) {
664
665
  switch (type) {
665
666
  case "string":
666
- return chunkT46TZYJL_cjs.createStringNode(id, name, {
667
+ return chunkPJ5OFCLO_cjs.createStringNode(id, name, {
667
668
  defaultValue: spec.default ?? "",
668
669
  foreignKey: spec.foreignKey,
669
670
  metadata
670
671
  });
671
672
  case "number":
672
- return chunkT46TZYJL_cjs.createNumberNode(id, name, {
673
+ return chunkPJ5OFCLO_cjs.createNumberNode(id, name, {
673
674
  defaultValue: spec.default ?? 0,
674
675
  metadata
675
676
  });
676
677
  case "boolean":
677
- return chunkT46TZYJL_cjs.createBooleanNode(id, name, {
678
+ return chunkPJ5OFCLO_cjs.createBooleanNode(id, name, {
678
679
  defaultValue: spec.default ?? false,
679
680
  metadata
680
681
  });
681
682
  case "object":
682
- return chunkT46TZYJL_cjs.createObjectNode(id, name, [], { metadata });
683
+ return chunkPJ5OFCLO_cjs.createObjectNode(id, name, [], { metadata });
683
684
  case "array":
684
685
  return this.createArrayNode(id, name, metadata);
685
686
  default:
@@ -687,8 +688,8 @@ var DefaultTransformer = class {
687
688
  }
688
689
  }
689
690
  createArrayNode(id, name, metadata) {
690
- const items = chunkT46TZYJL_cjs.createStringNode(nanoid.nanoid(), "items", { defaultValue: "" });
691
- return chunkT46TZYJL_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 });
692
693
  }
693
694
  extractMetadata(spec) {
694
695
  const meta = {};
@@ -752,8 +753,8 @@ function createTypeTransformChain(options) {
752
753
  var SchemaModelImpl = class {
753
754
  _baseTree;
754
755
  _currentTree;
755
- _patchBuilder = new chunkT46TZYJL_cjs.PatchBuilder();
756
- _serializer = new chunkT46TZYJL_cjs.SchemaSerializer();
756
+ _patchBuilder = new chunkPJ5OFCLO_cjs.PatchBuilder();
757
+ _serializer = new chunkPJ5OFCLO_cjs.SchemaSerializer();
757
758
  _nodeFactory = new NodeFactory();
758
759
  _formulaIndex = new FormulaDependencyIndex();
759
760
  _transformChain;
@@ -767,12 +768,12 @@ var SchemaModelImpl = class {
767
768
  });
768
769
  const parser = new SchemaParser();
769
770
  const rootNode = parser.parse(schema, this._refSchemas);
770
- this._currentTree = chunkT46TZYJL_cjs.createSchemaTree(rootNode);
771
+ this._currentTree = chunkPJ5OFCLO_cjs.createSchemaTree(rootNode);
771
772
  parser.parseFormulas(this._currentTree);
772
773
  this._formulaParseErrors = parser.parseErrors;
773
774
  this._buildFormulaIndex();
774
775
  this._baseTree = this._currentTree.clone();
775
- chunkT46TZYJL_cjs.makeAutoObservable(this, {
776
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
776
777
  _patchBuilder: false,
777
778
  _serializer: false,
778
779
  _nodeFactory: false,
@@ -801,10 +802,10 @@ var SchemaModelImpl = class {
801
802
  insertFieldAt(parentId, index, name, type) {
802
803
  const parent = this._currentTree.nodeById(parentId);
803
804
  if (parent.isNull() || !parent.isObject()) {
804
- return chunkT46TZYJL_cjs.NULL_NODE;
805
+ return chunkPJ5OFCLO_cjs.NULL_NODE;
805
806
  }
806
807
  if (index < 0 || index > parent.properties().length) {
807
- return chunkT46TZYJL_cjs.NULL_NODE;
808
+ return chunkPJ5OFCLO_cjs.NULL_NODE;
808
809
  }
809
810
  const node = this._nodeFactory.createNode(name, type);
810
811
  this._currentTree.insertChildAt(parentId, index, node);
@@ -1029,7 +1030,7 @@ var SchemaModelImpl = class {
1029
1030
  return "";
1030
1031
  }
1031
1032
  try {
1032
- return chunkT46TZYJL_cjs.FormulaSerializer.serializeExpression(
1033
+ return chunkPJ5OFCLO_cjs.FormulaSerializer.serializeExpression(
1033
1034
  this._currentTree,
1034
1035
  nodeId,
1035
1036
  formula,
@@ -1040,10 +1041,10 @@ var SchemaModelImpl = class {
1040
1041
  }
1041
1042
  }
1042
1043
  get validationErrors() {
1043
- return chunkT46TZYJL_cjs.validateSchema(this._currentTree.root());
1044
+ return chunkPJ5OFCLO_cjs.validateSchema(this._currentTree.root());
1044
1045
  }
1045
1046
  get formulaErrors() {
1046
- return [...this._formulaParseErrors, ...chunkT46TZYJL_cjs.validateFormulas(this._currentTree)];
1047
+ return [...this._formulaParseErrors, ...chunkPJ5OFCLO_cjs.validateFormulas(this._currentTree)];
1047
1048
  }
1048
1049
  get isDirty() {
1049
1050
  return this.patches.length > 0;
@@ -1555,7 +1556,7 @@ var FormulaEngine = class {
1555
1556
  this.setupReactions();
1556
1557
  }
1557
1558
  evaluateAll() {
1558
- chunkT46TZYJL_cjs.runInAction(() => {
1559
+ chunkPJ5OFCLO_cjs.runInAction(() => {
1559
1560
  for (const field of this.evaluationOrder) {
1560
1561
  this.evaluator.evaluate(field);
1561
1562
  }
@@ -1568,7 +1569,7 @@ var FormulaEngine = class {
1568
1569
  continue;
1569
1570
  }
1570
1571
  watchedNodes.add(depNode);
1571
- const disposer = chunkT46TZYJL_cjs.reaction(
1572
+ const disposer = chunkPJ5OFCLO_cjs.reaction(
1572
1573
  () => depNode.value,
1573
1574
  () => this.handleDependencyChange(depNode)
1574
1575
  );
@@ -1578,7 +1579,7 @@ var FormulaEngine = class {
1578
1579
  }
1579
1580
  setupArrayReactions(node) {
1580
1581
  if (node.isArray()) {
1581
- const disposer = chunkT46TZYJL_cjs.reaction(
1582
+ const disposer = chunkPJ5OFCLO_cjs.reaction(
1582
1583
  () => node.length,
1583
1584
  () => this.handleStructureChange()
1584
1585
  );
@@ -1598,7 +1599,7 @@ var FormulaEngine = class {
1598
1599
  this.dependencyMap,
1599
1600
  this.evaluationOrder
1600
1601
  );
1601
- chunkT46TZYJL_cjs.runInAction(() => {
1602
+ chunkPJ5OFCLO_cjs.runInAction(() => {
1602
1603
  for (const field of affected) {
1603
1604
  this.evaluator.evaluate(field);
1604
1605
  }
@@ -1698,7 +1699,7 @@ var ArrayValueNode = class extends BaseValueNode {
1698
1699
  _nodeFactory = null;
1699
1700
  constructor(id, name, schema, items) {
1700
1701
  super(id, name, schema);
1701
- this._items = chunkT46TZYJL_cjs.observable.array();
1702
+ this._items = chunkPJ5OFCLO_cjs.observable.array();
1702
1703
  this._baseItems = [];
1703
1704
  if (items) {
1704
1705
  for (const item of items) {
@@ -1707,7 +1708,7 @@ var ArrayValueNode = class extends BaseValueNode {
1707
1708
  }
1708
1709
  }
1709
1710
  this._baseItems = [...this._items];
1710
- chunkT46TZYJL_cjs.makeObservable(this, {
1711
+ chunkPJ5OFCLO_cjs.makeObservable(this, {
1711
1712
  _items: "observable",
1712
1713
  _baseItems: "observable",
1713
1714
  value: "computed",
@@ -1894,7 +1895,7 @@ var ArrayValueNode = class extends BaseValueNode {
1894
1895
  for (const item of this._items) {
1895
1896
  item.parent = null;
1896
1897
  }
1897
- this._items = chunkT46TZYJL_cjs.observable.array();
1898
+ this._items = chunkPJ5OFCLO_cjs.observable.array();
1898
1899
  for (const baseItem of this._baseItems) {
1899
1900
  this._items.push(baseItem);
1900
1901
  }
@@ -1937,7 +1938,7 @@ var BasePrimitiveValueNode = class extends BaseValueNode {
1937
1938
  this._baseValue = initialValue;
1938
1939
  }
1939
1940
  initObservable() {
1940
- chunkT46TZYJL_cjs.makeObservable(this, {
1941
+ chunkPJ5OFCLO_cjs.makeObservable(this, {
1941
1942
  _value: "observable",
1942
1943
  _baseValue: "observable",
1943
1944
  _formulaWarning: "observable",
@@ -2296,7 +2297,7 @@ var ObjectValueNode = class extends BaseValueNode {
2296
2297
  _baseChildren;
2297
2298
  constructor(id, name, schema, children) {
2298
2299
  super(id, name, schema);
2299
- this._children = chunkT46TZYJL_cjs.observable.map();
2300
+ this._children = chunkPJ5OFCLO_cjs.observable.map();
2300
2301
  this._baseChildren = /* @__PURE__ */ new Map();
2301
2302
  if (children) {
2302
2303
  for (const child of children) {
@@ -2305,7 +2306,7 @@ var ObjectValueNode = class extends BaseValueNode {
2305
2306
  }
2306
2307
  }
2307
2308
  this._baseChildren = new Map(this._children);
2308
- chunkT46TZYJL_cjs.makeObservable(this, {
2309
+ chunkPJ5OFCLO_cjs.makeObservable(this, {
2309
2310
  _children: "observable",
2310
2311
  _baseChildren: "observable",
2311
2312
  value: "computed",
@@ -2399,7 +2400,7 @@ var ObjectValueNode = class extends BaseValueNode {
2399
2400
  for (const child of this._children.values()) {
2400
2401
  child.parent = null;
2401
2402
  }
2402
- this._children = chunkT46TZYJL_cjs.observable.map();
2403
+ this._children = chunkPJ5OFCLO_cjs.observable.map();
2403
2404
  for (const [key, value] of this._baseChildren) {
2404
2405
  this._children.set(key, value);
2405
2406
  }
@@ -2613,7 +2614,7 @@ var IndexSegment = class {
2613
2614
  };
2614
2615
 
2615
2616
  // src/core/value-path/ValuePath.ts
2616
- var ValuePathImpl = class _ValuePathImpl extends chunkT46TZYJL_cjs.AbstractBasePath {
2617
+ var ValuePathImpl = class _ValuePathImpl extends chunkPJ5OFCLO_cjs.AbstractBasePath {
2617
2618
  asString() {
2618
2619
  const parts = [];
2619
2620
  for (const seg of this.segs) {
@@ -2718,7 +2719,7 @@ function parseValuePath(path) {
2718
2719
  var ChangeTracker = class {
2719
2720
  _changes = [];
2720
2721
  constructor() {
2721
- chunkT46TZYJL_cjs.makeAutoObservable(this);
2722
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this);
2722
2723
  }
2723
2724
  get changes() {
2724
2725
  return this._changes;
@@ -2884,7 +2885,7 @@ var ValueTree = class {
2884
2885
  this.changeTracker = new ChangeTracker();
2885
2886
  this._nodeChangeListener = (event) => this.handleNodeChange(event);
2886
2887
  this.subscribe(this._root);
2887
- chunkT46TZYJL_cjs.makeAutoObservable(this, {
2888
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
2888
2889
  _root: false,
2889
2890
  index: false,
2890
2891
  _nodeChangeListener: false,
@@ -3141,7 +3142,7 @@ var RowModelImpl = class {
3141
3142
  constructor(_rowId, _tree) {
3142
3143
  this._rowId = _rowId;
3143
3144
  this._tree = _tree;
3144
- chunkT46TZYJL_cjs.makeAutoObservable(this, {
3145
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3145
3146
  _rowId: false,
3146
3147
  _tree: false,
3147
3148
  _tableModel: "observable.ref"
@@ -3252,13 +3253,13 @@ var TableModelImpl = class {
3252
3253
  this._schema = createSchemaModel(options.schema, { refSchemas: options.refSchemas });
3253
3254
  this._fkResolver = options.fkResolver;
3254
3255
  this._refSchemas = options.refSchemas;
3255
- this._rows = chunkT46TZYJL_cjs.observable.array();
3256
+ this._rows = chunkPJ5OFCLO_cjs.observable.array();
3256
3257
  if (options.rows) {
3257
3258
  for (const row of options.rows) {
3258
3259
  this._rows.push(this.createRow(row.rowId, row.data));
3259
3260
  }
3260
3261
  }
3261
- chunkT46TZYJL_cjs.makeAutoObservable(this, {
3262
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3262
3263
  _schema: false,
3263
3264
  _rows: false,
3264
3265
  _jsonSchema: false,
@@ -3389,13 +3390,13 @@ var ForeignKeyResolverImpl = class {
3389
3390
  constructor(options) {
3390
3391
  this.loader = options?.loader;
3391
3392
  this._prefetchEnabled = options?.prefetch ?? false;
3392
- this._schemaCache = chunkT46TZYJL_cjs.observable.map();
3393
- this._tableCache = chunkT46TZYJL_cjs.observable.map();
3393
+ this._schemaCache = chunkPJ5OFCLO_cjs.observable.map();
3394
+ this._tableCache = chunkPJ5OFCLO_cjs.observable.map();
3394
3395
  this._loadingTables = /* @__PURE__ */ new Set();
3395
3396
  this._loadingRows = /* @__PURE__ */ new Map();
3396
3397
  this._pendingTableLoads = /* @__PURE__ */ new Map();
3397
3398
  this._pendingRowLoads = /* @__PURE__ */ new Map();
3398
- chunkT46TZYJL_cjs.makeAutoObservable(this, {
3399
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3399
3400
  _schemaCache: false,
3400
3401
  _tableCache: false,
3401
3402
  _loadingTables: false,
@@ -3433,7 +3434,7 @@ var ForeignKeyResolverImpl = class {
3433
3434
  if (this._disposed) {
3434
3435
  return;
3435
3436
  }
3436
- chunkT46TZYJL_cjs.runInAction(() => {
3437
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3437
3438
  this._schemaCache.set(tableId, schema);
3438
3439
  });
3439
3440
  }
@@ -3441,12 +3442,12 @@ var ForeignKeyResolverImpl = class {
3441
3442
  if (this._disposed) {
3442
3443
  return;
3443
3444
  }
3444
- const rowMap = chunkT46TZYJL_cjs.observable.map();
3445
+ const rowMap = chunkPJ5OFCLO_cjs.observable.map();
3445
3446
  for (const row of rows) {
3446
3447
  rowMap.set(row.rowId, row);
3447
3448
  }
3448
3449
  const cache = { schema, rows: rowMap };
3449
- chunkT46TZYJL_cjs.runInAction(() => {
3450
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3450
3451
  this._tableCache.set(tableId, cache);
3451
3452
  this._schemaCache.set(tableId, schema);
3452
3453
  });
@@ -3461,7 +3462,7 @@ var ForeignKeyResolverImpl = class {
3461
3462
  const table = this._tableCache.get(tableId);
3462
3463
  if (table) {
3463
3464
  const rowData = { rowId, data };
3464
- chunkT46TZYJL_cjs.runInAction(() => {
3465
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3465
3466
  table.rows.set(rowId, rowData);
3466
3467
  });
3467
3468
  if (this._prefetchEnabled) {
@@ -3475,7 +3476,7 @@ var ForeignKeyResolverImpl = class {
3475
3476
  }
3476
3477
  const schema = this._schemaCache.get(oldTableId);
3477
3478
  const tableCache = this._tableCache.get(oldTableId);
3478
- chunkT46TZYJL_cjs.runInAction(() => {
3479
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3479
3480
  if (schema) {
3480
3481
  this._schemaCache.delete(oldTableId);
3481
3482
  this._schemaCache.set(newTableId, schema);
@@ -3577,9 +3578,9 @@ var ForeignKeyResolverImpl = class {
3577
3578
  }
3578
3579
  ensureTableCache(tableId, schema) {
3579
3580
  if (!this._tableCache.has(tableId)) {
3580
- const rowMap = chunkT46TZYJL_cjs.observable.map();
3581
+ const rowMap = chunkPJ5OFCLO_cjs.observable.map();
3581
3582
  const cache = { schema, rows: rowMap };
3582
- chunkT46TZYJL_cjs.runInAction(() => {
3583
+ chunkPJ5OFCLO_cjs.runInAction(() => {
3583
3584
  this._tableCache.set(tableId, cache);
3584
3585
  });
3585
3586
  }
@@ -3679,7 +3680,7 @@ var DataModelImpl = class {
3679
3680
  _fk;
3680
3681
  _ownsFkResolver;
3681
3682
  constructor(options) {
3682
- this._tables = chunkT46TZYJL_cjs.observable.map();
3683
+ this._tables = chunkPJ5OFCLO_cjs.observable.map();
3683
3684
  if (options?.fkResolver) {
3684
3685
  this._fk = options.fkResolver;
3685
3686
  this._ownsFkResolver = false;
@@ -3687,7 +3688,7 @@ var DataModelImpl = class {
3687
3688
  this._fk = createForeignKeyResolver();
3688
3689
  this._ownsFkResolver = true;
3689
3690
  }
3690
- chunkT46TZYJL_cjs.makeAutoObservable(this, {
3691
+ chunkPJ5OFCLO_cjs.makeAutoObservable(this, {
3691
3692
  _tables: false,
3692
3693
  _fk: false,
3693
3694
  _ownsFkResolver: false
@@ -1199,6 +1199,9 @@ function arePrimitivesEqual(current, base, context) {
1199
1199
  if (current.foreignKey() !== base.foreignKey()) {
1200
1200
  return false;
1201
1201
  }
1202
+ if (current.contentMediaType() !== base.contentMediaType()) {
1203
+ return false;
1204
+ }
1202
1205
  const currentFormula = current.formula();
1203
1206
  const baseFormula = base.formula();
1204
1207
  if (currentFormula === void 0 && baseFormula === void 0) {
@@ -1,4 +1,4 @@
1
- import { AbstractBasePath, EMPTY_PATH, FormulaError, ResolvedDependency, FormulaSerializer, createRefNode, createObjectNode, createArrayNode, createStringNode, createNumberNode, createBooleanNode, observable, makeObservable, makeAutoObservable, runInAction, PatchBuilder, SchemaSerializer, createSchemaTree, NULL_NODE, validateSchema, validateFormulas, reaction } from './chunk-MXEQ5CBK.js';
1
+ import { AbstractBasePath, EMPTY_PATH, FormulaError, ResolvedDependency, FormulaSerializer, createRefNode, createObjectNode, createArrayNode, createStringNode, createNumberNode, createBooleanNode, observable, makeObservable, makeAutoObservable, runInAction, PatchBuilder, SchemaSerializer, createSchemaTree, NULL_NODE, validateSchema, validateFormulas, reaction } from './chunk-2GZ3M3RV.js';
2
2
  import { obj, ref } from './chunk-IZMBM36H.js';
3
3
  import { nanoid } from 'nanoid';
4
4
  import { parseFormula, parseExpression, evaluateWithContext } from '@revisium/formula';
@@ -397,6 +397,7 @@ var SchemaParser = class {
397
397
  return createStringNode(nodeId, name, {
398
398
  defaultValue: schema.default,
399
399
  foreignKey: schema.foreignKey,
400
+ contentMediaType: schema.contentMediaType,
400
401
  metadata: this.extractMetadata(schema),
401
402
  ref: ref2
402
403
  });