@lionweb/validation 0.6.1-beta.0 → 0.6.1-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/dist/diff/LionWebJsonDiff.d.ts.map +1 -1
- package/dist/diff/LionWebJsonDiff.js +18 -23
- package/dist/diff/LionWebJsonDiff.js.map +1 -1
- package/dist/diff/changes/ContainmentChange.d.ts +2 -2
- package/dist/diff/changes/ContainmentChange.d.ts.map +1 -1
- package/dist/diff/changes/ContainmentChange.js.map +1 -1
- package/dist/diff/changes/ReferenceChange.d.ts +3 -3
- package/dist/diff/changes/ReferenceChange.d.ts.map +1 -1
- package/dist/diff/changes/ReferenceChange.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/issues/LanguageIssues.d.ts +37 -13
- package/dist/issues/LanguageIssues.d.ts.map +1 -1
- package/dist/issues/LanguageIssues.js +49 -13
- 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 +6 -6
- package/dist/issues/ReferenceIssues.js.map +1 -1
- package/dist/issues/SyntaxIssues.d.ts +9 -9
- package/dist/issues/SyntaxIssues.d.ts.map +1 -1
- package/dist/issues/SyntaxIssues.js +9 -9
- package/dist/issues/SyntaxIssues.js.map +1 -1
- package/dist/issues/ValidationIssue.d.ts +7 -1
- package/dist/issues/ValidationIssue.d.ts.map +1 -1
- package/dist/issues/ValidationIssue.js +9 -1
- package/dist/issues/ValidationIssue.js.map +1 -1
- package/dist/json/LionWebJson.d.ts +1 -14
- package/dist/json/LionWebJson.d.ts.map +1 -1
- package/dist/json/LionWebJson.js +4 -14
- package/dist/json/LionWebJson.js.map +1 -1
- package/dist/json/LionWebJsonChunkWrapper.d.ts +20 -8
- package/dist/json/LionWebJsonChunkWrapper.d.ts.map +1 -1
- package/dist/json/LionWebJsonChunkWrapper.js +50 -22
- package/dist/json/LionWebJsonChunkWrapper.js.map +1 -1
- package/dist/json/M3definitions.d.ts +176 -0
- package/dist/json/M3definitions.d.ts.map +1 -0
- package/dist/json/M3definitions.js +174 -0
- package/dist/json/M3definitions.js.map +1 -0
- package/dist/json/NodeUtils.d.ts +3 -9
- package/dist/json/NodeUtils.d.ts.map +1 -1
- package/dist/json/NodeUtils.js +18 -31
- package/dist/json/NodeUtils.js.map +1 -1
- package/dist/json/index.d.ts +1 -2
- package/dist/json/index.d.ts.map +1 -1
- package/dist/json/index.js +1 -2
- package/dist/json/index.js.map +1 -1
- package/dist/languages/CompositeLionWebLanguageWrapper.d.ts +24 -0
- package/dist/languages/CompositeLionWebLanguageWrapper.d.ts.map +1 -0
- package/dist/languages/CompositeLionWebLanguageWrapper.js +56 -0
- package/dist/languages/CompositeLionWebLanguageWrapper.js.map +1 -0
- package/dist/languages/LanguageRegistry.d.ts +19 -0
- package/dist/languages/LanguageRegistry.d.ts.map +1 -0
- package/dist/languages/LanguageRegistry.js +37 -0
- package/dist/languages/LanguageRegistry.js.map +1 -0
- package/dist/languages/LanguageUtils.d.ts +35 -0
- package/dist/languages/LanguageUtils.d.ts.map +1 -0
- package/dist/languages/LanguageUtils.js +52 -0
- package/dist/languages/LanguageUtils.js.map +1 -0
- package/dist/languages/LionCore-M3.json +2356 -0
- package/{src/json/std-builtins-copy.json → dist/languages/LionCore-builtins.json} +57 -52
- package/dist/languages/LionWebLanguageWrapper.d.ts +31 -0
- package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -0
- package/dist/languages/LionWebLanguageWrapper.js +69 -0
- package/dist/languages/LionWebLanguageWrapper.js.map +1 -0
- package/dist/languages/MetaPointerMap.d.ts +11 -0
- package/dist/languages/MetaPointerMap.d.ts.map +1 -0
- package/dist/languages/MetaPointerMap.js +39 -0
- package/dist/languages/MetaPointerMap.js.map +1 -0
- package/dist/languages/index.d.ts +3 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +3 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/runners/FileUtils.d.ts +4 -4
- package/dist/runners/FileUtils.d.ts.map +1 -1
- package/dist/runners/FileUtils.js +8 -32
- package/dist/runners/FileUtils.js.map +1 -1
- package/dist/runners/RunCheckFolder.js +3 -1
- package/dist/runners/RunCheckFolder.js.map +1 -1
- package/dist/runners/RunCheckFolderWithLanguage.js +7 -3
- package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -1
- package/dist/runners/RunCheckOneFile.js +3 -1
- package/dist/runners/RunCheckOneFile.js.map +1 -1
- package/dist/runners/RunCheckOneFileWithLanguage.js +12 -3
- package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -1
- package/dist/runners/Utils.d.ts.map +1 -1
- package/dist/runners/Utils.js +0 -1
- package/dist/runners/Utils.js.map +1 -1
- package/dist/util/graphs.d.ts +18 -0
- package/dist/util/graphs.d.ts.map +1 -0
- package/dist/util/graphs.js +27 -0
- package/dist/util/graphs.js.map +1 -0
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts +5 -4
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.js +96 -34
- package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebLanguageValidator.d.ts +15 -3
- package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageValidator.js +54 -21
- package/dist/validators/LionWebLanguageValidator.js.map +1 -1
- package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebReferenceValidator.js +0 -5
- package/dist/validators/LionWebReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebSyntaxValidator.d.ts +1 -1
- package/dist/validators/LionWebSyntaxValidator.js +1 -1
- package/dist/validators/LionWebValidator.d.ts +3 -3
- package/dist/validators/LionWebValidator.d.ts.map +1 -1
- package/dist/validators/LionWebValidator.js +5 -8
- package/dist/validators/LionWebValidator.js.map +1 -1
- package/package.json +5 -5
- package/src/diff/LionWebJsonDiff.ts +18 -23
- package/src/diff/changes/ContainmentChange.ts +1 -1
- package/src/diff/changes/ReferenceChange.ts +2 -2
- package/src/index.ts +2 -0
- package/src/issues/LanguageIssues.ts +49 -14
- package/src/issues/ReferenceIssues.ts +6 -6
- package/src/issues/SyntaxIssues.ts +9 -9
- package/src/issues/ValidationIssue.ts +12 -2
- package/src/json/LionCore_M3.json +2320 -0
- package/src/json/LionCore_builtins.json +231 -0
- package/src/json/LionWebJson.ts +5 -14
- package/src/json/LionWebJsonChunkWrapper.ts +59 -30
- package/src/json/M3definitions.ts +177 -0
- package/src/json/NodeUtils.ts +21 -39
- package/src/json/index.ts +1 -2
- package/src/languages/CompositeLionWebLanguageWrapper.ts +57 -0
- package/src/languages/LanguageRegistry.ts +44 -0
- package/src/languages/LanguageUtils.ts +61 -0
- package/src/languages/LionCore-M3.json +2356 -0
- package/src/languages/LionCore-builtins.json +372 -0
- package/src/languages/LionWebLanguageWrapper.ts +95 -0
- package/src/languages/MetaPointerMap.ts +40 -0
- package/src/languages/index.ts +2 -0
- package/src/runners/FileUtils.ts +9 -36
- package/src/runners/RunCheckFolder.ts +3 -1
- package/src/runners/RunCheckFolderWithLanguage.ts +7 -7
- package/src/runners/RunCheckOneFile.ts +3 -1
- package/src/runners/RunCheckOneFileWithLanguage.ts +12 -7
- package/src/runners/Utils.ts +0 -1
- package/src/tmp.json +574 -0
- package/src/tryout.js +21 -0
- package/src/util/graphs.ts +36 -0
- package/src/validators/LionWebLanguageReferenceValidator.ts +110 -48
- package/src/validators/LionWebLanguageValidator.ts +62 -21
- package/src/validators/LionWebReferenceValidator.ts +0 -5
- package/src/validators/LionWebSyntaxValidator.ts +2 -2
- package/src/validators/LionWebValidator.ts +5 -9
- package/structure.puml +25 -0
- package/dist/json/LanguageUtils.d.ts +0 -9
- package/dist/json/LanguageUtils.d.ts.map +0 -1
- package/dist/json/LanguageUtils.js +0 -30
- package/dist/json/LanguageUtils.js.map +0 -1
- package/dist/json/LionWebLanguageDefinition.d.ts +0 -48
- package/dist/json/LionWebLanguageDefinition.d.ts.map +0 -1
- package/dist/json/LionWebLanguageDefinition.js +0 -126
- package/dist/json/LionWebLanguageDefinition.js.map +0 -1
- package/src/json/LanguageUtils.ts +0 -52
- package/src/json/LionWebLanguageDefinition.ts +0 -144
|
@@ -1,35 +1,68 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GenericIssue } from "../issues/index.js";
|
|
2
|
+
import { MissingM3Language_Issue } from "../issues/LanguageIssues.js";
|
|
3
|
+
import { isEqualMetaPointer, MetaPointers } from "../json/index.js";
|
|
2
4
|
import { JsonContext } from "../json/JsonContext.js";
|
|
5
|
+
import { isLionWebM3Language } from "../json/LionWebJson.js";
|
|
3
6
|
import { LionWebJsonChunkWrapper } from "../json/LionWebJsonChunkWrapper.js";
|
|
4
|
-
import {
|
|
7
|
+
import { isConcept } from "../languages/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Validates whether a chunk is a valid language definition
|
|
10
|
+
*/
|
|
5
11
|
export class LionWebLanguageValidator {
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
// availableLanguages: LionWebLanguageDefinition[] = []
|
|
13
|
+
constructor(validationResult, registry) {
|
|
14
|
+
this.registry = registry;
|
|
15
|
+
this.validationResult = validationResult;
|
|
16
|
+
this.chunkWrapper = undefined;
|
|
8
17
|
}
|
|
9
18
|
/**
|
|
10
|
-
*
|
|
19
|
+
* Check whether the metamodel is a Language.
|
|
20
|
+
* Assumption is that _chunk_ is already validated as a correct :LionWebJsonChunk
|
|
11
21
|
* @param obj
|
|
12
22
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
this.validationResult.issue(new
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const usedLanguage = chunk.languages[0];
|
|
21
|
-
if (usedLanguage.key !== "LionCore-M3") {
|
|
22
|
-
this.validationResult.issue(new NotLionCoreLanguageKey_Issue(new JsonContext(null, ["languages", 0]), usedLanguage.key));
|
|
23
|
+
validateLanguage(chunk) {
|
|
24
|
+
this.chunkWrapper = new LionWebJsonChunkWrapper(chunk);
|
|
25
|
+
const usedM3Language = chunk.languages.find(lang => isLionWebM3Language(lang));
|
|
26
|
+
if (usedM3Language === undefined) {
|
|
27
|
+
this.validationResult.issue(new MissingM3Language_Issue(new JsonContext(null, ["languages"])));
|
|
23
28
|
}
|
|
24
|
-
|
|
25
|
-
this.validationResult.issue(new IncorrectLionCoreVersion_Issue(new JsonContext(null, ["languages", 0]), usedLanguage.version));
|
|
26
|
-
}
|
|
27
|
-
const chunkWrapper = new LionWebJsonChunkWrapper(chunk);
|
|
28
|
-
const languageNodes = chunkWrapper.findNodesOfConcept("Language");
|
|
29
|
+
const languageNodes = this.chunkWrapper.findNodesOfClassifier(MetaPointers.Language);
|
|
29
30
|
if (languageNodes.length !== 1) {
|
|
30
31
|
// TODO Better error handling.
|
|
31
|
-
console.error("
|
|
32
|
+
console.error("Error: xpected exactly one Language node, found " + languageNodes.length + " => " + JSON.stringify(languageNodes));
|
|
33
|
+
}
|
|
34
|
+
chunk.nodes.forEach((node, index) => {
|
|
35
|
+
if (!isConcept(node)) {
|
|
36
|
+
this.validationResult.issue(new GenericIssue(new JsonContext(null, ["nodes", index]), `node ${node.id} is not a concept`));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.validateConcept(node);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
validateConcept(node) {
|
|
44
|
+
node.properties.forEach(prop => {
|
|
45
|
+
const properties = this.chunkWrapper?.findNodesOfClassifier(MetaPointers.Property);
|
|
46
|
+
const matchedProperty = properties?.find(p => isEqualMetaPointer(p.classifier, prop.property));
|
|
47
|
+
// DUMMY
|
|
48
|
+
return matchedProperty !== undefined;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
validateNode(node) {
|
|
52
|
+
const classifier = this.registry.getNodeByMetaPointer(node.classifier);
|
|
53
|
+
if (classifier === undefined) {
|
|
54
|
+
this.validationResult.issue(new GenericIssue(new JsonContext(null, ["nodes"]), `Classifier ${node.classifier.key} not found for node ${node.id}`));
|
|
55
|
+
return;
|
|
32
56
|
}
|
|
57
|
+
this.validateProperties(node, classifier);
|
|
58
|
+
}
|
|
59
|
+
validateProperties(node, classifier) {
|
|
60
|
+
node.properties.forEach(actualProp => {
|
|
61
|
+
const propClassifier = this.registry.getNodeByMetaPointer(actualProp.property);
|
|
62
|
+
if (propClassifier === undefined) {
|
|
63
|
+
this.validationResult.issue(new GenericIssue(new JsonContext(null, ["nodes", "properties"]), `Property ${actualProp.property.key} not found for classifier ${classifier.id}`));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
33
66
|
}
|
|
34
67
|
}
|
|
35
68
|
//# sourceMappingURL=LionWebLanguageValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebReferenceValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebReferenceValidator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"LionWebReferenceValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebReferenceValidator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAEH,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;;GAGG;AACH,qBAAa,yBAAyB;IAClC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAqC;IAC7E,oBAAoB,EAAE,oBAAoB,CAAA;gBAE9B,gBAAgB,EAAE,gBAAgB;IAK9C,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI;IAW9D,QAAQ,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI;IAqD5C;;;;;OAKG;IACH,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,WAAW;IAWnH;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW;IActD;;;;;OAKG;IACH,0BAA0B,CAAC,aAAa,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,WAAW;IAiBpF;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW;IAsB/D,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAG,SAAS,EAAE,KAAK,EAAE,eAAe;IAevG,iCAAiC,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW;CAmChF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Duplicates_Issue, Reference_ChildMissingInParent_Issue, Reference_CirculairParent_Issue, Reference_DuplicateNodeId_Issue, Reference_LanguageUnknown_Issue, Reference_ParentMissingInChild_Issue, } from "../issues/ReferenceIssues.js";
|
|
2
2
|
import { JsonContext } from "../json/JsonContext.js";
|
|
3
3
|
import { ChunkUtils } from "../json/ChunkUtils.js";
|
|
4
|
-
import { LION_CORE_BUILTINS_KEY, } from "../json/LionWebJson.js";
|
|
5
4
|
import { SimpleFieldValidator } from "./SimpleFieldValidator.js";
|
|
6
5
|
/**
|
|
7
6
|
* Assuming that the syntax is correct, check whether all LionWeb references are correct,
|
|
@@ -83,10 +82,6 @@ export class LionWebReferenceValidator {
|
|
|
83
82
|
*/
|
|
84
83
|
validateLanguageReference(chunk, metaPointer, context) {
|
|
85
84
|
const lang = ChunkUtils.findLwUsedLanguageWithVersion(chunk.jsonChunk, metaPointer.language, metaPointer.version);
|
|
86
|
-
if (metaPointer.language === LION_CORE_BUILTINS_KEY) {
|
|
87
|
-
// Ok, builtin
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
85
|
if (lang === undefined || lang === null) {
|
|
91
86
|
this.validationResult.issue(new Reference_LanguageUnknown_Issue(context, metaPointer));
|
|
92
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebReferenceValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebReferenceValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,oCAAoC,EACpC,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,oCAAoC,GACvC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"LionWebReferenceValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebReferenceValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ export type PropertyDefinition = {
|
|
|
28
28
|
validateValue?: ValidatorFunction;
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
|
-
* LionWebCheck can
|
|
31
|
+
* LionWebCheck can check whether objects are structurally LionWeb JSON objects.
|
|
32
32
|
* The check can be on a single object, or recursively on an object and its children.
|
|
33
33
|
*/
|
|
34
34
|
export declare class LionWebSyntaxValidator {
|
|
@@ -6,7 +6,7 @@ import { ValidationResult } from "./ValidationResult.js";
|
|
|
6
6
|
const MAY_BE_NULL = true;
|
|
7
7
|
const NOT_NULL = false;
|
|
8
8
|
/**
|
|
9
|
-
* LionWebCheck can
|
|
9
|
+
* LionWebCheck can check whether objects are structurally LionWeb JSON objects.
|
|
10
10
|
* The check can be on a single object, or recursively on an object and its children.
|
|
11
11
|
*/
|
|
12
12
|
export class LionWebSyntaxValidator {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
2
2
|
import { LionWebReferenceValidator } from "./LionWebReferenceValidator.js";
|
|
3
3
|
import { LionWebSyntaxValidator } from "./LionWebSyntaxValidator.js";
|
|
4
4
|
import { ValidationResult } from "./ValidationResult.js";
|
|
@@ -7,15 +7,15 @@ import { ValidationResult } from "./ValidationResult.js";
|
|
|
7
7
|
* Will stop when one validator fails.
|
|
8
8
|
*/
|
|
9
9
|
export declare class LionWebValidator {
|
|
10
|
+
private registry;
|
|
10
11
|
object: unknown;
|
|
11
|
-
language: LionWebLanguageDefinition | null;
|
|
12
12
|
chunk: unknown;
|
|
13
13
|
validationResult: ValidationResult;
|
|
14
14
|
syntaxValidator: LionWebSyntaxValidator;
|
|
15
15
|
referenceValidator: LionWebReferenceValidator;
|
|
16
16
|
syntaxCorrect: boolean;
|
|
17
17
|
referencesCorrect: boolean;
|
|
18
|
-
constructor(json: unknown,
|
|
18
|
+
constructor(json: unknown, registry: LanguageRegistry);
|
|
19
19
|
validateAll(): void;
|
|
20
20
|
validateSyntax(): void;
|
|
21
21
|
validateReferences(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LionWebValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;;GAGG;AACH,qBAAa,gBAAgB;IAUE,OAAO,CAAC,QAAQ;IAT3C,MAAM,EAAE,OAAO,CAAA;IAEf,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,sBAAsB,CAAA;IACvC,kBAAkB,EAAE,yBAAyB,CAAA;IAC7C,aAAa,EAAE,OAAO,CAAQ;IAC9B,iBAAiB,EAAE,OAAO,CAAQ;gBAEtB,IAAI,EAAE,OAAO,EAAU,QAAQ,EAAE,gBAAgB;IAO7D,WAAW;IAMX,cAAc;IASd,kBAAkB,IAAI,IAAI;IAU1B,mBAAmB,IAAI,IAAI;CAiB9B"}
|
|
@@ -8,12 +8,11 @@ import { ValidationResult } from "./ValidationResult.js";
|
|
|
8
8
|
* Will stop when one validator fails.
|
|
9
9
|
*/
|
|
10
10
|
export class LionWebValidator {
|
|
11
|
-
constructor(json,
|
|
12
|
-
this.
|
|
11
|
+
constructor(json, registry) {
|
|
12
|
+
this.registry = registry;
|
|
13
13
|
this.syntaxCorrect = false;
|
|
14
14
|
this.referencesCorrect = false;
|
|
15
15
|
this.object = json;
|
|
16
|
-
this.language = lang;
|
|
17
16
|
this.validationResult = new ValidationResult();
|
|
18
17
|
this.syntaxValidator = new LionWebSyntaxValidator(this.validationResult);
|
|
19
18
|
this.referenceValidator = new LionWebReferenceValidator(this.validationResult);
|
|
@@ -49,11 +48,9 @@ export class LionWebValidator {
|
|
|
49
48
|
// console.log("validateForLanguage not executed because there are reference errors.")
|
|
50
49
|
return;
|
|
51
50
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
languageReferenceValidator.validate(this.chunk);
|
|
56
|
-
}
|
|
51
|
+
const languageReferenceValidator = new LionWebLanguageReferenceValidator(this.validationResult, this.registry);
|
|
52
|
+
// when syntax is correct we know the chunk is actually a chunk!
|
|
53
|
+
languageReferenceValidator.validate(this.chunk);
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
//# sourceMappingURL=LionWebValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAE5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAA;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;;GAGG;AACH,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"LionWebValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAE5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAA;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAUzB,YAAY,IAAa,EAAU,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;QAH7D,kBAAa,GAAY,KAAK,CAAA;QAC9B,sBAAiB,GAAY,KAAK,CAAA;QAG9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACxE,IAAI,CAAC,kBAAkB,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAClF,CAAC;IAED,WAAW;QACP,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAA;IAC9B,CAAC;IAED,cAAc;QACV,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAA;QACrC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAA;QACvD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAA0B,CAAC,CAAA;QAC7E,CAAC;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,kFAAkF;YAClF,OAAM;QACV,CAAC;QACD,gEAAgE;QAChE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAA;QACvE,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAA;IAC/D,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,mFAAmF;YACnF,OAAM;QACV,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,sFAAsF;YACtF,OAAM;QACV,CAAC;QACD,MAAM,0BAA0B,GAAG,IAAI,iCAAiC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9G,gEAAgE;QAChE,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAA;IAC9E,CAAC;CAKJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/validation",
|
|
3
|
-
"version": "0.6.1-beta.
|
|
3
|
+
"version": "0.6.1-beta.1",
|
|
4
4
|
"license": "Apache 2.0",
|
|
5
5
|
"description": "LionWeb Serialization validation",
|
|
6
6
|
"author": "jos.warmer@openmodeling.nl",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"lint": "eslint src",
|
|
20
20
|
"test-here": "cd ../test && find dist/validation -type d | sed '1!G;h;$!d' | xargs npx mocha",
|
|
21
21
|
"release": "npm publish",
|
|
22
|
-
"testValid": "node dist/runners/RunCheckFolder.js
|
|
23
|
-
"testInvalid": "node dist/runners/RunCheckFolder.js
|
|
24
|
-
"testInvalidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js
|
|
25
|
-
"testValidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js
|
|
22
|
+
"testValid": "node dist/runners/RunCheckFolder.js ../test/testset/valid",
|
|
23
|
+
"testInvalid": "node dist/runners/RunCheckFolder.js ../test/testset/invalid",
|
|
24
|
+
"testInvalidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/invalid/ ../test/testset/withLanguage/myLang.language.json",
|
|
25
|
+
"testValidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/valid/ ../test/testset/withLanguage/myLang.language.json",
|
|
26
26
|
"publish-local": "npm publish --registry http://localhost:4873",
|
|
27
27
|
"unpublish-local": "npm unpublish --force --registry http://localhost:4873",
|
|
28
28
|
"republish-local": "yarn unpublish-local && yarn publish-local"
|
|
@@ -50,9 +50,8 @@ export class LionWebJsonDiff {
|
|
|
50
50
|
}
|
|
51
51
|
// Find diff between previous and next properties
|
|
52
52
|
beforeNode.properties.forEach((beforeProperty: LionWebJsonProperty, index: number) => {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
if (afterProperty === null) {
|
|
53
|
+
const afterProperty = NodeUtils.findProperty(afterNode, beforeProperty.property)
|
|
54
|
+
if (afterProperty === undefined) {
|
|
56
55
|
this.change(
|
|
57
56
|
new PropertyValueChanged(
|
|
58
57
|
ctx.concat("properties", index),
|
|
@@ -68,9 +67,8 @@ export class LionWebJsonDiff {
|
|
|
68
67
|
}
|
|
69
68
|
})
|
|
70
69
|
afterNode.properties.forEach((afterProperty: LionWebJsonProperty, index: number) => {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
if (beforeProperty === null) {
|
|
70
|
+
const beforeProperty = NodeUtils.findProperty(beforeNode, afterProperty.property)
|
|
71
|
+
if (beforeProperty === undefined) {
|
|
74
72
|
this.change(
|
|
75
73
|
new PropertyValueChanged(
|
|
76
74
|
ctx.concat("properties", index),
|
|
@@ -86,8 +84,8 @@ export class LionWebJsonDiff {
|
|
|
86
84
|
})
|
|
87
85
|
beforeNode.containments.forEach((beforeContainment: LionWebJsonContainment, index: number) => {
|
|
88
86
|
const beforeKey = beforeContainment.containment.key
|
|
89
|
-
const afterContainment = NodeUtils.
|
|
90
|
-
if (afterContainment ===
|
|
87
|
+
const afterContainment = NodeUtils.findChild(afterNode, beforeKey)
|
|
88
|
+
if (afterContainment === undefined) {
|
|
91
89
|
// NB No containment is considered equivalent to a containment with empty _children_
|
|
92
90
|
if (beforeContainment.children.length !== 0) {
|
|
93
91
|
beforeContainment.children.forEach(childId => {
|
|
@@ -100,8 +98,8 @@ export class LionWebJsonDiff {
|
|
|
100
98
|
})
|
|
101
99
|
afterNode.containments.forEach((afterContainment: LionWebJsonContainment, index: number) => {
|
|
102
100
|
const afterKey = afterContainment.containment.key
|
|
103
|
-
const beforeContainment = NodeUtils.
|
|
104
|
-
if (beforeContainment ===
|
|
101
|
+
const beforeContainment = NodeUtils.findChild(beforeNode, afterKey)
|
|
102
|
+
if (beforeContainment === undefined) {
|
|
105
103
|
if (afterContainment.children.length !== 0) {
|
|
106
104
|
afterContainment.children.forEach(childId => {
|
|
107
105
|
this.change(new ChildAdded(ctx.concat("containments", index), afterNode, afterContainment.containment, afterContainment, childId, Missing.MissingBefore))
|
|
@@ -111,9 +109,8 @@ export class LionWebJsonDiff {
|
|
|
111
109
|
// No else, has already been done
|
|
112
110
|
})
|
|
113
111
|
beforeNode.references.forEach((beforeReference: LionWebJsonReference, index: number) => {
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
if (afterReference === null) {
|
|
112
|
+
const afterReference = NodeUtils.findReference(afterNode, beforeReference.reference)
|
|
113
|
+
if (afterReference === undefined) {
|
|
117
114
|
if (beforeReference.targets.length !== 0) {
|
|
118
115
|
beforeReference.targets.forEach(target => {
|
|
119
116
|
this.change(new TargetRemoved(ctx.concat("references", index), afterNode, beforeReference, afterReference, target, Missing.MissingAfter))
|
|
@@ -124,9 +121,8 @@ export class LionWebJsonDiff {
|
|
|
124
121
|
}
|
|
125
122
|
})
|
|
126
123
|
afterNode.references.forEach((afterReference: LionWebJsonReference, index: number) => {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
if (beforeReference === null) {
|
|
124
|
+
const beforeReference = NodeUtils.findReference(afterNode, afterReference.reference)
|
|
125
|
+
if (beforeReference === undefined) {
|
|
130
126
|
if (afterReference.targets.length !== 0) {
|
|
131
127
|
afterReference.targets.forEach(target => {
|
|
132
128
|
this.change(new TargetAdded(ctx.concat("references", index), afterNode, beforeReference, afterReference, target, Missing.MissingBefore))
|
|
@@ -161,7 +157,6 @@ export class LionWebJsonDiff {
|
|
|
161
157
|
|
|
162
158
|
diffLwChunk(beforeChunk: LionWebJsonChunk, afterChunk: LionWebJsonChunk): void {
|
|
163
159
|
const ctx = new JsonContext(null, ["$"])
|
|
164
|
-
console.log("Comparing chunks")
|
|
165
160
|
if (beforeChunk.serializationFormatVersion !== afterChunk.serializationFormatVersion) {
|
|
166
161
|
this.change(
|
|
167
162
|
new SerializationFormatChange(
|
|
@@ -246,13 +241,13 @@ export class LionWebJsonDiff {
|
|
|
246
241
|
|
|
247
242
|
diffLwReference(ctx: JsonContext, node: LionWebJsonNode, beforeRef: LionWebJsonReference, afterRef: LionWebJsonReference): void {
|
|
248
243
|
if (!isEqualMetaPointer(beforeRef.reference, afterRef.reference)) {
|
|
249
|
-
console.error("diffContainment: MetaPointers of
|
|
244
|
+
console.error("diffContainment: MetaPointers of references should be identical")
|
|
250
245
|
this.diff(ctx, `Reference has concept ${JSON.stringify(beforeRef.reference)} vs ${JSON.stringify(afterRef.reference)}`)
|
|
251
246
|
}
|
|
252
247
|
let diffFound = false;
|
|
253
248
|
beforeRef.targets.forEach((beforeTarget: LionWebJsonReferenceTarget, index: number) => {
|
|
254
|
-
const afterTarget = NodeUtils.
|
|
255
|
-
if (afterTarget ===
|
|
249
|
+
const afterTarget = NodeUtils.findReferenceTarget(afterRef.targets, beforeTarget)
|
|
250
|
+
if (afterTarget === undefined) {
|
|
256
251
|
this.change(new TargetRemoved(ctx.concat("targets", index), node, beforeRef, afterRef, beforeTarget))
|
|
257
252
|
diffFound = true
|
|
258
253
|
} else {
|
|
@@ -265,8 +260,8 @@ export class LionWebJsonDiff {
|
|
|
265
260
|
}
|
|
266
261
|
})
|
|
267
262
|
afterRef.targets.forEach((afterTarget: LionWebJsonReferenceTarget, index: number) => {
|
|
268
|
-
const beforeTarget = NodeUtils.
|
|
269
|
-
if (beforeTarget ===
|
|
263
|
+
const beforeTarget = NodeUtils.findReferenceTarget(beforeRef.targets, afterTarget)
|
|
264
|
+
if (beforeTarget === undefined) {
|
|
270
265
|
this.change(new TargetAdded(ctx.concat("targets", index), node, beforeRef, afterRef, afterTarget))
|
|
271
266
|
diffFound = true
|
|
272
267
|
} else {
|
|
@@ -301,7 +296,7 @@ export class LionWebJsonDiff {
|
|
|
301
296
|
afterProperty: LionWebJsonProperty,
|
|
302
297
|
) {
|
|
303
298
|
if (!isEqualMetaPointer(beforeProperty.property, afterProperty.property)) {
|
|
304
|
-
console.error("diffContainment: MetaPointers of
|
|
299
|
+
console.error("diffContainment: MetaPointers of properties should be identical")
|
|
305
300
|
this.diff(
|
|
306
301
|
ctx,
|
|
307
302
|
`Property Object has concept ${JSON.stringify(beforeProperty.property)} vs ${JSON.stringify(afterProperty.property)}`,
|
|
@@ -7,7 +7,7 @@ export abstract class ContainmentChange extends Change {
|
|
|
7
7
|
public context: JsonContext,
|
|
8
8
|
public parentNode: LionWebJsonNode,
|
|
9
9
|
public containment: LionWebJsonMetaPointer,
|
|
10
|
-
public afterContainment: LionWebJsonContainment |
|
|
10
|
+
public afterContainment: LionWebJsonContainment | undefined,
|
|
11
11
|
public childId: string,
|
|
12
12
|
public missing = Missing.NotMissing
|
|
13
13
|
) {
|
|
@@ -6,8 +6,8 @@ export abstract class ReferenceChange extends Change {
|
|
|
6
6
|
constructor(
|
|
7
7
|
public context: JsonContext,
|
|
8
8
|
public node: LionWebJsonNode,
|
|
9
|
-
public beforeReference: LionWebJsonReference |
|
|
10
|
-
public afterReference: LionWebJsonReference |
|
|
9
|
+
public beforeReference: LionWebJsonReference | undefined,
|
|
10
|
+
public afterReference: LionWebJsonReference | undefined,
|
|
11
11
|
public target: LionWebJsonReferenceTarget,
|
|
12
12
|
public missing = Missing.NotMissing
|
|
13
13
|
) {
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { LionWebJsonMetaPointer } from "../json/LionWebJson.js"
|
|
1
|
+
import { LionWebJsonMetaPointer, LionWebJsonNode } from "../json/LionWebJson.js"
|
|
2
2
|
import { JsonContext } from "../json/JsonContext.js"
|
|
3
3
|
import { ValidationIssue } from "./ValidationIssue.js"
|
|
4
4
|
|
|
5
5
|
export class Language_PropertyValue_Issue extends ValidationIssue {
|
|
6
|
-
readonly
|
|
6
|
+
readonly issueType = "PropertyValueIncorrect"
|
|
7
7
|
|
|
8
8
|
constructor(
|
|
9
9
|
context: JsonContext,
|
|
@@ -30,23 +30,49 @@ export abstract class Language_IncorrectMetaPointerType_Issue extends Validation
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
msg = (): string =>
|
|
33
|
-
`${this.metaType} with key "${this.metaPointer.key}" does not refer to a ${this.metaType}, but to a "${this.incorrectType}"`
|
|
33
|
+
`${this.metaType} with key "${this.metaPointer.key}" does not refer to a "${this.metaType}", but to a "${this.incorrectType}"`
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export class Language_IncorrectPropertyMetaPointer_Issue extends Language_IncorrectMetaPointerType_Issue {
|
|
37
|
-
readonly
|
|
37
|
+
readonly issueType = "IncorrectPropertyMetaPointer"
|
|
38
38
|
readonly metaType = "Property"
|
|
39
39
|
}
|
|
40
|
+
|
|
41
|
+
export abstract class Language_FeatureMetaPointerNotInClassifier_Issue extends ValidationIssue {
|
|
42
|
+
abstract readonly metaType: string
|
|
43
|
+
constructor(
|
|
44
|
+
context: JsonContext,
|
|
45
|
+
public featureMetaPointer: LionWebJsonMetaPointer,
|
|
46
|
+
public classifierPointer: LionWebJsonNode,
|
|
47
|
+
) {
|
|
48
|
+
super(context)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
msg = (): string =>
|
|
52
|
+
`${this.metaType} with key "${this.featureMetaPointer.key}" is not part of classifier "${this.classifierPointer.id}"`
|
|
53
|
+
}
|
|
54
|
+
export class Language_PropertyMetaPointerNotInClass_Issue extends Language_FeatureMetaPointerNotInClassifier_Issue {
|
|
55
|
+
readonly issueType = "PropertyMetaPointerNotInClass"
|
|
56
|
+
readonly metaType = "Property"
|
|
57
|
+
}
|
|
58
|
+
export class Language_ReferenceMetaPointerNotInClass_Issue extends Language_FeatureMetaPointerNotInClassifier_Issue {
|
|
59
|
+
readonly issueType = "ReferenceMetaPointerNotInClass"
|
|
60
|
+
readonly metaType = "Reference"
|
|
61
|
+
}
|
|
62
|
+
export class Language_ContainmentMetaPointerNotInClass_Issue extends Language_FeatureMetaPointerNotInClassifier_Issue {
|
|
63
|
+
readonly issueType = "ContainmentMetaPointerNotInClass"
|
|
64
|
+
readonly metaType = "Containment"
|
|
65
|
+
}
|
|
40
66
|
export class Language_IncorrectConceptMetaPointer_Issue extends Language_IncorrectMetaPointerType_Issue {
|
|
41
|
-
readonly
|
|
67
|
+
readonly issueType = "IncorrectConceptMetaPointer"
|
|
42
68
|
readonly metaType = "Concept"
|
|
43
69
|
}
|
|
44
70
|
export class Language_IncorrectReferenceMetaPointer_Issue extends Language_IncorrectMetaPointerType_Issue {
|
|
45
|
-
readonly
|
|
71
|
+
readonly issueType = "IncorrectReferenceMetaPointer"
|
|
46
72
|
readonly metaType = "Reference"
|
|
47
73
|
}
|
|
48
74
|
export class Language_IncorrectContainmentMetaPointer_Issue extends Language_IncorrectMetaPointerType_Issue {
|
|
49
|
-
readonly
|
|
75
|
+
readonly issueType = "IncorrectContainmentMetaPointer"
|
|
50
76
|
readonly metaType = "Containment"
|
|
51
77
|
}
|
|
52
78
|
|
|
@@ -65,25 +91,25 @@ export abstract class Language_UnknownMetaPointer_Issue extends ValidationIssue
|
|
|
65
91
|
}
|
|
66
92
|
|
|
67
93
|
export class Language_UnknownReference_Issue extends Language_UnknownMetaPointer_Issue {
|
|
68
|
-
readonly
|
|
94
|
+
readonly issueType = "UnknownReference"
|
|
69
95
|
readonly metaType = "Reference"
|
|
70
96
|
}
|
|
71
97
|
export class Language_UnknownContainment_Issue extends Language_UnknownMetaPointer_Issue {
|
|
72
|
-
readonly
|
|
98
|
+
readonly issueType = "UnknownContainment"
|
|
73
99
|
readonly metaType = "Containment"
|
|
74
100
|
}
|
|
75
101
|
export class Language_UnknownProperty_Issue extends Language_UnknownMetaPointer_Issue {
|
|
76
|
-
readonly
|
|
102
|
+
readonly issueType = "UnknownProperty"
|
|
77
103
|
readonly metaType = "Property"
|
|
78
104
|
}
|
|
79
105
|
export class Language_UnknownConcept_Issue extends Language_UnknownMetaPointer_Issue {
|
|
80
|
-
readonly
|
|
106
|
+
readonly issueType = "UnknownConcept"
|
|
81
107
|
readonly metaType = "Concept"
|
|
82
108
|
}
|
|
83
109
|
|
|
84
110
|
// Actual Language checks on M2
|
|
85
111
|
export class NumberOfLanguagesUsed_Issue extends ValidationIssue {
|
|
86
|
-
readonly
|
|
112
|
+
readonly issueType = "NumberOfLanguagesUsed"
|
|
87
113
|
constructor(
|
|
88
114
|
context: JsonContext,
|
|
89
115
|
public nrOfLanguages: number,
|
|
@@ -92,8 +118,17 @@ export class NumberOfLanguagesUsed_Issue extends ValidationIssue {
|
|
|
92
118
|
}
|
|
93
119
|
msg = () => `Is not a language: number of used languages should be 1, is ${this.nrOfLanguages}`
|
|
94
120
|
}
|
|
121
|
+
export class MissingM3Language_Issue extends ValidationIssue {
|
|
122
|
+
readonly issueType = "MissingM3Language"
|
|
123
|
+
constructor(
|
|
124
|
+
context: JsonContext
|
|
125
|
+
) {
|
|
126
|
+
super(context)
|
|
127
|
+
}
|
|
128
|
+
msg = () => `Missing used language LionCore-M3`
|
|
129
|
+
}
|
|
95
130
|
export class NotLionCoreLanguageKey_Issue extends ValidationIssue {
|
|
96
|
-
readonly
|
|
131
|
+
readonly issueType = "NotLionCoreLanguageKey"
|
|
97
132
|
constructor(
|
|
98
133
|
context: JsonContext,
|
|
99
134
|
public incorrectKey: string,
|
|
@@ -103,7 +138,7 @@ export class NotLionCoreLanguageKey_Issue extends ValidationIssue {
|
|
|
103
138
|
msg = () => `Is not a language: the used language key is not LionCore-M3, but ${this.incorrectKey}`
|
|
104
139
|
}
|
|
105
140
|
export class IncorrectLionCoreVersion_Issue extends ValidationIssue {
|
|
106
|
-
readonly
|
|
141
|
+
readonly issueType = "IncorrectLionCoreVersion"
|
|
107
142
|
constructor(
|
|
108
143
|
context: JsonContext,
|
|
109
144
|
public incorrectVersion: string,
|
|
@@ -3,7 +3,7 @@ import { JsonContext } from "../json/JsonContext.js"
|
|
|
3
3
|
import { ValidationIssue } from "./ValidationIssue.js"
|
|
4
4
|
|
|
5
5
|
export class Reference_DuplicateNodeId_Issue extends ValidationIssue {
|
|
6
|
-
readonly
|
|
6
|
+
readonly issueType = "DuplicateNodeId"
|
|
7
7
|
|
|
8
8
|
constructor(
|
|
9
9
|
context: JsonContext,
|
|
@@ -16,7 +16,7 @@ export class Reference_DuplicateNodeId_Issue extends ValidationIssue {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export class Reference_ChildMissingInParent_Issue extends ValidationIssue {
|
|
19
|
-
readonly
|
|
19
|
+
readonly issueType = "ChildMissingInParent"
|
|
20
20
|
|
|
21
21
|
constructor(
|
|
22
22
|
context: JsonContext,
|
|
@@ -30,7 +30,7 @@ export class Reference_ChildMissingInParent_Issue extends ValidationIssue {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export class Reference_ParentMissingInChild_Issue extends ValidationIssue {
|
|
33
|
-
readonly
|
|
33
|
+
readonly issueType = "ParentMissingInChild"
|
|
34
34
|
|
|
35
35
|
constructor(
|
|
36
36
|
context: JsonContext,
|
|
@@ -44,7 +44,7 @@ export class Reference_ParentMissingInChild_Issue extends ValidationIssue {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export class Reference_CirculairParent_Issue extends ValidationIssue {
|
|
47
|
-
readonly
|
|
47
|
+
readonly issueType = "CirculairParent"
|
|
48
48
|
|
|
49
49
|
constructor(
|
|
50
50
|
context: JsonContext,
|
|
@@ -58,7 +58,7 @@ export class Reference_CirculairParent_Issue extends ValidationIssue {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
export class Reference_LanguageUnknown_Issue extends ValidationIssue {
|
|
61
|
-
readonly
|
|
61
|
+
readonly issueType = "LanguageUnknown"
|
|
62
62
|
|
|
63
63
|
constructor(
|
|
64
64
|
context: JsonContext,
|
|
@@ -71,7 +71,7 @@ export class Reference_LanguageUnknown_Issue extends ValidationIssue {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
export class Duplicates_Issue extends ValidationIssue {
|
|
74
|
-
readonly
|
|
74
|
+
readonly issueType = "Duplicates"
|
|
75
75
|
|
|
76
76
|
constructor(
|
|
77
77
|
context: JsonContext,
|