@fedify/fedify 1.8.1-pr.315.1090 → 1.8.1-pr.315.1275
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/README.md +16 -10
- package/dist/{actor-BX-pKSuT.js → actor-B9oI1pGu.js} +2 -5
- package/dist/{actor-1rvS-py8.d.ts → actor-CYyhXZHp.d.ts} +3 -3
- package/dist/{actor-C02Getjh.js → actor-Cg2FBINf.js} +189 -189
- package/dist/{assert-DwEa6glZ.js → assert-MZs1qjMx.js} +2 -2
- package/dist/{assert_equals-C5gKCm6A.js → assert_equals-DSbWqCm3.js} +9 -9
- package/dist/{assert_instance_of-C9QtN-X9.js → assert_instance_of-DHz7EHNU.js} +2 -2
- package/dist/{assert_is_error-DQdKoRgb.js → assert_is_error-BPGph1Jx.js} +2 -2
- package/dist/{assert_not_equals-7pyUM3Ib.js → assert_not_equals-f3m3epl3.js} +2 -2
- package/dist/{assert_rejects-DceVjUlD.js → assert_rejects-DiIiJbZn.js} +4 -4
- package/dist/{assert_throws-DTDC_gwN.js → assert_throws-BOO88avQ.js} +3 -3
- package/dist/{authdocloader-BbVFhkcz.js → authdocloader-0urt38S6.js} +4 -4
- package/dist/{authdocloader-BZs3nvC8.js → authdocloader-BkwhwBf_.js} +4 -5
- package/dist/{builder-DuW8p2S3.js → builder-B-wZuoFJ.js} +75 -6
- package/dist/{client-DK4qnXK0.d.ts → client-B_KFjN3D.d.ts} +4 -4
- package/dist/{client-BD0mI7gk.js → client-Cr3DvU-q.js} +3 -3
- package/dist/{collection-Dfb0TPno.js → collection-CSzG2j1P.js} +1 -1
- package/dist/compat/mod.d.ts +12 -12
- package/dist/compat/mod.js +1 -1
- package/dist/compat/transformers.test.js +25 -32
- package/dist/{context-BhO5LP_t.d.ts → context-BRl3Ndz3.d.ts} +286 -73
- package/dist/{denokv-QWKsIqML.js → denokv-2x6-IpXO.js} +1 -1
- package/dist/{docloader-umQd797n.js → docloader-BLgRerm3.js} +41 -40
- package/dist/{docloader-DtGccyuM.d.ts → docloader-DJT1UZH4.d.ts} +5 -2
- package/dist/{esm-d-9EVGaP.js → esm-CRotYXVH.js} +15 -15
- package/dist/federation/builder.test.js +35 -21
- package/dist/federation/collection.test.js +13 -11
- package/dist/federation/handler.test.js +341 -40
- package/dist/federation/inbox.test.js +8 -12
- package/dist/federation/keycache.test.js +9 -12
- package/dist/federation/kv.test.js +13 -11
- package/dist/federation/middleware.test.js +65 -42
- package/dist/federation/mod.d.ts +12 -12
- package/dist/federation/mod.js +12 -12
- package/dist/federation/mq.test.js +15 -13
- package/dist/federation/retry.test.js +7 -5
- package/dist/federation/router.test.js +12 -11
- package/dist/federation/send.test.js +19 -25
- package/dist/{federation-C44ekWNP.js → federation-CMX7WzeL.js} +2 -2
- package/dist/{http-D59x3pzl.js → http-BkzChfDi.js} +5 -5
- package/dist/{http-Cp-0z2Ja.d.ts → http-CMfQwn0N.d.ts} +6 -6
- package/dist/{http-CkS9JLmm.js → http-g01-ecph.js} +6 -5
- package/dist/{inbox-BjyNe-HL.js → inbox-CpONbSbQ.js} +2 -4
- package/dist/{key-jxin-rRq.js → key-B9Yg9Nqz.js} +4 -5
- package/dist/{key-Btkh3AwY.js → key-C3aLobhY.js} +4 -4
- package/dist/{key-Cf8lNopw.js → key-DdT7xoLD.js} +4 -4
- package/dist/key-RnJPgo1m.js +10 -0
- package/dist/{keycache-BC5bL06g.js → keycache-BvyhLLHV.js} +2 -2
- package/dist/{keys-Dfntfi5m.js → keys-BRSTnUlp.js} +2 -2
- package/dist/{kv-DDdb1hMa.d.ts → kv-C7sopW2E.d.ts} +2 -2
- package/dist/{kv-D7Yt6pnB.js → kv-CRZrzyXm.js} +1 -1
- package/dist/{ld-DwoZFwEd.js → ld-i6KANj32.js} +3 -5
- package/dist/{lookup-CAXRxPZ3.js → lookup-BGA_VdZm.js} +115 -8
- package/dist/{lookup-gQIU9tXW.js → lookup-D5NvwwsS.js} +2 -2
- package/dist/{lookup-m3U6KA0u.d.ts → lookup-DXPWo3Hz.d.ts} +3 -3
- package/dist/{middleware-BOHju0mN.js → middleware-BdFHk7bB.js} +629 -24
- package/dist/{middleware-cN6r9o1m.js → middleware-Chh21-S_.js} +563 -32
- package/dist/middleware-DEwSbDYQ.js +26 -0
- package/dist/middleware-DyY-_2Np.js +17 -0
- package/dist/{mod-c1I-Ydch.d.ts → mod-Cozftwmt.d.ts} +4 -4
- package/dist/{mod-yPzXIjJX.d.ts → mod-DHoWcUrW.d.ts} +6 -6
- package/dist/{mod-nlVEnYuj.d.ts → mod-DyY7EVjn.d.ts} +6 -6
- package/dist/{mod-BqCBztub.d.ts → mod-DyvbAsBu.d.ts} +6 -6
- package/dist/mod.d.ts +15 -15
- package/dist/mod.js +12 -12
- package/dist/{mq-DYKDDJmp.d.ts → mq-CRGm1e_F.d.ts} +1 -1
- package/dist/nodeinfo/client.test.js +15 -15
- package/dist/nodeinfo/handler.test.js +30 -39
- package/dist/nodeinfo/mod.d.ts +3 -3
- package/dist/nodeinfo/mod.js +2 -2
- package/dist/nodeinfo/semver.test.js +13 -11
- package/dist/nodeinfo/types.test.js +14 -12
- package/dist/{owner-BK4eWKBp.d.ts → owner-CfnEgfAc.d.ts} +4 -4
- package/dist/{owner-BrSLT3By.js → owner-DSr0c3Yp.js} +3 -4
- package/dist/{proof-u4rhYX_R.js → proof-B83O-qBN.js} +4 -6
- package/dist/{proof-BDYegzwN.js → proof-a4fXDkG3.js} +7 -7
- package/dist/{retry-BiIhZWgD.js → retry-D4GJ670a.js} +1 -1
- package/dist/runtime/authdocloader.test.js +18 -24
- package/dist/runtime/docloader.test.js +14 -15
- package/dist/runtime/key.test.js +14 -19
- package/dist/runtime/langstr.test.js +12 -11
- package/dist/runtime/mod.d.ts +5 -5
- package/dist/runtime/mod.js +6 -6
- package/dist/runtime/multibase/multibase.test.js +12 -11
- package/dist/runtime/url.test.js +8 -7
- package/dist/{semver-DWClQt_5.js → semver-dArNLkR9.js} +1 -1
- package/dist/{send-DRDKgORs.js → send-QRloWueE.js} +3 -3
- package/dist/sig/http.test.js +40 -23
- package/dist/sig/key.test.js +15 -21
- package/dist/sig/ld.test.js +13 -19
- package/dist/sig/mod.d.ts +7 -7
- package/dist/sig/mod.js +6 -6
- package/dist/sig/owner.test.js +16 -23
- package/dist/sig/proof.test.js +16 -22
- package/dist/{std__assert-B3iAixc-.js → std__assert-X-_kMxKM.js} +6 -6
- package/dist/testing/docloader.test.js +12 -11
- package/dist/testing/mod.d.ts +8622 -2
- package/dist/testing/mod.js +4 -2
- package/dist/testing-A4u9tSVX.js +302 -0
- package/dist/{transformers-ghwJuzGY.js → transformers-Dna8Fg7k.js} +4 -4
- package/dist/{vocab-C4cyrUaT.js → type-DHDlfpLg.js} +5246 -185
- package/dist/{types-C7C_l-jz.js → types-BIgY6c-l.js} +2 -2
- package/dist/{types-D1lhruqy.js → types-DbFIDnXK.js} +4 -4
- package/dist/vocab/actor.test.js +143 -149
- package/dist/vocab/lookup.test.js +37 -20
- package/dist/vocab/mod.d.ts +5 -5
- package/dist/vocab/mod.js +4 -4
- package/dist/vocab/type.test.js +5 -9
- package/dist/vocab/vocab.test.js +54 -58
- package/dist/{vocab-BaWeqg9y.js → vocab-DN6Plgg2.js} +6 -6
- package/dist/{vocab-B52eQhpN.d.ts → vocab-KgaI50mH.d.ts} +3 -3
- package/dist/webfinger/handler.test.js +30 -39
- package/dist/webfinger/lookup.test.js +13 -14
- package/dist/webfinger/mod.d.ts +3 -3
- package/dist/webfinger/mod.js +2 -2
- package/dist/x/cfworkers.d.ts +3 -3
- package/dist/x/cfworkers.js +1 -1
- package/dist/x/cfworkers.test.js +13 -11
- package/dist/x/hono.d.ts +16 -16
- package/dist/x/hono.js +3 -3
- package/dist/x/sveltekit.d.ts +13 -13
- package/dist/x/sveltekit.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-HsBuZ-b2.js +0 -41
- package/dist/context-V7yd31ov.js +0 -108
- package/dist/docloader-Bh-sDknx.js +0 -68
- package/dist/docloader-D5BOqs-9.js +0 -4514
- package/dist/key-DqZKjPjH.js +0 -16
- package/dist/langstr-DbWheeIS.js +0 -33
- package/dist/lookup-DvfZUKur.js +0 -133
- package/dist/middleware-31SyXabg.js +0 -33
- package/dist/middleware-CGl-YyTa.js +0 -17
- package/dist/multibase-DeCHcK8L.js +0 -316
- package/dist/router-D3UybECj.js +0 -118
- package/dist/testing-BZ0dJ4qn.js +0 -143
- package/dist/type-D2s5lmbZ.js +0 -14
- package/dist/url-kTAI6_KP.js +0 -68
- /package/dist/{vocab → src/vocab}/accept.yaml +0 -0
- /package/dist/{vocab → src/vocab}/activity.yaml +0 -0
- /package/dist/{vocab → src/vocab}/add.yaml +0 -0
- /package/dist/{vocab → src/vocab}/announce.yaml +0 -0
- /package/dist/{vocab → src/vocab}/application.yaml +0 -0
- /package/dist/{vocab → src/vocab}/arrive.yaml +0 -0
- /package/dist/{vocab → src/vocab}/article.yaml +0 -0
- /package/dist/{vocab → src/vocab}/audio.yaml +0 -0
- /package/dist/{vocab → src/vocab}/block.yaml +0 -0
- /package/dist/{vocab → src/vocab}/chatmessage.yaml +0 -0
- /package/dist/{vocab → src/vocab}/collection.yaml +0 -0
- /package/dist/{vocab → src/vocab}/collectionpage.yaml +0 -0
- /package/dist/{vocab → src/vocab}/create.yaml +0 -0
- /package/dist/{vocab → src/vocab}/dataintegrityproof.yaml +0 -0
- /package/dist/{vocab → src/vocab}/delete.yaml +0 -0
- /package/dist/{vocab → src/vocab}/didservice.yaml +0 -0
- /package/dist/{vocab → src/vocab}/dislike.yaml +0 -0
- /package/dist/{vocab → src/vocab}/document.yaml +0 -0
- /package/dist/{vocab → src/vocab}/emoji.yaml +0 -0
- /package/dist/{vocab → src/vocab}/emojireact.yaml +0 -0
- /package/dist/{vocab → src/vocab}/endpoints.yaml +0 -0
- /package/dist/{vocab → src/vocab}/event.yaml +0 -0
- /package/dist/{vocab → src/vocab}/export.yaml +0 -0
- /package/dist/{vocab → src/vocab}/flag.yaml +0 -0
- /package/dist/{vocab → src/vocab}/follow.yaml +0 -0
- /package/dist/{vocab → src/vocab}/group.yaml +0 -0
- /package/dist/{vocab → src/vocab}/hashtag.yaml +0 -0
- /package/dist/{vocab → src/vocab}/ignore.yaml +0 -0
- /package/dist/{vocab → src/vocab}/image.yaml +0 -0
- /package/dist/{vocab → src/vocab}/intransitiveactivity.yaml +0 -0
- /package/dist/{vocab → src/vocab}/invite.yaml +0 -0
- /package/dist/{vocab → src/vocab}/join.yaml +0 -0
- /package/dist/{vocab → src/vocab}/key.yaml +0 -0
- /package/dist/{vocab → src/vocab}/leave.yaml +0 -0
- /package/dist/{vocab → src/vocab}/like.yaml +0 -0
- /package/dist/{vocab → src/vocab}/link.yaml +0 -0
- /package/dist/{vocab → src/vocab}/listen.yaml +0 -0
- /package/dist/{vocab → src/vocab}/mention.yaml +0 -0
- /package/dist/{vocab → src/vocab}/move.yaml +0 -0
- /package/dist/{vocab → src/vocab}/multikey.yaml +0 -0
- /package/dist/{vocab → src/vocab}/note.yaml +0 -0
- /package/dist/{vocab → src/vocab}/object.yaml +0 -0
- /package/dist/{vocab → src/vocab}/offer.yaml +0 -0
- /package/dist/{vocab → src/vocab}/orderedcollection.yaml +0 -0
- /package/dist/{vocab → src/vocab}/orderedcollectionpage.yaml +0 -0
- /package/dist/{vocab → src/vocab}/organization.yaml +0 -0
- /package/dist/{vocab → src/vocab}/page.yaml +0 -0
- /package/dist/{vocab → src/vocab}/person.yaml +0 -0
- /package/dist/{vocab → src/vocab}/place.yaml +0 -0
- /package/dist/{vocab → src/vocab}/profile.yaml +0 -0
- /package/dist/{vocab → src/vocab}/propertyvalue.yaml +0 -0
- /package/dist/{vocab → src/vocab}/question.yaml +0 -0
- /package/dist/{vocab → src/vocab}/read.yaml +0 -0
- /package/dist/{vocab → src/vocab}/reject.yaml +0 -0
- /package/dist/{vocab → src/vocab}/relationship.yaml +0 -0
- /package/dist/{vocab → src/vocab}/remove.yaml +0 -0
- /package/dist/{vocab → src/vocab}/service.yaml +0 -0
- /package/dist/{vocab → src/vocab}/source.yaml +0 -0
- /package/dist/{vocab → src/vocab}/tentativeaccept.yaml +0 -0
- /package/dist/{vocab → src/vocab}/tentativereject.yaml +0 -0
- /package/dist/{vocab → src/vocab}/tombstone.yaml +0 -0
- /package/dist/{vocab → src/vocab}/travel.yaml +0 -0
- /package/dist/{vocab → src/vocab}/undo.yaml +0 -0
- /package/dist/{vocab → src/vocab}/update.yaml +0 -0
- /package/dist/{vocab → src/vocab}/video.yaml +0 -0
- /package/dist/{vocab → src/vocab}/view.yaml +0 -0
|
@@ -3,47 +3,38 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import "../
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import "../
|
|
12
|
-
import "../
|
|
13
|
-
import "../
|
|
14
|
-
import "../
|
|
15
|
-
import "../
|
|
16
|
-
import "../
|
|
17
|
-
import "../
|
|
18
|
-
import {
|
|
19
|
-
import "../
|
|
20
|
-
import "../
|
|
21
|
-
import "../
|
|
22
|
-
import "../
|
|
23
|
-
import "../
|
|
24
|
-
import
|
|
25
|
-
import "../
|
|
26
|
-
import "../
|
|
27
|
-
import "../
|
|
28
|
-
import "../
|
|
29
|
-
import "../
|
|
30
|
-
import "../
|
|
31
|
-
import "../
|
|
32
|
-
import "../
|
|
33
|
-
import "../
|
|
34
|
-
import "../
|
|
35
|
-
import "../
|
|
36
|
-
import { test } from "../testing-BZ0dJ4qn.js";
|
|
37
|
-
import "../std__assert-B3iAixc-.js";
|
|
38
|
-
import { assertFalse } from "../assert_rejects-DceVjUlD.js";
|
|
39
|
-
import "../assert_is_error-DQdKoRgb.js";
|
|
40
|
-
import "../assert_not_equals-7pyUM3Ib.js";
|
|
41
|
-
import "../assert_throws-DTDC_gwN.js";
|
|
42
|
-
import { mockDocumentLoader } from "../docloader-Bh-sDknx.js";
|
|
43
|
-
import { createInboxContext, createRequestContext } from "../context-V7yd31ov.js";
|
|
44
|
-
import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-Dfntfi5m.js";
|
|
6
|
+
import { Create, Note, Person } from "../type-DHDlfpLg.js";
|
|
7
|
+
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
|
+
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
|
+
import "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
+
import { MemoryKvStore } from "../kv-CRZrzyXm.js";
|
|
11
|
+
import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-Chh21-S_.js";
|
|
12
|
+
import "../semver-dArNLkR9.js";
|
|
13
|
+
import "../client-Cr3DvU-q.js";
|
|
14
|
+
import "../lookup-BGA_VdZm.js";
|
|
15
|
+
import "../types-BIgY6c-l.js";
|
|
16
|
+
import "../actor-B9oI1pGu.js";
|
|
17
|
+
import "../key-B9Yg9Nqz.js";
|
|
18
|
+
import { signRequest } from "../http-BkzChfDi.js";
|
|
19
|
+
import "../authdocloader-BkwhwBf_.js";
|
|
20
|
+
import "../ld-i6KANj32.js";
|
|
21
|
+
import "../owner-DSr0c3Yp.js";
|
|
22
|
+
import "../proof-B83O-qBN.js";
|
|
23
|
+
import "../inbox-CpONbSbQ.js";
|
|
24
|
+
import "../builder-B-wZuoFJ.js";
|
|
25
|
+
import "../collection-CSzG2j1P.js";
|
|
26
|
+
import "../keycache-BvyhLLHV.js";
|
|
27
|
+
import "../retry-D4GJ670a.js";
|
|
28
|
+
import "../send-QRloWueE.js";
|
|
29
|
+
import { createInboxContext, createRequestContext, mockDocumentLoader, test } from "../testing-A4u9tSVX.js";
|
|
30
|
+
import "../std__assert-X-_kMxKM.js";
|
|
31
|
+
import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
|
|
32
|
+
import "../assert_is_error-BPGph1Jx.js";
|
|
33
|
+
import "../assert_not_equals-f3m3epl3.js";
|
|
34
|
+
import "../assert_throws-BOO88avQ.js";
|
|
35
|
+
import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BRSTnUlp.js";
|
|
45
36
|
|
|
46
|
-
//#region federation/handler.test.ts
|
|
37
|
+
//#region src/federation/handler.test.ts
|
|
47
38
|
test("acceptsJsonLd()", () => {
|
|
48
39
|
assert(acceptsJsonLd(new Request("https://example.com/", { headers: { Accept: "application/activity+json" } })));
|
|
49
40
|
assert(acceptsJsonLd(new Request("https://example.com/", { headers: { Accept: "application/ld+json" } })));
|
|
@@ -1243,5 +1234,315 @@ test("respondWithObjectIfAcceptable", async () => {
|
|
|
1243
1234
|
}), request, { contextLoader: mockDocumentLoader });
|
|
1244
1235
|
assertEquals(response, null);
|
|
1245
1236
|
});
|
|
1237
|
+
test("handleCustomCollection()", async () => {
|
|
1238
|
+
const federation = createFederation({ kv: new MemoryKvStore() });
|
|
1239
|
+
let context = createRequestContext({
|
|
1240
|
+
federation,
|
|
1241
|
+
data: void 0,
|
|
1242
|
+
url: new URL("https://example.com/")
|
|
1243
|
+
});
|
|
1244
|
+
const dispatcher = (_ctx, values, cursor) => {
|
|
1245
|
+
if (values.handle !== "someone") return null;
|
|
1246
|
+
const items = [
|
|
1247
|
+
new Create({ id: new URL("https://example.com/activities/1") }),
|
|
1248
|
+
new Create({ id: new URL("https://example.com/activities/2") }),
|
|
1249
|
+
new Create({ id: new URL("https://example.com/activities/3") })
|
|
1250
|
+
];
|
|
1251
|
+
if (cursor != null) {
|
|
1252
|
+
const idx = parseInt(cursor);
|
|
1253
|
+
return {
|
|
1254
|
+
items: [items[idx]],
|
|
1255
|
+
nextCursor: idx < items.length - 1 ? (idx + 1).toString() : null,
|
|
1256
|
+
prevCursor: idx > 0 ? (idx - 1).toString() : null
|
|
1257
|
+
};
|
|
1258
|
+
}
|
|
1259
|
+
return { items };
|
|
1260
|
+
};
|
|
1261
|
+
const counter = (_ctx, values) => values.handle === "someone" ? 3 : null;
|
|
1262
|
+
const firstCursor = (_ctx, values) => values.handle === "someone" ? "0" : null;
|
|
1263
|
+
const lastCursor = (_ctx, values) => values.handle === "someone" ? "2" : null;
|
|
1264
|
+
const callbacks = {
|
|
1265
|
+
dispatcher,
|
|
1266
|
+
counter,
|
|
1267
|
+
firstCursor,
|
|
1268
|
+
lastCursor
|
|
1269
|
+
};
|
|
1270
|
+
let onNotFoundCalled = null;
|
|
1271
|
+
const onNotFound = (request) => {
|
|
1272
|
+
onNotFoundCalled = request;
|
|
1273
|
+
return new Response("Not found", { status: 404 });
|
|
1274
|
+
};
|
|
1275
|
+
let onNotAcceptableCalled = null;
|
|
1276
|
+
const onNotAcceptable = (request) => {
|
|
1277
|
+
onNotAcceptableCalled = request;
|
|
1278
|
+
return new Response("Not acceptable", { status: 406 });
|
|
1279
|
+
};
|
|
1280
|
+
let onUnauthorizedCalled = null;
|
|
1281
|
+
const onUnauthorized = (request) => {
|
|
1282
|
+
onUnauthorizedCalled = request;
|
|
1283
|
+
return new Response("Unauthorized", { status: 401 });
|
|
1284
|
+
};
|
|
1285
|
+
const errorHandlers = {
|
|
1286
|
+
onNotFound,
|
|
1287
|
+
onNotAcceptable,
|
|
1288
|
+
onUnauthorized
|
|
1289
|
+
};
|
|
1290
|
+
let response = await handleCustomCollection(context.request, {
|
|
1291
|
+
context,
|
|
1292
|
+
name: "custom collection",
|
|
1293
|
+
values: { handle: "someone" },
|
|
1294
|
+
...errorHandlers
|
|
1295
|
+
});
|
|
1296
|
+
assertEquals(response.status, 404);
|
|
1297
|
+
assertEquals(onNotFoundCalled, context.request);
|
|
1298
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1299
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1300
|
+
onNotFoundCalled = null;
|
|
1301
|
+
response = await handleCustomCollection(context.request, {
|
|
1302
|
+
context,
|
|
1303
|
+
name: "custom collection",
|
|
1304
|
+
values: { handle: "someone" },
|
|
1305
|
+
collectionCallbacks: { dispatcher },
|
|
1306
|
+
...errorHandlers
|
|
1307
|
+
});
|
|
1308
|
+
assertEquals(response.status, 406);
|
|
1309
|
+
assertEquals(onNotFoundCalled, null);
|
|
1310
|
+
assertEquals(onNotAcceptableCalled, context.request);
|
|
1311
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1312
|
+
onNotAcceptableCalled = null;
|
|
1313
|
+
context = createRequestContext({
|
|
1314
|
+
...context,
|
|
1315
|
+
request: new Request(context.url, { headers: { Accept: "application/activity+json" } })
|
|
1316
|
+
});
|
|
1317
|
+
response = await handleCustomCollection(context.request, {
|
|
1318
|
+
context,
|
|
1319
|
+
name: "custom collection",
|
|
1320
|
+
values: { handle: "no-one" },
|
|
1321
|
+
collectionCallbacks: { dispatcher },
|
|
1322
|
+
...errorHandlers
|
|
1323
|
+
});
|
|
1324
|
+
assertEquals(response.status, 404);
|
|
1325
|
+
assertEquals(onNotFoundCalled, context.request);
|
|
1326
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1327
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1328
|
+
onNotFoundCalled = null;
|
|
1329
|
+
response = await handleCustomCollection(context.request, {
|
|
1330
|
+
context,
|
|
1331
|
+
name: "custom collection",
|
|
1332
|
+
values: { handle: "someone" },
|
|
1333
|
+
collectionCallbacks: { dispatcher },
|
|
1334
|
+
...errorHandlers
|
|
1335
|
+
});
|
|
1336
|
+
assertEquals(response.status, 200);
|
|
1337
|
+
assertEquals(response.headers.get("Content-Type"), "application/activity+json");
|
|
1338
|
+
const createCtx = [
|
|
1339
|
+
"https://w3id.org/identity/v1",
|
|
1340
|
+
"https://www.w3.org/ns/activitystreams",
|
|
1341
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
1342
|
+
{
|
|
1343
|
+
toot: "http://joinmastodon.org/ns#",
|
|
1344
|
+
misskey: "https://misskey-hub.net/ns#",
|
|
1345
|
+
fedibird: "http://fedibird.com/ns#",
|
|
1346
|
+
ChatMessage: "http://litepub.social/ns#ChatMessage",
|
|
1347
|
+
Emoji: "toot:Emoji",
|
|
1348
|
+
Hashtag: "as:Hashtag",
|
|
1349
|
+
sensitive: "as:sensitive",
|
|
1350
|
+
votersCount: {
|
|
1351
|
+
"@id": "toot:votersCount",
|
|
1352
|
+
"@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
|
|
1353
|
+
},
|
|
1354
|
+
_misskey_quote: "misskey:_misskey_quote",
|
|
1355
|
+
quoteUri: "fedibird:quoteUri",
|
|
1356
|
+
quoteUrl: "as:quoteUrl",
|
|
1357
|
+
emojiReactions: {
|
|
1358
|
+
"@id": "fedibird:emojiReactions",
|
|
1359
|
+
"@type": "@id"
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
];
|
|
1363
|
+
const CONTEXT = [
|
|
1364
|
+
"https://www.w3.org/ns/activitystreams",
|
|
1365
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
1366
|
+
{
|
|
1367
|
+
toot: "http://joinmastodon.org/ns#",
|
|
1368
|
+
misskey: "https://misskey-hub.net/ns#",
|
|
1369
|
+
fedibird: "http://fedibird.com/ns#",
|
|
1370
|
+
ChatMessage: "http://litepub.social/ns#ChatMessage",
|
|
1371
|
+
Emoji: "toot:Emoji",
|
|
1372
|
+
Hashtag: "as:Hashtag",
|
|
1373
|
+
sensitive: "as:sensitive",
|
|
1374
|
+
votersCount: "toot:votersCount",
|
|
1375
|
+
_misskey_quote: "misskey:_misskey_quote",
|
|
1376
|
+
quoteUri: "fedibird:quoteUri",
|
|
1377
|
+
quoteUrl: "as:quoteUrl",
|
|
1378
|
+
emojiReactions: {
|
|
1379
|
+
"@id": "fedibird:emojiReactions",
|
|
1380
|
+
"@type": "@id"
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
];
|
|
1384
|
+
assertEquals(await response.json(), {
|
|
1385
|
+
"@context": CONTEXT,
|
|
1386
|
+
id: "https://example.com/",
|
|
1387
|
+
type: "Collection",
|
|
1388
|
+
items: [
|
|
1389
|
+
{
|
|
1390
|
+
"@context": createCtx,
|
|
1391
|
+
type: "Create",
|
|
1392
|
+
id: "https://example.com/activities/1"
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
"@context": createCtx,
|
|
1396
|
+
type: "Create",
|
|
1397
|
+
id: "https://example.com/activities/2"
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
"@context": createCtx,
|
|
1401
|
+
type: "Create",
|
|
1402
|
+
id: "https://example.com/activities/3"
|
|
1403
|
+
}
|
|
1404
|
+
]
|
|
1405
|
+
});
|
|
1406
|
+
assertEquals(onNotFoundCalled, null);
|
|
1407
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1408
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1409
|
+
response = await handleCustomCollection(context.request, {
|
|
1410
|
+
context,
|
|
1411
|
+
name: "custom collection",
|
|
1412
|
+
values: { handle: "someone" },
|
|
1413
|
+
collectionCallbacks: {
|
|
1414
|
+
dispatcher,
|
|
1415
|
+
authorizePredicate: (_ctx, _values, key, keyOwner) => key != null && keyOwner != null
|
|
1416
|
+
},
|
|
1417
|
+
...errorHandlers
|
|
1418
|
+
});
|
|
1419
|
+
assertEquals(response.status, 401);
|
|
1420
|
+
assertEquals(onNotFoundCalled, null);
|
|
1421
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1422
|
+
assertEquals(onUnauthorizedCalled, context.request);
|
|
1423
|
+
onUnauthorizedCalled = null;
|
|
1424
|
+
context = createRequestContext({
|
|
1425
|
+
...context,
|
|
1426
|
+
getSignedKey: () => Promise.resolve(rsaPublicKey2),
|
|
1427
|
+
getSignedKeyOwner: () => Promise.resolve(new Person({}))
|
|
1428
|
+
});
|
|
1429
|
+
response = await handleCustomCollection(context.request, {
|
|
1430
|
+
context,
|
|
1431
|
+
name: "custom collection",
|
|
1432
|
+
values: { handle: "someone" },
|
|
1433
|
+
collectionCallbacks: {
|
|
1434
|
+
dispatcher,
|
|
1435
|
+
authorizePredicate: (_ctx, _values, key, keyOwner) => key != null && keyOwner != null
|
|
1436
|
+
},
|
|
1437
|
+
...errorHandlers
|
|
1438
|
+
});
|
|
1439
|
+
assertEquals(response.status, 200);
|
|
1440
|
+
assertEquals(response.headers.get("Content-Type"), "application/activity+json");
|
|
1441
|
+
assertEquals(await response.json(), {
|
|
1442
|
+
"@context": CONTEXT,
|
|
1443
|
+
id: "https://example.com/",
|
|
1444
|
+
type: "Collection",
|
|
1445
|
+
items: [
|
|
1446
|
+
{
|
|
1447
|
+
"@context": createCtx,
|
|
1448
|
+
type: "Create",
|
|
1449
|
+
id: "https://example.com/activities/1"
|
|
1450
|
+
},
|
|
1451
|
+
{
|
|
1452
|
+
"@context": createCtx,
|
|
1453
|
+
type: "Create",
|
|
1454
|
+
id: "https://example.com/activities/2"
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
"@context": createCtx,
|
|
1458
|
+
type: "Create",
|
|
1459
|
+
id: "https://example.com/activities/3"
|
|
1460
|
+
}
|
|
1461
|
+
]
|
|
1462
|
+
});
|
|
1463
|
+
assertEquals(onNotFoundCalled, null);
|
|
1464
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1465
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1466
|
+
response = await handleCustomCollection(context.request, {
|
|
1467
|
+
context,
|
|
1468
|
+
name: "custom collection",
|
|
1469
|
+
values: { handle: "someone" },
|
|
1470
|
+
collectionCallbacks: callbacks,
|
|
1471
|
+
...errorHandlers
|
|
1472
|
+
});
|
|
1473
|
+
assertEquals(response.status, 200);
|
|
1474
|
+
assertEquals(response.headers.get("Content-Type"), "application/activity+json");
|
|
1475
|
+
assertEquals(await response.json(), {
|
|
1476
|
+
"@context": CONTEXT,
|
|
1477
|
+
id: "https://example.com/",
|
|
1478
|
+
type: "Collection",
|
|
1479
|
+
totalItems: 3,
|
|
1480
|
+
first: "https://example.com/?cursor=0",
|
|
1481
|
+
last: "https://example.com/?cursor=2"
|
|
1482
|
+
});
|
|
1483
|
+
assertEquals(onNotFoundCalled, null);
|
|
1484
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1485
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1486
|
+
let url = new URL("https://example.com/?cursor=0");
|
|
1487
|
+
context = createRequestContext({
|
|
1488
|
+
...context,
|
|
1489
|
+
url,
|
|
1490
|
+
request: new Request(url, { headers: { Accept: "application/activity+json" } })
|
|
1491
|
+
});
|
|
1492
|
+
response = await handleCustomCollection(context.request, {
|
|
1493
|
+
context,
|
|
1494
|
+
name: "custom collection",
|
|
1495
|
+
values: { handle: "someone" },
|
|
1496
|
+
collectionCallbacks: callbacks,
|
|
1497
|
+
...errorHandlers
|
|
1498
|
+
});
|
|
1499
|
+
assertEquals(response.status, 200);
|
|
1500
|
+
assertEquals(response.headers.get("Content-Type"), "application/activity+json");
|
|
1501
|
+
assertEquals(await response.json(), {
|
|
1502
|
+
"@context": CONTEXT,
|
|
1503
|
+
id: "https://example.com/?cursor=0",
|
|
1504
|
+
type: "CollectionPage",
|
|
1505
|
+
partOf: "https://example.com/",
|
|
1506
|
+
next: "https://example.com/?cursor=1",
|
|
1507
|
+
items: {
|
|
1508
|
+
"@context": createCtx,
|
|
1509
|
+
id: "https://example.com/activities/1",
|
|
1510
|
+
type: "Create"
|
|
1511
|
+
}
|
|
1512
|
+
});
|
|
1513
|
+
assertEquals(onNotFoundCalled, null);
|
|
1514
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1515
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1516
|
+
url = new URL("https://example.com/?cursor=2");
|
|
1517
|
+
context = createRequestContext({
|
|
1518
|
+
...context,
|
|
1519
|
+
url,
|
|
1520
|
+
request: new Request(url, { headers: { Accept: "application/activity+json" } })
|
|
1521
|
+
});
|
|
1522
|
+
response = await handleCustomCollection(context.request, {
|
|
1523
|
+
context,
|
|
1524
|
+
name: "custom collection",
|
|
1525
|
+
values: { handle: "someone" },
|
|
1526
|
+
collectionCallbacks: callbacks,
|
|
1527
|
+
...errorHandlers
|
|
1528
|
+
});
|
|
1529
|
+
assertEquals(response.status, 200);
|
|
1530
|
+
assertEquals(response.headers.get("Content-Type"), "application/activity+json");
|
|
1531
|
+
assertEquals(await response.json(), {
|
|
1532
|
+
"@context": CONTEXT,
|
|
1533
|
+
id: "https://example.com/?cursor=2",
|
|
1534
|
+
type: "CollectionPage",
|
|
1535
|
+
partOf: "https://example.com/",
|
|
1536
|
+
prev: "https://example.com/?cursor=1",
|
|
1537
|
+
items: {
|
|
1538
|
+
"@context": createCtx,
|
|
1539
|
+
id: "https://example.com/activities/3",
|
|
1540
|
+
type: "Create"
|
|
1541
|
+
}
|
|
1542
|
+
});
|
|
1543
|
+
assertEquals(onNotFoundCalled, null);
|
|
1544
|
+
assertEquals(onNotAcceptableCalled, null);
|
|
1545
|
+
assertEquals(onUnauthorizedCalled, null);
|
|
1546
|
+
});
|
|
1246
1547
|
|
|
1247
1548
|
//#endregion
|
|
@@ -3,19 +3,15 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import "../
|
|
8
|
-
import "../
|
|
9
|
-
import "../
|
|
10
|
-
import {
|
|
11
|
-
import "../
|
|
12
|
-
import "../
|
|
13
|
-
import { InboxListenerSet } from "../inbox-BjyNe-HL.js";
|
|
14
|
-
import { test } from "../testing-BZ0dJ4qn.js";
|
|
15
|
-
import "../assert_is_error-DQdKoRgb.js";
|
|
16
|
-
import { assertThrows } from "../assert_throws-DTDC_gwN.js";
|
|
6
|
+
import { Activity, Create, Invite, Offer, Update } from "../type-DHDlfpLg.js";
|
|
7
|
+
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
|
+
import "../lookup-BGA_VdZm.js";
|
|
9
|
+
import { InboxListenerSet } from "../inbox-CpONbSbQ.js";
|
|
10
|
+
import { test } from "../testing-A4u9tSVX.js";
|
|
11
|
+
import "../assert_is_error-BPGph1Jx.js";
|
|
12
|
+
import { assertThrows } from "../assert_throws-BOO88avQ.js";
|
|
17
13
|
|
|
18
|
-
//#region federation/inbox.test.ts
|
|
14
|
+
//#region src/federation/inbox.test.ts
|
|
19
15
|
test("InboxListenerSet", () => {
|
|
20
16
|
const listeners = new InboxListenerSet();
|
|
21
17
|
const activity = new Activity({});
|
|
@@ -3,19 +3,16 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import "../
|
|
11
|
-
import "../
|
|
12
|
-
import "../
|
|
13
|
-
import {
|
|
14
|
-
import "../langstr-DbWheeIS.js";
|
|
15
|
-
import { KvKeyCache } from "../keycache-BC5bL06g.js";
|
|
16
|
-
import { test } from "../testing-BZ0dJ4qn.js";
|
|
6
|
+
import { CryptographicKey, Multikey } from "../type-DHDlfpLg.js";
|
|
7
|
+
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
|
+
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
|
+
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
+
import { MemoryKvStore } from "../kv-CRZrzyXm.js";
|
|
11
|
+
import "../lookup-BGA_VdZm.js";
|
|
12
|
+
import { KvKeyCache } from "../keycache-BvyhLLHV.js";
|
|
13
|
+
import { test } from "../testing-A4u9tSVX.js";
|
|
17
14
|
|
|
18
|
-
//#region federation/keycache.test.ts
|
|
15
|
+
//#region src/federation/keycache.test.ts
|
|
19
16
|
test("KvKeyCache.set()", async () => {
|
|
20
17
|
const kv = new MemoryKvStore();
|
|
21
18
|
const cache = new KvKeyCache(kv, ["pk"]);
|
|
@@ -3,18 +3,20 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
import "../
|
|
8
|
-
import "../
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import "../
|
|
12
|
-
import "../
|
|
13
|
-
import "../
|
|
14
|
-
import "../
|
|
15
|
-
import "../
|
|
6
|
+
import "../type-DHDlfpLg.js";
|
|
7
|
+
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
|
+
import "../assert-MZs1qjMx.js";
|
|
9
|
+
import "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
+
import { MemoryKvStore } from "../kv-CRZrzyXm.js";
|
|
11
|
+
import "../lookup-BGA_VdZm.js";
|
|
12
|
+
import { test } from "../testing-A4u9tSVX.js";
|
|
13
|
+
import "../std__assert-X-_kMxKM.js";
|
|
14
|
+
import "../assert_rejects-DiIiJbZn.js";
|
|
15
|
+
import "../assert_is_error-BPGph1Jx.js";
|
|
16
|
+
import "../assert_not_equals-f3m3epl3.js";
|
|
17
|
+
import "../assert_throws-BOO88avQ.js";
|
|
16
18
|
|
|
17
|
-
//#region federation/kv.test.ts
|
|
19
|
+
//#region src/federation/kv.test.ts
|
|
18
20
|
test("MemoryKvStore", async (t) => {
|
|
19
21
|
const store = new MemoryKvStore();
|
|
20
22
|
await t.step("set() & get()", async () => {
|
|
@@ -3,47 +3,39 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import "../
|
|
13
|
-
import "../
|
|
14
|
-
import "../
|
|
15
|
-
import
|
|
16
|
-
import "../
|
|
17
|
-
import "../
|
|
18
|
-
import {
|
|
19
|
-
import "../
|
|
20
|
-
import "../
|
|
21
|
-
import {
|
|
22
|
-
import "../
|
|
23
|
-
import "../
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import {
|
|
30
|
-
import "../
|
|
31
|
-
import "../
|
|
32
|
-
import "../
|
|
33
|
-
import "../
|
|
34
|
-
import "../
|
|
35
|
-
import "../
|
|
36
|
-
import {
|
|
37
|
-
import { assertStrictEquals } from "../std__assert-B3iAixc-.js";
|
|
38
|
-
import { assertFalse, assertRejects } from "../assert_rejects-DceVjUlD.js";
|
|
39
|
-
import "../assert_is_error-DQdKoRgb.js";
|
|
40
|
-
import { assertNotEquals } from "../assert_not_equals-7pyUM3Ib.js";
|
|
41
|
-
import { assertThrows } from "../assert_throws-DTDC_gwN.js";
|
|
42
|
-
import { mockDocumentLoader } from "../docloader-Bh-sDknx.js";
|
|
43
|
-
import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-Dfntfi5m.js";
|
|
44
|
-
import { esm_default } from "../esm-d-9EVGaP.js";
|
|
6
|
+
import { Activity, Announce, Create, FetchError, Invite, Multikey, Note, Object as Object$1, Offer, Person, fetchDocumentLoader, getTypeId } from "../type-DHDlfpLg.js";
|
|
7
|
+
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
|
+
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
|
+
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
+
import { MemoryKvStore } from "../kv-CRZrzyXm.js";
|
|
11
|
+
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-Chh21-S_.js";
|
|
12
|
+
import "../semver-dArNLkR9.js";
|
|
13
|
+
import "../client-Cr3DvU-q.js";
|
|
14
|
+
import { RouterError, lookupObject } from "../lookup-BGA_VdZm.js";
|
|
15
|
+
import "../types-BIgY6c-l.js";
|
|
16
|
+
import "../actor-B9oI1pGu.js";
|
|
17
|
+
import "../key-B9Yg9Nqz.js";
|
|
18
|
+
import { signRequest, verifyRequest } from "../http-BkzChfDi.js";
|
|
19
|
+
import { getAuthenticatedDocumentLoader } from "../authdocloader-BkwhwBf_.js";
|
|
20
|
+
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-i6KANj32.js";
|
|
21
|
+
import { doesActorOwnKey } from "../owner-DSr0c3Yp.js";
|
|
22
|
+
import { signObject, verifyObject } from "../proof-B83O-qBN.js";
|
|
23
|
+
import "../inbox-CpONbSbQ.js";
|
|
24
|
+
import "../builder-B-wZuoFJ.js";
|
|
25
|
+
import "../collection-CSzG2j1P.js";
|
|
26
|
+
import "../keycache-BvyhLLHV.js";
|
|
27
|
+
import "../retry-D4GJ670a.js";
|
|
28
|
+
import "../send-QRloWueE.js";
|
|
29
|
+
import { mockDocumentLoader, test } from "../testing-A4u9tSVX.js";
|
|
30
|
+
import { assertStrictEquals } from "../std__assert-X-_kMxKM.js";
|
|
31
|
+
import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
|
|
32
|
+
import "../assert_is_error-BPGph1Jx.js";
|
|
33
|
+
import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
|
|
34
|
+
import { assertThrows } from "../assert_throws-BOO88avQ.js";
|
|
35
|
+
import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BRSTnUlp.js";
|
|
36
|
+
import { esm_default } from "../esm-CRotYXVH.js";
|
|
45
37
|
|
|
46
|
-
//#region testing/fixtures/example.com/person.json
|
|
38
|
+
//#region src/testing/fixtures/example.com/person.json
|
|
47
39
|
var __context$1 = ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"];
|
|
48
40
|
var id$1 = "https://example.com/person";
|
|
49
41
|
var type$1 = "Person";
|
|
@@ -67,7 +59,7 @@ var person_default = {
|
|
|
67
59
|
};
|
|
68
60
|
|
|
69
61
|
//#endregion
|
|
70
|
-
//#region testing/fixtures/example.com/person2.json
|
|
62
|
+
//#region src/testing/fixtures/example.com/person2.json
|
|
71
63
|
var __context = [
|
|
72
64
|
"https://www.w3.org/ns/activitystreams",
|
|
73
65
|
"https://w3id.org/security/v1",
|
|
@@ -110,7 +102,7 @@ var person2_default = {
|
|
|
110
102
|
};
|
|
111
103
|
|
|
112
104
|
//#endregion
|
|
113
|
-
//#region federation/middleware.test.ts
|
|
105
|
+
//#region src/federation/middleware.test.ts
|
|
114
106
|
test("createFederation()", async (t) => {
|
|
115
107
|
const kv = new MemoryKvStore();
|
|
116
108
|
await t.step("allowPrivateAddress", () => {
|
|
@@ -272,6 +264,7 @@ test({
|
|
|
272
264
|
assertThrows(() => ctx.getLikedUri("handle"), RouterError);
|
|
273
265
|
assertThrows(() => ctx.getFeaturedUri("handle"), RouterError);
|
|
274
266
|
assertThrows(() => ctx.getFeaturedTagsUri("handle"), RouterError);
|
|
267
|
+
assertThrows(() => ctx.getCollectionUri("test", { id: "123" }), RouterError);
|
|
275
268
|
assertEquals(ctx.parseUri(new URL("https://example.com/")), null);
|
|
276
269
|
assertEquals(ctx.parseUri(null), null);
|
|
277
270
|
assertEquals(await ctx.getActorKeyPairs("handle"), []);
|
|
@@ -1634,6 +1627,36 @@ test({
|
|
|
1634
1627
|
]);
|
|
1635
1628
|
}
|
|
1636
1629
|
});
|
|
1630
|
+
test("ContextImpl.getCollectionUri()", () => {
|
|
1631
|
+
const federation = new FederationImpl({ kv: new MemoryKvStore() });
|
|
1632
|
+
const base = "https://example.com";
|
|
1633
|
+
const ctx = new ContextImpl({
|
|
1634
|
+
url: new URL(base),
|
|
1635
|
+
federation,
|
|
1636
|
+
data: void 0,
|
|
1637
|
+
documentLoader: mockDocumentLoader,
|
|
1638
|
+
contextLoader: fetchDocumentLoader
|
|
1639
|
+
});
|
|
1640
|
+
const values = { id: "123" };
|
|
1641
|
+
const dispatcher = (_ctx, _values) => ({ items: [] });
|
|
1642
|
+
let url;
|
|
1643
|
+
const strName = "registered";
|
|
1644
|
+
federation.setCollectionDispatcher(strName, Object$1, "/string-route/{id}", dispatcher);
|
|
1645
|
+
url = ctx.getCollectionUri(strName, values);
|
|
1646
|
+
assertEquals(url.href, `${base}/string-route/123`);
|
|
1647
|
+
const unnamedSymName = Symbol(strName);
|
|
1648
|
+
federation.setCollectionDispatcher(unnamedSymName, Object$1, "/symbol-route/{id}", dispatcher);
|
|
1649
|
+
url = ctx.getCollectionUri(unnamedSymName, values);
|
|
1650
|
+
assertEquals(url.href, `${base}/symbol-route/123`);
|
|
1651
|
+
const namedSymName = Symbol.for(strName);
|
|
1652
|
+
federation.setCollectionDispatcher(namedSymName, Object$1, "/named-symbol-route/{id}", dispatcher);
|
|
1653
|
+
url = ctx.getCollectionUri(namedSymName, values);
|
|
1654
|
+
assertEquals(url.href, `${base}/named-symbol-route/123`);
|
|
1655
|
+
const notReg = "not-registered";
|
|
1656
|
+
assertThrows(() => ctx.getCollectionUri(notReg, values));
|
|
1657
|
+
assertThrows(() => ctx.getCollectionUri(Symbol(notReg), values));
|
|
1658
|
+
assertThrows(() => ctx.getCollectionUri(Symbol.for(notReg), values));
|
|
1659
|
+
});
|
|
1637
1660
|
test("InboxContextImpl.forwardActivity()", async (t) => {
|
|
1638
1661
|
esm_default.spyGlobal();
|
|
1639
1662
|
let verified = null;
|