@lionweb/validation 0.8.0-beta.7 → 0.8.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 (69) hide show
  1. package/CHANGELOG.md +2 -3
  2. package/dist/languages/LanguageRegistry.d.ts +1 -1
  3. package/dist/languages/LanguageRegistry.d.ts.map +1 -1
  4. package/dist/languages/LanguageRegistry.js +3 -0
  5. package/dist/languages/LanguageRegistry.js.map +1 -1
  6. package/dist/languages/LanguageUtils.d.ts.map +1 -1
  7. package/dist/languages/LanguageUtils.js +2 -4
  8. package/dist/languages/LanguageUtils.js.map +1 -1
  9. package/dist/validators/LionWebReferenceValidator.d.ts +3 -1
  10. package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
  11. package/dist/validators/LionWebReferenceValidator.js +27 -8
  12. package/dist/validators/LionWebReferenceValidator.js.map +1 -1
  13. package/dist/validators/definitions/AdminRequestDefinitions.d.ts +3 -0
  14. package/dist/validators/definitions/AdminRequestDefinitions.d.ts.map +1 -0
  15. package/dist/validators/definitions/AdminRequestDefinitions.js +155 -0
  16. package/dist/validators/definitions/AdminRequestDefinitions.js.map +1 -0
  17. package/dist/validators/definitions/AdminResponseDefinitions.d.ts +3 -0
  18. package/dist/validators/definitions/AdminResponseDefinitions.d.ts.map +1 -0
  19. package/dist/validators/definitions/AdminResponseDefinitions.js +169 -0
  20. package/dist/validators/definitions/AdminResponseDefinitions.js.map +1 -0
  21. package/dist/validators/definitions/AdminTypesDefinitions.d.ts +3 -0
  22. package/dist/validators/definitions/AdminTypesDefinitions.d.ts.map +1 -0
  23. package/dist/validators/definitions/AdminTypesDefinitions.js +33 -0
  24. package/dist/validators/definitions/AdminTypesDefinitions.js.map +1 -0
  25. package/dist/validators/definitions/ChunksDefinitions.d.ts +1 -1
  26. package/dist/validators/definitions/ChunksDefinitions.d.ts.map +1 -1
  27. package/dist/validators/definitions/CommandDefinitions.d.ts +1 -1
  28. package/dist/validators/definitions/CommandDefinitions.d.ts.map +1 -1
  29. package/dist/validators/definitions/CommandDefinitions.js +130 -64
  30. package/dist/validators/definitions/CommandDefinitions.js.map +1 -1
  31. package/dist/validators/definitions/DeltaTypesDefinitions.d.ts +1 -1
  32. package/dist/validators/definitions/DeltaTypesDefinitions.d.ts.map +1 -1
  33. package/dist/validators/definitions/DeltaTypesDefinitions.js +8 -1
  34. package/dist/validators/definitions/DeltaTypesDefinitions.js.map +1 -1
  35. package/dist/validators/definitions/EventDefinitions.d.ts +1 -1
  36. package/dist/validators/definitions/EventDefinitions.d.ts.map +1 -1
  37. package/dist/validators/definitions/EventDefinitions.js +324 -244
  38. package/dist/validators/definitions/EventDefinitions.js.map +1 -1
  39. package/dist/validators/definitions/RequestDefinitions.d.ts +1 -1
  40. package/dist/validators/definitions/RequestDefinitions.d.ts.map +1 -1
  41. package/dist/validators/definitions/RequestDefinitions.js +114 -74
  42. package/dist/validators/definitions/RequestDefinitions.js.map +1 -1
  43. package/dist/validators/definitions/ResponseDefinitions.d.ts +1 -1
  44. package/dist/validators/definitions/ResponseDefinitions.d.ts.map +1 -1
  45. package/dist/validators/definitions/ResponseDefinitions.js +126 -60
  46. package/dist/validators/definitions/ResponseDefinitions.js.map +1 -1
  47. package/dist/validators/definitions/index.d.ts +3 -0
  48. package/dist/validators/definitions/index.d.ts.map +1 -1
  49. package/dist/validators/definitions/index.js +3 -0
  50. package/dist/validators/definitions/index.js.map +1 -1
  51. package/dist/validators/generic/schema/SyntaxDefinition.d.ts +23 -0
  52. package/dist/validators/generic/schema/SyntaxDefinition.d.ts.map +1 -1
  53. package/dist/validators/generic/schema/SyntaxDefinition.js +12 -0
  54. package/dist/validators/generic/schema/SyntaxDefinition.js.map +1 -1
  55. package/package.json +6 -6
  56. package/src/languages/LanguageRegistry.ts +4 -1
  57. package/src/languages/LanguageUtils.ts +2 -6
  58. package/src/validators/LionWebReferenceValidator.ts +27 -8
  59. package/src/validators/definitions/AdminRequestDefinitions.ts +156 -0
  60. package/src/validators/definitions/AdminResponseDefinitions.ts +170 -0
  61. package/src/validators/definitions/AdminTypesDefinitions.ts +34 -0
  62. package/src/validators/definitions/ChunksDefinitions.ts +1 -1
  63. package/src/validators/definitions/CommandDefinitions.ts +131 -65
  64. package/src/validators/definitions/DeltaTypesDefinitions.ts +9 -2
  65. package/src/validators/definitions/EventDefinitions.ts +325 -245
  66. package/src/validators/definitions/RequestDefinitions.ts +115 -75
  67. package/src/validators/definitions/ResponseDefinitions.ts +127 -61
  68. package/src/validators/definitions/index.ts +3 -0
  69. package/src/validators/generic/schema/SyntaxDefinition.ts +24 -1
@@ -1,27 +1,27 @@
1
- import { MessageGroup } from "../generic/schema/SyntaxDefinition.js";
1
+ import type { MessageGroup } from "../generic/schema/SyntaxDefinition.js";
2
2
 
3
3
  export const ResponseDefinitions: MessageGroup = {
4
4
  name: "Response",
5
5
  taggedUnionProperty: "messageKind",
6
6
  sharedProperties: [
7
7
  {
8
- name: "messageKind",
9
- type: "String",
8
+ name: "queryId",
9
+ type: "QueryId",
10
10
  isList: false,
11
11
  isOptional: false,
12
12
  mayBeNull: false,
13
13
  },
14
14
  {
15
- name: "protocolMessages",
16
- type: "ProtocolMessage",
17
- isList: true,
15
+ name: "messageKind",
16
+ type: "String",
17
+ isList: false,
18
18
  isOptional: false,
19
19
  mayBeNull: false,
20
20
  },
21
21
  {
22
- name: "queryId",
23
- type: "QueryId",
24
- isList: false,
22
+ name: "additionalInfos",
23
+ type: "AdditionalInfo",
24
+ isList: true,
25
25
  isOptional: false,
26
26
  mayBeNull: false,
27
27
  },
@@ -30,6 +30,13 @@ export const ResponseDefinitions: MessageGroup = {
30
30
  {
31
31
  name: "SubscribeToChangingPartitionsResponse",
32
32
  properties: [
33
+ {
34
+ name: "queryId",
35
+ type: "QueryId",
36
+ isList: false,
37
+ isOptional: false,
38
+ mayBeNull: false,
39
+ },
33
40
  {
34
41
  name: "messageKind",
35
42
  type: "String",
@@ -38,12 +45,17 @@ export const ResponseDefinitions: MessageGroup = {
38
45
  mayBeNull: false,
39
46
  },
40
47
  {
41
- name: "protocolMessages",
42
- type: "ProtocolMessage",
48
+ name: "additionalInfos",
49
+ type: "AdditionalInfo",
43
50
  isList: true,
44
51
  isOptional: false,
45
52
  mayBeNull: false,
46
53
  },
54
+ ],
55
+ },
56
+ {
57
+ name: "InformAboutChangingPartitionsResponse",
58
+ properties: [
47
59
  {
48
60
  name: "queryId",
49
61
  type: "QueryId",
@@ -51,6 +63,20 @@ export const ResponseDefinitions: MessageGroup = {
51
63
  isOptional: false,
52
64
  mayBeNull: false,
53
65
  },
66
+ {
67
+ name: "messageKind",
68
+ type: "String",
69
+ isList: false,
70
+ isOptional: false,
71
+ mayBeNull: false,
72
+ },
73
+ {
74
+ name: "additionalInfos",
75
+ type: "AdditionalInfo",
76
+ isList: true,
77
+ isOptional: false,
78
+ mayBeNull: false,
79
+ },
54
80
  ],
55
81
  },
56
82
  {
@@ -64,23 +90,23 @@ export const ResponseDefinitions: MessageGroup = {
64
90
  mayBeNull: false,
65
91
  },
66
92
  {
67
- name: "messageKind",
68
- type: "String",
93
+ name: "queryId",
94
+ type: "QueryId",
69
95
  isList: false,
70
96
  isOptional: false,
71
97
  mayBeNull: false,
72
98
  },
73
99
  {
74
- name: "protocolMessages",
75
- type: "ProtocolMessage",
76
- isList: true,
100
+ name: "messageKind",
101
+ type: "String",
102
+ isList: false,
77
103
  isOptional: false,
78
104
  mayBeNull: false,
79
105
  },
80
106
  {
81
- name: "queryId",
82
- type: "QueryId",
83
- isList: false,
107
+ name: "additionalInfos",
108
+ type: "AdditionalInfo",
109
+ isList: true,
84
110
  isOptional: false,
85
111
  mayBeNull: false,
86
112
  },
@@ -90,23 +116,23 @@ export const ResponseDefinitions: MessageGroup = {
90
116
  name: "UnsubscribeFromPartitionContentsResponse",
91
117
  properties: [
92
118
  {
93
- name: "messageKind",
94
- type: "String",
119
+ name: "queryId",
120
+ type: "QueryId",
95
121
  isList: false,
96
122
  isOptional: false,
97
123
  mayBeNull: false,
98
124
  },
99
125
  {
100
- name: "protocolMessages",
101
- type: "ProtocolMessage",
102
- isList: true,
126
+ name: "messageKind",
127
+ type: "String",
128
+ isList: false,
103
129
  isOptional: false,
104
130
  mayBeNull: false,
105
131
  },
106
132
  {
107
- name: "queryId",
108
- type: "QueryId",
109
- isList: false,
133
+ name: "additionalInfos",
134
+ type: "AdditionalInfo",
135
+ isList: true,
110
136
  isOptional: false,
111
137
  mayBeNull: false,
112
138
  },
@@ -123,23 +149,23 @@ export const ResponseDefinitions: MessageGroup = {
123
149
  mayBeNull: false,
124
150
  },
125
151
  {
126
- name: "messageKind",
127
- type: "String",
152
+ name: "queryId",
153
+ type: "QueryId",
128
154
  isList: false,
129
155
  isOptional: false,
130
156
  mayBeNull: false,
131
157
  },
132
158
  {
133
- name: "protocolMessages",
134
- type: "ProtocolMessage",
135
- isList: true,
159
+ name: "messageKind",
160
+ type: "String",
161
+ isList: false,
136
162
  isOptional: false,
137
163
  mayBeNull: false,
138
164
  },
139
165
  {
140
- name: "queryId",
141
- type: "QueryId",
142
- isList: false,
166
+ name: "additionalInfos",
167
+ type: "AdditionalInfo",
168
+ isList: true,
143
169
  isOptional: false,
144
170
  mayBeNull: false,
145
171
  },
@@ -149,23 +175,23 @@ export const ResponseDefinitions: MessageGroup = {
149
175
  name: "SignOffResponse",
150
176
  properties: [
151
177
  {
152
- name: "messageKind",
153
- type: "String",
178
+ name: "queryId",
179
+ type: "QueryId",
154
180
  isList: false,
155
181
  isOptional: false,
156
182
  mayBeNull: false,
157
183
  },
158
184
  {
159
- name: "protocolMessages",
160
- type: "ProtocolMessage",
161
- isList: true,
185
+ name: "messageKind",
186
+ type: "String",
187
+ isList: false,
162
188
  isOptional: false,
163
189
  mayBeNull: false,
164
190
  },
165
191
  {
166
- name: "queryId",
167
- type: "QueryId",
168
- isList: false,
192
+ name: "additionalInfos",
193
+ type: "AdditionalInfo",
194
+ isList: true,
169
195
  isOptional: false,
170
196
  mayBeNull: false,
171
197
  },
@@ -182,23 +208,23 @@ export const ResponseDefinitions: MessageGroup = {
182
208
  mayBeNull: false,
183
209
  },
184
210
  {
185
- name: "messageKind",
186
- type: "String",
211
+ name: "queryId",
212
+ type: "QueryId",
187
213
  isList: false,
188
214
  isOptional: false,
189
215
  mayBeNull: false,
190
216
  },
191
217
  {
192
- name: "protocolMessages",
193
- type: "ProtocolMessage",
194
- isList: true,
218
+ name: "messageKind",
219
+ type: "String",
220
+ isList: false,
195
221
  isOptional: false,
196
222
  mayBeNull: false,
197
223
  },
198
224
  {
199
- name: "queryId",
200
- type: "QueryId",
201
- isList: false,
225
+ name: "additionalInfos",
226
+ type: "AdditionalInfo",
227
+ isList: true,
202
228
  isOptional: false,
203
229
  mayBeNull: false,
204
230
  },
@@ -215,23 +241,23 @@ export const ResponseDefinitions: MessageGroup = {
215
241
  mayBeNull: false,
216
242
  },
217
243
  {
218
- name: "messageKind",
219
- type: "String",
244
+ name: "queryId",
245
+ type: "QueryId",
220
246
  isList: false,
221
247
  isOptional: false,
222
248
  mayBeNull: false,
223
249
  },
224
250
  {
225
- name: "protocolMessages",
226
- type: "ProtocolMessage",
227
- isList: true,
251
+ name: "messageKind",
252
+ type: "String",
253
+ isList: false,
228
254
  isOptional: false,
229
255
  mayBeNull: false,
230
256
  },
231
257
  {
232
- name: "queryId",
233
- type: "QueryId",
234
- isList: false,
258
+ name: "additionalInfos",
259
+ type: "AdditionalInfo",
260
+ isList: true,
235
261
  isOptional: false,
236
262
  mayBeNull: false,
237
263
  },
@@ -247,6 +273,13 @@ export const ResponseDefinitions: MessageGroup = {
247
273
  isOptional: false,
248
274
  mayBeNull: false,
249
275
  },
276
+ {
277
+ name: "queryId",
278
+ type: "QueryId",
279
+ isList: false,
280
+ isOptional: false,
281
+ mayBeNull: false,
282
+ },
250
283
  {
251
284
  name: "messageKind",
252
285
  type: "String",
@@ -255,12 +288,31 @@ export const ResponseDefinitions: MessageGroup = {
255
288
  mayBeNull: false,
256
289
  },
257
290
  {
258
- name: "protocolMessages",
259
- type: "ProtocolMessage",
291
+ name: "additionalInfos",
292
+ type: "AdditionalInfo",
260
293
  isList: true,
261
294
  isOptional: false,
262
295
  mayBeNull: false,
263
296
  },
297
+ ],
298
+ },
299
+ {
300
+ name: "ErrorResponse",
301
+ properties: [
302
+ {
303
+ name: "errorCode",
304
+ type: "String",
305
+ isList: false,
306
+ isOptional: false,
307
+ mayBeNull: false,
308
+ },
309
+ {
310
+ name: "message",
311
+ type: "String",
312
+ isList: false,
313
+ isOptional: false,
314
+ mayBeNull: false,
315
+ },
264
316
  {
265
317
  name: "queryId",
266
318
  type: "QueryId",
@@ -268,6 +320,20 @@ export const ResponseDefinitions: MessageGroup = {
268
320
  isOptional: false,
269
321
  mayBeNull: false,
270
322
  },
323
+ {
324
+ name: "messageKind",
325
+ type: "String",
326
+ isList: false,
327
+ isOptional: false,
328
+ mayBeNull: false,
329
+ },
330
+ {
331
+ name: "additionalInfos",
332
+ type: "AdditionalInfo",
333
+ isList: true,
334
+ isOptional: false,
335
+ mayBeNull: false,
336
+ },
271
337
  ],
272
338
  },
273
339
  ],
@@ -5,3 +5,6 @@ export * from "./EventDefinitions.js"
5
5
  export * from "./QueryDefinitions.js"
6
6
  export * from "./RequestDefinitions.js"
7
7
  export * from "./ResponseDefinitions.js"
8
+ export * from "./AdminRequestDefinitions.js"
9
+ export * from "./AdminResponseDefinitions.js"
10
+ export * from "./AdminTypesDefinitions.js"
@@ -3,8 +3,15 @@ import { ValidationResult } from "../ValidationResult.js"
3
3
 
4
4
  export type UnknownObjectType = { [key: string]: unknown }
5
5
 
6
+ /**
7
+ * Type representing a function that validates a primitive value.
8
+ */
6
9
  export type PrimitiveValidatorFunction = <T>(obj: T, result: ValidationResult, ctx: JsonContext) => void
7
10
 
11
+ /**
12
+ * Represents a group of message beloning to the same group.
13
+ * Used for representing message groups in the delta protocol.
14
+ */
8
15
  export type MessageGroup = {
9
16
  name: string;
10
17
  taggedUnionProperty: string; // messageKind
@@ -25,23 +32,34 @@ export type StructuredType = {
25
32
  properties: PropertyDefinition[];
26
33
  }
27
34
 
35
+ /**
36
+ * Represents a group of type definitions.
37
+ * Used for both the bulk and the delta protocol.
38
+ */
28
39
  export type TypeGroup = {
29
40
  name: string;
30
41
  primitiveTypes: PrimitiveType[];
31
42
  structuredTypes: StructuredType[];
32
-
33
43
  }
44
+
34
45
  export type PrimitiveType = {
35
46
  name: string
36
47
  primitiveType: string;
37
48
  }
38
49
 
50
+ /**
51
+ * A `SyntaxDefinition` represents a collection of message- or type-groups that should be validated
52
+ * as a whole.
53
+ */
39
54
  export class SyntaxDefinition {
40
55
  // Maps to make searching easier and faster
41
56
  allPrimitiveTypes: Map<string, PrimitiveType> = new Map<string, PrimitiveType>()
42
57
  allStructuredTypes: Map<string, StructuredType> = new Map<string, StructuredType>()
43
58
  allMessageGroups: Map<string, MessageGroup> = new Map<string, MessageGroup>()
44
59
 
60
+ /**
61
+ * Map from a primitive type-name to the function used to validate values of that type.
62
+ */
45
63
  validateFunctions: Map<string, PrimitiveValidatorFunction> = new Map<string, PrimitiveValidatorFunction>()
46
64
 
47
65
  constructor(messageGroups: MessageGroup[], typeGroups: TypeGroup[]) {
@@ -61,6 +79,11 @@ export class SyntaxDefinition {
61
79
  })
62
80
  }
63
81
 
82
+ /**
83
+ * Add `validate` as the function to validate values of type `primitiveTypeName`.
84
+ * @param primitiveTypeName The type to be validated.
85
+ * @param validate The function performing the validation.
86
+ */
64
87
  addValidator(primitiveTypeName: string, validate: PrimitiveValidatorFunction): void {
65
88
  this.validateFunctions.set(primitiveTypeName, validate)
66
89
  }