@twin.org/auditable-item-stream-service 0.9.1-next.1 → 0.9.1-next.3
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.
- package/dist/es/auditableItemStreamRoutes.js +49 -65
- package/dist/es/auditableItemStreamRoutes.js.map +1 -1
- package/dist/es/auditableItemStreamService.js +12 -17
- package/dist/es/auditableItemStreamService.js.map +1 -1
- package/dist/types/auditableItemStreamRoutes.d.ts +5 -3
- package/dist/types/auditableItemStreamService.d.ts +4 -4
- package/docs/changelog.md +28 -0
- package/docs/open-api/spec.json +5 -5
- package/docs/reference/classes/AuditableItemStreamService.md +3 -3
- package/docs/reference/functions/auditableItemStreamCreate.md +7 -1
- package/docs/reference/functions/auditableItemStreamCreateEntry.md +7 -1
- package/package.json +2 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Copyright 2024 IOTA Stiftung.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0.
|
|
3
|
-
import { HttpContextIdKeys, HttpParameterHelper, HttpUrlHelper } from "@twin.org/api-models";
|
|
3
|
+
import { HttpContextIdKeys, HttpHeaderHelper, HttpParameterHelper, HttpUrlHelper } from "@twin.org/api-models";
|
|
4
4
|
import { AuditableItemStreamContexts, AuditableItemStreamTypes } from "@twin.org/auditable-item-stream-models";
|
|
5
5
|
import { ContextIdStore } from "@twin.org/context";
|
|
6
|
-
import { Coerce, ComponentFactory, Guards
|
|
6
|
+
import { Coerce, ComponentFactory, Guards } from "@twin.org/core";
|
|
7
7
|
import { SchemaOrgContexts, SchemaOrgTypes } from "@twin.org/standards-schema-org";
|
|
8
|
-
import {
|
|
8
|
+
import { HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
|
|
9
9
|
/**
|
|
10
10
|
* The source identifier used when communicating errors from these routes.
|
|
11
11
|
*/
|
|
@@ -32,7 +32,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
|
|
|
32
32
|
tag: tagsAuditableItemStream[0].name,
|
|
33
33
|
method: "POST",
|
|
34
34
|
path: `${baseRouteName}/`,
|
|
35
|
-
handler: async (httpRequestContext, request) => auditableItemStreamCreate(httpRequestContext, componentName, request),
|
|
35
|
+
handler: async (httpRequestContext, request) => auditableItemStreamCreate(httpRequestContext, componentName, request, baseRouteName),
|
|
36
36
|
requestType: {
|
|
37
37
|
type: "IAuditableItemStreamCreateRequest",
|
|
38
38
|
examples: [
|
|
@@ -437,7 +437,7 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
|
|
|
437
437
|
tag: tagsAuditableItemStream[0].name,
|
|
438
438
|
method: "POST",
|
|
439
439
|
path: `${baseRouteName}/:id/entries`,
|
|
440
|
-
handler: async (httpRequestContext, request) => auditableItemStreamCreateEntry(httpRequestContext, componentName, request),
|
|
440
|
+
handler: async (httpRequestContext, request) => auditableItemStreamCreateEntry(httpRequestContext, componentName, request, baseRouteName),
|
|
441
441
|
requestType: {
|
|
442
442
|
type: "IAuditableItemStreamCreateEntryRequest",
|
|
443
443
|
examples: [
|
|
@@ -1029,18 +1029,21 @@ export function generateRestRoutesAuditableItemStream(baseRouteName, componentNa
|
|
|
1029
1029
|
* @param httpRequestContext The request context for the API.
|
|
1030
1030
|
* @param componentName The name of the component to use in the routes.
|
|
1031
1031
|
* @param request The request.
|
|
1032
|
+
* @param baseRouteName The base route name for the API.
|
|
1032
1033
|
* @returns The response object with additional http response properties.
|
|
1033
1034
|
*/
|
|
1034
|
-
export async function auditableItemStreamCreate(httpRequestContext, componentName, request) {
|
|
1035
|
+
export async function auditableItemStreamCreate(httpRequestContext, componentName, request, baseRouteName) {
|
|
1035
1036
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
1036
1037
|
Guards.object(ROUTES_SOURCE, "request.body", request.body);
|
|
1037
1038
|
const component = ComponentFactory.get(componentName);
|
|
1038
1039
|
const id = await component.create(request.body);
|
|
1040
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1041
|
+
const publicOrigin = contextIds?.[HttpContextIdKeys.PublicOrigin];
|
|
1042
|
+
const headers = {};
|
|
1043
|
+
HttpHeaderHelper.buildId(headers, id, HttpUrlHelper.combineOriginPath(publicOrigin, `${baseRouteName}/:id`));
|
|
1039
1044
|
return {
|
|
1040
1045
|
statusCode: HttpStatusCode.created,
|
|
1041
|
-
headers
|
|
1042
|
-
[HeaderTypes.Location]: id
|
|
1043
|
-
}
|
|
1046
|
+
headers
|
|
1044
1047
|
};
|
|
1045
1048
|
}
|
|
1046
1049
|
/**
|
|
@@ -1061,13 +1064,10 @@ export async function auditableItemStreamGet(httpRequestContext, componentName,
|
|
|
1061
1064
|
verifyStream: Coerce.boolean(request.query?.verifyStream),
|
|
1062
1065
|
verifyEntries: Coerce.boolean(request.query?.verifyEntries)
|
|
1063
1066
|
});
|
|
1064
|
-
const headers = {
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
const contextIds = await ContextIdStore.getContextIds();
|
|
1069
|
-
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
|
|
1070
|
-
}
|
|
1067
|
+
const headers = {};
|
|
1068
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1069
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1070
|
+
HttpHeaderHelper.buildCursor(headers, httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin], result.cursor);
|
|
1071
1071
|
return {
|
|
1072
1072
|
headers,
|
|
1073
1073
|
body: result.stream
|
|
@@ -1140,13 +1140,10 @@ export async function auditableItemStreamList(httpRequestContext, componentName,
|
|
|
1140
1140
|
Guards.object(ROUTES_SOURCE, "request.query", request.query);
|
|
1141
1141
|
const component = ComponentFactory.get(componentName);
|
|
1142
1142
|
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));
|
|
1143
|
-
const headers = {
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
const contextIds = await ContextIdStore.getContextIds();
|
|
1148
|
-
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
|
|
1149
|
-
}
|
|
1143
|
+
const headers = {};
|
|
1144
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1145
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1146
|
+
HttpHeaderHelper.buildCursor(headers, httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin], result.cursor);
|
|
1150
1147
|
return {
|
|
1151
1148
|
headers,
|
|
1152
1149
|
body: result.entries
|
|
@@ -1157,9 +1154,10 @@ export async function auditableItemStreamList(httpRequestContext, componentName,
|
|
|
1157
1154
|
* @param httpRequestContext The request context for the API.
|
|
1158
1155
|
* @param componentName The name of the component to use in the routes.
|
|
1159
1156
|
* @param request The request.
|
|
1157
|
+
* @param baseRouteName The base route name for the API.
|
|
1160
1158
|
* @returns The response object with additional http response properties.
|
|
1161
1159
|
*/
|
|
1162
|
-
export async function auditableItemStreamCreateEntry(httpRequestContext, componentName, request) {
|
|
1160
|
+
export async function auditableItemStreamCreateEntry(httpRequestContext, componentName, request, baseRouteName) {
|
|
1163
1161
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
1164
1162
|
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
1165
1163
|
Guards.object(ROUTES_SOURCE, "request.body", request.body);
|
|
@@ -1167,11 +1165,13 @@ export async function auditableItemStreamCreateEntry(httpRequestContext, compone
|
|
|
1167
1165
|
Guards.objectValue(ROUTES_SOURCE, "request.body.entryObject", request.body.entryObject);
|
|
1168
1166
|
const component = ComponentFactory.get(componentName);
|
|
1169
1167
|
const id = await component.createEntry(request.pathParams.id, request.body.entryObject);
|
|
1168
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1169
|
+
const publicOrigin = contextIds?.[HttpContextIdKeys.PublicOrigin];
|
|
1170
|
+
const headers = {};
|
|
1171
|
+
HttpHeaderHelper.buildId(headers, id, HttpUrlHelper.combineOriginPath(publicOrigin, `${baseRouteName}/:streamId/entries/:id`));
|
|
1170
1172
|
return {
|
|
1171
1173
|
statusCode: HttpStatusCode.created,
|
|
1172
|
-
headers
|
|
1173
|
-
[HeaderTypes.Location]: id
|
|
1174
|
-
}
|
|
1174
|
+
headers
|
|
1175
1175
|
};
|
|
1176
1176
|
}
|
|
1177
1177
|
/**
|
|
@@ -1228,12 +1228,10 @@ export async function auditableItemStreamGetEntry(httpRequestContext, componentN
|
|
|
1228
1228
|
const result = await component.getEntry(request.pathParams.id, request.pathParams.entryId, {
|
|
1229
1229
|
verifyEntry: Coerce.boolean(request.query?.verifyEntry)
|
|
1230
1230
|
});
|
|
1231
|
+
const headers = {};
|
|
1232
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1231
1233
|
return {
|
|
1232
|
-
headers
|
|
1233
|
-
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
1234
|
-
? MimeTypes.JsonLd
|
|
1235
|
-
: MimeTypes.Json
|
|
1236
|
-
},
|
|
1234
|
+
headers,
|
|
1237
1235
|
body: result
|
|
1238
1236
|
};
|
|
1239
1237
|
}
|
|
@@ -1251,12 +1249,10 @@ export async function auditableItemStreamGetEntryObject(httpRequestContext, comp
|
|
|
1251
1249
|
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.entryId", request.pathParams.entryId);
|
|
1252
1250
|
const component = ComponentFactory.get(componentName);
|
|
1253
1251
|
const result = await component.getEntryObject(request.pathParams.id, request.pathParams.entryId);
|
|
1252
|
+
const headers = {};
|
|
1253
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1254
1254
|
return {
|
|
1255
|
-
headers
|
|
1256
|
-
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
1257
|
-
? MimeTypes.JsonLd
|
|
1258
|
-
: MimeTypes.Json
|
|
1259
|
-
},
|
|
1255
|
+
headers,
|
|
1260
1256
|
body: result
|
|
1261
1257
|
};
|
|
1262
1258
|
}
|
|
@@ -1280,13 +1276,10 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
|
|
|
1280
1276
|
limit: Coerce.integer(request.query?.limit),
|
|
1281
1277
|
cursor: request.query?.cursor
|
|
1282
1278
|
});
|
|
1283
|
-
const headers = {
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
const contextIds = await ContextIdStore.getContextIds();
|
|
1288
|
-
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
|
|
1289
|
-
}
|
|
1279
|
+
const headers = {};
|
|
1280
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1281
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1282
|
+
HttpHeaderHelper.buildCursor(headers, httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin], result.cursor);
|
|
1290
1283
|
return {
|
|
1291
1284
|
headers,
|
|
1292
1285
|
body: result.entries
|
|
@@ -1310,13 +1303,10 @@ export async function auditableItemStreamListEntriesNoStream(httpRequestContext,
|
|
|
1310
1303
|
limit: Coerce.integer(request.query?.limit),
|
|
1311
1304
|
cursor: request.query?.cursor
|
|
1312
1305
|
});
|
|
1313
|
-
const headers = {
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
const contextIds = await ContextIdStore.getContextIds();
|
|
1318
|
-
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
|
|
1319
|
-
}
|
|
1306
|
+
const headers = {};
|
|
1307
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1308
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1309
|
+
HttpHeaderHelper.buildCursor(headers, httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin], result.cursor);
|
|
1320
1310
|
return {
|
|
1321
1311
|
headers,
|
|
1322
1312
|
body: result.entries
|
|
@@ -1341,13 +1331,10 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
|
|
|
1341
1331
|
limit: Coerce.integer(request.query?.limit),
|
|
1342
1332
|
cursor: request.query?.cursor
|
|
1343
1333
|
});
|
|
1344
|
-
const headers = {
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
const contextIds = await ContextIdStore.getContextIds();
|
|
1349
|
-
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
|
|
1350
|
-
}
|
|
1334
|
+
const headers = {};
|
|
1335
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1336
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1337
|
+
HttpHeaderHelper.buildCursor(headers, httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin], result.cursor);
|
|
1351
1338
|
return {
|
|
1352
1339
|
headers,
|
|
1353
1340
|
body: result.entries
|
|
@@ -1370,13 +1357,10 @@ export async function auditableItemStreamListEntryObjectsNoStream(httpRequestCon
|
|
|
1370
1357
|
limit: Coerce.integer(request.query?.limit),
|
|
1371
1358
|
cursor: request.query?.cursor
|
|
1372
1359
|
});
|
|
1373
|
-
const headers = {
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
const contextIds = await ContextIdStore.getContextIds();
|
|
1378
|
-
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
|
|
1379
|
-
}
|
|
1360
|
+
const headers = {};
|
|
1361
|
+
HttpHeaderHelper.buildJsonContentType(headers, request.headers);
|
|
1362
|
+
const contextIds = await ContextIdStore.getContextIds();
|
|
1363
|
+
HttpHeaderHelper.buildCursor(headers, httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin], result.cursor);
|
|
1380
1364
|
return {
|
|
1381
1365
|
headers,
|
|
1382
1366
|
body: result.entries
|