@lionweb/delta-protocol-common 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 (93) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -0
  3. package/dist/index.d.ts +5 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +21 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/logging/ansi.d.ts +44 -0
  8. package/dist/logging/ansi.d.ts.map +1 -0
  9. package/dist/logging/ansi.js +53 -0
  10. package/dist/logging/ansi.js.map +1 -0
  11. package/dist/logging/index.d.ts +4 -0
  12. package/dist/logging/index.d.ts.map +1 -0
  13. package/dist/logging/index.js +20 -0
  14. package/dist/logging/index.js.map +1 -0
  15. package/dist/logging/semantic-logging.d.ts +55 -0
  16. package/dist/logging/semantic-logging.d.ts.map +1 -0
  17. package/dist/logging/semantic-logging.js +88 -0
  18. package/dist/logging/semantic-logging.js.map +1 -0
  19. package/dist/logging/textual-logging.d.ts +22 -0
  20. package/dist/logging/textual-logging.d.ts.map +1 -0
  21. package/dist/logging/textual-logging.js +54 -0
  22. package/dist/logging/textual-logging.js.map +1 -0
  23. package/dist/payload/command-types.d.ts +319 -0
  24. package/dist/payload/command-types.d.ts.map +1 -0
  25. package/dist/payload/command-types.js +18 -0
  26. package/dist/payload/command-types.js.map +1 -0
  27. package/dist/payload/common.d.ts +13 -0
  28. package/dist/payload/common.d.ts.map +1 -0
  29. package/dist/payload/common.js +18 -0
  30. package/dist/payload/common.js.map +1 -0
  31. package/dist/payload/event-types.d.ts +378 -0
  32. package/dist/payload/event-types.d.ts.map +1 -0
  33. package/dist/payload/event-types.js +68 -0
  34. package/dist/payload/event-types.js.map +1 -0
  35. package/dist/payload/index.d.ts +5 -0
  36. package/dist/payload/index.d.ts.map +1 -0
  37. package/dist/payload/index.js +20 -0
  38. package/dist/payload/index.js.map +1 -0
  39. package/dist/payload/query-types.d.ts +73 -0
  40. package/dist/payload/query-types.d.ts.map +1 -0
  41. package/dist/payload/query-types.js +30 -0
  42. package/dist/payload/query-types.js.map +1 -0
  43. package/dist/translators/delta-to-command.d.ts +7 -0
  44. package/dist/translators/delta-to-command.d.ts.map +1 -0
  45. package/dist/translators/delta-to-command.js +297 -0
  46. package/dist/translators/delta-to-command.js.map +1 -0
  47. package/dist/translators/delta-to-event.d.ts +2 -0
  48. package/dist/translators/delta-to-event.d.ts.map +1 -0
  49. package/dist/translators/delta-to-event.js +19 -0
  50. package/dist/translators/delta-to-event.js.map +1 -0
  51. package/dist/translators/event-to-delta.d.ts +13 -0
  52. package/dist/translators/event-to-delta.d.ts.map +1 -0
  53. package/dist/translators/event-to-delta.js +293 -0
  54. package/dist/translators/event-to-delta.js.map +1 -0
  55. package/dist/translators/index.d.ts +4 -0
  56. package/dist/translators/index.d.ts.map +1 -0
  57. package/dist/translators/index.js +19 -0
  58. package/dist/translators/index.js.map +1 -0
  59. package/dist/utils/async.d.ts +13 -0
  60. package/dist/utils/async.d.ts.map +1 -0
  61. package/dist/utils/async.js +38 -0
  62. package/dist/utils/async.js.map +1 -0
  63. package/dist/utils/index.d.ts +5 -0
  64. package/dist/utils/index.d.ts.map +1 -0
  65. package/dist/utils/index.js +20 -0
  66. package/dist/utils/index.js.map +1 -0
  67. package/dist/utils/json.d.ts +7 -0
  68. package/dist/utils/json.d.ts.map +1 -0
  69. package/dist/utils/json.js +30 -0
  70. package/dist/utils/json.js.map +1 -0
  71. package/dist/utils/procedure.d.ts +14 -0
  72. package/dist/utils/procedure.d.ts.map +1 -0
  73. package/dist/utils/procedure.js +32 -0
  74. package/dist/utils/procedure.js.map +1 -0
  75. package/package.json +35 -0
  76. package/src/index.ts +22 -0
  77. package/src/logging/ansi.ts +63 -0
  78. package/src/logging/index.ts +21 -0
  79. package/src/logging/semantic-logging.ts +96 -0
  80. package/src/logging/textual-logging.ts +65 -0
  81. package/src/payload/command-types.ts +378 -0
  82. package/src/payload/common.ts +33 -0
  83. package/src/payload/event-types.ts +499 -0
  84. package/src/payload/index.ts +22 -0
  85. package/src/payload/query-types.ts +134 -0
  86. package/src/translators/delta-to-command.ts +378 -0
  87. package/src/translators/delta-to-event.ts +19 -0
  88. package/src/translators/event-to-delta.ts +384 -0
  89. package/src/translators/index.ts +21 -0
  90. package/src/utils/async.ts +50 -0
  91. package/src/utils/index.ts +22 -0
  92. package/src/utils/json.ts +32 -0
  93. package/src/utils/procedure.ts +43 -0
@@ -0,0 +1,499 @@
1
+ // Copyright 2025 TRUMPF Laser SE and other contributors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License")
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ import { LionWebId, LionWebJsonChunk, LionWebJsonMetaPointer } from "@lionweb/json"
19
+ import { mapFrom } from "@lionweb/ts-utils"
20
+ import { DeltaProtocolMessage, Message } from "./common.js"
21
+
22
+ export type CommandOrigin = {
23
+ participationId: LionWebId
24
+ commandId: LionWebId
25
+ }
26
+
27
+ export interface Event extends DeltaProtocolMessage {
28
+ originCommands: CommandOrigin[]
29
+ sequenceNumber: number
30
+ }
31
+
32
+
33
+ // in order of the specification (§ 6.6):
34
+
35
+ /** § 6.6.1.1 */
36
+ export interface PartitionAddedEvent extends Event {
37
+ messageKind: "PartitionAdded"
38
+ newPartition: LionWebJsonChunk
39
+ }
40
+
41
+ /** § 6.6.1.2 */
42
+ export interface PartitionDeletedEvent extends Event {
43
+ messageKind: "PartitionDeleted"
44
+ deletedPartition: LionWebId
45
+ }
46
+
47
+ /** § 6.6.2.1 */
48
+ export interface ClassifierChangedEvent extends Event {
49
+ messageKind: "ClassifierChanged"
50
+ node: LionWebId
51
+ newClassifier: LionWebJsonMetaPointer
52
+ oldClassifier: LionWebJsonMetaPointer
53
+ }
54
+
55
+ /** § 6.6.3.1 */
56
+ export interface PropertyAddedEvent<T> extends Event {
57
+ messageKind: "PropertyAdded"
58
+ node: LionWebId
59
+ property: LionWebJsonMetaPointer
60
+ newValue: T
61
+ }
62
+
63
+ /** § 6.6.3.2 */
64
+ export interface PropertyDeletedEvent<T> extends Event {
65
+ messageKind: "PropertyDeleted"
66
+ node: LionWebId
67
+ property: LionWebJsonMetaPointer
68
+ oldValue: T
69
+ }
70
+
71
+ /** § 6.6.3.3 */
72
+ export interface PropertyChangedEvent<T> extends Event {
73
+ messageKind: "PropertyChanged"
74
+ node: LionWebId
75
+ property: LionWebJsonMetaPointer
76
+ oldValue: T
77
+ newValue: T
78
+ }
79
+
80
+ /** § 6.6.4.1 */
81
+ export interface ChildAddedEvent extends Event {
82
+ messageKind: "ChildAdded"
83
+ parent: LionWebId
84
+ newChild: LionWebJsonChunk
85
+ containment: LionWebJsonMetaPointer
86
+ index: number
87
+ }
88
+
89
+ /** § 6.6.4.2 */
90
+ export interface ChildDeletedEvent extends Event {
91
+ messageKind: "ChildDeleted"
92
+ deletedChild: LionWebId
93
+ deletedDescendants: LionWebId[]
94
+ parent: LionWebId
95
+ containment: LionWebJsonMetaPointer
96
+ index: number
97
+ }
98
+
99
+ /** § 6.6.4.3 */
100
+ export interface ChildReplacedEvent extends Event {
101
+ messageKind: "ChildReplaced"
102
+ newChild: LionWebJsonChunk
103
+ replacedChild: LionWebId
104
+ replacedDescendants: LionWebId[]
105
+ parent: LionWebId
106
+ containment: LionWebJsonMetaPointer
107
+ index: number
108
+ }
109
+
110
+ /** § 6.6.4.4 */
111
+ export interface ChildMovedFromOtherContainmentEvent extends Event {
112
+ messageKind: "ChildMovedFromOtherContainment"
113
+ newParent: LionWebId
114
+ newContainment: LionWebJsonMetaPointer
115
+ newIndex: number
116
+ movedChild: LionWebId
117
+ oldParent: LionWebId
118
+ oldContainment: LionWebJsonMetaPointer
119
+ oldIndex: number
120
+ }
121
+
122
+ /** § 6.6.4.5 */
123
+ export interface ChildMovedFromOtherContainmentInSameParentEvent extends Event {
124
+ messageKind: "ChildMovedFromOtherContainmentInSameParent"
125
+ newContainment: LionWebJsonMetaPointer
126
+ newIndex: number
127
+ movedChild: LionWebId
128
+ parent: LionWebId
129
+ oldContainment: LionWebJsonMetaPointer
130
+ oldIndex: number
131
+ }
132
+
133
+ /** § 6.6.4.6 */
134
+ export interface ChildMovedInSameContainmentEvent extends Event {
135
+ messageKind: "ChildMovedInSameContainment"
136
+ newIndex: number
137
+ movedChild: LionWebId
138
+ parent: LionWebId
139
+ containment: LionWebJsonMetaPointer
140
+ oldIndex: number
141
+ }
142
+
143
+ /** § 6.6.4.7 */
144
+ export interface ChildMovedAndReplacedFromOtherContainmentEvent extends Event {
145
+ messageKind: "ChildMovedAndReplacedFromOtherContainment"
146
+ newParent: LionWebId
147
+ newContainment: LionWebJsonMetaPointer
148
+ newIndex: number
149
+ movedChild: LionWebId
150
+ oldParent: LionWebId
151
+ oldContainment: LionWebJsonMetaPointer
152
+ oldIndex: number
153
+ replacedChild: LionWebId
154
+ replacedDescendants: LionWebId[]
155
+ }
156
+
157
+ /** § 6.6.4.8 */
158
+ export interface ChildMovedAndReplacedFromOtherContainmentInSameParentEvent extends Event {
159
+ messageKind: "ChildMovedAndReplacedFromOtherContainmentInSameParent"
160
+ newContainment: LionWebJsonMetaPointer
161
+ newIndex: number
162
+ movedChild: LionWebId
163
+ parent: LionWebId
164
+ oldContainment: LionWebJsonMetaPointer
165
+ oldIndex: number
166
+ replacedChild: LionWebId
167
+ replacedDescendants: LionWebId[]
168
+ }
169
+
170
+ /** § 6.6.4.9 */
171
+ export interface ChildMovedAndReplacedInSameContainmentEvent extends Event {
172
+ messageKind: "ChildMovedAndReplacedInSameContainment"
173
+ newIndex: number
174
+ movedChild: LionWebId
175
+ parent: LionWebId
176
+ containment: LionWebJsonMetaPointer
177
+ oldIndex: number
178
+ replacedChild: LionWebId
179
+ replacedDescendants: LionWebId[]
180
+ }
181
+
182
+ /** § 6.6.5.1 */
183
+ export interface AnnotationAddedEvent extends Event {
184
+ messageKind: "AnnotationAdded"
185
+ parent: LionWebId
186
+ newAnnotation: LionWebJsonChunk
187
+ index: number
188
+ }
189
+
190
+ /** § 6.6.5.2 */
191
+ export interface AnnotationDeletedEvent extends Event {
192
+ messageKind: "AnnotationDeleted"
193
+ deletedAnnotation: LionWebId
194
+ deletedDescendants: LionWebId[]
195
+ parent: LionWebId
196
+ index: number
197
+ }
198
+
199
+ /** § 6.6.5.3 */
200
+ export interface AnnotationReplacedEvent extends Event {
201
+ messageKind: "AnnotationReplaced"
202
+ newAnnotation: LionWebJsonChunk
203
+ replacedAnnotation: LionWebId
204
+ replacedDescendants: LionWebId[]
205
+ parent: LionWebId
206
+ index: number
207
+ }
208
+
209
+ /** § 6.6.5.4 */
210
+ export interface AnnotationMovedFromOtherParentEvent extends Event {
211
+ messageKind: "AnnotationMovedFromOtherParent"
212
+ newParent: LionWebId
213
+ newIndex: number
214
+ movedAnnotation: LionWebId
215
+ oldParent: LionWebId
216
+ oldIndex: number
217
+ }
218
+
219
+ /** § 6.6.5.5 */
220
+ export interface AnnotationMovedInSameParentEvent extends Event {
221
+ messageKind: "AnnotationMovedInSameParent"
222
+ newIndex: number
223
+ movedAnnotation: LionWebId
224
+ parent: LionWebId
225
+ oldIndex: number
226
+ }
227
+
228
+ /** § 6.6.5.6 */
229
+ export interface AnnotationMovedAndReplacedFromOtherParentEvent extends Event {
230
+ messageKind: "AnnotationMovedAndReplacedFromOtherParent"
231
+ newParent: LionWebId
232
+ newIndex: number
233
+ movedAnnotation: LionWebId
234
+ oldParent: LionWebId
235
+ oldIndex: number
236
+ replacedAnnotation: LionWebId
237
+ replacedDescendants: LionWebId[]
238
+ }
239
+
240
+ /** § 6.6.5.7 */
241
+ export interface AnnotationMovedAndReplacedInSameParentEvent extends Event {
242
+ messageKind: "AnnotationMovedAndReplacedInSameParent"
243
+ newIndex: number
244
+ movedAnnotation: LionWebId
245
+ parent: LionWebId
246
+ oldIndex: number
247
+ replacedAnnotation: LionWebId
248
+ replacedDescendants: LionWebId[]
249
+ }
250
+
251
+ /** § 6.6.6.1 */
252
+ export interface ReferenceAddedEvent extends Event {
253
+ messageKind: "ReferenceAdded"
254
+ parent: LionWebId
255
+ reference: LionWebJsonMetaPointer
256
+ index: number
257
+ newTarget: LionWebId | null
258
+ newResolveInfo: string | null
259
+ }
260
+
261
+ /** § 6.6.6.2 */
262
+ export interface ReferenceDeletedEvent extends Event {
263
+ messageKind: "ReferenceDeleted"
264
+ parent: LionWebId
265
+ reference: LionWebJsonMetaPointer
266
+ index: number
267
+ deletedTarget: LionWebId | null
268
+ deletedResolveInfo: string | null
269
+ }
270
+
271
+ /** § 6.6.6.3 */
272
+ export interface ReferenceChangedEvent extends Event {
273
+ messageKind: "ReferenceChanged"
274
+ parent: LionWebId
275
+ reference: LionWebJsonMetaPointer
276
+ index: number
277
+ newTarget: LionWebId | null
278
+ newResolveInfo: string | null
279
+ oldTarget: LionWebId | null
280
+ oldResolveInfo: string | null
281
+ }
282
+
283
+ /** § 6.6.6.4 */
284
+ export interface EntryMovedFromOtherReferenceEvent extends Event {
285
+ messageKind: "EntryMovedFromOtherReference"
286
+ newParent: LionWebId
287
+ newReference: LionWebJsonMetaPointer
288
+ newIndex: number
289
+ oldParent: LionWebId
290
+ oldReference: LionWebJsonMetaPointer
291
+ oldIndex: number
292
+ movedTarget: LionWebId | null
293
+ movedResolveInfo: string | null
294
+ }
295
+
296
+ /** § 6.6.6.5 */
297
+ export interface EntryMovedFromOtherReferenceInSameParentEvent extends Event {
298
+ messageKind: "EntryMovedFromOtherReferenceInSameParent"
299
+ parent: LionWebId
300
+ newReference: LionWebJsonMetaPointer
301
+ newIndex: number
302
+ oldReference: LionWebJsonMetaPointer
303
+ oldIndex: number
304
+ movedTarget: LionWebId | null
305
+ movedResolveInfo: string | null
306
+ }
307
+
308
+ /** § 6.6.6.6 */
309
+ export interface EntryMovedInSameReferenceEvent extends Event {
310
+ messageKind: "EntryMovedInSameReference"
311
+ parent: LionWebId
312
+ reference: LionWebJsonMetaPointer
313
+ oldIndex: number
314
+ newIndex: number
315
+ movedTarget: LionWebId | null
316
+ movedResolveInfo: string | null
317
+ }
318
+
319
+ /** § 6.6.6.7 */
320
+ export interface EntryMovedAndReplacedFromOtherReferenceEvent extends Event {
321
+ messageKind: "EntryMovedAndReplacedFromOtherReference"
322
+ newParent: LionWebId
323
+ newReference: LionWebJsonMetaPointer
324
+ newIndex: number
325
+ movedTarget: LionWebId | null
326
+ movedResolveInfo: string | null
327
+ oldParent: LionWebId
328
+ oldReference: LionWebJsonMetaPointer
329
+ oldIndex: number
330
+ replacedTarget: LionWebId | null
331
+ replacedResolveInfo: string | null
332
+ }
333
+
334
+ /** § 6.6.6.8 */
335
+ export interface EntryMovedAndReplacedFromOtherReferenceInSameParentEvent extends Event {
336
+ messageKind: "EntryMovedAndReplacedFromOtherReferenceInSameParent"
337
+ parent: LionWebId
338
+ newReference: LionWebJsonMetaPointer
339
+ newIndex: number
340
+ movedTarget: LionWebId | null
341
+ movedResolveInfo: string | null
342
+ oldReference: LionWebJsonMetaPointer
343
+ oldIndex: number
344
+ replacedTarget: LionWebId | null
345
+ replacedResolveInfo: string | null
346
+ }
347
+
348
+ /** § 6.6.6.9 */
349
+ export interface EntryMovedAndReplacedInSameReferenceEvent extends Event {
350
+ messageKind: "EntryMovedAndReplacedInSameReference"
351
+ parent: LionWebId
352
+ reference: LionWebJsonMetaPointer
353
+ newIndex: number
354
+ movedTarget: LionWebId | null
355
+ movedResolveInfo: string | null
356
+ oldIndex: number
357
+ replacedTarget: LionWebId | null
358
+ replacedResolveInfo: string | null
359
+ }
360
+
361
+ /** § 6.6.6.10 */
362
+ export interface ReferenceResolveInfoAddedEvent extends Event {
363
+ messageKind: "ReferenceResolveInfoAdded"
364
+ parent: LionWebId
365
+ reference: LionWebJsonMetaPointer
366
+ index: number
367
+ newResolveInfo: string
368
+ target: LionWebId
369
+ }
370
+
371
+ /** § 6.6.6.11 */
372
+ export interface ReferenceResolveInfoDeletedEvent extends Event {
373
+ messageKind: "ReferenceResolveInfoDeleted"
374
+ parent: LionWebId
375
+ reference: LionWebJsonMetaPointer
376
+ index: number
377
+ deletedResolveInfo: string
378
+ target: LionWebId
379
+ }
380
+
381
+ /** § 6.6.6.12 */
382
+ export interface ReferenceResolveInfoChangedEvent extends Event {
383
+ messageKind: "ReferenceResolveInfoChanged"
384
+ parent: LionWebId
385
+ reference: LionWebJsonMetaPointer
386
+ index: number
387
+ newResolveInfo: string
388
+ target: LionWebId | null
389
+ oldResolveInfo: string
390
+ }
391
+
392
+ /** § 6.6.6.13 */
393
+ export interface ReferenceTargetAddedEvent extends Event {
394
+ messageKind: "ReferenceTargetAdded"
395
+ parent: LionWebId
396
+ reference: LionWebJsonMetaPointer
397
+ index: number
398
+ newTarget: LionWebId | null
399
+ resolveInfo: string
400
+ }
401
+
402
+ /** § 6.6.6.14 */
403
+ export interface ReferenceTargetDeletedEvent extends Event {
404
+ messageKind: "ReferenceTargetDeleted"
405
+ parent: LionWebId
406
+ reference: LionWebJsonMetaPointer
407
+ index: number
408
+ resolveInfo: string | null
409
+ deletedTarget: LionWebId
410
+ }
411
+
412
+ /** § 6.6.6.15 */
413
+ export interface ReferenceTargetChangedEvent extends Event {
414
+ messageKind: "ReferenceTargetChanged"
415
+ parent: LionWebId
416
+ reference: LionWebJsonMetaPointer
417
+ index: number
418
+ newTarget: LionWebId
419
+ resolveInfo: string | null
420
+ replacedTarget: LionWebId
421
+ }
422
+
423
+ /** § 6.6.7.1 */
424
+ export interface CompositeEvent extends Event {
425
+ messageKind: "CompositeEvent"
426
+ parts: Event[]
427
+ }
428
+
429
+ /** § 6.6.7.2 */
430
+ export interface NoOpEvent extends Event {
431
+ messageKind: "NoOp"
432
+ }
433
+
434
+ /** § 6.6.7.3 */
435
+ export interface ErrorEvent extends Event {
436
+ messageKind: "Error"
437
+ errorCode: string
438
+ message: string
439
+ }
440
+
441
+
442
+ /*
443
+ * **DEV note**: run
444
+ *
445
+ * $ node src/code-reading/event-message-kinds.js
446
+ *
447
+ * inside the build package to generate the contents of the following array.
448
+ */
449
+
450
+ const eventMessageKinds = mapFrom(
451
+ [
452
+ "PartitionAdded",
453
+ "PartitionDeleted",
454
+ "ClassifierChanged",
455
+ "PropertyAdded",
456
+ "PropertyDeleted",
457
+ "PropertyChanged",
458
+ "ChildAdded",
459
+ "ChildDeleted",
460
+ "ChildReplaced",
461
+ "ChildMovedFromOtherContainment",
462
+ "ChildMovedFromOtherContainmentInSameParent",
463
+ "ChildMovedInSameContainment",
464
+ "ChildMovedAndReplacedFromOtherContainment",
465
+ "ChildMovedAndReplacedFromOtherContainmentInSameParent",
466
+ "ChildMovedAndReplacedInSameContainment",
467
+ "AnnotationAdded",
468
+ "AnnotationDeleted",
469
+ "AnnotationReplaced",
470
+ "AnnotationMovedFromOtherParent",
471
+ "AnnotationMovedInSameParent",
472
+ "AnnotationMovedAndReplacedFromOtherParent",
473
+ "AnnotationMovedAndReplacedInSameParent",
474
+ "ReferenceAdded",
475
+ "ReferenceDeleted",
476
+ "ReferenceChanged",
477
+ "EntryMovedFromOtherReference",
478
+ "EntryMovedFromOtherReferenceInSameParent",
479
+ "EntryMovedInSameReference",
480
+ "EntryMovedAndReplacedFromOtherReference",
481
+ "EntryMovedAndReplacedFromOtherReferenceInSameParent",
482
+ "EntryMovedAndReplacedInSameReference",
483
+ "ReferenceResolveInfoAdded",
484
+ "ReferenceResolveInfoDeleted",
485
+ "ReferenceResolveInfoChanged",
486
+ "ReferenceTargetAdded",
487
+ "ReferenceTargetDeleted",
488
+ "ReferenceTargetChanged",
489
+ "CompositeEvent",
490
+ "NoOp",
491
+ "Error"
492
+ ],
493
+ (messageKind) => messageKind,
494
+ (_) => true
495
+ )
496
+
497
+ export const isEvent = (message: Message): message is Event =>
498
+ message.messageKind in eventMessageKinds
499
+
@@ -0,0 +1,22 @@
1
+ // Copyright 2025 TRUMPF Laser SE and other contributors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License")
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ export * from "./command-types.js"
19
+ export type * from "./common.js"
20
+ export * from "./event-types.js"
21
+ export * from "./query-types.js"
22
+
@@ -0,0 +1,134 @@
1
+ // Copyright 2025 TRUMPF Laser SE and other contributors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License")
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ import { LionWebId, LionWebJsonChunk } from "@lionweb/json"
19
+ import { mapFrom } from "@lionweb/ts-utils"
20
+ import { DeltaProtocolMessage, Message } from "./common.js"
21
+
22
+ /**
23
+ * Super interface for both query request and response messages.
24
+ */
25
+ export interface QueryMessage extends DeltaProtocolMessage {
26
+ queryId: LionWebId
27
+ }
28
+
29
+
30
+ // in order of the specification (§ 6.3):
31
+
32
+ export interface SubscribeToPartitionChangesParameters {
33
+ creation: boolean
34
+ deletion: boolean
35
+ partitions: boolean
36
+ }
37
+
38
+ export interface SubscribeToChangingPartitionsRequest extends QueryMessage, SubscribeToPartitionChangesParameters {
39
+ messageKind: "SubscribeToChangingPartitionsRequest"
40
+ }
41
+
42
+ export interface SubscribeToChangingPartitionsResponse extends QueryMessage {
43
+ messageKind: "SubscribeToChangingPartitionsResponse"
44
+ }
45
+
46
+
47
+ export interface SubscribeToPartitionContentsRequest extends QueryMessage {
48
+ messageKind: "SubscribeToPartitionContentsRequest"
49
+ partition: LionWebId
50
+ }
51
+
52
+ export interface SubscribeToPartitionContentsResponse extends QueryMessage {
53
+ messageKind: "SubscribeToPartitionContentsResponse"
54
+ contents: LionWebJsonChunk
55
+ }
56
+
57
+
58
+ export interface UnsubscribeFromPartitionContentsRequest extends QueryMessage {
59
+ messageKind: "UnsubscribeFromPartitionContentsRequest"
60
+ partition: LionWebId
61
+ }
62
+
63
+ export interface UnsubscribeFromPartitionContentsResponse extends QueryMessage {
64
+ messageKind: "UnsubscribeFromPartitionContentsResponse"
65
+ }
66
+
67
+
68
+ export interface SignOnRequest extends QueryMessage {
69
+ messageKind: "SignOnRequest"
70
+ deltaProtocolVersion: "2025.1"
71
+ clientId: LionWebId
72
+ repositoryId: LionWebId
73
+ }
74
+
75
+ export interface SignOnResponse extends QueryMessage {
76
+ messageKind: "SignOnResponse"
77
+ participationId: LionWebId
78
+ }
79
+
80
+
81
+ export interface SignOffRequest extends QueryMessage {
82
+ messageKind: "SignOffRequest"
83
+ }
84
+
85
+ export interface SignOffResponse extends QueryMessage {
86
+ messageKind: "SignOffResponse"
87
+ }
88
+
89
+
90
+ export interface ReconnectRequest extends QueryMessage {
91
+ messageKind: "ReconnectRequest"
92
+ participationId: LionWebId
93
+ lastReceivedSequenceNumber: number
94
+ }
95
+
96
+ export interface ReconnectResponse extends QueryMessage {
97
+ messageKind: "ReconnectResponse"
98
+ lastReceivedSequenceNumber: number
99
+ }
100
+
101
+
102
+ export interface GetAvailableIdsRequest extends QueryMessage {
103
+ messageKind: "GetAvailableIdsRequest"
104
+ count: number
105
+ }
106
+
107
+ export interface GetAvailableIdsResponse extends QueryMessage {
108
+ messageKind: "GetAvailableIdsResponse"
109
+ ids: LionWebId[]
110
+ }
111
+
112
+
113
+ export interface ListPartitionsRequest extends QueryMessage {
114
+ messageKind: "ListPartitionsRequest"
115
+ partitions: LionWebJsonChunk
116
+ }
117
+
118
+
119
+ const queryMessageKinds = [
120
+ "SubscribeToChangingPartitions",
121
+ "SubscribeToPartitionContents",
122
+ "UnsubscribeFromPartitionContents",
123
+ "SignOn",
124
+ "SignOff",
125
+ "Reconnect",
126
+ "GetAvailableIds",
127
+ "ListPartitions"
128
+ ]
129
+
130
+ const queryResponseMessageKinds = mapFrom(queryMessageKinds, (str) => `${str}Response`, (_) => true)
131
+
132
+ export const isQueryResponse = (message: Message): message is QueryMessage =>
133
+ message.messageKind in queryResponseMessageKinds
134
+