@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.
Files changed (177) hide show
  1. package/README.md +11 -12
  2. package/dist/diff/DiffResult.d.ts +9 -0
  3. package/dist/diff/DiffResult.d.ts.map +1 -0
  4. package/dist/diff/DiffResult.js +18 -0
  5. package/dist/diff/DiffResult.js.map +1 -0
  6. package/dist/diff/LionWebJsonDiff.d.ts +25 -0
  7. package/dist/diff/LionWebJsonDiff.d.ts.map +1 -0
  8. package/dist/diff/LionWebJsonDiff.js +203 -0
  9. package/dist/diff/LionWebJsonDiff.js.map +1 -0
  10. package/dist/diff/changes/Change.d.ts +16 -0
  11. package/dist/diff/changes/Change.d.ts.map +1 -0
  12. package/dist/diff/changes/Change.js +19 -0
  13. package/dist/diff/changes/Change.js.map +1 -0
  14. package/dist/diff/changes/ChunkChange.d.ts +43 -0
  15. package/dist/diff/changes/ChunkChange.d.ts.map +1 -0
  16. package/dist/diff/changes/ChunkChange.js +57 -0
  17. package/dist/diff/changes/ChunkChange.js.map +1 -0
  18. package/dist/diff/changes/ContainmentChange.d.ts +19 -0
  19. package/dist/diff/changes/ContainmentChange.d.ts.map +1 -0
  20. package/dist/diff/changes/ContainmentChange.js +25 -0
  21. package/dist/diff/changes/ContainmentChange.js.map +1 -0
  22. package/dist/diff/changes/NodeChange.d.ts +22 -0
  23. package/dist/diff/changes/NodeChange.d.ts.map +1 -0
  24. package/dist/diff/changes/NodeChange.js +24 -0
  25. package/dist/diff/changes/NodeChange.js.map +1 -0
  26. package/dist/diff/changes/PropertyChange.d.ts +15 -0
  27. package/dist/diff/changes/PropertyChange.d.ts.map +1 -0
  28. package/dist/diff/changes/PropertyChange.js +19 -0
  29. package/dist/diff/changes/PropertyChange.js.map +1 -0
  30. package/dist/diff/changes/ReferenceChange.d.ts +19 -0
  31. package/dist/diff/changes/ReferenceChange.d.ts.map +1 -0
  32. package/dist/diff/changes/ReferenceChange.js +25 -0
  33. package/dist/diff/changes/ReferenceChange.js.map +1 -0
  34. package/dist/diff/changes/index.d.ts +7 -0
  35. package/dist/diff/changes/index.d.ts.map +1 -0
  36. package/dist/diff/changes/index.js +7 -0
  37. package/dist/diff/changes/index.js.map +1 -0
  38. package/dist/diff/index.d.ts +4 -0
  39. package/dist/diff/index.d.ts.map +1 -0
  40. package/dist/diff/index.js +4 -0
  41. package/dist/diff/index.js.map +1 -0
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/issues/LanguageIssues.d.ts +1 -1
  47. package/dist/issues/LanguageIssues.d.ts.map +1 -1
  48. package/dist/issues/LanguageIssues.js.map +1 -1
  49. package/dist/issues/ReferenceIssues.d.ts +1 -1
  50. package/dist/issues/ReferenceIssues.d.ts.map +1 -1
  51. package/dist/issues/ReferenceIssues.js.map +1 -1
  52. package/dist/issues/SyntaxIssues.d.ts +1 -1
  53. package/dist/issues/SyntaxIssues.d.ts.map +1 -1
  54. package/dist/issues/SyntaxIssues.js +4 -4
  55. package/dist/issues/SyntaxIssues.js.map +1 -1
  56. package/dist/issues/ValidationIssue.d.ts +1 -1
  57. package/dist/issues/ValidationIssue.d.ts.map +1 -1
  58. package/dist/issues/ValidationIssue.js.map +1 -1
  59. package/dist/issues/index.d.ts +1 -1
  60. package/dist/issues/index.d.ts.map +1 -1
  61. package/dist/issues/index.js +1 -1
  62. package/dist/issues/index.js.map +1 -1
  63. package/dist/json/ChunkUtils.d.ts.map +1 -1
  64. package/dist/json/ChunkUtils.js.map +1 -1
  65. package/dist/json/JsonContext.d.ts.map +1 -0
  66. package/dist/json/JsonContext.js.map +1 -0
  67. package/dist/json/LanguageUtils.d.ts.map +1 -1
  68. package/dist/json/LanguageUtils.js.map +1 -1
  69. package/dist/json/LionWebJson.d.ts +10 -9
  70. package/dist/json/LionWebJson.d.ts.map +1 -1
  71. package/dist/json/LionWebJson.js +1 -0
  72. package/dist/json/LionWebJson.js.map +1 -1
  73. package/dist/json/LionWebJsonChunkWrapper.d.ts +7 -4
  74. package/dist/json/LionWebJsonChunkWrapper.d.ts.map +1 -1
  75. package/dist/json/LionWebJsonChunkWrapper.js +42 -10
  76. package/dist/json/LionWebJsonChunkWrapper.js.map +1 -1
  77. package/dist/json/LionWebLanguageDefinition.d.ts.map +1 -1
  78. package/dist/json/LionWebLanguageDefinition.js +3 -3
  79. package/dist/json/LionWebLanguageDefinition.js.map +1 -1
  80. package/dist/json/NodeUtils.d.ts +5 -4
  81. package/dist/json/NodeUtils.d.ts.map +1 -1
  82. package/dist/json/NodeUtils.js +5 -2
  83. package/dist/json/NodeUtils.js.map +1 -1
  84. package/dist/json/index.d.ts +1 -0
  85. package/dist/json/index.d.ts.map +1 -1
  86. package/dist/json/index.js +1 -0
  87. package/dist/json/index.js.map +1 -1
  88. package/dist/runners/FileUtils.d.ts.map +1 -1
  89. package/dist/runners/FileUtils.js.map +1 -1
  90. package/dist/runners/RunCheckFolder.js.map +1 -1
  91. package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -1
  92. package/dist/runners/RunCheckOneFile.js.map +1 -1
  93. package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -1
  94. package/dist/runners/RunLioncoreDiff.js +5 -5
  95. package/dist/runners/RunLioncoreDiff.js.map +1 -1
  96. package/dist/runners/Utils.d.ts.map +1 -1
  97. package/dist/runners/Utils.js +1 -1
  98. package/dist/runners/Utils.js.map +1 -1
  99. package/dist/runners/index.d.ts.map +1 -1
  100. package/dist/runners/index.js.map +1 -1
  101. package/dist/validators/LionWebLanguageReferenceValidator.d.ts +1 -1
  102. package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
  103. package/dist/validators/LionWebLanguageReferenceValidator.js +6 -6
  104. package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
  105. package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
  106. package/dist/validators/LionWebLanguageValidator.js +1 -1
  107. package/dist/validators/LionWebLanguageValidator.js.map +1 -1
  108. package/dist/validators/LionWebReferenceValidator.d.ts +1 -1
  109. package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
  110. package/dist/validators/LionWebReferenceValidator.js +6 -6
  111. package/dist/validators/LionWebReferenceValidator.js.map +1 -1
  112. package/dist/validators/LionWebSyntaxValidator.d.ts +1 -1
  113. package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -1
  114. package/dist/validators/LionWebSyntaxValidator.js +21 -11
  115. package/dist/validators/LionWebSyntaxValidator.js.map +1 -1
  116. package/dist/validators/LionWebValidator.d.ts.map +1 -1
  117. package/dist/validators/LionWebValidator.js.map +1 -1
  118. package/dist/validators/SimpleFieldValidator.d.ts +1 -1
  119. package/dist/validators/SimpleFieldValidator.d.ts.map +1 -1
  120. package/dist/validators/SimpleFieldValidator.js +1 -1
  121. package/dist/validators/SimpleFieldValidator.js.map +1 -1
  122. package/dist/validators/ValidationResult.d.ts.map +1 -1
  123. package/dist/validators/ValidationResult.js.map +1 -1
  124. package/dist/validators/index.d.ts.map +1 -1
  125. package/dist/validators/index.js.map +1 -1
  126. package/package.json +8 -4
  127. package/src/diff/DiffResult.ts +21 -0
  128. package/src/diff/LionWebJsonDiff.ts +257 -0
  129. package/src/diff/changes/Change.ts +52 -0
  130. package/src/diff/changes/ChunkChange.ts +68 -0
  131. package/src/diff/changes/ContainmentChange.ts +26 -0
  132. package/src/diff/changes/NodeChange.ts +32 -0
  133. package/src/diff/changes/PropertyChange.ts +19 -0
  134. package/src/diff/changes/ReferenceChange.ts +24 -0
  135. package/src/diff/changes/index.ts +6 -0
  136. package/src/diff/index.ts +3 -0
  137. package/src/index.ts +5 -4
  138. package/src/issues/LanguageIssues.ts +61 -39
  139. package/src/issues/ReferenceIssues.ts +51 -29
  140. package/src/issues/SyntaxIssues.ts +38 -23
  141. package/src/issues/ValidationIssue.ts +7 -7
  142. package/src/issues/index.ts +5 -5
  143. package/src/json/ChunkUtils.ts +7 -11
  144. package/src/json/JsonContext.ts +31 -0
  145. package/src/json/LanguageUtils.ts +5 -6
  146. package/src/json/LionWebJson.ts +44 -43
  147. package/src/json/LionWebJsonChunkWrapper.ts +70 -29
  148. package/src/json/LionWebLanguageDefinition.ts +44 -49
  149. package/src/json/NodeUtils.ts +25 -19
  150. package/src/json/index.ts +7 -6
  151. package/src/json/std-builtins-copy.json +347 -349
  152. package/src/runners/FileUtils.ts +48 -49
  153. package/src/runners/RunCheckFolder.ts +3 -3
  154. package/src/runners/RunCheckFolderWithLanguage.ts +31 -30
  155. package/src/runners/RunCheckOneFile.ts +3 -3
  156. package/src/runners/RunCheckOneFileWithLanguage.ts +21 -19
  157. package/src/runners/RunLioncoreDiff.ts +15 -15
  158. package/src/runners/Utils.ts +24 -24
  159. package/src/runners/index.ts +2 -2
  160. package/src/validators/LionWebLanguageReferenceValidator.ts +63 -55
  161. package/src/validators/LionWebLanguageValidator.ts +11 -12
  162. package/src/validators/LionWebReferenceValidator.ts +90 -76
  163. package/src/validators/LionWebSyntaxValidator.ts +108 -99
  164. package/src/validators/LionWebValidator.ts +33 -33
  165. package/src/validators/SimpleFieldValidator.ts +33 -28
  166. package/src/validators/ValidationResult.ts +5 -6
  167. package/src/validators/index.ts +7 -7
  168. package/dist/diff/LionwebDiff.d.ts +0 -40
  169. package/dist/diff/LionwebDiff.d.ts.map +0 -1
  170. package/dist/diff/LionwebDiff.js +0 -158
  171. package/dist/diff/LionwebDiff.js.map +0 -1
  172. package/dist/issues/JsonContext.d.ts.map +0 -1
  173. package/dist/issues/JsonContext.js.map +0 -1
  174. package/src/diff/LionwebDiff.ts +0 -193
  175. package/src/issues/JsonContext.ts +0 -31
  176. /package/dist/{issues → json}/JsonContext.d.ts +0 -0
  177. /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 the checks to run the tests in `lionweb-integration-testing/testset`.
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
- This package is intentionally kept very lightweight, e.g. it uses type instead of classes and has zero dependencies on external libraries/packages.
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
- It assumes that Node.js 18 is used, but will probably work with other versions as well.
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 ts-node
13
- npm install
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` folder in `lionweb-integration-testing`.
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 testset with duplicates (which used to be considered invalid), are not invalid anymore, as decided in the meeting on 23-08-2023.
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 testrunner 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).
30
- These two should converge in the near future.
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,9 @@
1
+ import { Change } from "./changes/Change.js";
2
+ export declare class DiffResult {
3
+ changes: Change[];
4
+ change(issue: Change): void;
5
+ reset(): void;
6
+ hasChanges(): boolean;
7
+ asStringArray(): string[];
8
+ }
9
+ //# sourceMappingURL=DiffResult.d.ts.map
@@ -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"}