@lionweb/validation 0.6.13-beta.7 → 0.7.0-alpha.10

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 (221) hide show
  1. package/dist/index.d.ts +0 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +0 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/issues/LanguageIssues.d.ts +4 -4
  6. package/dist/issues/LanguageIssues.d.ts.map +1 -1
  7. package/dist/issues/LanguageIssues.js +1 -1
  8. package/dist/issues/LanguageIssues.js.map +1 -1
  9. package/dist/issues/ReferenceIssues.d.ts +6 -6
  10. package/dist/issues/ReferenceIssues.d.ts.map +1 -1
  11. package/dist/issues/ReferenceIssues.js +3 -3
  12. package/dist/issues/ReferenceIssues.js.map +1 -1
  13. package/dist/issues/SyntaxIssues.d.ts +1 -1
  14. package/dist/issues/SyntaxIssues.d.ts.map +1 -1
  15. package/dist/issues/ValidationIssue.d.ts +4 -4
  16. package/dist/issues/ValidationIssue.d.ts.map +1 -1
  17. package/dist/issues/ValidationIssue.js +1 -1
  18. package/dist/issues/ValidationIssue.js.map +1 -1
  19. package/dist/issues/index.d.ts +0 -1
  20. package/dist/issues/index.d.ts.map +1 -1
  21. package/dist/issues/index.js +0 -1
  22. package/dist/issues/index.js.map +1 -1
  23. package/dist/languages/CompositeLionWebLanguageWrapper.d.ts +1 -1
  24. package/dist/languages/CompositeLionWebLanguageWrapper.d.ts.map +1 -1
  25. package/dist/languages/LanguageRegistry.d.ts +1 -1
  26. package/dist/languages/LanguageRegistry.d.ts.map +1 -1
  27. package/dist/languages/LanguageUtils.d.ts +1 -1
  28. package/dist/languages/LanguageUtils.d.ts.map +1 -1
  29. package/dist/languages/LanguageUtils.js +5 -5
  30. package/dist/languages/LanguageUtils.js.map +1 -1
  31. package/dist/languages/LionWebLanguageWrapper.d.ts +3 -3
  32. package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -1
  33. package/dist/languages/LionWebLanguageWrapper.js +2 -2
  34. package/dist/languages/LionWebLanguageWrapper.js.map +1 -1
  35. package/dist/languages/MetaPointerMap.d.ts +2 -2
  36. package/dist/languages/MetaPointerMap.d.ts.map +1 -1
  37. package/dist/languages/MetaPointerMap.js +1 -1
  38. package/dist/languages/MetaPointerMap.js.map +1 -1
  39. package/dist/runners/FileUtils.d.ts.map +1 -1
  40. package/dist/runners/FileUtils.js +1 -1
  41. package/dist/runners/FileUtils.js.map +1 -1
  42. package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -1
  43. package/dist/runners/RunLioncoreDiff.js +1 -1
  44. package/dist/runners/RunLioncoreDiff.js.map +1 -1
  45. package/dist/runners/Utils.js +2 -2
  46. package/dist/runners/Utils.js.map +1 -1
  47. package/dist/validators/LionWebChunkDefinitions.d.ts +4 -4
  48. package/dist/validators/LionWebChunkDefinitions.d.ts.map +1 -1
  49. package/dist/validators/LionWebChunkDefinitions.js +82 -79
  50. package/dist/validators/LionWebChunkDefinitions.js.map +1 -1
  51. package/dist/validators/LionWebLanguageReferenceValidator.d.ts +2 -4
  52. package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
  53. package/dist/validators/LionWebLanguageReferenceValidator.js +2 -6
  54. package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
  55. package/dist/validators/LionWebLanguageValidator.d.ts +2 -3
  56. package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
  57. package/dist/validators/LionWebLanguageValidator.js +2 -4
  58. package/dist/validators/LionWebLanguageValidator.js.map +1 -1
  59. package/dist/validators/LionWebReferenceValidator.d.ts +3 -4
  60. package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
  61. package/dist/validators/LionWebReferenceValidator.js +2 -3
  62. package/dist/validators/LionWebReferenceValidator.js.map +1 -1
  63. package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -1
  64. package/dist/validators/LionWebSyntaxValidator.js +2 -2
  65. package/dist/validators/LionWebSyntaxValidator.js.map +1 -1
  66. package/dist/validators/LionWebValidator.d.ts +1 -1
  67. package/dist/validators/LionWebValidator.d.ts.map +1 -1
  68. package/dist/validators/LionWebValidator.js +3 -3
  69. package/dist/validators/LionWebValidator.js.map +1 -1
  70. package/dist/validators/ValidationFunctions.d.ts +6 -2
  71. package/dist/validators/ValidationFunctions.d.ts.map +1 -1
  72. package/dist/validators/ValidationFunctions.js +4 -8
  73. package/dist/validators/ValidationFunctions.js.map +1 -1
  74. package/dist/validators/generic/SyntaxValidator.d.ts +11 -11
  75. package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -1
  76. package/dist/validators/generic/SyntaxValidator.js +62 -64
  77. package/dist/validators/generic/SyntaxValidator.js.map +1 -1
  78. package/dist/validators/generic/index.d.ts +1 -2
  79. package/dist/validators/generic/index.d.ts.map +1 -1
  80. package/dist/validators/generic/index.js +1 -2
  81. package/dist/validators/generic/index.js.map +1 -1
  82. package/dist/validators/generic/schema/DefinitionSchema.d.ts +23 -0
  83. package/dist/validators/generic/schema/DefinitionSchema.d.ts.map +1 -0
  84. package/dist/validators/generic/schema/DefinitionSchema.js +43 -0
  85. package/dist/validators/generic/schema/DefinitionSchema.js.map +1 -0
  86. package/dist/validators/generic/schema/ValidationTypes.d.ts +101 -0
  87. package/dist/validators/generic/schema/ValidationTypes.d.ts.map +1 -0
  88. package/dist/validators/generic/schema/ValidationTypes.js +43 -0
  89. package/dist/validators/generic/schema/ValidationTypes.js.map +1 -0
  90. package/dist/validators/generic/schema/index.d.ts +3 -0
  91. package/dist/validators/generic/schema/index.d.ts.map +1 -0
  92. package/dist/validators/generic/schema/index.js +3 -0
  93. package/dist/validators/generic/schema/index.js.map +1 -0
  94. package/dist/validators/index.d.ts +0 -1
  95. package/dist/validators/index.d.ts.map +1 -1
  96. package/dist/validators/index.js +0 -1
  97. package/dist/validators/index.js.map +1 -1
  98. package/package.json +10 -4
  99. package/src/index.ts +0 -3
  100. package/src/issues/LanguageIssues.ts +12 -14
  101. package/src/issues/ReferenceIssues.ts +9 -9
  102. package/src/issues/SyntaxIssues.ts +5 -5
  103. package/src/issues/ValidationIssue.ts +10 -7
  104. package/src/issues/index.ts +0 -1
  105. package/src/languages/CompositeLionWebLanguageWrapper.ts +1 -1
  106. package/src/languages/LanguageRegistry.ts +1 -1
  107. package/src/languages/LanguageUtils.ts +6 -6
  108. package/src/languages/LionWebLanguageWrapper.ts +5 -9
  109. package/src/languages/MetaPointerMap.ts +7 -6
  110. package/src/runners/FileUtils.ts +1 -1
  111. package/src/runners/RunCheckFolderWithLanguage.ts +1 -1
  112. package/src/runners/RunLioncoreDiff.ts +2 -2
  113. package/src/runners/Utils.ts +2 -2
  114. package/src/validators/LionWebChunkDefinitions.ts +83 -85
  115. package/src/validators/LionWebLanguageReferenceValidator.ts +18 -20
  116. package/src/validators/LionWebLanguageValidator.ts +2 -4
  117. package/src/validators/LionWebReferenceValidator.ts +6 -14
  118. package/src/validators/LionWebSyntaxValidator.ts +2 -2
  119. package/src/validators/LionWebValidator.ts +4 -4
  120. package/src/validators/ValidationFunctions.ts +6 -6
  121. package/src/validators/generic/SyntaxValidator.ts +70 -69
  122. package/src/validators/generic/index.ts +1 -2
  123. package/src/validators/generic/schema/DefinitionSchema.ts +52 -0
  124. package/src/validators/generic/schema/ValidationTypes.ts +134 -0
  125. package/src/validators/generic/schema/index.ts +2 -0
  126. package/src/validators/index.ts +0 -1
  127. package/dist/diff/DiffResult.d.ts +0 -9
  128. package/dist/diff/DiffResult.d.ts.map +0 -1
  129. package/dist/diff/DiffResult.js +0 -18
  130. package/dist/diff/DiffResult.js.map +0 -1
  131. package/dist/diff/LionWebJsonDiff.d.ts +0 -25
  132. package/dist/diff/LionWebJsonDiff.d.ts.map +0 -1
  133. package/dist/diff/LionWebJsonDiff.js +0 -249
  134. package/dist/diff/LionWebJsonDiff.js.map +0 -1
  135. package/dist/diff/changes/Change.d.ts +0 -34
  136. package/dist/diff/changes/Change.d.ts.map +0 -1
  137. package/dist/diff/changes/Change.js +0 -38
  138. package/dist/diff/changes/Change.js.map +0 -1
  139. package/dist/diff/changes/ChunkChange.d.ts +0 -43
  140. package/dist/diff/changes/ChunkChange.d.ts.map +0 -1
  141. package/dist/diff/changes/ChunkChange.js +0 -57
  142. package/dist/diff/changes/ChunkChange.js.map +0 -1
  143. package/dist/diff/changes/ContainmentChange.d.ts +0 -25
  144. package/dist/diff/changes/ContainmentChange.d.ts.map +0 -1
  145. package/dist/diff/changes/ContainmentChange.js +0 -34
  146. package/dist/diff/changes/ContainmentChange.js.map +0 -1
  147. package/dist/diff/changes/NodeChange.d.ts +0 -41
  148. package/dist/diff/changes/NodeChange.d.ts.map +0 -1
  149. package/dist/diff/changes/NodeChange.js +0 -54
  150. package/dist/diff/changes/NodeChange.js.map +0 -1
  151. package/dist/diff/changes/PropertyChange.d.ts +0 -24
  152. package/dist/diff/changes/PropertyChange.d.ts.map +0 -1
  153. package/dist/diff/changes/PropertyChange.js +0 -29
  154. package/dist/diff/changes/PropertyChange.js.map +0 -1
  155. package/dist/diff/changes/ReferenceChange.d.ts +0 -25
  156. package/dist/diff/changes/ReferenceChange.d.ts.map +0 -1
  157. package/dist/diff/changes/ReferenceChange.js +0 -34
  158. package/dist/diff/changes/ReferenceChange.js.map +0 -1
  159. package/dist/diff/changes/index.d.ts +0 -7
  160. package/dist/diff/changes/index.d.ts.map +0 -1
  161. package/dist/diff/changes/index.js +0 -7
  162. package/dist/diff/changes/index.js.map +0 -1
  163. package/dist/diff/index.d.ts +0 -4
  164. package/dist/diff/index.d.ts.map +0 -1
  165. package/dist/diff/index.js +0 -4
  166. package/dist/diff/index.js.map +0 -1
  167. package/dist/json/ChunkUtils.d.ts +0 -26
  168. package/dist/json/ChunkUtils.d.ts.map +0 -1
  169. package/dist/json/ChunkUtils.js +0 -46
  170. package/dist/json/ChunkUtils.js.map +0 -1
  171. package/dist/json/JsonContext.d.ts +0 -11
  172. package/dist/json/JsonContext.d.ts.map +0 -1
  173. package/dist/json/JsonContext.js +0 -25
  174. package/dist/json/JsonContext.js.map +0 -1
  175. package/dist/json/LionWebJson.d.ts +0 -50
  176. package/dist/json/LionWebJson.d.ts.map +0 -1
  177. package/dist/json/LionWebJson.js +0 -27
  178. package/dist/json/LionWebJson.js.map +0 -1
  179. package/dist/json/LionWebJsonChunkWrapper.d.ts +0 -39
  180. package/dist/json/LionWebJsonChunkWrapper.d.ts.map +0 -1
  181. package/dist/json/LionWebJsonChunkWrapper.js +0 -119
  182. package/dist/json/LionWebJsonChunkWrapper.js.map +0 -1
  183. package/dist/json/M3definitions.d.ts +0 -176
  184. package/dist/json/M3definitions.d.ts.map +0 -1
  185. package/dist/json/M3definitions.js +0 -174
  186. package/dist/json/M3definitions.js.map +0 -1
  187. package/dist/json/NodeUtils.d.ts +0 -23
  188. package/dist/json/NodeUtils.d.ts.map +0 -1
  189. package/dist/json/NodeUtils.js +0 -57
  190. package/dist/json/NodeUtils.js.map +0 -1
  191. package/dist/json/index.d.ts +0 -7
  192. package/dist/json/index.d.ts.map +0 -1
  193. package/dist/json/index.js +0 -7
  194. package/dist/json/index.js.map +0 -1
  195. package/dist/util/graphs.d.ts +0 -18
  196. package/dist/util/graphs.d.ts.map +0 -1
  197. package/dist/util/graphs.js +0 -27
  198. package/dist/util/graphs.js.map +0 -1
  199. package/dist/validators/generic/ValidationTypes.d.ts +0 -44
  200. package/dist/validators/generic/ValidationTypes.d.ts.map +0 -1
  201. package/dist/validators/generic/ValidationTypes.js +0 -27
  202. package/dist/validators/generic/ValidationTypes.js.map +0 -1
  203. package/src/diff/DiffResult.ts +0 -21
  204. package/src/diff/LionWebJsonDiff.ts +0 -309
  205. package/src/diff/changes/Change.ts +0 -76
  206. package/src/diff/changes/ChunkChange.ts +0 -68
  207. package/src/diff/changes/ContainmentChange.ts +0 -32
  208. package/src/diff/changes/NodeChange.ts +0 -63
  209. package/src/diff/changes/PropertyChange.ts +0 -31
  210. package/src/diff/changes/ReferenceChange.ts +0 -34
  211. package/src/diff/changes/index.ts +0 -6
  212. package/src/diff/index.ts +0 -3
  213. package/src/json/ChunkUtils.ts +0 -49
  214. package/src/json/JsonContext.ts +0 -31
  215. package/src/json/LionWebJson.ts +0 -80
  216. package/src/json/LionWebJsonChunkWrapper.ts +0 -136
  217. package/src/json/M3definitions.ts +0 -177
  218. package/src/json/NodeUtils.ts +0 -75
  219. package/src/json/index.ts +0 -6
  220. package/src/util/graphs.ts +0 -36
  221. package/src/validators/generic/ValidationTypes.ts +0 -67
@@ -1,17 +1,17 @@
1
- import { JsonContext } from "../../json/JsonContext.js";
1
+ import { JsonContext } from "@lionweb/json-utils";
2
2
  import { ValidationResult } from "./ValidationResult.js";
3
- import { PropertyDefinition, UnknownObjectType } from "./ValidationTypes.js";
3
+ import { ObjectDefinition, PrimitiveDefinition, DefinitionSchema, UnknownObjectType } from "./schema/index.js";
4
4
  /**
5
- * Syntax Validator can check whether objects are structurally conforming to the
6
- * definitions given in `expectedTypes`.
5
+ * Syntax Validator checks whether objects are structurally conforming to the
6
+ * definitions given in `schema`.
7
7
  */
8
8
  export declare class SyntaxValidator {
9
9
  validationResult: ValidationResult;
10
- expectedTypes: Map<string, PropertyDefinition[]>;
11
- constructor(validationResult: ValidationResult, expectedTypes: Map<string, PropertyDefinition[]>);
10
+ schema: DefinitionSchema;
11
+ constructor(validationResult: ValidationResult, schema: DefinitionSchema);
12
12
  /**
13
13
  * Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
14
- * All errors found will be pushed into the `errors` array, if its length is not 0, the check has failed.
14
+ * All errors found will be added to the `validationResult` object.
15
15
  * @param obj The object to validate.
16
16
  * @param expectedType The expected type of the object.
17
17
  */
@@ -19,19 +19,19 @@ export declare class SyntaxValidator {
19
19
  /**
20
20
  * Validate whether `object` is structured conform the properties in `propertyDef`
21
21
  * @param originalProperty The property of which `object` it the value
22
- * @param propertyDef The property definitions that are being validated
22
+ * @param typeDef The property definitions that are being validated
23
23
  * @param object The object being validated
24
24
  * @param jsonContext The location in the JSON
25
25
  * @private
26
26
  */
27
- private validateObjectProperties;
28
- validatePrimitiveValue(propDef: PropertyDefinition, object: unknown, jsonContext: JsonContext): boolean;
27
+ validateObjectProperties(originalProperty: string, typeDef: ObjectDefinition, object: UnknownObjectType, jsonContext: JsonContext): void;
28
+ validatePrimitiveValue(propertyName: string, propDef: PrimitiveDefinition, object: unknown, jsonContext: JsonContext): boolean;
29
29
  /**
30
30
  * Check whether there are extra properties that should not be there.
31
31
  * @param obj Object to be validated
32
32
  * @param properties The names of the expected properties
33
33
  * @param context Location in JSON
34
34
  */
35
- checkStrayProperties(obj: UnknownObjectType, properties: string[], context: JsonContext): void;
35
+ checkStrayProperties(obj: UnknownObjectType, def: ObjectDefinition, context: JsonContext): void;
36
36
  }
37
37
  //# sourceMappingURL=SyntaxValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyntaxValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE5E;;;GAGG;AACH,qBAAa,eAAe;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAA;gBAEpC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAKhG;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;IAa3C;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IA+EhC,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAavG;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW;CAa1F"}
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,134 +1,136 @@
1
+ import { JsonContext } from "@lionweb/json-utils";
1
2
  import { Syntax_ArrayContainsNull_Issue, Syntax_PropertyMissingIssue, Syntax_PropertyNullIssue, Syntax_PropertyTypeIssue, Syntax_PropertyUnknownIssue } from "../../issues/index.js";
2
- import { JsonContext } from "../../json/JsonContext.js";
3
+ import { isObjectDefinition, isPrimitiveDefinition } from "./schema/index.js";
3
4
  /**
4
- * Syntax Validator can check whether objects are structurally conforming to the
5
- * definitions given in `expectedTypes`.
5
+ * Syntax Validator checks whether objects are structurally conforming to the
6
+ * definitions given in `schema`.
6
7
  */
7
8
  export class SyntaxValidator {
8
- constructor(validationResult, expectedTypes) {
9
+ constructor(validationResult, schema) {
9
10
  this.validationResult = validationResult;
10
- this.expectedTypes = expectedTypes;
11
+ this.schema = schema;
11
12
  }
12
13
  /**
13
14
  * Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
14
- * All errors found will be pushed into the `errors` array, if its length is not 0, the check has failed.
15
+ * All errors found will be added to the `validationResult` object.
15
16
  * @param obj The object to validate.
16
17
  * @param expectedType The expected type of the object.
17
18
  */
18
19
  validate(obj, expectedType) {
19
- if (typeof obj !== "object") {
20
- throw new Error(`SyntaxValidator.validate: 'obj' is not an object, expected a '${expectedType}'`);
21
- }
22
20
  const object = obj;
23
- const defs = this.expectedTypes.get(expectedType);
24
- if (defs === undefined) {
21
+ const typeDef = this.schema.getDefinition(expectedType);
22
+ if (typeDef === undefined) {
25
23
  throw new Error(`SyntaxValidator.validate: cannot find definition for ${expectedType}`);
26
24
  }
27
- else {
28
- this.validateObjectProperties(expectedType, defs, object, new JsonContext(null, ["$"]));
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, ["$"]));
29
30
  }
30
31
  }
31
32
  /**
32
33
  * Validate whether `object` is structured conform the properties in `propertyDef`
33
34
  * @param originalProperty The property of which `object` it the value
34
- * @param propertyDef The property definitions that are being validated
35
+ * @param typeDef The property definitions that are being validated
35
36
  * @param object The object being validated
36
37
  * @param jsonContext The location in the JSON
37
38
  * @private
38
39
  */
39
- validateObjectProperties(originalProperty, propertyDef, object, jsonContext) {
40
- if (propertyDef.length === 0) {
40
+ validateObjectProperties(originalProperty, typeDef, object, jsonContext) {
41
+ if (typeDef === null || typeDef === undefined) {
41
42
  return;
42
43
  }
43
- if ((typeof object) !== "object") {
44
+ if (typeof object !== "object") {
44
45
  this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, originalProperty, "object", typeof object));
45
46
  return;
46
47
  }
47
- for (const pdef of propertyDef) {
48
- const expectedPropertyDefs = this.expectedTypes.get(pdef.expectedType);
49
- const validator = pdef.validate;
50
- const propertyValue = object[pdef.property];
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];
51
52
  if (propertyValue === undefined) {
52
- this.validationResult.issue(new Syntax_PropertyMissingIssue(jsonContext, pdef.property + `{ ${typeof object}}{${originalProperty}}`));
53
+ if (!propertyDef.isOptional) {
54
+ this.validationResult.issue(new Syntax_PropertyMissingIssue(jsonContext, propertyDef.name));
55
+ }
53
56
  continue;
54
57
  }
55
- if (!pdef.mayBeNull && propertyValue === null) {
56
- this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, pdef.property));
58
+ if (!propertyDef.mayBeNull && propertyValue === null) {
59
+ this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propertyDef.name));
57
60
  continue;
58
61
  }
59
- if (pdef.mayBeNull && propertyValue === null) {
62
+ if (propertyDef.mayBeNull && propertyValue === null) {
60
63
  // Ok, stop checking, continue with next property def
61
64
  continue;
62
65
  }
63
- if (pdef.isList) {
66
+ if (propertyDef.isList) {
64
67
  // Check whether value is an array
65
68
  if (!Array.isArray(propertyValue)) {
66
- const newContext = jsonContext.concat(pdef.property);
67
- this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, pdef.property, "array", typeof propertyValue));
69
+ const newContext = jsonContext.concat(propertyDef.name);
70
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, "array", typeof propertyValue));
68
71
  return;
69
72
  }
70
73
  // If an array, validate every item in the array
71
74
  propertyValue.forEach((item, index) => {
72
- const newContext = jsonContext.concat(pdef.property, index);
75
+ const newContext = jsonContext.concat(propertyDef.name, index);
73
76
  if (item === null) {
74
- this.validationResult.issue(new Syntax_ArrayContainsNull_Issue(newContext, pdef.property, index));
77
+ this.validationResult.issue(new Syntax_ArrayContainsNull_Issue(newContext, propertyDef.name, index));
75
78
  }
76
79
  else {
77
- if (expectedPropertyDefs !== undefined) {
78
- if (expectedPropertyDefs.length === 0) {
79
- // propertyValue should be a primitive as it has no property definitions
80
- if (this.validatePrimitiveValue(pdef, item, jsonContext)) {
81
- validator.apply(null, [item, this.validationResult, newContext, pdef]);
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]);
82
84
  }
83
85
  }
84
86
  else {
85
87
  // propertyValue should be an object, validate its properties
86
- this.validateObjectProperties(pdef.property, expectedPropertyDefs, item, newContext);
87
- validator.apply(null, [item, this.validationResult, newContext, pdef]);
88
+ this.validateObjectProperties(propertyDef.name, expectedTypeDef, item, newContext);
89
+ validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
88
90
  }
89
91
  }
90
92
  else {
91
- throw new Error(`Expected type '${pdef.expectedType} has neither property defs, nor a validator.`);
93
+ throw new Error(`Expected type '${propertyDef.type} has neither property defs, nor a validator.`);
92
94
  }
93
95
  }
94
96
  });
95
97
  }
96
98
  else {
97
- const newContext = jsonContext.concat(pdef.property);
99
+ const newContext = jsonContext.concat(propertyDef.name);
98
100
  if (Array.isArray(propertyValue)) {
99
- this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, pdef.property, pdef.expectedType, "array"));
101
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, propertyDef.type, "array"));
100
102
  return;
101
103
  }
102
104
  // Single valued property, validate it
103
- if (expectedPropertyDefs !== undefined) {
104
- if (expectedPropertyDefs.length === 0) {
105
+ if (expectedTypeDef !== undefined) {
106
+ if (isPrimitiveDefinition(expectedTypeDef)) {
105
107
  // propertyValue should be a primitive as it has no property definitions
106
- if (this.validatePrimitiveValue(pdef, propertyValue, jsonContext)) {
107
- validator.apply(null, [propertyValue, this.validationResult, newContext, pdef]);
108
+ if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, propertyValue, jsonContext)) {
109
+ validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
108
110
  }
109
111
  }
110
- else {
112
+ else if (isObjectDefinition(expectedTypeDef)) {
111
113
  // propertyValue should be an object, validate its properties
112
- this.validateObjectProperties(pdef.property, expectedPropertyDefs, propertyValue, newContext);
113
- validator.apply(null, [propertyValue, this.validationResult, newContext, pdef]);
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");
114
119
  }
115
120
  }
116
121
  else {
117
- throw new Error(`Expected single type '${pdef.expectedType}' for '${pdef.property}' at ${newContext.toString()} has neither property defs, nor a validator.`);
122
+ throw new Error(`Expected single type '${propertyDef.type}' for '${propertyDef.name}' at ${newContext.toString()} has neither property defs, nor a validator.`);
118
123
  }
119
124
  }
120
125
  }
121
- this.checkStrayProperties(object, propertyDef.map(pdef => pdef.property), jsonContext);
126
+ this.checkStrayProperties(object, typeDef, jsonContext);
122
127
  }
123
- validatePrimitiveValue(propDef, object, jsonContext) {
124
- if (!propDef.mayBeNull && (object === null || object === undefined)) {
125
- this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propDef.property));
126
- return false;
127
- }
128
- if (typeof object !== propDef.expectedType) {
129
- this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, propDef.property, propDef.expectedType, typeof object));
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));
130
131
  return false;
131
132
  }
133
+ propDef.validate(object, this.validationResult, jsonContext);
132
134
  return true;
133
135
  }
134
136
  /**
@@ -137,18 +139,14 @@ export class SyntaxValidator {
137
139
  * @param properties The names of the expected properties
138
140
  * @param context Location in JSON
139
141
  */
140
- checkStrayProperties(obj, properties, context) {
142
+ checkStrayProperties(obj, def, context) {
141
143
  const own = Object.getOwnPropertyNames(obj);
142
- own.forEach((ownProp) => {
143
- if (!properties.includes(ownProp)) {
144
+ const defined = def.properties.map(pdef => pdef.name);
145
+ own.forEach(ownProp => {
146
+ if (!defined.includes(ownProp)) {
144
147
  this.validationResult.issue(new Syntax_PropertyUnknownIssue(context, ownProp));
145
148
  }
146
149
  });
147
- properties.forEach((prop) => {
148
- if (!own.includes(prop)) {
149
- this.validationResult.issue(new Syntax_PropertyMissingIssue(context, prop));
150
- }
151
- });
152
150
  }
153
151
  }
154
152
  //# sourceMappingURL=SyntaxValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyntaxValidator.js","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyntaxValidator.js","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- export * from "./ValidationTypes.js";
1
+ export * from "./schema/index.js";
2
2
  export * from "./ValidationResult.js";
3
- export * from "../ValidationFunctions.js";
4
3
  export * from "./SyntaxValidator.js";
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA"}
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"}
@@ -1,5 +1,4 @@
1
- export * from "./ValidationTypes.js";
1
+ export * from "./schema/index.js";
2
2
  export * from "./ValidationResult.js";
3
- export * from "../ValidationFunctions.js";
4
3
  export * from "./SyntaxValidator.js";
5
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validators/generic/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA"}
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"}
@@ -0,0 +1,101 @@
1
+ import { JsonContext } from "@lionweb/json-utils";
2
+ import { ValidationResult } from "../ValidationResult.js";
3
+ export type UnknownObjectType = {
4
+ [key: string]: unknown;
5
+ };
6
+ /**
7
+ * Definition of a property, used by the SyntaxValidator to validate objects.
8
+ *
9
+ * **Note** that some of the properties are defined as optional.
10
+ * They should not be empty ever!! But being optional allows to leave them out in the `PropertyDef` function.
11
+ * The `PropertyDef` function sets default values for all optional fields.
12
+ * You should **always** use the `PropertyDef` function to create a `PropertyDefinition`.
13
+ */
14
+ export type PropertyDefinition = {
15
+ /**
16
+ * The property name
17
+ */
18
+ name: string;
19
+ /**
20
+ * The expected type of the property value
21
+ */
22
+ type: string;
23
+ /**
24
+ * Whether the property value is allowed to be null
25
+ */
26
+ mayBeNull?: boolean;
27
+ /**
28
+ * IS this a list property?
29
+ */
30
+ isList?: boolean;
31
+ /**
32
+ * Is this property optional?
33
+ */
34
+ isOptional?: boolean;
35
+ /**
36
+ * Additional validation function
37
+ */
38
+ validate?: ValidatorFunction;
39
+ };
40
+ export type ValidatorFunction = <T>(obj: T, result: ValidationResult, ctx: JsonContext, pdef?: PropertyDefinition) => void;
41
+ export declare function emptyValidation<T>(object: T, result: ValidationResult, ctx: JsonContext, pdef?: PropertyDefinition): void;
42
+ export declare const MAY_BE_NULL = true;
43
+ /**
44
+ * Definition of a primitive type.
45
+ */
46
+ export type PrimitiveDefinition = {
47
+ name: string;
48
+ /**
49
+ * The expected type of the property value
50
+ */
51
+ primitiveType: string;
52
+ /**
53
+ * Additional validation function
54
+ */
55
+ validate?: ValidatorFunction;
56
+ };
57
+ /**
58
+ * Definition of an object type.
59
+ */
60
+ export type ObjectDefinition = {
61
+ name: string;
62
+ properties: PropertyDefinition[];
63
+ /**
64
+ * The name of the tagged union that this type belongs to
65
+ */
66
+ taggedUnionType?: string;
67
+ };
68
+ export type Definition = ObjectDefinition | PrimitiveDefinition;
69
+ /**
70
+ * Defionition of tagged union.
71
+ */
72
+ export type TaggedUnionDefinition = {
73
+ /**
74
+ * The tagged union "super" type
75
+ */
76
+ unionType: string;
77
+ /**
78
+ * The primitive property type that is the discriminator or tag
79
+ */
80
+ unionDiscriminator: string;
81
+ /**
82
+ * The name of the property in an object that contains the discriminator value
83
+ */
84
+ unionProperty: string;
85
+ };
86
+ /**
87
+ * Easy way to create a PrimitiveDefinition typed object with default values.
88
+ * @param propDef
89
+ * @constructor
90
+ */
91
+ export declare function PrimitiveDef(propDef: PrimitiveDefinition): PrimitiveDefinition;
92
+ /**
93
+ * Easy way to create a PropertyDefinition typed object with default values.
94
+ * @param propDef
95
+ * @constructor
96
+ */
97
+ export declare function PropertyDef(propDef: PropertyDefinition): PropertyDefinition;
98
+ export declare function isObjectDefinition(def: Definition | undefined): def is ObjectDefinition;
99
+ export declare function isPrimitiveDefinition(def: Definition | undefined): def is PrimitiveDefinition;
100
+ export declare function isJavaScriptPrimitive(type: string): boolean;
101
+ //# sourceMappingURL=ValidationTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationTypes.d.ts","sourceRoot":"","sources":["../../../../src/validators/generic/schema/ValidationTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAA;AAE1H,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAG;AAG7H,eAAO,MAAM,WAAW,OAAO,CAAA;AAE/B;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,mBAAmB,CAAA;AAC/D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;CACxB,CAAA;AACD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAO9E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAU3E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG,GAAG,IAAI,gBAAgB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG,GAAG,IAAI,mBAAmB,CAE7F;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D"}
@@ -0,0 +1,43 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
+ export function emptyValidation(object, result, ctx, pdef) { }
3
+ // Make boolean argument more readable.
4
+ export const MAY_BE_NULL = true;
5
+ /**
6
+ * Easy way to create a PrimitiveDefinition typed object with default values.
7
+ * @param propDef
8
+ * @constructor
9
+ */
10
+ export function PrimitiveDef(propDef) {
11
+ const { name, primitiveType, validate = emptyValidation } = propDef;
12
+ return {
13
+ name: name,
14
+ primitiveType: primitiveType,
15
+ validate: validate
16
+ };
17
+ }
18
+ /**
19
+ * Easy way to create a PropertyDefinition typed object with default values.
20
+ * @param propDef
21
+ * @constructor
22
+ */
23
+ export function PropertyDef(propDef) {
24
+ const { name, type, mayBeNull = false, isList = false, isOptional = false, validate = emptyValidation } = propDef;
25
+ return {
26
+ name: name,
27
+ type: type,
28
+ isList: isList,
29
+ mayBeNull: mayBeNull,
30
+ isOptional: isOptional,
31
+ validate: validate
32
+ };
33
+ }
34
+ export function isObjectDefinition(def) {
35
+ return (def !== undefined) && Array.isArray(def?.properties);
36
+ }
37
+ export function isPrimitiveDefinition(def) {
38
+ return (def !== undefined) && def?.primitiveType !== undefined;
39
+ }
40
+ export function isJavaScriptPrimitive(type) {
41
+ return ["number", "string", "boolean"].includes(type);
42
+ }
43
+ //# sourceMappingURL=ValidationTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationTypes.js","sourceRoot":"","sources":["../../../../src/validators/generic/schema/ValidationTypes.ts"],"names":[],"mappings":"AAyCA,6DAA6D;AAC7D,MAAM,UAAU,eAAe,CAAI,MAAS,EAAE,MAAwB,EAAE,GAAgB,EAAE,IAAyB,IAAS,CAAC;AAE7H,uCAAuC;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAA;AA+C/B;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACrD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,GAAG,eAAe,EAAE,GAAG,OAAO,CAAA;IACnE,OAAO;QACH,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,aAAa;QAC5B,QAAQ,EAAE,QAAQ;KACrB,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,GAAG,eAAe,EAAE,GAAG,OAAO,CAAA;IACjH,OAAO;QACH,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,QAAQ;KACrB,CAAA;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAA2B;IAC1D,OAAQ,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,GAAwB,EAAE,UAAU,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAA2B;IAC7D,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,IAAK,GAA2B,EAAE,aAAa,KAAK,SAAS,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAC9C,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACzD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./ValidationTypes.js";
2
+ export * from "./DefinitionSchema.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validators/generic/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./ValidationTypes.js";
2
+ export * from "./DefinitionSchema.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validators/generic/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA"}
@@ -1,5 +1,4 @@
1
1
  export * from "./generic/index.js";
2
- export * from "./generic/ValidationResult.js";
3
2
  export * from "./LionWebSyntaxValidator.js";
4
3
  export * from "./LionWebReferenceValidator.js";
5
4
  export * from "./LionWebLanguageValidator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
@@ -1,5 +1,4 @@
1
1
  export * from "./generic/index.js";
2
- export * from "./generic/ValidationResult.js";
3
2
  export * from "./LionWebSyntaxValidator.js";
4
3
  export * from "./LionWebReferenceValidator.js";
5
4
  export * from "./LionWebLanguageValidator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}