@lionweb/validation 0.5.0-beta.9 → 0.6.0-beta.1
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/README.md +11 -12
- package/dist/diff/DiffResult.d.ts +9 -0
- package/dist/diff/DiffResult.d.ts.map +1 -0
- package/dist/diff/DiffResult.js +18 -0
- package/dist/diff/DiffResult.js.map +1 -0
- package/dist/diff/LionWebJsonDiff.d.ts +25 -0
- package/dist/diff/LionWebJsonDiff.d.ts.map +1 -0
- package/dist/diff/LionWebJsonDiff.js +203 -0
- package/dist/diff/LionWebJsonDiff.js.map +1 -0
- package/dist/diff/changes/Change.d.ts +16 -0
- package/dist/diff/changes/Change.d.ts.map +1 -0
- package/dist/diff/changes/Change.js +19 -0
- package/dist/diff/changes/Change.js.map +1 -0
- package/dist/diff/changes/ChunkChange.d.ts +43 -0
- package/dist/diff/changes/ChunkChange.d.ts.map +1 -0
- package/dist/diff/changes/ChunkChange.js +57 -0
- package/dist/diff/changes/ChunkChange.js.map +1 -0
- package/dist/diff/changes/ContainmentChange.d.ts +19 -0
- package/dist/diff/changes/ContainmentChange.d.ts.map +1 -0
- package/dist/diff/changes/ContainmentChange.js +25 -0
- package/dist/diff/changes/ContainmentChange.js.map +1 -0
- package/dist/diff/changes/NodeChange.d.ts +22 -0
- package/dist/diff/changes/NodeChange.d.ts.map +1 -0
- package/dist/diff/changes/NodeChange.js +24 -0
- package/dist/diff/changes/NodeChange.js.map +1 -0
- package/dist/diff/changes/PropertyChange.d.ts +15 -0
- package/dist/diff/changes/PropertyChange.d.ts.map +1 -0
- package/dist/diff/changes/PropertyChange.js +19 -0
- package/dist/diff/changes/PropertyChange.js.map +1 -0
- package/dist/diff/changes/ReferenceChange.d.ts +19 -0
- package/dist/diff/changes/ReferenceChange.d.ts.map +1 -0
- package/dist/diff/changes/ReferenceChange.js +25 -0
- package/dist/diff/changes/ReferenceChange.js.map +1 -0
- package/dist/diff/changes/index.d.ts +7 -0
- package/dist/diff/changes/index.d.ts.map +1 -0
- package/dist/diff/changes/index.js +7 -0
- package/dist/diff/changes/index.js.map +1 -0
- package/dist/diff/index.d.ts +4 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +4 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/issues/LanguageIssues.d.ts +1 -1
- package/dist/issues/LanguageIssues.d.ts.map +1 -1
- package/dist/issues/LanguageIssues.js.map +1 -1
- package/dist/issues/ReferenceIssues.d.ts +1 -1
- package/dist/issues/ReferenceIssues.d.ts.map +1 -1
- package/dist/issues/ReferenceIssues.js.map +1 -1
- package/dist/issues/SyntaxIssues.d.ts +1 -1
- package/dist/issues/SyntaxIssues.d.ts.map +1 -1
- package/dist/issues/SyntaxIssues.js +4 -4
- package/dist/issues/SyntaxIssues.js.map +1 -1
- package/dist/issues/ValidationIssue.d.ts +1 -1
- package/dist/issues/ValidationIssue.d.ts.map +1 -1
- package/dist/issues/ValidationIssue.js.map +1 -1
- package/dist/issues/index.d.ts +1 -1
- package/dist/issues/index.d.ts.map +1 -1
- package/dist/issues/index.js +1 -1
- package/dist/issues/index.js.map +1 -1
- package/dist/json/ChunkUtils.d.ts.map +1 -1
- package/dist/json/ChunkUtils.js.map +1 -1
- package/dist/json/JsonContext.d.ts.map +1 -0
- package/dist/json/JsonContext.js.map +1 -0
- package/dist/json/LanguageUtils.d.ts.map +1 -1
- package/dist/json/LanguageUtils.js.map +1 -1
- package/dist/json/LionWebJson.d.ts +10 -9
- package/dist/json/LionWebJson.d.ts.map +1 -1
- package/dist/json/LionWebJson.js +1 -0
- package/dist/json/LionWebJson.js.map +1 -1
- package/dist/json/LionWebJsonChunkWrapper.d.ts +7 -4
- package/dist/json/LionWebJsonChunkWrapper.d.ts.map +1 -1
- package/dist/json/LionWebJsonChunkWrapper.js +42 -10
- package/dist/json/LionWebJsonChunkWrapper.js.map +1 -1
- package/dist/json/LionWebLanguageDefinition.d.ts.map +1 -1
- package/dist/json/LionWebLanguageDefinition.js +3 -3
- package/dist/json/LionWebLanguageDefinition.js.map +1 -1
- package/dist/json/NodeUtils.d.ts +5 -4
- package/dist/json/NodeUtils.d.ts.map +1 -1
- package/dist/json/NodeUtils.js +5 -2
- package/dist/json/NodeUtils.js.map +1 -1
- package/dist/json/index.d.ts +1 -0
- package/dist/json/index.d.ts.map +1 -1
- package/dist/json/index.js +1 -0
- package/dist/json/index.js.map +1 -1
- package/dist/runners/FileUtils.d.ts.map +1 -1
- package/dist/runners/FileUtils.js.map +1 -1
- package/dist/runners/RunCheckFolder.js.map +1 -1
- package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -1
- package/dist/runners/RunCheckOneFile.js.map +1 -1
- package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -1
- package/dist/runners/RunLioncoreDiff.js +5 -5
- package/dist/runners/RunLioncoreDiff.js.map +1 -1
- package/dist/runners/Utils.d.ts.map +1 -1
- package/dist/runners/Utils.js +1 -1
- package/dist/runners/Utils.js.map +1 -1
- package/dist/runners/index.d.ts.map +1 -1
- package/dist/runners/index.js.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.js +6 -6
- package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageValidator.js +1 -1
- package/dist/validators/LionWebLanguageValidator.js.map +1 -1
- package/dist/validators/LionWebReferenceValidator.d.ts +1 -1
- package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebReferenceValidator.js +6 -6
- package/dist/validators/LionWebReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebSyntaxValidator.d.ts +1 -1
- package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -1
- package/dist/validators/LionWebSyntaxValidator.js +21 -11
- package/dist/validators/LionWebSyntaxValidator.js.map +1 -1
- package/dist/validators/LionWebValidator.d.ts.map +1 -1
- package/dist/validators/LionWebValidator.js.map +1 -1
- package/dist/validators/SimpleFieldValidator.d.ts +1 -1
- package/dist/validators/SimpleFieldValidator.d.ts.map +1 -1
- package/dist/validators/SimpleFieldValidator.js +1 -1
- package/dist/validators/SimpleFieldValidator.js.map +1 -1
- package/dist/validators/ValidationResult.d.ts.map +1 -1
- package/dist/validators/ValidationResult.js.map +1 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js.map +1 -1
- package/package.json +8 -4
- package/src/diff/DiffResult.ts +21 -0
- package/src/diff/LionWebJsonDiff.ts +257 -0
- package/src/diff/changes/Change.ts +52 -0
- package/src/diff/changes/ChunkChange.ts +68 -0
- package/src/diff/changes/ContainmentChange.ts +26 -0
- package/src/diff/changes/NodeChange.ts +32 -0
- package/src/diff/changes/PropertyChange.ts +19 -0
- package/src/diff/changes/ReferenceChange.ts +24 -0
- package/src/diff/changes/index.ts +6 -0
- package/src/diff/index.ts +3 -0
- package/src/index.ts +5 -4
- package/src/issues/LanguageIssues.ts +61 -39
- package/src/issues/ReferenceIssues.ts +51 -29
- package/src/issues/SyntaxIssues.ts +38 -23
- package/src/issues/ValidationIssue.ts +7 -7
- package/src/issues/index.ts +5 -5
- package/src/json/ChunkUtils.ts +7 -11
- package/src/json/JsonContext.ts +31 -0
- package/src/json/LanguageUtils.ts +5 -6
- package/src/json/LionWebJson.ts +44 -43
- package/src/json/LionWebJsonChunkWrapper.ts +70 -29
- package/src/json/LionWebLanguageDefinition.ts +44 -49
- package/src/json/NodeUtils.ts +25 -19
- package/src/json/index.ts +7 -6
- package/src/json/std-builtins-copy.json +347 -349
- package/src/runners/FileUtils.ts +48 -49
- package/src/runners/RunCheckFolder.ts +3 -3
- package/src/runners/RunCheckFolderWithLanguage.ts +31 -30
- package/src/runners/RunCheckOneFile.ts +3 -3
- package/src/runners/RunCheckOneFileWithLanguage.ts +21 -19
- package/src/runners/RunLioncoreDiff.ts +15 -15
- package/src/runners/Utils.ts +24 -24
- package/src/runners/index.ts +2 -2
- package/src/validators/LionWebLanguageReferenceValidator.ts +63 -55
- package/src/validators/LionWebLanguageValidator.ts +11 -12
- package/src/validators/LionWebReferenceValidator.ts +90 -76
- package/src/validators/LionWebSyntaxValidator.ts +108 -99
- package/src/validators/LionWebValidator.ts +33 -33
- package/src/validators/SimpleFieldValidator.ts +33 -28
- package/src/validators/ValidationResult.ts +5 -6
- package/src/validators/index.ts +7 -7
- package/dist/diff/LionwebDiff.d.ts +0 -40
- package/dist/diff/LionwebDiff.d.ts.map +0 -1
- package/dist/diff/LionwebDiff.js +0 -158
- package/dist/diff/LionwebDiff.js.map +0 -1
- package/dist/issues/JsonContext.d.ts.map +0 -1
- package/dist/issues/JsonContext.js.map +0 -1
- package/src/diff/LionwebDiff.ts +0 -193
- package/src/issues/JsonContext.ts +0 -31
- /package/dist/{issues → json}/JsonContext.d.ts +0 -0
- /package/dist/{issues → json}/JsonContext.js +0 -0
package/README.md
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
# The `validation` package
|
|
2
2
|
|
|
3
|
-
The code in this package implements
|
|
3
|
+
The code in this package implements validators that check serialization chunks against the [serialization specification](https://github.com/LionWeb-io/specification/blob/main/2023.1/serialization/serialization.adoc).
|
|
4
|
+
This package is intentionally kept very lightweight, e.g. it uses types instead of classes and has zero dependencies on external libraries/packages.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
It's tested by running the validators against the [test set in `lionweb-integration-testing/testset`](https://github.com/LionWeb-io/lionweb-integration-testing/tree/main/testset).
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
To run the tests checkout the `lionweb-integration-testing` project in next to the `lionweb-typescript` project, and run:
|
|
8
|
+
To run the tests, checkout the `lionweb-integration-testing` project in next to the `lionweb-typescript` project, and run:
|
|
10
9
|
|
|
11
10
|
```shell
|
|
12
|
-
# install
|
|
13
|
-
|
|
11
|
+
# install dependencies and build source:
|
|
12
|
+
./build.sh
|
|
14
13
|
|
|
15
|
-
# run the tests
|
|
14
|
+
# run the tests in the test set:
|
|
16
15
|
npm run testValid
|
|
17
16
|
npm run testInvalid
|
|
18
17
|
npm run testValidWithLanguage
|
|
19
18
|
npm run testInvalidWithLanguage
|
|
20
19
|
```
|
|
21
20
|
|
|
22
|
-
This will run the tests in the respective folders in the `testset
|
|
21
|
+
This will run the tests in the respective folders in the `testset/` folder in `lionweb-integration-testing`.
|
|
23
22
|
|
|
24
23
|
Notes:
|
|
25
24
|
- Testing with enums is not implemented yet.
|
|
26
|
-
- All tests in the
|
|
25
|
+
- All tests in the test set with duplicates (which used to be considered invalid), are not invalid anymore, as decided in the meeting on 23-08-2023.
|
|
27
26
|
They should be moved to valid.
|
|
28
27
|
|
|
29
|
-
The
|
|
30
|
-
These two should converge in the
|
|
28
|
+
The test runner runs tests at various levels similar (but probably not quite) as described in the [model correctness document](https://github.com/LionWeb-io/specification/blob/meinte/correctness/documentation/correctness.adoc).
|
|
29
|
+
These two should converge in the future.
|
|
31
30
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffResult.d.ts","sourceRoot":"","sources":["../../src/diff/DiffResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,qBAAa,UAAU;IACnB,OAAO,EAAE,MAAM,EAAE,CAAK;IAEtB,MAAM,CAAC,KAAK,EAAE,MAAM;IAIpB,KAAK;IAIL,UAAU,IAAI,OAAO;IAIrB,aAAa,IAAI,MAAM,EAAE;CAG5B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class DiffResult {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.changes = [];
|
|
4
|
+
}
|
|
5
|
+
change(issue) {
|
|
6
|
+
this.changes.push(issue);
|
|
7
|
+
}
|
|
8
|
+
reset() {
|
|
9
|
+
this.changes = [];
|
|
10
|
+
}
|
|
11
|
+
hasChanges() {
|
|
12
|
+
return this.changes.length !== 0;
|
|
13
|
+
}
|
|
14
|
+
asStringArray() {
|
|
15
|
+
return this.changes.map(ch => ch.changeMsg());
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=DiffResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffResult.js","sourceRoot":"","sources":["../../src/diff/DiffResult.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IAAvB;QACI,YAAO,GAAa,EAAE,CAAA;IAiB1B,CAAC;IAfG,MAAM,CAAC,KAAa;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAA;IACjD,CAAC;CACJ"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { JsonContext } from "../issues/index.js";
|
|
2
|
+
import { LionWebJsonContainment, LionWebJsonChunk, LionWebJsonNode, LionWebJsonReference } from "../json/index.js";
|
|
3
|
+
import { Change } from "./changes/Change.js";
|
|
4
|
+
import { DiffResult } from "./DiffResult.js";
|
|
5
|
+
/**
|
|
6
|
+
* Comparing LionWeb JSON chunks and find all differences
|
|
7
|
+
*/
|
|
8
|
+
export declare class LionWebJsonDiff {
|
|
9
|
+
diffResult: DiffResult;
|
|
10
|
+
constructor();
|
|
11
|
+
change(change: Change): void;
|
|
12
|
+
diff(ctx: JsonContext, msg: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Compare two LwNode objects and return their difference
|
|
15
|
+
* @param beforeNode
|
|
16
|
+
* @param afterNode
|
|
17
|
+
*/
|
|
18
|
+
diffLwNode(ctx: JsonContext, beforeNode: LionWebJsonNode, afterNode: LionWebJsonNode): void;
|
|
19
|
+
diffLwChunk(beforeChunk: LionWebJsonChunk, afterChunk: LionWebJsonChunk): void;
|
|
20
|
+
diffContainment(ctx: JsonContext, node: LionWebJsonNode, beforeContainment: LionWebJsonContainment, afterContainment: LionWebJsonContainment): void;
|
|
21
|
+
diffLwReference(ctx: JsonContext, ref1: LionWebJsonReference, ref2: LionWebJsonReference): void;
|
|
22
|
+
private diffLwUsedLanguage;
|
|
23
|
+
private diffLwProperty;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=LionWebJsonDiff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LionWebJsonDiff.d.ts","sourceRoot":"","sources":["../../src/diff/LionWebJsonDiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAGH,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAEf,oBAAoB,EAGvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,MAAM,EAAiB,MAAM,qBAAqB,CAAA;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C;;GAEG;AACH,qBAAa,eAAe;IACxB,UAAU,aAAmB;;IAI7B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM;IAKlC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI;IA+F3F,WAAW,CAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IA6C9E,eAAe,CACX,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,eAAe,EACrB,iBAAiB,EAAE,sBAAsB,EACzC,gBAAgB,EAAE,sBAAsB,GACzC,IAAI;IAwBP,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAsB/F,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;CAiBzB"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { JsonContext } from "../issues/index.js";
|
|
2
|
+
import { ChunkUtils, isEqualMetaPointer, NodeUtils, } from "../json/index.js";
|
|
3
|
+
import { GenericChange } from "./changes/Change.js";
|
|
4
|
+
import { LanguageAdded, LanguageRemoved, NodeAdded, NodeRemoved, SerializationFormatChange } from "./changes/ChunkChange.js";
|
|
5
|
+
import { ChildAdded, ChildRemoved } from "./changes/ContainmentChange.js";
|
|
6
|
+
import { TargetAdded, TargetRemoved } from "./changes/index.js";
|
|
7
|
+
import { DiffResult } from "./DiffResult.js";
|
|
8
|
+
import { NodeClassifierChanged, ParentChanged } from "./changes/NodeChange.js";
|
|
9
|
+
import { PropertyValueChanged } from "./changes/PropertyChange.js";
|
|
10
|
+
/**
|
|
11
|
+
* Comparing LionWeb JSON chunks and find all differences
|
|
12
|
+
*/
|
|
13
|
+
export class LionWebJsonDiff {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.diffResult = new DiffResult();
|
|
16
|
+
}
|
|
17
|
+
change(change) {
|
|
18
|
+
this.diffResult.change(change);
|
|
19
|
+
}
|
|
20
|
+
diff(ctx, msg) {
|
|
21
|
+
const change = new GenericChange(ctx, msg);
|
|
22
|
+
this.diffResult.change(change);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Compare two LwNode objects and return their difference
|
|
26
|
+
* @param beforeNode
|
|
27
|
+
* @param afterNode
|
|
28
|
+
*/
|
|
29
|
+
diffLwNode(ctx, beforeNode, afterNode) {
|
|
30
|
+
if (!isEqualMetaPointer(beforeNode.classifier, afterNode.classifier)) {
|
|
31
|
+
this.change(new NodeClassifierChanged(ctx.concat("classifier"), beforeNode, beforeNode.classifier.key, afterNode.classifier.key));
|
|
32
|
+
}
|
|
33
|
+
if (beforeNode.parent !== afterNode.parent) {
|
|
34
|
+
this.change(new ParentChanged(ctx, beforeNode, beforeNode.parent, afterNode.parent));
|
|
35
|
+
}
|
|
36
|
+
// Find diff between previous and next properties
|
|
37
|
+
beforeNode.properties.forEach((beforeProperty, index) => {
|
|
38
|
+
const key = beforeProperty.property.key;
|
|
39
|
+
const afterProperty = NodeUtils.findLwProperty(afterNode, key);
|
|
40
|
+
if (afterProperty === null) {
|
|
41
|
+
this.change(new PropertyValueChanged(ctx.concat("properties", index), beforeNode.id, beforeProperty.property.key, beforeProperty.value, undefined));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.diffLwProperty(ctx.concat("properties", index), beforeNode, beforeProperty, afterProperty);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
afterNode.properties.forEach((afterProperty, index) => {
|
|
48
|
+
const key = afterProperty.property.key;
|
|
49
|
+
const beforeProperty = NodeUtils.findLwProperty(beforeNode, key);
|
|
50
|
+
if (beforeProperty === null) {
|
|
51
|
+
this.change(new PropertyValueChanged(ctx.concat("properties", index), beforeNode.id, afterProperty.property.key, undefined, afterProperty.value));
|
|
52
|
+
}
|
|
53
|
+
// no else, if the property exists in both nodes, the diff has been claculated in the loop before this one
|
|
54
|
+
});
|
|
55
|
+
beforeNode.containments.forEach((beforeContainment, index) => {
|
|
56
|
+
const beforeKey = beforeContainment.containment.key;
|
|
57
|
+
const afterContainment = NodeUtils.findLwChild(afterNode, beforeKey);
|
|
58
|
+
if (afterContainment === null) {
|
|
59
|
+
// NB No containment is considered equivalent to a containment with empty _children_
|
|
60
|
+
if (beforeContainment.children.length !== 0) {
|
|
61
|
+
beforeContainment.children.forEach(childId => {
|
|
62
|
+
this.change(new ChildRemoved(ctx.concat("containments", index), beforeNode, beforeContainment.containment.key, childId));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.diffContainment(ctx.concat("containments", index), beforeNode, beforeContainment, afterContainment);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
afterNode.containments.forEach((afterContainment, index) => {
|
|
71
|
+
const afterKey = afterContainment.containment.key;
|
|
72
|
+
const beforeContainment = NodeUtils.findLwChild(beforeNode, afterKey);
|
|
73
|
+
if (beforeContainment === null) {
|
|
74
|
+
if (afterContainment.children.length !== 0) {
|
|
75
|
+
afterContainment.children.forEach(childId => {
|
|
76
|
+
this.change(new ChildAdded(ctx.concat("containments", index), afterNode, afterContainment.containment.key, childId));
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// No else, has already been done
|
|
81
|
+
});
|
|
82
|
+
beforeNode.references.forEach((beforeReference, index) => {
|
|
83
|
+
const key = beforeReference.reference.key;
|
|
84
|
+
const afterReference = NodeUtils.findLwReference(afterNode, key);
|
|
85
|
+
if (afterReference === null) {
|
|
86
|
+
if (beforeReference.targets.length !== 0) {
|
|
87
|
+
beforeReference.targets.forEach(target => {
|
|
88
|
+
this.change(new TargetRemoved(ctx.concat("references", index), afterNode, beforeReference.reference.key, target.reference));
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.diffLwReference(ctx.concat("references", index), beforeReference, afterReference);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
afterNode.references.forEach((afterReference, index) => {
|
|
97
|
+
const afterKey = afterReference.reference.key;
|
|
98
|
+
const beforeReference = NodeUtils.findLwReference(afterNode, afterKey);
|
|
99
|
+
if (beforeReference === null) {
|
|
100
|
+
if (afterReference.targets.length !== 0) {
|
|
101
|
+
afterReference.targets.forEach(target => {
|
|
102
|
+
this.change(new TargetAdded(ctx.concat("references", index), afterNode, afterReference.reference.key, target.reference));
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
diffLwChunk(beforeChunk, afterChunk) {
|
|
109
|
+
const ctx = new JsonContext(null, ["$"]);
|
|
110
|
+
console.log("Comparing chunks");
|
|
111
|
+
if (beforeChunk.serializationFormatVersion !== afterChunk.serializationFormatVersion) {
|
|
112
|
+
this.change(new SerializationFormatChange(ctx.concat("serializationFormatVersion"), beforeChunk.serializationFormatVersion, afterChunk.serializationFormatVersion));
|
|
113
|
+
}
|
|
114
|
+
beforeChunk.languages.forEach((beforeLanguage, index) => {
|
|
115
|
+
const afterLanguage = ChunkUtils.findLwUsedLanguage(afterChunk, beforeLanguage.key);
|
|
116
|
+
if (afterLanguage === null) {
|
|
117
|
+
this.change(new LanguageRemoved(ctx.concat("languages", index), beforeLanguage));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.diffLwUsedLanguage(ctx.concat("languages", index), beforeLanguage, afterLanguage);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
afterChunk.languages.forEach((afterLanguage, index) => {
|
|
124
|
+
const beforeLanguage = ChunkUtils.findLwUsedLanguage(beforeChunk, afterLanguage.key);
|
|
125
|
+
if (beforeLanguage === null) {
|
|
126
|
+
this.change(new LanguageAdded(ctx.concat("languages", index), afterLanguage));
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
beforeChunk.nodes.forEach((beforeNode, index) => {
|
|
130
|
+
const beforeId = beforeNode.id;
|
|
131
|
+
const afterNode = ChunkUtils.findNode(afterChunk, beforeId);
|
|
132
|
+
const newCtx = ctx.concat("nodes", index);
|
|
133
|
+
if (afterNode === null || afterNode === undefined) {
|
|
134
|
+
this.change(new NodeRemoved(ctx, beforeNode));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.diffLwNode(newCtx, beforeNode, afterNode);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
afterChunk.nodes.forEach((afterNode, index) => {
|
|
141
|
+
const afterId = afterNode.id;
|
|
142
|
+
const beforeNode = ChunkUtils.findNode(beforeChunk, afterId);
|
|
143
|
+
if (beforeNode === null) {
|
|
144
|
+
this.change(new NodeAdded(ctx.concat("nodes", index), afterNode));
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
diffContainment(ctx, node, beforeContainment, afterContainment) {
|
|
149
|
+
if (!isEqualMetaPointer(beforeContainment.containment, afterContainment.containment)) {
|
|
150
|
+
console.error("diffContainment: MetaPointers of containments should be identical");
|
|
151
|
+
this.diff(ctx, `Containment Object has concept ${JSON.stringify(beforeContainment.containment)} vs ${JSON.stringify(afterContainment.containment)}`);
|
|
152
|
+
}
|
|
153
|
+
// Check whether children exist in both objects (two for loops)
|
|
154
|
+
// TODO Also check for the order that can be changed!!!
|
|
155
|
+
for (const childId1 of beforeContainment.children) {
|
|
156
|
+
if (!afterContainment.children.includes(childId1)) {
|
|
157
|
+
this.change(new ChildRemoved(ctx, node, beforeContainment.containment.key, childId1));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for (const childId2 of afterContainment.children) {
|
|
161
|
+
if (!beforeContainment.children.includes(childId2)) {
|
|
162
|
+
this.change(new ChildAdded(ctx, node, beforeContainment.containment.key, childId2));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
diffLwReference(ctx, ref1, ref2) {
|
|
167
|
+
if (!isEqualMetaPointer(ref1.reference, ref2.reference)) {
|
|
168
|
+
console.error("diffContainment: MetaPointers of containments should be identical");
|
|
169
|
+
this.diff(ctx, `Reference has concept ${JSON.stringify(ref1.reference)} vs ${JSON.stringify(ref2.reference)}`);
|
|
170
|
+
}
|
|
171
|
+
for (const target of ref1.targets) {
|
|
172
|
+
const otherTarget = NodeUtils.findLwReferenceTarget(ref2.targets, target);
|
|
173
|
+
if (otherTarget === null) {
|
|
174
|
+
this.diff(ctx, `REFERENCE Target ${JSON.stringify(target)} missing in second `);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
if (target.reference !== otherTarget.reference || target.resolveInfo !== otherTarget.resolveInfo) {
|
|
178
|
+
this.diff(ctx, `REFERENCE target ${JSON.stringify(target)} vs ${JSON.stringify(otherTarget)}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
for (const target of ref2.targets) {
|
|
183
|
+
if (NodeUtils.findLwReferenceTarget(ref1.targets, target) === null) {
|
|
184
|
+
this.diff(ctx, `REFERENCE Target ${JSON.stringify(target)} missing in first `);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
diffLwUsedLanguage(ctx, obj1, obj2) {
|
|
189
|
+
if (obj1.key !== obj2.key || obj1.version !== obj2.version) {
|
|
190
|
+
this.diff(ctx, `Different used languages ${JSON.stringify(obj1)} vs ${JSON.stringify(obj2)}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
diffLwProperty(ctx, node, beforeProperty, afterProperty) {
|
|
194
|
+
if (!isEqualMetaPointer(beforeProperty.property, afterProperty.property)) {
|
|
195
|
+
console.error("diffContainment: MetaPointers of containments should be identical");
|
|
196
|
+
this.diff(ctx, `Property Object has concept ${JSON.stringify(beforeProperty.property)} vs ${JSON.stringify(afterProperty.property)}`);
|
|
197
|
+
}
|
|
198
|
+
if (beforeProperty.value !== afterProperty.value) {
|
|
199
|
+
this.change(new PropertyValueChanged(ctx, node.id, beforeProperty.property.key, beforeProperty.value, afterProperty.value));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=LionWebJsonDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LionWebJsonDiff.js","sourceRoot":"","sources":["../../src/diff/LionWebJsonDiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { JsonContext } from "../../issues/index.js";
|
|
2
|
+
export type ChangeType = "GenericChange" | "NodeRemoved" | "NodeAdded" | "ChildRemoved" | "ChildAdded" | "ParentChanged" | "PropertyValueChanged" | "SerializationFormatChange" | "PropertyRemoved" | "PropertyAdded" | "NodeClassifierChanged" | "ContainmentAdded" | "ContainmentRemoved" | "LanguageRemoved" | "LanguageAdded" | "TargetAdded" | "TargetRemoved" | "ReferenceRemoved" | "ReferenceAdded";
|
|
3
|
+
export declare abstract class Change {
|
|
4
|
+
abstract readonly id: ChangeType;
|
|
5
|
+
context: JsonContext;
|
|
6
|
+
constructor(context: JsonContext);
|
|
7
|
+
protected abstract msg(): string;
|
|
8
|
+
changeMsg(): string;
|
|
9
|
+
}
|
|
10
|
+
export declare class GenericChange extends Change {
|
|
11
|
+
protected message: string;
|
|
12
|
+
readonly id = "GenericChange";
|
|
13
|
+
constructor(context: JsonContext, message: string);
|
|
14
|
+
protected msg(): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Change.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Change.d.ts","sourceRoot":"","sources":["../../../src/diff/changes/Change.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,MAAM,MAAM,UAAU,GAChB,eAAe,GACf,aAAa,GACb,WAAW,GACX,cAAc,GACd,YAAY,GACZ,eAAe,GACf,sBAAsB,GACtB,2BAA2B,GAC3B,iBAAiB,GACjB,eAAe,GACf,uBAAuB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,eAAe,GACf,kBAAkB,GAClB,gBAAgB,CAAA;AAEtB,8BAAsB,MAAM;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IAChC,OAAO,EAAE,WAAW,CAAA;gBAER,OAAO,EAAE,WAAW;IAIhC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,MAAM;IAEzB,SAAS,IAAI,MAAM;CAG7B;AAED,qBAAa,aAAc,SAAQ,MAAM;IAKjC,SAAS,CAAC,OAAO,EAAE,MAAM;IAJ7B,QAAQ,CAAC,EAAE,mBAAkB;gBAGzB,OAAO,EAAE,WAAW,EACV,OAAO,EAAE,MAAM;IAK7B,SAAS,CAAC,GAAG,IAAI,MAAM;CAG1B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class Change {
|
|
2
|
+
constructor(context) {
|
|
3
|
+
this.context = context;
|
|
4
|
+
}
|
|
5
|
+
changeMsg() {
|
|
6
|
+
return `${this.id}: ${this.msg()} at ${this.context.toString()} `;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class GenericChange extends Change {
|
|
10
|
+
constructor(context, message) {
|
|
11
|
+
super(context);
|
|
12
|
+
this.message = message;
|
|
13
|
+
this.id = "GenericChange";
|
|
14
|
+
}
|
|
15
|
+
msg() {
|
|
16
|
+
return this.message;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Change.js","sourceRoot":"","sources":["../../../src/diff/changes/Change.ts"],"names":[],"mappings":"AAuBA,MAAM,OAAgB,MAAM;IAIxB,YAAY,OAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAIM,SAAS;QACZ,OAAO,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAA;IACrE,CAAC;CACJ;AAED,MAAM,OAAO,aAAc,SAAQ,MAAM;IAGrC,YACI,OAAoB,EACV,OAAe;QAEzB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFJ,YAAO,GAAP,OAAO,CAAQ;QAJpB,OAAE,GAAG,eAAe,CAAA;IAO7B,CAAC;IAES,GAAG;QACT,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;CACJ"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { JsonContext } from "../../issues/index.js";
|
|
2
|
+
import { LionWebJsonNode, LwJsonUsedLanguage } from "../../json/index.js";
|
|
3
|
+
import { Change } from "./Change.js";
|
|
4
|
+
export declare abstract class ChunkChange extends Change {
|
|
5
|
+
context: JsonContext;
|
|
6
|
+
constructor(context: JsonContext);
|
|
7
|
+
}
|
|
8
|
+
export declare class SerializationFormatChange extends ChunkChange {
|
|
9
|
+
context: JsonContext;
|
|
10
|
+
protected original: string;
|
|
11
|
+
protected newValue: string;
|
|
12
|
+
readonly id = "SerializationFormatChange";
|
|
13
|
+
constructor(context: JsonContext, original: string, newValue: string);
|
|
14
|
+
protected msg: () => string;
|
|
15
|
+
}
|
|
16
|
+
export declare class NodeRemoved extends ChunkChange {
|
|
17
|
+
context: JsonContext;
|
|
18
|
+
node: LionWebJsonNode;
|
|
19
|
+
readonly id = "NodeRemoved";
|
|
20
|
+
constructor(context: JsonContext, node: LionWebJsonNode);
|
|
21
|
+
protected msg: () => string;
|
|
22
|
+
}
|
|
23
|
+
export declare class NodeAdded extends ChunkChange {
|
|
24
|
+
context: JsonContext;
|
|
25
|
+
node: LionWebJsonNode;
|
|
26
|
+
readonly id = "NodeAdded";
|
|
27
|
+
constructor(context: JsonContext, node: LionWebJsonNode);
|
|
28
|
+
protected msg: () => string;
|
|
29
|
+
}
|
|
30
|
+
export declare abstract class LanguageChange extends ChunkChange {
|
|
31
|
+
context: JsonContext;
|
|
32
|
+
language: LwJsonUsedLanguage;
|
|
33
|
+
constructor(context: JsonContext, language: LwJsonUsedLanguage);
|
|
34
|
+
}
|
|
35
|
+
export declare class LanguageRemoved extends LanguageChange {
|
|
36
|
+
readonly id = "LanguageRemoved";
|
|
37
|
+
protected msg: () => string;
|
|
38
|
+
}
|
|
39
|
+
export declare class LanguageAdded extends LanguageChange {
|
|
40
|
+
readonly id = "LanguageAdded";
|
|
41
|
+
protected msg: () => string;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ChunkChange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChunkChange.d.ts","sourceRoot":"","sources":["../../../src/diff/changes/ChunkChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,8BAAsB,WAAY,SAAQ,MAAM;IACzB,OAAO,EAAE,WAAW;gBAApB,OAAO,EAAE,WAAW;CAG1C;AAED,qBAAa,yBAA0B,SAAQ,WAAW;IAI3C,OAAO,EAAE,WAAW;IAC3B,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,QAAQ,EAAE,MAAM;IAL9B,QAAQ,CAAC,EAAE,+BAA8B;gBAG9B,OAAO,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;IAK9B,SAAS,CAAC,GAAG,eAAoF;CACpG;AAED,qBAAa,WAAY,SAAQ,WAAW;IAI7B,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,eAAe;IAJhC,QAAQ,CAAC,EAAE,iBAAgB;gBAGhB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,eAAe;IAKhC,SAAS,CAAC,GAAG,eAA0C;CAC1D;AAED,qBAAa,SAAU,SAAQ,WAAW;IAI3B,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,eAAe;IAJhC,QAAQ,CAAC,EAAE,eAAc;gBAGd,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,eAAe;IAKhC,SAAS,CAAC,GAAG,eAAwC;CACxD;AAED,8BAAsB,cAAe,SAAQ,WAAW;IAEzC,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,kBAAkB;gBAD5B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,kBAAkB;CAI1C;AAED,qBAAa,eAAgB,SAAQ,cAAc;IAC/C,QAAQ,CAAC,EAAE,qBAAoB;IAC/B,SAAS,CAAC,GAAG,eAAkG;CAClH;AAED,qBAAa,aAAc,SAAQ,cAAc;IAC7C,QAAQ,CAAC,EAAE,mBAAkB;IAC7B,SAAS,CAAC,GAAG,eAAgG;CAChH"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Change } from "./Change.js";
|
|
2
|
+
export class ChunkChange extends Change {
|
|
3
|
+
constructor(context) {
|
|
4
|
+
super(context);
|
|
5
|
+
this.context = context;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class SerializationFormatChange extends ChunkChange {
|
|
9
|
+
constructor(context, original, newValue) {
|
|
10
|
+
super(context);
|
|
11
|
+
this.context = context;
|
|
12
|
+
this.original = original;
|
|
13
|
+
this.newValue = newValue;
|
|
14
|
+
this.id = "SerializationFormatChange";
|
|
15
|
+
this.msg = () => `Serialization versions do not match: ${this.original} vs ${this.newValue}`;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class NodeRemoved extends ChunkChange {
|
|
19
|
+
constructor(context, node) {
|
|
20
|
+
super(context);
|
|
21
|
+
this.context = context;
|
|
22
|
+
this.node = node;
|
|
23
|
+
this.id = "NodeRemoved";
|
|
24
|
+
this.msg = () => `Node ${this.node.id} is removed`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class NodeAdded extends ChunkChange {
|
|
28
|
+
constructor(context, node) {
|
|
29
|
+
super(context);
|
|
30
|
+
this.context = context;
|
|
31
|
+
this.node = node;
|
|
32
|
+
this.id = "NodeAdded";
|
|
33
|
+
this.msg = () => `Node ${this.node.id} is added`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class LanguageChange extends ChunkChange {
|
|
37
|
+
constructor(context, language) {
|
|
38
|
+
super(context);
|
|
39
|
+
this.context = context;
|
|
40
|
+
this.language = language;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class LanguageRemoved extends LanguageChange {
|
|
44
|
+
constructor() {
|
|
45
|
+
super(...arguments);
|
|
46
|
+
this.id = "LanguageRemoved";
|
|
47
|
+
this.msg = () => `Language with key ${this.language.key} and version ${this.language.version} is removed`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class LanguageAdded extends LanguageChange {
|
|
51
|
+
constructor() {
|
|
52
|
+
super(...arguments);
|
|
53
|
+
this.id = "LanguageAdded";
|
|
54
|
+
this.msg = () => `Language with key ${this.language.key} and version ${this.language.version} is added`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ChunkChange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChunkChange.js","sourceRoot":"","sources":["../../../src/diff/changes/ChunkChange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,OAAgB,WAAY,SAAQ,MAAM;IAC5C,YAAmB,OAAoB;QACnC,KAAK,CAAC,OAAO,CAAC,CAAA;QADC,YAAO,GAAP,OAAO,CAAa;IAEvC,CAAC;CACJ;AAED,MAAM,OAAO,yBAA0B,SAAQ,WAAW;IAGtD,YACW,OAAoB,EACjB,QAAgB,EAChB,QAAgB;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAA;QAJP,YAAO,GAAP,OAAO,CAAa;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QALrB,OAAE,GAAG,2BAA2B,CAAA;QAU/B,QAAG,GAAG,GAAG,EAAE,CAAC,wCAAwC,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IAFjG,CAAC;CAGJ;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IAGxC,YACW,OAAoB,EACpB,IAAqB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,YAAO,GAAP,OAAO,CAAa;QACpB,SAAI,GAAJ,IAAI,CAAiB;QAJvB,OAAE,GAAG,aAAa,CAAA;QASjB,QAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAA;IAFvD,CAAC;CAGJ;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IAGtC,YACW,OAAoB,EACpB,IAAqB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,YAAO,GAAP,OAAO,CAAa;QACpB,SAAI,GAAJ,IAAI,CAAiB;QAJvB,OAAE,GAAG,WAAW,CAAA;QASf,QAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAFrD,CAAC;CAGJ;AAED,MAAM,OAAgB,cAAe,SAAQ,WAAW;IACpD,YACW,OAAoB,EACpB,QAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,YAAO,GAAP,OAAO,CAAa;QACpB,aAAQ,GAAR,QAAQ,CAAoB;IAGvC,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAAnD;;QACa,OAAE,GAAG,iBAAiB,CAAA;QACrB,QAAG,GAAG,GAAG,EAAE,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,GAAG,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,aAAa,CAAA;IACnH,CAAC;CAAA;AAED,MAAM,OAAO,aAAc,SAAQ,cAAc;IAAjD;;QACa,OAAE,GAAG,eAAe,CAAA;QACnB,QAAG,GAAG,GAAG,EAAE,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,GAAG,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,WAAW,CAAA;IACjH,CAAC;CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { JsonContext } from "../../issues/index.js";
|
|
2
|
+
import { LionWebJsonNode } from "../../json/index.js";
|
|
3
|
+
import { Change } from "./Change.js";
|
|
4
|
+
export declare abstract class ContainmentChange extends Change {
|
|
5
|
+
context: JsonContext;
|
|
6
|
+
parentNode: LionWebJsonNode;
|
|
7
|
+
containmentKey: string;
|
|
8
|
+
childId: string;
|
|
9
|
+
constructor(context: JsonContext, parentNode: LionWebJsonNode, containmentKey: string, childId: string);
|
|
10
|
+
}
|
|
11
|
+
export declare class ChildAdded extends ContainmentChange {
|
|
12
|
+
readonly id = "ChildAdded";
|
|
13
|
+
protected msg: () => string;
|
|
14
|
+
}
|
|
15
|
+
export declare class ChildRemoved extends ContainmentChange {
|
|
16
|
+
readonly id = "ChildRemoved";
|
|
17
|
+
protected msg: () => string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ContainmentChange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainmentChange.d.ts","sourceRoot":"","sources":["../../../src/diff/changes/ContainmentChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,8BAAsB,iBAAkB,SAAQ,MAAM;IAEvC,OAAO,EAAE,WAAW;IACpB,UAAU,EAAE,eAAe;IAC3B,cAAc,EAAE,MAAM;IACtB,OAAO,EAAE,MAAM;gBAHf,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,eAAe,EAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM;CAI7B;AAED,qBAAa,UAAW,SAAQ,iBAAiB;IAC7C,QAAQ,CAAC,EAAE,gBAAe;IAC1B,SAAS,CAAC,GAAG,eAA2G;CAC3H;AAED,qBAAa,YAAa,SAAQ,iBAAiB;IAC/C,QAAQ,CAAC,EAAE,kBAAiB;IAC5B,SAAS,CAAC,GAAG,eAAuE;CACvF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Change } from "./Change.js";
|
|
2
|
+
export class ContainmentChange extends Change {
|
|
3
|
+
constructor(context, parentNode, containmentKey, childId) {
|
|
4
|
+
super(context);
|
|
5
|
+
this.context = context;
|
|
6
|
+
this.parentNode = parentNode;
|
|
7
|
+
this.containmentKey = containmentKey;
|
|
8
|
+
this.childId = childId;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class ChildAdded extends ContainmentChange {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.id = "ChildAdded";
|
|
15
|
+
this.msg = () => `Node "${this.parentNode.id}" added child "${this.childId}" to containment ${this.containmentKey}`;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class ChildRemoved extends ContainmentChange {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.id = "ChildRemoved";
|
|
22
|
+
this.msg = () => `Node "${this.parentNode.id}" removed child "${this.childId}"`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ContainmentChange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainmentChange.js","sourceRoot":"","sources":["../../../src/diff/changes/ContainmentChange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,OAAgB,iBAAkB,SAAQ,MAAM;IAClD,YACW,OAAoB,EACpB,UAA2B,EAC3B,cAAsB,EACtB,OAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAA;QALP,YAAO,GAAP,OAAO,CAAa;QACpB,eAAU,GAAV,UAAU,CAAiB;QAC3B,mBAAc,GAAd,cAAc,CAAQ;QACtB,YAAO,GAAP,OAAO,CAAQ;IAG1B,CAAC;CACJ;AAED,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IAAjD;;QACa,OAAE,GAAG,YAAY,CAAA;QAChB,QAAG,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,EAAE,kBAAkB,IAAI,CAAC,OAAO,oBAAoB,IAAI,CAAC,cAAc,EAAE,CAAA;IAC5H,CAAC;CAAA;AAED,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAAnD;;QACa,OAAE,GAAG,cAAc,CAAA;QAClB,QAAG,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,EAAE,oBAAoB,IAAI,CAAC,OAAO,GAAG,CAAA;IACxF,CAAC;CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JsonContext } from "../../issues/index.js";
|
|
2
|
+
import { LionWebJsonNode } from "../../json/index.js";
|
|
3
|
+
import { Change, ChangeType } from "./Change.js";
|
|
4
|
+
export declare class NodeClassifierChanged extends Change {
|
|
5
|
+
context: JsonContext;
|
|
6
|
+
node: LionWebJsonNode;
|
|
7
|
+
oldClassifierKey: string;
|
|
8
|
+
newClassifierKey: string;
|
|
9
|
+
readonly id: ChangeType;
|
|
10
|
+
constructor(context: JsonContext, node: LionWebJsonNode, oldClassifierKey: string, newClassifierKey: string);
|
|
11
|
+
protected msg: () => string;
|
|
12
|
+
}
|
|
13
|
+
export declare class ParentChanged extends Change {
|
|
14
|
+
context: JsonContext;
|
|
15
|
+
node: LionWebJsonNode;
|
|
16
|
+
beforeParentId: string | null;
|
|
17
|
+
afterParentId: string | null;
|
|
18
|
+
readonly id = "ParentChanged";
|
|
19
|
+
constructor(context: JsonContext, node: LionWebJsonNode, beforeParentId: string | null, afterParentId: string | null);
|
|
20
|
+
protected msg: () => string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=NodeChange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeChange.d.ts","sourceRoot":"","sources":["../../../src/diff/changes/NodeChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEhD,qBAAa,qBAAsB,SAAQ,MAAM;IAIlC,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,eAAe;IACrB,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,MAAM;IANnC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAA0B;gBAGtC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,eAAe,EACrB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM;IAInC,SAAS,CAAC,GAAG,eAAkH;CAClI;AAED,qBAAa,aAAc,SAAQ,MAAM;IAI1B,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI;IANvC,QAAQ,CAAC,EAAE,mBAAkB;gBAGlB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,eAAe,EACrB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,aAAa,EAAE,MAAM,GAAG,IAAI;IAKvC,SAAS,CAAC,GAAG,eAAwG;CACxH"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Change } from "./Change.js";
|
|
2
|
+
export class NodeClassifierChanged extends Change {
|
|
3
|
+
constructor(context, node, oldClassifierKey, newClassifierKey) {
|
|
4
|
+
super(context);
|
|
5
|
+
this.context = context;
|
|
6
|
+
this.node = node;
|
|
7
|
+
this.oldClassifierKey = oldClassifierKey;
|
|
8
|
+
this.newClassifierKey = newClassifierKey;
|
|
9
|
+
this.id = "NodeClassifierChanged";
|
|
10
|
+
this.msg = () => `Object ${this.node.id} has classifier changed from ${this.oldClassifierKey} to ${this.newClassifierKey}`;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class ParentChanged extends Change {
|
|
14
|
+
constructor(context, node, beforeParentId, afterParentId) {
|
|
15
|
+
super(context);
|
|
16
|
+
this.context = context;
|
|
17
|
+
this.node = node;
|
|
18
|
+
this.beforeParentId = beforeParentId;
|
|
19
|
+
this.afterParentId = afterParentId;
|
|
20
|
+
this.id = "ParentChanged";
|
|
21
|
+
this.msg = () => `Node "${this.node.id}" changed parent from "${this.beforeParentId}" to "${this.afterParentId}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=NodeChange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeChange.js","sourceRoot":"","sources":["../../../src/diff/changes/NodeChange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAA;AAEhD,MAAM,OAAO,qBAAsB,SAAQ,MAAM;IAG7C,YACW,OAAoB,EACpB,IAAqB,EACrB,gBAAwB,EACxB,gBAAwB;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAA;QALP,YAAO,GAAP,OAAO,CAAa;QACpB,SAAI,GAAJ,IAAI,CAAiB;QACrB,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,qBAAgB,GAAhB,gBAAgB,CAAQ;QAN1B,OAAE,GAAe,uBAAuB,CAAA;QAUvC,QAAG,GAAG,GAAG,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE,gCAAgC,IAAI,CAAC,gBAAgB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAD/H,CAAC;CAEJ;AAED,MAAM,OAAO,aAAc,SAAQ,MAAM;IAGrC,YACW,OAAoB,EACpB,IAAqB,EACrB,cAA6B,EAC7B,aAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAA;QALP,YAAO,GAAP,OAAO,CAAa;QACpB,SAAI,GAAJ,IAAI,CAAiB;QACrB,mBAAc,GAAd,cAAc,CAAe;QAC7B,kBAAa,GAAb,aAAa,CAAe;QAN9B,OAAE,GAAG,eAAe,CAAA;QAWnB,QAAG,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,0BAA0B,IAAI,CAAC,cAAc,SAAS,IAAI,CAAC,aAAa,EAAE,CAAA;IAFrH,CAAC;CAGJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { JsonContext } from "../../issues/index.js";
|
|
2
|
+
import { Change } from "./Change.js";
|
|
3
|
+
export declare abstract class PropertyChange extends Change {
|
|
4
|
+
context: JsonContext;
|
|
5
|
+
nodeId: string;
|
|
6
|
+
propertyKey: string;
|
|
7
|
+
oldValue: string | undefined;
|
|
8
|
+
newValue: string | undefined;
|
|
9
|
+
constructor(context: JsonContext, nodeId: string, propertyKey: string, oldValue: string | undefined, newValue: string | undefined);
|
|
10
|
+
}
|
|
11
|
+
export declare class PropertyValueChanged extends PropertyChange {
|
|
12
|
+
readonly id = "PropertyValueChanged";
|
|
13
|
+
protected msg: () => string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=PropertyChange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyChange.d.ts","sourceRoot":"","sources":["../../../src/diff/changes/PropertyChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,8BAAsB,cAAe,SAAQ,MAAM;IAEpC,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS;gBAJ5B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS;CAI1C;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IACpD,QAAQ,CAAC,EAAE,0BAAyB;IACpC,SAAS,CAAC,GAAG,eAA6H;CAC7I"}
|