@lionweb/validation 0.7.0 → 0.7.2-beta.0

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 (140) hide show
  1. package/CHANGELOG.md +3 -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/LionCore-M3.json +2356 -0
  39. package/dist/languages/LionCore-builtins.json +372 -0
  40. package/dist/languages/LionWebLanguageWrapper.d.ts +31 -0
  41. package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -0
  42. package/dist/languages/LionWebLanguageWrapper.js +69 -0
  43. package/dist/languages/LionWebLanguageWrapper.js.map +1 -0
  44. package/dist/languages/MetaPointerMap.d.ts +11 -0
  45. package/dist/languages/MetaPointerMap.d.ts.map +1 -0
  46. package/dist/languages/MetaPointerMap.js +39 -0
  47. package/dist/languages/MetaPointerMap.js.map +1 -0
  48. package/dist/languages/index.d.ts +3 -0
  49. package/dist/languages/index.d.ts.map +1 -0
  50. package/dist/languages/index.js +3 -0
  51. package/dist/languages/index.js.map +1 -0
  52. package/dist/runners/FileUtils.d.ts +6 -0
  53. package/dist/runners/FileUtils.d.ts.map +1 -0
  54. package/dist/runners/FileUtils.js +53 -0
  55. package/dist/runners/FileUtils.js.map +1 -0
  56. package/dist/runners/RunCheckFolder.d.ts +2 -0
  57. package/dist/runners/RunCheckFolder.d.ts.map +1 -0
  58. package/dist/runners/RunCheckFolder.js +6 -0
  59. package/dist/runners/RunCheckFolder.js.map +1 -0
  60. package/dist/runners/RunCheckFolderWithLanguage.d.ts +2 -0
  61. package/dist/runners/RunCheckFolderWithLanguage.d.ts.map +1 -0
  62. package/dist/runners/RunCheckFolderWithLanguage.js +40 -0
  63. package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -0
  64. package/dist/runners/RunCheckOneFile.d.ts +2 -0
  65. package/dist/runners/RunCheckOneFile.d.ts.map +1 -0
  66. package/dist/runners/RunCheckOneFile.js +6 -0
  67. package/dist/runners/RunCheckOneFile.js.map +1 -0
  68. package/dist/runners/RunCheckOneFileWithLanguage.d.ts +2 -0
  69. package/dist/runners/RunCheckOneFileWithLanguage.d.ts.map +1 -0
  70. package/dist/runners/RunCheckOneFileWithLanguage.js +31 -0
  71. package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -0
  72. package/dist/runners/RunLioncoreDiff.d.ts +2 -0
  73. package/dist/runners/RunLioncoreDiff.d.ts.map +1 -0
  74. package/dist/runners/RunLioncoreDiff.js +22 -0
  75. package/dist/runners/RunLioncoreDiff.js.map +1 -0
  76. package/dist/runners/Utils.d.ts +7 -0
  77. package/dist/runners/Utils.d.ts.map +1 -0
  78. package/dist/runners/Utils.js +48 -0
  79. package/dist/runners/Utils.js.map +1 -0
  80. package/dist/runners/index.d.ts +3 -0
  81. package/dist/runners/index.d.ts.map +1 -0
  82. package/dist/runners/index.js +3 -0
  83. package/dist/runners/index.js.map +1 -0
  84. package/dist/validators/LionWebChunkDefinitions.d.ts +9 -0
  85. package/dist/validators/LionWebChunkDefinitions.d.ts.map +1 -0
  86. package/dist/validators/LionWebChunkDefinitions.js +100 -0
  87. package/dist/validators/LionWebChunkDefinitions.js.map +1 -0
  88. package/dist/validators/LionWebLanguageReferenceValidator.d.ts +21 -0
  89. package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -0
  90. package/dist/validators/LionWebLanguageReferenceValidator.js +166 -0
  91. package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -0
  92. package/dist/validators/LionWebLanguageValidator.d.ts +23 -0
  93. package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -0
  94. package/dist/validators/LionWebLanguageValidator.js +67 -0
  95. package/dist/validators/LionWebLanguageValidator.js.map +1 -0
  96. package/dist/validators/LionWebReferenceValidator.d.ts +43 -0
  97. package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -0
  98. package/dist/validators/LionWebReferenceValidator.js +203 -0
  99. package/dist/validators/LionWebReferenceValidator.js.map +1 -0
  100. package/dist/validators/LionWebSyntaxValidator.d.ts +9 -0
  101. package/dist/validators/LionWebSyntaxValidator.d.ts.map +1 -0
  102. package/dist/validators/LionWebSyntaxValidator.js +11 -0
  103. package/dist/validators/LionWebSyntaxValidator.js.map +1 -0
  104. package/dist/validators/LionWebValidator.d.ts +24 -0
  105. package/dist/validators/LionWebValidator.d.ts.map +1 -0
  106. package/dist/validators/LionWebValidator.js +55 -0
  107. package/dist/validators/LionWebValidator.js.map +1 -0
  108. package/dist/validators/ValidationFunctions.d.ts +60 -0
  109. package/dist/validators/ValidationFunctions.d.ts.map +1 -0
  110. package/dist/validators/ValidationFunctions.js +104 -0
  111. package/dist/validators/ValidationFunctions.js.map +1 -0
  112. package/dist/validators/generic/SyntaxValidator.d.ts +37 -0
  113. package/dist/validators/generic/SyntaxValidator.d.ts.map +1 -0
  114. package/dist/validators/generic/SyntaxValidator.js +152 -0
  115. package/dist/validators/generic/SyntaxValidator.js.map +1 -0
  116. package/dist/validators/generic/ValidationResult.d.ts +8 -0
  117. package/dist/validators/generic/ValidationResult.d.ts.map +1 -0
  118. package/dist/validators/generic/ValidationResult.js +15 -0
  119. package/dist/validators/generic/ValidationResult.js.map +1 -0
  120. package/dist/validators/generic/index.d.ts +4 -0
  121. package/dist/validators/generic/index.d.ts.map +1 -0
  122. package/dist/validators/generic/index.js +4 -0
  123. package/dist/validators/generic/index.js.map +1 -0
  124. package/dist/validators/generic/schema/DefinitionSchema.d.ts +23 -0
  125. package/dist/validators/generic/schema/DefinitionSchema.d.ts.map +1 -0
  126. package/dist/validators/generic/schema/DefinitionSchema.js +43 -0
  127. package/dist/validators/generic/schema/DefinitionSchema.js.map +1 -0
  128. package/dist/validators/generic/schema/ValidationTypes.d.ts +101 -0
  129. package/dist/validators/generic/schema/ValidationTypes.d.ts.map +1 -0
  130. package/dist/validators/generic/schema/ValidationTypes.js +43 -0
  131. package/dist/validators/generic/schema/ValidationTypes.js.map +1 -0
  132. package/dist/validators/generic/schema/index.d.ts +3 -0
  133. package/dist/validators/generic/schema/index.d.ts.map +1 -0
  134. package/dist/validators/generic/schema/index.js +3 -0
  135. package/dist/validators/generic/schema/index.js.map +1 -0
  136. package/dist/validators/index.d.ts +9 -0
  137. package/dist/validators/index.d.ts.map +1 -0
  138. package/dist/validators/index.js +9 -0
  139. package/dist/validators/index.js.map +1 -0
  140. package/package.json +11 -7
@@ -0,0 +1,37 @@
1
+ import { JsonContext } from "@lionweb/json-utils";
2
+ import { ValidationResult } from "./ValidationResult.js";
3
+ import { ObjectDefinition, PrimitiveDefinition, DefinitionSchema, UnknownObjectType } from "./schema/index.js";
4
+ /**
5
+ * Syntax Validator checks whether objects are structurally conforming to the
6
+ * definitions given in `schema`.
7
+ */
8
+ export declare class SyntaxValidator {
9
+ validationResult: ValidationResult;
10
+ schema: DefinitionSchema;
11
+ constructor(validationResult: ValidationResult, schema: DefinitionSchema);
12
+ /**
13
+ * Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
14
+ * All errors found will be added to the `validationResult` object.
15
+ * @param obj The object to validate.
16
+ * @param expectedType The expected type of the object.
17
+ */
18
+ validate(obj: unknown, expectedType: string): void;
19
+ /**
20
+ * Validate whether `object` is structured conform the properties in `propertyDef`
21
+ * @param originalProperty The property of which `object` it the value
22
+ * @param typeDef The property definitions that are being validated
23
+ * @param object The object being validated
24
+ * @param jsonContext The location in the JSON
25
+ * @private
26
+ */
27
+ validateObjectProperties(originalProperty: string, typeDef: ObjectDefinition, object: UnknownObjectType, jsonContext: JsonContext): void;
28
+ validatePrimitiveValue(propertyName: string, propDef: PrimitiveDefinition, object: unknown, jsonContext: JsonContext): boolean;
29
+ /**
30
+ * Check whether there are extra properties that should not be there.
31
+ * @param obj Object to be validated
32
+ * @param properties The names of the expected properties
33
+ * @param context Location in JSON
34
+ */
35
+ checkStrayProperties(obj: UnknownObjectType, def: ObjectDefinition, context: JsonContext): void;
36
+ }
37
+ //# sourceMappingURL=SyntaxValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyntaxValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAQjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAEoB,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAC9E,iBAAiB,EACpB,MAAM,mBAAmB,CAAA;AAE1B;;;GAGG;AACH,qBAAa,eAAe;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,gBAAgB,CAAA;gBAEZ,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB;IAKxE;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM;IAa3C;;;;;;;OAOG;IACH,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW;IAoFjI,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAS9H;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW;CAS3F"}
@@ -0,0 +1,152 @@
1
+ import { JsonContext } from "@lionweb/json-utils";
2
+ import { Syntax_ArrayContainsNull_Issue, Syntax_PropertyMissingIssue, Syntax_PropertyNullIssue, Syntax_PropertyTypeIssue, Syntax_PropertyUnknownIssue } from "../../issues/index.js";
3
+ import { isObjectDefinition, isPrimitiveDefinition } from "./schema/index.js";
4
+ /**
5
+ * Syntax Validator checks whether objects are structurally conforming to the
6
+ * definitions given in `schema`.
7
+ */
8
+ export class SyntaxValidator {
9
+ constructor(validationResult, schema) {
10
+ this.validationResult = validationResult;
11
+ this.schema = schema;
12
+ }
13
+ /**
14
+ * Check whether `obj` is a JSON object that conforms to the definition of `expectedType`.
15
+ * All errors found will be added to the `validationResult` object.
16
+ * @param obj The object to validate.
17
+ * @param expectedType The expected type of the object.
18
+ */
19
+ validate(obj, expectedType) {
20
+ const object = obj;
21
+ const typeDef = this.schema.getDefinition(expectedType);
22
+ if (typeDef === undefined) {
23
+ throw new Error(`SyntaxValidator.validate: cannot find definition for ${expectedType}`);
24
+ }
25
+ else if (isObjectDefinition(typeDef)) {
26
+ this.validateObjectProperties(expectedType, typeDef, object, new JsonContext(null, ["$"]));
27
+ }
28
+ else if (isPrimitiveDefinition(typeDef)) {
29
+ this.validatePrimitiveValue("$", typeDef, object, new JsonContext(null, ["$"]));
30
+ }
31
+ }
32
+ /**
33
+ * Validate whether `object` is structured conform the properties in `propertyDef`
34
+ * @param originalProperty The property of which `object` it the value
35
+ * @param typeDef The property definitions that are being validated
36
+ * @param object The object being validated
37
+ * @param jsonContext The location in the JSON
38
+ * @private
39
+ */
40
+ validateObjectProperties(originalProperty, typeDef, object, jsonContext) {
41
+ if (typeDef === null || typeDef === undefined) {
42
+ return;
43
+ }
44
+ if (typeof object !== "object") {
45
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, originalProperty, "object", typeof object));
46
+ return;
47
+ }
48
+ for (const propertyDef of typeDef.properties) {
49
+ const expectedTypeDef = this.schema.getDefinition(propertyDef.type);
50
+ const validator = propertyDef.validate;
51
+ const propertyValue = object[propertyDef.name];
52
+ if (propertyValue === undefined) {
53
+ if (!propertyDef.isOptional) {
54
+ this.validationResult.issue(new Syntax_PropertyMissingIssue(jsonContext, propertyDef.name));
55
+ }
56
+ continue;
57
+ }
58
+ if (!propertyDef.mayBeNull && propertyValue === null) {
59
+ this.validationResult.issue(new Syntax_PropertyNullIssue(jsonContext, propertyDef.name));
60
+ continue;
61
+ }
62
+ if (propertyDef.mayBeNull && propertyValue === null) {
63
+ // Ok, stop checking, continue with next property def
64
+ continue;
65
+ }
66
+ if (propertyDef.isList) {
67
+ // Check whether value is an array
68
+ if (!Array.isArray(propertyValue)) {
69
+ const newContext = jsonContext.concat(propertyDef.name);
70
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, "array", typeof propertyValue));
71
+ return;
72
+ }
73
+ // If an array, validate every item in the array
74
+ propertyValue.forEach((item, index) => {
75
+ const newContext = jsonContext.concat(propertyDef.name, index);
76
+ if (item === null) {
77
+ this.validationResult.issue(new Syntax_ArrayContainsNull_Issue(newContext, propertyDef.name, index));
78
+ }
79
+ else {
80
+ if (expectedTypeDef !== undefined) {
81
+ if (isPrimitiveDefinition(expectedTypeDef)) {
82
+ if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, item, jsonContext)) {
83
+ validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
84
+ }
85
+ }
86
+ else {
87
+ // propertyValue should be an object, validate its properties
88
+ this.validateObjectProperties(propertyDef.name, expectedTypeDef, item, newContext);
89
+ validator.apply(null, [item, this.validationResult, newContext, propertyDef]);
90
+ }
91
+ }
92
+ else {
93
+ throw new Error(`Expected type '${propertyDef.type} has neither property defs, nor a validator.`);
94
+ }
95
+ }
96
+ });
97
+ }
98
+ else {
99
+ const newContext = jsonContext.concat(propertyDef.name);
100
+ if (Array.isArray(propertyValue)) {
101
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(newContext, propertyDef.name, propertyDef.type, "array"));
102
+ return;
103
+ }
104
+ // Single valued property, validate it
105
+ if (expectedTypeDef !== undefined) {
106
+ if (isPrimitiveDefinition(expectedTypeDef)) {
107
+ // propertyValue should be a primitive as it has no property definitions
108
+ if (this.validatePrimitiveValue(propertyDef.name, expectedTypeDef, propertyValue, jsonContext)) {
109
+ validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
110
+ }
111
+ }
112
+ else if (isObjectDefinition(expectedTypeDef)) {
113
+ // propertyValue should be an object, validate its properties
114
+ this.validateObjectProperties(propertyDef.name, expectedTypeDef, propertyValue, newContext);
115
+ validator.apply(null, [propertyValue, this.validationResult, newContext, propertyDef]);
116
+ }
117
+ else {
118
+ throw new Error("EXPECTING ObjectDefinition or PrimitiveDefinition, but got something else");
119
+ }
120
+ }
121
+ else {
122
+ throw new Error(`Expected single type '${propertyDef.type}' for '${propertyDef.name}' at ${newContext.toString()} has neither property defs, nor a validator.`);
123
+ }
124
+ }
125
+ }
126
+ this.checkStrayProperties(object, typeDef, jsonContext);
127
+ }
128
+ validatePrimitiveValue(propertyName, propDef, object, jsonContext) {
129
+ if (typeof object !== propDef.primitiveType) {
130
+ this.validationResult.issue(new Syntax_PropertyTypeIssue(jsonContext, propertyName, propDef.primitiveType, typeof object));
131
+ return false;
132
+ }
133
+ propDef.validate(object, this.validationResult, jsonContext);
134
+ return true;
135
+ }
136
+ /**
137
+ * Check whether there are extra properties that should not be there.
138
+ * @param obj Object to be validated
139
+ * @param properties The names of the expected properties
140
+ * @param context Location in JSON
141
+ */
142
+ checkStrayProperties(obj, def, context) {
143
+ const own = Object.getOwnPropertyNames(obj);
144
+ const defined = def.properties.map(pdef => pdef.name);
145
+ own.forEach(ownProp => {
146
+ if (!defined.includes(ownProp)) {
147
+ this.validationResult.issue(new Syntax_PropertyUnknownIssue(context, ownProp));
148
+ }
149
+ });
150
+ }
151
+ }
152
+ //# sourceMappingURL=SyntaxValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyntaxValidator.js","sourceRoot":"","sources":["../../../src/validators/generic/SyntaxValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ValidationIssue } from "../../issues/ValidationIssue.js";
2
+ export declare class ValidationResult {
3
+ issues: ValidationIssue[];
4
+ issue(issue: ValidationIssue): void;
5
+ reset(): void;
6
+ hasErrors(): boolean;
7
+ }
8
+ //# sourceMappingURL=ValidationResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationResult.d.ts","sourceRoot":"","sources":["../../../src/validators/generic/ValidationResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,qBAAa,gBAAgB;IACzB,MAAM,EAAE,eAAe,EAAE,CAAK;IAE9B,KAAK,CAAC,KAAK,EAAE,eAAe;IAI5B,KAAK;IAIL,SAAS,IAAI,OAAO;CAGvB"}
@@ -0,0 +1,15 @@
1
+ export class ValidationResult {
2
+ constructor() {
3
+ this.issues = [];
4
+ }
5
+ issue(issue) {
6
+ this.issues.push(issue);
7
+ }
8
+ reset() {
9
+ this.issues = [];
10
+ }
11
+ hasErrors() {
12
+ return this.issues.length !== 0;
13
+ }
14
+ }
15
+ //# sourceMappingURL=ValidationResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationResult.js","sourceRoot":"","sources":["../../../src/validators/generic/ValidationResult.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,gBAAgB;IAA7B;QACI,WAAM,GAAsB,EAAE,CAAA;IAalC,CAAC;IAXG,KAAK,CAAC,KAAsB;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IACpB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA;IACnC,CAAC;CACJ"}
@@ -0,0 +1,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"}
@@ -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"}
@@ -0,0 +1,9 @@
1
+ export * from "./generic/index.js";
2
+ export * from "./LionWebSyntaxValidator.js";
3
+ export * from "./LionWebReferenceValidator.js";
4
+ export * from "./LionWebLanguageValidator.js";
5
+ export * from "./LionWebLanguageReferenceValidator.js";
6
+ export * from "./LionWebValidator.js";
7
+ export * from "./ValidationFunctions.js";
8
+ export * from "./LionWebChunkDefinitions.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,9 @@
1
+ export * from "./generic/index.js";
2
+ export * from "./LionWebSyntaxValidator.js";
3
+ export * from "./LionWebReferenceValidator.js";
4
+ export * from "./LionWebLanguageValidator.js";
5
+ export * from "./LionWebLanguageReferenceValidator.js";
6
+ export * from "./LionWebValidator.js";
7
+ export * from "./ValidationFunctions.js";
8
+ export * from "./LionWebChunkDefinitions.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionweb/validation",
3
- "version": "0.7.0",
3
+ "version": "0.7.2-beta.0",
4
4
  "license": "Apache 2.0",
5
5
  "description": "LionWeb Serialization validation",
6
6
  "author": "jos.warmer@openmodeling.nl",
@@ -20,9 +20,13 @@
20
20
  "copyBuiltins": "node -e \"const fs = require('fs'); fs.copyFileSync('./src/languages/LionCore-builtins.json', './dist/languages/LionCore-builtins.json');\"",
21
21
  "lint": "eslint src",
22
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",
23
+ "prep:pre-release": "npm run clean && npm install && npm run build",
24
+ "prerelease-alpha": "npm run prep:pre-release",
25
+ "release-alpha": "npm publish --tag alpha",
26
+ "prerelease-beta": "npm run prep:pre-release",
27
+ "release-beta": "npm publish --tag beta",
28
+ "prerelease": "npm run prep:pre-release",
29
+ "release": "npm publish",
26
30
  "testValid": "node dist/runners/RunCheckFolder.js ../test/testset/valid",
27
31
  "testInvalid": "node dist/runners/RunCheckFolder.js ../test/testset/invalid",
28
32
  "testInvalidWithLanguage": "node dist/runners/RunCheckFolderWithLanguage.js ../test/testset/withLanguage/invalid/ ../test/testset/withLanguage/myLang.language.json",
@@ -32,8 +36,8 @@
32
36
  "republish-local": "yarn unpublish-local && yarn publish-local"
33
37
  },
34
38
  "dependencies": {
35
- "@lionweb/json": "0.7.0",
36
- "@lionweb/ts-utils": "0.7.0",
37
- "@lionweb/json-utils": "0.7.0"
39
+ "@lionweb/json": "0.7.2-beta.0",
40
+ "@lionweb/ts-utils": "0.7.2-beta.0",
41
+ "@lionweb/json-utils": "0.7.2-beta.0"
38
42
  }
39
43
  }