@twin.org/auditable-item-stream-service 0.0.3-next.2 → 0.0.3-next.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 (29) hide show
  1. package/README.md +2 -2
  2. package/dist/es/auditableItemStreamRoutes.js +471 -130
  3. package/dist/es/auditableItemStreamRoutes.js.map +1 -1
  4. package/dist/es/auditableItemStreamService.js +330 -138
  5. package/dist/es/auditableItemStreamService.js.map +1 -1
  6. package/dist/es/entities/auditableItemStream.js +20 -6
  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 +33 -1
  11. package/dist/types/auditableItemStreamService.d.ts +44 -37
  12. package/dist/types/entities/auditableItemStream.d.ts +12 -3
  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 +355 -77
  16. package/docs/examples.md +211 -1
  17. package/docs/open-api/spec.json +839 -177
  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/functions/auditableItemStreamRemoveProof.md +31 -0
  25. package/docs/reference/index.md +4 -0
  26. package/docs/reference/interfaces/IAuditableItemStreamServiceConfig.md +2 -2
  27. package/docs/reference/interfaces/IAuditableItemStreamServiceConstructorOptions.md +18 -10
  28. package/locales/en.json +6 -1
  29. package/package.json +6 -5
package/docs/examples.md CHANGED
@@ -1 +1,211 @@
1
- # @twin.org/auditable-item-stream-service - Examples
1
+ # Auditable Item Stream Service Examples
2
+
3
+ Use these examples to wire the service with your storage components and run full stream and entry lifecycles.
4
+
5
+ ## AuditableItemStreamService
6
+
7
+ ```typescript
8
+ import { AuditableItemStreamService, initSchema } from '@twin.org/auditable-item-stream-service';
9
+
10
+ initSchema();
11
+
12
+ const service = new AuditableItemStreamService({
13
+ immutableProofComponentType: 'immutable-proof',
14
+ streamEntityStorageType: 'auditable-item-stream',
15
+ streamEntryEntityStorageType: 'auditable-item-stream-entry'
16
+ });
17
+
18
+ console.log(service.className()); // AuditableItemStreamService
19
+ ```
20
+
21
+ ```typescript
22
+ import { AuditableItemStreamService } from '@twin.org/auditable-item-stream-service';
23
+
24
+ const service = new AuditableItemStreamService({
25
+ immutableProofComponentType: 'immutable-proof',
26
+ streamEntityStorageType: 'auditable-item-stream',
27
+ streamEntryEntityStorageType: 'auditable-item-stream-entry'
28
+ });
29
+
30
+ const streamId = await service.create(
31
+ {
32
+ annotationObject: {
33
+ '@context': 'https://schema.org',
34
+ '@type': 'Project',
35
+ name: 'Quarterly Assurance'
36
+ },
37
+ entries: [
38
+ {
39
+ entryObject: {
40
+ '@context': 'https://schema.org',
41
+ '@type': 'Event',
42
+ name: 'Project opened'
43
+ }
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ immutableInterval: 3
49
+ }
50
+ );
51
+
52
+ const stream = await service.get(streamId, {
53
+ includeEntries: true,
54
+ verifyStream: true,
55
+ verifyEntries: true
56
+ });
57
+
58
+ await service.update({
59
+ id: streamId,
60
+ annotationObject: {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'Project',
63
+ name: 'Quarterly Assurance Updated'
64
+ }
65
+ });
66
+
67
+ console.log(stream.id); // ais:...
68
+ console.log(stream.numberOfItems); // 1
69
+ ```
70
+
71
+ ```typescript
72
+ import { AuditableItemStreamService } from '@twin.org/auditable-item-stream-service';
73
+ import { ComparisonOperator, SortDirection } from '@twin.org/entity';
74
+
75
+ const service = new AuditableItemStreamService({
76
+ immutableProofComponentType: 'immutable-proof',
77
+ streamEntityStorageType: 'auditable-item-stream',
78
+ streamEntryEntityStorageType: 'auditable-item-stream-entry'
79
+ });
80
+
81
+ const streams = await service.query(
82
+ [
83
+ {
84
+ property: 'organizationIdentity',
85
+ comparison: ComparisonOperator.Equals,
86
+ value: 'did:iota:org:123'
87
+ }
88
+ ],
89
+ 'dateCreated',
90
+ SortDirection.Descending,
91
+ ['id', 'dateCreated', 'dateModified', 'numberOfItems'],
92
+ 'cursor:page-1',
93
+ 10
94
+ );
95
+
96
+ const entries = await service.getEntries('ais:0f4f9de65dc44f31b4a474a0cc93ce69', {
97
+ includeDeleted: false,
98
+ verifyEntries: true,
99
+ limit: 10,
100
+ order: SortDirection.Ascending
101
+ });
102
+
103
+ const entryObjects = await service.getEntryObjects('ais:0f4f9de65dc44f31b4a474a0cc93ce69', {
104
+ includeDeleted: true,
105
+ limit: 10,
106
+ order: SortDirection.Descending
107
+ });
108
+
109
+ console.log(streams.entries.itemListElement.length); // 10
110
+ console.log(entries.entries.itemListElement.length); // 10
111
+ console.log(entryObjects.entries.itemListElement.length); // 10
112
+ ```
113
+
114
+ ```typescript
115
+ import { AuditableItemStreamService } from '@twin.org/auditable-item-stream-service';
116
+
117
+ const service = new AuditableItemStreamService({
118
+ immutableProofComponentType: 'immutable-proof',
119
+ streamEntityStorageType: 'auditable-item-stream',
120
+ streamEntryEntityStorageType: 'auditable-item-stream-entry'
121
+ });
122
+
123
+ const streamId = 'ais:0f4f9de65dc44f31b4a474a0cc93ce69';
124
+
125
+ const entryId = await service.createEntry(streamId, {
126
+ '@context': 'https://schema.org',
127
+ '@type': 'Message',
128
+ text: 'The item passed validation'
129
+ });
130
+
131
+ const entry = await service.getEntry(streamId, entryId, {
132
+ verifyEntry: true
133
+ });
134
+
135
+ const entryObject = await service.getEntryObject(streamId, entryId);
136
+
137
+ await service.updateEntry(streamId, entryId, {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'Message',
140
+ text: 'The item passed validation and was approved'
141
+ });
142
+
143
+ await service.removeEntry(streamId, entryId);
144
+
145
+ console.log(entry.id); // ais:0f4f9de65dc44f31b4a474a0cc93ce69:...
146
+ console.log(entryObject['@type']); // Message
147
+ ```
148
+
149
+ ```typescript
150
+ import { AuditableItemStreamService } from '@twin.org/auditable-item-stream-service';
151
+
152
+ const service = new AuditableItemStreamService({
153
+ immutableProofComponentType: 'immutable-proof',
154
+ streamEntityStorageType: 'auditable-item-stream',
155
+ streamEntryEntityStorageType: 'auditable-item-stream-entry'
156
+ });
157
+
158
+ const streamId = 'ais:0f4f9de65dc44f31b4a474a0cc93ce69';
159
+
160
+ await service.removeVerifiable(streamId);
161
+ await service.remove(streamId);
162
+
163
+ console.log(streamId); // ais:0f4f9de65dc44f31b4a474a0cc93ce69
164
+ ```
165
+
166
+ ## AuditableItemStream
167
+
168
+ ```typescript
169
+ import { AuditableItemStream } from '@twin.org/auditable-item-stream-service';
170
+
171
+ const streamEntity = new AuditableItemStream();
172
+ streamEntity.id = '0f4f9de65dc44f31b4a474a0cc93ce69';
173
+ streamEntity.dateCreated = '2026-03-10T09:00:00.000Z';
174
+ streamEntity.dateModified = '2026-03-10T09:05:00.000Z';
175
+ streamEntity.organizationIdentity = 'did:iota:org:123';
176
+ streamEntity.userIdentity = 'did:iota:user:456';
177
+ streamEntity.numberOfItems = 2;
178
+ streamEntity.immutableInterval = 5;
179
+
180
+ console.log(streamEntity.id); // 0f4f9de65dc44f31b4a474a0cc93ce69
181
+ console.log(streamEntity.numberOfItems); // 2
182
+ ```
183
+
184
+ ## AuditableItemStreamEntry
185
+
186
+ ```typescript
187
+ import { AuditableItemStreamEntry } from '@twin.org/auditable-item-stream-service';
188
+
189
+ const streamEntryEntity = new AuditableItemStreamEntry();
190
+ streamEntryEntity.id = '1c7dd4e0e2a6428fa2d9b8f02fd5ce39';
191
+ streamEntryEntity.streamId = '0f4f9de65dc44f31b4a474a0cc93ce69';
192
+ streamEntryEntity.dateCreated = '2026-03-10T09:02:00.000Z';
193
+ streamEntryEntity.index = 1;
194
+ streamEntryEntity.entryObject = {
195
+ '@context': 'https://schema.org',
196
+ '@type': 'Message',
197
+ text: 'Second event in the stream'
198
+ };
199
+
200
+ console.log(streamEntryEntity.id); // 1c7dd4e0e2a6428fa2d9b8f02fd5ce39
201
+ console.log(streamEntryEntity.index); // 1
202
+ ```
203
+
204
+ ## Schema Initialisation
205
+
206
+ ```typescript
207
+ import { initSchema } from '@twin.org/auditable-item-stream-service';
208
+
209
+ initSchema();
210
+ console.log('Entity schemas registered'); // Entity schemas registered
211
+ ```