@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,57 +1,33 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import { LionWebJsonChunkWrapper, LionWebLanguageDefinition } from "../json/index.js";
|
|
3
2
|
import { LionWebValidator } from "../validators/LionWebValidator.js";
|
|
4
3
|
import { ValidationResult } from "../validators/ValidationResult.js";
|
|
5
4
|
import { getFilesRecursive, printIssues } from "./Utils.js";
|
|
6
|
-
export function validateFile(file) {
|
|
7
|
-
const result = validateFileResult(file);
|
|
5
|
+
export function validateFile(file, registry) {
|
|
6
|
+
const result = validateFileResult(file, false, registry);
|
|
8
7
|
printIssues(result);
|
|
9
8
|
}
|
|
10
|
-
export function validateFileResult(file) {
|
|
9
|
+
export function validateFileResult(file, validateAgainstLanguage, registry) {
|
|
11
10
|
if (file !== null) {
|
|
12
11
|
const jsonString1 = fs.readFileSync(file, "utf-8");
|
|
13
12
|
const json1 = JSON.parse(jsonString1);
|
|
14
|
-
const validator = new LionWebValidator(json1,
|
|
13
|
+
const validator = new LionWebValidator(json1, registry);
|
|
15
14
|
validator.validateSyntax();
|
|
16
15
|
validator.validateReferences();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
return new ValidationResult();
|
|
21
|
-
}
|
|
22
|
-
export function validateFileResultWithLanguage(file, languageFile) {
|
|
23
|
-
let langDef = null;
|
|
24
|
-
if (languageFile !== undefined && languageFile !== null) {
|
|
25
|
-
const jsonString1 = fs.readFileSync(file, "utf-8");
|
|
26
|
-
const languageJson = JSON.parse(jsonString1);
|
|
27
|
-
const validator = new LionWebValidator(languageJson, null);
|
|
28
|
-
validator.validateSyntax();
|
|
29
|
-
validator.validateReferences();
|
|
30
|
-
validator.validateForLanguage();
|
|
31
|
-
if (validator.validationResult.hasErrors()) {
|
|
32
|
-
return validator.validationResult;
|
|
16
|
+
if (validateAgainstLanguage) {
|
|
17
|
+
validator.validateForLanguage();
|
|
33
18
|
}
|
|
34
|
-
langDef = new LionWebLanguageDefinition(new LionWebJsonChunkWrapper(languageJson));
|
|
35
|
-
}
|
|
36
|
-
if (file !== null) {
|
|
37
|
-
const fileString = fs.readFileSync(file, "utf-8");
|
|
38
|
-
const fileJson = JSON.parse(fileString);
|
|
39
|
-
const validator = new LionWebValidator(fileJson, langDef);
|
|
40
|
-
validator.validateSyntax();
|
|
41
|
-
validator.validateReferences();
|
|
42
|
-
validator.validateForLanguage();
|
|
43
19
|
return validator.validationResult;
|
|
44
20
|
}
|
|
45
21
|
return new ValidationResult();
|
|
46
22
|
}
|
|
47
|
-
export function validateFolder(folder) {
|
|
23
|
+
export function validateFolder(folder, registry) {
|
|
48
24
|
let totalErrors = 0;
|
|
49
25
|
let totalSucceed = 0;
|
|
50
26
|
let totalFailed = 0;
|
|
51
27
|
for (const f of getFilesRecursive(folder, [])) {
|
|
52
28
|
const jsonString1 = fs.readFileSync(f, "utf-8");
|
|
53
29
|
const json1 = JSON.parse(jsonString1);
|
|
54
|
-
const validator = new LionWebValidator(json1,
|
|
30
|
+
const validator = new LionWebValidator(json1, registry);
|
|
55
31
|
try {
|
|
56
32
|
validator.validateAll();
|
|
57
33
|
if (!validator.validationResult.hasErrors()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUtils.js","sourceRoot":"","sources":["../../src/runners/FileUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"FileUtils.js","sourceRoot":"","sources":["../../src/runners/FileUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAA0B;IACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IACxD,WAAW,CAAC,MAAM,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,uBAAgC,EAAE,QAA0B;IACzG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACrC,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAEvD,SAAS,CAAC,cAAc,EAAE,CAAA;QAC1B,SAAS,CAAC,kBAAkB,EAAE,CAAA;QAC9B,IAAI,uBAAuB,EAAE,CAAC;YAC1B,SAAS,CAAC,mBAAmB,EAAE,CAAA;QACnC,CAAC;QACD,OAAO,SAAS,CAAC,gBAAgB,CAAA;IACrC,CAAC;IACD,OAAO,IAAI,gBAAgB,EAAE,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,QAA0B;IACrE,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,WAAW,GAAG,CAAC,CAAA;IAEnB,KAAK,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACrC,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAEvD,IAAI,CAAC;YACD,SAAS,CAAC,WAAW,EAAE,CAAA;YAEvB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC1C,YAAY,IAAI,CAAC,CAAA;gBACjB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;gBAC5B,WAAW,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;gBAC1C,WAAW,IAAI,CAAC,CAAA;gBAChB,WAAW,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAA;YAC3D,CAAC;QACL,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAA;YACtC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAI,CAAW,EAAE,KAAK,CAAC,CAAA;QACnD,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,YAAY,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,WAAW,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,WAAW,CAAC,CAAA;AACzD,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
1
2
|
import { validateFolder } from "./FileUtils.js";
|
|
2
3
|
const folder = process.argv[2];
|
|
3
|
-
|
|
4
|
+
const registry = new LanguageRegistry();
|
|
5
|
+
validateFolder(folder, registry);
|
|
4
6
|
//# sourceMappingURL=RunCheckFolder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunCheckFolder.js","sourceRoot":"","sources":["../../src/runners/RunCheckFolder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE9B,cAAc,CAAC,MAAM,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"RunCheckFolder.js","sourceRoot":"","sources":["../../src/runners/RunCheckFolder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE9B,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAA;AACvC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import {
|
|
2
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
3
|
+
import { LionWebLanguageWrapper } from "../languages/LionWebLanguageWrapper.js";
|
|
3
4
|
import { LionWebValidator } from "../validators/LionWebValidator.js";
|
|
4
5
|
import { getFilesRecursive, printIssues } from "./Utils.js";
|
|
5
6
|
const folder = process.argv[2];
|
|
6
7
|
const language = process.argv[3];
|
|
7
8
|
let totalSucceed = 0;
|
|
8
9
|
let totalFailed = 0;
|
|
10
|
+
const registry = new LanguageRegistry();
|
|
9
11
|
const languageString = fs.readFileSync(language, "utf-8");
|
|
10
12
|
const languageJson = JSON.parse(languageString);
|
|
11
|
-
const languageValidator = new LionWebValidator(languageJson,
|
|
13
|
+
const languageValidator = new LionWebValidator(languageJson, registry);
|
|
14
|
+
registry.addLanguage(new LionWebLanguageWrapper(languageJson));
|
|
15
|
+
console.log("Language is " + language);
|
|
12
16
|
languageValidator.validateSyntax();
|
|
13
17
|
languageValidator.validateReferences();
|
|
14
18
|
if (languageValidator.validationResult.hasErrors()) {
|
|
@@ -19,7 +23,7 @@ if (languageValidator.validationResult.hasErrors()) {
|
|
|
19
23
|
for (const modelFile of getFilesRecursive(folder, [])) {
|
|
20
24
|
const jsonString1 = fs.readFileSync(modelFile, "utf-8");
|
|
21
25
|
const jsonModel = JSON.parse(jsonString1);
|
|
22
|
-
const modelValidator = new LionWebValidator(jsonModel,
|
|
26
|
+
const modelValidator = new LionWebValidator(jsonModel, registry);
|
|
23
27
|
modelValidator.validateAll();
|
|
24
28
|
if (modelValidator.validationResult.hasErrors()) {
|
|
25
29
|
totalFailed++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunCheckFolderWithLanguage.js","sourceRoot":"","sources":["../../src/runners/RunCheckFolderWithLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"RunCheckFolderWithLanguage.js","sourceRoot":"","sources":["../../src/runners/RunCheckFolderWithLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEhC,IAAI,YAAY,GAAG,CAAC,CAAA;AACpB,IAAI,WAAW,GAAG,CAAC,CAAA;AAEnB,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAA;AACvC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACzD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAC/C,MAAM,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AACtE,QAAQ,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAA;AAE9D,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAA;AACtC,iBAAiB,CAAC,cAAc,EAAE,CAAA;AAClC,iBAAiB,CAAC,kBAAkB,EAAE,CAAA;AACtC,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;IAC5D,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,KAAK,MAAM,SAAS,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACzC,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAE,CAAA;IAEjE,cAAc,CAAC,WAAW,EAAE,CAAA;IAC5B,IAAI,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;QAC9C,WAAW,EAAE,CAAA;QACb,sCAAsC;QACtC,WAAW,CAAC,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,CAAA;QACtC,YAAY,EAAE,CAAA;IAClB,CAAC;AACL,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,YAAY,CAAC,CAAA;AACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,WAAW,CAAC,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
1
2
|
import { validateFile } from "./FileUtils.js";
|
|
2
3
|
const file1 = process.argv[2];
|
|
3
|
-
|
|
4
|
+
const registry = new LanguageRegistry();
|
|
5
|
+
validateFile(file1, registry);
|
|
4
6
|
//# sourceMappingURL=RunCheckOneFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunCheckOneFile.js","sourceRoot":"","sources":["../../src/runners/RunCheckOneFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE7B,YAAY,CAAC,KAAK,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"RunCheckOneFile.js","sourceRoot":"","sources":["../../src/runners/RunCheckOneFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE7B,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAA;AACvC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import {
|
|
2
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
3
|
+
import { LionWebLanguageWrapper } from "../languages/LionWebLanguageWrapper.js";
|
|
3
4
|
import { LionWebValidator } from "../validators/LionWebValidator.js";
|
|
4
5
|
import { printIssues } from "./Utils.js";
|
|
5
6
|
const modelFile = process.argv[2];
|
|
@@ -9,12 +10,20 @@ if (modelFile !== null) {
|
|
|
9
10
|
const jsonModel = JSON.parse(jsonString1);
|
|
10
11
|
const languageString = fs.readFileSync(language, "utf-8");
|
|
11
12
|
const languageJson = JSON.parse(languageString);
|
|
12
|
-
const
|
|
13
|
+
const m3String = fs.readFileSync("src/json/LionCore_M3.json", "utf-8");
|
|
14
|
+
const m3Json = JSON.parse(m3String);
|
|
15
|
+
const builtinString = fs.readFileSync("src/json/LionCore_builtins.json", "utf-8");
|
|
16
|
+
const builtinJson = JSON.parse(builtinString);
|
|
17
|
+
const registry = new LanguageRegistry();
|
|
18
|
+
registry.addLanguage(new LionWebLanguageWrapper(m3Json));
|
|
19
|
+
registry.addLanguage(new LionWebLanguageWrapper(builtinJson));
|
|
20
|
+
registry.addLanguage(new LionWebLanguageWrapper(languageJson));
|
|
21
|
+
const languageValidator = new LionWebValidator(languageJson, registry);
|
|
13
22
|
languageValidator.validateSyntax();
|
|
14
23
|
languageValidator.validateReferences();
|
|
15
24
|
console.log("===== Language errors ======");
|
|
16
25
|
printIssues(languageValidator.validationResult);
|
|
17
|
-
const modelValidator = new LionWebValidator(jsonModel,
|
|
26
|
+
const modelValidator = new LionWebValidator(jsonModel, registry);
|
|
18
27
|
modelValidator.validateAll();
|
|
19
28
|
console.log("===== Model errors ======");
|
|
20
29
|
printIssues(modelValidator.validationResult);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunCheckOneFileWithLanguage.js","sourceRoot":"","sources":["../../src/runners/RunCheckOneFileWithLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"RunCheckOneFileWithLanguage.js","sourceRoot":"","sources":["../../src/runners/RunCheckOneFileWithLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEhC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;IACrB,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACzC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAA;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAA;IAE9D,MAAM,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAEtE,iBAAiB,CAAC,cAAc,EAAE,CAAA;IAClC,iBAAiB,CAAC,kBAAkB,EAAE,CAAA;IACtC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAC3C,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAE/C,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAChE,cAAc,CAAC,WAAW,EAAE,CAAA;IAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACxC,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../src/runners/Utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAEpE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../src/runners/Utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAEpE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAYxE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAUrE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAavE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAI/E"}
|
package/dist/runners/Utils.js
CHANGED
|
@@ -6,7 +6,6 @@ export function getFilesRecursive(dirPath, arrayOfFiles) {
|
|
|
6
6
|
files.forEach(function (file) {
|
|
7
7
|
if (fs.statSync(dirPath + "/" + file).isDirectory()) {
|
|
8
8
|
arrayOfFiles = getFilesRecursive(dirPath + "/" + file, arrayOfFiles);
|
|
9
|
-
// arrayOfFiles.push(path.join(dirPath, "/", file));
|
|
10
9
|
}
|
|
11
10
|
else {
|
|
12
11
|
arrayOfFiles.push(path.join(dirPath, "/", file));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../src/runners/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,YAAsB;IACrE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACrC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAA;IAEjC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY;QAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAClD,YAAY,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,YAAY,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../src/runners/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,YAAsB;IACrE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACrC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAA;IAEjC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY;QAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAClD,YAAY,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,YAAY,CAAC,CAAA;QACxE,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QACpD,CAAC;IACL,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,YAAsB;IAClE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACrC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAA;IAEjC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAY;QAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,WAAqB;IACpE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,WAAW,GAAG,WAAW,IAAI,EAAE,CAAA;IAE/B,KAAK,CAAC,OAAO,CAAC,UAAU,IAAe;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,WAAW,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;YACvE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACxD,CAAC;aAAM,CAAC;YACJ,eAAe;QACnB,CAAC;IACL,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAwB,EAAE,IAAa;IAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;AAC/G,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAyB,EAAE,IAAa;IACnE,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAClH,OAAO,MAAM,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type def. of a generic "flatMap" function.
|
|
3
|
+
*/
|
|
4
|
+
export type ResultMapper<T, R> = (t: T) => R[];
|
|
5
|
+
/**
|
|
6
|
+
* Returns a function that performs a "flatMap" on a graph that's specified as a start vertex. and a function that computes (outgoing) edges.
|
|
7
|
+
* The "flatMap" is performed depth-first, and doesn't loop on cycles.
|
|
8
|
+
*
|
|
9
|
+
* @param mapper The function that calculates the result values
|
|
10
|
+
* @param nextVertices The function that calculates the next edges to visit.
|
|
11
|
+
* @returns A function that takes a starting vertex and resursively calculates the result values for each vertex visited.
|
|
12
|
+
*/
|
|
13
|
+
export declare const visitAndMap: <T, R>(mapper: ResultMapper<T, R>, nextVertices: (t: T) => T[]) => ResultMapper<T, R>;
|
|
14
|
+
/**
|
|
15
|
+
* A mapper function that returns the node itself as result
|
|
16
|
+
*/
|
|
17
|
+
export declare const selfMapper: <T>(t: T) => T[];
|
|
18
|
+
//# sourceMappingURL=graphs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphs.d.ts","sourceRoot":"","sources":["../../src/util/graphs.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,uFAenB,CAAA;AAEL;;GAEG;AACH,eAAO,MAAM,UAAU,kBAAmB,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a function that performs a "flatMap" on a graph that's specified as a start vertex. and a function that computes (outgoing) edges.
|
|
3
|
+
* The "flatMap" is performed depth-first, and doesn't loop on cycles.
|
|
4
|
+
*
|
|
5
|
+
* @param mapper The function that calculates the result values
|
|
6
|
+
* @param nextVertices The function that calculates the next edges to visit.
|
|
7
|
+
* @returns A function that takes a starting vertex and resursively calculates the result values for each vertex visited.
|
|
8
|
+
*/
|
|
9
|
+
export const visitAndMap = (mapper, nextVertices) => (startVertex) => {
|
|
10
|
+
const visited = [];
|
|
11
|
+
const rs = [];
|
|
12
|
+
const recurse = (t) => {
|
|
13
|
+
if (visited.indexOf(t) > -1) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
visited.push(t);
|
|
17
|
+
rs.push(...mapper(t));
|
|
18
|
+
nextVertices(t).forEach(recurse);
|
|
19
|
+
};
|
|
20
|
+
recurse(startVertex);
|
|
21
|
+
return rs;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A mapper function that returns the node itself as result
|
|
25
|
+
*/
|
|
26
|
+
export const selfMapper = (t) => [t];
|
|
27
|
+
//# sourceMappingURL=graphs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphs.js","sourceRoot":"","sources":["../../src/util/graphs.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GACpB,CAAO,MAA0B,EAAE,YAA2B,EAAsB,EAAE,CACtF,CAAC,WAAc,EAAO,EAAE;IACpB,MAAM,OAAO,GAAQ,EAAE,CAAA;IACvB,MAAM,EAAE,GAAQ,EAAE,CAAA;IAClB,MAAM,OAAO,GAAG,CAAC,CAAI,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAM;QACV,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrB,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,CAAA;IACD,OAAO,CAAC,WAAW,CAAC,CAAA;IACpB,OAAO,EAAE,CAAA;AACb,CAAC,CAAA;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
import { LionWebJsonNode } from "../json/index.js";
|
|
1
2
|
import { JsonContext } from "../json/JsonContext.js";
|
|
2
3
|
import { LionWebJsonProperty } from "../json/LionWebJson.js";
|
|
3
4
|
import { LionWebJsonChunkWrapper } from "../json/LionWebJsonChunkWrapper.js";
|
|
4
|
-
import {
|
|
5
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
5
6
|
import { SimpleFieldValidator } from "./SimpleFieldValidator.js";
|
|
6
7
|
import { ValidationResult } from "./ValidationResult.js";
|
|
7
8
|
/**
|
|
8
9
|
* Check against the language definition
|
|
9
10
|
*/
|
|
10
11
|
export declare class LionWebLanguageReferenceValidator {
|
|
12
|
+
private registry;
|
|
11
13
|
validationResult: ValidationResult;
|
|
12
|
-
language: LionWebLanguageDefinition;
|
|
13
14
|
simpleFieldValidator: SimpleFieldValidator;
|
|
14
|
-
constructor(validationResult: ValidationResult,
|
|
15
|
+
constructor(validationResult: ValidationResult, registry: LanguageRegistry);
|
|
15
16
|
validate(obj: LionWebJsonChunkWrapper): void;
|
|
16
17
|
private validateContainment;
|
|
17
18
|
private validateReference;
|
|
@@ -19,6 +20,6 @@ export declare class LionWebLanguageReferenceValidator {
|
|
|
19
20
|
* Checks wwhether the value of `prop1` is correct in relation with its property definition in the referred language.
|
|
20
21
|
* @param prop
|
|
21
22
|
*/
|
|
22
|
-
validateProperty(prop: LionWebJsonProperty, context: JsonContext): void;
|
|
23
|
+
validateProperty(node: LionWebJsonNode, nodeConcept: LionWebJsonNode | undefined, prop: LionWebJsonProperty, context: JsonContext): void;
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=LionWebLanguageReferenceValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageReferenceValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LionWebLanguageReferenceValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,eAAe,EAA2B,MAAM,kBAAkB,CAAA;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAEH,mBAAmB,EAEtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAY5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;GAEG;AACH,qBAAa,iCAAiC;IAIM,OAAO,CAAC,QAAQ;IAHhE,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,oBAAoB,EAAE,oBAAoB,CAAA;gBAE9B,gBAAgB,EAAE,gBAAgB,EAAU,QAAQ,EAAE,gBAAgB;IAUlF,QAAQ,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI;IAoB5C,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,iBAAiB;IAwBzB;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,GAAG,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;CAqF3I"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Language_ContainmentMetaPointerNotInClass_Issue, Language_IncorrectPropertyMetaPointer_Issue, Language_PropertyMetaPointerNotInClass_Issue, Language_PropertyValue_Issue, Language_ReferenceMetaPointerNotInClass_Issue, Language_UnknownConcept_Issue } from "../issues/index.js";
|
|
2
|
+
import { Language_IncorrectContainmentMetaPointer_Issue, Language_IncorrectReferenceMetaPointer_Issue, Language_UnknownContainment_Issue, Language_UnknownProperty_Issue, Language_UnknownReference_Issue } from "../issues/LanguageIssues.js";
|
|
3
|
+
import { isEqualMetaPointer, MetaPointers, NodeUtils } from "../json/index.js";
|
|
2
4
|
import { JsonContext } from "../json/JsonContext.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
+
// import {
|
|
6
|
+
// KnownLanguages, LanguageRegistry
|
|
7
|
+
// } from "../languages/LanguageRegistry.js"
|
|
8
|
+
import { LION_CORE_BUILTINS_INAMED_NAME, LIONWEB_BOOLEAN_TYPE, LIONWEB_INTEGER_TYPE, LIONWEB_JSON_TYPE, LIONWEB_STRING_TYPE, M3_Keys } from "../json/M3definitions.js";
|
|
5
9
|
import { SimpleFieldValidator } from "./SimpleFieldValidator.js";
|
|
6
10
|
/**
|
|
7
11
|
* Check against the language definition
|
|
8
12
|
*/
|
|
9
13
|
export class LionWebLanguageReferenceValidator {
|
|
10
|
-
constructor(validationResult,
|
|
14
|
+
constructor(validationResult, registry) {
|
|
15
|
+
this.registry = registry;
|
|
11
16
|
this.validationResult = validationResult;
|
|
12
|
-
this.language = lang;
|
|
13
17
|
this.simpleFieldValidator = new SimpleFieldValidator(this.validationResult);
|
|
14
18
|
}
|
|
15
19
|
// reset() {
|
|
@@ -17,76 +21,95 @@ export class LionWebLanguageReferenceValidator {
|
|
|
17
21
|
// }
|
|
18
22
|
// TODO test reference and children implementation
|
|
19
23
|
validate(obj) {
|
|
20
|
-
if (this.language === undefined || this.language === null) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
24
|
obj.jsonChunk.nodes.forEach((node, nodeIndex) => {
|
|
24
25
|
const nodeContext = new JsonContext(null, ["node", nodeIndex]);
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
26
|
+
const nodeConcept = this.registry.getNodeByMetaPointer(node.classifier);
|
|
27
|
+
if (nodeConcept === undefined && nodeContext !== undefined) {
|
|
27
28
|
this.validationResult.issue(new Language_UnknownConcept_Issue(nodeContext, node.classifier));
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
31
|
node.properties.forEach((property, propIndex) => {
|
|
31
|
-
this.validateProperty(property, nodeContext.concat("properties", propIndex));
|
|
32
|
+
this.validateProperty(node, nodeConcept, property, nodeContext.concat("properties", propIndex));
|
|
32
33
|
});
|
|
33
34
|
node.containments.forEach((containment, childIndex) => {
|
|
34
|
-
this.validateContainment(containment, nodeContext.concat("containments", childIndex));
|
|
35
|
+
this.validateContainment(node, nodeConcept, containment, nodeContext.concat("containments", childIndex));
|
|
35
36
|
});
|
|
36
37
|
node.references.forEach((reference, refIndex) => {
|
|
37
|
-
this.validateReference(reference, nodeContext.concat("references", refIndex));
|
|
38
|
+
this.validateReference(node, nodeConcept, reference, nodeContext.concat("references", refIndex));
|
|
38
39
|
});
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
|
-
validateContainment(
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
this.validationResult.issue(new Language_UnknownContainment_Issue(context,
|
|
42
|
+
validateContainment(node, nodeConcept, containment, context) {
|
|
43
|
+
const metaConcept = this.registry.getNodeByMetaPointer(containment.containment);
|
|
44
|
+
if (metaConcept === null || metaConcept === undefined) {
|
|
45
|
+
this.validationResult.issue(new Language_UnknownContainment_Issue(context, containment.containment));
|
|
45
46
|
return;
|
|
46
47
|
}
|
|
47
|
-
if (
|
|
48
|
-
this.validationResult.issue(new Language_IncorrectContainmentMetaPointer_Issue(context,
|
|
48
|
+
if (metaConcept.classifier.key !== M3_Keys.Containment) {
|
|
49
|
+
this.validationResult.issue(new Language_IncorrectContainmentMetaPointer_Issue(context, containment.containment, metaConcept.classifier.key));
|
|
50
|
+
}
|
|
51
|
+
if (nodeConcept !== undefined) {
|
|
52
|
+
const cons = this.registry.languages.allContainments(nodeConcept);
|
|
53
|
+
if (!cons.includes(metaConcept)) {
|
|
54
|
+
this.validationResult.issue(new Language_ContainmentMetaPointerNotInClass_Issue(context, containment.containment, nodeConcept));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
49
57
|
}
|
|
50
58
|
// TODO check type of children
|
|
51
59
|
}
|
|
52
|
-
validateReference(ref, context) {
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
60
|
+
validateReference(node, nodeConcept, ref, context) {
|
|
61
|
+
const referenceDefinition = this.registry.getNodeByMetaPointer(ref.reference);
|
|
62
|
+
if (referenceDefinition === null || referenceDefinition === undefined) {
|
|
55
63
|
this.validationResult.issue(new Language_UnknownReference_Issue(context, ref.reference));
|
|
56
64
|
return;
|
|
57
65
|
}
|
|
58
|
-
if (
|
|
59
|
-
this.validationResult.issue(new Language_IncorrectReferenceMetaPointer_Issue(context, ref.reference,
|
|
66
|
+
if (referenceDefinition.classifier.key !== M3_Keys.Reference) {
|
|
67
|
+
this.validationResult.issue(new Language_IncorrectReferenceMetaPointer_Issue(context, ref.reference, referenceDefinition.classifier.key));
|
|
68
|
+
}
|
|
69
|
+
if (nodeConcept !== undefined) {
|
|
70
|
+
const refs = this.registry.languages.allReferenceDefinitions(nodeConcept);
|
|
71
|
+
if (!refs.includes(referenceDefinition)) {
|
|
72
|
+
this.validationResult.issue(new Language_ReferenceMetaPointerNotInClass_Issue(context, ref.reference, nodeConcept));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
60
75
|
}
|
|
61
76
|
// TODO Check type of reference (if possible)
|
|
62
77
|
// TODO Check for duplicate targets?
|
|
78
|
+
// No, already done without language check
|
|
63
79
|
// If so, what to check because there can be either or both a `resolveInfo` and a `reference`
|
|
64
80
|
}
|
|
65
81
|
/**
|
|
66
82
|
* Checks wwhether the value of `prop1` is correct in relation with its property definition in the referred language.
|
|
67
83
|
* @param prop
|
|
68
84
|
*/
|
|
69
|
-
validateProperty(prop, context) {
|
|
85
|
+
validateProperty(node, nodeConcept, prop, context) {
|
|
70
86
|
if (prop.value === null) {
|
|
71
87
|
return;
|
|
72
88
|
}
|
|
73
|
-
const
|
|
74
|
-
if (
|
|
89
|
+
const propertyDefinition = this.registry.getNodeByMetaPointer(prop.property);
|
|
90
|
+
if (propertyDefinition === undefined) {
|
|
75
91
|
this.validationResult.issue(new Language_UnknownProperty_Issue(context, prop.property));
|
|
76
92
|
return;
|
|
77
93
|
}
|
|
78
|
-
if (
|
|
79
|
-
this.validationResult.issue(new Language_IncorrectPropertyMetaPointer_Issue(context, prop.property,
|
|
94
|
+
if (propertyDefinition.classifier.key !== M3_Keys.Property) {
|
|
95
|
+
this.validationResult.issue(new Language_IncorrectPropertyMetaPointer_Issue(context, prop.property, propertyDefinition.classifier.key));
|
|
80
96
|
return;
|
|
81
97
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
98
|
+
if (nodeConcept !== undefined) {
|
|
99
|
+
const props = this.registry.languages.allProperties(nodeConcept);
|
|
100
|
+
if (!props.includes(propertyDefinition)) {
|
|
101
|
+
this.validationResult.issue(new Language_PropertyMetaPointerNotInClass_Issue(context, prop.property, nodeConcept));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const refType = NodeUtils.findReference(propertyDefinition, MetaPointers.PropertyType);
|
|
106
|
+
// const refType = propertyDefinition.references.find(ref => isEqualMetaPointer(ref.reference, MetaPointers.PropertyType))
|
|
107
|
+
const propertyName = propertyDefinition.properties.find(p => p.property.key === LION_CORE_BUILTINS_INAMED_NAME)?.value;
|
|
86
108
|
// console.log("Fount type should be " + refType.targets[0].reference);
|
|
87
109
|
if (propertyName !== undefined) {
|
|
88
110
|
if (refType !== null && refType !== undefined) {
|
|
89
|
-
|
|
111
|
+
const typeReferenceId = refType.targets[0].reference;
|
|
112
|
+
switch (typeReferenceId) {
|
|
90
113
|
case LIONWEB_BOOLEAN_TYPE:
|
|
91
114
|
this.simpleFieldValidator.validateBoolean(prop, propertyName, context);
|
|
92
115
|
break;
|
|
@@ -94,10 +117,49 @@ export class LionWebLanguageReferenceValidator {
|
|
|
94
117
|
this.simpleFieldValidator.validateInteger(prop, propertyName, context);
|
|
95
118
|
break;
|
|
96
119
|
case LIONWEB_STRING_TYPE:
|
|
120
|
+
// Each string is correct and having another JSOn type is already captured
|
|
97
121
|
break;
|
|
98
122
|
case LIONWEB_JSON_TYPE:
|
|
99
123
|
this.simpleFieldValidator.validateJSON(prop, propertyName, context);
|
|
100
124
|
break;
|
|
125
|
+
default: {
|
|
126
|
+
// Check for enumeration
|
|
127
|
+
// console.log("validateProperty: 0")
|
|
128
|
+
const propTypeReference = NodeUtils.findReference(propertyDefinition, MetaPointers.PropertyType);
|
|
129
|
+
if (propTypeReference === undefined) {
|
|
130
|
+
// console.log("validateProperty: 1")
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
const propType = this.registry.findNode(propTypeReference.targets[0].reference);
|
|
134
|
+
if (propType === undefined) {
|
|
135
|
+
// console.log("validateProperty: 1.4 for " + prop.value + " ==> " + propTypeReference.targets[0].reference)
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
let match = false;
|
|
139
|
+
if (isEqualMetaPointer(propType.classifier, MetaPointers.Enumeration)) {
|
|
140
|
+
const literalsContainment = NodeUtils.findContainment(propType, MetaPointers.EnumerationLiterals);
|
|
141
|
+
if (literalsContainment === undefined) {
|
|
142
|
+
// console.log("validateProperty: 2")
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
const literals = literalsContainment.children.map(child => this.registry.findNode(child));
|
|
146
|
+
match = literals.some(lit => {
|
|
147
|
+
if (lit === undefined) {
|
|
148
|
+
// console.log("validateProperty: 3")
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
const litKeyProp = NodeUtils.findProperty(lit, MetaPointers.IKeyedKey);
|
|
152
|
+
if (litKeyProp === undefined) {
|
|
153
|
+
// console.log("validateProperty: 4")
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
return prop.value === litKeyProp.value;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (!match) {
|
|
160
|
+
this.validationResult.issue(new Language_PropertyValue_Issue(context, prop.property.key, prop.value, propType.classifier.key));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
101
163
|
}
|
|
102
164
|
}
|
|
103
165
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageReferenceValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageReferenceValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
+
import { LionWebJsonNode } from "../json/index.js";
|
|
1
2
|
import { LionWebJsonChunk } from "../json/LionWebJson.js";
|
|
3
|
+
import { LionWebJsonChunkWrapper } from "../json/LionWebJsonChunkWrapper.js";
|
|
4
|
+
import { LanguageRegistry } from "../languages/index.js";
|
|
2
5
|
import { ValidationResult } from "./ValidationResult.js";
|
|
6
|
+
/**
|
|
7
|
+
* Validates whether a chunk is a valid language definition
|
|
8
|
+
*/
|
|
3
9
|
export declare class LionWebLanguageValidator {
|
|
10
|
+
private registry;
|
|
4
11
|
validationResult: ValidationResult;
|
|
5
|
-
|
|
12
|
+
chunkWrapper: LionWebJsonChunkWrapper | undefined;
|
|
13
|
+
constructor(validationResult: ValidationResult, registry: LanguageRegistry);
|
|
6
14
|
/**
|
|
7
|
-
*
|
|
15
|
+
* Check whether the metamodel is a Language.
|
|
16
|
+
* Assumption is that _chunk_ is already validated as a correct :LionWebJsonChunk
|
|
8
17
|
* @param obj
|
|
9
18
|
*/
|
|
10
|
-
|
|
19
|
+
validateLanguage(chunk: LionWebJsonChunk): void;
|
|
20
|
+
validateConcept(node: LionWebJsonNode): void;
|
|
21
|
+
validateNode(node: LionWebJsonNode): void;
|
|
22
|
+
validateProperties(node: LionWebJsonNode, classifier: LionWebJsonNode): void;
|
|
11
23
|
}
|
|
12
24
|
//# sourceMappingURL=LionWebLanguageValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,eAAe,EAAgB,MAAM,kBAAkB,CAAA;AAEpF,OAAO,EAAuB,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAa,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;GAEG;AACH,qBAAa,wBAAwB;IAKe,OAAO,CAAC,QAAQ;IAJhE,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,YAAY,EAAE,uBAAuB,GAAG,SAAS,CAAA;gBAGrC,gBAAgB,EAAE,gBAAgB,EAAU,QAAQ,EAAE,gBAAgB;IAKlF;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,gBAAgB;IAqBxC,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAS5C,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAWzC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI;CAW/E"}
|