@fedify/fedify 1.7.8 → 1.7.10
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/{actor-BP-NTJ2m.js → actor-C9RnX-Fl.js} +3 -3
- package/dist/{actor-E2ennwBD.js → actor-m_MgQ1Da.js} +179 -179
- package/dist/{authdocloader-Banw__l6.js → authdocloader-7OXAs5XI.js} +3 -3
- package/dist/{authdocloader-CFeH0dJ-.js → authdocloader-cdK4XSRT.js} +3 -3
- package/dist/{builder-EdzpUb9N.js → builder-C7nJE1zO.js} +3 -3
- package/dist/{client-rv6n0nKR.js → client-DXIsEekV.js} +1 -1
- package/dist/compat/transformers.test.d.ts +2 -1
- package/dist/compat/transformers.test.js +19 -18
- package/dist/{context-Buzj1YKD.js → context-Bts52fbz.js} +2 -2
- package/dist/{docloader-b8Rvguvo.js → docloader-BK2Fp3AJ.js} +2 -2
- package/dist/{docloader-C8mmLN-Y.js → docloader-CgkbWVNz.js} +2 -2
- package/dist/federation/builder.test.d.ts +2 -1
- package/dist/federation/builder.test.js +6 -5
- package/dist/federation/collection.test.d.ts +2 -1
- package/dist/federation/collection.test.js +2 -1
- package/dist/federation/handler.test.d.ts +2 -1
- package/dist/federation/handler.test.js +79 -20
- package/dist/federation/inbox.test.d.ts +2 -1
- package/dist/federation/inbox.test.js +5 -4
- package/dist/federation/keycache.test.d.ts +2 -1
- package/dist/federation/keycache.test.js +5 -4
- package/dist/federation/kv.test.d.ts +2 -1
- package/dist/federation/kv.test.js +2 -1
- package/dist/federation/middleware.test.d.ts +2 -1
- package/dist/federation/middleware.test.js +20 -19
- package/dist/federation/mod.js +10 -10
- package/dist/federation/mq.test.d.ts +2 -1
- package/dist/federation/mq.test.js +2 -1
- package/dist/federation/retry.test.d.ts +2 -1
- package/dist/federation/retry.test.js +2 -1
- package/dist/federation/router.test.d.ts +2 -1
- package/dist/federation/router.test.js +2 -1
- package/dist/federation/send.test.d.ts +2 -1
- package/dist/federation/send.test.js +11 -10
- package/dist/{http-DLI_ZQS-.js → http-CwQqD0nE.js} +3 -3
- package/dist/{http-BmfI6U39.js → http-D1IBucdD.js} +3 -3
- package/dist/{inbox-AwdJVoMZ.js → inbox-BrMkm2b5.js} +2 -2
- package/dist/{key-BNa6EpJl.js → key-C6phFgFq.js} +2 -2
- package/dist/{key-CLy1OKnR.js → key-Do-Pud3s.js} +4 -4
- package/dist/{key-CPSlDkCj.js → key-DtQ4rLnr.js} +3 -3
- package/dist/{key-y9w9Y2OM.js → key-ZtjFeVO8.js} +5 -5
- package/dist/{keycache-BPwY_Up0.js → keycache-B_99o7Nj.js} +1 -1
- package/dist/{keys-CtFc865v.js → keys-BgLpfFXK.js} +1 -1
- package/dist/{ld-D9kk1Uy2.js → ld-AzOj4-js.js} +3 -3
- package/dist/{lookup-DNXR408t.js → lookup-CBbanOdu.js} +3 -3
- package/dist/{lookup-Ozuw-rxN.js → lookup-ChtUDlB-.js} +1 -1
- package/dist/{lookup-Q9UB5zay.js → lookup-DJgGrigh.js} +1 -1
- package/dist/{middleware-DlU2_Djj.js → middleware-BS_et69x.js} +29 -29
- package/dist/middleware-BVMzYv1x.js +33 -0
- package/dist/middleware-CnpuCK_K.js +17 -0
- package/dist/{middleware-DaSuFmHu.js → middleware-R0UobiAQ.js} +24 -24
- package/dist/mod.js +10 -10
- package/dist/nodeinfo/client.test.d.ts +2 -1
- package/dist/nodeinfo/client.test.js +4 -3
- package/dist/nodeinfo/handler.test.d.ts +2 -1
- package/dist/nodeinfo/handler.test.js +20 -19
- package/dist/nodeinfo/mod.js +2 -2
- package/dist/nodeinfo/semver.test.d.ts +2 -1
- package/dist/nodeinfo/semver.test.js +2 -1
- package/dist/nodeinfo/types.test.d.ts +2 -1
- package/dist/nodeinfo/types.test.js +2 -1
- package/dist/{owner-DF6Fg4-s.js → owner-Ces3Cs3s.js} +3 -3
- package/dist/{proof-Blo9MEVW.js → proof-BKV4HiE8.js} +3 -3
- package/dist/{proof-13QPysOU.js → proof-BOQF8Trx.js} +3 -3
- package/dist/runtime/authdocloader.test.d.ts +2 -1
- package/dist/runtime/authdocloader.test.js +10 -9
- package/dist/runtime/docloader.test.d.ts +2 -1
- package/dist/runtime/docloader.test.js +27 -2
- package/dist/runtime/key.test.d.ts +2 -1
- package/dist/runtime/key.test.js +7 -6
- package/dist/runtime/langstr.test.d.ts +2 -1
- package/dist/runtime/langstr.test.js +2 -1
- package/dist/runtime/mod.js +6 -6
- package/dist/runtime/multibase/multibase.test.d.ts +2 -1
- package/dist/runtime/multibase/multibase.test.js +2 -1
- package/dist/runtime/url.test.d.ts +2 -1
- package/dist/runtime/url.test.js +2 -1
- package/dist/{send-CaL5Xv1F.js → send-aAmnTqe8.js} +2 -2
- package/dist/sig/http.test.d.ts +2 -1
- package/dist/sig/http.test.js +9 -8
- package/dist/sig/key.test.d.ts +2 -1
- package/dist/sig/key.test.js +8 -7
- package/dist/sig/ld.test.d.ts +2 -1
- package/dist/sig/ld.test.js +9 -8
- package/dist/sig/mod.js +6 -6
- package/dist/sig/owner.test.d.ts +2 -1
- package/dist/sig/owner.test.js +10 -9
- package/dist/sig/proof.test.d.ts +2 -1
- package/dist/sig/proof.test.js +9 -8
- package/dist/testing/docloader.test.d.ts +2 -1
- package/dist/testing/docloader.test.js +2 -1
- package/dist/{types-CGJsS8Cg.js → types-DBIKpLqH.js} +1 -1
- package/dist/vocab/actor.test.d.ts +2 -1
- package/dist/vocab/actor.test.js +6 -6
- package/dist/vocab/lookup.test.d.ts +2 -1
- package/dist/vocab/lookup.test.js +6 -5
- package/dist/vocab/mod.js +4 -4
- package/dist/vocab/type.test.d.ts +2 -1
- package/dist/vocab/type.test.js +4 -3
- package/dist/vocab/vocab.test.d.ts +2 -1
- package/dist/vocab/vocab.test.js +19 -18
- package/dist/{vocab-dDpPQ0fF.js → vocab-BOerhowX.js} +178 -178
- package/dist/{vocab-C3GyhklV.js → vocab-F6vbRsQh.js} +3 -3
- package/dist/webfinger/handler.test.d.ts +2 -1
- package/dist/webfinger/handler.test.js +20 -19
- package/dist/webfinger/lookup.test.d.ts +2 -1
- package/dist/webfinger/lookup.test.js +4 -3
- package/dist/webfinger/mod.js +2 -2
- package/dist/x/cfworkers.test.d.ts +2 -1
- package/dist/x/cfworkers.test.js +2 -1
- package/package.json +1 -1
- package/dist/middleware-B9LOv9Q4.js +0 -17
- package/dist/middleware-CPNmYc_Q.js +0 -33
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { createRequest, getRemoteDocument, logRequest } from "./docloader-
|
|
6
|
+
import { createRequest, getRemoteDocument, logRequest } from "./docloader-CgkbWVNz.js";
|
|
7
7
|
import { UrlError, validatePublicUrl } from "./url-kTAI6_KP.js";
|
|
8
|
-
import { validateCryptoKey } from "./key-
|
|
9
|
-
import { doubleKnock } from "./http-
|
|
8
|
+
import { validateCryptoKey } from "./key-DtQ4rLnr.js";
|
|
9
|
+
import { doubleKnock } from "./http-D1IBucdD.js";
|
|
10
10
|
import { getLogger } from "@logtape/logtape";
|
|
11
11
|
|
|
12
12
|
//#region runtime/authdocloader.ts
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
|
|
5
|
-
import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-
|
|
6
|
-
import { validateCryptoKey } from "./key-
|
|
7
|
-
import { doubleKnock } from "./http-
|
|
5
|
+
import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-BK2Fp3AJ.js";
|
|
6
|
+
import { validateCryptoKey } from "./key-C6phFgFq.js";
|
|
7
|
+
import { doubleKnock } from "./http-CwQqD0nE.js";
|
|
8
8
|
import { getLogger } from "@logtape/logtape";
|
|
9
9
|
|
|
10
10
|
//#region runtime/authdocloader.ts
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { deno_default } from "./docloader-
|
|
6
|
+
import { deno_default } from "./docloader-CgkbWVNz.js";
|
|
7
7
|
import { Router, RouterError } from "./router-D_aVZZUc.js";
|
|
8
8
|
import { getTypeId } from "./type-D2s5lmbZ.js";
|
|
9
|
-
import { InboxListenerSet } from "./inbox-
|
|
9
|
+
import { InboxListenerSet } from "./inbox-BrMkm2b5.js";
|
|
10
10
|
import { getLogger } from "@logtape/logtape";
|
|
11
11
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
12
12
|
|
|
@@ -34,7 +34,7 @@ var FederationBuilderImpl = class {
|
|
|
34
34
|
this.objectTypeIds = {};
|
|
35
35
|
}
|
|
36
36
|
async build(options) {
|
|
37
|
-
const { FederationImpl } = await import("./middleware-
|
|
37
|
+
const { FederationImpl } = await import("./middleware-BVMzYv1x.js");
|
|
38
38
|
const f = new FederationImpl(options);
|
|
39
39
|
const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
|
|
40
40
|
f.router = this.router.clone();
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { getUserAgent } from "./docloader-
|
|
6
|
+
import { getUserAgent } from "./docloader-CgkbWVNz.js";
|
|
7
7
|
import { parseSemVer } from "./semver-DWClQt_5.js";
|
|
8
8
|
import { getLogger } from "@logtape/logtape";
|
|
9
9
|
|
|
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
|
|
|
7
7
|
import { assert } from "../assert-DmFG7ppO.js";
|
|
8
8
|
import { assertInstanceOf } from "../assert_instance_of-CF09JHYM.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-
|
|
11
|
-
import "../docloader-
|
|
10
|
+
import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-BS_et69x.js";
|
|
11
|
+
import "../docloader-CgkbWVNz.js";
|
|
12
12
|
import "../url-kTAI6_KP.js";
|
|
13
13
|
import "../semver-DWClQt_5.js";
|
|
14
|
-
import "../client-
|
|
14
|
+
import "../client-DXIsEekV.js";
|
|
15
15
|
import "../router-D_aVZZUc.js";
|
|
16
16
|
import "../types-C7C_l-jz.js";
|
|
17
17
|
import "../multibase-DeCHcK8L.js";
|
|
18
|
-
import { Follow, Person } from "../vocab-
|
|
18
|
+
import { Follow, Person } from "../vocab-BOerhowX.js";
|
|
19
19
|
import "../langstr-DbWheeIS.js";
|
|
20
|
-
import "../lookup-
|
|
20
|
+
import "../lookup-ChtUDlB-.js";
|
|
21
21
|
import "../type-D2s5lmbZ.js";
|
|
22
|
-
import "../actor-
|
|
23
|
-
import "../key-
|
|
24
|
-
import "../http-
|
|
25
|
-
import "../authdocloader-
|
|
26
|
-
import "../ld-
|
|
27
|
-
import "../owner-
|
|
28
|
-
import "../proof-
|
|
29
|
-
import "../lookup-
|
|
30
|
-
import "../inbox-
|
|
31
|
-
import "../builder-
|
|
22
|
+
import "../actor-C9RnX-Fl.js";
|
|
23
|
+
import "../key-DtQ4rLnr.js";
|
|
24
|
+
import "../http-D1IBucdD.js";
|
|
25
|
+
import "../authdocloader-7OXAs5XI.js";
|
|
26
|
+
import "../ld-AzOj4-js.js";
|
|
27
|
+
import "../owner-Ces3Cs3s.js";
|
|
28
|
+
import "../proof-BOQF8Trx.js";
|
|
29
|
+
import "../lookup-CBbanOdu.js";
|
|
30
|
+
import "../inbox-BrMkm2b5.js";
|
|
31
|
+
import "../builder-C7nJE1zO.js";
|
|
32
32
|
import "../collection-Dfb0TPno.js";
|
|
33
|
-
import "../keycache-
|
|
33
|
+
import "../keycache-B_99o7Nj.js";
|
|
34
34
|
import "../retry-BiIhZWgD.js";
|
|
35
|
-
import "../send-
|
|
35
|
+
import "../send-aAmnTqe8.js";
|
|
36
36
|
import { test } from "../testing-BZ0dJ4qn.js";
|
|
37
37
|
|
|
38
38
|
//#region compat/transformers.test.ts
|
|
@@ -90,4 +90,5 @@ test("actorDehydrator()", async () => {
|
|
|
90
90
|
}).toJsonLd());
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
-
//#endregion
|
|
93
|
+
//#endregion
|
|
94
|
+
export { };
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
6
|
import { RouterError } from "./router-D_aVZZUc.js";
|
|
7
|
-
import { lookupWebFinger } from "./lookup-
|
|
8
|
-
import { lookupObject, traverseCollection } from "./lookup-
|
|
7
|
+
import { lookupWebFinger } from "./lookup-ChtUDlB-.js";
|
|
8
|
+
import { lookupObject, traverseCollection } from "./lookup-CBbanOdu.js";
|
|
9
9
|
import { mockDocumentLoader } from "./docloader-09nVWLAZ.js";
|
|
10
10
|
import { trace } from "@opentelemetry/api";
|
|
11
11
|
|
|
@@ -10,7 +10,7 @@ import { isIP } from "node:net";
|
|
|
10
10
|
|
|
11
11
|
//#region deno.json
|
|
12
12
|
var name = "@fedify/fedify";
|
|
13
|
-
var version = "1.7.
|
|
13
|
+
var version = "1.7.10";
|
|
14
14
|
var license = "MIT";
|
|
15
15
|
var exports = {
|
|
16
16
|
".": "./mod.ts",
|
|
@@ -4420,7 +4420,7 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4420
4420
|
}
|
|
4421
4421
|
let document;
|
|
4422
4422
|
if (!jsonLd && (contentType === "text/html" || contentType?.startsWith("text/html;") || contentType === "application/xhtml+xml" || contentType?.startsWith("application/xhtml+xml;"))) {
|
|
4423
|
-
const p = /<(a|link)((\s+[a-z][a-z:_-]*=("[^"]*"|'[^']*'|[^\s>]+))+)
|
|
4423
|
+
const p = /<(a|link)((\s+[a-z][a-z:_-]*=("[^"]*"|'[^']*'|[^\s>]+))+)\s*\/?>/gi;
|
|
4424
4424
|
const p2 = /\s+([a-z][a-z:_-]*)=("([^"]*)"|'([^']*)'|([^\s>]+))/gi;
|
|
4425
4425
|
const html = await response.text();
|
|
4426
4426
|
let m;
|
|
@@ -10,7 +10,7 @@ import process from "node:process";
|
|
|
10
10
|
|
|
11
11
|
//#region deno.json
|
|
12
12
|
var name = "@fedify/fedify";
|
|
13
|
-
var version = "1.7.
|
|
13
|
+
var version = "1.7.10";
|
|
14
14
|
var license = "MIT";
|
|
15
15
|
var exports = {
|
|
16
16
|
".": "./mod.ts",
|
|
@@ -4361,7 +4361,7 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4361
4361
|
}
|
|
4362
4362
|
let document;
|
|
4363
4363
|
if (!jsonLd && (contentType === "text/html" || contentType?.startsWith("text/html;") || contentType === "application/xhtml+xml" || contentType?.startsWith("application/xhtml+xml;"))) {
|
|
4364
|
-
const p = /<(a|link)((\s+[a-z][a-z:_-]*=("[^"]*"|'[^']*'|[^\s>]+))+)
|
|
4364
|
+
const p = /<(a|link)((\s+[a-z][a-z:_-]*=("[^"]*"|'[^']*'|[^\s>]+))+)\s*\/?>/gi;
|
|
4365
4365
|
const p2 = /\s+([a-z][a-z:_-]*)=("([^"]*)"|'([^']*)'|([^\s>]+))/gi;
|
|
4366
4366
|
const html = await response.text();
|
|
4367
4367
|
let m;
|
|
@@ -7,16 +7,16 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
|
|
|
7
7
|
import "../assert-DmFG7ppO.js";
|
|
8
8
|
import "../assert_instance_of-CF09JHYM.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import "../docloader-
|
|
10
|
+
import "../docloader-CgkbWVNz.js";
|
|
11
11
|
import "../url-kTAI6_KP.js";
|
|
12
12
|
import { parseSemVer } from "../semver-DWClQt_5.js";
|
|
13
13
|
import "../router-D_aVZZUc.js";
|
|
14
14
|
import "../multibase-DeCHcK8L.js";
|
|
15
|
-
import { Activity, Note, Person } from "../vocab-
|
|
15
|
+
import { Activity, Note, Person } from "../vocab-BOerhowX.js";
|
|
16
16
|
import "../langstr-DbWheeIS.js";
|
|
17
17
|
import "../type-D2s5lmbZ.js";
|
|
18
|
-
import "../inbox-
|
|
19
|
-
import { createFederationBuilder } from "../builder-
|
|
18
|
+
import "../inbox-BrMkm2b5.js";
|
|
19
|
+
import { createFederationBuilder } from "../builder-C7nJE1zO.js";
|
|
20
20
|
import { test } from "../testing-BZ0dJ4qn.js";
|
|
21
21
|
import { assertExists } from "../std__assert-vp0TKMS1.js";
|
|
22
22
|
import "../assert_rejects-C-sxEMM5.js";
|
|
@@ -157,4 +157,5 @@ test("FederationBuilder", async (t) => {
|
|
|
157
157
|
});
|
|
158
158
|
});
|
|
159
159
|
|
|
160
|
-
//#endregion
|
|
160
|
+
//#endregion
|
|
161
|
+
export { };
|
|
@@ -30,4 +30,5 @@ test("buildCollectionSynchronizationHeader()", async () => {
|
|
|
30
30
|
assertEquals(header, "collectionId=\"https://testing.example.org/users/1/followers\", url=\"https://testing.example.org/users/1/followers?base-url=https%3A%2F%2Ftesting.example.org%2F\", digest=\"c33f48cd341ef046a206b8a72ec97af65079f9a3a9b90eef79c5920dce45c61f\"");
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
//#endregion
|
|
33
|
+
//#endregion
|
|
34
|
+
export { };
|
|
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
|
|
|
7
7
|
import { assert } from "../assert-DmFG7ppO.js";
|
|
8
8
|
import "../assert_instance_of-CF09JHYM.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-
|
|
11
|
-
import "../docloader-
|
|
10
|
+
import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-BS_et69x.js";
|
|
11
|
+
import "../docloader-CgkbWVNz.js";
|
|
12
12
|
import "../url-kTAI6_KP.js";
|
|
13
13
|
import "../semver-DWClQt_5.js";
|
|
14
|
-
import "../client-
|
|
14
|
+
import "../client-DXIsEekV.js";
|
|
15
15
|
import "../router-D_aVZZUc.js";
|
|
16
16
|
import "../types-C7C_l-jz.js";
|
|
17
17
|
import "../multibase-DeCHcK8L.js";
|
|
18
|
-
import { Create, Note, Person } from "../vocab-
|
|
18
|
+
import { Create, Note, Person } from "../vocab-BOerhowX.js";
|
|
19
19
|
import "../langstr-DbWheeIS.js";
|
|
20
|
-
import "../lookup-
|
|
20
|
+
import "../lookup-ChtUDlB-.js";
|
|
21
21
|
import "../type-D2s5lmbZ.js";
|
|
22
|
-
import "../actor-
|
|
23
|
-
import "../key-
|
|
24
|
-
import { signRequest } from "../http-
|
|
25
|
-
import "../authdocloader-
|
|
26
|
-
import "../ld-
|
|
27
|
-
import "../owner-
|
|
28
|
-
import "../proof-
|
|
29
|
-
import "../lookup-
|
|
30
|
-
import "../inbox-
|
|
31
|
-
import "../builder-
|
|
22
|
+
import "../actor-C9RnX-Fl.js";
|
|
23
|
+
import "../key-DtQ4rLnr.js";
|
|
24
|
+
import { signRequest } from "../http-D1IBucdD.js";
|
|
25
|
+
import "../authdocloader-7OXAs5XI.js";
|
|
26
|
+
import "../ld-AzOj4-js.js";
|
|
27
|
+
import "../owner-Ces3Cs3s.js";
|
|
28
|
+
import "../proof-BOQF8Trx.js";
|
|
29
|
+
import "../lookup-CBbanOdu.js";
|
|
30
|
+
import { InboxListenerSet } from "../inbox-BrMkm2b5.js";
|
|
31
|
+
import "../builder-C7nJE1zO.js";
|
|
32
32
|
import "../collection-Dfb0TPno.js";
|
|
33
|
-
import "../keycache-
|
|
33
|
+
import "../keycache-B_99o7Nj.js";
|
|
34
34
|
import "../retry-BiIhZWgD.js";
|
|
35
|
-
import "../send-
|
|
35
|
+
import "../send-aAmnTqe8.js";
|
|
36
36
|
import { test } from "../testing-BZ0dJ4qn.js";
|
|
37
37
|
import "../std__assert-vp0TKMS1.js";
|
|
38
38
|
import { assertFalse } from "../assert_rejects-C-sxEMM5.js";
|
|
@@ -40,8 +40,8 @@ import "../assert_is_error-nrwA1GeT.js";
|
|
|
40
40
|
import "../assert_not_equals-Dc7y-V5Q.js";
|
|
41
41
|
import "../assert_throws-Cn9C6Jur.js";
|
|
42
42
|
import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
|
|
43
|
-
import { createInboxContext, createRequestContext } from "../context-
|
|
44
|
-
import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-
|
|
43
|
+
import { createInboxContext, createRequestContext } from "../context-Bts52fbz.js";
|
|
44
|
+
import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BgLpfFXK.js";
|
|
45
45
|
|
|
46
46
|
//#region federation/handler.test.ts
|
|
47
47
|
test("acceptsJsonLd()", () => {
|
|
@@ -1203,6 +1203,64 @@ test("respondWithObject()", async () => {
|
|
|
1203
1203
|
content: "Hello, world!"
|
|
1204
1204
|
});
|
|
1205
1205
|
});
|
|
1206
|
+
test("handleInbox() - authentication bypass vulnerability", async () => {
|
|
1207
|
+
const federation = createFederation({ kv: new MemoryKvStore() });
|
|
1208
|
+
let processedActivity;
|
|
1209
|
+
const inboxListeners = new InboxListenerSet();
|
|
1210
|
+
inboxListeners.add(Create, (_ctx, activity) => {
|
|
1211
|
+
processedActivity = activity;
|
|
1212
|
+
});
|
|
1213
|
+
const maliciousActivity = new Create({
|
|
1214
|
+
id: new URL("https://attacker.example.com/activities/malicious"),
|
|
1215
|
+
actor: new URL("https://victim.example.com/users/alice"),
|
|
1216
|
+
object: new Note({
|
|
1217
|
+
id: new URL("https://attacker.example.com/notes/forged"),
|
|
1218
|
+
attribution: new URL("https://victim.example.com/users/alice"),
|
|
1219
|
+
content: "This is a forged message from the victim!"
|
|
1220
|
+
})
|
|
1221
|
+
});
|
|
1222
|
+
const maliciousRequest = await signRequest(new Request("https://example.com/", {
|
|
1223
|
+
method: "POST",
|
|
1224
|
+
body: JSON.stringify(await maliciousActivity.toJsonLd())
|
|
1225
|
+
}), rsaPrivateKey3, rsaPublicKey3.id);
|
|
1226
|
+
const maliciousContext = createRequestContext({
|
|
1227
|
+
request: maliciousRequest,
|
|
1228
|
+
url: new URL(maliciousRequest.url),
|
|
1229
|
+
data: void 0,
|
|
1230
|
+
documentLoader: mockDocumentLoader,
|
|
1231
|
+
federation
|
|
1232
|
+
});
|
|
1233
|
+
const actorDispatcher = (_ctx, identifier) => {
|
|
1234
|
+
if (identifier !== "someone") return null;
|
|
1235
|
+
return new Person({ name: "Someone" });
|
|
1236
|
+
};
|
|
1237
|
+
const response = await handleInbox(maliciousRequest, {
|
|
1238
|
+
recipient: "someone",
|
|
1239
|
+
context: maliciousContext,
|
|
1240
|
+
inboxContextFactory(_activity) {
|
|
1241
|
+
return createInboxContext({
|
|
1242
|
+
url: new URL(maliciousRequest.url),
|
|
1243
|
+
data: void 0,
|
|
1244
|
+
documentLoader: mockDocumentLoader,
|
|
1245
|
+
federation,
|
|
1246
|
+
recipient: "someone"
|
|
1247
|
+
});
|
|
1248
|
+
},
|
|
1249
|
+
kv: new MemoryKvStore(),
|
|
1250
|
+
kvPrefixes: {
|
|
1251
|
+
activityIdempotence: ["_fedify", "activityIdempotence"],
|
|
1252
|
+
publicKey: ["_fedify", "publicKey"]
|
|
1253
|
+
},
|
|
1254
|
+
actorDispatcher,
|
|
1255
|
+
inboxListeners,
|
|
1256
|
+
onNotFound: () => new Response("Not found", { status: 404 }),
|
|
1257
|
+
signatureTimeWindow: { minutes: 5 },
|
|
1258
|
+
skipSignatureVerification: false
|
|
1259
|
+
});
|
|
1260
|
+
assertEquals(response.status, 401);
|
|
1261
|
+
assertEquals(await response.text(), "The signer and the actor do not match.");
|
|
1262
|
+
assertEquals(processedActivity, void 0, `SECURITY VULNERABILITY: Malicious activity with mismatched signature was processed! Activity ID: ${processedActivity?.id?.href}, Claimed actor: ${processedActivity?.actorId?.href}`);
|
|
1263
|
+
});
|
|
1206
1264
|
test("respondWithObjectIfAcceptable", async () => {
|
|
1207
1265
|
let request = new Request("https://example.com/", { headers: { Accept: "application/activity+json" } });
|
|
1208
1266
|
let response = await respondWithObjectIfAcceptable(new Note({
|
|
@@ -1244,4 +1302,5 @@ test("respondWithObjectIfAcceptable", async () => {
|
|
|
1244
1302
|
assertEquals(response, null);
|
|
1245
1303
|
});
|
|
1246
1304
|
|
|
1247
|
-
//#endregion
|
|
1305
|
+
//#endregion
|
|
1306
|
+
export { };
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
6
|
import { assertEquals } from "../assert_equals-CTYbeopb.js";
|
|
7
|
-
import "../docloader-
|
|
7
|
+
import "../docloader-CgkbWVNz.js";
|
|
8
8
|
import "../url-kTAI6_KP.js";
|
|
9
9
|
import "../multibase-DeCHcK8L.js";
|
|
10
|
-
import { Activity, Create, Invite, Offer, Update } from "../vocab-
|
|
10
|
+
import { Activity, Create, Invite, Offer, Update } from "../vocab-BOerhowX.js";
|
|
11
11
|
import "../langstr-DbWheeIS.js";
|
|
12
12
|
import "../type-D2s5lmbZ.js";
|
|
13
|
-
import { InboxListenerSet } from "../inbox-
|
|
13
|
+
import { InboxListenerSet } from "../inbox-BrMkm2b5.js";
|
|
14
14
|
import { test } from "../testing-BZ0dJ4qn.js";
|
|
15
15
|
import "../assert_is_error-nrwA1GeT.js";
|
|
16
16
|
import { assertThrows } from "../assert_throws-Cn9C6Jur.js";
|
|
@@ -92,4 +92,5 @@ test("InboxListenerSet", () => {
|
|
|
92
92
|
assertThrows(() => listeners.add(Activity, listenActivity), TypeError, "Listener already set for this type.");
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
//#endregion
|
|
95
|
+
//#endregion
|
|
96
|
+
export { };
|
|
@@ -7,12 +7,12 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
|
|
|
7
7
|
import { assert } from "../assert-DmFG7ppO.js";
|
|
8
8
|
import { assertInstanceOf } from "../assert_instance_of-CF09JHYM.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import "../docloader-
|
|
10
|
+
import "../docloader-CgkbWVNz.js";
|
|
11
11
|
import "../url-kTAI6_KP.js";
|
|
12
12
|
import "../multibase-DeCHcK8L.js";
|
|
13
|
-
import { CryptographicKey, Multikey } from "../vocab-
|
|
13
|
+
import { CryptographicKey, Multikey } from "../vocab-BOerhowX.js";
|
|
14
14
|
import "../langstr-DbWheeIS.js";
|
|
15
|
-
import { KvKeyCache } from "../keycache-
|
|
15
|
+
import { KvKeyCache } from "../keycache-B_99o7Nj.js";
|
|
16
16
|
import { test } from "../testing-BZ0dJ4qn.js";
|
|
17
17
|
|
|
18
18
|
//#region federation/keycache.test.ts
|
|
@@ -57,4 +57,5 @@ test("KvKeyCache.get()", async () => {
|
|
|
57
57
|
assertEquals(await cache.get(new URL("https://example.com/null")), null);
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
//#endregion
|
|
60
|
+
//#endregion
|
|
61
|
+
export { };
|
|
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
|
|
|
7
7
|
import { assert } from "../assert-DmFG7ppO.js";
|
|
8
8
|
import { assertInstanceOf } from "../assert_instance_of-CF09JHYM.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-
|
|
11
|
-
import { FetchError, fetchDocumentLoader } from "../docloader-
|
|
10
|
+
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-BS_et69x.js";
|
|
11
|
+
import { FetchError, fetchDocumentLoader } from "../docloader-CgkbWVNz.js";
|
|
12
12
|
import "../url-kTAI6_KP.js";
|
|
13
13
|
import "../semver-DWClQt_5.js";
|
|
14
|
-
import "../client-
|
|
14
|
+
import "../client-DXIsEekV.js";
|
|
15
15
|
import { RouterError } from "../router-D_aVZZUc.js";
|
|
16
16
|
import "../types-C7C_l-jz.js";
|
|
17
17
|
import "../multibase-DeCHcK8L.js";
|
|
18
|
-
import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-
|
|
18
|
+
import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-BOerhowX.js";
|
|
19
19
|
import "../langstr-DbWheeIS.js";
|
|
20
|
-
import "../lookup-
|
|
20
|
+
import "../lookup-ChtUDlB-.js";
|
|
21
21
|
import { getTypeId } from "../type-D2s5lmbZ.js";
|
|
22
|
-
import "../actor-
|
|
23
|
-
import "../key-
|
|
24
|
-
import { signRequest, verifyRequest } from "../http-
|
|
25
|
-
import { getAuthenticatedDocumentLoader } from "../authdocloader-
|
|
26
|
-
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-
|
|
27
|
-
import { doesActorOwnKey } from "../owner-
|
|
28
|
-
import { signObject, verifyObject } from "../proof-
|
|
29
|
-
import { lookupObject } from "../lookup-
|
|
30
|
-
import "../inbox-
|
|
31
|
-
import "../builder-
|
|
22
|
+
import "../actor-C9RnX-Fl.js";
|
|
23
|
+
import "../key-DtQ4rLnr.js";
|
|
24
|
+
import { signRequest, verifyRequest } from "../http-D1IBucdD.js";
|
|
25
|
+
import { getAuthenticatedDocumentLoader } from "../authdocloader-7OXAs5XI.js";
|
|
26
|
+
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-AzOj4-js.js";
|
|
27
|
+
import { doesActorOwnKey } from "../owner-Ces3Cs3s.js";
|
|
28
|
+
import { signObject, verifyObject } from "../proof-BOQF8Trx.js";
|
|
29
|
+
import { lookupObject } from "../lookup-CBbanOdu.js";
|
|
30
|
+
import "../inbox-BrMkm2b5.js";
|
|
31
|
+
import "../builder-C7nJE1zO.js";
|
|
32
32
|
import "../collection-Dfb0TPno.js";
|
|
33
|
-
import "../keycache-
|
|
33
|
+
import "../keycache-B_99o7Nj.js";
|
|
34
34
|
import "../retry-BiIhZWgD.js";
|
|
35
|
-
import "../send-
|
|
35
|
+
import "../send-aAmnTqe8.js";
|
|
36
36
|
import { test } from "../testing-BZ0dJ4qn.js";
|
|
37
37
|
import { assertStrictEquals } from "../std__assert-vp0TKMS1.js";
|
|
38
38
|
import { assertFalse, assertRejects } from "../assert_rejects-C-sxEMM5.js";
|
|
@@ -40,7 +40,7 @@ import "../assert_is_error-nrwA1GeT.js";
|
|
|
40
40
|
import { assertNotEquals } from "../assert_not_equals-Dc7y-V5Q.js";
|
|
41
41
|
import { assertThrows } from "../assert_throws-Cn9C6Jur.js";
|
|
42
42
|
import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
|
|
43
|
-
import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-
|
|
43
|
+
import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BgLpfFXK.js";
|
|
44
44
|
import { esm_default } from "../esm-Db4De7AS.js";
|
|
45
45
|
|
|
46
46
|
//#region testing/fixtures/example.com/person.json
|
|
@@ -1780,4 +1780,5 @@ test("KvSpecDeterminer", async (t) => {
|
|
|
1780
1780
|
});
|
|
1781
1781
|
});
|
|
1782
1782
|
|
|
1783
|
-
//#endregion
|
|
1783
|
+
//#endregion
|
|
1784
|
+
export { };
|
package/dist/federation/mod.js
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
|
|
5
5
|
import "../transformers-ghwJuzGY.js";
|
|
6
|
-
import "../docloader-
|
|
7
|
-
import "../actor-
|
|
8
|
-
import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-
|
|
9
|
-
import "../lookup-
|
|
10
|
-
import "../key-
|
|
11
|
-
import "../http-
|
|
12
|
-
import "../proof-
|
|
6
|
+
import "../docloader-BK2Fp3AJ.js";
|
|
7
|
+
import "../actor-m_MgQ1Da.js";
|
|
8
|
+
import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-R0UobiAQ.js";
|
|
9
|
+
import "../lookup-DJgGrigh.js";
|
|
10
|
+
import "../key-C6phFgFq.js";
|
|
11
|
+
import "../http-CwQqD0nE.js";
|
|
12
|
+
import "../proof-BKV4HiE8.js";
|
|
13
13
|
import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-BRIQn-GV.js";
|
|
14
|
-
import "../types-
|
|
15
|
-
import "../authdocloader-
|
|
16
|
-
import "../vocab-
|
|
14
|
+
import "../types-DBIKpLqH.js";
|
|
15
|
+
import "../authdocloader-cdK4XSRT.js";
|
|
16
|
+
import "../vocab-F6vbRsQh.js";
|
|
17
17
|
|
|
18
18
|
export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
|
|
@@ -41,4 +41,5 @@ function assertDurationRange(actual, min, max) {
|
|
|
41
41
|
if (Temporal.Duration.compare(actual, minDuration) < 0 || Temporal.Duration.compare(actual, maxDuration) > 0) throw new AssertionError(`Expected ${actual} to be between ${min} and ${max}`);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
//#endregion
|
|
44
|
+
//#endregion
|
|
45
|
+
export { };
|