@lionweb/validation 0.6.13-beta.2 → 0.6.13-beta.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/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/issues/LanguageIssues.d.ts +4 -4
- package/dist/issues/LanguageIssues.d.ts.map +1 -1
- package/dist/issues/LanguageIssues.js +1 -1
- package/dist/issues/LanguageIssues.js.map +1 -1
- package/dist/issues/ReferenceIssues.d.ts +6 -6
- package/dist/issues/ReferenceIssues.d.ts.map +1 -1
- package/dist/issues/ReferenceIssues.js +3 -3
- 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/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 +0 -1
- package/dist/issues/index.d.ts.map +1 -1
- package/dist/issues/index.js +0 -1
- package/dist/issues/index.js.map +1 -1
- package/dist/languages/CompositeLionWebLanguageWrapper.d.ts +1 -1
- package/dist/languages/CompositeLionWebLanguageWrapper.d.ts.map +1 -1
- package/dist/languages/LanguageRegistry.d.ts +1 -1
- package/dist/languages/LanguageRegistry.d.ts.map +1 -1
- package/dist/languages/LanguageUtils.d.ts +1 -1
- package/dist/languages/LanguageUtils.d.ts.map +1 -1
- package/dist/languages/LanguageUtils.js +5 -5
- package/dist/languages/LanguageUtils.js.map +1 -1
- package/dist/languages/LionWebLanguageWrapper.d.ts +3 -3
- package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -1
- package/dist/languages/LionWebLanguageWrapper.js +2 -2
- package/dist/languages/LionWebLanguageWrapper.js.map +1 -1
- package/dist/languages/MetaPointerMap.d.ts +2 -2
- package/dist/languages/MetaPointerMap.d.ts.map +1 -1
- package/dist/languages/MetaPointerMap.js +1 -1
- package/dist/languages/MetaPointerMap.js.map +1 -1
- package/dist/runners/FileUtils.d.ts.map +1 -1
- package/dist/runners/FileUtils.js +1 -1
- package/dist/runners/FileUtils.js.map +1 -1
- package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -1
- package/dist/runners/RunLioncoreDiff.js +1 -1
- package/dist/runners/RunLioncoreDiff.js.map +1 -1
- package/dist/validators/LionWebChunkDefinitions.d.ts.map +1 -1
- package/dist/validators/LionWebChunkDefinitions.js +1 -1
- package/dist/validators/LionWebChunkDefinitions.js.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts +2 -4
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.js +2 -6
- package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebLanguageValidator.d.ts +2 -3
- package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageValidator.js +2 -4
- package/dist/validators/LionWebLanguageValidator.js.map +1 -1
- package/dist/validators/LionWebReferenceValidator.d.ts +3 -4
- package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebReferenceValidator.js +2 -3
- package/dist/validators/LionWebReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -1
- package/dist/validators/LionWebSyntaxValidator.js +1 -1
- package/dist/validators/LionWebSyntaxValidator.js.map +1 -1
- package/dist/validators/LionWebValidator.d.ts +1 -1
- package/dist/validators/LionWebValidator.d.ts.map +1 -1
- package/dist/validators/LionWebValidator.js +2 -2
- package/dist/validators/LionWebValidator.js.map +1 -1
- package/dist/validators/ValidationFunctions.d.ts +5 -1
- package/dist/validators/ValidationFunctions.d.ts.map +1 -1
- package/dist/validators/ValidationFunctions.js +0 -4
- package/dist/validators/ValidationFunctions.js.map +1 -1
- package/dist/validators/generic/SyntaxValidator.d.ts +1 -1
- package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -1
- package/dist/validators/generic/SyntaxValidator.js +1 -1
- package/dist/validators/generic/SyntaxValidator.js.map +1 -1
- package/dist/validators/generic/ValidationTypes.d.ts +1 -1
- package/dist/validators/generic/ValidationTypes.d.ts.map +1 -1
- package/dist/validators/generic/ValidationTypes.js.map +1 -1
- package/package.json +6 -1
- package/src/index.ts +0 -3
- package/src/issues/LanguageIssues.ts +12 -14
- package/src/issues/ReferenceIssues.ts +9 -9
- package/src/issues/SyntaxIssues.ts +5 -5
- package/src/issues/ValidationIssue.ts +7 -4
- package/src/issues/index.ts +0 -1
- package/src/languages/CompositeLionWebLanguageWrapper.ts +1 -1
- package/src/languages/LanguageRegistry.ts +1 -1
- package/src/languages/LanguageUtils.ts +6 -6
- package/src/languages/LionWebLanguageWrapper.ts +5 -9
- package/src/languages/MetaPointerMap.ts +7 -6
- package/src/runners/FileUtils.ts +1 -1
- package/src/runners/RunCheckFolderWithLanguage.ts +1 -1
- package/src/runners/RunLioncoreDiff.ts +2 -2
- package/src/validators/LionWebChunkDefinitions.ts +1 -6
- package/src/validators/LionWebLanguageReferenceValidator.ts +17 -20
- package/src/validators/LionWebLanguageValidator.ts +2 -4
- package/src/validators/LionWebReferenceValidator.ts +6 -14
- package/src/validators/LionWebSyntaxValidator.ts +1 -1
- package/src/validators/LionWebValidator.ts +3 -3
- package/src/validators/ValidationFunctions.ts +1 -1
- package/src/validators/generic/SyntaxValidator.ts +1 -1
- package/src/validators/generic/ValidationTypes.ts +4 -5
- package/dist/diff/DiffResult.d.ts +0 -9
- package/dist/diff/DiffResult.d.ts.map +0 -1
- package/dist/diff/DiffResult.js +0 -18
- package/dist/diff/DiffResult.js.map +0 -1
- package/dist/diff/LionWebJsonDiff.d.ts +0 -25
- package/dist/diff/LionWebJsonDiff.d.ts.map +0 -1
- package/dist/diff/LionWebJsonDiff.js +0 -249
- package/dist/diff/LionWebJsonDiff.js.map +0 -1
- package/dist/diff/changes/Change.d.ts +0 -34
- package/dist/diff/changes/Change.d.ts.map +0 -1
- package/dist/diff/changes/Change.js +0 -38
- package/dist/diff/changes/Change.js.map +0 -1
- package/dist/diff/changes/ChunkChange.d.ts +0 -43
- package/dist/diff/changes/ChunkChange.d.ts.map +0 -1
- package/dist/diff/changes/ChunkChange.js +0 -57
- package/dist/diff/changes/ChunkChange.js.map +0 -1
- package/dist/diff/changes/ContainmentChange.d.ts +0 -25
- package/dist/diff/changes/ContainmentChange.d.ts.map +0 -1
- package/dist/diff/changes/ContainmentChange.js +0 -34
- package/dist/diff/changes/ContainmentChange.js.map +0 -1
- package/dist/diff/changes/NodeChange.d.ts +0 -41
- package/dist/diff/changes/NodeChange.d.ts.map +0 -1
- package/dist/diff/changes/NodeChange.js +0 -54
- package/dist/diff/changes/NodeChange.js.map +0 -1
- package/dist/diff/changes/PropertyChange.d.ts +0 -24
- package/dist/diff/changes/PropertyChange.d.ts.map +0 -1
- package/dist/diff/changes/PropertyChange.js +0 -29
- package/dist/diff/changes/PropertyChange.js.map +0 -1
- package/dist/diff/changes/ReferenceChange.d.ts +0 -25
- package/dist/diff/changes/ReferenceChange.d.ts.map +0 -1
- package/dist/diff/changes/ReferenceChange.js +0 -34
- package/dist/diff/changes/ReferenceChange.js.map +0 -1
- package/dist/diff/changes/index.d.ts +0 -7
- package/dist/diff/changes/index.d.ts.map +0 -1
- package/dist/diff/changes/index.js +0 -7
- package/dist/diff/changes/index.js.map +0 -1
- package/dist/diff/index.d.ts +0 -4
- package/dist/diff/index.d.ts.map +0 -1
- package/dist/diff/index.js +0 -4
- package/dist/diff/index.js.map +0 -1
- package/dist/json/ChunkUtils.d.ts +0 -26
- package/dist/json/ChunkUtils.d.ts.map +0 -1
- package/dist/json/ChunkUtils.js +0 -46
- package/dist/json/ChunkUtils.js.map +0 -1
- package/dist/json/JsonContext.d.ts +0 -11
- package/dist/json/JsonContext.d.ts.map +0 -1
- package/dist/json/JsonContext.js +0 -25
- package/dist/json/JsonContext.js.map +0 -1
- package/dist/json/LionWebJson.d.ts +0 -50
- package/dist/json/LionWebJson.d.ts.map +0 -1
- package/dist/json/LionWebJson.js +0 -27
- package/dist/json/LionWebJson.js.map +0 -1
- package/dist/json/LionWebJsonChunkWrapper.d.ts +0 -39
- package/dist/json/LionWebJsonChunkWrapper.d.ts.map +0 -1
- package/dist/json/LionWebJsonChunkWrapper.js +0 -119
- package/dist/json/LionWebJsonChunkWrapper.js.map +0 -1
- package/dist/json/M3definitions.d.ts +0 -176
- package/dist/json/M3definitions.d.ts.map +0 -1
- package/dist/json/M3definitions.js +0 -174
- package/dist/json/M3definitions.js.map +0 -1
- package/dist/json/NodeUtils.d.ts +0 -23
- package/dist/json/NodeUtils.d.ts.map +0 -1
- package/dist/json/NodeUtils.js +0 -57
- package/dist/json/NodeUtils.js.map +0 -1
- package/dist/json/index.d.ts +0 -7
- package/dist/json/index.d.ts.map +0 -1
- package/dist/json/index.js +0 -7
- package/dist/json/index.js.map +0 -1
- package/dist/util/graphs.d.ts +0 -18
- package/dist/util/graphs.d.ts.map +0 -1
- package/dist/util/graphs.js +0 -27
- package/dist/util/graphs.js.map +0 -1
- package/src/diff/DiffResult.ts +0 -21
- package/src/diff/LionWebJsonDiff.ts +0 -309
- package/src/diff/changes/Change.ts +0 -76
- package/src/diff/changes/ChunkChange.ts +0 -68
- package/src/diff/changes/ContainmentChange.ts +0 -32
- package/src/diff/changes/NodeChange.ts +0 -63
- package/src/diff/changes/PropertyChange.ts +0 -31
- package/src/diff/changes/ReferenceChange.ts +0 -34
- package/src/diff/changes/index.ts +0 -6
- package/src/diff/index.ts +0 -3
- package/src/json/ChunkUtils.ts +0 -49
- package/src/json/JsonContext.ts +0 -31
- package/src/json/LionWebJson.ts +0 -80
- package/src/json/LionWebJsonChunkWrapper.ts +0 -136
- package/src/json/M3definitions.ts +0 -177
- package/src/json/NodeUtils.ts +0 -75
- package/src/json/index.ts +0 -6
- package/src/util/graphs.ts +0 -36
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { LionWebJsonMetaPointer, LionWebJsonNode,
|
|
1
|
+
import { LionWebJsonMetaPointer, LionWebJsonNode, LionWebKey } from "@lionweb/json"
|
|
2
|
+
import { MetaPointers, NodeUtils } from "@lionweb/json-utils"
|
|
2
3
|
|
|
3
4
|
export class MetaPointerMap {
|
|
4
5
|
/**
|
|
5
6
|
* Map from languageKey => languageVersion => key => LionWebJsonNode
|
|
6
7
|
*/
|
|
7
8
|
map: Map<string, Map<string, Map<string, LionWebJsonNode>>> = new Map<string, Map<string, Map<string, LionWebJsonNode>>>()
|
|
8
|
-
|
|
9
|
-
add(languageKey:
|
|
9
|
+
|
|
10
|
+
add(languageKey: LionWebKey, languageVersion: string, node: LionWebJsonNode): void {
|
|
10
11
|
const keyProperty = NodeUtils.findProperty(node, MetaPointers.IKeyedKey)
|
|
11
12
|
if (keyProperty === undefined) {
|
|
12
13
|
console.log("MetaPointerMap.add: trying to add node without key property.")
|
|
@@ -17,9 +18,9 @@ export class MetaPointerMap {
|
|
|
17
18
|
console.log("MetaPointerMap.add: trying to add node without key property being empty or null.")
|
|
18
19
|
return
|
|
19
20
|
}
|
|
20
|
-
this.set({language: languageKey, version: languageVersion, key: key}, node)
|
|
21
|
+
this.set({ language: languageKey, version: languageVersion, key: key }, node)
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
|
|
23
24
|
set(mp: LionWebJsonMetaPointer, node: LionWebJsonNode): void {
|
|
24
25
|
let language = this.map.get(mp.language)
|
|
25
26
|
if (language === undefined) {
|
|
@@ -33,7 +34,7 @@ export class MetaPointerMap {
|
|
|
33
34
|
}
|
|
34
35
|
version.set(mp.key, node)
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
|
|
37
38
|
get(mp: LionWebJsonMetaPointer): LionWebJsonNode | undefined {
|
|
38
39
|
return this.map.get(mp.language)?.get(mp.version)?.get(mp.key)
|
|
39
40
|
}
|
package/src/runners/FileUtils.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "fs"
|
|
2
2
|
import { LanguageRegistry } from "../languages/index.js"
|
|
3
|
-
import { LionWebValidator } from "../validators/LionWebValidator.js"
|
|
4
3
|
import { ValidationResult } from "../validators/generic/ValidationResult.js"
|
|
4
|
+
import { LionWebValidator } from "../validators/LionWebValidator.js"
|
|
5
5
|
import { getFilesRecursive, printIssues } from "./Utils.js"
|
|
6
6
|
|
|
7
7
|
export function validateFile(file: string, registry: LanguageRegistry): void {
|
|
@@ -28,7 +28,7 @@ if (languageValidator.validationResult.hasErrors()) {
|
|
|
28
28
|
for (const modelFile of getFilesRecursive(folder, [])) {
|
|
29
29
|
const jsonString1 = fs.readFileSync(modelFile, "utf-8")
|
|
30
30
|
const jsonModel = JSON.parse(jsonString1)
|
|
31
|
-
const modelValidator = new LionWebValidator(jsonModel, registry
|
|
31
|
+
const modelValidator = new LionWebValidator(jsonModel, registry)
|
|
32
32
|
|
|
33
33
|
modelValidator.validateAll()
|
|
34
34
|
if (modelValidator.validationResult.hasErrors()) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { LionWebJsonChunk } from "@lionweb/json"
|
|
2
|
+
import { LionWebJsonDiff } from "@lionweb/json-diff"
|
|
1
3
|
import fs from "fs"
|
|
2
|
-
import { LionWebJsonDiff } from "../diff/index.js"
|
|
3
|
-
import { LionWebJsonChunk } from "../json/LionWebJson.js"
|
|
4
4
|
|
|
5
5
|
const file1 = process.argv[2]
|
|
6
6
|
const file2 = process.argv[3]
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
validateId,
|
|
3
|
-
validateKey,
|
|
4
|
-
validateSerializationFormatVersion,
|
|
5
|
-
validateVersion
|
|
6
|
-
} from "./ValidationFunctions.js"
|
|
7
1
|
import { MAY_BE_NULL, PropertyDef, PropertyDefinition } from "./generic/ValidationTypes.js"
|
|
2
|
+
import { validateId, validateKey, validateSerializationFormatVersion, validateVersion } from "./ValidationFunctions.js"
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* The structure below defines the structure of a LionWeb Chunk by defining all the properties.
|
|
@@ -1,37 +1,34 @@
|
|
|
1
|
+
import { isEqualMetaPointer, LionWebJsonContainment, LionWebJsonNode, LionWebJsonProperty, LionWebJsonReference } from "@lionweb/json"
|
|
2
|
+
import {
|
|
3
|
+
JsonContext,
|
|
4
|
+
LION_CORE_BUILTINS_INAMED_NAME,
|
|
5
|
+
LIONWEB_BOOLEAN_TYPE, LIONWEB_INTEGER_TYPE, LIONWEB_JSON_TYPE, LIONWEB_STRING_TYPE,
|
|
6
|
+
LionWebJsonChunkWrapper,
|
|
7
|
+
M3_Keys,
|
|
8
|
+
MetaPointers,
|
|
9
|
+
NodeUtils
|
|
10
|
+
} from "@lionweb/json-utils"
|
|
1
11
|
import {
|
|
2
12
|
Language_ContainmentMetaPointerNotInClass_Issue,
|
|
3
|
-
Language_IncorrectPropertyMetaPointer_Issue,
|
|
4
|
-
|
|
13
|
+
Language_IncorrectPropertyMetaPointer_Issue,
|
|
14
|
+
Language_PropertyMetaPointerNotInClass_Issue,
|
|
15
|
+
Language_PropertyValue_Issue,
|
|
16
|
+
Language_ReferenceMetaPointerNotInClass_Issue,
|
|
5
17
|
Language_UnknownConcept_Issue
|
|
6
18
|
} from "../issues/index.js"
|
|
7
19
|
import {
|
|
8
20
|
Language_IncorrectContainmentMetaPointer_Issue,
|
|
9
21
|
Language_IncorrectReferenceMetaPointer_Issue,
|
|
10
|
-
Language_UnknownContainment_Issue,
|
|
22
|
+
Language_UnknownContainment_Issue,
|
|
23
|
+
Language_UnknownProperty_Issue,
|
|
11
24
|
Language_UnknownReference_Issue
|
|
12
25
|
} from "../issues/LanguageIssues.js"
|
|
13
|
-
import { isEqualMetaPointer, LionWebJsonNode, MetaPointers, NodeUtils } from "../json/index.js"
|
|
14
|
-
import { JsonContext } from "../json/JsonContext.js"
|
|
15
|
-
import {
|
|
16
|
-
LionWebJsonContainment,
|
|
17
|
-
LionWebJsonProperty,
|
|
18
|
-
LionWebJsonReference,
|
|
19
|
-
} from "../json/LionWebJson.js"
|
|
20
|
-
import { LionWebJsonChunkWrapper } from "../json/LionWebJsonChunkWrapper.js"
|
|
21
26
|
// import {
|
|
22
27
|
// KnownLanguages, LanguageRegistry
|
|
23
28
|
// } from "../languages/LanguageRegistry.js"
|
|
24
|
-
import {
|
|
25
|
-
LION_CORE_BUILTINS_INAMED_NAME,
|
|
26
|
-
LIONWEB_BOOLEAN_TYPE,
|
|
27
|
-
LIONWEB_INTEGER_TYPE,
|
|
28
|
-
LIONWEB_JSON_TYPE,
|
|
29
|
-
LIONWEB_STRING_TYPE,
|
|
30
|
-
M3_Keys
|
|
31
|
-
} from "../json/M3definitions.js"
|
|
32
29
|
import { LanguageRegistry } from "../languages/index.js"
|
|
33
|
-
import { validateBoolean, validateInteger, validateJSON } from "./ValidationFunctions.js"
|
|
34
30
|
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
31
|
+
import { validateBoolean, validateInteger, validateJSON } from "./ValidationFunctions.js"
|
|
35
32
|
|
|
36
33
|
/**
|
|
37
34
|
* Check against the language definition
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
+
import { isEqualMetaPointer, LionWebJsonChunk, LionWebJsonNode } from "@lionweb/json"
|
|
2
|
+
import { isLionWebM3Language, JsonContext, LionWebJsonChunkWrapper, MetaPointers } from "@lionweb/json-utils"
|
|
1
3
|
import { GenericIssue } from "../issues/index.js"
|
|
2
4
|
import { MissingM3Language_Issue } from "../issues/LanguageIssues.js"
|
|
3
|
-
import { isEqualMetaPointer, LionWebJsonNode, MetaPointers } from "../json/index.js"
|
|
4
|
-
import { JsonContext } from "../json/JsonContext.js"
|
|
5
|
-
import { isLionWebM3Language, LionWebJsonChunk } from "../json/LionWebJson.js"
|
|
6
|
-
import { LionWebJsonChunkWrapper } from "../json/LionWebJsonChunkWrapper.js"
|
|
7
5
|
import { isConcept, LanguageRegistry } from "../languages/index.js"
|
|
8
6
|
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
9
7
|
|
|
@@ -1,21 +1,13 @@
|
|
|
1
|
+
import { LionWebId, LionWebJsonChunk, LionWebJsonContainment, LionWebJsonMetaPointer, LionWebJsonNode, LionWebJsonUsedLanguage } from "@lionweb/json"
|
|
2
|
+
import { ChunkUtils, JsonContext, LionWebJsonChunkWrapper } from "@lionweb/json-utils"
|
|
1
3
|
import {
|
|
2
4
|
Duplicates_Issue,
|
|
3
5
|
Reference_ChildMissingInParent_Issue,
|
|
4
6
|
Reference_CirculairParent_Issue,
|
|
5
7
|
Reference_DuplicateNodeId_Issue,
|
|
6
8
|
Reference_LanguageUnknown_Issue,
|
|
7
|
-
Reference_ParentMissingInChild_Issue
|
|
9
|
+
Reference_ParentMissingInChild_Issue
|
|
8
10
|
} from "../issues/ReferenceIssues.js"
|
|
9
|
-
import { JsonContext } from "../json/JsonContext.js"
|
|
10
|
-
import { ChunkUtils } from "../json/ChunkUtils.js"
|
|
11
|
-
import {
|
|
12
|
-
LionWebJsonContainment,
|
|
13
|
-
LionWebJsonChunk,
|
|
14
|
-
LionWebJsonMetaPointer,
|
|
15
|
-
LionWebJsonNode,
|
|
16
|
-
LwJsonUsedLanguage,
|
|
17
|
-
} from "../json/LionWebJson.js"
|
|
18
|
-
import { LionWebJsonChunkWrapper } from "../json/LionWebJsonChunkWrapper.js"
|
|
19
11
|
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
20
12
|
|
|
21
13
|
/**
|
|
@@ -136,7 +128,7 @@ export class LionWebReferenceValidator {
|
|
|
136
128
|
* @param usedLanguages
|
|
137
129
|
* @param context
|
|
138
130
|
*/
|
|
139
|
-
checkDuplicateUsedLanguage(usedLanguages:
|
|
131
|
+
checkDuplicateUsedLanguage(usedLanguages: LionWebJsonUsedLanguage[], context: JsonContext) {
|
|
140
132
|
if (usedLanguages === null || usedLanguages === undefined) {
|
|
141
133
|
return
|
|
142
134
|
}
|
|
@@ -197,7 +189,7 @@ export class LionWebReferenceValidator {
|
|
|
197
189
|
|
|
198
190
|
validateChildrenHaveCorrectParent(node: LionWebJsonNode, context: JsonContext) {
|
|
199
191
|
node.containments.forEach((child: LionWebJsonContainment) => {
|
|
200
|
-
child.children.forEach((childId:
|
|
192
|
+
child.children.forEach((childId: LionWebId, index: number) => {
|
|
201
193
|
const childNode = this.nodesIdMap.get(childId)
|
|
202
194
|
if (childNode !== undefined) {
|
|
203
195
|
if (childNode.parent !== node.id) {
|
|
@@ -211,7 +203,7 @@ export class LionWebReferenceValidator {
|
|
|
211
203
|
}
|
|
212
204
|
})
|
|
213
205
|
})
|
|
214
|
-
node.annotations.forEach((annotationId:
|
|
206
|
+
node.annotations.forEach((annotationId: LionWebId, annotationIndex: number) => {
|
|
215
207
|
const childNode = this.nodesIdMap.get(annotationId)
|
|
216
208
|
if (childNode !== undefined) {
|
|
217
209
|
if (childNode.parent === null || childNode.parent === undefined) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { expectedTypes } from "./LionWebChunkDefinitions.js"
|
|
2
1
|
import { SyntaxValidator } from "./generic/SyntaxValidator.js"
|
|
3
2
|
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
3
|
+
import { expectedTypes } from "./LionWebChunkDefinitions.js"
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* LionWebSyntaxValidator can check whether objects are structurally LionWeb objects.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { LionWebJsonChunk } from "
|
|
2
|
-
import { LionWebJsonChunkWrapper } from "
|
|
1
|
+
import { LionWebJsonChunk } from "@lionweb/json"
|
|
2
|
+
import { LionWebJsonChunkWrapper } from "@lionweb/json-utils"
|
|
3
3
|
import { LanguageRegistry } from "../languages/index.js"
|
|
4
|
+
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
4
5
|
import { LionWebLanguageReferenceValidator } from "./LionWebLanguageReferenceValidator.js"
|
|
5
6
|
import { LionWebReferenceValidator } from "./LionWebReferenceValidator.js"
|
|
6
7
|
import { LionWebSyntaxValidator } from "./LionWebSyntaxValidator.js"
|
|
7
|
-
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Combined validator that calls all available validators.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* A list of functions that are used to validate primitive fields for LionWeb conformance.
|
|
3
3
|
* Used in the LionWebSyntaxValidator.
|
|
4
4
|
*/
|
|
5
|
+
import { JsonContext } from "@lionweb/json-utils"
|
|
5
6
|
import { Language_PropertyValue_Issue } from "../issues/LanguageIssues.js"
|
|
6
7
|
import {
|
|
7
8
|
Syntax_IdFormat_Issue,
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
Syntax_SerializationFormatVersion_Issue,
|
|
11
12
|
Syntax_VersionFormat_Issue
|
|
12
13
|
} from "../issues/SyntaxIssues.js"
|
|
13
|
-
import { JsonContext } from "../json/JsonContext.js"
|
|
14
14
|
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
15
15
|
import { PropertyDefinition } from "./generic/ValidationTypes.js"
|
|
16
16
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JsonContext } from "@lionweb/json-utils"
|
|
1
2
|
import {
|
|
2
3
|
Syntax_ArrayContainsNull_Issue,
|
|
3
4
|
Syntax_PropertyMissingIssue,
|
|
@@ -5,7 +6,6 @@ import {
|
|
|
5
6
|
Syntax_PropertyTypeIssue,
|
|
6
7
|
Syntax_PropertyUnknownIssue
|
|
7
8
|
} from "../../issues/index.js"
|
|
8
|
-
import { JsonContext } from "../../json/JsonContext.js"
|
|
9
9
|
import { ValidationResult } from "./ValidationResult.js"
|
|
10
10
|
import { PropertyDefinition, UnknownObjectType } from "./ValidationTypes.js"
|
|
11
11
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { JsonContext } from "
|
|
1
|
+
import { JsonContext } from "@lionweb/json-utils"
|
|
2
2
|
import { ValidationResult } from "./ValidationResult.js"
|
|
3
3
|
|
|
4
4
|
export type UnknownObjectType = { [key: string]: unknown }
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Definition of a property, used by the SyntaxValidator to validate objects.
|
|
8
|
-
*
|
|
8
|
+
*
|
|
9
9
|
* **Note** that some of the properties are defined as optional.
|
|
10
10
|
* They should not be empty ever!! But being optional allows to leave them out in the `PropertyDef` function.
|
|
11
11
|
* The `PropertyDef` function sets default values for all optional fields.
|
|
@@ -27,7 +27,7 @@ export type PropertyDefinition = {
|
|
|
27
27
|
/**
|
|
28
28
|
* IS this a list property?
|
|
29
29
|
*/
|
|
30
|
-
isList?: boolean
|
|
30
|
+
isList?: boolean
|
|
31
31
|
/**
|
|
32
32
|
* Additional validation function
|
|
33
33
|
*/
|
|
@@ -44,7 +44,7 @@ export type ValidatorFunction = <T>(obj: T, result: ValidationResult, ctx: JsonC
|
|
|
44
44
|
* @param pdef
|
|
45
45
|
*/
|
|
46
46
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
47
|
-
function emptyValidation<T>(object: T, result: ValidationResult, ctx: JsonContext,
|
|
47
|
+
function emptyValidation<T>(object: T, result: ValidationResult, ctx: JsonContext, pdef?: PropertyDefinition): void {}
|
|
48
48
|
|
|
49
49
|
// Make boolean argument more readable.
|
|
50
50
|
export const MAY_BE_NULL = true
|
|
@@ -64,4 +64,3 @@ export function PropertyDef(propDef: PropertyDefinition): PropertyDefinition {
|
|
|
64
64
|
validate: validate
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/diff/DiffResult.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { JsonContext } from "../issues/index.js";
|
|
2
|
-
import { LionWebJsonChunk, LionWebJsonContainment, 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, node: LionWebJsonNode, beforeRef: LionWebJsonReference, afterRef: LionWebJsonReference): void;
|
|
22
|
-
private diffLwUsedLanguage;
|
|
23
|
-
private diffLwProperty;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=LionWebJsonDiff.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EAEf,oBAAoB,EAIvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,MAAM,EAA0B,MAAM,qBAAqB,CAAA;AAMpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C;;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;IAkH3F,WAAW,CAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IA4C9E,eAAe,CACX,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,eAAe,EACrB,iBAAiB,EAAE,sBAAsB,EACzC,gBAAgB,EAAE,sBAAsB,GACzC,IAAI;IAmCP,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IA4C/H,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;CAiBzB"}
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { JsonContext } from "../issues/index.js";
|
|
2
|
-
import { ChunkUtils, isEqualMetaPointer, isEqualReferenceTarget, NodeUtils } from "../json/index.js";
|
|
3
|
-
import { GenericChange, Missing } from "./changes/Change.js";
|
|
4
|
-
import { LanguageAdded, LanguageRemoved, NodeAdded, NodeRemoved, SerializationFormatChange } from "./changes/ChunkChange.js";
|
|
5
|
-
import { ChildAdded, ChildRemoved, ChildOrderChanged } from "./changes/ContainmentChange.js";
|
|
6
|
-
import { AnnotationAdded, AnnotationOrderChanged, AnnotationRemoved, TargetAdded, TargetOrderChanged, TargetRemoved } from "./changes/index.js";
|
|
7
|
-
import { NodeClassifierChanged, ParentChanged } from "./changes/NodeChange.js";
|
|
8
|
-
import { PropertyValueChanged } from "./changes/PropertyChange.js";
|
|
9
|
-
import { DiffResult } from "./DiffResult.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, afterNode.classifier));
|
|
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 afterProperty = NodeUtils.findProperty(afterNode, beforeProperty.property);
|
|
39
|
-
if (afterProperty === undefined) {
|
|
40
|
-
this.change(new PropertyValueChanged(ctx.concat("properties", index), beforeNode.id, beforeProperty.property, beforeProperty.value, null, Missing.MissingAfter));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.diffLwProperty(ctx.concat("properties", index), beforeNode, beforeProperty, afterProperty);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
afterNode.properties.forEach((afterProperty, index) => {
|
|
47
|
-
const beforeProperty = NodeUtils.findProperty(beforeNode, afterProperty.property);
|
|
48
|
-
if (beforeProperty === undefined) {
|
|
49
|
-
this.change(new PropertyValueChanged(ctx.concat("properties", index), beforeNode.id, afterProperty.property, null, afterProperty.value, Missing.MissingBefore));
|
|
50
|
-
}
|
|
51
|
-
// no else, if the property exists in both nodes, the diff has been claculated in the loop before this one
|
|
52
|
-
});
|
|
53
|
-
beforeNode.containments.forEach((beforeContainment, index) => {
|
|
54
|
-
const beforeKey = beforeContainment.containment.key;
|
|
55
|
-
const afterContainment = NodeUtils.findChild(afterNode, beforeKey);
|
|
56
|
-
if (afterContainment === undefined) {
|
|
57
|
-
// NB No containment is considered equivalent to a containment with empty _children_
|
|
58
|
-
if (beforeContainment.children.length !== 0) {
|
|
59
|
-
beforeContainment.children.forEach(childId => {
|
|
60
|
-
this.change(new ChildRemoved(ctx.concat("containments", index), beforeNode, beforeContainment.containment, afterContainment, childId, Missing.MissingAfter));
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
this.diffContainment(ctx.concat("containments", index), beforeNode, beforeContainment, afterContainment);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
afterNode.containments.forEach((afterContainment, index) => {
|
|
69
|
-
const afterKey = afterContainment.containment.key;
|
|
70
|
-
const beforeContainment = NodeUtils.findChild(beforeNode, afterKey);
|
|
71
|
-
if (beforeContainment === undefined) {
|
|
72
|
-
if (afterContainment.children.length !== 0) {
|
|
73
|
-
afterContainment.children.forEach(childId => {
|
|
74
|
-
this.change(new ChildAdded(ctx.concat("containments", index), afterNode, afterContainment.containment, afterContainment, childId, Missing.MissingBefore));
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// No else, has already been done
|
|
79
|
-
});
|
|
80
|
-
beforeNode.references.forEach((beforeReference, index) => {
|
|
81
|
-
const afterReference = NodeUtils.findReference(afterNode, beforeReference.reference);
|
|
82
|
-
if (afterReference === undefined) {
|
|
83
|
-
if (beforeReference.targets.length !== 0) {
|
|
84
|
-
beforeReference.targets.forEach(target => {
|
|
85
|
-
this.change(new TargetRemoved(ctx.concat("references", index), afterNode, beforeReference, afterReference, target, Missing.MissingAfter));
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
this.diffLwReference(ctx.concat("references", index), beforeNode, beforeReference, afterReference);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
afterNode.references.forEach((afterReference, index) => {
|
|
94
|
-
const beforeReference = NodeUtils.findReference(afterNode, afterReference.reference);
|
|
95
|
-
if (beforeReference === undefined) {
|
|
96
|
-
if (afterReference.targets.length !== 0) {
|
|
97
|
-
afterReference.targets.forEach(target => {
|
|
98
|
-
this.change(new TargetAdded(ctx.concat("references", index), afterNode, beforeReference, afterReference, target, Missing.MissingBefore));
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
if (beforeNode.annotations !== undefined && afterNode.annotations !== undefined) {
|
|
104
|
-
let annotationDiffFound = false;
|
|
105
|
-
beforeNode.annotations.forEach((beforeAnn, index) => {
|
|
106
|
-
if (!afterNode.annotations.includes(beforeAnn)) {
|
|
107
|
-
annotationDiffFound = true;
|
|
108
|
-
this.change(new AnnotationRemoved(ctx, beforeNode, afterNode, beforeAnn, index));
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
afterNode.annotations.forEach((afterAnn, index) => {
|
|
112
|
-
if (!beforeNode.annotations.includes(afterAnn)) {
|
|
113
|
-
annotationDiffFound = true;
|
|
114
|
-
this.change(new AnnotationAdded(ctx, beforeNode, afterNode, afterAnn, index));
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
if (!annotationDiffFound) {
|
|
118
|
-
for (let i = 0; i < afterNode.annotations.length; i++) {
|
|
119
|
-
if (afterNode.annotations[i] !== beforeNode.annotations[i]) {
|
|
120
|
-
this.change(new AnnotationOrderChanged(ctx.concat("annotations"), beforeNode, afterNode, "", i));
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
diffLwChunk(beforeChunk, afterChunk) {
|
|
128
|
-
const ctx = new JsonContext(null, ["$"]);
|
|
129
|
-
if (beforeChunk.serializationFormatVersion !== afterChunk.serializationFormatVersion) {
|
|
130
|
-
this.change(new SerializationFormatChange(ctx.concat("serializationFormatVersion"), beforeChunk.serializationFormatVersion, afterChunk.serializationFormatVersion));
|
|
131
|
-
}
|
|
132
|
-
beforeChunk.languages.forEach((beforeLanguage, index) => {
|
|
133
|
-
const afterLanguage = ChunkUtils.findLwUsedLanguage(afterChunk, beforeLanguage.key);
|
|
134
|
-
if (afterLanguage === null) {
|
|
135
|
-
this.change(new LanguageRemoved(ctx.concat("languages", index), beforeLanguage));
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
this.diffLwUsedLanguage(ctx.concat("languages", index), beforeLanguage, afterLanguage);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
afterChunk.languages.forEach((afterLanguage, index) => {
|
|
142
|
-
const beforeLanguage = ChunkUtils.findLwUsedLanguage(beforeChunk, afterLanguage.key);
|
|
143
|
-
if (beforeLanguage === null) {
|
|
144
|
-
this.change(new LanguageAdded(ctx.concat("languages", index), afterLanguage));
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
beforeChunk.nodes.forEach((beforeNode, index) => {
|
|
148
|
-
const beforeId = beforeNode.id;
|
|
149
|
-
const afterNode = ChunkUtils.findNode(afterChunk, beforeId);
|
|
150
|
-
const newCtx = ctx.concat("nodes", index);
|
|
151
|
-
if (afterNode === null || afterNode === undefined) {
|
|
152
|
-
this.change(new NodeRemoved(ctx, beforeNode));
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
this.diffLwNode(newCtx, beforeNode, afterNode);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
afterChunk.nodes.forEach((afterNode, index) => {
|
|
159
|
-
const afterId = afterNode.id;
|
|
160
|
-
const beforeNode = ChunkUtils.findNode(beforeChunk, afterId);
|
|
161
|
-
if (beforeNode === null) {
|
|
162
|
-
this.change(new NodeAdded(ctx.concat("nodes", index), afterNode));
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
diffContainment(ctx, node, beforeContainment, afterContainment) {
|
|
167
|
-
if (!isEqualMetaPointer(beforeContainment.containment, afterContainment.containment)) {
|
|
168
|
-
console.error("diffContainment: MetaPointers of containments should be identical");
|
|
169
|
-
this.diff(ctx, `Containment Object has concept ${JSON.stringify(beforeContainment.containment)} vs ${JSON.stringify(afterContainment.containment)}`);
|
|
170
|
-
}
|
|
171
|
-
// Check whether children exist in both objects (two for loops)
|
|
172
|
-
// TODO Also check for the order that can be changed!!!
|
|
173
|
-
let changeFound = false;
|
|
174
|
-
for (const childId1 of beforeContainment.children) {
|
|
175
|
-
if (!afterContainment.children.includes(childId1)) {
|
|
176
|
-
changeFound = true;
|
|
177
|
-
this.change(new ChildRemoved(ctx, node, beforeContainment.containment, afterContainment, childId1));
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
for (const childId2 of afterContainment.children) {
|
|
181
|
-
if (!beforeContainment.children.includes(childId2)) {
|
|
182
|
-
changeFound = true;
|
|
183
|
-
this.change(new ChildAdded(ctx, node, beforeContainment.containment, afterContainment, childId2));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
if (!changeFound) {
|
|
187
|
-
for (let i = 0; i < afterContainment.children.length; i++) {
|
|
188
|
-
if (afterContainment.children[i] !== beforeContainment.children[i]) {
|
|
189
|
-
this.change(new ChildOrderChanged(ctx.concat("children"), node, afterContainment.containment, afterContainment, ""));
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
diffLwReference(ctx, node, beforeRef, afterRef) {
|
|
196
|
-
if (!isEqualMetaPointer(beforeRef.reference, afterRef.reference)) {
|
|
197
|
-
console.error("diffContainment: MetaPointers of references should be identical");
|
|
198
|
-
this.diff(ctx, `Reference has concept ${JSON.stringify(beforeRef.reference)} vs ${JSON.stringify(afterRef.reference)}`);
|
|
199
|
-
}
|
|
200
|
-
let diffFound = false;
|
|
201
|
-
beforeRef.targets.forEach((beforeTarget, index) => {
|
|
202
|
-
const afterTarget = NodeUtils.findReferenceTarget(afterRef.targets, beforeTarget);
|
|
203
|
-
if (afterTarget === undefined) {
|
|
204
|
-
this.change(new TargetRemoved(ctx.concat("targets", index), node, beforeRef, afterRef, beforeTarget));
|
|
205
|
-
diffFound = true;
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
if (!isEqualReferenceTarget(beforeTarget, afterTarget)) {
|
|
209
|
-
this.diff(ctx.concat("targets", index), `ERROR: reference target ${JSON.stringify(beforeTarget)} vs ${JSON.stringify(afterTarget)}`);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
afterRef.targets.forEach((afterTarget, index) => {
|
|
214
|
-
const beforeTarget = NodeUtils.findReferenceTarget(beforeRef.targets, afterTarget);
|
|
215
|
-
if (beforeTarget === undefined) {
|
|
216
|
-
this.change(new TargetAdded(ctx.concat("targets", index), node, beforeRef, afterRef, afterTarget));
|
|
217
|
-
diffFound = true;
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
if (!isEqualReferenceTarget(beforeTarget, afterTarget)) {
|
|
221
|
-
this.diff(ctx.concat("targets", index), `ERROR: reference target ${JSON.stringify(beforeTarget)} vs ${JSON.stringify(afterTarget)}`);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
if (!diffFound) {
|
|
226
|
-
for (let i = 0; i < beforeRef.targets.length; i++) {
|
|
227
|
-
if (!isEqualReferenceTarget(beforeRef.targets[i], afterRef.targets[i])) {
|
|
228
|
-
this.change(new TargetOrderChanged(ctx.concat("targets"), node, beforeRef, afterRef, beforeRef.targets[i]));
|
|
229
|
-
break;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
diffLwUsedLanguage(ctx, obj1, obj2) {
|
|
235
|
-
if (obj1.key !== obj2.key || obj1.version !== obj2.version) {
|
|
236
|
-
this.diff(ctx, `Different used languages ${JSON.stringify(obj1)} vs ${JSON.stringify(obj2)}`);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
diffLwProperty(ctx, node, beforeProperty, afterProperty) {
|
|
240
|
-
if (!isEqualMetaPointer(beforeProperty.property, afterProperty.property)) {
|
|
241
|
-
console.error("diffContainment: MetaPointers of properties should be identical");
|
|
242
|
-
this.diff(ctx, `Property Object has concept ${JSON.stringify(beforeProperty.property)} vs ${JSON.stringify(afterProperty.property)}`);
|
|
243
|
-
}
|
|
244
|
-
if (beforeProperty.value !== afterProperty.value) {
|
|
245
|
-
this.change(new PropertyValueChanged(ctx, node.id, beforeProperty.property, beforeProperty.value, afterProperty.value));
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
//# sourceMappingURL=LionWebJsonDiff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebJsonDiff.js","sourceRoot":"","sources":["../../src/diff/LionWebJsonDiff.ts"],"names":[],"mappings":"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"}
|