@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.
- package/dist/{chunk-AWFMSOHM.js → chunk-2GZ3M3RV.js} +7 -22
- package/dist/{chunk-IOUYEEGB.cjs → chunk-DN2C3T5D.cjs} +83 -69
- package/dist/{chunk-RCCBUOGY.cjs → chunk-PJ5OFCLO.cjs} +7 -22
- package/dist/{chunk-6ELDQVQK.js → chunk-RXPIMS7W.js} +16 -2
- package/dist/core/index.cjs +60 -60
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +106 -106
- package/dist/index.js +2 -2
- package/dist/model/index.cjs +50 -50
- package/dist/model/index.d.cts +1 -0
- package/dist/model/index.d.ts +1 -0
- package/dist/model/index.js +2 -2
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
452
|
+
return chunkPJ5OFCLO_cjs.createStringNode(nanoid.nanoid(), name, { defaultValue: "" });
|
|
439
453
|
case "number":
|
|
440
|
-
return
|
|
454
|
+
return chunkPJ5OFCLO_cjs.createNumberNode(nanoid.nanoid(), name, { defaultValue: 0 });
|
|
441
455
|
case "boolean":
|
|
442
|
-
return
|
|
456
|
+
return chunkPJ5OFCLO_cjs.createBooleanNode(nanoid.nanoid(), name, { defaultValue: false });
|
|
443
457
|
case "object":
|
|
444
|
-
return
|
|
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 =
|
|
453
|
-
return
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
673
|
+
return chunkPJ5OFCLO_cjs.createNumberNode(id, name, {
|
|
660
674
|
defaultValue: spec.default ?? 0,
|
|
661
675
|
metadata
|
|
662
676
|
});
|
|
663
677
|
case "boolean":
|
|
664
|
-
return
|
|
678
|
+
return chunkPJ5OFCLO_cjs.createBooleanNode(id, name, {
|
|
665
679
|
defaultValue: spec.default ?? false,
|
|
666
680
|
metadata
|
|
667
681
|
});
|
|
668
682
|
case "object":
|
|
669
|
-
return
|
|
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 =
|
|
678
|
-
return
|
|
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
|
|
743
|
-
_serializer = new
|
|
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 =
|
|
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
|
-
|
|
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
|
|
805
|
+
return chunkPJ5OFCLO_cjs.NULL_NODE;
|
|
792
806
|
}
|
|
793
807
|
if (index < 0 || index > parent.properties().length) {
|
|
794
|
-
return
|
|
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
|
|
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
|
|
1044
|
+
return chunkPJ5OFCLO_cjs.validateSchema(this._currentTree.root());
|
|
1031
1045
|
}
|
|
1032
1046
|
get formulaErrors() {
|
|
1033
|
-
return [...this._formulaParseErrors, ...
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
3380
|
-
this._tableCache =
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
3581
|
+
const rowMap = chunkPJ5OFCLO_cjs.observable.map();
|
|
3568
3582
|
const cache = { schema, rows: rowMap };
|
|
3569
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|