@twin.org/auditable-item-stream-service 0.0.3-next.21 → 0.0.3-next.23

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.
@@ -1,12 +1,13 @@
1
1
  // Copyright 2024 IOTA Stiftung.
2
2
  // SPDX-License-Identifier: Apache-2.0.
3
- import { HttpParameterHelper } from "@twin.org/api-models";
3
+ import { HttpContextIdKeys, HttpParameterHelper, HttpUrlHelper } from "@twin.org/api-models";
4
4
  import { AuditableItemStreamContexts, AuditableItemStreamTypes } from "@twin.org/auditable-item-stream-models";
5
+ import { ContextIdStore } from "@twin.org/context";
5
6
  import { Coerce, ComponentFactory, Guards, Is } from "@twin.org/core";
6
7
  import { SchemaOrgContexts, SchemaOrgTypes } from "@twin.org/standards-schema-org";
7
8
  import { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
8
9
  /**
9
- * The source used when communicating about these routes.
10
+ * The source identifier used when communicating errors from these routes.
10
11
  */
11
12
  const ROUTES_SOURCE = "auditableItemStreamRoutes";
12
13
  /**
@@ -1053,7 +1054,6 @@ export async function auditableItemStreamGet(httpRequestContext, componentName,
1053
1054
  Guards.object(ROUTES_SOURCE, "request", request);
1054
1055
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
1055
1056
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
1056
- const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1057
1057
  const component = ComponentFactory.get(componentName);
1058
1058
  const result = await component.get(request.pathParams.id, request.query?.cursor, Coerce.integer(request.query?.limit), {
1059
1059
  includeEntries: Coerce.boolean(request.query?.includeEntries),
@@ -1065,7 +1065,8 @@ export async function auditableItemStreamGet(httpRequestContext, componentName,
1065
1065
  [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1066
1066
  };
1067
1067
  if (Is.stringValue(result.cursor)) {
1068
- headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1068
+ const contextIds = await ContextIdStore.getContextIds();
1069
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
1069
1070
  }
1070
1071
  return {
1071
1072
  headers,
@@ -1128,7 +1129,7 @@ export async function auditableItemStreamClose(httpRequestContext, componentName
1128
1129
  };
1129
1130
  }
1130
1131
  /**
1131
- * Query the stream.
1132
+ * List all streams.
1132
1133
  * @param httpRequestContext The request context for the API.
1133
1134
  * @param componentName The name of the component to use in the routes.
1134
1135
  * @param request The request.
@@ -1137,14 +1138,14 @@ export async function auditableItemStreamClose(httpRequestContext, componentName
1137
1138
  export async function auditableItemStreamList(httpRequestContext, componentName, request) {
1138
1139
  Guards.object(ROUTES_SOURCE, "request", request);
1139
1140
  Guards.object(ROUTES_SOURCE, "request.query", request.query);
1140
- const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
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
1143
  const headers = {
1144
1144
  [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1145
1145
  };
1146
1146
  if (Is.stringValue(result.cursor)) {
1147
- headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1147
+ const contextIds = await ContextIdStore.getContextIds();
1148
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
1148
1149
  }
1149
1150
  return {
1150
1151
  headers,
@@ -1174,7 +1175,7 @@ export async function auditableItemStreamCreateEntry(httpRequestContext, compone
1174
1175
  };
1175
1176
  }
1176
1177
  /**
1177
- * Get the stream.
1178
+ * Delete an entry from the stream.
1178
1179
  * @param httpRequestContext The request context for the API.
1179
1180
  * @param componentName The name of the component to use in the routes.
1180
1181
  * @param request The request.
@@ -1260,7 +1261,7 @@ export async function auditableItemStreamGetEntryObject(httpRequestContext, comp
1260
1261
  };
1261
1262
  }
1262
1263
  /**
1263
- * Query the stream.
1264
+ * List the entries for a stream.
1264
1265
  * @param httpRequestContext The request context for the API.
1265
1266
  * @param componentName The name of the component to use in the routes.
1266
1267
  * @param request The request.
@@ -1270,7 +1271,6 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
1270
1271
  Guards.object(ROUTES_SOURCE, "request", request);
1271
1272
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
1272
1273
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
1273
- const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1274
1274
  const component = ComponentFactory.get(componentName);
1275
1275
  const result = await component.getEntries(request.pathParams.id, {
1276
1276
  conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
@@ -1284,7 +1284,8 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
1284
1284
  [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1285
1285
  };
1286
1286
  if (Is.stringValue(result.cursor)) {
1287
- headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1287
+ const contextIds = await ContextIdStore.getContextIds();
1288
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
1288
1289
  }
1289
1290
  return {
1290
1291
  headers,
@@ -1292,7 +1293,7 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
1292
1293
  };
1293
1294
  }
1294
1295
  /**
1295
- * Query the stream.
1296
+ * List entries across all streams.
1296
1297
  * @param httpRequestContext The request context for the API.
1297
1298
  * @param componentName The name of the component to use in the routes.
1298
1299
  * @param request The request.
@@ -1300,7 +1301,6 @@ export async function auditableItemStreamListEntries(httpRequestContext, compone
1300
1301
  */
1301
1302
  export async function auditableItemStreamListEntriesNoStream(httpRequestContext, componentName, request) {
1302
1303
  Guards.object(ROUTES_SOURCE, "request", request);
1303
- const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1304
1304
  const component = ComponentFactory.get(componentName);
1305
1305
  const result = await component.getEntries(undefined, {
1306
1306
  conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
@@ -1314,7 +1314,8 @@ export async function auditableItemStreamListEntriesNoStream(httpRequestContext,
1314
1314
  [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1315
1315
  };
1316
1316
  if (Is.stringValue(result.cursor)) {
1317
- headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1317
+ const contextIds = await ContextIdStore.getContextIds();
1318
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
1318
1319
  }
1319
1320
  return {
1320
1321
  headers,
@@ -1322,7 +1323,7 @@ export async function auditableItemStreamListEntriesNoStream(httpRequestContext,
1322
1323
  };
1323
1324
  }
1324
1325
  /**
1325
- * Query the stream objects.
1326
+ * List the entry objects for a stream.
1326
1327
  * @param httpRequestContext The request context for the API.
1327
1328
  * @param componentName The name of the component to use in the routes.
1328
1329
  * @param request The request.
@@ -1332,7 +1333,6 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
1332
1333
  Guards.object(ROUTES_SOURCE, "request", request);
1333
1334
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
1334
1335
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
1335
- const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1336
1336
  const component = ComponentFactory.get(componentName);
1337
1337
  const result = await component.getEntryObjects(request.pathParams.id, {
1338
1338
  conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
@@ -1345,7 +1345,8 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
1345
1345
  [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1346
1346
  };
1347
1347
  if (Is.stringValue(result.cursor)) {
1348
- headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1348
+ const contextIds = await ContextIdStore.getContextIds();
1349
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
1349
1350
  }
1350
1351
  return {
1351
1352
  headers,
@@ -1353,7 +1354,7 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
1353
1354
  };
1354
1355
  }
1355
1356
  /**
1356
- * Query the stream objects.
1357
+ * List entry objects across all streams.
1357
1358
  * @param httpRequestContext The request context for the API.
1358
1359
  * @param componentName The name of the component to use in the routes.
1359
1360
  * @param request The request.
@@ -1361,7 +1362,6 @@ export async function auditableItemStreamListEntryObjects(httpRequestContext, co
1361
1362
  */
1362
1363
  export async function auditableItemStreamListEntryObjectsNoStream(httpRequestContext, componentName, request) {
1363
1364
  Guards.object(ROUTES_SOURCE, "request", request);
1364
- const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
1365
1365
  const component = ComponentFactory.get(componentName);
1366
1366
  const result = await component.getEntryObjects(undefined, {
1367
1367
  conditions: HttpParameterHelper.objectFromString(request.query?.conditions),
@@ -1374,7 +1374,8 @@ export async function auditableItemStreamListEntryObjectsNoStream(httpRequestCon
1374
1374
  [HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
1375
1375
  };
1376
1376
  if (Is.stringValue(result.cursor)) {
1377
- headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
1377
+ const contextIds = await ContextIdStore.getContextIds();
1378
+ headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(HttpUrlHelper.replaceOrigin(httpRequestContext.serverRequest.url, contextIds?.[HttpContextIdKeys.PublicOrigin]), { cursor: result.cursor }, "next");
1378
1379
  }
1379
1380
  return {
1380
1381
  headers,