@lionweb/validation 0.7.0-beta.2 → 0.7.0-beta.21

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 (64) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/issues/ValidationIssue.d.ts +3 -3
  3. package/dist/issues/ValidationIssue.d.ts.map +1 -1
  4. package/dist/issues/ValidationIssue.js +1 -1
  5. package/dist/issues/ValidationIssue.js.map +1 -1
  6. package/dist/languages/LanguageUtils.d.ts.map +1 -1
  7. package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -1
  8. package/dist/runners/Utils.js +2 -2
  9. package/dist/runners/Utils.js.map +1 -1
  10. package/dist/validators/LionWebChunkDefinitions.d.ts +4 -4
  11. package/dist/validators/LionWebChunkDefinitions.d.ts.map +1 -1
  12. package/dist/validators/LionWebChunkDefinitions.js +80 -90
  13. package/dist/validators/LionWebChunkDefinitions.js.map +1 -1
  14. package/dist/validators/LionWebLanguageReferenceValidator.d.ts +1 -1
  15. package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
  16. package/dist/validators/LionWebLanguageReferenceValidator.js +3 -3
  17. package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
  18. package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
  19. package/dist/validators/LionWebLanguageValidator.js +2 -1
  20. package/dist/validators/LionWebLanguageValidator.js.map +1 -1
  21. package/dist/validators/LionWebSyntaxValidator.js +2 -2
  22. package/dist/validators/LionWebValidator.js +1 -1
  23. package/dist/validators/LionWebValidator.js.map +1 -1
  24. package/dist/validators/ValidationFunctions.d.ts +1 -1
  25. package/dist/validators/ValidationFunctions.d.ts.map +1 -1
  26. package/dist/validators/ValidationFunctions.js +7 -13
  27. package/dist/validators/ValidationFunctions.js.map +1 -1
  28. package/dist/validators/generic/SyntaxValidator.d.ts +7 -7
  29. package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -1
  30. package/dist/validators/generic/SyntaxValidator.js +28 -33
  31. package/dist/validators/generic/SyntaxValidator.js.map +1 -1
  32. package/dist/validators/generic/index.d.ts +1 -1
  33. package/dist/validators/generic/index.d.ts.map +1 -1
  34. package/dist/validators/generic/index.js +1 -1
  35. package/dist/validators/generic/index.js.map +1 -1
  36. package/dist/validators/generic/schema/DefinitionSchema.d.ts +23 -0
  37. package/dist/validators/generic/schema/DefinitionSchema.d.ts.map +1 -0
  38. package/dist/validators/generic/schema/DefinitionSchema.js +43 -0
  39. package/dist/validators/generic/schema/DefinitionSchema.js.map +1 -0
  40. package/dist/validators/generic/{ValidationTypes.d.ts → schema/ValidationTypes.d.ts} +45 -12
  41. package/dist/validators/generic/schema/ValidationTypes.d.ts.map +1 -0
  42. package/dist/validators/generic/{ValidationTypes.js → schema/ValidationTypes.js} +18 -21
  43. package/dist/validators/generic/schema/ValidationTypes.js.map +1 -0
  44. package/dist/validators/generic/schema/index.d.ts +3 -0
  45. package/dist/validators/generic/schema/index.d.ts.map +1 -0
  46. package/dist/validators/generic/schema/index.js +3 -0
  47. package/dist/validators/generic/schema/index.js.map +1 -0
  48. package/package.json +37 -37
  49. package/src/issues/ValidationIssue.ts +4 -4
  50. package/src/runners/Utils.ts +2 -2
  51. package/src/validators/LionWebChunkDefinitions.ts +80 -90
  52. package/src/validators/LionWebLanguageReferenceValidator.ts +3 -3
  53. package/src/validators/LionWebLanguageValidator.ts +2 -1
  54. package/src/validators/LionWebSyntaxValidator.ts +2 -2
  55. package/src/validators/LionWebValidator.ts +1 -1
  56. package/src/validators/ValidationFunctions.ts +9 -15
  57. package/src/validators/generic/SyntaxValidator.ts +81 -87
  58. package/src/validators/generic/index.ts +1 -1
  59. package/src/validators/generic/schema/DefinitionSchema.ts +52 -0
  60. package/src/validators/generic/{ValidationTypes.ts → schema/ValidationTypes.ts} +65 -35
  61. package/src/validators/generic/schema/index.ts +2 -0
  62. package/dist/validators/generic/ValidationTypes.d.ts.map +0 -1
  63. package/dist/validators/generic/ValidationTypes.js.map +0 -1
  64. package/tsconfig.json +0 -8
@@ -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,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB;IAC5F,MAAM,QAAQ,GAAW,EAAE,GAAG,KAAK,CAAA;IACnC,MAAM,MAAM,GAAG,+BAA+B,CAAA;IAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9D,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,wDAAwD;AACxD,MAAM,UAAU,WAAW,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB;IAC7F,MAAM,SAAS,GAAW,EAAE,GAAG,KAAK,CAAA;IACpC,MAAM,MAAM,GAAG,+BAA+B,CAAA;IAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAChE,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB;IACjG,MAAM,aAAa,GAAW,EAAE,GAAG,KAAK,CAAA;IACxC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IACxE,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB,EAAE,OAA4B;IAC/H,MAAM,gBAAgB,GAAG,EAAE,GAAG,KAAK,CAAA;IACnC,IAAI,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,KAAK,OAAO,EAAE,CAAC;QAC9D,MAAM,CAAC,KAAK,CACR,IAAI,4BAA4B,CAC5B,OAAO,EACP,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACtC,gBAAgB,EAChB,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACrC,CACJ,CAAA;IACL,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB,EAAE,OAA4B;IAC/H,MAAM,gBAAgB,GAAG,EAAE,GAAG,KAAK,CAAA;IACnC,MAAM,MAAM,GAAG,wBAAwB,CAAA;IACvC,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAA;IAChI,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB,EAAE,OAA4B;IAC5H,MAAM,gBAAgB,GAAG,EAAE,GAAG,KAAK,CAAA;IACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAQ,CAAC,QAAS,CAAC,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,IAAI,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7H,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,wDAAwD;AACxD,MAAM,UAAU,kCAAkC,CAAS,KAAa,EAAE,MAAwB,EAAE,OAAoB;IACpH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,uCAAuC,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACzF,OAAM;IACV,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,IAAI,uCAAuC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QACzE,OAAM;IACV,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ValidationFunctions.js","sourceRoot":"","sources":["../../src/validators/ValidationFunctions.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import { JsonContext } from "@lionweb/json-utils";
2
2
  import { ValidationResult } from "./ValidationResult.js";
3
- import { ObjectDefinition, PrimitiveDefinition, TypeDefinition, 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 `typeDefinitions`.
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
- typeDefinitions: Map<string, TypeDefinition>;
11
- constructor(validationResult: ValidationResult, expectedTypes: Map<string, TypeDefinition>);
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,7 +19,7 @@ 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 typeDef 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
@@ -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;AAQjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAGH,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACpB,MAAM,sBAAsB,CAAA;AAE7B;;;GAGG;AACH,qBAAa,eAAe;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;gBAEhC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAK1F;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;IAY3C;;;;;;;OAOG;IACH,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW;IAmFjI,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAc9H;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW;CAS3F"}
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,24 +1,24 @@
1
1
  import { JsonContext } from "@lionweb/json-utils";
2
2
  import { Syntax_ArrayContainsNull_Issue, Syntax_PropertyMissingIssue, Syntax_PropertyNullIssue, Syntax_PropertyTypeIssue, Syntax_PropertyUnknownIssue } from "../../issues/index.js";
3
- import { isObjectDefinition, isPrimitiveDefinition } from "./ValidationTypes.js";
3
+ import { isObjectDefinition, isPrimitiveDefinition } from "./schema/index.js";
4
4
  /**
5
- * Syntax Validator can check whether objects are structurally conforming to the
6
- * definitions given in `typeDefinitions`.
5
+ * Syntax Validator checks whether objects are structurally conforming to the
6
+ * definitions given in `schema`.
7
7
  */
8
8
  export class SyntaxValidator {
9
- constructor(validationResult, expectedTypes) {
9
+ constructor(validationResult, schema) {
10
10
  this.validationResult = validationResult;
11
- this.typeDefinitions = expectedTypes;
11
+ this.schema = schema;
12
12
  }
13
13
  /**
14
14
  * Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
15
- * 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.
16
16
  * @param obj The object to validate.
17
17
  * @param expectedType The expected type of the object.
18
18
  */
19
19
  validate(obj, expectedType) {
20
20
  const object = obj;
21
- const typeDef = this.typeDefinitions.get(expectedType);
21
+ const typeDef = this.schema.getDefinition(expectedType);
22
22
  if (typeDef === undefined) {
23
23
  throw new Error(`SyntaxValidator.validate: cannot find definition for ${expectedType}`);
24
24
  }
@@ -32,7 +32,7 @@ export class SyntaxValidator {
32
32
  /**
33
33
  * Validate whether `object` is structured conform the properties in `propertyDef`
34
34
  * @param originalProperty The property of which `object` it the value
35
- * @param typeDef The property definitions that are being validated
35
+ * @param typeDef The property definitions that are being validated
36
36
  * @param object The object being validated
37
37
  * @param jsonContext The location in the JSON
38
38
  * @private
@@ -41,22 +41,22 @@ export class SyntaxValidator {
41
41
  if (typeDef === null || typeDef === undefined) {
42
42
  return;
43
43
  }
44
- if ((typeof object) !== "object") {
44
+ if (typeof object !== "object") {
45
45
  this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, originalProperty, "object", typeof object));
46
46
  return;
47
47
  }
48
- for (const propertyDef of typeDef) {
49
- const expectedTypeDef = this.typeDefinitions.get(propertyDef.expectedType);
48
+ for (const propertyDef of typeDef.properties) {
49
+ const expectedTypeDef = this.schema.getDefinition(propertyDef.type);
50
50
  const validator = propertyDef.validate;
51
- const propertyValue = object[propertyDef.property];
51
+ const propertyValue = object[propertyDef.name];
52
52
  if (propertyValue === undefined) {
53
53
  if (!propertyDef.isOptional) {
54
- this.validationResult.issue(new Syntax_PropertyMissingIssue(jsonContext, propertyDef.property));
54
+ this.validationResult.issue(new Syntax_PropertyMissingIssue(jsonContext, propertyDef.name));
55
55
  }
56
56
  continue;
57
57
  }
58
58
  if (!propertyDef.mayBeNull && propertyValue === null) {
59
- this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propertyDef.property));
59
+ this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propertyDef.name));
60
60
  continue;
61
61
  }
62
62
  if (propertyDef.mayBeNull && propertyValue === null) {
@@ -66,53 +66,52 @@ export class SyntaxValidator {
66
66
  if (propertyDef.isList) {
67
67
  // Check whether value is an array
68
68
  if (!Array.isArray(propertyValue)) {
69
- const newContext = jsonContext.concat(propertyDef.property);
70
- this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.property, "array", typeof propertyValue));
69
+ const newContext = jsonContext.concat(propertyDef.name);
70
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, "array", typeof propertyValue));
71
71
  return;
72
72
  }
73
73
  // If an array, validate every item in the array
74
74
  propertyValue.forEach((item, index) => {
75
- const newContext = jsonContext.concat(propertyDef.property, index);
75
+ const newContext = jsonContext.concat(propertyDef.name, index);
76
76
  if (item === null) {
77
- this.validationResult.issue(new Syntax_ArrayContainsNull_Issue(newContext, propertyDef.property, index));
77
+ this.validationResult.issue(new Syntax_ArrayContainsNull_Issue(newContext, propertyDef.name, index));
78
78
  }
79
79
  else {
80
80
  if (expectedTypeDef !== undefined) {
81
81
  if (isPrimitiveDefinition(expectedTypeDef)) {
82
- // propertyValue should be a primitive as it has no property definitions
83
- if (this.validatePrimitiveValue(propertyDef.property, expectedTypeDef, item, jsonContext)) {
82
+ if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, item, jsonContext)) {
84
83
  validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
85
84
  }
86
85
  }
87
86
  else {
88
87
  // propertyValue should be an object, validate its properties
89
- this.validateObjectProperties(propertyDef.property, expectedTypeDef, item, newContext);
88
+ this.validateObjectProperties(propertyDef.name, expectedTypeDef, item, newContext);
90
89
  validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
91
90
  }
92
91
  }
93
92
  else {
94
- throw new Error(`Expected type '${propertyDef.expectedType} has neither property defs, nor a validator.`);
93
+ throw new Error(`Expected type '${propertyDef.type} has neither property defs, nor a validator.`);
95
94
  }
96
95
  }
97
96
  });
98
97
  }
99
98
  else {
100
- const newContext = jsonContext.concat(propertyDef.property);
99
+ const newContext = jsonContext.concat(propertyDef.name);
101
100
  if (Array.isArray(propertyValue)) {
102
- this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.property, propertyDef.expectedType, "array"));
101
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, propertyDef.type, "array"));
103
102
  return;
104
103
  }
105
104
  // Single valued property, validate it
106
105
  if (expectedTypeDef !== undefined) {
107
106
  if (isPrimitiveDefinition(expectedTypeDef)) {
108
107
  // propertyValue should be a primitive as it has no property definitions
109
- if (this.validatePrimitiveValue(propertyDef.property, expectedTypeDef, propertyValue, jsonContext)) {
108
+ if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, propertyValue, jsonContext)) {
110
109
  validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
111
110
  }
112
111
  }
113
112
  else if (isObjectDefinition(expectedTypeDef)) {
114
113
  // propertyValue should be an object, validate its properties
115
- this.validateObjectProperties(propertyDef.property, expectedTypeDef, propertyValue, newContext);
114
+ this.validateObjectProperties(propertyDef.name, expectedTypeDef, propertyValue, newContext);
116
115
  validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
117
116
  }
118
117
  else {
@@ -120,17 +119,13 @@ export class SyntaxValidator {
120
119
  }
121
120
  }
122
121
  else {
123
- throw new Error(`Expected single type '${propertyDef.expectedType}' for '${propertyDef.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.`);
124
123
  }
125
124
  }
126
125
  }
127
126
  this.checkStrayProperties(object, typeDef, jsonContext);
128
127
  }
129
128
  validatePrimitiveValue(propertyName, propDef, object, jsonContext) {
130
- // if (!propDef.mayBeNull && (object === null || object === undefined)) {
131
- // this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propDef.property))
132
- // return false
133
- // }
134
129
  if (typeof object !== propDef.primitiveType) {
135
130
  this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, propertyName, propDef.primitiveType, typeof object));
136
131
  return false;
@@ -146,8 +141,8 @@ export class SyntaxValidator {
146
141
  */
147
142
  checkStrayProperties(obj, def, context) {
148
143
  const own = Object.getOwnPropertyNames(obj);
149
- const defined = def.map(pdef => pdef.property);
150
- own.forEach((ownProp) => {
144
+ const defined = def.properties.map(pdef => pdef.name);
145
+ own.forEach(ownProp => {
151
146
  if (!defined.includes(ownProp)) {
152
147
  this.validationResult.issue(new Syntax_PropertyUnknownIssue(context, ownProp));
153
148
  }
@@ -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,4 +1,4 @@
1
- export * from "./ValidationTypes.js";
1
+ export * from "./schema/index.js";
2
2
  export * from "./ValidationResult.js";
3
3
  export * from "./SyntaxValidator.js";
4
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,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,4 +1,4 @@
1
- export * from "./ValidationTypes.js";
1
+ export * from "./schema/index.js";
2
2
  export * from "./ValidationResult.js";
3
3
  export * from "./SyntaxValidator.js";
4
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,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"}
@@ -1,5 +1,5 @@
1
1
  import { JsonContext } from "@lionweb/json-utils";
2
- import { ValidationResult } from "./ValidationResult.js";
2
+ import { ValidationResult } from "../ValidationResult.js";
3
3
  export type UnknownObjectType = {
4
4
  [key: string]: unknown;
5
5
  };
@@ -15,11 +15,11 @@ export type PropertyDefinition = {
15
15
  /**
16
16
  * The property name
17
17
  */
18
- property: string;
18
+ name: string;
19
19
  /**
20
20
  * The expected type of the property value
21
21
  */
22
- expectedType: string;
22
+ type: string;
23
23
  /**
24
24
  * Whether the property value is allowed to be null
25
25
  */
@@ -38,14 +38,13 @@ export type PropertyDefinition = {
38
38
  validate?: ValidatorFunction;
39
39
  };
40
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;
41
42
  export declare const MAY_BE_NULL = true;
42
43
  /**
43
- * Easy way to create a PropertyDefinition typed object with default values.
44
- * @param propDef
45
- * @constructor
44
+ * Definition of a primitive type.
46
45
  */
47
- export declare function PropertyDef(propDef: PropertyDefinition): PropertyDefinition;
48
46
  export type PrimitiveDefinition = {
47
+ name: string;
49
48
  /**
50
49
  * The expected type of the property value
51
50
  */
@@ -56,13 +55,47 @@ export type PrimitiveDefinition = {
56
55
  validate?: ValidatorFunction;
57
56
  };
58
57
  /**
59
- * Easy way to create a PropertyDefinition typed object with default values.
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.
60
88
  * @param propDef
61
89
  * @constructor
62
90
  */
63
91
  export declare function PrimitiveDef(propDef: PrimitiveDefinition): PrimitiveDefinition;
64
- export type ObjectDefinition = PropertyDefinition[];
65
- export type TypeDefinition = ObjectDefinition | PrimitiveDefinition;
66
- export declare function isObjectDefinition(def: TypeDefinition): def is ObjectDefinition;
67
- export declare function isPrimitiveDefinition(def: TypeDefinition): def is 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;
68
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"}
@@ -1,27 +1,17 @@
1
- /**
2
- * Default for the `validation` property, does nothing.
3
- * @param object
4
- * @param result
5
- * @param ctx
6
- * @param pdef
7
- */
8
1
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
- function emptyValidation(object, result, ctx, pdef) { }
2
+ export function emptyValidation(object, result, ctx, pdef) { }
10
3
  // Make boolean argument more readable.
11
4
  export const MAY_BE_NULL = true;
12
5
  /**
13
- * Easy way to create a PropertyDefinition typed object with default values.
6
+ * Easy way to create a PrimitiveDefinition typed object with default values.
14
7
  * @param propDef
15
8
  * @constructor
16
9
  */
17
- export function PropertyDef(propDef) {
18
- const { property, expectedType, mayBeNull = false, isList = false, isOptional = false, validate = emptyValidation } = propDef;
10
+ export function PrimitiveDef(propDef) {
11
+ const { name, primitiveType, validate = emptyValidation } = propDef;
19
12
  return {
20
- property: property,
21
- expectedType: expectedType,
22
- isList: isList,
23
- mayBeNull: mayBeNull,
24
- isOptional: isOptional,
13
+ name: name,
14
+ primitiveType: primitiveType,
25
15
  validate: validate
26
16
  };
27
17
  }
@@ -30,17 +20,24 @@ export function PropertyDef(propDef) {
30
20
  * @param propDef
31
21
  * @constructor
32
22
  */
33
- export function PrimitiveDef(propDef) {
34
- const { primitiveType, validate = emptyValidation } = propDef;
23
+ export function PropertyDef(propDef) {
24
+ const { name, type, mayBeNull = false, isList = false, isOptional = false, validate = emptyValidation } = propDef;
35
25
  return {
36
- primitiveType: primitiveType,
26
+ name: name,
27
+ type: type,
28
+ isList: isList,
29
+ mayBeNull: mayBeNull,
30
+ isOptional: isOptional,
37
31
  validate: validate
38
32
  };
39
33
  }
40
34
  export function isObjectDefinition(def) {
41
- return Array.isArray(def);
35
+ return (def !== undefined) && Array.isArray(def?.properties);
42
36
  }
43
37
  export function isPrimitiveDefinition(def) {
44
- return def?.primitiveType !== undefined;
38
+ return (def !== undefined) && def?.primitiveType !== undefined;
39
+ }
40
+ export function isJavaScriptPrimitive(type) {
41
+ return ["number", "string", "boolean"].includes(type);
45
42
  }
46
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"}
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
1
  {
2
- "name": "@lionweb/validation",
3
- "version": "0.7.0-beta.2",
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": "rm -rf dist/ node_modules/ 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
- "release-alpha": "npm publish --registry https://registry.npmjs.org --tag alpha",
24
- "release-beta": "npm publish --registry https://registry.npmjs.org --tag beta",
25
- "release": "npm publish --registry https://registry.npmjs.org",
26
- "testValid": "node dist/runners/RunCheckFolder.js ../test/testset/valid",
27
- "testInvalid": "node dist/runners/RunCheckFolder.js ../test/testset/invalid",
28
- "testInvalidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/invalid/ ../test/testset/withLanguage/myLang.language.json",
29
- "testValidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/valid/ ../test/testset/withLanguage/myLang.language.json",
30
- "publish-local": "npm publish --registry http://localhost:4873",
31
- "unpublish-local": "npm unpublish --force --registry http://localhost:4873",
32
- "republish-local": "yarn unpublish-local && yarn publish-local"
33
- },
34
- "dependencies": {
35
- "@lionweb/json": "0.7.0-beta.2",
36
- "@lionweb/ts-utils": "0.7.0-beta.2",
37
- "@lionweb/json-utils": "0.7.0-beta.2"
38
- }
2
+ "name": "@lionweb/validation",
3
+ "version": "0.7.0-beta.21",
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
+ "release-alpha": "npm publish --registry https://registry.npmjs.org --tag alpha",
24
+ "release-beta": "npm publish --registry https://registry.npmjs.org --tag beta",
25
+ "release": "npm publish --registry https://registry.npmjs.org",
26
+ "testValid": "node dist/runners/RunCheckFolder.js ../test/testset/valid",
27
+ "testInvalid": "node dist/runners/RunCheckFolder.js ../test/testset/invalid",
28
+ "testInvalidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/invalid/ ../test/testset/withLanguage/myLang.language.json",
29
+ "testValidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/valid/ ../test/testset/withLanguage/myLang.language.json",
30
+ "publish-local": "npm publish --registry http://localhost:4873",
31
+ "unpublish-local": "npm unpublish --force --registry http://localhost:4873",
32
+ "republish-local": "yarn unpublish-local && yarn publish-local"
33
+ },
34
+ "dependencies": {
35
+ "@lionweb/json": "0.7.0-beta.21",
36
+ "@lionweb/ts-utils": "0.7.0-beta.21",
37
+ "@lionweb/json-utils": "0.7.0-beta.21"
38
+ }
39
39
  }