@fedify/fedify 0.7.0-dev.117 → 0.7.0-dev.119
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.
Potentially problematic release.
This version of @fedify/fedify might be problematic. Click here for more details.
- package/CHANGES.md +14 -2
- package/esm/federation/handler.js +29 -44
- package/esm/federation/middleware.js +53 -6
- package/esm/httpsig/mod.js +61 -0
- package/esm/testing/fixtures/example.com/key3 +7 -0
- package/esm/testing/fixtures/example.com/person2 +17 -0
- package/package.json +1 -1
- package/types/federation/callback.d.ts +12 -0
- package/types/federation/callback.d.ts.map +1 -1
- package/types/federation/context.d.ts +14 -0
- package/types/federation/context.d.ts.map +1 -1
- package/types/federation/handler.d.ts +10 -3
- package/types/federation/handler.d.ts.map +1 -1
- package/types/federation/middleware.d.ts +39 -2
- package/types/federation/middleware.d.ts.map +1 -1
- package/types/httpsig/mod.d.ts +10 -0
- package/types/httpsig/mod.d.ts.map +1 -1
- package/types/testing/context.d.ts.map +1 -1
- package/types/testing/keys.d.ts.map +1 -1
package/CHANGES.md
CHANGED
@@ -10,8 +10,20 @@ To be released.
|
|
10
10
|
|
11
11
|
- Added `PUBLIC_COLLECTION` constant for [public addressing].
|
12
12
|
|
13
|
-
-
|
14
|
-
|
13
|
+
- `Federation` now supports [authorized fetch] for actor dispatcher and
|
14
|
+
collection dispatchers.
|
15
|
+
|
16
|
+
- Added `ActorCallbackSetters.authorize()` method.
|
17
|
+
- Added `CollectionCallbackSetters.authorize()` method.
|
18
|
+
- Added `AuthorizedPredicate` type.
|
19
|
+
- Added `RequestContext.getSignedKey()` method.
|
20
|
+
- Added `RequestContext.getSignedKeyOwner()` method.
|
21
|
+
- Added `FederationFetchOptions.onUnauthorized` option for handling
|
22
|
+
unauthorized fetches.
|
23
|
+
- Added `getKeyOwner()` function.
|
24
|
+
|
25
|
+
- The default implementation of `FederationFetchOptions.onNotAcceptable`
|
26
|
+
option now responds with `Vary: Accept, Signature` header.
|
15
27
|
|
16
28
|
[public addressing]: https://www.w3.org/TR/activitypub/#public-addressing
|
17
29
|
[authorized fetch]: https://swicg.github.io/activitypub-http-signature/#authorized-fetch
|
@@ -13,20 +13,22 @@ export function acceptsJsonLd(request) {
|
|
13
13
|
types.includes("application/ld+json") ||
|
14
14
|
types.includes("application/json");
|
15
15
|
}
|
16
|
-
export async function handleActor(request, { handle, context, actorDispatcher, onNotFound, onNotAcceptable, }) {
|
16
|
+
export async function handleActor(request, { handle, context, actorDispatcher, authorizePredicate, onNotFound, onNotAcceptable, onUnauthorized, }) {
|
17
17
|
if (actorDispatcher == null) {
|
18
18
|
const response = onNotFound(request);
|
19
19
|
return response instanceof Promise ? await response : response;
|
20
20
|
}
|
21
21
|
const key = await context.getActorKey(handle);
|
22
22
|
const actor = await actorDispatcher(context, handle, key);
|
23
|
-
if (actor == null)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
if (
|
28
|
-
const
|
29
|
-
|
23
|
+
if (actor == null)
|
24
|
+
return await onNotFound(request);
|
25
|
+
if (!acceptsJsonLd(request))
|
26
|
+
return await onNotAcceptable(request);
|
27
|
+
if (authorizePredicate != null) {
|
28
|
+
const key = await context.getSignedKey();
|
29
|
+
if (!await authorizePredicate(context, handle, key)) {
|
30
|
+
return await onUnauthorized(request);
|
31
|
+
}
|
30
32
|
}
|
31
33
|
const jsonLd = await actor.toJsonLd(context);
|
32
34
|
return new Response(JSON.stringify(jsonLd), {
|
@@ -36,32 +38,19 @@ export async function handleActor(request, { handle, context, actorDispatcher, o
|
|
36
38
|
},
|
37
39
|
});
|
38
40
|
}
|
39
|
-
export async function handleCollection(request, { handle, context, collectionCallbacks, onNotFound, onNotAcceptable, }) {
|
40
|
-
if (collectionCallbacks == null)
|
41
|
-
|
42
|
-
return response instanceof Promise ? await response : response;
|
43
|
-
}
|
41
|
+
export async function handleCollection(request, { handle, context, collectionCallbacks, onUnauthorized, onNotFound, onNotAcceptable, }) {
|
42
|
+
if (collectionCallbacks == null)
|
43
|
+
return await onNotFound(request);
|
44
44
|
const url = new URL(request.url);
|
45
45
|
const cursor = url.searchParams.get("cursor");
|
46
46
|
let collection;
|
47
47
|
if (cursor == null) {
|
48
|
-
const
|
49
|
-
const
|
50
|
-
? await firstCursorPromise
|
51
|
-
: firstCursorPromise;
|
52
|
-
const totalItemsPromise = collectionCallbacks.counter?.(context, handle);
|
53
|
-
const totalItems = totalItemsPromise instanceof Promise
|
54
|
-
? await totalItemsPromise
|
55
|
-
: totalItemsPromise;
|
48
|
+
const firstCursor = await collectionCallbacks.firstCursor?.(context, handle);
|
49
|
+
const totalItems = await collectionCallbacks.counter?.(context, handle);
|
56
50
|
if (firstCursor == null) {
|
57
|
-
const
|
58
|
-
|
59
|
-
|
60
|
-
: pagePromise;
|
61
|
-
if (page == null) {
|
62
|
-
const response = onNotFound(request);
|
63
|
-
return response instanceof Promise ? await response : response;
|
64
|
-
}
|
51
|
+
const page = await collectionCallbacks.dispatcher(context, handle, null);
|
52
|
+
if (page == null)
|
53
|
+
return await onNotFound(request);
|
65
54
|
const { items } = page;
|
66
55
|
collection = new OrderedCollection({
|
67
56
|
totalItems: totalItems == null ? null : Number(totalItems),
|
@@ -69,10 +58,7 @@ export async function handleCollection(request, { handle, context, collectionCal
|
|
69
58
|
});
|
70
59
|
}
|
71
60
|
else {
|
72
|
-
const
|
73
|
-
const lastCursor = lastCursorPromise instanceof Promise
|
74
|
-
? await lastCursorPromise
|
75
|
-
: lastCursorPromise;
|
61
|
+
const lastCursor = await collectionCallbacks.lastCursor?.(context, handle);
|
76
62
|
const first = new URL(context.url);
|
77
63
|
first.searchParams.set("cursor", firstCursor);
|
78
64
|
let last = null;
|
@@ -88,14 +74,9 @@ export async function handleCollection(request, { handle, context, collectionCal
|
|
88
74
|
}
|
89
75
|
}
|
90
76
|
else {
|
91
|
-
const
|
92
|
-
|
93
|
-
|
94
|
-
: pagePromise;
|
95
|
-
if (page == null) {
|
96
|
-
const response = onNotFound(request);
|
97
|
-
return response instanceof Promise ? await response : response;
|
98
|
-
}
|
77
|
+
const page = await collectionCallbacks.dispatcher(context, handle, cursor);
|
78
|
+
if (page == null)
|
79
|
+
return await onNotFound(request);
|
99
80
|
const { items, prevCursor, nextCursor } = page;
|
100
81
|
let prev = null;
|
101
82
|
if (prevCursor != null) {
|
@@ -111,9 +92,13 @@ export async function handleCollection(request, { handle, context, collectionCal
|
|
111
92
|
partOf.searchParams.delete("cursor");
|
112
93
|
collection = new OrderedCollectionPage({ prev, next, items, partOf });
|
113
94
|
}
|
114
|
-
if (!acceptsJsonLd(request))
|
115
|
-
|
116
|
-
|
95
|
+
if (!acceptsJsonLd(request))
|
96
|
+
return await onNotAcceptable(request);
|
97
|
+
if (collectionCallbacks.authorizePredicate != null) {
|
98
|
+
const key = await context.getSignedKey();
|
99
|
+
if (!await collectionCallbacks.authorizePredicate(context, handle, key)) {
|
100
|
+
return await onUnauthorized(request);
|
101
|
+
}
|
117
102
|
}
|
118
103
|
const jsonLd = await collection.toJsonLd(context);
|
119
104
|
return new Response(JSON.stringify(jsonLd), {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import * as dntShim from "../_dnt.shims.js";
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
3
3
|
import { exportJwk, importJwk, validateCryptoKey } from "../httpsig/key.js";
|
4
|
-
import { verify } from "../httpsig/mod.js";
|
4
|
+
import { getKeyOwner, verify } from "../httpsig/mod.js";
|
5
5
|
import { handleNodeInfo, handleNodeInfoJrd } from "../nodeinfo/handler.js";
|
6
6
|
import { fetchDocumentLoader, getAuthenticatedDocumentLoader, kvCache, } from "../runtime/docloader.js";
|
7
7
|
import { Activity, CryptographicKey } from "../vocab/mod.js";
|
@@ -219,12 +219,24 @@ export class Federation {
|
|
219
219
|
};
|
220
220
|
if (request == null)
|
221
221
|
return context;
|
222
|
+
let signedKey = undefined;
|
223
|
+
let signedKeyOwner = undefined;
|
222
224
|
const reqCtx = {
|
223
225
|
...context,
|
224
226
|
request,
|
225
227
|
url,
|
226
|
-
getSignedKey() {
|
227
|
-
|
228
|
+
async getSignedKey() {
|
229
|
+
if (signedKey !== undefined)
|
230
|
+
return signedKey;
|
231
|
+
return signedKey = await verify(request, context.documentLoader);
|
232
|
+
},
|
233
|
+
async getSignedKeyOwner() {
|
234
|
+
if (signedKeyOwner !== undefined)
|
235
|
+
return signedKeyOwner;
|
236
|
+
const key = await this.getSignedKey();
|
237
|
+
if (key == null)
|
238
|
+
return signedKeyOwner = null;
|
239
|
+
return signedKeyOwner = await getKeyOwner(key, context.documentLoader);
|
228
240
|
},
|
229
241
|
};
|
230
242
|
return reqCtx;
|
@@ -285,10 +297,14 @@ export class Federation {
|
|
285
297
|
const callbacks = { dispatcher };
|
286
298
|
this.#actorCallbacks = callbacks;
|
287
299
|
const setters = {
|
288
|
-
setKeyPairDispatcher
|
300
|
+
setKeyPairDispatcher(dispatcher) {
|
289
301
|
callbacks.keyPairDispatcher = dispatcher;
|
290
302
|
return setters;
|
291
303
|
},
|
304
|
+
authorize(predicate) {
|
305
|
+
callbacks.authorizePredicate = predicate;
|
306
|
+
return setters;
|
307
|
+
},
|
292
308
|
};
|
293
309
|
return setters;
|
294
310
|
}
|
@@ -340,6 +356,10 @@ export class Federation {
|
|
340
356
|
callbacks.lastCursor = cursor;
|
341
357
|
return setters;
|
342
358
|
},
|
359
|
+
authorize(predicate) {
|
360
|
+
callbacks.authorizePredicate = predicate;
|
361
|
+
return setters;
|
362
|
+
},
|
343
363
|
};
|
344
364
|
return setters;
|
345
365
|
}
|
@@ -379,6 +399,10 @@ export class Federation {
|
|
379
399
|
callbacks.lastCursor = cursor;
|
380
400
|
return setters;
|
381
401
|
},
|
402
|
+
authorize(predicate) {
|
403
|
+
callbacks.authorizePredicate = predicate;
|
404
|
+
return setters;
|
405
|
+
},
|
382
406
|
};
|
383
407
|
return setters;
|
384
408
|
}
|
@@ -418,6 +442,10 @@ export class Federation {
|
|
418
442
|
callbacks.lastCursor = cursor;
|
419
443
|
return setters;
|
420
444
|
},
|
445
|
+
authorize(predicate) {
|
446
|
+
callbacks.authorizePredicate = predicate;
|
447
|
+
return setters;
|
448
|
+
},
|
421
449
|
};
|
422
450
|
return setters;
|
423
451
|
}
|
@@ -562,9 +590,10 @@ export class Federation {
|
|
562
590
|
* @returns The response to the request.
|
563
591
|
* @since 0.6.0
|
564
592
|
*/
|
565
|
-
async fetch(request, { onNotFound, onNotAcceptable, contextData, }) {
|
593
|
+
async fetch(request, { onNotFound, onNotAcceptable, onUnauthorized, contextData, }) {
|
566
594
|
onNotFound ??= notFound;
|
567
595
|
onNotAcceptable ??= notAcceptable;
|
596
|
+
onUnauthorized ??= unauthorized;
|
568
597
|
const url = new URL(request.url);
|
569
598
|
const route = this.#router.route(url.pathname);
|
570
599
|
if (route == null) {
|
@@ -591,6 +620,8 @@ export class Federation {
|
|
591
620
|
handle: route.values.handle,
|
592
621
|
context,
|
593
622
|
actorDispatcher: this.#actorCallbacks?.dispatcher,
|
623
|
+
authorizePredicate: this.#actorCallbacks?.authorizePredicate,
|
624
|
+
onUnauthorized,
|
594
625
|
onNotFound,
|
595
626
|
onNotAcceptable,
|
596
627
|
});
|
@@ -599,6 +630,7 @@ export class Federation {
|
|
599
630
|
handle: route.values.handle,
|
600
631
|
context,
|
601
632
|
collectionCallbacks: this.#outboxCallbacks,
|
633
|
+
onUnauthorized,
|
602
634
|
onNotFound,
|
603
635
|
onNotAcceptable,
|
604
636
|
});
|
@@ -626,6 +658,7 @@ export class Federation {
|
|
626
658
|
handle: route.values.handle,
|
627
659
|
context,
|
628
660
|
collectionCallbacks: this.#followingCallbacks,
|
661
|
+
onUnauthorized,
|
629
662
|
onNotFound,
|
630
663
|
onNotAcceptable,
|
631
664
|
});
|
@@ -634,6 +667,7 @@ export class Federation {
|
|
634
667
|
handle: route.values.handle,
|
635
668
|
context,
|
636
669
|
collectionCallbacks: this.#followersCallbacks,
|
670
|
+
onUnauthorized,
|
637
671
|
onNotFound,
|
638
672
|
onNotAcceptable,
|
639
673
|
});
|
@@ -648,5 +682,18 @@ function notFound(_request) {
|
|
648
682
|
return new Response("Not Found", { status: 404 });
|
649
683
|
}
|
650
684
|
function notAcceptable(_request) {
|
651
|
-
return new Response("Not Acceptable", {
|
685
|
+
return new Response("Not Acceptable", {
|
686
|
+
status: 406,
|
687
|
+
headers: {
|
688
|
+
Vary: "Accept, Signature",
|
689
|
+
},
|
690
|
+
});
|
691
|
+
}
|
692
|
+
function unauthorized(_request) {
|
693
|
+
return new Response("Unauthorized", {
|
694
|
+
status: 401,
|
695
|
+
headers: {
|
696
|
+
Vary: "Accept, Signature",
|
697
|
+
},
|
698
|
+
});
|
652
699
|
}
|
package/esm/httpsig/mod.js
CHANGED
@@ -191,3 +191,64 @@ export async function doesActorOwnKey(activity, key, documentLoader) {
|
|
191
191
|
}
|
192
192
|
return false;
|
193
193
|
}
|
194
|
+
/**
|
195
|
+
* Gets the actor that owns the specified key. Returns `null` if the key has no known owner.
|
196
|
+
*
|
197
|
+
* @param keyId The ID of the key to check, or the key itself.
|
198
|
+
* @param documentLoader The document loader to use for fetching the key and its owner.
|
199
|
+
* @returns The actor that owns the key, or `null` if the key has no known owner.
|
200
|
+
* @sicne 0.7.0
|
201
|
+
*/
|
202
|
+
export async function getKeyOwner(keyId, documentLoader) {
|
203
|
+
let object;
|
204
|
+
if (keyId instanceof CryptographicKey) {
|
205
|
+
object = keyId;
|
206
|
+
if (object.id == null)
|
207
|
+
return null;
|
208
|
+
keyId = object.id;
|
209
|
+
}
|
210
|
+
else {
|
211
|
+
let keyDoc;
|
212
|
+
try {
|
213
|
+
const { document } = await documentLoader(keyId.href);
|
214
|
+
keyDoc = document;
|
215
|
+
}
|
216
|
+
catch (_) {
|
217
|
+
return null;
|
218
|
+
}
|
219
|
+
try {
|
220
|
+
object = await ASObject.fromJsonLd(keyDoc, { documentLoader });
|
221
|
+
}
|
222
|
+
catch (e) {
|
223
|
+
if (!(e instanceof TypeError))
|
224
|
+
throw e;
|
225
|
+
try {
|
226
|
+
object = await CryptographicKey.fromJsonLd(keyDoc, { documentLoader });
|
227
|
+
}
|
228
|
+
catch (e) {
|
229
|
+
if (e instanceof TypeError)
|
230
|
+
return null;
|
231
|
+
throw e;
|
232
|
+
}
|
233
|
+
}
|
234
|
+
}
|
235
|
+
let owner = null;
|
236
|
+
if (object instanceof CryptographicKey) {
|
237
|
+
if (object.ownerId == null)
|
238
|
+
return null;
|
239
|
+
owner = await object.getOwner({ documentLoader });
|
240
|
+
}
|
241
|
+
else if (isActor(object)) {
|
242
|
+
owner = object;
|
243
|
+
}
|
244
|
+
else {
|
245
|
+
return null;
|
246
|
+
}
|
247
|
+
if (owner == null)
|
248
|
+
return null;
|
249
|
+
for (const kid of owner.publicKeyIds) {
|
250
|
+
if (kid.href === keyId.href)
|
251
|
+
return owner;
|
252
|
+
}
|
253
|
+
return null;
|
254
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"@context": "https://w3id.org/security/v1",
|
3
|
+
"id": "https://example.com/key3",
|
4
|
+
"type": "CryptographicKey",
|
5
|
+
"owner": "https://example.com/person2",
|
6
|
+
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4GUqWgdiYlN3Su5Gr4l6\ni+xRS8gDDVKZ718vpGk6eIpvqs33q430nRbHIzbHRXRaAhc/1++rUBcK0V4/kjZl\nCSzVtRgGU6HMkmjcD+uE56a8XbTczfltbEDj7afoEuB2F3UhQEWrSz+QJ29DPXaL\nMIa1Yv61NR2vxGqNbdtoMjDORMBYtg77CYbcFkiJHw65PDa7+f/yjLxuCRPye5L7\nhncN0UZuuFoRJmHNRLSg5omBad9WTvQXmSyXEhEdk9fHwlI022AqAzlWbT79hldc\nDSKGGLLbQIs1c3JZIG8G5i6Uh5Vy0Z7tSNBcxbhqoI9i9je4f/x/OPIVc19f04BE\n1LgWuHsftZzRgW9Sdqz53W83XxVdxlyHeywXOnstSWT11f8dkLyQUcHKTH+E6urb\nH+aiPLiRpYK8W7D9KTQA9kZ5JXaEuveBd5vJX7wakhbzAn8pWJU7GYIHNY38Ycok\nmivkU5pY8S2cKFMwY0b7ade3MComlir5P3ZYSjF+n6gRVsT96P+9mNfCu9gXt/f8\nXCyjKlH89kGwuJ7HhR8CuVdm0l+jYozVt6GsDy0hHYyn79NCCAEzP7ZbhBMR0T5V\nrkl+TIGXoJH9WFiz4VxO+NnglF6dNQjDS5IzYLoFRXIK1f3cmQiEB4FZmL70l9HL\nrgwR+Xys83xia79OqFDRezMCAwEAAQ==\n-----END PUBLIC KEY-----\n"
|
7
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"@context": [
|
3
|
+
"https://www.w3.org/ns/activitystreams",
|
4
|
+
"https://w3id.org/security/v1"
|
5
|
+
],
|
6
|
+
"id": "https://example.com/person2",
|
7
|
+
"type": "Person",
|
8
|
+
"name": "Jane Doe",
|
9
|
+
"publicKey": [
|
10
|
+
{
|
11
|
+
"id": "https://example.com/key3",
|
12
|
+
"type": "CryptographicKey",
|
13
|
+
"owner": "https://example.com/person2",
|
14
|
+
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4GUqWgdiYlN3Su5Gr4l6\ni+xRS8gDDVKZ718vpGk6eIpvqs33q430nRbHIzbHRXRaAhc/1++rUBcK0V4/kjZl\nCSzVtRgGU6HMkmjcD+uE56a8XbTczfltbEDj7afoEuB2F3UhQEWrSz+QJ29DPXaL\nMIa1Yv61NR2vxGqNbdtoMjDORMBYtg77CYbcFkiJHw65PDa7+f/yjLxuCRPye5L7\nhncN0UZuuFoRJmHNRLSg5omBad9WTvQXmSyXEhEdk9fHwlI022AqAzlWbT79hldc\nDSKGGLLbQIs1c3JZIG8G5i6Uh5Vy0Z7tSNBcxbhqoI9i9je4f/x/OPIVc19f04BE\n1LgWuHsftZzRgW9Sdqz53W83XxVdxlyHeywXOnstSWT11f8dkLyQUcHKTH+E6urb\nH+aiPLiRpYK8W7D9KTQA9kZ5JXaEuveBd5vJX7wakhbzAn8pWJU7GYIHNY38Ycok\nmivkU5pY8S2cKFMwY0b7ade3MComlir5P3ZYSjF+n6gRVsT96P+9mNfCu9gXt/f8\nXCyjKlH89kGwuJ7HhR8CuVdm0l+jYozVt6GsDy0hHYyn79NCCAEzP7ZbhBMR0T5V\nrkl+TIGXoJH9WFiz4VxO+NnglF6dNQjDS5IzYLoFRXIK1f3cmQiEB4FZmL70l9HL\nrgwR+Xys83xia79OqFDRezMCAwEAAQ==\n-----END PUBLIC KEY-----\n"
|
15
|
+
}
|
16
|
+
]
|
17
|
+
}
|
package/package.json
CHANGED
@@ -62,4 +62,16 @@ export type InboxErrorHandler<TContextData> = (context: RequestContext<TContextD
|
|
62
62
|
* @since 0.6.0
|
63
63
|
*/
|
64
64
|
export type OutboxErrorHandler = (error: Error, activity: Activity | null) => void | Promise<void>;
|
65
|
+
/**
|
66
|
+
* A callback that determines if a request is authorized or not.
|
67
|
+
*
|
68
|
+
* @typeParam TContextData The context data to pass to the {@link Context}.
|
69
|
+
* @param context The request context.
|
70
|
+
* @param handle The handle of the actor that is being requested.
|
71
|
+
* @param signedKey The key that was used to sign the request, or `null` if
|
72
|
+
* the request was not signed or the signature was invalid.
|
73
|
+
* @returns `true` if the request is authorized, `false` otherwise.
|
74
|
+
* @since 0.7.0
|
75
|
+
*/
|
76
|
+
export type AuthorizePredicate<TContextData> = (context: RequestContext<TContextData>, handle: string, signedKey: CryptographicKey | null) => boolean | Promise<boolean>;
|
65
77
|
//# sourceMappingURL=callback.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/federation/callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,YAAY,IAAI,CAC7C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,KAClC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,YAAY,IAAI,CAC1C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,gBAAgB,GAAG,IAAI,KACzB,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,YAAY,IAAI,CACjD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,KAAK,EAAE,YAAY,IAAI,CACtD,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,IAAI,KAClB,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,IAAI,CAC5C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,KACX,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,YAAY,IAAI,CAC3C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,MAAM,KACX,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,YAAY,EAAE,SAAS,SAAS,QAAQ,IAAI,CACpE,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,IAAI,CAC5C,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,IAAI,KACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/federation/callback.ts"],"names":[],"mappings":"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"}
|
@@ -144,6 +144,20 @@ export interface RequestContext<TContextData> extends Context<TContextData> {
|
|
144
144
|
* @since 0.7.0
|
145
145
|
*/
|
146
146
|
getSignedKey(): Promise<CryptographicKey | null>;
|
147
|
+
/**
|
148
|
+
* Gets the owner of the signed key, if any exists and it is verified.
|
149
|
+
* Otherwise, `null` is returned.
|
150
|
+
*
|
151
|
+
* This can be used for implementing [authorized fetch] (also known as
|
152
|
+
* secure mode) in ActivityPub.
|
153
|
+
*
|
154
|
+
* [authorized fetch]: https://swicg.github.io/activitypub-http-signature/#authorized-fetch
|
155
|
+
*
|
156
|
+
* @returns The owner of the signed key, or `null` if the key is not verified
|
157
|
+
* or the owner is not found.
|
158
|
+
* @since 0.7.0
|
159
|
+
*/
|
160
|
+
getSignedKeyOwner(): Promise<Actor | null>;
|
147
161
|
}
|
148
162
|
/**
|
149
163
|
* Options for {@link Context.sendActivity} method and
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/federation/context.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,YAAY;IACnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;;;;OAKG;IACH,cAAc,IAAI,GAAG,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAEjC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAElC;;;;OAIG;IACH,WAAW,IAAI,GAAG,CAAC;IAEnB;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAEjC;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAErC;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAErC;;;;OAIG;IACH,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;IAEpD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAE9D;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzE;;;;;;;;;OASG;IACH,iBAAiB,CACf,QAAQ,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;KAAE,GACtD,cAAc,CAAC;IAElB;;;;;;;OAOG;IACH,YAAY,CACV,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC1E,UAAU,EAAE,KAAK,GAAG,KAAK,EAAE,EAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,YAAY,CAAE,SAAQ,OAAO,CAAC,YAAY,CAAC;IACzE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,YAAY,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/federation/context.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,YAAY;IACnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;;;;OAKG;IACH,cAAc,IAAI,GAAG,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAEjC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAElC;;;;OAIG;IACH,WAAW,IAAI,GAAG,CAAC;IAEnB;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAEjC;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAErC;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAErC;;;;OAIG;IACH,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;IAEpD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAE9D;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzE;;;;;;;;;OASG;IACH,iBAAiB,CACf,QAAQ,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;KAAE,GACtD,cAAc,CAAC;IAElB;;;;;;;OAOG;IACH,YAAY,CACV,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC1E,UAAU,EAAE,KAAK,GAAG,KAAK,EAAE,EAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,YAAY,CAAE,SAAQ,OAAO,CAAC,YAAY,CAAC;IACzE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,YAAY,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAEjD;;;;;;;;;;;;OAYG;IACH,iBAAiB,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/// <reference types="node" />
|
3
3
|
import type { DocumentLoader } from "../runtime/docloader.js";
|
4
4
|
import { Activity, type Link, type Object } from "../vocab/vocab.js";
|
5
|
-
import type { ActorDispatcher, CollectionCounter, CollectionCursor, CollectionDispatcher, InboxErrorHandler, InboxListener } from "./callback.js";
|
5
|
+
import type { ActorDispatcher, AuthorizePredicate, CollectionCounter, CollectionCursor, CollectionDispatcher, InboxErrorHandler, InboxListener } from "./callback.js";
|
6
6
|
import type { RequestContext } from "./context.js";
|
7
7
|
import type { KvKey, KvStore } from "./kv.js";
|
8
8
|
export declare function acceptsJsonLd(request: Request): boolean;
|
@@ -10,10 +10,12 @@ export interface ActorHandlerParameters<TContextData> {
|
|
10
10
|
handle: string;
|
11
11
|
context: RequestContext<TContextData>;
|
12
12
|
actorDispatcher?: ActorDispatcher<TContextData>;
|
13
|
+
authorizePredicate?: AuthorizePredicate<TContextData>;
|
14
|
+
onUnauthorized(request: Request): Response | Promise<Response>;
|
13
15
|
onNotFound(request: Request): Response | Promise<Response>;
|
14
16
|
onNotAcceptable(request: Request): Response | Promise<Response>;
|
15
17
|
}
|
16
|
-
export declare function handleActor<TContextData>(request: Request, { handle, context, actorDispatcher, onNotFound, onNotAcceptable, }: ActorHandlerParameters<TContextData>): Promise<Response>;
|
18
|
+
export declare function handleActor<TContextData>(request: Request, { handle, context, actorDispatcher, authorizePredicate, onNotFound, onNotAcceptable, onUnauthorized, }: ActorHandlerParameters<TContextData>): Promise<Response>;
|
17
19
|
/**
|
18
20
|
* Callbacks for handling a collection.
|
19
21
|
*/
|
@@ -34,15 +36,20 @@ export interface CollectionCallbacks<TItem, TContextData> {
|
|
34
36
|
* A callback that returns the last cursor for a collection.
|
35
37
|
*/
|
36
38
|
lastCursor?: CollectionCursor<TContextData>;
|
39
|
+
/**
|
40
|
+
* A callback that determines if a request is authorized to access the collection.
|
41
|
+
*/
|
42
|
+
authorizePredicate?: AuthorizePredicate<TContextData>;
|
37
43
|
}
|
38
44
|
export interface CollectionHandlerParameters<TItem, TContextData> {
|
39
45
|
handle: string;
|
40
46
|
context: RequestContext<TContextData>;
|
41
47
|
collectionCallbacks?: CollectionCallbacks<TItem, TContextData>;
|
48
|
+
onUnauthorized(request: Request): Response | Promise<Response>;
|
42
49
|
onNotFound(request: Request): Response | Promise<Response>;
|
43
50
|
onNotAcceptable(request: Request): Response | Promise<Response>;
|
44
51
|
}
|
45
|
-
export declare function handleCollection<TItem extends URL | Object | Link, TContextData>(request: Request, { handle, context, collectionCallbacks, onNotFound, onNotAcceptable, }: CollectionHandlerParameters<TItem, TContextData>): Promise<Response>;
|
52
|
+
export declare function handleCollection<TItem extends URL | Object | Link, TContextData>(request: Request, { handle, context, collectionCallbacks, onUnauthorized, onNotFound, onNotAcceptable, }: CollectionHandlerParameters<TItem, TContextData>): Promise<Response>;
|
46
53
|
export interface InboxHandlerParameters<TContextData> {
|
47
54
|
handle: string | null;
|
48
55
|
context: RequestContext<TContextData>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/federation/handler.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,QAAQ,EACR,KAAK,IAAI,EACT,KAAK,MAAM,EAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CASvD;AAED,MAAM,WAAW,sBAAsB,CAAC,YAAY;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAChD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACjE;AAED,wBAAsB,WAAW,CAAC,YAAY,EAC5C,OAAO,EAAE,OAAO,EAChB,EACE,MAAM,EACN,OAAO,EACP,eAAe,EACf,UAAU,EACV,eAAe,
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/federation/handler.ts"],"names":[],"mappings":"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"}
|
@@ -5,7 +5,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
5
5
|
import { type AuthenticatedDocumentLoaderFactory, type DocumentLoader } from "../runtime/docloader.js";
|
6
6
|
import type { Actor } from "../vocab/actor.js";
|
7
7
|
import { Activity } from "../vocab/mod.js";
|
8
|
-
import type { ActorDispatcher, ActorKeyPairDispatcher, CollectionCounter, CollectionCursor, CollectionDispatcher, InboxErrorHandler, InboxListener, NodeInfoDispatcher, OutboxErrorHandler } from "./callback.js";
|
8
|
+
import type { ActorDispatcher, ActorKeyPairDispatcher, AuthorizePredicate, CollectionCounter, CollectionCursor, CollectionDispatcher, InboxErrorHandler, InboxListener, NodeInfoDispatcher, OutboxErrorHandler } from "./callback.js";
|
9
9
|
import type { Context, RequestContext, SendActivityOptions } from "./context.js";
|
10
10
|
import type { KvKey, KvStore } from "./kv.js";
|
11
11
|
import type { MessageQueue } from "./mq.js";
|
@@ -258,7 +258,7 @@ export declare class Federation<TContextData> {
|
|
258
258
|
* @returns The response to the request.
|
259
259
|
* @since 0.6.0
|
260
260
|
*/
|
261
|
-
fetch(request: Request, { onNotFound, onNotAcceptable, contextData, }: FederationFetchOptions<TContextData>): Promise<Response>;
|
261
|
+
fetch(request: Request, { onNotFound, onNotAcceptable, onUnauthorized, contextData, }: FederationFetchOptions<TContextData>): Promise<Response>;
|
262
262
|
}
|
263
263
|
/**
|
264
264
|
* Parameters of {@link Federation.fetch} method.
|
@@ -285,6 +285,14 @@ export interface FederationFetchOptions<TContextData> {
|
|
285
285
|
* @returns The response to the request.
|
286
286
|
*/
|
287
287
|
onNotAcceptable?: (request: Request) => Response | Promise<Response>;
|
288
|
+
/**
|
289
|
+
* A callback to handle a request when the request is unauthorized.
|
290
|
+
* If not provided, a 401 response is returned.
|
291
|
+
* @param request The request object.
|
292
|
+
* @returns The response to the request.
|
293
|
+
* @since 0.7.0
|
294
|
+
*/
|
295
|
+
onUnauthorized?: (request: Request) => Response | Promise<Response>;
|
288
296
|
}
|
289
297
|
/**
|
290
298
|
* Additional settings for the actor dispatcher.
|
@@ -306,14 +314,43 @@ export interface ActorCallbackSetters<TContextData> {
|
|
306
314
|
* @returns The setters object so that settings can be chained.
|
307
315
|
*/
|
308
316
|
setKeyPairDispatcher(dispatcher: ActorKeyPairDispatcher<TContextData>): ActorCallbackSetters<TContextData>;
|
317
|
+
/**
|
318
|
+
* Specifies the conditions under which requests are authorized.
|
319
|
+
* @param predicate A callback that returns whether a request is authorized.
|
320
|
+
* @returns The setters object so that settings can be chained.
|
321
|
+
* @since 0.7.0
|
322
|
+
*/
|
323
|
+
authorize(predicate: AuthorizePredicate<TContextData>): ActorCallbackSetters<TContextData>;
|
309
324
|
}
|
310
325
|
/**
|
311
326
|
* Additional settings for a collection dispatcher.
|
312
327
|
*/
|
313
328
|
export interface CollectionCallbackSetters<TContextData> {
|
329
|
+
/**
|
330
|
+
* Sets the counter for the collection.
|
331
|
+
* @param counter A callback that returns the number of items in the collection.
|
332
|
+
* @returns The setters object so that settings can be chained.
|
333
|
+
*/
|
314
334
|
setCounter(counter: CollectionCounter<TContextData>): CollectionCallbackSetters<TContextData>;
|
335
|
+
/**
|
336
|
+
* Sets the first cursor for the collection.
|
337
|
+
* @param cursor The cursor for the first item in the collection.
|
338
|
+
* @returns The setters object so that settings can be chained.
|
339
|
+
*/
|
315
340
|
setFirstCursor(cursor: CollectionCursor<TContextData>): CollectionCallbackSetters<TContextData>;
|
341
|
+
/**
|
342
|
+
* Sets the last cursor for the collection.
|
343
|
+
* @param cursor The cursor for the last item in the collection.
|
344
|
+
* @returns The setters object so that settings can be chained.
|
345
|
+
*/
|
316
346
|
setLastCursor(cursor: CollectionCursor<TContextData>): CollectionCallbackSetters<TContextData>;
|
347
|
+
/**
|
348
|
+
* Specifies the conditions under which requests are authorized.
|
349
|
+
* @param predicate A callback that returns whether a request is authorized.
|
350
|
+
* @returns The setters object so that settings can be chained.
|
351
|
+
* @since 0.7.0
|
352
|
+
*/
|
353
|
+
authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContextData>;
|
317
354
|
}
|
318
355
|
/**
|
319
356
|
* Registry for inbox listeners for different activity types.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/federation/middleware.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,cAAc,EAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAoB,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;OAMG;IACH,kCAAkC,CAAC,EAAE,kCAAkC,CAAC;IAExE;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAInC,eAAe,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,mBAAmB,EAAE,KAAK,CAAC;IAE3B;;;OAGG;IACH,cAAc,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,YAAY;;IAqBlC;;;OAGG;gBAED,EACE,EAAE,EACF,UAAU,EACV,KAAK,EACL,cAAc,EACd,kCAAkC,EAClC,UAAU,EACV,aAAa,EACb,eAAe,GAChB,EAAE,oBAAoB;IAqEzB;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAE7E;;;;;OAKG;IACH,aAAa,CACX,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,YAAY,GACxB,cAAc,CAAC,YAAY,CAAC;
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/federation/middleware.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,cAAc,EAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAoB,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;OAMG;IACH,kCAAkC,CAAC,EAAE,kCAAkC,CAAC;IAExE;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAInC,eAAe,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,mBAAmB,EAAE,KAAK,CAAC;IAE3B;;;OAGG;IACH,cAAc,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,YAAY;;IAqBlC;;;OAGG;gBAED,EACE,EAAE,EACF,UAAU,EACV,KAAK,EACL,cAAc,EACd,kCAAkC,EAClC,UAAU,EACV,aAAa,EACb,eAAe,GAChB,EAAE,oBAAoB;IAqEzB;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAE7E;;;;;OAKG;IACH,aAAa,CACX,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,YAAY,GACxB,cAAc,CAAC,YAAY,CAAC;IAmK/B;;;;;;;;;OASG;IACH,qBAAqB,CACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC;IAc9C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,GACxC,oBAAoB,CAAC,YAAY,CAAC;IAyBrC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,GACvD,yBAAyB,CAAC,YAAY,CAAC;IAmC1C;;;;;;;;;;OAUG;IACH,sBAAsB,CACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,oBAAoB,CAAC,KAAK,GAAG,GAAG,EAAE,YAAY,CAAC,GAC1D,yBAAyB,CAAC,YAAY,CAAC;IAmC1C;;;;;;;;;;OAUG;IACH,sBAAsB,CACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,oBAAoB,CAAC,KAAK,GAAG,GAAG,EAAE,YAAY,CAAC,GAC1D,yBAAyB,CAAC,YAAY,CAAC;IAmC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,mBAAmB,CAAC,YAAY,CAAC;IAyCpC;;;;;;;;;OASG;IACG,YAAY,CAChB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;KAAE,EACpE,UAAU,EAAE,KAAK,GAAG,KAAK,EAAE,EAC3B,QAAQ,EAAE,QAAQ,EAClB,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAE,mBAAwB,GACzD,OAAO,CAAC,IAAI,CAAC;IAkDhB;;;;;;;;;;;OAWG;IACH,MAAM,CACJ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAC5C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;;;;OAWG;IACG,KAAK,CACT,OAAO,EAAE,OAAO,EAChB,EACE,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,EAAE,sBAAsB,CAAC,YAAY,CAAC,GACtC,OAAO,CAAC,QAAQ,CAAC;CAuFrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB,CAAC,YAAY;IAClD;;OAEG;IACH,WAAW,EAAE,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEhE;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErE;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrE;AAQD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB,CAAC,YAAY;IAChD;;;;OAIG;IACH,oBAAoB,CAClB,UAAU,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAC/C,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEtC;;;;;OAKG;IACH,SAAS,CACP,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,GAC1C,oBAAoB,CAAC,YAAY,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,YAAY;IACrD;;;;OAIG;IACH,UAAU,CACR,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC,GACvC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3C;;;;OAIG;IACH,cAAc,CACZ,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,GACrC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3C;;;;OAIG;IACH,aAAa,CACX,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,GACrC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3C;;;;;OAKG;IACH,SAAS,CACP,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,GAC1C,yBAAyB,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,YAAY;IAC/C;;;;;;OAMG;IACH,EAAE,CAAC,SAAS,SAAS,QAAQ,EAE3B,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,EACvC,QAAQ,EAAE,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,GAC/C,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAErC;;;;;;OAMG;IACH,OAAO,CACL,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC,GACvC,mBAAmB,CAAC,YAAY,CAAC,CAAC;CACtC"}
|
package/types/httpsig/mod.d.ts
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
import * as dntShim from "../_dnt.shims.js";
|
10
10
|
import { Temporal } from "@js-temporal/polyfill";
|
11
11
|
import type { DocumentLoader } from "../runtime/docloader.js";
|
12
|
+
import { type Actor } from "../vocab/actor.js";
|
12
13
|
import { type Activity, CryptographicKey } from "../vocab/vocab.js";
|
13
14
|
export { exportJwk, generateCryptoKeyPair, importJwk } from "./key.js";
|
14
15
|
/**
|
@@ -44,4 +45,13 @@ export declare function verify(request: Request, documentLoader: DocumentLoader,
|
|
44
45
|
* @returns Whether the actor is the owner of the key.
|
45
46
|
*/
|
46
47
|
export declare function doesActorOwnKey(activity: Activity, key: CryptographicKey, documentLoader: DocumentLoader): Promise<boolean>;
|
48
|
+
/**
|
49
|
+
* Gets the actor that owns the specified key. Returns `null` if the key has no known owner.
|
50
|
+
*
|
51
|
+
* @param keyId The ID of the key to check, or the key itself.
|
52
|
+
* @param documentLoader The document loader to use for fetching the key and its owner.
|
53
|
+
* @returns The actor that owns the key, or `null` if the key has no known owner.
|
54
|
+
* @sicne 0.7.0
|
55
|
+
*/
|
56
|
+
export declare function getKeyOwner(keyId: URL | CryptographicKey, documentLoader: DocumentLoader): Promise<Actor | null>;
|
47
57
|
//# sourceMappingURL=mod.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/httpsig/mod.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/httpsig/mod.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,KAAK,QAAQ,EACb,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvE;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,CAAC,SAAS,EAC7B,KAAK,EAAE,GAAG,GACT,OAAO,CAAC,OAAO,CAAC,CAuClB;AAQD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,WAAW,CAAC,EAAE,QAAQ,CAAC,OAAO,GAC7B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAyGlC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,gBAAgB,EACrB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,GAAG,GAAG,gBAAgB,EAC7B,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAwCvB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/testing/context.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIxE,wBAAgB,aAAa,CAAC,YAAY,EACxC,EACE,IAAI,EACJ,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACzD,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAC/C,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,GAAG;IAC5C,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,YAAY,CAAC;CACpB,GACA,cAAc,CAAC,YAAY,CAAC,
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/testing/context.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIxE,wBAAgB,aAAa,CAAC,YAAY,EACxC,EACE,IAAI,EACJ,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACzD,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAC/C,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,GAAG;IAC5C,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,YAAY,CAAC;CACpB,GACA,cAAc,CAAC,YAAY,CAAC,CAQ9B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/testing/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,UAAU,kBA2BrB,CAAC;AAEH,eAAO,MAAM,WAAW,mBAyCvB,CAAC;AAEF,eAAO,MAAM,UAAU,kBAuBrB,CAAC"}
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/testing/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,UAAU,kBA2BrB,CAAC;AAEH,eAAO,MAAM,WAAW,mBAyCvB,CAAC;AAEF,eAAO,MAAM,UAAU,kBAuBrB,CAAC;AAEH,eAAO,MAAM,WAAW,mBA6DvB,CAAC;AAEF,eAAO,MAAM,UAAU,kBA6BrB,CAAC"}
|