@lionweb/validation 0.7.0-beta.9 → 0.7.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/CHANGELOG.md +6 -1
- package/dist/issues/ValidationIssue.d.ts +3 -3
- package/dist/issues/ValidationIssue.d.ts.map +1 -1
- package/dist/issues/ValidationIssue.js +1 -1
- package/dist/issues/ValidationIssue.js.map +1 -1
- package/dist/languages/LanguageUtils.d.ts.map +1 -1
- package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -1
- package/dist/validators/LionWebChunkDefinitions.js +1 -1
- package/dist/validators/LionWebChunkDefinitions.js.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageReferenceValidator.js +3 -3
- package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
- package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
- package/dist/validators/LionWebLanguageValidator.js +2 -1
- package/dist/validators/LionWebLanguageValidator.js.map +1 -1
- package/dist/validators/ValidationFunctions.d.ts.map +1 -1
- package/dist/validators/ValidationFunctions.js +4 -10
- package/dist/validators/ValidationFunctions.js.map +1 -1
- package/dist/validators/generic/SyntaxValidator.d.ts +1 -15
- package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -1
- package/dist/validators/generic/SyntaxValidator.js +1 -50
- package/dist/validators/generic/SyntaxValidator.js.map +1 -1
- package/dist/validators/generic/schema/DefinitionSchema.d.ts +5 -8
- package/dist/validators/generic/schema/DefinitionSchema.d.ts.map +1 -1
- package/dist/validators/generic/schema/DefinitionSchema.js +8 -40
- package/dist/validators/generic/schema/DefinitionSchema.js.map +1 -1
- package/package.json +41 -37
- package/src/issues/ValidationIssue.ts +4 -4
- package/src/validators/LionWebChunkDefinitions.ts +1 -1
- package/src/validators/LionWebLanguageReferenceValidator.ts +3 -3
- package/src/validators/LionWebLanguageValidator.ts +2 -1
- package/src/validators/ValidationFunctions.ts +4 -10
- package/src/validators/generic/SyntaxValidator.ts +1 -54
- package/src/validators/generic/schema/DefinitionSchema.ts +13 -45
- package/tsconfig.json +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.0
|
|
4
|
+
|
|
5
|
+
* Refactor validation schema to enable generation ot TypeScript types with discriminator.
|
|
6
|
+
|
|
7
|
+
|
|
3
8
|
## 0.6.3
|
|
4
9
|
|
|
5
|
-
*
|
|
10
|
+
* Make validation aware that the `value` field of a property serialization is allowed to be `null`.
|
|
6
11
|
|
|
7
12
|
|
|
8
13
|
## 0.6.2
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { JsonContext } from "@lionweb/json-utils";
|
|
2
2
|
export declare abstract class ValidationIssue {
|
|
3
3
|
abstract readonly issueType: string;
|
|
4
|
-
context: JsonContext;
|
|
5
|
-
constructor(context: JsonContext);
|
|
4
|
+
context: JsonContext | null;
|
|
5
|
+
constructor(context: JsonContext | null);
|
|
6
6
|
protected abstract msg(): string;
|
|
7
7
|
errorMsg(): string;
|
|
8
8
|
}
|
|
9
9
|
export declare class GenericIssue extends ValidationIssue {
|
|
10
10
|
text: string;
|
|
11
11
|
readonly issueType = "GenericIssue";
|
|
12
|
-
constructor(context: JsonContext, text: string);
|
|
12
|
+
constructor(context: JsonContext | null, text: string);
|
|
13
13
|
protected msg: () => string;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=ValidationIssue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationIssue.d.ts","sourceRoot":"","sources":["../../src/issues/ValidationIssue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,8BAAsB,eAAe;IACjC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IACnC,OAAO,EAAE,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"ValidationIssue.d.ts","sourceRoot":"","sources":["../../src/issues/ValidationIssue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,8BAAsB,eAAe;IACjC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IACnC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;gBAEf,OAAO,EAAE,WAAW,GAAG,IAAI;IAIvC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,MAAM;IAEzB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,YAAa,SAAQ,eAAe;IAKlC,IAAI,EAAE,MAAM;IAJvB,QAAQ,CAAC,SAAS,kBAAiB;gBAG/B,OAAO,EAAE,WAAW,GAAG,IAAI,EACpB,IAAI,EAAE,MAAM;IAKvB,SAAS,CAAC,GAAG,eAAkB;CAClC"}
|
|
@@ -3,7 +3,7 @@ export class ValidationIssue {
|
|
|
3
3
|
this.context = context;
|
|
4
4
|
}
|
|
5
5
|
errorMsg() {
|
|
6
|
-
return `${this.issueType}: ${this.msg()} at ${this.context
|
|
6
|
+
return `${this.issueType}: ${this.msg()} at ${this.context?.toString()} `;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
export class GenericIssue extends ValidationIssue {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationIssue.js","sourceRoot":"","sources":["../../src/issues/ValidationIssue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,eAAe;IAIjC,YAAY,
|
|
1
|
+
{"version":3,"file":"ValidationIssue.js","sourceRoot":"","sources":["../../src/issues/ValidationIssue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,eAAe;IAIjC,YAAY,OAA2B;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAIM,QAAQ;QACX,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAA;IAC7E,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,eAAe;IAG7C,YACI,OAA2B,EACpB,IAAY;QAEnB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFP,SAAI,GAAJ,IAAI,CAAQ;QAJd,cAAS,GAAG,cAAc,CAAA;QASzB,QAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA;IAF/B,CAAC;CAGJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageUtils.d.ts","sourceRoot":"","sources":["../../src/languages/LanguageUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AASrF,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"LanguageUtils.d.ts","sourceRoot":"","sources":["../../src/languages/LanguageUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AASrF,eAAO,MAAM,gBAAgB,EAAkB,gBAAgB,CAAA;AAC/D,eAAO,MAAM,sBAAsB,EAAwB,gBAAgB,CAAA;AAE3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,WAEvD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,eAAe,KAAG,OAEjD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,eAAe,KAAG,OAEpD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,eAAe,KAAG,OAEnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,eAAe,KAAG,OAElD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,eAAe,KAAG,OAErD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,eAAe,KAAG,OAEnD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageWrapper.d.ts","sourceRoot":"","sources":["../../src/languages/LionWebLanguageWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,uBAAuB,EAA2B,MAAM,qBAAqB,CAAA;AAItF,UAAU,+BAA+B;IACrC,gBAAgB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACpE,cAAc,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IAClE,mBAAmB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACvE,aAAa,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACjE,oBAAoB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACxE,uBAAuB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IAC3E,sBAAsB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IAC1E,eAAe,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;CACtE;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,uBAAwB,YAAW,+BAA+B;IAC1G,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,UAAU,CAAA;gBAEH,KAAK,EAAE,gBAAgB;IAWnC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageWrapper.d.ts","sourceRoot":"","sources":["../../src/languages/LionWebLanguageWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,uBAAuB,EAA2B,MAAM,qBAAqB,CAAA;AAItF,UAAU,+BAA+B;IACrC,gBAAgB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACpE,cAAc,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IAClE,mBAAmB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACvE,aAAa,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACjE,oBAAoB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IACxE,uBAAuB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IAC3E,sBAAsB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;IAC1E,eAAe,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,eAAe,EAAE,CAAA;CACtE;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,uBAAwB,YAAW,+BAA+B;IAC1G,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,UAAU,CAAA;gBAEH,KAAK,EAAE,gBAAgB;IAWnC,gBAAgB,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAoBlE;IAED,cAAc,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAEhE;IAED,mBAAmB,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAIrE;IAED,aAAa,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAE/D;IAED,oBAAoB,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAItE;IAED,uBAAuB,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAEzE;IAED,sBAAsB,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAIxE;IAED,eAAe,GAAI,YAAY,eAAe,KAAG,eAAe,EAAE,CAEjE;CACJ"}
|
|
@@ -6,7 +6,7 @@ import { validateId, validateKey, validateSerializationFormatVersion, validateVe
|
|
|
6
6
|
* - be used by the SyntaxValidator to validate an object sat runtime.
|
|
7
7
|
* - used to generate all the TypeScript types for a LionWebChunk.
|
|
8
8
|
*/
|
|
9
|
-
export const LionWebSchema = new DefinitionSchema([
|
|
9
|
+
export const LionWebSchema = new DefinitionSchema([
|
|
10
10
|
{
|
|
11
11
|
name: "LionWebJsonMetaPointer",
|
|
12
12
|
properties: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebChunkDefinitions.js","sourceRoot":"","sources":["../../src/validators/LionWebChunkDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAG,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC9F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kCAAkC,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAEvH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqB,IAAI,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"LionWebChunkDefinitions.js","sourceRoot":"","sources":["../../src/validators/LionWebChunkDefinitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,6 @@ export declare class LionWebLanguageReferenceValidator {
|
|
|
16
16
|
* Checks wwhether the value of `prop1` is correct in relation with its property definition in the referred language.
|
|
17
17
|
* @param prop
|
|
18
18
|
*/
|
|
19
|
-
validateProperty(
|
|
19
|
+
validateProperty(_node: LionWebJsonNode, nodeConcept: LionWebJsonNode | undefined, prop: LionWebJsonProperty, context: JsonContext): void;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=LionWebLanguageReferenceValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageReferenceValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,eAAe,EAAE,mBAAmB,EAAwB,MAAM,eAAe,CAAA;AACtI,OAAO,EACH,WAAW,EAGX,uBAAuB,EAI1B,MAAM,qBAAqB,CAAA;AAmB5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAIhE;;GAEG;AACH,qBAAa,iCAAiC;IAGM,OAAO,CAAC,QAAQ;IAFhE,gBAAgB,EAAE,gBAAgB,CAAA;gBAEtB,gBAAgB,EAAE,gBAAgB,EAAU,QAAQ,EAAE,gBAAgB;IASlF,QAAQ,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI;IAoB5C,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,iBAAiB;IAwBzB;;;OAGG;IACH,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageReferenceValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,eAAe,EAAE,mBAAmB,EAAwB,MAAM,eAAe,CAAA;AACtI,OAAO,EACH,WAAW,EAGX,uBAAuB,EAI1B,MAAM,qBAAqB,CAAA;AAmB5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAIhE;;GAEG;AACH,qBAAa,iCAAiC;IAGM,OAAO,CAAC,QAAQ;IAFhE,gBAAgB,EAAE,gBAAgB,CAAA;gBAEtB,gBAAgB,EAAE,gBAAgB,EAAU,QAAQ,EAAE,gBAAgB;IASlF,QAAQ,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI;IAoB5C,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,iBAAiB;IAwBzB;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,GAAG,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;CAqF5I"}
|
|
@@ -34,7 +34,7 @@ export class LionWebLanguageReferenceValidator {
|
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
validateContainment(
|
|
37
|
+
validateContainment(_node, nodeConcept, containment, context) {
|
|
38
38
|
const metaConcept = this.registry.getNodeByMetaPointer(containment.containment);
|
|
39
39
|
if (metaConcept === null || metaConcept === undefined) {
|
|
40
40
|
this.validationResult.issue(new Language_UnknownContainment_Issue(context, containment.containment));
|
|
@@ -52,7 +52,7 @@ export class LionWebLanguageReferenceValidator {
|
|
|
52
52
|
}
|
|
53
53
|
// TODO check type of children
|
|
54
54
|
}
|
|
55
|
-
validateReference(
|
|
55
|
+
validateReference(_node, nodeConcept, ref, context) {
|
|
56
56
|
const referenceDefinition = this.registry.getNodeByMetaPointer(ref.reference);
|
|
57
57
|
if (referenceDefinition === null || referenceDefinition === undefined) {
|
|
58
58
|
this.validationResult.issue(new Language_UnknownReference_Issue(context, ref.reference));
|
|
@@ -77,7 +77,7 @@ export class LionWebLanguageReferenceValidator {
|
|
|
77
77
|
* Checks wwhether the value of `prop1` is correct in relation with its property definition in the referred language.
|
|
78
78
|
* @param prop
|
|
79
79
|
*/
|
|
80
|
-
validateProperty(
|
|
80
|
+
validateProperty(_node, nodeConcept, prop, context) {
|
|
81
81
|
if (prop.value === null) {
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageReferenceValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAsF,MAAM,eAAe,CAAA;AACtI,OAAO,EACH,WAAW,EACX,8BAA8B,EAC9B,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAElF,OAAO,EACP,YAAY,EACZ,SAAS,EACZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,+CAA+C,EAC/C,2CAA2C,EAC3C,4CAA4C,EAC5C,4BAA4B,EAC5B,6CAA6C,EAC7C,6BAA6B,EAChC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,8CAA8C,EAC9C,4CAA4C,EAC5C,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAClC,MAAM,6BAA6B,CAAA;AAMpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGzF;;GAEG;AACH,MAAM,OAAO,iCAAiC;IAG1C,YAAY,gBAAkC,EAAU,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;QAC9E,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC5C,CAAC;IAED,YAAY;IACZ,qCAAqC;IACrC,IAAI;IAEJ,kDAAkD;IAClD,QAAQ,CAAC,GAA4B;QACjC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;YAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACvE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBACzD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,6BAA6B,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;gBAC5F,OAAM;YACV,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE;gBAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;YACnG,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;gBAClD,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAA;YAC5G,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;gBAC5C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;YACpG,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageReferenceValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageReferenceValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAoC,uBAAuB,EAAgB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"LionWebLanguageValidator.d.ts","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAoC,uBAAuB,EAAgB,MAAM,qBAAqB,CAAA;AAI7G,OAAO,EAAa,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE;;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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isEqualMetaPointer } from "@lionweb/json";
|
|
2
2
|
import { isLionWebM3Language, JsonContext, LionWebJsonChunkWrapper, MetaPointers } from "@lionweb/json-utils";
|
|
3
|
+
import { asMinimalJsonString } from "@lionweb/ts-utils";
|
|
3
4
|
import { GenericIssue } from "../issues/index.js";
|
|
4
5
|
import { MissingM3Language_Issue } from "../issues/LanguageIssues.js";
|
|
5
6
|
import { isConcept } from "../languages/index.js";
|
|
@@ -27,7 +28,7 @@ export class LionWebLanguageValidator {
|
|
|
27
28
|
const languageNodes = this.chunkWrapper.findNodesOfClassifier(MetaPointers.Language);
|
|
28
29
|
if (languageNodes.length !== 1) {
|
|
29
30
|
// TODO Better error handling.
|
|
30
|
-
console.error("Error: xpected exactly one Language node, found " + languageNodes.length + " => " +
|
|
31
|
+
console.error("Error: xpected exactly one Language node, found " + languageNodes.length + " => " + asMinimalJsonString(languageNodes));
|
|
31
32
|
}
|
|
32
33
|
chunk.nodes.forEach((node, index) => {
|
|
33
34
|
if (!isConcept(node)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LionWebLanguageValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqC,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAoB,MAAM,uBAAuB,CAAA;AAGnE;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAGjC,uDAAuD;IAEvD,YAAY,gBAAkC,EAAU,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;QAC9E,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,KAAuB;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAA;QACtD,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9E,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAClG,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QACpF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,8BAA8B;YAC9B,OAAO,CAAC,KAAK,CAAC,kDAAkD,GAAG,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"LionWebLanguageValidator.js","sourceRoot":"","sources":["../../src/validators/LionWebLanguageValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAUjD,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,3 +1,4 @@
|
|
|
1
|
+
import { asMinimalJsonString } from "@lionweb/ts-utils";
|
|
1
2
|
import { Language_PropertyValue_Issue } from "../issues/LanguageIssues.js";
|
|
2
3
|
import { Syntax_IdFormat_Issue, Syntax_KeyFormat_Issue, Syntax_PropertyNullIssue, Syntax_SerializationFormatVersion_Issue, Syntax_VersionFormat_Issue } from "../issues/SyntaxIssues.js";
|
|
3
4
|
/**
|
|
@@ -6,7 +7,6 @@ import { Syntax_IdFormat_Issue, Syntax_KeyFormat_Issue, Syntax_PropertyNullIssue
|
|
|
6
7
|
* @param result Any validation issues found will be put into this object.
|
|
7
8
|
* @param context The context for the error message in errors.
|
|
8
9
|
*/
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
10
10
|
export function validateId(value, result, context) {
|
|
11
11
|
const idString = "" + value;
|
|
12
12
|
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/;
|
|
@@ -20,7 +20,6 @@ export function validateId(value, result, context) {
|
|
|
20
20
|
* @param result Any validation issues found will be put into this object.
|
|
21
21
|
* @param context The context for the error message in errors.
|
|
22
22
|
*/
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
24
23
|
export function validateKey(value, result, context) {
|
|
25
24
|
const keyString = "" + value;
|
|
26
25
|
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/;
|
|
@@ -34,7 +33,6 @@ export function validateKey(value, result, context) {
|
|
|
34
33
|
* @param result Any validation issues found will be put into this object.
|
|
35
34
|
* @param context The location in the overall JSON.
|
|
36
35
|
*/
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
38
36
|
export function validateVersion(value, result, context) {
|
|
39
37
|
const versionString = "" + value;
|
|
40
38
|
if (versionString.length === 0) {
|
|
@@ -48,11 +46,10 @@ export function validateVersion(value, result, context) {
|
|
|
48
46
|
* @param context The location in the overall JSON.
|
|
49
47
|
* @param propDef The PropertyDefinition for this value
|
|
50
48
|
*/
|
|
51
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
52
49
|
export function validateBoolean(value, result, context, propDef) {
|
|
53
50
|
const valueAsPrimitive = "" + value;
|
|
54
51
|
if (valueAsPrimitive !== "true" && valueAsPrimitive !== "false") {
|
|
55
|
-
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "boolean " +
|
|
52
|
+
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "boolean " + asMinimalJsonString(value)));
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
/**
|
|
@@ -62,7 +59,6 @@ export function validateBoolean(value, result, context, propDef) {
|
|
|
62
59
|
* @param context The location in the overall JSON.
|
|
63
60
|
* @param propDef The PropertyDefinition for this value
|
|
64
61
|
*/
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
66
62
|
export function validateInteger(value, result, context, propDef) {
|
|
67
63
|
const valueAsPrimitive = "" + value;
|
|
68
64
|
const regexp = /^[+-]?(0|[1-9][0-9]*)$/;
|
|
@@ -77,7 +73,6 @@ export function validateInteger(value, result, context, propDef) {
|
|
|
77
73
|
* @param context The location in the overall JSON.
|
|
78
74
|
* @param propDef The PropertyDefinition for this value
|
|
79
75
|
*/
|
|
80
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
81
76
|
export function validateJSON(value, result, context, propDef) {
|
|
82
77
|
const valueAsPrimitive = "" + value;
|
|
83
78
|
if (value === null) {
|
|
@@ -86,7 +81,7 @@ export function validateJSON(value, result, context, propDef) {
|
|
|
86
81
|
try {
|
|
87
82
|
JSON.parse(valueAsPrimitive);
|
|
88
83
|
}
|
|
89
|
-
catch (
|
|
84
|
+
catch (_) {
|
|
90
85
|
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "JSON"));
|
|
91
86
|
}
|
|
92
87
|
}
|
|
@@ -96,10 +91,9 @@ export function validateJSON(value, result, context, propDef) {
|
|
|
96
91
|
* @param result
|
|
97
92
|
* @param context
|
|
98
93
|
*/
|
|
99
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
100
94
|
export function validateSerializationFormatVersion(value, result, context) {
|
|
101
95
|
if (typeof value !== "string") {
|
|
102
|
-
result.issue(new Syntax_SerializationFormatVersion_Issue(context,
|
|
96
|
+
result.issue(new Syntax_SerializationFormatVersion_Issue(context, asMinimalJsonString(value)));
|
|
103
97
|
return;
|
|
104
98
|
}
|
|
105
99
|
if (value.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationFunctions.js","sourceRoot":"","sources":["../../src/validators/ValidationFunctions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC1E,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,uCAAuC,EACvC,0BAA0B,EAC7B,MAAM,2BAA2B,CAAA;AAIlC;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"ValidationFunctions.js","sourceRoot":"","sources":["../../src/validators/ValidationFunctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JsonContext } from "@lionweb/json-utils";
|
|
2
2
|
import { ValidationResult } from "./ValidationResult.js";
|
|
3
|
-
import { ObjectDefinition, PrimitiveDefinition, DefinitionSchema, UnknownObjectType
|
|
3
|
+
import { ObjectDefinition, PrimitiveDefinition, DefinitionSchema, UnknownObjectType } from "./schema/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Syntax Validator checks whether objects are structurally conforming to the
|
|
6
6
|
* definitions given in `schema`.
|
|
@@ -26,20 +26,6 @@ export declare class SyntaxValidator {
|
|
|
26
26
|
*/
|
|
27
27
|
validateObjectProperties(originalProperty: string, typeDef: ObjectDefinition, object: UnknownObjectType, jsonContext: JsonContext): void;
|
|
28
28
|
validatePrimitiveValue(propertyName: string, propDef: PrimitiveDefinition, object: unknown, jsonContext: JsonContext): boolean;
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* @param propertyDef the definition of the property that has the TaggedUnionType as its type
|
|
32
|
-
* @param typeDef The object definition containing the `propertyDef`
|
|
33
|
-
* @param object The object of type `typeDef` that should have the property described by `propertyDef`
|
|
34
|
-
* @param jsonContext
|
|
35
|
-
*/
|
|
36
|
-
validateTaggedUnion(propertyDef: PropertyDefinition, typeDef: ObjectDefinition, object: UnknownObjectType, jsonContext: JsonContext): void;
|
|
37
|
-
/**
|
|
38
|
-
* Validate a single tagged object
|
|
39
|
-
* @param taggedObject
|
|
40
|
-
* @param jsonContext
|
|
41
|
-
*/
|
|
42
|
-
validateTaggedObject(taggedObject: UnknownObjectType, jsonContext: JsonContext): void;
|
|
43
29
|
/**
|
|
44
30
|
* Check whether there are extra properties that should not be there.
|
|
45
31
|
* @param obj Object to be validated
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JsonContext } from "@lionweb/json-utils";
|
|
2
|
-
import {
|
|
2
|
+
import { Syntax_ArrayContainsNull_Issue, Syntax_PropertyMissingIssue, Syntax_PropertyNullIssue, Syntax_PropertyTypeIssue, Syntax_PropertyUnknownIssue } from "../../issues/index.js";
|
|
3
3
|
import { isObjectDefinition, isPrimitiveDefinition } from "./schema/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Syntax Validator checks whether objects are structurally conforming to the
|
|
@@ -46,11 +46,6 @@ export class SyntaxValidator {
|
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
48
|
for (const propertyDef of typeDef.properties) {
|
|
49
|
-
const taggedUnion = this.schema.getTaggedUnionDefinition(propertyDef.type);
|
|
50
|
-
if (taggedUnion !== undefined) {
|
|
51
|
-
this.validateTaggedUnion(propertyDef, typeDef, object, jsonContext.concat(propertyDef.name));
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
49
|
const expectedTypeDef = this.schema.getDefinition(propertyDef.type);
|
|
55
50
|
const validator = propertyDef.validate;
|
|
56
51
|
const propertyValue = object[propertyDef.name];
|
|
@@ -138,50 +133,6 @@ export class SyntaxValidator {
|
|
|
138
133
|
propDef.validate(object, this.validationResult, jsonContext);
|
|
139
134
|
return true;
|
|
140
135
|
}
|
|
141
|
-
/**
|
|
142
|
-
*
|
|
143
|
-
* @param propertyDef the definition of the property that has the TaggedUnionType as its type
|
|
144
|
-
* @param typeDef The object definition containing the `propertyDef`
|
|
145
|
-
* @param object The object of type `typeDef` that should have the property described by `propertyDef`
|
|
146
|
-
* @param jsonContext
|
|
147
|
-
*/
|
|
148
|
-
validateTaggedUnion(propertyDef, typeDef, object, jsonContext) {
|
|
149
|
-
// console.log(`validateTaggedUnion ${JSON.stringify(propertyDef)}, typedef ${typeDef.name} object: ${JSON.stringify(object, null, 3)}`)
|
|
150
|
-
const taggedObject = object[propertyDef.name];
|
|
151
|
-
if (propertyDef.isList) {
|
|
152
|
-
if (!Array.isArray(taggedObject)) {
|
|
153
|
-
this.validationResult.issue(new GenericIssue(jsonContext, `Property value '${propertyDef.name}' expects an array, found '${typeof taggedObject}'`));
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
taggedObject.forEach((taggedObjectSingle, index) => {
|
|
157
|
-
this.validateTaggedObject(taggedObjectSingle, jsonContext.concat(index));
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
if (!(typeof taggedObject === "object")) {
|
|
163
|
-
this.validationResult.issue(new GenericIssue(jsonContext, `Property value '${propertyDef.name}' expects an object, found '${typeof taggedObject}'`));
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
this.validateTaggedObject(taggedObject, jsonContext);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Validate a single tagged object
|
|
172
|
-
* @param taggedObject
|
|
173
|
-
* @param jsonContext
|
|
174
|
-
*/
|
|
175
|
-
validateTaggedObject(taggedObject, jsonContext) {
|
|
176
|
-
const actualTypeName = taggedObject["messageKind"];
|
|
177
|
-
const actualType = this.schema.getDefinition(actualTypeName);
|
|
178
|
-
if (actualType === undefined || !isObjectDefinition(actualType)) {
|
|
179
|
-
this.validationResult.issue(new GenericIssue(jsonContext, `Expected object type is ${typeof taggedObject}, should be object`));
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
this.validateObjectProperties(actualTypeName, actualType, taggedObject, jsonContext);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
136
|
/**
|
|
186
137
|
* Check whether there are extra properties that should not be there.
|
|
187
138
|
* @param obj Object to be validated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxValidator.js","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"SyntaxValidator.js","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,24 +3,21 @@ import { Definition, PrimitiveDefinition, TaggedUnionDefinition } from "./Valida
|
|
|
3
3
|
* A collection of object and primitive definitions describing JSON objects.
|
|
4
4
|
* Used to
|
|
5
5
|
* - validate an incoming JSON object
|
|
6
|
-
* - generate the corresponding TypeScript type definitions
|
|
6
|
+
* - generate the corresponding TypeScript type definitions
|
|
7
|
+
* - generate handlers for the JSOn objects (in @lionweb/server)
|
|
7
8
|
*/
|
|
8
9
|
export declare class DefinitionSchema {
|
|
9
|
-
|
|
10
|
+
unionDefinition: TaggedUnionDefinition | undefined;
|
|
10
11
|
/**
|
|
11
12
|
* Mapping from extenden object type name to list of extending Object Definitions
|
|
12
13
|
*/
|
|
13
|
-
taggedUnions: Map<string, Definition[]>;
|
|
14
14
|
definitionsMap: Map<string, Definition>;
|
|
15
|
-
constructor(
|
|
15
|
+
constructor(definitions: Definition[], taggedUnion?: TaggedUnionDefinition);
|
|
16
16
|
getDefinition(name: string): Definition | undefined;
|
|
17
|
-
addTaggedUnion(defs: TaggedUnionDefinition[]): void;
|
|
18
17
|
add(definitions: Definition[] | Definition): void;
|
|
19
18
|
isTagProperty(propertyName: string): boolean;
|
|
20
19
|
definitions(): Definition[];
|
|
21
|
-
getTaggedUnionDefinition(name: string): TaggedUnionDefinition | undefined;
|
|
22
20
|
isUnionDiscriminator(propDef: PrimitiveDefinition): boolean;
|
|
23
|
-
|
|
24
|
-
static join(...schema: DefinitionSchema[]): DefinitionSchema;
|
|
21
|
+
joinDefinitions(...schema: DefinitionSchema[]): void;
|
|
25
22
|
}
|
|
26
23
|
//# sourceMappingURL=DefinitionSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefinitionSchema.d.ts","sourceRoot":"","sources":["../../../../src/validators/generic/schema/DefinitionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
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"}
|
|
@@ -1,75 +1,43 @@
|
|
|
1
|
-
import { isObjectDefinition } from "./ValidationTypes.js";
|
|
2
1
|
/**
|
|
3
2
|
* A collection of object and primitive definitions describing JSON objects.
|
|
4
3
|
* Used to
|
|
5
4
|
* - validate an incoming JSON object
|
|
6
|
-
* - generate the corresponding TypeScript type definitions
|
|
5
|
+
* - generate the corresponding TypeScript type definitions
|
|
6
|
+
* - generate handlers for the JSOn objects (in @lionweb/server)
|
|
7
7
|
*/
|
|
8
8
|
export class DefinitionSchema {
|
|
9
|
-
constructor(
|
|
10
|
-
this.unionDefinitions = [];
|
|
9
|
+
constructor(definitions, taggedUnion) {
|
|
11
10
|
/**
|
|
12
11
|
* Mapping from extenden object type name to list of extending Object Definitions
|
|
13
12
|
*/
|
|
14
|
-
this.taggedUnions = new Map();
|
|
15
13
|
this.definitionsMap = new Map();
|
|
16
14
|
this.add(definitions);
|
|
17
|
-
this.
|
|
15
|
+
this.unionDefinition = taggedUnion;
|
|
18
16
|
}
|
|
19
17
|
getDefinition(name) {
|
|
20
18
|
return this.definitionsMap.get(name);
|
|
21
19
|
}
|
|
22
|
-
addTaggedUnion(defs) {
|
|
23
|
-
this.unionDefinitions.push(...defs);
|
|
24
|
-
}
|
|
25
20
|
add(definitions) {
|
|
26
21
|
if (!Array.isArray(definitions)) {
|
|
27
22
|
definitions = [definitions];
|
|
28
23
|
}
|
|
29
24
|
for (const def of definitions) {
|
|
30
|
-
if (isObjectDefinition(def)) {
|
|
31
|
-
if (def.taggedUnionType !== "") {
|
|
32
|
-
let existingExtends = this.taggedUnions.get(def.taggedUnionType);
|
|
33
|
-
if (existingExtends === undefined) {
|
|
34
|
-
existingExtends = [];
|
|
35
|
-
this.taggedUnions.set(def.taggedUnionType, existingExtends);
|
|
36
|
-
}
|
|
37
|
-
existingExtends.push(def);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
25
|
this.definitionsMap.set(def.name, def);
|
|
41
26
|
}
|
|
42
27
|
}
|
|
43
28
|
isTagProperty(propertyName) {
|
|
44
|
-
return this.
|
|
29
|
+
return this.unionDefinition?.unionProperty === propertyName;
|
|
45
30
|
}
|
|
46
31
|
definitions() {
|
|
47
32
|
return Array.from(this.definitionsMap.values());
|
|
48
33
|
}
|
|
49
|
-
getTaggedUnionDefinition(name) {
|
|
50
|
-
return this.unionDefinitions.find(def => def.unionType === name);
|
|
51
|
-
}
|
|
52
34
|
isUnionDiscriminator(propDef) {
|
|
53
|
-
return this.
|
|
54
|
-
}
|
|
55
|
-
extending(name) {
|
|
56
|
-
const result = this.taggedUnions.get(name);
|
|
57
|
-
if (result === undefined) {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
return Array.from(result.values());
|
|
62
|
-
}
|
|
35
|
+
return this.unionDefinition?.unionDiscriminator === propDef.name;
|
|
63
36
|
}
|
|
64
|
-
|
|
65
|
-
const result = new DefinitionSchema([], []);
|
|
37
|
+
joinDefinitions(...schema) {
|
|
66
38
|
schema.forEach(sch => {
|
|
67
|
-
sch.definitions()
|
|
68
|
-
result.add([value]);
|
|
69
|
-
});
|
|
70
|
-
result.addTaggedUnion(sch.unionDefinitions);
|
|
39
|
+
this.add(sch.definitions());
|
|
71
40
|
});
|
|
72
|
-
return result;
|
|
73
41
|
}
|
|
74
42
|
}
|
|
75
43
|
//# sourceMappingURL=DefinitionSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefinitionSchema.js","sourceRoot":"","sources":["../../../../src/validators/generic/schema/DefinitionSchema.ts"],"names":[],"mappings":"
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,39 +1,43 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
2
|
+
"name": "@lionweb/validation",
|
|
3
|
+
"version": "0.7.1",
|
|
4
|
+
"license": "Apache 2.0",
|
|
5
|
+
"description": "LionWeb Serialization validation",
|
|
6
|
+
"author": "jos.warmer@openmodeling.nl",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"typings": "dist/index.d.ts",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"lionweb",
|
|
13
|
+
"serialization",
|
|
14
|
+
"testing"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"clean": "npx rimraf dist node_modules -g lionweb-validation-*.tgz",
|
|
18
|
+
"build": "tsc && npm run copyM3 && npm run copyBuiltins",
|
|
19
|
+
"copyM3": "node -e \"const fs = require('fs'); fs.copyFileSync('./src/languages/LionCore-M3.json', './dist/languages/LionCore-M3.json');\"",
|
|
20
|
+
"copyBuiltins": "node -e \"const fs = require('fs'); fs.copyFileSync('./src/languages/LionCore-builtins.json', './dist/languages/LionCore-builtins.json');\"",
|
|
21
|
+
"lint": "eslint src",
|
|
22
|
+
"test-here": "cd ../test && find dist/validation -type d | sed '1!G;h;$!d' | xargs npx mocha",
|
|
23
|
+
"prep:pre-release": "npm run clean && npm install && npm run build",
|
|
24
|
+
"prerelease-alpha": "npm run prep:pre-release",
|
|
25
|
+
"release-alpha": "npm publish --tag alpha",
|
|
26
|
+
"prerelease-beta": "npm run prep:pre-release",
|
|
27
|
+
"release-beta": "npm publish --tag beta",
|
|
28
|
+
"prerelease": "npm run prep:pre-release",
|
|
29
|
+
"release": "npm publish",
|
|
30
|
+
"testValid": "node dist/runners/RunCheckFolder.js ../test/testset/valid",
|
|
31
|
+
"testInvalid": "node dist/runners/RunCheckFolder.js ../test/testset/invalid",
|
|
32
|
+
"testInvalidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/invalid/ ../test/testset/withLanguage/myLang.language.json",
|
|
33
|
+
"testValidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/valid/ ../test/testset/withLanguage/myLang.language.json",
|
|
34
|
+
"publish-local": "npm publish --registry http://localhost:4873",
|
|
35
|
+
"unpublish-local": "npm unpublish --force --registry http://localhost:4873",
|
|
36
|
+
"republish-local": "yarn unpublish-local && yarn publish-local"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@lionweb/json": "0.7.1",
|
|
40
|
+
"@lionweb/ts-utils": "0.7.1",
|
|
41
|
+
"@lionweb/json-utils": "0.7.1"
|
|
42
|
+
}
|
|
39
43
|
}
|
|
@@ -2,16 +2,16 @@ import { JsonContext } from "@lionweb/json-utils"
|
|
|
2
2
|
|
|
3
3
|
export abstract class ValidationIssue {
|
|
4
4
|
abstract readonly issueType: string
|
|
5
|
-
context: JsonContext
|
|
5
|
+
context: JsonContext | null
|
|
6
6
|
|
|
7
|
-
constructor(context: JsonContext) {
|
|
7
|
+
constructor(context: JsonContext | null) {
|
|
8
8
|
this.context = context
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
protected abstract msg(): string
|
|
12
12
|
|
|
13
13
|
public errorMsg(): string {
|
|
14
|
-
return `${this.issueType}: ${this.msg()} at ${this.context
|
|
14
|
+
return `${this.issueType}: ${this.msg()} at ${this.context?.toString()} `
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ export class GenericIssue extends ValidationIssue {
|
|
|
19
19
|
readonly issueType = "GenericIssue"
|
|
20
20
|
|
|
21
21
|
constructor(
|
|
22
|
-
context: JsonContext,
|
|
22
|
+
context: JsonContext | null,
|
|
23
23
|
public text: string
|
|
24
24
|
) {
|
|
25
25
|
super(context)
|
|
@@ -7,7 +7,7 @@ import { validateId, validateKey, validateSerializationFormatVersion, validateVe
|
|
|
7
7
|
* - be used by the SyntaxValidator to validate an object sat runtime.
|
|
8
8
|
* - used to generate all the TypeScript types for a LionWebChunk.
|
|
9
9
|
*/
|
|
10
|
-
export const LionWebSchema: DefinitionSchema = new DefinitionSchema([
|
|
10
|
+
export const LionWebSchema: DefinitionSchema = new DefinitionSchema([
|
|
11
11
|
{
|
|
12
12
|
name: "LionWebJsonMetaPointer",
|
|
13
13
|
properties: [
|
|
@@ -66,7 +66,7 @@ export class LionWebLanguageReferenceValidator {
|
|
|
66
66
|
})
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
private validateContainment(
|
|
69
|
+
private validateContainment(_node: LionWebJsonNode, nodeConcept: LionWebJsonNode | undefined, containment: LionWebJsonContainment, context: JsonContext) {
|
|
70
70
|
const metaConcept = this.registry.getNodeByMetaPointer(containment.containment)
|
|
71
71
|
if (metaConcept === null || metaConcept === undefined) {
|
|
72
72
|
this.validationResult.issue(new Language_UnknownContainment_Issue(context, containment.containment))
|
|
@@ -85,7 +85,7 @@ export class LionWebLanguageReferenceValidator {
|
|
|
85
85
|
// TODO check type of children
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
private validateReference(
|
|
88
|
+
private validateReference(_node: LionWebJsonNode, nodeConcept: LionWebJsonNode | undefined, ref: LionWebJsonReference, context: JsonContext) {
|
|
89
89
|
const referenceDefinition = this.registry.getNodeByMetaPointer(ref.reference)
|
|
90
90
|
if (referenceDefinition === null || referenceDefinition === undefined) {
|
|
91
91
|
this.validationResult.issue(new Language_UnknownReference_Issue(context, ref.reference))
|
|
@@ -113,7 +113,7 @@ export class LionWebLanguageReferenceValidator {
|
|
|
113
113
|
* Checks wwhether the value of `prop1` is correct in relation with its property definition in the referred language.
|
|
114
114
|
* @param prop
|
|
115
115
|
*/
|
|
116
|
-
validateProperty(
|
|
116
|
+
validateProperty(_node: LionWebJsonNode, nodeConcept: LionWebJsonNode | undefined, prop: LionWebJsonProperty, context: JsonContext): void {
|
|
117
117
|
if (prop.value === null) {
|
|
118
118
|
return
|
|
119
119
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isEqualMetaPointer, LionWebJsonChunk, LionWebJsonNode } from "@lionweb/json"
|
|
2
2
|
import { isLionWebM3Language, JsonContext, LionWebJsonChunkWrapper, MetaPointers } from "@lionweb/json-utils"
|
|
3
|
+
import { asMinimalJsonString } from "@lionweb/ts-utils"
|
|
3
4
|
import { GenericIssue } from "../issues/index.js"
|
|
4
5
|
import { MissingM3Language_Issue } from "../issues/LanguageIssues.js"
|
|
5
6
|
import { isConcept, LanguageRegistry } from "../languages/index.js"
|
|
@@ -33,7 +34,7 @@ export class LionWebLanguageValidator {
|
|
|
33
34
|
const languageNodes = this.chunkWrapper.findNodesOfClassifier(MetaPointers.Language)
|
|
34
35
|
if (languageNodes.length !== 1) {
|
|
35
36
|
// TODO Better error handling.
|
|
36
|
-
console.error("Error: xpected exactly one Language node, found " + languageNodes.length + " => " +
|
|
37
|
+
console.error("Error: xpected exactly one Language node, found " + languageNodes.length + " => " + asMinimalJsonString(languageNodes))
|
|
37
38
|
}
|
|
38
39
|
chunk.nodes.forEach((node, index) => {
|
|
39
40
|
if (!isConcept(node)) {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Used in the LionWebSyntaxValidator.
|
|
4
4
|
*/
|
|
5
5
|
import { JsonContext } from "@lionweb/json-utils"
|
|
6
|
+
import { asMinimalJsonString } from "@lionweb/ts-utils"
|
|
6
7
|
import { Language_PropertyValue_Issue } from "../issues/LanguageIssues.js"
|
|
7
8
|
import {
|
|
8
9
|
Syntax_IdFormat_Issue,
|
|
@@ -20,7 +21,6 @@ import { PropertyDefinition } from "./generic/schema/ValidationTypes.js"
|
|
|
20
21
|
* @param result Any validation issues found will be put into this object.
|
|
21
22
|
* @param context The context for the error message in errors.
|
|
22
23
|
*/
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
24
24
|
export function validateId<String>(value: String, result: ValidationResult, context: JsonContext): void {
|
|
25
25
|
const idString: string = "" + value
|
|
26
26
|
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/
|
|
@@ -35,7 +35,6 @@ export function validateId<String>(value: String, result: ValidationResult, cont
|
|
|
35
35
|
* @param result Any validation issues found will be put into this object.
|
|
36
36
|
* @param context The context for the error message in errors.
|
|
37
37
|
*/
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
39
38
|
export function validateKey<String>(value: String, result: ValidationResult, context: JsonContext): void {
|
|
40
39
|
const keyString: string = "" + value
|
|
41
40
|
const regexp = /^[a-zA-Z0-9_-][a-zA-Z0-9_-]*$/
|
|
@@ -50,7 +49,6 @@ export function validateKey<String>(value: String, result: ValidationResult, con
|
|
|
50
49
|
* @param result Any validation issues found will be put into this object.
|
|
51
50
|
* @param context The location in the overall JSON.
|
|
52
51
|
*/
|
|
53
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
54
52
|
export function validateVersion<String>(value: String, result: ValidationResult, context: JsonContext): void {
|
|
55
53
|
const versionString: string = "" + value
|
|
56
54
|
if (versionString.length === 0) {
|
|
@@ -65,7 +63,6 @@ export function validateVersion<String>(value: String, result: ValidationResult,
|
|
|
65
63
|
* @param context The location in the overall JSON.
|
|
66
64
|
* @param propDef The PropertyDefinition for this value
|
|
67
65
|
*/
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
69
66
|
export function validateBoolean<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void {
|
|
70
67
|
const valueAsPrimitive = "" + value
|
|
71
68
|
if (valueAsPrimitive !== "true" && valueAsPrimitive !== "false") {
|
|
@@ -74,7 +71,7 @@ export function validateBoolean<String>(value: String, result: ValidationResult,
|
|
|
74
71
|
context,
|
|
75
72
|
propDef ? propDef.name : "unknown",
|
|
76
73
|
valueAsPrimitive,
|
|
77
|
-
"boolean " +
|
|
74
|
+
"boolean " + asMinimalJsonString(value)
|
|
78
75
|
)
|
|
79
76
|
)
|
|
80
77
|
}
|
|
@@ -87,7 +84,6 @@ export function validateBoolean<String>(value: String, result: ValidationResult,
|
|
|
87
84
|
* @param context The location in the overall JSON.
|
|
88
85
|
* @param propDef The PropertyDefinition for this value
|
|
89
86
|
*/
|
|
90
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
91
87
|
export function validateInteger<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void {
|
|
92
88
|
const valueAsPrimitive = "" + value
|
|
93
89
|
const regexp = /^[+-]?(0|[1-9][0-9]*)$/
|
|
@@ -103,7 +99,6 @@ export function validateInteger<String>(value: String, result: ValidationResult,
|
|
|
103
99
|
* @param context The location in the overall JSON.
|
|
104
100
|
* @param propDef The PropertyDefinition for this value
|
|
105
101
|
*/
|
|
106
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
107
102
|
export function validateJSON<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void {
|
|
108
103
|
const valueAsPrimitive = "" + value
|
|
109
104
|
if (value === null) {
|
|
@@ -111,7 +106,7 @@ export function validateJSON<String>(value: String, result: ValidationResult, co
|
|
|
111
106
|
}
|
|
112
107
|
try {
|
|
113
108
|
JSON.parse(valueAsPrimitive)
|
|
114
|
-
} catch (
|
|
109
|
+
} catch (_) {
|
|
115
110
|
result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "JSON"))
|
|
116
111
|
}
|
|
117
112
|
}
|
|
@@ -122,10 +117,9 @@ export function validateJSON<String>(value: String, result: ValidationResult, co
|
|
|
122
117
|
* @param result
|
|
123
118
|
* @param context
|
|
124
119
|
*/
|
|
125
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
126
120
|
export function validateSerializationFormatVersion<String>(value: String, result: ValidationResult, context: JsonContext): void {
|
|
127
121
|
if (typeof value !== "string") {
|
|
128
|
-
result.issue(new Syntax_SerializationFormatVersion_Issue(context,
|
|
122
|
+
result.issue(new Syntax_SerializationFormatVersion_Issue(context, asMinimalJsonString(value)))
|
|
129
123
|
return
|
|
130
124
|
}
|
|
131
125
|
if (value.length === 0) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { JsonContext } from "@lionweb/json-utils"
|
|
2
2
|
import {
|
|
3
|
-
GenericIssue,
|
|
4
3
|
Syntax_ArrayContainsNull_Issue,
|
|
5
4
|
Syntax_PropertyMissingIssue,
|
|
6
5
|
Syntax_PropertyNullIssue,
|
|
@@ -11,7 +10,7 @@ import { ValidationResult } from "./ValidationResult.js"
|
|
|
11
10
|
import {
|
|
12
11
|
isObjectDefinition,
|
|
13
12
|
isPrimitiveDefinition, ObjectDefinition, PrimitiveDefinition, DefinitionSchema,
|
|
14
|
-
UnknownObjectType
|
|
13
|
+
UnknownObjectType
|
|
15
14
|
} from "./schema/index.js"
|
|
16
15
|
|
|
17
16
|
/**
|
|
@@ -63,11 +62,6 @@ export class SyntaxValidator {
|
|
|
63
62
|
return
|
|
64
63
|
}
|
|
65
64
|
for (const propertyDef of typeDef.properties) {
|
|
66
|
-
const taggedUnion = this.schema.getTaggedUnionDefinition(propertyDef.type)
|
|
67
|
-
if (taggedUnion !== undefined) {
|
|
68
|
-
this.validateTaggedUnion(propertyDef, typeDef, object, jsonContext.concat(propertyDef.name))
|
|
69
|
-
continue
|
|
70
|
-
}
|
|
71
65
|
const expectedTypeDef = this.schema.getDefinition(propertyDef.type)
|
|
72
66
|
const validator = propertyDef.validate!
|
|
73
67
|
const propertyValue = object[propertyDef.name]
|
|
@@ -152,53 +146,6 @@ export class SyntaxValidator {
|
|
|
152
146
|
return true
|
|
153
147
|
}
|
|
154
148
|
|
|
155
|
-
/**
|
|
156
|
-
*
|
|
157
|
-
* @param propertyDef the definition of the property that has the TaggedUnionType as its type
|
|
158
|
-
* @param typeDef The object definition containing the `propertyDef`
|
|
159
|
-
* @param object The object of type `typeDef` that should have the property described by `propertyDef`
|
|
160
|
-
* @param jsonContext
|
|
161
|
-
*/
|
|
162
|
-
validateTaggedUnion(
|
|
163
|
-
propertyDef: PropertyDefinition,
|
|
164
|
-
typeDef: ObjectDefinition,
|
|
165
|
-
object: UnknownObjectType,
|
|
166
|
-
jsonContext: JsonContext
|
|
167
|
-
): void {
|
|
168
|
-
// console.log(`validateTaggedUnion ${JSON.stringify(propertyDef)}, typedef ${typeDef.name} object: ${JSON.stringify(object, null, 3)}`)
|
|
169
|
-
const taggedObject = object[propertyDef.name]
|
|
170
|
-
if (propertyDef.isList) {
|
|
171
|
-
if (!Array.isArray(taggedObject)) {
|
|
172
|
-
this.validationResult.issue(new GenericIssue(jsonContext, `Property value '${propertyDef.name}' expects an array, found '${typeof taggedObject}'`))
|
|
173
|
-
} else {
|
|
174
|
-
taggedObject.forEach((taggedObjectSingle, index) => {
|
|
175
|
-
this.validateTaggedObject(taggedObjectSingle, jsonContext.concat(index))
|
|
176
|
-
})
|
|
177
|
-
}
|
|
178
|
-
} else {
|
|
179
|
-
if (!(typeof taggedObject === "object")) {
|
|
180
|
-
this.validationResult.issue(new GenericIssue(jsonContext, `Property value '${propertyDef.name}' expects an object, found '${typeof taggedObject}'`))
|
|
181
|
-
} else {
|
|
182
|
-
this.validateTaggedObject(taggedObject as UnknownObjectType, jsonContext)
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Validate a single tagged object
|
|
189
|
-
* @param taggedObject
|
|
190
|
-
* @param jsonContext
|
|
191
|
-
*/
|
|
192
|
-
validateTaggedObject(taggedObject: UnknownObjectType, jsonContext: JsonContext): void {
|
|
193
|
-
const actualTypeName = taggedObject["messageKind"] as string
|
|
194
|
-
const actualType = this.schema.getDefinition(actualTypeName)
|
|
195
|
-
if (actualType === undefined || !isObjectDefinition(actualType)) {
|
|
196
|
-
this.validationResult.issue(new GenericIssue(jsonContext, `Expected object type is ${typeof taggedObject}, should be object`))
|
|
197
|
-
} else {
|
|
198
|
-
this.validateObjectProperties(actualTypeName, actualType, taggedObject, jsonContext)
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
149
|
/**
|
|
203
150
|
* Check whether there are extra properties that should not be there.
|
|
204
151
|
* @param obj Object to be validated
|
|
@@ -1,84 +1,52 @@
|
|
|
1
|
-
import { Definition,
|
|
1
|
+
import { Definition, PrimitiveDefinition, TaggedUnionDefinition } from "./ValidationTypes.js"
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A collection of object and primitive definitions describing JSON objects.
|
|
5
|
-
* Used to
|
|
5
|
+
* Used to
|
|
6
6
|
* - validate an incoming JSON object
|
|
7
|
-
* - generate the corresponding TypeScript type definitions
|
|
7
|
+
* - generate the corresponding TypeScript type definitions
|
|
8
|
+
* - generate handlers for the JSOn objects (in @lionweb/server)
|
|
8
9
|
*/
|
|
9
10
|
export class DefinitionSchema {
|
|
10
|
-
|
|
11
|
+
unionDefinition: TaggedUnionDefinition | undefined
|
|
11
12
|
/**
|
|
12
13
|
* Mapping from extenden object type name to list of extending Object Definitions
|
|
13
14
|
*/
|
|
14
|
-
taggedUnions: Map<string, Definition[]> = new Map<string, Definition[]>()
|
|
15
15
|
definitionsMap: Map<string, Definition> = new Map<string, Definition>()
|
|
16
16
|
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(definitions: Definition[], taggedUnion?: TaggedUnionDefinition) {
|
|
18
18
|
this.add(definitions)
|
|
19
|
-
this.
|
|
19
|
+
this.unionDefinition = taggedUnion
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
getDefinition(name: string): Definition | undefined {
|
|
23
23
|
return this.definitionsMap.get(name)
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
addTaggedUnion(defs: TaggedUnionDefinition[]){
|
|
27
|
-
this.unionDefinitions.push(...defs)
|
|
28
|
-
}
|
|
29
25
|
|
|
30
26
|
add(definitions :Definition[] | Definition) {
|
|
31
27
|
if (!Array.isArray(definitions)) {
|
|
32
28
|
definitions = [definitions]
|
|
33
29
|
}
|
|
34
30
|
for(const def of definitions) {
|
|
35
|
-
if (isObjectDefinition(def)) {
|
|
36
|
-
if (def.taggedUnionType !== "") {
|
|
37
|
-
let existingExtends = this.taggedUnions.get(def.taggedUnionType!)
|
|
38
|
-
if (existingExtends === undefined) {
|
|
39
|
-
existingExtends = []
|
|
40
|
-
this.taggedUnions.set(def.taggedUnionType!, existingExtends)
|
|
41
|
-
}
|
|
42
|
-
existingExtends.push(def)
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
31
|
this.definitionsMap.set(def.name, def)
|
|
46
32
|
}
|
|
47
33
|
}
|
|
48
|
-
|
|
34
|
+
|
|
49
35
|
isTagProperty(propertyName: string): boolean {
|
|
50
|
-
return this.
|
|
36
|
+
return this.unionDefinition?.unionProperty === propertyName
|
|
51
37
|
}
|
|
52
38
|
|
|
53
39
|
definitions(): Definition[] {
|
|
54
40
|
return Array.from(this.definitionsMap.values())
|
|
55
41
|
}
|
|
56
|
-
|
|
57
|
-
getTaggedUnionDefinition(name: string): TaggedUnionDefinition | undefined {
|
|
58
|
-
return this.unionDefinitions.find(def => def.unionType === name)
|
|
59
|
-
}
|
|
60
42
|
|
|
61
43
|
isUnionDiscriminator(propDef: PrimitiveDefinition): boolean {
|
|
62
|
-
return this.
|
|
44
|
+
return this.unionDefinition?.unionDiscriminator === propDef.name
|
|
63
45
|
}
|
|
64
46
|
|
|
65
|
-
|
|
66
|
-
const result = this.taggedUnions.get(name)
|
|
67
|
-
if (result === undefined) {
|
|
68
|
-
return []
|
|
69
|
-
} else {
|
|
70
|
-
return Array.from(result.values())
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
static join(...schema: DefinitionSchema[]): DefinitionSchema {
|
|
75
|
-
const result = new DefinitionSchema([], [])
|
|
47
|
+
joinDefinitions(...schema: DefinitionSchema[]): void {
|
|
76
48
|
schema.forEach(sch => {
|
|
77
|
-
sch.definitions()
|
|
78
|
-
result.add([value])
|
|
79
|
-
})
|
|
80
|
-
result.addTaggedUnion(sch.unionDefinitions)
|
|
49
|
+
this.add(sch.definitions())
|
|
81
50
|
})
|
|
82
|
-
return result
|
|
83
51
|
}
|
|
84
52
|
}
|