@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.
Files changed (170) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +5 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/issues/LanguageIssues.d.ts +99 -0
  7. package/dist/issues/LanguageIssues.d.ts.map +1 -0
  8. package/dist/issues/LanguageIssues.js +146 -0
  9. package/dist/issues/LanguageIssues.js.map +1 -0
  10. package/dist/issues/ReferenceIssues.d.ts +43 -0
  11. package/dist/issues/ReferenceIssues.d.ts.map +1 -0
  12. package/dist/issues/ReferenceIssues.js +53 -0
  13. package/dist/issues/ReferenceIssues.js.map +1 -0
  14. package/dist/issues/SyntaxIssues.d.ts +53 -0
  15. package/dist/issues/SyntaxIssues.d.ts.map +1 -0
  16. package/dist/issues/SyntaxIssues.js +81 -0
  17. package/dist/issues/SyntaxIssues.js.map +1 -0
  18. package/dist/issues/ValidationIssue.d.ts +15 -0
  19. package/dist/issues/ValidationIssue.d.ts.map +1 -0
  20. package/dist/issues/ValidationIssue.js +17 -0
  21. package/dist/issues/ValidationIssue.js.map +1 -0
  22. package/dist/issues/index.d.ts +5 -0
  23. package/dist/issues/index.d.ts.map +1 -0
  24. package/dist/issues/index.js +5 -0
  25. package/dist/issues/index.js.map +1 -0
  26. package/dist/languages/CompositeLionWebLanguageWrapper.d.ts +24 -0
  27. package/dist/languages/CompositeLionWebLanguageWrapper.d.ts.map +1 -0
  28. package/dist/languages/CompositeLionWebLanguageWrapper.js +56 -0
  29. package/dist/languages/CompositeLionWebLanguageWrapper.js.map +1 -0
  30. package/dist/languages/LanguageRegistry.d.ts +19 -0
  31. package/dist/languages/LanguageRegistry.d.ts.map +1 -0
  32. package/dist/languages/LanguageRegistry.js +37 -0
  33. package/dist/languages/LanguageRegistry.js.map +1 -0
  34. package/dist/languages/LanguageUtils.d.ts +35 -0
  35. package/dist/languages/LanguageUtils.d.ts.map +1 -0
  36. package/dist/languages/LanguageUtils.js +54 -0
  37. package/dist/languages/LanguageUtils.js.map +1 -0
  38. package/dist/languages/LionWebLanguageWrapper.d.ts +31 -0
  39. package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -0
  40. package/dist/languages/LionWebLanguageWrapper.js +69 -0
  41. package/dist/languages/LionWebLanguageWrapper.js.map +1 -0
  42. package/dist/languages/MetaPointerMap.d.ts +11 -0
  43. package/dist/languages/MetaPointerMap.d.ts.map +1 -0
  44. package/dist/languages/MetaPointerMap.js +39 -0
  45. package/dist/languages/MetaPointerMap.js.map +1 -0
  46. package/dist/languages/index.d.ts +3 -0
  47. package/dist/languages/index.d.ts.map +1 -0
  48. package/dist/languages/index.js +3 -0
  49. package/dist/languages/index.js.map +1 -0
  50. package/dist/runners/FileUtils.d.ts +6 -0
  51. package/dist/runners/FileUtils.d.ts.map +1 -0
  52. package/dist/runners/FileUtils.js +53 -0
  53. package/dist/runners/FileUtils.js.map +1 -0
  54. package/dist/runners/RunCheckFolder.d.ts +2 -0
  55. package/dist/runners/RunCheckFolder.d.ts.map +1 -0
  56. package/dist/runners/RunCheckFolder.js +6 -0
  57. package/dist/runners/RunCheckFolder.js.map +1 -0
  58. package/dist/runners/RunCheckFolderWithLanguage.d.ts +2 -0
  59. package/dist/runners/RunCheckFolderWithLanguage.d.ts.map +1 -0
  60. package/dist/runners/RunCheckFolderWithLanguage.js +40 -0
  61. package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -0
  62. package/dist/runners/RunCheckOneFile.d.ts +2 -0
  63. package/dist/runners/RunCheckOneFile.d.ts.map +1 -0
  64. package/dist/runners/RunCheckOneFile.js +6 -0
  65. package/dist/runners/RunCheckOneFile.js.map +1 -0
  66. package/dist/runners/RunCheckOneFileWithLanguage.d.ts +2 -0
  67. package/dist/runners/RunCheckOneFileWithLanguage.d.ts.map +1 -0
  68. package/dist/runners/RunCheckOneFileWithLanguage.js +31 -0
  69. package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -0
  70. package/dist/runners/RunLioncoreDiff.d.ts +2 -0
  71. package/dist/runners/RunLioncoreDiff.d.ts.map +1 -0
  72. package/dist/runners/RunLioncoreDiff.js +22 -0
  73. package/dist/runners/RunLioncoreDiff.js.map +1 -0
  74. package/dist/runners/Utils.d.ts +7 -0
  75. package/dist/runners/Utils.d.ts.map +1 -0
  76. package/dist/runners/Utils.js +48 -0
  77. package/dist/runners/Utils.js.map +1 -0
  78. package/dist/runners/index.d.ts +3 -0
  79. package/dist/runners/index.d.ts.map +1 -0
  80. package/dist/runners/index.js +3 -0
  81. package/dist/runners/index.js.map +1 -0
  82. package/dist/validators/LionWebChunkDefinitions.d.ts +9 -0
  83. package/dist/validators/LionWebChunkDefinitions.d.ts.map +1 -0
  84. package/{src/validators/LionWebChunkDefinitions.ts → dist/validators/LionWebChunkDefinitions.js} +10 -14
  85. package/dist/validators/LionWebChunkDefinitions.js.map +1 -0
  86. package/dist/validators/LionWebLanguageReferenceValidator.d.ts +21 -0
  87. package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -0
  88. package/{src/validators/LionWebLanguageReferenceValidator.ts → dist/validators/LionWebLanguageReferenceValidator.js} +73 -108
  89. package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -0
  90. package/dist/validators/LionWebLanguageValidator.d.ts +23 -0
  91. package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -0
  92. package/dist/validators/LionWebLanguageValidator.js +66 -0
  93. package/dist/validators/LionWebLanguageValidator.js.map +1 -0
  94. package/dist/validators/LionWebReferenceValidator.d.ts +43 -0
  95. package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -0
  96. package/{src/validators/LionWebReferenceValidator.ts → dist/validators/LionWebReferenceValidator.js} +84 -106
  97. package/dist/validators/LionWebReferenceValidator.js.map +1 -0
  98. package/dist/validators/LionWebSyntaxValidator.d.ts +9 -0
  99. package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -0
  100. package/dist/validators/LionWebSyntaxValidator.js +11 -0
  101. package/dist/validators/LionWebSyntaxValidator.js.map +1 -0
  102. package/dist/validators/LionWebValidator.d.ts +24 -0
  103. package/dist/validators/LionWebValidator.d.ts.map +1 -0
  104. package/{src/validators/LionWebValidator.ts → dist/validators/LionWebValidator.js} +29 -45
  105. package/dist/validators/LionWebValidator.js.map +1 -0
  106. package/dist/validators/ValidationFunctions.d.ts +60 -0
  107. package/dist/validators/ValidationFunctions.d.ts.map +1 -0
  108. package/{src/validators/ValidationFunctions.ts → dist/validators/ValidationFunctions.js} +34 -66
  109. package/dist/validators/ValidationFunctions.js.map +1 -0
  110. package/dist/validators/generic/SyntaxValidator.d.ts +37 -0
  111. package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -0
  112. package/dist/validators/generic/SyntaxValidator.js +152 -0
  113. package/dist/validators/generic/SyntaxValidator.js.map +1 -0
  114. package/dist/validators/generic/ValidationResult.d.ts +8 -0
  115. package/dist/validators/generic/ValidationResult.d.ts.map +1 -0
  116. package/dist/validators/generic/ValidationResult.js +15 -0
  117. package/dist/validators/generic/ValidationResult.js.map +1 -0
  118. package/dist/validators/generic/index.d.ts +4 -0
  119. package/dist/validators/generic/index.d.ts.map +1 -0
  120. package/dist/validators/generic/index.js +4 -0
  121. package/dist/validators/generic/index.js.map +1 -0
  122. package/dist/validators/generic/schema/DefinitionSchema.d.ts +23 -0
  123. package/dist/validators/generic/schema/DefinitionSchema.d.ts.map +1 -0
  124. package/dist/validators/generic/schema/DefinitionSchema.js +43 -0
  125. package/dist/validators/generic/schema/DefinitionSchema.js.map +1 -0
  126. package/dist/validators/generic/schema/ValidationTypes.d.ts +101 -0
  127. package/dist/validators/generic/schema/ValidationTypes.d.ts.map +1 -0
  128. package/dist/validators/generic/schema/ValidationTypes.js +43 -0
  129. package/dist/validators/generic/schema/ValidationTypes.js.map +1 -0
  130. package/dist/validators/generic/schema/index.d.ts +3 -0
  131. package/dist/validators/generic/schema/index.d.ts.map +1 -0
  132. package/dist/validators/generic/schema/index.js +3 -0
  133. package/dist/validators/generic/schema/index.js.map +1 -0
  134. package/dist/validators/index.d.ts +9 -0
  135. package/dist/validators/index.d.ts.map +1 -0
  136. package/dist/validators/index.js +9 -0
  137. package/dist/validators/index.js.map +1 -0
  138. package/package.json +4 -4
  139. package/src/index.ts +0 -4
  140. package/src/issues/LanguageIssues.ts +0 -147
  141. package/src/issues/ReferenceIssues.ts +0 -83
  142. package/src/issues/SyntaxIssues.ts +0 -84
  143. package/src/issues/ValidationIssue.ts +0 -29
  144. package/src/issues/index.ts +0 -4
  145. package/src/languages/CompositeLionWebLanguageWrapper.ts +0 -57
  146. package/src/languages/LanguageRegistry.ts +0 -44
  147. package/src/languages/LanguageUtils.ts +0 -63
  148. package/src/languages/LionWebLanguageWrapper.ts +0 -91
  149. package/src/languages/MetaPointerMap.ts +0 -41
  150. package/src/languages/index.ts +0 -2
  151. package/src/runners/FileUtils.ts +0 -59
  152. package/src/runners/RunCheckFolder.ts +0 -7
  153. package/src/runners/RunCheckFolderWithLanguage.ts +0 -45
  154. package/src/runners/RunCheckOneFile.ts +0 -7
  155. package/src/runners/RunCheckOneFileWithLanguage.ts +0 -35
  156. package/src/runners/RunLioncoreDiff.ts +0 -23
  157. package/src/runners/Utils.ts +0 -54
  158. package/src/runners/index.ts +0 -2
  159. package/src/validators/LionWebLanguageValidator.ts +0 -78
  160. package/src/validators/LionWebSyntaxValidator.ts +0 -14
  161. package/src/validators/generic/SyntaxValidator.ts +0 -216
  162. package/src/validators/generic/ValidationResult.ts +0 -17
  163. package/src/validators/generic/index.ts +0 -3
  164. package/src/validators/generic/schema/DefinitionSchema.ts +0 -52
  165. package/src/validators/generic/schema/ValidationTypes.ts +0 -134
  166. package/src/validators/generic/schema/index.ts +0 -2
  167. package/src/validators/index.ts +0 -8
  168. package/tsconfig.json +0 -8
  169. /package/{src → dist}/languages/LionCore-M3.json +0 -0
  170. /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
- * 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 { 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
- // eslint-disable-next-line @typescript-eslint/ban-types
24
- export function validateId<String>(value: String, result: ValidationResult, context: JsonContext): void {
25
- const idString: string = "" + value
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
- // eslint-disable-next-line @typescript-eslint/ban-types
39
- export function validateKey<String>(value: String, result: ValidationResult, context: JsonContext): void {
40
- const keyString: string = "" + value
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
- // eslint-disable-next-line @typescript-eslint/ban-types
54
- export function validateVersion<String>(value: String, result: ValidationResult, context: JsonContext): void {
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
- // eslint-disable-next-line @typescript-eslint/ban-types
69
- export function validateBoolean<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void {
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
- // eslint-disable-next-line @typescript-eslint/ban-types
91
- export function validateInteger<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void {
92
- const valueAsPrimitive = "" + value
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
- // eslint-disable-next-line @typescript-eslint/ban-types
107
- export function validateJSON<String>(value: String, result: ValidationResult, context: JsonContext, propDef?: PropertyDefinition): void {
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!.name!))
78
+ result.issue(new Syntax_PropertyNullIssue(context, propDef.name));
111
79
  }
112
80
  try {
113
- JSON.parse(valueAsPrimitive)
114
- } catch (e) {
115
- result.issue(new Language_PropertyValue_Issue(context, propDef ? propDef.name : "unknown", valueAsPrimitive, "JSON"))
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
- // eslint-disable-next-line @typescript-eslint/ban-types
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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACH,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC9B,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EAExB,MAAM,mBAAmB,CAAA;AAE1B;;;GAGG;AACH,MAAM,OAAO,eAAe;IAIxB,YAAY,gBAAkC,EAAE,MAAwB;QACpE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAY,EAAE,YAAoB;QACvC,MAAM,MAAM,GAAG,GAAwB,CAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QAEvD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,wDAAwD,YAAY,EAAE,CAAC,CAAA;QAC3F,CAAC;aAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC9F,CAAC;aAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACnF,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,wBAAwB,CAAC,gBAAwB,EAAE,OAAyB,EAAE,MAAyB,EAAE,WAAwB;QAC7H,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAM;QACV,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,MAAM,CAAC,CAAC,CAAA;YACjH,OAAM;QACV,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACnE,MAAM,SAAS,GAAG,WAAW,CAAC,QAAS,CAAA;YACvC,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAC9C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC/F,CAAC;gBACD,SAAQ;YACZ,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBACnD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;gBACxF,SAAQ;YACZ,CAAC;YACD,IAAI,WAAW,CAAC,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAClD,qDAAqD;gBACrD,SAAQ;YACZ,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrB,kCAAkC;gBAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;oBACvD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,aAAa,CAAC,CAAC,CAAA;oBACtH,OAAM;gBACV,CAAC;gBACD,gDAAgD;gBAC/C,aAAqC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC3D,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;oBAC9D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAChB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;oBACxG,CAAC;yBAAM,CAAC;wBACJ,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;4BAChC,IAAI,qBAAqB,CAAC,eAAe,CAAC,EAAE,CAAC;gCACzC,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;oCACpF,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;gCACjF,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACJ,6DAA6D;gCAC7D,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,IAAyB,EAAE,UAAU,CAAC,CAAA;gCACvG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;4BACjF,CAAC;wBACL,CAAC;6BAAM,CAAC;4BACJ,MAAM,IAAI,KAAK,CAAC,kBAAkB,WAAW,CAAC,IAAI,8CAA8C,CAAC,CAAA;wBACrG,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBACvD,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;oBAClH,OAAM;gBACV,CAAC;gBACD,sCAAsC;gBACtC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAI,qBAAqB,CAAC,eAAe,CAAC,EAAE,CAAC;wBACzC,wEAAwE;wBACxE,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;4BAC7F,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;wBAC1F,CAAC;oBACL,CAAC;yBAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC;wBAC7C,6DAA6D;wBAC7D,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,aAAkC,EAAE,UAAU,CAAC,CAAA;wBAChH,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;oBAC1F,CAAC;yBAAM,CAAC;wBACJ,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;oBAChG,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,KAAK,CACX,yBAAyB,WAAW,CAAC,IAAI,UAAU,WAAW,CAAC,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE,8CAA8C,CAClJ,CAAA;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3D,CAAC;IAED,sBAAsB,CAAC,YAAoB,EAAE,OAA4B,EAAE,MAAe,EAAE,WAAwB;QAChH,IAAI,OAAO,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,MAAM,CAAC,CAAC,CAAA;YAC1H,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,OAAO,CAAC,QAAS,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,GAAsB,EAAE,GAAqB,EAAE,OAAoB;QACpF,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;YAClF,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
@@ -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,4 @@
1
+ export * from "./schema/index.js";
2
+ export * from "./ValidationResult.js";
3
+ export * from "./SyntaxValidator.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from "./schema/index.js";
2
+ export * from "./ValidationResult.js";
3
+ export * from "./SyntaxValidator.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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"}