@lionweb/validation 0.7.0-beta.10 → 0.7.0-beta.12
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/CHANGELOG.md +7 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/issues/LanguageIssues.d.ts +99 -0
- package/dist/issues/LanguageIssues.d.ts.map +1 -0
- package/dist/issues/LanguageIssues.js +146 -0
- package/dist/issues/LanguageIssues.js.map +1 -0
- package/dist/issues/ReferenceIssues.d.ts +43 -0
- package/dist/issues/ReferenceIssues.d.ts.map +1 -0
- package/dist/issues/ReferenceIssues.js +53 -0
- package/dist/issues/ReferenceIssues.js.map +1 -0
- package/dist/issues/SyntaxIssues.d.ts +53 -0
- package/dist/issues/SyntaxIssues.d.ts.map +1 -0
- package/dist/issues/SyntaxIssues.js +81 -0
- package/dist/issues/SyntaxIssues.js.map +1 -0
- package/dist/issues/ValidationIssue.d.ts +15 -0
- package/dist/issues/ValidationIssue.d.ts.map +1 -0
- package/dist/issues/ValidationIssue.js +17 -0
- package/dist/issues/ValidationIssue.js.map +1 -0
- package/dist/issues/index.d.ts +5 -0
- package/dist/issues/index.d.ts.map +1 -0
- package/dist/issues/index.js +5 -0
- package/dist/issues/index.js.map +1 -0
- 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 +54 -0
- package/dist/languages/LanguageUtils.js.map +1 -0
- 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 +6 -0
- package/dist/runners/FileUtils.d.ts.map +1 -0
- package/dist/runners/FileUtils.js +53 -0
- package/dist/runners/FileUtils.js.map +1 -0
- package/dist/runners/RunCheckFolder.d.ts +2 -0
- package/dist/runners/RunCheckFolder.d.ts.map +1 -0
- package/dist/runners/RunCheckFolder.js +6 -0
- package/dist/runners/RunCheckFolder.js.map +1 -0
- package/dist/runners/RunCheckFolderWithLanguage.d.ts +2 -0
- package/dist/runners/RunCheckFolderWithLanguage.d.ts.map +1 -0
- package/dist/runners/RunCheckFolderWithLanguage.js +40 -0
- package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -0
- package/dist/runners/RunCheckOneFile.d.ts +2 -0
- package/dist/runners/RunCheckOneFile.d.ts.map +1 -0
- package/dist/runners/RunCheckOneFile.js +6 -0
- package/dist/runners/RunCheckOneFile.js.map +1 -0
- package/dist/runners/RunCheckOneFileWithLanguage.d.ts +2 -0
- package/dist/runners/RunCheckOneFileWithLanguage.d.ts.map +1 -0
- package/dist/runners/RunCheckOneFileWithLanguage.js +31 -0
- package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -0
- package/dist/runners/RunLioncoreDiff.d.ts +2 -0
- package/dist/runners/RunLioncoreDiff.d.ts.map +1 -0
- package/dist/runners/RunLioncoreDiff.js +22 -0
- package/dist/runners/RunLioncoreDiff.js.map +1 -0
- package/dist/runners/Utils.d.ts +7 -0
- package/dist/runners/Utils.d.ts.map +1 -0
- package/dist/runners/Utils.js +48 -0
- package/dist/runners/Utils.js.map +1 -0
- package/dist/runners/index.d.ts +3 -0
- package/dist/runners/index.d.ts.map +1 -0
- package/dist/runners/index.js +3 -0
- package/dist/runners/index.js.map +1 -0
- package/dist/validators/LionWebChunkDefinitions.d.ts +9 -0
- package/dist/validators/LionWebChunkDefinitions.d.ts.map +1 -0
- package/{src/validators/LionWebChunkDefinitions.ts → dist/validators/LionWebChunkDefinitions.js} +10 -14
- package/dist/validators/LionWebChunkDefinitions.js.map +1 -0
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts +21 -0
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -0
- package/{src/validators/LionWebLanguageReferenceValidator.ts → dist/validators/LionWebLanguageReferenceValidator.js} +73 -108
- package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -0
- package/dist/validators/LionWebLanguageValidator.d.ts +23 -0
- package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -0
- package/dist/validators/LionWebLanguageValidator.js +66 -0
- package/dist/validators/LionWebLanguageValidator.js.map +1 -0
- package/dist/validators/LionWebReferenceValidator.d.ts +43 -0
- package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -0
- package/{src/validators/LionWebReferenceValidator.ts → dist/validators/LionWebReferenceValidator.js} +84 -106
- package/dist/validators/LionWebReferenceValidator.js.map +1 -0
- package/dist/validators/LionWebSyntaxValidator.d.ts +9 -0
- package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -0
- package/dist/validators/LionWebSyntaxValidator.js +11 -0
- package/dist/validators/LionWebSyntaxValidator.js.map +1 -0
- package/dist/validators/LionWebValidator.d.ts +24 -0
- package/dist/validators/LionWebValidator.d.ts.map +1 -0
- package/{src/validators/LionWebValidator.ts → dist/validators/LionWebValidator.js} +29 -45
- package/dist/validators/LionWebValidator.js.map +1 -0
- package/dist/validators/ValidationFunctions.d.ts +60 -0
- package/dist/validators/ValidationFunctions.d.ts.map +1 -0
- package/{src/validators/ValidationFunctions.ts → dist/validators/ValidationFunctions.js} +34 -66
- package/dist/validators/ValidationFunctions.js.map +1 -0
- package/dist/validators/generic/SyntaxValidator.d.ts +37 -0
- package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -0
- package/dist/validators/generic/SyntaxValidator.js +152 -0
- package/dist/validators/generic/SyntaxValidator.js.map +1 -0
- package/dist/validators/generic/ValidationResult.d.ts +8 -0
- package/dist/validators/generic/ValidationResult.d.ts.map +1 -0
- package/dist/validators/generic/ValidationResult.js +15 -0
- package/dist/validators/generic/ValidationResult.js.map +1 -0
- package/dist/validators/generic/index.d.ts +4 -0
- package/dist/validators/generic/index.d.ts.map +1 -0
- package/dist/validators/generic/index.js +4 -0
- package/dist/validators/generic/index.js.map +1 -0
- package/dist/validators/generic/schema/DefinitionSchema.d.ts +23 -0
- package/dist/validators/generic/schema/DefinitionSchema.d.ts.map +1 -0
- package/dist/validators/generic/schema/DefinitionSchema.js +43 -0
- package/dist/validators/generic/schema/DefinitionSchema.js.map +1 -0
- package/dist/validators/generic/schema/ValidationTypes.d.ts +101 -0
- package/dist/validators/generic/schema/ValidationTypes.d.ts.map +1 -0
- package/dist/validators/generic/schema/ValidationTypes.js +43 -0
- package/dist/validators/generic/schema/ValidationTypes.js.map +1 -0
- package/dist/validators/generic/schema/index.d.ts +3 -0
- package/dist/validators/generic/schema/index.d.ts.map +1 -0
- package/dist/validators/generic/schema/index.js +3 -0
- package/dist/validators/generic/schema/index.js.map +1 -0
- package/dist/validators/index.d.ts +9 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +9 -0
- package/dist/validators/index.js.map +1 -0
- package/package.json +4 -4
- package/src/index.ts +0 -4
- package/src/issues/LanguageIssues.ts +0 -147
- package/src/issues/ReferenceIssues.ts +0 -83
- package/src/issues/SyntaxIssues.ts +0 -84
- package/src/issues/ValidationIssue.ts +0 -29
- package/src/issues/index.ts +0 -4
- package/src/languages/CompositeLionWebLanguageWrapper.ts +0 -57
- package/src/languages/LanguageRegistry.ts +0 -44
- package/src/languages/LanguageUtils.ts +0 -63
- package/src/languages/LionWebLanguageWrapper.ts +0 -91
- package/src/languages/MetaPointerMap.ts +0 -41
- package/src/languages/index.ts +0 -2
- package/src/runners/FileUtils.ts +0 -59
- package/src/runners/RunCheckFolder.ts +0 -7
- package/src/runners/RunCheckFolderWithLanguage.ts +0 -45
- package/src/runners/RunCheckOneFile.ts +0 -7
- package/src/runners/RunCheckOneFileWithLanguage.ts +0 -35
- package/src/runners/RunLioncoreDiff.ts +0 -23
- package/src/runners/Utils.ts +0 -54
- package/src/runners/index.ts +0 -2
- package/src/validators/LionWebLanguageValidator.ts +0 -78
- package/src/validators/LionWebSyntaxValidator.ts +0 -14
- package/src/validators/generic/SyntaxValidator.ts +0 -216
- package/src/validators/generic/ValidationResult.ts +0 -17
- package/src/validators/generic/index.ts +0 -3
- package/src/validators/generic/schema/DefinitionSchema.ts +0 -52
- package/src/validators/generic/schema/ValidationTypes.ts +0 -134
- package/src/validators/generic/schema/index.ts +0 -2
- package/src/validators/index.ts +0 -8
- package/tsconfig.json +0 -8
- /package/{src → dist}/languages/LionCore-M3.json +0 -0
- /package/{src → dist}/languages/LionCore-builtins.json +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A list of functions that are used to validate primitive fields for LionWeb conformance.
|
|
3
|
+
* Used in the LionWebSyntaxValidator.
|
|
4
|
+
*/
|
|
5
|
+
import { JsonContext } from "@lionweb/json-utils";
|
|
6
|
+
import { ValidationResult } from "./generic/ValidationResult.js";
|
|
7
|
+
import { PropertyDefinition } from "./generic/schema/ValidationTypes.js";
|
|
8
|
+
/**
|
|
9
|
+
* Check whether `id` is a valid LionWeb id.
|
|
10
|
+
* @param value The `value` to be checked.
|
|
11
|
+
* @param result Any validation issues found will be put into this object.
|
|
12
|
+
* @param context The context for the error message in errors.
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateId<String>(value: String, result: ValidationResult, context: JsonContext): void;
|
|
15
|
+
/**
|
|
16
|
+
* Check whether `key` is a valid LionWeb key.
|
|
17
|
+
* @param value The `key` to be checked.
|
|
18
|
+
* @param result Any validation issues found will be put into this object.
|
|
19
|
+
* @param context The context for the error message in errors.
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateKey<String>(value: String, result: ValidationResult, context: JsonContext): void;
|
|
22
|
+
/**
|
|
23
|
+
* Check whether `version` is a valid LionWeb version.
|
|
24
|
+
* @param value The version to be checked
|
|
25
|
+
* @param result Any validation issues found will be put into this object.
|
|
26
|
+
* @param context The location in the overall JSON.
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateVersion<String>(value: String, result: ValidationResult, context: JsonContext): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check whether the string `value` represents a LionWeb boolean, its value should be "true" or "false".
|
|
31
|
+
* @param value The value to be checked
|
|
32
|
+
* @param result Any validation issues found will be put into this object.
|
|
33
|
+
* @param context The location in the overall JSON.
|
|
34
|
+
* @param propDef The PropertyDefinition for this value
|
|
35
|
+
*/
|
|
36
|
+
export declare function validateBoolean<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void;
|
|
37
|
+
/**
|
|
38
|
+
* Check whether the string `value` represents a LionWeb integer
|
|
39
|
+
* @param value The value to be checked
|
|
40
|
+
* @param result Any validation issues found will be put into this object.
|
|
41
|
+
* @param context The location in the overall JSON.
|
|
42
|
+
* @param propDef The PropertyDefinition for this value
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateInteger<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check whether the string `value` represents a LionWeb Json.
|
|
47
|
+
* @param value The value to be checked
|
|
48
|
+
* @param result Any validation issues found will be put into this object.
|
|
49
|
+
* @param context The location in the overall JSON.
|
|
50
|
+
* @param propDef The PropertyDefinition for this value
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateJSON<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check whether the string `value` is a correct LionWeb serializationFormatVersion.
|
|
55
|
+
* @param value
|
|
56
|
+
* @param result
|
|
57
|
+
* @param context
|
|
58
|
+
*/
|
|
59
|
+
export declare function validateSerializationFormatVersion<String>(value: String, result: ValidationResult, context: JsonContext): void;
|
|
60
|
+
//# sourceMappingURL=ValidationFunctions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationFunctions.d.ts","sourceRoot":"","sources":["../../src/validators/ValidationFunctions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AASjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAMtG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAMvG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAK3G;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAYzI;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAMzI;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAUtI;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAS9H"}
|
|
@@ -1,63 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Used in the LionWebSyntaxValidator.
|
|
4
|
-
*/
|
|
5
|
-
import { JsonContext } from "@lionweb/json-utils"
|
|
6
|
-
import { Language_PropertyValue_Issue } from "../issues/LanguageIssues.js"
|
|
7
|
-
import {
|
|
8
|
-
Syntax_IdFormat_Issue,
|
|
9
|
-
Syntax_KeyFormat_Issue,
|
|
10
|
-
Syntax_PropertyNullIssue,
|
|
11
|
-
Syntax_SerializationFormatVersion_Issue,
|
|
12
|
-
Syntax_VersionFormat_Issue
|
|
13
|
-
} from "../issues/SyntaxIssues.js"
|
|
14
|
-
import { ValidationResult } from "./generic/ValidationResult.js"
|
|
15
|
-
import { PropertyDefinition } from "./generic/schema/ValidationTypes.js"
|
|
16
|
-
|
|
1
|
+
import { Language_PropertyValue_Issue } from "../issues/LanguageIssues.js";
|
|
2
|
+
import { Syntax_IdFormat_Issue, Syntax_KeyFormat_Issue, Syntax_PropertyNullIssue, Syntax_SerializationFormatVersion_Issue, Syntax_VersionFormat_Issue } from "../issues/SyntaxIssues.js";
|
|
17
3
|
/**
|
|
18
4
|
* Check whether `id` is a valid LionWeb id.
|
|
19
5
|
* @param value The `value` to be checked.
|
|
20
6
|
* @param result Any validation issues found will be put into this object.
|
|
21
7
|
* @param context The context for the error message in errors.
|
|
22
8
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/
|
|
9
|
+
export function validateId(value, result, context) {
|
|
10
|
+
const idString = "" + value;
|
|
11
|
+
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/;
|
|
27
12
|
if (!regexp.test(idString)) {
|
|
28
|
-
result.issue(new Syntax_IdFormat_Issue(context, idString))
|
|
13
|
+
result.issue(new Syntax_IdFormat_Issue(context, idString));
|
|
29
14
|
}
|
|
30
|
-
}
|
|
31
|
-
|
|
15
|
+
}
|
|
32
16
|
/**
|
|
33
17
|
* Check whether `key` is a valid LionWeb key.
|
|
34
18
|
* @param value The `key` to be checked.
|
|
35
19
|
* @param result Any validation issues found will be put into this object.
|
|
36
20
|
* @param context The context for the error message in errors.
|
|
37
21
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/
|
|
22
|
+
export function validateKey(value, result, context) {
|
|
23
|
+
const keyString = "" + value;
|
|
24
|
+
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/;
|
|
42
25
|
if (!regexp.test(keyString)) {
|
|
43
|
-
result.issue(new Syntax_KeyFormat_Issue(context, keyString))
|
|
26
|
+
result.issue(new Syntax_KeyFormat_Issue(context, keyString));
|
|
44
27
|
}
|
|
45
28
|
}
|
|
46
|
-
|
|
47
29
|
/**
|
|
48
30
|
* Check whether `version` is a valid LionWeb version.
|
|
49
31
|
* @param value The version to be checked
|
|
50
32
|
* @param result Any validation issues found will be put into this object.
|
|
51
33
|
* @param context The location in the overall JSON.
|
|
52
34
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const versionString: string = "" + value
|
|
35
|
+
export function validateVersion(value, result, context) {
|
|
36
|
+
const versionString = "" + value;
|
|
56
37
|
if (versionString.length === 0) {
|
|
57
|
-
result.issue(new Syntax_VersionFormat_Issue(context, versionString))
|
|
38
|
+
result.issue(new Syntax_VersionFormat_Issue(context, versionString));
|
|
58
39
|
}
|
|
59
40
|
}
|
|
60
|
-
|
|
61
41
|
/**
|
|
62
42
|
* Check whether the string `value` represents a LionWeb boolean, its value should be "true" or "false".
|
|
63
43
|
* @param value The value to be checked
|
|
@@ -65,21 +45,12 @@ export function validateVersion<String>(value: String, result: ValidationResult,
|
|
|
65
45
|
* @param context The location in the overall JSON.
|
|
66
46
|
* @param propDef The PropertyDefinition for this value
|
|
67
47
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const valueAsPrimitive = "" + value
|
|
48
|
+
export function validateBoolean(value, result, context, propDef) {
|
|
49
|
+
const valueAsPrimitive = "" + value;
|
|
71
50
|
if (valueAsPrimitive !== "true" && valueAsPrimitive !== "false") {
|
|
72
|
-
result.issue(
|
|
73
|
-
new Language_PropertyValue_Issue(
|
|
74
|
-
context,
|
|
75
|
-
propDef ? propDef.name : "unknown",
|
|
76
|
-
valueAsPrimitive,
|
|
77
|
-
"boolean " + JSON.stringify(value)
|
|
78
|
-
)
|
|
79
|
-
)
|
|
51
|
+
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "boolean " + JSON.stringify(value)));
|
|
80
52
|
}
|
|
81
53
|
}
|
|
82
|
-
|
|
83
54
|
/**
|
|
84
55
|
* Check whether the string `value` represents a LionWeb integer
|
|
85
56
|
* @param value The value to be checked
|
|
@@ -87,15 +58,13 @@ export function validateBoolean<String>(value: String, result: ValidationResult,
|
|
|
87
58
|
* @param context The location in the overall JSON.
|
|
88
59
|
* @param propDef The PropertyDefinition for this value
|
|
89
60
|
*/
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
const regexp = /^[+-]?(0|[1-9][0-9]*)$/
|
|
61
|
+
export function validateInteger(value, result, context, propDef) {
|
|
62
|
+
const valueAsPrimitive = "" + value;
|
|
63
|
+
const regexp = /^[+-]?(0|[1-9][0-9]*)$/;
|
|
94
64
|
if (valueAsPrimitive === null || !regexp.test(valueAsPrimitive)) {
|
|
95
|
-
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "integer"))
|
|
65
|
+
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "integer"));
|
|
96
66
|
}
|
|
97
67
|
}
|
|
98
|
-
|
|
99
68
|
/**
|
|
100
69
|
* Check whether the string `value` represents a LionWeb Json.
|
|
101
70
|
* @param value The value to be checked
|
|
@@ -103,33 +72,32 @@ export function validateInteger<String>(value: String, result: ValidationResult,
|
|
|
103
72
|
* @param context The location in the overall JSON.
|
|
104
73
|
* @param propDef The PropertyDefinition for this value
|
|
105
74
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const valueAsPrimitive = "" + value
|
|
75
|
+
export function validateJSON(value, result, context, propDef) {
|
|
76
|
+
const valueAsPrimitive = "" + value;
|
|
109
77
|
if (value === null) {
|
|
110
|
-
result.issue(new Syntax_PropertyNullIssue(context, propDef
|
|
78
|
+
result.issue(new Syntax_PropertyNullIssue(context, propDef.name));
|
|
111
79
|
}
|
|
112
80
|
try {
|
|
113
|
-
JSON.parse(valueAsPrimitive)
|
|
114
|
-
}
|
|
115
|
-
|
|
81
|
+
JSON.parse(valueAsPrimitive);
|
|
82
|
+
}
|
|
83
|
+
catch (_) {
|
|
84
|
+
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "JSON"));
|
|
116
85
|
}
|
|
117
86
|
}
|
|
118
|
-
|
|
119
87
|
/**
|
|
120
88
|
* Check whether the string `value` is a correct LionWeb serializationFormatVersion.
|
|
121
89
|
* @param value
|
|
122
90
|
* @param result
|
|
123
91
|
* @param context
|
|
124
92
|
*/
|
|
125
|
-
|
|
126
|
-
export function validateSerializationFormatVersion<String>(value: String, result: ValidationResult, context: JsonContext): void {
|
|
93
|
+
export function validateSerializationFormatVersion(value, result, context) {
|
|
127
94
|
if (typeof value !== "string") {
|
|
128
|
-
result.issue(new Syntax_SerializationFormatVersion_Issue(context, JSON.stringify(value)))
|
|
129
|
-
return
|
|
95
|
+
result.issue(new Syntax_SerializationFormatVersion_Issue(context, JSON.stringify(value)));
|
|
96
|
+
return;
|
|
130
97
|
}
|
|
131
98
|
if (value.length === 0) {
|
|
132
|
-
result.issue(new Syntax_SerializationFormatVersion_Issue(context, value))
|
|
133
|
-
return
|
|
99
|
+
result.issue(new Syntax_SerializationFormatVersion_Issue(context, value));
|
|
100
|
+
return;
|
|
134
101
|
}
|
|
135
102
|
}
|
|
103
|
+
//# sourceMappingURL=ValidationFunctions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationFunctions.js","sourceRoot":"","sources":["../../src/validators/ValidationFunctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { JsonContext } from "@lionweb/json-utils";
|
|
2
|
+
import { ValidationResult } from "./ValidationResult.js";
|
|
3
|
+
import { ObjectDefinition, PrimitiveDefinition, DefinitionSchema, UnknownObjectType } from "./schema/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Syntax Validator checks whether objects are structurally conforming to the
|
|
6
|
+
* definitions given in `schema`.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SyntaxValidator {
|
|
9
|
+
validationResult: ValidationResult;
|
|
10
|
+
schema: DefinitionSchema;
|
|
11
|
+
constructor(validationResult: ValidationResult, schema: DefinitionSchema);
|
|
12
|
+
/**
|
|
13
|
+
* Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
|
|
14
|
+
* All errors found will be added to the `validationResult` object.
|
|
15
|
+
* @param obj The object to validate.
|
|
16
|
+
* @param expectedType The expected type of the object.
|
|
17
|
+
*/
|
|
18
|
+
validate(obj: unknown, expectedType: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Validate whether `object` is structured conform the properties in `propertyDef`
|
|
21
|
+
* @param originalProperty The property of which `object` it the value
|
|
22
|
+
* @param typeDef The property definitions that are being validated
|
|
23
|
+
* @param object The object being validated
|
|
24
|
+
* @param jsonContext The location in the JSON
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
validateObjectProperties(originalProperty: string, typeDef: ObjectDefinition, object: UnknownObjectType, jsonContext: JsonContext): void;
|
|
28
|
+
validatePrimitiveValue(propertyName: string, propDef: PrimitiveDefinition, object: unknown, jsonContext: JsonContext): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Check whether there are extra properties that should not be there.
|
|
31
|
+
* @param obj Object to be validated
|
|
32
|
+
* @param properties The names of the expected properties
|
|
33
|
+
* @param context Location in JSON
|
|
34
|
+
*/
|
|
35
|
+
checkStrayProperties(obj: UnknownObjectType, def: ObjectDefinition, context: JsonContext): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SyntaxValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyntaxValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAQjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAEoB,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAC9E,iBAAiB,EACpB,MAAM,mBAAmB,CAAA;AAE1B;;;GAGG;AACH,qBAAa,eAAe;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,gBAAgB,CAAA;gBAEZ,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB;IAKxE;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;IAa3C;;;;;;;OAOG;IACH,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW;IAoFjI,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAS9H;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW;CAS3F"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { JsonContext } from "@lionweb/json-utils";
|
|
2
|
+
import { Syntax_ArrayContainsNull_Issue, Syntax_PropertyMissingIssue, Syntax_PropertyNullIssue, Syntax_PropertyTypeIssue, Syntax_PropertyUnknownIssue } from "../../issues/index.js";
|
|
3
|
+
import { isObjectDefinition, isPrimitiveDefinition } from "./schema/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Syntax Validator checks whether objects are structurally conforming to the
|
|
6
|
+
* definitions given in `schema`.
|
|
7
|
+
*/
|
|
8
|
+
export class SyntaxValidator {
|
|
9
|
+
constructor(validationResult, schema) {
|
|
10
|
+
this.validationResult = validationResult;
|
|
11
|
+
this.schema = schema;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
|
|
15
|
+
* All errors found will be added to the `validationResult` object.
|
|
16
|
+
* @param obj The object to validate.
|
|
17
|
+
* @param expectedType The expected type of the object.
|
|
18
|
+
*/
|
|
19
|
+
validate(obj, expectedType) {
|
|
20
|
+
const object = obj;
|
|
21
|
+
const typeDef = this.schema.getDefinition(expectedType);
|
|
22
|
+
if (typeDef === undefined) {
|
|
23
|
+
throw new Error(`SyntaxValidator.validate: cannot find definition for ${expectedType}`);
|
|
24
|
+
}
|
|
25
|
+
else if (isObjectDefinition(typeDef)) {
|
|
26
|
+
this.validateObjectProperties(expectedType, typeDef, object, new JsonContext(null, ["$"]));
|
|
27
|
+
}
|
|
28
|
+
else if (isPrimitiveDefinition(typeDef)) {
|
|
29
|
+
this.validatePrimitiveValue("$", typeDef, object, new JsonContext(null, ["$"]));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate whether `object` is structured conform the properties in `propertyDef`
|
|
34
|
+
* @param originalProperty The property of which `object` it the value
|
|
35
|
+
* @param typeDef The property definitions that are being validated
|
|
36
|
+
* @param object The object being validated
|
|
37
|
+
* @param jsonContext The location in the JSON
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
validateObjectProperties(originalProperty, typeDef, object, jsonContext) {
|
|
41
|
+
if (typeDef === null || typeDef === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (typeof object !== "object") {
|
|
45
|
+
this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, originalProperty, "object", typeof object));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const propertyDef of typeDef.properties) {
|
|
49
|
+
const expectedTypeDef = this.schema.getDefinition(propertyDef.type);
|
|
50
|
+
const validator = propertyDef.validate;
|
|
51
|
+
const propertyValue = object[propertyDef.name];
|
|
52
|
+
if (propertyValue === undefined) {
|
|
53
|
+
if (!propertyDef.isOptional) {
|
|
54
|
+
this.validationResult.issue(new Syntax_PropertyMissingIssue(jsonContext, propertyDef.name));
|
|
55
|
+
}
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (!propertyDef.mayBeNull && propertyValue === null) {
|
|
59
|
+
this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propertyDef.name));
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (propertyDef.mayBeNull && propertyValue === null) {
|
|
63
|
+
// Ok, stop checking, continue with next property def
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (propertyDef.isList) {
|
|
67
|
+
// Check whether value is an array
|
|
68
|
+
if (!Array.isArray(propertyValue)) {
|
|
69
|
+
const newContext = jsonContext.concat(propertyDef.name);
|
|
70
|
+
this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, "array", typeof propertyValue));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// If an array, validate every item in the array
|
|
74
|
+
propertyValue.forEach((item, index) => {
|
|
75
|
+
const newContext = jsonContext.concat(propertyDef.name, index);
|
|
76
|
+
if (item === null) {
|
|
77
|
+
this.validationResult.issue(new Syntax_ArrayContainsNull_Issue(newContext, propertyDef.name, index));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
if (expectedTypeDef !== undefined) {
|
|
81
|
+
if (isPrimitiveDefinition(expectedTypeDef)) {
|
|
82
|
+
if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, item, jsonContext)) {
|
|
83
|
+
validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// propertyValue should be an object, validate its properties
|
|
88
|
+
this.validateObjectProperties(propertyDef.name, expectedTypeDef, item, newContext);
|
|
89
|
+
validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw new Error(`Expected type '${propertyDef.type} has neither property defs, nor a validator.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const newContext = jsonContext.concat(propertyDef.name);
|
|
100
|
+
if (Array.isArray(propertyValue)) {
|
|
101
|
+
this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, propertyDef.type, "array"));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Single valued property, validate it
|
|
105
|
+
if (expectedTypeDef !== undefined) {
|
|
106
|
+
if (isPrimitiveDefinition(expectedTypeDef)) {
|
|
107
|
+
// propertyValue should be a primitive as it has no property definitions
|
|
108
|
+
if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, propertyValue, jsonContext)) {
|
|
109
|
+
validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (isObjectDefinition(expectedTypeDef)) {
|
|
113
|
+
// propertyValue should be an object, validate its properties
|
|
114
|
+
this.validateObjectProperties(propertyDef.name, expectedTypeDef, propertyValue, newContext);
|
|
115
|
+
validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new Error("EXPECTING ObjectDefinition or PrimitiveDefinition, but got something else");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
throw new Error(`Expected single type '${propertyDef.type}' for '${propertyDef.name}' at ${newContext.toString()} has neither property defs, nor a validator.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
this.checkStrayProperties(object, typeDef, jsonContext);
|
|
127
|
+
}
|
|
128
|
+
validatePrimitiveValue(propertyName, propDef, object, jsonContext) {
|
|
129
|
+
if (typeof object !== propDef.primitiveType) {
|
|
130
|
+
this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, propertyName, propDef.primitiveType, typeof object));
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
propDef.validate(object, this.validationResult, jsonContext);
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Check whether there are extra properties that should not be there.
|
|
138
|
+
* @param obj Object to be validated
|
|
139
|
+
* @param properties The names of the expected properties
|
|
140
|
+
* @param context Location in JSON
|
|
141
|
+
*/
|
|
142
|
+
checkStrayProperties(obj, def, context) {
|
|
143
|
+
const own = Object.getOwnPropertyNames(obj);
|
|
144
|
+
const defined = def.properties.map(pdef => pdef.name);
|
|
145
|
+
own.forEach(ownProp => {
|
|
146
|
+
if (!defined.includes(ownProp)) {
|
|
147
|
+
this.validationResult.issue(new Syntax_PropertyUnknownIssue(context, ownProp));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=SyntaxValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyntaxValidator.js","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValidationIssue } from "../../issues/ValidationIssue.js";
|
|
2
|
+
export declare class ValidationResult {
|
|
3
|
+
issues: ValidationIssue[];
|
|
4
|
+
issue(issue: ValidationIssue): void;
|
|
5
|
+
reset(): void;
|
|
6
|
+
hasErrors(): boolean;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ValidationResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationResult.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/ValidationResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,qBAAa,gBAAgB;IACzB,MAAM,EAAE,eAAe,EAAE,CAAK;IAE9B,KAAK,CAAC,KAAK,EAAE,eAAe;IAI5B,KAAK;IAIL,SAAS,IAAI,OAAO;CAGvB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class ValidationResult {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.issues = [];
|
|
4
|
+
}
|
|
5
|
+
issue(issue) {
|
|
6
|
+
this.issues.push(issue);
|
|
7
|
+
}
|
|
8
|
+
reset() {
|
|
9
|
+
this.issues = [];
|
|
10
|
+
}
|
|
11
|
+
hasErrors() {
|
|
12
|
+
return this.issues.length !== 0;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ValidationResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationResult.js","sourceRoot":"","sources":["../../../src/validators/generic/ValidationResult.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,gBAAgB;IAA7B;QACI,WAAM,GAAsB,EAAE,CAAA;IAalC,CAAC;IAXG,KAAK,CAAC,KAAsB;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IACpB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA;IACnC,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validators/generic/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Definition, PrimitiveDefinition, TaggedUnionDefinition } from "./ValidationTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* A collection of object and primitive definitions describing JSON objects.
|
|
4
|
+
* Used to
|
|
5
|
+
* - validate an incoming JSON object
|
|
6
|
+
* - generate the corresponding TypeScript type definitions
|
|
7
|
+
* - generate handlers for the JSOn objects (in @lionweb/server)
|
|
8
|
+
*/
|
|
9
|
+
export declare class DefinitionSchema {
|
|
10
|
+
unionDefinition: TaggedUnionDefinition | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Mapping from extenden object type name to list of extending Object Definitions
|
|
13
|
+
*/
|
|
14
|
+
definitionsMap: Map<string, Definition>;
|
|
15
|
+
constructor(definitions: Definition[], taggedUnion?: TaggedUnionDefinition);
|
|
16
|
+
getDefinition(name: string): Definition | undefined;
|
|
17
|
+
add(definitions: Definition[] | Definition): void;
|
|
18
|
+
isTagProperty(propertyName: string): boolean;
|
|
19
|
+
definitions(): Definition[];
|
|
20
|
+
isUnionDiscriminator(propDef: PrimitiveDefinition): boolean;
|
|
21
|
+
joinDefinitions(...schema: DefinitionSchema[]): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=DefinitionSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefinitionSchema.d.ts","sourceRoot":"","sources":["../../../../src/validators/generic/schema/DefinitionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE7F;;;;;;GAMG;AACH,qBAAa,gBAAgB;IACzB,eAAe,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAClD;;OAEG;IACH,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAgC;gBAE3D,WAAW,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,qBAAqB;IAK1E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAInD,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU;IAS1C,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI5C,WAAW,IAAI,UAAU,EAAE;IAI3B,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAI3D,eAAe,CAAC,GAAG,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI;CAKvD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A collection of object and primitive definitions describing JSON objects.
|
|
3
|
+
* Used to
|
|
4
|
+
* - validate an incoming JSON object
|
|
5
|
+
* - generate the corresponding TypeScript type definitions
|
|
6
|
+
* - generate handlers for the JSOn objects (in @lionweb/server)
|
|
7
|
+
*/
|
|
8
|
+
export class DefinitionSchema {
|
|
9
|
+
constructor(definitions, taggedUnion) {
|
|
10
|
+
/**
|
|
11
|
+
* Mapping from extenden object type name to list of extending Object Definitions
|
|
12
|
+
*/
|
|
13
|
+
this.definitionsMap = new Map();
|
|
14
|
+
this.add(definitions);
|
|
15
|
+
this.unionDefinition = taggedUnion;
|
|
16
|
+
}
|
|
17
|
+
getDefinition(name) {
|
|
18
|
+
return this.definitionsMap.get(name);
|
|
19
|
+
}
|
|
20
|
+
add(definitions) {
|
|
21
|
+
if (!Array.isArray(definitions)) {
|
|
22
|
+
definitions = [definitions];
|
|
23
|
+
}
|
|
24
|
+
for (const def of definitions) {
|
|
25
|
+
this.definitionsMap.set(def.name, def);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
isTagProperty(propertyName) {
|
|
29
|
+
return this.unionDefinition?.unionProperty === propertyName;
|
|
30
|
+
}
|
|
31
|
+
definitions() {
|
|
32
|
+
return Array.from(this.definitionsMap.values());
|
|
33
|
+
}
|
|
34
|
+
isUnionDiscriminator(propDef) {
|
|
35
|
+
return this.unionDefinition?.unionDiscriminator === propDef.name;
|
|
36
|
+
}
|
|
37
|
+
joinDefinitions(...schema) {
|
|
38
|
+
schema.forEach(sch => {
|
|
39
|
+
this.add(sch.definitions());
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=DefinitionSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefinitionSchema.js","sourceRoot":"","sources":["../../../../src/validators/generic/schema/DefinitionSchema.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAOzB,YAAY,WAAyB,EAAE,WAAmC;QAL1E;;WAEG;QACH,mBAAc,GAA4B,IAAI,GAAG,EAAsB,CAAA;QAGnE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAA;IACtC,CAAC;IAED,aAAa,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,GAAG,CAAC,WAAsC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,WAAW,GAAG,CAAC,WAAW,CAAC,CAAA;QAC/B,CAAC;QACD,KAAI,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1C,CAAC;IACL,CAAC;IAED,aAAa,CAAC,YAAoB;QAC9B,OAAO,IAAI,CAAC,eAAe,EAAE,aAAa,KAAK,YAAY,CAAA;IAC/D,CAAC;IAED,WAAW;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,oBAAoB,CAAC,OAA4B;QAC7C,OAAO,IAAI,CAAC,eAAe,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAA;IACpE,CAAC;IAED,eAAe,CAAC,GAAG,MAA0B;QACzC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
|