@fedify/fedify 2.1.0-dev.503 → 2.1.0-dev.523
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/{builder-BHUnSQtB.js → builder-CJkMYxxc.js} +9 -3
- package/dist/compat/mod.d.cts +3 -3
- package/dist/compat/mod.d.ts +3 -3
- package/dist/compat/transformers.test.js +12 -12
- package/dist/{context-DZJhUmzF.d.ts → context--RwChtri.d.ts} +54 -2
- package/dist/{context-D3QkEtZd.d.cts → context-DL0cPpPV.d.cts} +54 -2
- package/dist/{deno-BYerLnry.js → deno-CQdJQjC5.js} +1 -1
- package/dist/{docloader-MSkogD2T.js → docloader-Cyl0-S8m.js} +2 -2
- package/dist/federation/builder.test.js +14 -3
- package/dist/federation/handler.test.js +97 -13
- package/dist/federation/idempotency.test.js +12 -12
- package/dist/federation/inbox.test.js +2 -2
- package/dist/federation/keycache.test.js +46 -2
- package/dist/federation/middleware.test.js +206 -12
- package/dist/federation/mod.cjs +4 -4
- package/dist/federation/mod.d.cts +4 -4
- package/dist/federation/mod.d.ts +4 -4
- package/dist/federation/mod.js +4 -4
- package/dist/federation/send.test.js +5 -5
- package/dist/federation/webfinger.test.js +12 -12
- package/dist/{http-DkHdFfrc.d.ts → http-BbfOqHGG.d.ts} +80 -8
- package/dist/{http-DJT6NciB.cjs → http-D6a6mMc0.cjs} +305 -99
- package/dist/{http-CSX1-Mgi.js → http-DJmytoC2.js} +295 -101
- package/dist/{http-S2U3qDwN.js → http-DK0CTomU.js} +153 -57
- package/dist/{http-Cz3MlXAZ.d.cts → http-DsqqmkXi.d.cts} +80 -8
- package/dist/{inbox-BaA0g5I_.js → inbox-CWa6sqsk.js} +1 -1
- package/dist/{key-DCdTVZiK.js → key-DRgvVevp.js} +145 -47
- package/dist/keycache-C7k8s1Bk.js +102 -0
- package/dist/{kv-cache-Vtxhbo1W.cjs → kv-cache-DPtsJ1sL.cjs} +1 -1
- package/dist/{kv-cache-CQPL_aGY.js → kv-cache-MPcS_mGG.js} +1 -1
- package/dist/{ld-CrX7pQda.js → ld-s9_8WfBc.js} +2 -2
- package/dist/{middleware-CfI9C9Xy.js → middleware-2XtoTBq0.js} +12 -12
- package/dist/{middleware-MlO5iUeZ.js → middleware-Ajnk9qHB.js} +158 -22
- package/dist/middleware-BgCIhb_C.cjs +12 -0
- package/dist/{middleware-D4S6i4A_.cjs → middleware-BoCzk7-G.cjs} +158 -22
- package/dist/{middleware-C8PKuPrm.js → middleware-DGUNDGCl.js} +4 -4
- package/dist/{middleware-BelSJK7m.js → middleware-Dn9UDJZP.js} +100 -24
- package/dist/{mod-CwZXZJ9d.d.ts → mod-BugwI0JN.d.ts} +1 -1
- package/dist/{mod-DPkRU3EK.d.cts → mod-CFBU2OT3.d.cts} +1 -1
- package/dist/{mod-DUWcVv49.d.ts → mod-CvxylbuV.d.ts} +1 -1
- package/dist/{mod-DVwHUI_x.d.cts → mod-DE8MYisy.d.cts} +1 -1
- package/dist/{mod-DXsQakeS.d.cts → mod-DKG0ovjR.d.cts} +1 -1
- package/dist/{mod-DnSsduJF.d.ts → mod-DcfFNgYf.d.ts} +1 -1
- package/dist/{mod-Di3W5OdP.d.cts → mod-Dp0kK0hO.d.cts} +1 -1
- package/dist/{mod-DosD6NsG.d.ts → mod-Z7lIaCfo.d.ts} +1 -1
- package/dist/mod.cjs +8 -4
- package/dist/mod.d.cts +8 -8
- package/dist/mod.d.ts +8 -8
- package/dist/mod.js +7 -5
- package/dist/nodeinfo/handler.test.js +12 -12
- package/dist/otel/exporter.test.js +43 -2
- package/dist/otel/mod.cjs +7 -1
- package/dist/otel/mod.d.cts +12 -0
- package/dist/otel/mod.d.ts +12 -0
- package/dist/otel/mod.js +7 -1
- package/dist/{owner-BAlnLKMO.js → owner-Cx8gV-j4.js} +1 -1
- package/dist/{proof-DMgHaXNJ.js → proof-CDr3NP3R.js} +2 -2
- package/dist/{proof-BgUVmaJz.js → proof-Le4DAkqb.js} +1 -1
- package/dist/{proof-CR5RUAmy.cjs → proof-qHcNgE5i.cjs} +1 -1
- package/dist/{send-B2aZYf9A.js → send-DreBSY1U.js} +2 -2
- package/dist/sig/http.test.js +85 -5
- package/dist/sig/key.test.js +70 -3
- package/dist/sig/ld.test.js +3 -3
- package/dist/sig/mod.cjs +4 -2
- package/dist/sig/mod.d.cts +3 -3
- package/dist/sig/mod.d.ts +3 -3
- package/dist/sig/mod.js +3 -3
- package/dist/sig/owner.test.js +3 -3
- package/dist/sig/proof.test.js +3 -3
- package/dist/testing/mod.d.ts +92 -0
- package/dist/utils/docloader.test.js +4 -4
- package/dist/utils/mod.cjs +2 -2
- package/dist/utils/mod.d.cts +2 -2
- package/dist/utils/mod.d.ts +2 -2
- package/dist/utils/mod.js +2 -2
- package/package.json +5 -5
- package/dist/keycache-DRxpZ5r9.js +0 -48
- package/dist/middleware-D4XcpSBG.cjs +0 -12
|
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
8
8
|
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
9
|
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
10
10
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
11
|
-
import "../deno-
|
|
12
|
-
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-
|
|
11
|
+
import "../deno-CQdJQjC5.js";
|
|
12
|
+
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-Dn9UDJZP.js";
|
|
13
13
|
import "../client-Dg7OfUDA.js";
|
|
14
14
|
import { RouterError } from "../router-D9eI0s4b.js";
|
|
15
15
|
import "../types-CPz01LGH.js";
|
|
16
|
-
import "../key-
|
|
17
|
-
import { signRequest, verifyRequest } from "../http-
|
|
18
|
-
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-
|
|
19
|
-
import { doesActorOwnKey } from "../owner-
|
|
20
|
-
import { signObject, verifyObject } from "../proof-
|
|
21
|
-
import { getAuthenticatedDocumentLoader } from "../docloader-
|
|
16
|
+
import "../key-DRgvVevp.js";
|
|
17
|
+
import { signRequest, verifyRequest } from "../http-DK0CTomU.js";
|
|
18
|
+
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-s9_8WfBc.js";
|
|
19
|
+
import { doesActorOwnKey } from "../owner-Cx8gV-j4.js";
|
|
20
|
+
import { signObject, verifyObject } from "../proof-CDr3NP3R.js";
|
|
21
|
+
import { getAuthenticatedDocumentLoader } from "../docloader-Cyl0-S8m.js";
|
|
22
22
|
import "../kv-cache-B__dHl7g.js";
|
|
23
|
-
import "../inbox-
|
|
24
|
-
import "../builder-
|
|
23
|
+
import "../inbox-CWa6sqsk.js";
|
|
24
|
+
import "../builder-CJkMYxxc.js";
|
|
25
25
|
import "../collection-CcnIw1qY.js";
|
|
26
|
-
import "../keycache-
|
|
26
|
+
import "../keycache-C7k8s1Bk.js";
|
|
27
27
|
import "../negotiation-5NPJL6zp.js";
|
|
28
28
|
import "../retry-D4GJ670a.js";
|
|
29
|
-
import "../send-
|
|
29
|
+
import "../send-DreBSY1U.js";
|
|
30
30
|
import { assertStrictEquals } from "../std__assert-DWivtrGR.js";
|
|
31
31
|
import { assertFalse, assertRejects } from "../assert_rejects-Ce45JcFg.js";
|
|
32
32
|
import { assertThrows } from "../assert_throws-BNXdRGWP.js";
|
|
@@ -1082,6 +1082,200 @@ test("Federation.setInboxListeners()", async (t) => {
|
|
|
1082
1082
|
await inbox[0][0].documentLoader("https://example.com/person");
|
|
1083
1083
|
assertEquals(authenticatedRequests, [["https://example.com/person", "https://example.com/users/john#main-key"]]);
|
|
1084
1084
|
});
|
|
1085
|
+
await t.step("onUnverifiedActivity()", async (t$1) => {
|
|
1086
|
+
const options = {
|
|
1087
|
+
documentLoader: mockDocumentLoader,
|
|
1088
|
+
contextLoader: mockDocumentLoader
|
|
1089
|
+
};
|
|
1090
|
+
async function createInboxRequest(activity, signature) {
|
|
1091
|
+
let request = new Request("https://example.com/inbox", {
|
|
1092
|
+
method: "POST",
|
|
1093
|
+
headers: {
|
|
1094
|
+
"Content-Type": "application/activity+json",
|
|
1095
|
+
accept: "application/ld+json"
|
|
1096
|
+
},
|
|
1097
|
+
body: JSON.stringify(await activity.toJsonLd(options))
|
|
1098
|
+
});
|
|
1099
|
+
if (signature != null) request = await signRequest(request, signature.privateKey, signature.keyId);
|
|
1100
|
+
return request;
|
|
1101
|
+
}
|
|
1102
|
+
function createFederationWithLoader(documentLoader$1) {
|
|
1103
|
+
const federation = createFederation({
|
|
1104
|
+
kv: new MemoryKvStore(),
|
|
1105
|
+
documentLoaderFactory: () => documentLoader$1,
|
|
1106
|
+
contextLoaderFactory: () => mockDocumentLoader
|
|
1107
|
+
});
|
|
1108
|
+
const verified = [];
|
|
1109
|
+
federation.setActorDispatcher("/users/{identifier}", () => {
|
|
1110
|
+
return new vocab.Person({});
|
|
1111
|
+
});
|
|
1112
|
+
const inboxListeners = federation.setInboxListeners("/users/{identifier}/inbox", "/inbox").on(vocab.Create, (_ctx, activity) => {
|
|
1113
|
+
verified.push(activity);
|
|
1114
|
+
});
|
|
1115
|
+
return {
|
|
1116
|
+
federation,
|
|
1117
|
+
verified,
|
|
1118
|
+
inboxListeners
|
|
1119
|
+
};
|
|
1120
|
+
}
|
|
1121
|
+
await t$1.step("receives noSignature reason", async () => {
|
|
1122
|
+
const { federation, verified, inboxListeners } = createFederationWithLoader(mockDocumentLoader);
|
|
1123
|
+
let receivedReason = null;
|
|
1124
|
+
inboxListeners.onUnverifiedActivity((_ctx, _activity, reason) => {
|
|
1125
|
+
receivedReason = reason;
|
|
1126
|
+
return new Response(null, { status: 202 });
|
|
1127
|
+
});
|
|
1128
|
+
const response = await federation.fetch(await createInboxRequest(new vocab.Create({
|
|
1129
|
+
id: new URL("https://remote.example/activities/no-signature"),
|
|
1130
|
+
actor: new URL("https://remote.example/actors/alice")
|
|
1131
|
+
})), { contextData: void 0 });
|
|
1132
|
+
assertEquals(response.status, 202);
|
|
1133
|
+
assertEquals(receivedReason, { type: "noSignature" });
|
|
1134
|
+
assertEquals(verified, []);
|
|
1135
|
+
});
|
|
1136
|
+
await t$1.step("receives keyFetchError for 410 responses", async () => {
|
|
1137
|
+
const goneKeyId = new URL("https://gone.example/actors/alice#main-key");
|
|
1138
|
+
const goneLoader = async (url) => {
|
|
1139
|
+
if (url === goneKeyId.href) throw new FetchError(goneKeyId, `HTTP 410: ${goneKeyId.href}`, new Response(null, { status: 410 }));
|
|
1140
|
+
return await mockDocumentLoader(url);
|
|
1141
|
+
};
|
|
1142
|
+
const { federation, verified, inboxListeners } = createFederationWithLoader(goneLoader);
|
|
1143
|
+
let receivedReason = null;
|
|
1144
|
+
inboxListeners.onUnverifiedActivity((_ctx, _activity, reason) => {
|
|
1145
|
+
receivedReason = reason;
|
|
1146
|
+
return new Response(null, { status: 202 });
|
|
1147
|
+
});
|
|
1148
|
+
const response = await federation.fetch(await createInboxRequest(new vocab.Create({
|
|
1149
|
+
id: new URL("https://gone.example/activities/delete"),
|
|
1150
|
+
actor: new URL("https://gone.example/actors/alice")
|
|
1151
|
+
}), {
|
|
1152
|
+
privateKey: rsaPrivateKey3,
|
|
1153
|
+
keyId: goneKeyId
|
|
1154
|
+
}), { contextData: void 0 });
|
|
1155
|
+
assertEquals(response.status, 202);
|
|
1156
|
+
assertEquals(verified, []);
|
|
1157
|
+
assertEquals(receivedReason.type, "keyFetchError");
|
|
1158
|
+
assertEquals(receivedReason.keyId.href, goneKeyId.href);
|
|
1159
|
+
assertEquals(receivedReason.result.status, 410);
|
|
1160
|
+
});
|
|
1161
|
+
await t$1.step("preserves keyFetchError details across retries", async () => {
|
|
1162
|
+
const keyId = new URL("https://gone.example/actors/alice#main-key");
|
|
1163
|
+
let keyFetches = 0;
|
|
1164
|
+
const goneLoader = async (url) => {
|
|
1165
|
+
if (url === keyId.href) {
|
|
1166
|
+
keyFetches++;
|
|
1167
|
+
throw new FetchError(keyId, `HTTP 410: ${keyId.href}`, new Response(null, { status: 410 }));
|
|
1168
|
+
}
|
|
1169
|
+
return await mockDocumentLoader(url);
|
|
1170
|
+
};
|
|
1171
|
+
const { federation, inboxListeners } = createFederationWithLoader(goneLoader);
|
|
1172
|
+
const reasons = [];
|
|
1173
|
+
inboxListeners.onUnverifiedActivity((_ctx, _activity, reason) => {
|
|
1174
|
+
reasons.push(reason);
|
|
1175
|
+
return new Response(null, { status: 202 });
|
|
1176
|
+
});
|
|
1177
|
+
const request = await createInboxRequest(new vocab.Create({
|
|
1178
|
+
id: new URL("https://gone.example/activities/retry"),
|
|
1179
|
+
actor: new URL("https://gone.example/actors/alice")
|
|
1180
|
+
}), {
|
|
1181
|
+
privateKey: rsaPrivateKey3,
|
|
1182
|
+
keyId
|
|
1183
|
+
});
|
|
1184
|
+
const first = await federation.fetch(request.clone(), { contextData: void 0 });
|
|
1185
|
+
const second = await federation.fetch(request.clone(), { contextData: void 0 });
|
|
1186
|
+
assertEquals(first.status, 202);
|
|
1187
|
+
assertEquals(second.status, 202);
|
|
1188
|
+
assertEquals(keyFetches, 1);
|
|
1189
|
+
assertEquals(reasons[0].type, "keyFetchError");
|
|
1190
|
+
assertEquals(reasons[1].type, "keyFetchError");
|
|
1191
|
+
assertEquals(reasons[1].result.status, 410);
|
|
1192
|
+
});
|
|
1193
|
+
await t$1.step("falls back to 401 when handler returns void", async () => {
|
|
1194
|
+
const missingKeyId = new URL("https://missing.example/actors/alice#main-key");
|
|
1195
|
+
const missingLoader = async (url) => {
|
|
1196
|
+
if (url === missingKeyId.href) throw new FetchError(missingKeyId, `HTTP 404: ${missingKeyId.href}`, new Response(null, { status: 404 }));
|
|
1197
|
+
return await mockDocumentLoader(url);
|
|
1198
|
+
};
|
|
1199
|
+
const { federation, verified, inboxListeners } = createFederationWithLoader(missingLoader);
|
|
1200
|
+
let receivedReason = null;
|
|
1201
|
+
inboxListeners.onUnverifiedActivity((_ctx, _activity, reason) => {
|
|
1202
|
+
receivedReason = reason;
|
|
1203
|
+
});
|
|
1204
|
+
const response = await federation.fetch(await createInboxRequest(new vocab.Create({
|
|
1205
|
+
id: new URL("https://missing.example/activities/delete"),
|
|
1206
|
+
actor: new URL("https://missing.example/actors/alice")
|
|
1207
|
+
}), {
|
|
1208
|
+
privateKey: rsaPrivateKey3,
|
|
1209
|
+
keyId: missingKeyId
|
|
1210
|
+
}), { contextData: void 0 });
|
|
1211
|
+
assertEquals(response.status, 401);
|
|
1212
|
+
assertEquals(verified, []);
|
|
1213
|
+
assertEquals(receivedReason.type, "keyFetchError");
|
|
1214
|
+
assertEquals(receivedReason.result.status, 404);
|
|
1215
|
+
});
|
|
1216
|
+
await t$1.step("falls back to 401 and reports hook errors", async () => {
|
|
1217
|
+
const missingKeyId = new URL("https://missing.example/actors/alice#main-key");
|
|
1218
|
+
const missingLoader = async (url) => {
|
|
1219
|
+
if (url === missingKeyId.href) throw new FetchError(missingKeyId, `HTTP 404: ${missingKeyId.href}`, new Response(null, { status: 404 }));
|
|
1220
|
+
return await mockDocumentLoader(url);
|
|
1221
|
+
};
|
|
1222
|
+
const { federation, verified, inboxListeners } = createFederationWithLoader(missingLoader);
|
|
1223
|
+
let receivedErrorMessage = null;
|
|
1224
|
+
inboxListeners.onUnverifiedActivity(() => {
|
|
1225
|
+
throw new Error("Intended unverified hook failure");
|
|
1226
|
+
}).onError((_ctx, error) => {
|
|
1227
|
+
receivedErrorMessage = error.message;
|
|
1228
|
+
});
|
|
1229
|
+
const response = await federation.fetch(await createInboxRequest(new vocab.Create({
|
|
1230
|
+
id: new URL("https://missing.example/activities/error"),
|
|
1231
|
+
actor: new URL("https://missing.example/actors/alice")
|
|
1232
|
+
}), {
|
|
1233
|
+
privateKey: rsaPrivateKey3,
|
|
1234
|
+
keyId: missingKeyId
|
|
1235
|
+
}), { contextData: void 0 });
|
|
1236
|
+
assertEquals(response.status, 401);
|
|
1237
|
+
assertEquals(verified, []);
|
|
1238
|
+
assertEquals(receivedErrorMessage, "Intended unverified hook failure");
|
|
1239
|
+
});
|
|
1240
|
+
await t$1.step("receives invalidSignature reason", async () => {
|
|
1241
|
+
const { federation, verified, inboxListeners } = createFederationWithLoader(mockDocumentLoader);
|
|
1242
|
+
let receivedReason = null;
|
|
1243
|
+
inboxListeners.onUnverifiedActivity((_ctx, _activity, reason) => {
|
|
1244
|
+
receivedReason = reason;
|
|
1245
|
+
return new Response(null, { status: 202 });
|
|
1246
|
+
});
|
|
1247
|
+
const keyId = new URL("https://example.com/person2#key3");
|
|
1248
|
+
const response = await federation.fetch(await createInboxRequest(new vocab.Create({
|
|
1249
|
+
id: new URL("https://example.com/activities/invalid-signature"),
|
|
1250
|
+
actor: new URL("https://example.com/person2")
|
|
1251
|
+
}), {
|
|
1252
|
+
privateKey: rsaPrivateKey2,
|
|
1253
|
+
keyId
|
|
1254
|
+
}), { contextData: void 0 });
|
|
1255
|
+
assertEquals(response.status, 202);
|
|
1256
|
+
assertEquals(verified, []);
|
|
1257
|
+
assertEquals(receivedReason.type, "invalidSignature");
|
|
1258
|
+
assertEquals(receivedReason.keyId.href, keyId.href);
|
|
1259
|
+
});
|
|
1260
|
+
await t$1.step("does not run for verified activities", async () => {
|
|
1261
|
+
const { federation, verified, inboxListeners } = createFederationWithLoader(mockDocumentLoader);
|
|
1262
|
+
let unverifiedCalls = 0;
|
|
1263
|
+
inboxListeners.onUnverifiedActivity(() => {
|
|
1264
|
+
unverifiedCalls++;
|
|
1265
|
+
return new Response(null, { status: 202 });
|
|
1266
|
+
});
|
|
1267
|
+
const response = await federation.fetch(await createInboxRequest(new vocab.Create({
|
|
1268
|
+
id: new URL("https://example.com/activities/verified"),
|
|
1269
|
+
actor: new URL("https://example.com/person2")
|
|
1270
|
+
}), {
|
|
1271
|
+
privateKey: rsaPrivateKey3,
|
|
1272
|
+
keyId: new URL("https://example.com/person2#key3")
|
|
1273
|
+
}), { contextData: void 0 });
|
|
1274
|
+
assertEquals(response.status, 202);
|
|
1275
|
+
assertEquals(unverifiedCalls, 0);
|
|
1276
|
+
assertEquals(verified.length, 1);
|
|
1277
|
+
});
|
|
1278
|
+
});
|
|
1085
1279
|
await t.step("onError()", async () => {
|
|
1086
1280
|
const federation = createFederation({
|
|
1087
1281
|
kv,
|
package/dist/federation/mod.cjs
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
4
4
|
|
|
5
5
|
require('../transformers-3g8GZwkZ.cjs');
|
|
6
|
-
require('../http-
|
|
7
|
-
const require_middleware = require('../middleware-
|
|
8
|
-
require('../proof-
|
|
6
|
+
require('../http-D6a6mMc0.cjs');
|
|
7
|
+
const require_middleware = require('../middleware-BoCzk7-G.cjs');
|
|
8
|
+
require('../proof-qHcNgE5i.cjs');
|
|
9
9
|
const require_federation = require('../federation-Bp3HI26G.cjs');
|
|
10
10
|
require('../types-Cd_hszr_.cjs');
|
|
11
|
-
require('../kv-cache-
|
|
11
|
+
require('../kv-cache-DPtsJ1sL.cjs');
|
|
12
12
|
|
|
13
13
|
exports.InProcessMessageQueue = require_federation.InProcessMessageQueue;
|
|
14
14
|
exports.MemoryKvStore = require_federation.MemoryKvStore;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../client-C97KOq3x.cjs";
|
|
2
|
-
import "../http-
|
|
2
|
+
import "../http-DsqqmkXi.cjs";
|
|
3
3
|
import "../owner-1AbPBOOZ.cjs";
|
|
4
|
-
import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-
|
|
4
|
+
import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-DL0cPpPV.cjs";
|
|
5
5
|
import { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore } from "../kv-BL4nlICN.cjs";
|
|
6
|
-
import { WebFingerHandlerParameters, handleWebFinger } from "../mod-
|
|
7
|
-
export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
|
6
|
+
import { WebFingerHandlerParameters, handleWebFinger } from "../mod-Dp0kK0hO.cjs";
|
|
7
|
+
export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
package/dist/federation/mod.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
import "../client-BxMZiQaD.js";
|
|
4
|
-
import "../http-
|
|
4
|
+
import "../http-BbfOqHGG.js";
|
|
5
5
|
import "../owner-gd0Q9FuU.js";
|
|
6
|
-
import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context
|
|
6
|
+
import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context--RwChtri.js";
|
|
7
7
|
import { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore } from "../kv-DXEUEP6z.js";
|
|
8
|
-
import { WebFingerHandlerParameters, handleWebFinger } from "../mod-
|
|
9
|
-
export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
|
8
|
+
import { WebFingerHandlerParameters, handleWebFinger } from "../mod-DcfFNgYf.js";
|
|
9
|
+
export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
package/dist/federation/mod.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
|
|
5
5
|
import "../transformers-C3FLHUd6.js";
|
|
6
|
-
import "../http-
|
|
7
|
-
import { Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-
|
|
8
|
-
import "../proof-
|
|
6
|
+
import "../http-DJmytoC2.js";
|
|
7
|
+
import { Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-Ajnk9qHB.js";
|
|
8
|
+
import "../proof-Le4DAkqb.js";
|
|
9
9
|
import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-DaMfqRm4.js";
|
|
10
10
|
import "../types-C93Ob9cU.js";
|
|
11
|
-
import "../kv-cache-
|
|
11
|
+
import "../kv-cache-MPcS_mGG.js";
|
|
12
12
|
|
|
13
13
|
export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
|
@@ -7,11 +7,11 @@ import { createTestTracerProvider, mockDocumentLoader, test } from "../dist-B5f6
|
|
|
7
7
|
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
8
|
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
9
|
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
-
import "../deno-
|
|
11
|
-
import "../key-
|
|
12
|
-
import { verifyRequest } from "../http-
|
|
13
|
-
import { doesActorOwnKey } from "../owner-
|
|
14
|
-
import { SendActivityError, extractInboxes, sendActivity } from "../send-
|
|
10
|
+
import "../deno-CQdJQjC5.js";
|
|
11
|
+
import "../key-DRgvVevp.js";
|
|
12
|
+
import { verifyRequest } from "../http-DK0CTomU.js";
|
|
13
|
+
import { doesActorOwnKey } from "../owner-Cx8gV-j4.js";
|
|
14
|
+
import { SendActivityError, extractInboxes, sendActivity } from "../send-DreBSY1U.js";
|
|
15
15
|
import "../std__assert-DWivtrGR.js";
|
|
16
16
|
import { assertFalse, assertRejects } from "../assert_rejects-Ce45JcFg.js";
|
|
17
17
|
import "../assert_throws-BNXdRGWP.js";
|
|
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
8
8
|
import "../assert-MZs1qjMx.js";
|
|
9
9
|
import "../assert_instance_of-DHz7EHNU.js";
|
|
10
10
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
11
|
-
import "../deno-
|
|
12
|
-
import { createFederation, handleWebFinger } from "../middleware-
|
|
11
|
+
import "../deno-CQdJQjC5.js";
|
|
12
|
+
import { createFederation, handleWebFinger } from "../middleware-Dn9UDJZP.js";
|
|
13
13
|
import "../client-Dg7OfUDA.js";
|
|
14
14
|
import "../router-D9eI0s4b.js";
|
|
15
15
|
import "../types-CPz01LGH.js";
|
|
16
|
-
import "../key-
|
|
17
|
-
import "../http-
|
|
18
|
-
import "../ld-
|
|
19
|
-
import "../owner-
|
|
20
|
-
import "../proof-
|
|
21
|
-
import "../docloader-
|
|
16
|
+
import "../key-DRgvVevp.js";
|
|
17
|
+
import "../http-DK0CTomU.js";
|
|
18
|
+
import "../ld-s9_8WfBc.js";
|
|
19
|
+
import "../owner-Cx8gV-j4.js";
|
|
20
|
+
import "../proof-CDr3NP3R.js";
|
|
21
|
+
import "../docloader-Cyl0-S8m.js";
|
|
22
22
|
import "../kv-cache-B__dHl7g.js";
|
|
23
|
-
import "../inbox-
|
|
24
|
-
import "../builder-
|
|
23
|
+
import "../inbox-CWa6sqsk.js";
|
|
24
|
+
import "../builder-CJkMYxxc.js";
|
|
25
25
|
import "../collection-CcnIw1qY.js";
|
|
26
|
-
import "../keycache-
|
|
26
|
+
import "../keycache-C7k8s1Bk.js";
|
|
27
27
|
import "../negotiation-5NPJL6zp.js";
|
|
28
28
|
import "../retry-D4GJ670a.js";
|
|
29
|
-
import "../send-
|
|
29
|
+
import "../send-DreBSY1U.js";
|
|
30
30
|
import "../std__assert-DWivtrGR.js";
|
|
31
31
|
import "../assert_rejects-Ce45JcFg.js";
|
|
32
32
|
import "../assert_throws-BNXdRGWP.js";
|
|
@@ -72,6 +72,34 @@ interface FetchKeyResult<T extends CryptographicKey | Multikey> {
|
|
|
72
72
|
readonly cached: boolean;
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
+
* Detailed fetch failure information from {@link fetchKeyDetailed}.
|
|
76
|
+
* @since 2.1.0
|
|
77
|
+
*/
|
|
78
|
+
type FetchKeyErrorResult = {
|
|
79
|
+
readonly status: number;
|
|
80
|
+
readonly response: Response;
|
|
81
|
+
} | {
|
|
82
|
+
readonly error: Error;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The result of {@link fetchKeyDetailed}.
|
|
86
|
+
* @since 2.1.0
|
|
87
|
+
*/
|
|
88
|
+
interface FetchKeyDetailedResult<T extends CryptographicKey | Multikey> extends FetchKeyResult<T> {
|
|
89
|
+
/**
|
|
90
|
+
* The error that occurred while fetching the key, if fetching failed before
|
|
91
|
+
* a document could be parsed.
|
|
92
|
+
*/
|
|
93
|
+
readonly fetchError?: FetchKeyErrorResult;
|
|
94
|
+
}
|
|
95
|
+
type FetchableKeyClass<T extends CryptographicKey | Multikey> = (new (...args: any[]) => T) & {
|
|
96
|
+
fromJsonLd(jsonLd: unknown, options: {
|
|
97
|
+
documentLoader?: DocumentLoader;
|
|
98
|
+
contextLoader?: DocumentLoader;
|
|
99
|
+
tracerProvider?: TracerProvider;
|
|
100
|
+
}): Promise<T>;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
75
103
|
* Fetches a {@link CryptographicKey} or {@link Multikey} from the given URL.
|
|
76
104
|
* If the given URL contains an {@link Actor} object, it tries to find
|
|
77
105
|
* the corresponding key in the `publicKey` or `assertionMethod` property.
|
|
@@ -84,13 +112,22 @@ interface FetchKeyResult<T extends CryptographicKey | Multikey> {
|
|
|
84
112
|
* @returns The fetched key or `null` if the key is not found.
|
|
85
113
|
* @since 1.3.0
|
|
86
114
|
*/
|
|
87
|
-
declare function fetchKey<T extends CryptographicKey | Multikey>(keyId: URL | string, cls:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
115
|
+
declare function fetchKey<T extends CryptographicKey | Multikey>(keyId: URL | string, cls: FetchableKeyClass<T>, options?: FetchKeyOptions): Promise<FetchKeyResult<T>>;
|
|
116
|
+
/**
|
|
117
|
+
* Fetches a {@link CryptographicKey} or {@link Multikey} from the given URL,
|
|
118
|
+
* preserving transport-level fetch failures for callers that need to inspect
|
|
119
|
+
* why the key could not be loaded.
|
|
120
|
+
*
|
|
121
|
+
* @template T The type of the key to fetch. Either {@link CryptographicKey}
|
|
122
|
+
* or {@link Multikey}.
|
|
123
|
+
* @param keyId The URL of the key.
|
|
124
|
+
* @param cls The class of the key to fetch. Either {@link CryptographicKey}
|
|
125
|
+
* or {@link Multikey}.
|
|
126
|
+
* @param options Options for fetching the key.
|
|
127
|
+
* @returns The fetched key, or detailed fetch failure information.
|
|
128
|
+
* @since 2.1.0
|
|
129
|
+
*/
|
|
130
|
+
declare function fetchKeyDetailed<T extends CryptographicKey | Multikey>(keyId: URL | string, cls: FetchableKeyClass<T>, options?: FetchKeyOptions): Promise<FetchKeyDetailedResult<T>>;
|
|
94
131
|
/**
|
|
95
132
|
* A cache for storing cryptographic keys.
|
|
96
133
|
* @since 0.12.0
|
|
@@ -204,6 +241,31 @@ interface VerifyRequestOptions {
|
|
|
204
241
|
tracerProvider?: TracerProvider;
|
|
205
242
|
}
|
|
206
243
|
/**
|
|
244
|
+
* The reason why {@link verifyRequestDetailed} could not verify a request.
|
|
245
|
+
* @since 2.1.0
|
|
246
|
+
*/
|
|
247
|
+
type VerifyRequestFailureReason = {
|
|
248
|
+
readonly type: "keyFetchError";
|
|
249
|
+
readonly keyId: URL;
|
|
250
|
+
readonly result: FetchKeyErrorResult;
|
|
251
|
+
} | {
|
|
252
|
+
readonly type: "invalidSignature";
|
|
253
|
+
readonly keyId?: URL;
|
|
254
|
+
} | {
|
|
255
|
+
readonly type: "noSignature";
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* The detailed result of {@link verifyRequestDetailed}.
|
|
259
|
+
* @since 2.1.0
|
|
260
|
+
*/
|
|
261
|
+
type VerifyRequestDetailedResult = {
|
|
262
|
+
readonly verified: true;
|
|
263
|
+
readonly key: CryptographicKey;
|
|
264
|
+
} | {
|
|
265
|
+
readonly verified: false;
|
|
266
|
+
readonly reason: VerifyRequestFailureReason;
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
207
269
|
* Verifies the signature of a request.
|
|
208
270
|
*
|
|
209
271
|
* Note that this function consumes the request body, so it should not be used
|
|
@@ -218,6 +280,16 @@ interface VerifyRequestOptions {
|
|
|
218
280
|
*/
|
|
219
281
|
declare function verifyRequest(request: Request, options?: VerifyRequestOptions): Promise<CryptographicKey | null>;
|
|
220
282
|
/**
|
|
283
|
+
* Verifies the signature of a request and returns a structured failure reason
|
|
284
|
+
* when verification does not succeed.
|
|
285
|
+
*
|
|
286
|
+
* @param request The request to verify.
|
|
287
|
+
* @param options Options for verifying the request.
|
|
288
|
+
* @returns The verified public key, or a structured verification failure.
|
|
289
|
+
* @since 2.1.0
|
|
290
|
+
*/
|
|
291
|
+
declare function verifyRequestDetailed(request: Request, options?: VerifyRequestOptions): Promise<VerifyRequestDetailedResult>;
|
|
292
|
+
/**
|
|
221
293
|
* A spec determiner for HTTP Message Signatures.
|
|
222
294
|
* It determines the spec to use for signing requests.
|
|
223
295
|
* It is used for double-knocking
|
|
@@ -243,4 +315,4 @@ interface HttpMessageSignaturesSpecDeterminer {
|
|
|
243
315
|
* @since 1.6.0
|
|
244
316
|
*/
|
|
245
317
|
//#endregion
|
|
246
|
-
export { FetchKeyOptions, FetchKeyResult, HttpMessageSignaturesSpec, HttpMessageSignaturesSpecDeterminer, KeyCache, SignRequestOptions, VerifyRequestOptions, exportJwk, fetchKey, generateCryptoKeyPair, importJwk, signRequest, verifyRequest };
|
|
318
|
+
export { FetchKeyDetailedResult, FetchKeyErrorResult, FetchKeyOptions, FetchKeyResult, HttpMessageSignaturesSpec, HttpMessageSignaturesSpecDeterminer, KeyCache, SignRequestOptions, VerifyRequestDetailedResult, VerifyRequestFailureReason, VerifyRequestOptions, exportJwk, fetchKey, fetchKeyDetailed, generateCryptoKeyPair, importJwk, signRequest, verifyRequest, verifyRequestDetailed };
|