@twin.org/auditable-item-stream-service 0.0.3-next.2 → 0.0.3-next.20

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 (28) hide show
  1. package/README.md +2 -2
  2. package/dist/es/auditableItemStreamRoutes.js +424 -130
  3. package/dist/es/auditableItemStreamRoutes.js.map +1 -1
  4. package/dist/es/auditableItemStreamService.js +325 -133
  5. package/dist/es/auditableItemStreamService.js.map +1 -1
  6. package/dist/es/entities/auditableItemStream.js +19 -5
  7. package/dist/es/entities/auditableItemStream.js.map +1 -1
  8. package/dist/es/models/IAuditableItemStreamServiceConstructorOptions.js.map +1 -1
  9. package/dist/es/models/IAuditableItemStreamServiceContext.js.map +1 -1
  10. package/dist/types/auditableItemStreamRoutes.d.ts +25 -1
  11. package/dist/types/auditableItemStreamService.d.ts +44 -37
  12. package/dist/types/entities/auditableItemStream.d.ts +11 -2
  13. package/dist/types/models/IAuditableItemStreamServiceConstructorOptions.d.ts +4 -0
  14. package/dist/types/models/IAuditableItemStreamServiceContext.d.ts +4 -0
  15. package/docs/changelog.md +336 -77
  16. package/docs/examples.md +211 -1
  17. package/docs/open-api/spec.json +724 -172
  18. package/docs/reference/classes/AuditableItemStream.md +32 -16
  19. package/docs/reference/classes/AuditableItemStreamEntry.md +13 -13
  20. package/docs/reference/classes/AuditableItemStreamService.md +107 -84
  21. package/docs/reference/functions/auditableItemStreamClose.md +31 -0
  22. package/docs/reference/functions/auditableItemStreamListEntriesNoStream.md +31 -0
  23. package/docs/reference/functions/auditableItemStreamListEntryObjectsNoStream.md +31 -0
  24. package/docs/reference/index.md +3 -0
  25. package/docs/reference/interfaces/IAuditableItemStreamServiceConfig.md +2 -2
  26. package/docs/reference/interfaces/IAuditableItemStreamServiceConstructorOptions.md +18 -10
  27. package/locales/en.json +6 -1
  28. package/package.json +6 -5
@@ -2,9 +2,9 @@
2
2
  // SPDX-License-Identifier: Apache-2.0.
3
3
  import { HttpParameterHelper } from "@twin.org/api-models";
4
4
  import { AuditableItemStreamContexts, AuditableItemStreamTypes } from "@twin.org/auditable-item-stream-models";
5
- import { Coerce, ComponentFactory, Guards } from "@twin.org/core";
5
+ import { Coerce, ComponentFactory, Guards, Is } from "@twin.org/core";
6
6
  import { SchemaOrgContexts, SchemaOrgTypes } from "@twin.org/standards-schema-org";
7
- import { HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
7
+ import { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
8
8
  /**
9
9
  * The source used when communicating about these routes.
10
10
  */
@@ -39,21 +39,31 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
39
39
  id: "auditableItemStreamCreateRequestExample",
40
40
  request: {
41
41
  body: {
42
+ "@context": [
43
+ SchemaOrgContexts.Context,
44
+ AuditableItemStreamContexts.Context,
45
+ AuditableItemStreamContexts.ContextCommon
46
+ ],
47
+ type: AuditableItemStreamTypes.Stream,
42
48
  annotationObject: {
43
49
  "@context": "https://schema.org",
44
50
  "@type": "Note",
45
51
  content: "This is a simple note"
46
52
  },
47
- entries: [
48
- {
49
- entryObject: {
50
- "@context": "https://schema.org",
51
- "@type": "Event",
52
- startDate: "2011-04-09T20:00:00Z",
53
- description: "A description of the event"
53
+ entries: {
54
+ type: SchemaOrgTypes.ItemList,
55
+ [SchemaOrgTypes.ItemListElement]: [
56
+ {
57
+ type: AuditableItemStreamTypes.StreamEntry,
58
+ entryObject: {
59
+ "@context": "https://schema.org",
60
+ "@type": "Event",
61
+ startDate: "2011-04-09T20:00:00Z",
62
+ description: "A description of the event"
63
+ }
54
64
  }
55
- }
56
- ]
65
+ ]
66
+ }
57
67
  }
58
68
  }
59
69
  }
@@ -69,7 +79,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
69
79
  response: {
70
80
  statusCode: HttpStatusCode.created,
71
81
  headers: {
72
- [HeaderTypes.Location]: "ais:1234567890"
82
+ [HeaderTypes.Location]: "ais%3A1234567890"
73
83
  }
74
84
  }
75
85
  }
@@ -109,8 +119,9 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
109
119
  response: {
110
120
  body: {
111
121
  "@context": [
112
- AuditableItemStreamContexts.ContextRoot,
113
- AuditableItemStreamContexts.ContextRootCommon
122
+ SchemaOrgContexts.Context,
123
+ AuditableItemStreamContexts.Context,
124
+ AuditableItemStreamContexts.ContextCommon
114
125
  ],
115
126
  type: AuditableItemStreamTypes.Stream,
116
127
  id: "ais:1234567890",
@@ -124,25 +135,29 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
124
135
  organizationIdentity: "did:iota:1234567890",
125
136
  proofId: "0101010101010101010101010101010101010101010101010101010101010101",
126
137
  immutableInterval: 10,
127
- entries: [
128
- {
129
- "@context": [
130
- AuditableItemStreamContexts.ContextRoot,
131
- AuditableItemStreamContexts.ContextRootCommon
132
- ],
133
- type: AuditableItemStreamTypes.StreamEntry,
134
- id: "tst:1234567890",
135
- dateCreated: "2024-08-22T11:55:16.271Z",
136
- proofId: "0101010101010101010101010101010101010101010101010101010101010101",
137
- index: 0,
138
- entryObject: {
139
- "@context": "https://schema.org",
140
- "@type": "Event",
141
- startDate: "2011-04-09T20:00:00Z",
142
- description: "A description of the event"
138
+ numberOfItems: 1,
139
+ entries: {
140
+ type: SchemaOrgTypes.ItemList,
141
+ [SchemaOrgTypes.ItemListElement]: [
142
+ {
143
+ "@context": [
144
+ AuditableItemStreamContexts.Context,
145
+ AuditableItemStreamContexts.ContextCommon
146
+ ],
147
+ type: AuditableItemStreamTypes.StreamEntry,
148
+ id: "tst:1234567890",
149
+ dateCreated: "2024-08-22T11:55:16.271Z",
150
+ proofId: "0101010101010101010101010101010101010101010101010101010101010101",
151
+ index: 0,
152
+ entryObject: {
153
+ "@context": "https://schema.org",
154
+ "@type": "Event",
155
+ startDate: "2011-04-09T20:00:00Z",
156
+ description: "A description of the event"
157
+ }
143
158
  }
144
- }
145
- ]
159
+ ]
160
+ }
146
161
  }
147
162
  }
148
163
  }
@@ -160,8 +175,9 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
160
175
  },
161
176
  body: {
162
177
  "@context": [
163
- AuditableItemStreamContexts.ContextRoot,
164
- AuditableItemStreamContexts.ContextRootCommon
178
+ SchemaOrgContexts.Context,
179
+ AuditableItemStreamContexts.Context,
180
+ AuditableItemStreamContexts.ContextCommon
165
181
  ],
166
182
  type: AuditableItemStreamTypes.Stream,
167
183
  id: "ais:1234567890",
@@ -175,25 +191,29 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
175
191
  organizationIdentity: "did:iota:1234567890",
176
192
  proofId: "0101010101010101010101010101010101010101010101010101010101010101",
177
193
  immutableInterval: 10,
178
- entries: [
179
- {
180
- "@context": [
181
- AuditableItemStreamContexts.ContextRoot,
182
- AuditableItemStreamContexts.ContextRootCommon
183
- ],
184
- type: AuditableItemStreamTypes.StreamEntry,
185
- id: "tst:1234567890",
186
- dateCreated: "2024-08-22T11:55:16.271Z",
187
- proofId: "0101010101010101010101010101010101010101010101010101010101010101",
188
- index: 0,
189
- entryObject: {
190
- "@context": "https://schema.org",
191
- "@type": "Event",
192
- startDate: "2011-04-09T20:00:00Z",
193
- description: "A description of the event"
194
+ numberOfItems: 1,
195
+ entries: {
196
+ type: SchemaOrgTypes.ItemList,
197
+ [SchemaOrgTypes.ItemListElement]: [
198
+ {
199
+ "@context": [
200
+ AuditableItemStreamContexts.Context,
201
+ AuditableItemStreamContexts.ContextCommon
202
+ ],
203
+ type: AuditableItemStreamTypes.StreamEntry,
204
+ id: "tst:1234567890",
205
+ dateCreated: "2024-08-22T11:55:16.271Z",
206
+ proofId: "0101010101010101010101010101010101010101010101010101010101010101",
207
+ index: 0,
208
+ entryObject: {
209
+ "@context": "https://schema.org",
210
+ "@type": "Event",
211
+ startDate: "2011-04-09T20:00:00Z",
212
+ description: "A description of the event"
213
+ }
194
214
  }
195
- }
196
- ]
215
+ ]
216
+ }
197
217
  }
198
218
  }
199
219
  }
@@ -221,6 +241,12 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
221
241
  id: "ais:1234567890"
222
242
  },
223
243
  body: {
244
+ "@context": [
245
+ SchemaOrgContexts.Context,
246
+ AuditableItemStreamContexts.Context,
247
+ AuditableItemStreamContexts.ContextCommon
248
+ ],
249
+ type: AuditableItemStreamTypes.Stream,
224
250
  annotationObject: {
225
251
  "@context": "https://schema.org",
226
252
  "@type": "Note",
@@ -269,6 +295,35 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
269
295
  }
270
296
  ]
271
297
  };
298
+ const closeRoute = {
299
+ operationId: "auditableItemStreamClose",
300
+ summary: "Close a stream",
301
+ tag: tagsAuditableItemStream[0].name,
302
+ method: "PUT",
303
+ path: `${baseRouteName}/:id/close`,
304
+ handler: async (httpRequestContext, request) => auditableItemStreamClose(httpRequestContext, componentName, request),
305
+ requestType: {
306
+ type: "IAuditableItemStreamCloseRequest",
307
+ examples: [
308
+ {
309
+ id: "auditableItemStreamCloseRequestExample",
310
+ request: {
311
+ pathParams: {
312
+ id: "ais:1234567890"
313
+ }
314
+ }
315
+ }
316
+ ]
317
+ },
318
+ responseType: [
319
+ {
320
+ type: "INoContentResponse"
321
+ },
322
+ {
323
+ type: "INotFoundResponse"
324
+ }
325
+ ]
326
+ };
272
327
  const listRoute = {
273
328
  operationId: "auditableItemStreamList",
274
329
  summary: "Query streams",
@@ -294,16 +349,17 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
294
349
  response: {
295
350
  body: {
296
351
  "@context": [
297
- SchemaOrgContexts.ContextRoot,
298
- AuditableItemStreamContexts.ContextRoot,
299
- AuditableItemStreamContexts.ContextRootCommon
352
+ SchemaOrgContexts.Context,
353
+ AuditableItemStreamContexts.Context,
354
+ AuditableItemStreamContexts.ContextCommon
300
355
  ],
301
356
  type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamList],
302
357
  [SchemaOrgTypes.ItemListElement]: [
303
358
  {
304
359
  "@context": [
305
- AuditableItemStreamContexts.ContextRoot,
306
- AuditableItemStreamContexts.ContextRootCommon
360
+ SchemaOrgContexts.Context,
361
+ AuditableItemStreamContexts.Context,
362
+ AuditableItemStreamContexts.ContextCommon
307
363
  ],
308
364
  type: AuditableItemStreamTypes.Stream,
309
365
  id: "ais:1234567890",
@@ -316,10 +372,10 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
316
372
  },
317
373
  organizationIdentity: "did:iota:1234567890",
318
374
  proofId: "0101010101010101010101010101010101010101010101010101010101010101",
319
- immutableInterval: 10
375
+ immutableInterval: 10,
376
+ numberOfItems: 0
320
377
  }
321
- ],
322
- [SchemaOrgTypes.NextItem]: "1"
378
+ ]
323
379
  }
324
380
  }
325
381
  }
@@ -337,16 +393,17 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
337
393
  },
338
394
  body: {
339
395
  "@context": [
340
- SchemaOrgContexts.ContextRoot,
341
- AuditableItemStreamContexts.ContextRoot,
342
- AuditableItemStreamContexts.ContextRootCommon
396
+ SchemaOrgContexts.Context,
397
+ AuditableItemStreamContexts.Context,
398
+ AuditableItemStreamContexts.ContextCommon
343
399
  ],
344
400
  type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamList],
345
401
  [SchemaOrgTypes.ItemListElement]: [
346
402
  {
347
403
  "@context": [
348
- AuditableItemStreamContexts.ContextRoot,
349
- AuditableItemStreamContexts.ContextRootCommon
404
+ SchemaOrgContexts.Context,
405
+ AuditableItemStreamContexts.Context,
406
+ AuditableItemStreamContexts.ContextCommon
350
407
  ],
351
408
  type: AuditableItemStreamTypes.Stream,
352
409
  id: "ais:1234567890",
@@ -359,10 +416,10 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
359
416
  },
360
417
  organizationIdentity: "did:iota:1234567890",
361
418
  proofId: "0101010101010101010101010101010101010101010101010101010101010101",
362
- immutableInterval: 10
419
+ immutableInterval: 10,
420
+ numberOfItems: 0
363
421
  }
364
- ],
365
- [SchemaOrgTypes.NextItem]: "1"
422
+ ]
366
423
  }
367
424
  }
368
425
  }
@@ -378,7 +435,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
378
435
  summary: "Create a new stream entry",
379
436
  tag: tagsAuditableItemStream[0].name,
380
437
  method: "POST",
381
- path: `${baseRouteName}/:id`,
438
+ path: `${baseRouteName}/:id/entries`,
382
439
  handler: async (httpRequestContext, request) => auditableItemStreamCreateEntry(httpRequestContext, componentName, request),
383
440
  requestType: {
384
441
  type: "IAuditableItemStreamCreateEntryRequest",
@@ -411,7 +468,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
411
468
  response: {
412
469
  statusCode: HttpStatusCode.created,
413
470
  headers: {
414
- [HeaderTypes.Location]: "ais:1234567890:01010101010"
471
+ [HeaderTypes.Location]: "ais%3A1234567890%3A01010101010"
415
472
  }
416
473
  }
417
474
  }
@@ -424,7 +481,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
424
481
  summary: "Delete an entry from the stream",
425
482
  tag: tagsAuditableItemStream[0].name,
426
483
  method: "DELETE",
427
- path: `${baseRouteName}/:id/:entryId`,
484
+ path: `${baseRouteName}/:id/entries/:entryId`,
428
485
  handler: async (httpRequestContext, request) => auditableItemStreamDeleteEntry(httpRequestContext, componentName, request),
429
486
  requestType: {
430
487
  type: "IAuditableItemStreamDeleteRequest",
@@ -454,7 +511,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
454
511
  summary: "Update a stream entry",
455
512
  tag: tagsAuditableItemStream[0].name,
456
513
  method: "PUT",
457
- path: `${baseRouteName}/:id/:entryId`,
514
+ path: `${baseRouteName}/:id/entries/:entryId`,
458
515
  handler: async (httpRequestContext, request) => auditableItemStreamUpdateEntry(httpRequestContext, componentName, request),
459
516
  requestType: {
460
517
  type: "IAuditableItemStreamUpdateEntryRequest",
@@ -491,7 +548,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
491
548
  summary: "Get a stream entry",
492
549
  tag: tagsAuditableItemStream[0].name,
493
550
  method: "GET",
494
- path: `${baseRouteName}/:id/:entryId`,
551
+ path: `${baseRouteName}/:id/entries/:entryId`,
495
552
  handler: async (httpRequestContext, request) => auditableItemStreamGetEntry(httpRequestContext, componentName, request),
496
553
  requestType: {
497
554
  type: "IAuditableItemStreamGetEntryRequest",
@@ -516,8 +573,8 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
516
573
  response: {
517
574
  body: {
518
575
  "@context": [
519
- AuditableItemStreamContexts.ContextRoot,
520
- AuditableItemStreamContexts.ContextRootCommon
576
+ AuditableItemStreamContexts.Context,
577
+ AuditableItemStreamContexts.ContextCommon
521
578
  ],
522
579
  type: AuditableItemStreamTypes.StreamEntry,
523
580
  id: "tst:1234567890",
@@ -547,8 +604,8 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
547
604
  },
548
605
  body: {
549
606
  "@context": [
550
- AuditableItemStreamContexts.ContextRoot,
551
- AuditableItemStreamContexts.ContextRootCommon
607
+ AuditableItemStreamContexts.Context,
608
+ AuditableItemStreamContexts.ContextCommon
552
609
  ],
553
610
  type: AuditableItemStreamTypes.StreamEntry,
554
611
  id: "tst:1234567890",
@@ -573,10 +630,10 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
573
630
  };
574
631
  const getEntryObjectRoute = {
575
632
  operationId: "auditableItemStreamGetEntryObject",
576
- summary: "Get a stream entry",
633
+ summary: "Get a stream entry object",
577
634
  tag: tagsAuditableItemStream[0].name,
578
635
  method: "GET",
579
- path: `${baseRouteName}/:id/:entryId/object`,
636
+ path: `${baseRouteName}/:id/entries/:entryId/object`,
580
637
  handler: async (httpRequestContext, request) => auditableItemStreamGetEntryObject(httpRequestContext, componentName, request),
581
638
  requestType: {
582
639
  type: "IAuditableItemStreamGetEntryRequest",
@@ -643,16 +700,16 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
643
700
  response: {
644
701
  body: {
645
702
  "@context": [
646
- SchemaOrgContexts.ContextRoot,
647
- AuditableItemStreamContexts.ContextRoot,
648
- AuditableItemStreamContexts.ContextRootCommon
703
+ SchemaOrgContexts.Context,
704
+ AuditableItemStreamContexts.Context,
705
+ AuditableItemStreamContexts.ContextCommon
649
706
  ],
650
707
  type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamEntryList],
651
708
  [SchemaOrgTypes.ItemListElement]: [
652
709
  {
653
710
  "@context": [
654
- AuditableItemStreamContexts.ContextRoot,
655
- AuditableItemStreamContexts.ContextRootCommon
711
+ AuditableItemStreamContexts.Context,
712
+ AuditableItemStreamContexts.ContextCommon
656
713
  ],
657
714
  type: AuditableItemStreamTypes.StreamEntry,
658
715
  id: "tst:1234567890",
@@ -666,8 +723,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
666
723
  description: "A description of the event"
667
724
  }
668
725
  }
669
- ],
670
- [SchemaOrgTypes.NextItem]: "1"
726
+ ]
671
727
  }
672
728
  }
673
729
  }
@@ -685,16 +741,16 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
685
741
  },
686
742
  body: {
687
743
  "@context": [
688
- SchemaOrgContexts.ContextRoot,
689
- AuditableItemStreamContexts.ContextRoot,
690
- AuditableItemStreamContexts.ContextRootCommon
744
+ SchemaOrgContexts.Context,
745
+ AuditableItemStreamContexts.Context,
746
+ AuditableItemStreamContexts.ContextCommon
691
747
  ],
692
748
  type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamEntryList],
693
749
  [SchemaOrgTypes.ItemListElement]: [
694
750
  {
695
751
  "@context": [
696
- AuditableItemStreamContexts.ContextRoot,
697
- AuditableItemStreamContexts.ContextRootCommon
752
+ AuditableItemStreamContexts.Context,
753
+ AuditableItemStreamContexts.ContextCommon
698
754
  ],
699
755
  type: AuditableItemStreamTypes.StreamEntry,
700
756
  id: "tst:1234567890",
@@ -708,8 +764,107 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
708
764
  description: "A description of the event"
709
765
  }
710
766
  }
767
+ ]
768
+ }
769
+ }
770
+ }
771
+ ]
772
+ },
773
+ {
774
+ type: "INotFoundResponse"
775
+ }
776
+ ]
777
+ };
778
+ const listEntriesNoStreamRoute = {
779
+ operationId: "auditableItemStreamListEntriesNoStream",
780
+ summary: "Get the entry objects for all streams",
781
+ tag: tagsAuditableItemStream[0].name,
782
+ method: "GET",
783
+ path: `${baseRouteName}/entries`,
784
+ handler: async (httpRequestContext, request) => auditableItemStreamListEntriesNoStream(httpRequestContext, componentName, request),
785
+ requestType: {
786
+ type: "IAuditableItemStreamListEntriesNoStreamRequest",
787
+ examples: [
788
+ {
789
+ id: "auditableItemStreamListEntriesNoStreamRequestExample",
790
+ request: {}
791
+ }
792
+ ]
793
+ },
794
+ responseType: [
795
+ {
796
+ type: "IAuditableItemStreamListEntriesResponse",
797
+ examples: [
798
+ {
799
+ id: "auditableItemStreamListEntriesNoStreamResponseExample",
800
+ response: {
801
+ body: {
802
+ "@context": [
803
+ SchemaOrgContexts.Context,
804
+ AuditableItemStreamContexts.Context,
805
+ AuditableItemStreamContexts.ContextCommon
711
806
  ],
712
- [SchemaOrgTypes.NextItem]: "1"
807
+ type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamEntryList],
808
+ [SchemaOrgTypes.ItemListElement]: [
809
+ {
810
+ "@context": [
811
+ AuditableItemStreamContexts.Context,
812
+ AuditableItemStreamContexts.ContextCommon
813
+ ],
814
+ type: AuditableItemStreamTypes.StreamEntry,
815
+ id: "tst:1234567890",
816
+ dateCreated: "2024-08-22T11:55:16.271Z",
817
+ proofId: "0101010101010101010101010101010101010101010101010101010101010101",
818
+ index: 0,
819
+ entryObject: {
820
+ "@context": "https://schema.org",
821
+ "@type": "Event",
822
+ startDate: "2011-04-09T20:00:00Z",
823
+ description: "A description of the event"
824
+ }
825
+ }
826
+ ]
827
+ }
828
+ }
829
+ }
830
+ ]
831
+ },
832
+ {
833
+ type: "IAuditableItemStreamListEntriesResponse",
834
+ mimeType: MimeTypes.JsonLd,
835
+ examples: [
836
+ {
837
+ id: "auditableItemStreamJsonLdListEntriesNoStreamResponseExample",
838
+ response: {
839
+ headers: {
840
+ [HeaderTypes.ContentType]: MimeTypes.JsonLd
841
+ },
842
+ body: {
843
+ "@context": [
844
+ SchemaOrgContexts.Context,
845
+ AuditableItemStreamContexts.Context,
846
+ AuditableItemStreamContexts.ContextCommon
847
+ ],
848
+ type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamEntryList],
849
+ [SchemaOrgTypes.ItemListElement]: [
850
+ {
851
+ "@context": [
852
+ AuditableItemStreamContexts.Context,
853
+ AuditableItemStreamContexts.ContextCommon
854
+ ],
855
+ type: AuditableItemStreamTypes.StreamEntry,
856
+ id: "tst:1234567890",
857
+ dateCreated: "2024-08-22T11:55:16.271Z",
858
+ proofId: "0101010101010101010101010101010101010101010101010101010101010101",
859
+ index: 0,
860
+ entryObject: {
861
+ "@context": "https://schema.org",
862
+ "@type": "Event",
863
+ startDate: "2011-04-09T20:00:00Z",
864
+ description: "A description of the event"
865
+ }
866
+ }
867
+ ]
713
868
  }
714
869
  }
715
870
  }
@@ -749,9 +904,9 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
749
904
  response: {
750
905
  body: {
751
906
  "@context": [
752
- SchemaOrgContexts.ContextRoot,
753
- AuditableItemStreamContexts.ContextRoot,
754
- AuditableItemStreamContexts.ContextRootCommon
907
+ SchemaOrgContexts.Context,
908
+ AuditableItemStreamContexts.Context,
909
+ AuditableItemStreamContexts.ContextCommon
755
910
  ],
756
911
  type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamEntryObjectList],
757
912
  [SchemaOrgTypes.ItemListElement]: [
@@ -761,8 +916,55 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
761
916
  startDate: "2011-04-09T20:00:00Z",
762
917
  description: "A description of the event"
763
918
  }
919
+ ]
920
+ }
921
+ }
922
+ }
923
+ ]
924
+ },
925
+ {
926
+ type: "INotFoundResponse"
927
+ }
928
+ ]
929
+ };
930
+ const listEntryObjectsNoStreamRoute = {
931
+ operationId: "auditableItemStreamListEntryObjectsNoStream",
932
+ summary: "Get the entry objects for all streams",
933
+ tag: tagsAuditableItemStream[0].name,
934
+ method: "GET",
935
+ path: `${baseRouteName}/entries/objects`,
936
+ handler: async (httpRequestContext, request) => auditableItemStreamListEntryObjectsNoStream(httpRequestContext, componentName, request),
937
+ requestType: {
938
+ type: "IAuditableItemStreamListEntryObjectsNoStreamRequest",
939
+ examples: [
940
+ {
941
+ id: "auditableItemStreamListEntryObjectsNoStreamRequestExample",
942
+ request: {}
943
+ }
944
+ ]
945
+ },
946
+ responseType: [
947
+ {
948
+ type: "IAuditableItemStreamListEntryObjectsResponse",
949
+ examples: [
950
+ {
951
+ id: "auditableItemStreamListEntryObjectsNoStreamResponseExample",
952
+ response: {
953
+ body: {
954
+ "@context": [
955
+ SchemaOrgContexts.Context,
956
+ AuditableItemStreamContexts.Context,
957
+ AuditableItemStreamContexts.ContextCommon
764
958
  ],
765
- [SchemaOrgTypes.NextItem]: "1"
959
+ type: [SchemaOrgTypes.ItemList, AuditableItemStreamTypes.StreamEntryObjectList],
960
+ [SchemaOrgTypes.ItemListElement]: [
961
+ {
962
+ "@context": "https://schema.org",
963
+ "@type": "Event",
964
+ startDate: "2011-04-09T20:00:00Z",
965
+ description: "A description of the event"
966
+ }
967
+ ]
766
968
  }
767
969
  }
768
970
  }
@@ -778,6 +980,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
778
980
  getRoute,
779
981
  updateRoute,
780
982
  deleteRoute,
983
+ closeRoute,
781
984
  listRoute,
782
985
  createEntryRoute,
783
986
  getEntryRoute,
@@ -785,7 +988,9 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
785
988
  deleteEntryRoute,
786
989
  updateEntryRoute,
787
990
  listEntriesRoute,
788
- listEntryObjectsRoute
991
+ listEntriesNoStreamRoute,
992
+ listEntryObjectsRoute,
993
+ listEntryObjectsNoStreamRoute
789
994
  ];
790
995
  }
791
996
  /**
@@ -799,12 +1004,7 @@ export async function auditableItemStreamCreate(httpRequestContext, componentNam
799
1004
  Guards.object(ROUTES_SOURCE, "request", request);
800
1005
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
801
1006
  const component = ComponentFactory.get(componentName);
802
- const id = await component.create({
803
- annotationObject: request.body.annotationObject,
804
- entries: request.body.entries
805
- }, {
806
- immutableInterval: request.body?.immutableInterval
807
- });
1007
+ const id = await component.create(request.body);
808
1008
  return {
809
1009
  statusCode: HttpStatusCode.created,
810
1010
  headers: {
@@ -823,19 +1023,23 @@ export async function auditableItemStreamGet(httpRequestContext, componentName,
823
1023
  Guards.object(ROUTES_SOURCE, "request", request);
824
1024
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
825
1025
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
826
- const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
1026
+ const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
827
1027
  const component = ComponentFactory.get(componentName);
828
- const result = await component.get(request.pathParams.id, {
1028
+ const result = await component.get(request.pathParams.id, request.query?.cursor, Coerce.integer(request.query?.limit), {
829
1029
  includeEntries: Coerce.boolean(request.query?.includeEntries),
830
1030
  includeDeleted: Coerce.boolean(request.query?.includeDeleted),
831
1031
  verifyStream: Coerce.boolean(request.query?.verifyStream),
832
1032
  verifyEntries: Coerce.boolean(request.query?.verifyEntries)
833
1033
  });
1034
+ const headers = {
1035
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1036
+ };
1037
+ if (Is.stringValue(result.cursor)) {
1038
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1039
+ }
834
1040
  return {
835
- headers: {
836
- [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
837
- },
838
- body: result
1041
+ headers,
1042
+ body: result.stream
839
1043
  };
840
1044
  }
841
1045
  /**
@@ -852,8 +1056,8 @@ export async function auditableItemStreamUpdate(httpRequestContext, componentNam
852
1056
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
853
1057
  const component = ComponentFactory.get(componentName);
854
1058
  await component.update({
855
- id: request.pathParams.id,
856
- annotationObject: request.body.annotationObject
1059
+ ...request.body,
1060
+ id: request.pathParams.id
857
1061
  });
858
1062
  return {
859
1063
  statusCode: HttpStatusCode.noContent
@@ -876,6 +1080,23 @@ export async function auditableItemStreamDelete(httpRequestContext, componentNam
876
1080
  statusCode: HttpStatusCode.noContent
877
1081
  };
878
1082
  }
1083
+ /**
1084
+ * Close the stream.
1085
+ * @param httpRequestContext The request context for the API.
1086
+ * @param componentName The name of the component to use in the routes.
1087
+ * @param request The request.
1088
+ * @returns The response object with additional http response properties.
1089
+ */
1090
+ export async function auditableItemStreamClose(httpRequestContext, componentName, request) {
1091
+ Guards.object(ROUTES_SOURCE, "request", request);
1092
+ Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
1093
+ Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
1094
+ const component = ComponentFactory.get(componentName);
1095
+ await component.close(request.pathParams.id);
1096
+ return {
1097
+ statusCode: HttpStatusCode.noContent
1098
+ };
1099
+ }
879
1100
  /**
880
1101
  * Query the stream.
881
1102
  * @param httpRequestContext The request context for the API.
@@ -886,14 +1107,18 @@ export async function auditableItemStreamDelete(httpRequestContext, componentNam
886
1107
  export async function auditableItemStreamList(httpRequestContext, componentName, request) {
887
1108
  Guards.object(ROUTES_SOURCE, "request", request);
888
1109
  Guards.object(ROUTES_SOURCE, "request.query", request.query);
1110
+ const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
889
1111
  const component = ComponentFactory.get(componentName);
890
- const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
891
1112
  const result = await component.query(HttpParameterHelper.objectFromString(request.query?.conditions), request.query?.orderBy, request.query?.orderByDirection, HttpParameterHelper.arrayFromString(request.query?.properties), request.query?.cursor, Coerce.integer(request.query?.limit));
1113
+ const headers = {
1114
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1115
+ };
1116
+ if (Is.stringValue(result.cursor)) {
1117
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1118
+ }
892
1119
  return {
893
- headers: {
894
- [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
895
- },
896
- body: result
1120
+ headers,
1121
+ body: result.entries
897
1122
  };
898
1123
  }
899
1124
  /**
@@ -968,14 +1193,15 @@ export async function auditableItemStreamGetEntry(httpRequestContext, componentN
968
1193
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
969
1194
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
970
1195
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.entryId", request.pathParams.entryId);
971
- const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
972
1196
  const component = ComponentFactory.get(componentName);
973
1197
  const result = await component.getEntry(request.pathParams.id, request.pathParams.entryId, {
974
1198
  verifyEntry: Coerce.boolean(request.query?.verifyEntry)
975
1199
  });
976
1200
  return {
977
1201
  headers: {
978
- [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
1202
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
1203
+ ? MimeTypes.JsonLd
1204
+ : MimeTypes.Json
979
1205
  },
980
1206
  body: result
981
1207
  };
@@ -992,12 +1218,13 @@ export async function auditableItemStreamGetEntryObject(httpRequestContext, comp
992
1218
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
993
1219
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
994
1220
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.entryId", request.pathParams.entryId);
995
- const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
996
1221
  const component = ComponentFactory.get(componentName);
997
1222
  const result = await component.getEntryObject(request.pathParams.id, request.pathParams.entryId);
998
1223
  return {
999
1224
  headers: {
1000
- [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
1225
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
1226
+ ? MimeTypes.JsonLd
1227
+ : MimeTypes.Json
1001
1228
  },
1002
1229
  body: result
1003
1230
  };
@@ -1013,8 +1240,8 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
1013
1240
  Guards.object(ROUTES_SOURCE, "request", request);
1014
1241
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
1015
1242
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
1243
+ const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1016
1244
  const component = ComponentFactory.get(componentName);
1017
- const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
1018
1245
  const result = await component.getEntries(request.pathParams.id, {
1019
1246
  conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
1020
1247
  includeDeleted: Coerce.boolean(request.query?.includeDeleted),
@@ -1023,11 +1250,45 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
1023
1250
  limit: Coerce.integer(request.query?.limit),
1024
1251
  cursor: request.query?.cursor
1025
1252
  });
1253
+ const headers = {
1254
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1255
+ };
1256
+ if (Is.stringValue(result.cursor)) {
1257
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1258
+ }
1026
1259
  return {
1027
- headers: {
1028
- [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
1029
- },
1030
- body: result
1260
+ headers,
1261
+ body: result.entries
1262
+ };
1263
+ }
1264
+ /**
1265
+ * Query the stream.
1266
+ * @param httpRequestContext The request context for the API.
1267
+ * @param componentName The name of the component to use in the routes.
1268
+ * @param request The request.
1269
+ * @returns The response object with additional http response properties.
1270
+ */
1271
+ export async function auditableItemStreamListEntriesNoStream(httpRequestContext, componentName, request) {
1272
+ Guards.object(ROUTES_SOURCE, "request", request);
1273
+ const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1274
+ const component = ComponentFactory.get(componentName);
1275
+ const result = await component.getEntries(undefined, {
1276
+ conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
1277
+ includeDeleted: Coerce.boolean(request.query?.includeDeleted),
1278
+ verifyEntries: Coerce.boolean(request.query?.verifyEntries),
1279
+ order: request.query?.order,
1280
+ limit: Coerce.integer(request.query?.limit),
1281
+ cursor: request.query?.cursor
1282
+ });
1283
+ const headers = {
1284
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1285
+ };
1286
+ if (Is.stringValue(result.cursor)) {
1287
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1288
+ }
1289
+ return {
1290
+ headers,
1291
+ body: result.entries
1031
1292
  };
1032
1293
  }
1033
1294
  /**
@@ -1041,8 +1302,8 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
1041
1302
  Guards.object(ROUTES_SOURCE, "request", request);
1042
1303
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
1043
1304
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
1305
+ const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1044
1306
  const component = ComponentFactory.get(componentName);
1045
- const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
1046
1307
  const result = await component.getEntryObjects(request.pathParams.id, {
1047
1308
  conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
1048
1309
  includeDeleted: Coerce.boolean(request.query?.includeDeleted),
@@ -1050,11 +1311,44 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
1050
1311
  limit: Coerce.integer(request.query?.limit),
1051
1312
  cursor: request.query?.cursor
1052
1313
  });
1314
+ const headers = {
1315
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1316
+ };
1317
+ if (Is.stringValue(result.cursor)) {
1318
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1319
+ }
1053
1320
  return {
1054
- headers: {
1055
- [HeaderTypes.ContentType]: mimeType === "json" ? MimeTypes.Json : MimeTypes.JsonLd
1056
- },
1057
- body: result
1321
+ headers,
1322
+ body: result.entries
1323
+ };
1324
+ }
1325
+ /**
1326
+ * Query the stream objects.
1327
+ * @param httpRequestContext The request context for the API.
1328
+ * @param componentName The name of the component to use in the routes.
1329
+ * @param request The request.
1330
+ * @returns The response object with additional http response properties.
1331
+ */
1332
+ export async function auditableItemStreamListEntryObjectsNoStream(httpRequestContext, componentName, request) {
1333
+ Guards.object(ROUTES_SOURCE, "request", request);
1334
+ const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1335
+ const component = ComponentFactory.get(componentName);
1336
+ const result = await component.getEntryObjects(undefined, {
1337
+ conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
1338
+ includeDeleted: Coerce.boolean(request.query?.includeDeleted),
1339
+ order: request.query?.order,
1340
+ limit: Coerce.integer(request.query?.limit),
1341
+ cursor: request.query?.cursor
1342
+ });
1343
+ const headers = {
1344
+ [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1345
+ };
1346
+ if (Is.stringValue(result.cursor)) {
1347
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1348
+ }
1349
+ return {
1350
+ headers,
1351
+ body: result.entries
1058
1352
  };
1059
1353
  }
1060
1354
  //# sourceMappingURL=auditableItemStreamRoutes.js.map