@fedify/fedify 1.7.11 → 1.7.12
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-DgWryCk8.js → actor-GZRoTRqg.js} +1059 -2276
- package/dist/{actor-2ENhJMd7.js → actor-TYqJGdVq.js} +6 -9
- package/dist/{assert-DmFG7ppO.js → assert-LOEeCUK5.js} +1 -1
- package/dist/{assert_equals-CTYbeopb.js → assert_equals-B44MxcIj.js} +2 -4
- package/dist/{assert_instance_of-CF09JHYM.js → assert_instance_of-XtuFevV_.js} +1 -1
- package/dist/{assert_is_error-nrwA1GeT.js → assert_is_error-BTlryvT0.js} +1 -1
- package/dist/{assert_not_equals-Dc7y-V5Q.js → assert_not_equals-C685gKx6.js} +1 -1
- package/dist/{assert_rejects-C-sxEMM5.js → assert_rejects-DWQ4jaf9.js} +2 -2
- package/dist/{assert_throws-Cn9C6Jur.js → assert_throws-YetpVSc-.js} +2 -2
- package/dist/{authdocloader-BUJAQQAE.js → authdocloader-BopfyipD.js} +3 -3
- package/dist/{authdocloader-CK17fG7y.js → authdocloader-hiFSyM7V.js} +4 -4
- package/dist/{builder-CZM8EtHh.js → builder-mi6RdzNE.js} +7 -10
- package/dist/{chunk-HsBuZ-b2.js → chunk-Cx8LTkjm.js} +3 -1
- package/dist/{client-D83KwIk4.js → client-DuUKk4pk.js} +6 -6
- package/dist/compat/transformers.test.js +27 -28
- package/dist/{context-MUHrGcK9.js → context-RMU32mk4.js} +2 -2
- package/dist/{docloader-BcyuO_kK.js → docloader-DJxET2fN.js} +5 -9
- package/dist/{docloader-D4wl8z_4.js → docloader-bgBm1Hd1.js} +4 -6
- package/dist/{esm-Db4De7AS.js → esm-DO9PrujO.js} +23 -34
- package/dist/federation/builder.test.js +23 -29
- package/dist/federation/collection.test.js +9 -9
- package/dist/federation/handler.test.js +33 -33
- package/dist/federation/inbox.test.js +10 -10
- package/dist/federation/keycache.test.js +9 -9
- package/dist/federation/kv.test.js +10 -9
- package/dist/federation/middleware.test.js +76 -99
- package/dist/federation/mod.js +11 -11
- package/dist/federation/mq.test.js +10 -11
- package/dist/federation/retry.test.js +3 -3
- package/dist/federation/router.test.js +9 -9
- package/dist/federation/send.test.js +22 -22
- package/dist/{federation-BRIQn-GV.js → federation-B0aljx0V.js} +1 -2
- package/dist/{http-DFHfa9tA.js → http-D2DkwsjA.js} +8 -15
- package/dist/{http-Dsj_eYDw.js → http-vqMAvOVs.js} +8 -15
- package/dist/{inbox-CltmHpHc.js → inbox-DAAZZl2k.js} +5 -7
- package/dist/key-5ssHQ67E.js +16 -0
- package/dist/{key-bBurC_PZ.js → key-DSJGnD10.js} +4 -4
- package/dist/{key-qFVeObG1.js → key-DmqJj57e.js} +5 -8
- package/dist/{key-bttcdrh5.js → key-KVhaUM92.js} +6 -9
- package/dist/{keycache-DijbBawF.js → keycache-C1pEuRyQ.js} +2 -2
- package/dist/{keys-DJ5t4jB4.js → keys-C4XQHW5_.js} +1 -1
- package/dist/{ld-U-lGfuzj.js → ld-DzlJ_IpT.js} +9 -16
- package/dist/{lookup-BlPHJ-Ff.js → lookup-CSngxuWm.js} +2 -4
- package/dist/{lookup-C8ZpflGI.js → lookup-D0je8AqR.js} +7 -11
- package/dist/{lookup-BGqnk7rW.js → lookup-DL62q3Xh.js} +3 -5
- package/dist/{middleware-D66R1UZl.js → middleware-3wVT6S9E.js} +34 -52
- package/dist/middleware-CxFoFBD8.js +33 -0
- package/dist/{middleware-BRzqW-QG.js → middleware-DlDXugwZ.js} +34 -58
- package/dist/middleware-w7_U3fFi.js +17 -0
- package/dist/mod.js +11 -11
- package/dist/{multibase-DeCHcK8L.js → multibase-CnLHszip.js} +1 -2
- package/dist/nodeinfo/client.test.js +20 -23
- package/dist/nodeinfo/handler.test.js +32 -32
- package/dist/nodeinfo/mod.js +2 -2
- package/dist/nodeinfo/semver.test.js +23 -30
- package/dist/nodeinfo/types.test.js +11 -11
- package/dist/{owner-2zho-3Ew.js → owner-81ey_76X.js} +3 -3
- package/dist/{proof-BYHc1mMr.js → proof-BlULDH4H.js} +8 -14
- package/dist/{proof-3J23UdVg.js → proof-DlI7QNdn.js} +12 -25
- package/dist/runtime/authdocloader.test.js +21 -21
- package/dist/runtime/docloader.test.js +16 -18
- package/dist/runtime/key.test.js +17 -17
- package/dist/runtime/langstr.test.js +9 -9
- package/dist/runtime/mod.js +6 -6
- package/dist/runtime/multibase/multibase.test.js +11 -12
- package/dist/runtime/url.test.js +6 -6
- package/dist/{semver-DWClQt_5.js → semver-BNrOOAs9.js} +1 -3
- package/dist/{send-CW7iJ-b9.js → send-DdxfTHo6.js} +3 -4
- package/dist/sig/http.test.js +40 -54
- package/dist/sig/key.test.js +18 -18
- package/dist/sig/ld.test.js +20 -22
- package/dist/sig/mod.js +6 -6
- package/dist/sig/owner.test.js +20 -20
- package/dist/sig/proof.test.js +19 -19
- package/dist/{std__assert-vp0TKMS1.js → std__assert-o_r9vqm1.js} +1 -1
- package/dist/testing/docloader.test.js +9 -9
- package/dist/testing/mod.js +1 -1
- package/dist/{testing-BZ0dJ4qn.js → testing-DLyvtiiW.js} +3 -5
- package/dist/{type-D2s5lmbZ.js → type-CFuiGLz9.js} +1 -2
- package/dist/{types-C7C_l-jz.js → types-CJHS5pXl.js} +1 -1
- package/dist/{types-DXmLob1B.js → types-CmVV9LT1.js} +6 -8
- package/dist/{url-kTAI6_KP.js → url-C2xuoQD1.js} +2 -4
- package/dist/vocab/actor.test.js +104 -156
- package/dist/vocab/lookup.test.js +17 -17
- package/dist/vocab/mod.js +4 -4
- package/dist/vocab/type.test.js +11 -15
- package/dist/vocab/vocab.test.js +45 -49
- package/dist/{vocab-Cy9XhW_T.js → vocab-BebR0kAy.js} +6 -10
- package/dist/{vocab-BojAnGjI.js → vocab-DFlq4Wa6.js} +1057 -2270
- package/dist/webfinger/handler.test.js +33 -34
- package/dist/webfinger/lookup.test.js +13 -13
- package/dist/webfinger/mod.js +2 -2
- package/dist/x/cfworkers.test.js +9 -9
- package/package.json +1 -1
- package/dist/key-BROjrzkW.js +0 -16
- package/dist/middleware-BhqeOJrC.js +0 -17
- package/dist/middleware-DFra19vb.js +0 -33
|
@@ -3,26 +3,26 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import "../assert-
|
|
8
|
-
import "../assert_instance_of-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import "../assert-LOEeCUK5.js";
|
|
8
|
+
import "../assert_instance_of-XtuFevV_.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import "../docloader-
|
|
11
|
-
import "../url-
|
|
12
|
-
import { parseSemVer } from "../semver-
|
|
10
|
+
import "../docloader-bgBm1Hd1.js";
|
|
11
|
+
import "../url-C2xuoQD1.js";
|
|
12
|
+
import { parseSemVer } from "../semver-BNrOOAs9.js";
|
|
13
13
|
import "../router-D_aVZZUc.js";
|
|
14
|
-
import "../multibase-
|
|
15
|
-
import { Activity, Note, Person } from "../vocab-
|
|
14
|
+
import "../multibase-CnLHszip.js";
|
|
15
|
+
import { Activity, Note, Person } from "../vocab-DFlq4Wa6.js";
|
|
16
16
|
import "../langstr-DbWheeIS.js";
|
|
17
|
-
import "../type-
|
|
18
|
-
import "../inbox-
|
|
19
|
-
import { createFederationBuilder } from "../builder-
|
|
20
|
-
import { test } from "../testing-
|
|
21
|
-
import { assertExists } from "../std__assert-
|
|
22
|
-
import "../assert_rejects-
|
|
23
|
-
import "../assert_is_error-
|
|
24
|
-
import "../assert_not_equals-
|
|
25
|
-
import "../assert_throws-
|
|
17
|
+
import "../type-CFuiGLz9.js";
|
|
18
|
+
import "../inbox-DAAZZl2k.js";
|
|
19
|
+
import { createFederationBuilder } from "../builder-mi6RdzNE.js";
|
|
20
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
21
|
+
import { assertExists } from "../std__assert-o_r9vqm1.js";
|
|
22
|
+
import "../assert_rejects-DWQ4jaf9.js";
|
|
23
|
+
import "../assert_is_error-BTlryvT0.js";
|
|
24
|
+
import "../assert_not_equals-C685gKx6.js";
|
|
25
|
+
import "../assert_throws-YetpVSc-.js";
|
|
26
26
|
|
|
27
27
|
//#region federation/builder.test.ts
|
|
28
28
|
test("FederationBuilder", async (t) => {
|
|
@@ -34,8 +34,7 @@ test("FederationBuilder", async (t) => {
|
|
|
34
34
|
};
|
|
35
35
|
builder.setActorDispatcher("/users/{identifier}", actorDispatcher);
|
|
36
36
|
const inboxListener = (_ctx, _activity) => {};
|
|
37
|
-
|
|
38
|
-
listeners.on(Activity, inboxListener);
|
|
37
|
+
builder.setInboxListeners("/users/{identifier}/inbox").on(Activity, inboxListener);
|
|
39
38
|
const objectDispatcher = (_ctx, _values) => {
|
|
40
39
|
return null;
|
|
41
40
|
};
|
|
@@ -86,8 +85,7 @@ test("FederationBuilder", async (t) => {
|
|
|
86
85
|
const kv = new MemoryKvStore();
|
|
87
86
|
const federation = await builder.build({ kv });
|
|
88
87
|
assertExists(federation);
|
|
89
|
-
|
|
90
|
-
assertEquals(impl.kv, kv);
|
|
88
|
+
assertEquals(federation.kv, kv);
|
|
91
89
|
});
|
|
92
90
|
await t.step("should pass build options correctly", async () => {
|
|
93
91
|
const builder = createFederationBuilder();
|
|
@@ -112,22 +110,19 @@ test("FederationBuilder", async (t) => {
|
|
|
112
110
|
const kv = new MemoryKvStore();
|
|
113
111
|
const federationDefault = await builder.build({ kv });
|
|
114
112
|
assertExists(federationDefault);
|
|
115
|
-
|
|
116
|
-
assertEquals(implDefault.firstKnock, void 0);
|
|
113
|
+
assertEquals(federationDefault.firstKnock, void 0);
|
|
117
114
|
const federationCustom = await builder.build({
|
|
118
115
|
kv,
|
|
119
116
|
firstKnock: "draft-cavage-http-signatures-12"
|
|
120
117
|
});
|
|
121
118
|
assertExists(federationCustom);
|
|
122
|
-
|
|
123
|
-
assertEquals(implCustom.firstKnock, "draft-cavage-http-signatures-12");
|
|
119
|
+
assertEquals(federationCustom.firstKnock, "draft-cavage-http-signatures-12");
|
|
124
120
|
const federationRfc = await builder.build({
|
|
125
121
|
kv,
|
|
126
122
|
firstKnock: "rfc9421"
|
|
127
123
|
});
|
|
128
124
|
assertExists(federationRfc);
|
|
129
|
-
|
|
130
|
-
assertEquals(implRfc.firstKnock, "rfc9421");
|
|
125
|
+
assertEquals(federationRfc.firstKnock, "rfc9421");
|
|
131
126
|
});
|
|
132
127
|
await t.step("should register multiple object dispatchers and verify them", async () => {
|
|
133
128
|
const builder = createFederationBuilder();
|
|
@@ -140,8 +135,7 @@ test("FederationBuilder", async (t) => {
|
|
|
140
135
|
};
|
|
141
136
|
builder.setObjectDispatcher(Note, "/notes/{id}", noteDispatcher);
|
|
142
137
|
builder.setObjectDispatcher(Person, "/people/{id}", personDispatcher);
|
|
143
|
-
const
|
|
144
|
-
const impl = federation;
|
|
138
|
+
const impl = await builder.build({ kv });
|
|
145
139
|
assertExists(impl.objectCallbacks[Note.typeId.href]);
|
|
146
140
|
assertExists(impl.objectCallbacks[Person.typeId.href]);
|
|
147
141
|
const notePath = impl.router.build(`object:${Note.typeId.href}`, { id: "123" });
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import "../assert-
|
|
8
|
-
import "../assert_instance_of-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import "../assert-LOEeCUK5.js";
|
|
8
|
+
import "../assert_instance_of-XtuFevV_.js";
|
|
9
9
|
import { buildCollectionSynchronizationHeader, digest } from "../collection-Dfb0TPno.js";
|
|
10
|
-
import { test } from "../testing-
|
|
11
|
-
import "../std__assert-
|
|
12
|
-
import "../assert_rejects-
|
|
13
|
-
import "../assert_is_error-
|
|
14
|
-
import "../assert_not_equals-
|
|
15
|
-
import "../assert_throws-
|
|
10
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
11
|
+
import "../std__assert-o_r9vqm1.js";
|
|
12
|
+
import "../assert_rejects-DWQ4jaf9.js";
|
|
13
|
+
import "../assert_is_error-BTlryvT0.js";
|
|
14
|
+
import "../assert_not_equals-C685gKx6.js";
|
|
15
|
+
import "../assert_throws-YetpVSc-.js";
|
|
16
16
|
import { decodeHex } from "byte-encodings/hex";
|
|
17
17
|
|
|
18
18
|
//#region federation/collection.test.ts
|
|
@@ -3,45 +3,45 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import { assert } from "../assert-
|
|
8
|
-
import "../assert_instance_of-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import { assert } from "../assert-LOEeCUK5.js";
|
|
8
|
+
import "../assert_instance_of-XtuFevV_.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-
|
|
12
|
-
import "../url-
|
|
13
|
-
import "../semver-
|
|
14
|
-
import "../client-
|
|
10
|
+
import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-3wVT6S9E.js";
|
|
11
|
+
import "../docloader-bgBm1Hd1.js";
|
|
12
|
+
import "../url-C2xuoQD1.js";
|
|
13
|
+
import "../semver-BNrOOAs9.js";
|
|
14
|
+
import "../client-DuUKk4pk.js";
|
|
15
15
|
import "../router-D_aVZZUc.js";
|
|
16
|
-
import "../types-
|
|
17
|
-
import "../multibase-
|
|
18
|
-
import { Create, Note, Person } from "../vocab-
|
|
16
|
+
import "../types-CJHS5pXl.js";
|
|
17
|
+
import "../multibase-CnLHszip.js";
|
|
18
|
+
import { Create, Note, Person } from "../vocab-DFlq4Wa6.js";
|
|
19
19
|
import "../langstr-DbWheeIS.js";
|
|
20
|
-
import "../lookup-
|
|
21
|
-
import "../type-
|
|
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 { InboxListenerSet } from "../inbox-
|
|
31
|
-
import "../builder-
|
|
20
|
+
import "../lookup-DL62q3Xh.js";
|
|
21
|
+
import "../type-CFuiGLz9.js";
|
|
22
|
+
import "../actor-TYqJGdVq.js";
|
|
23
|
+
import "../key-KVhaUM92.js";
|
|
24
|
+
import { signRequest } from "../http-D2DkwsjA.js";
|
|
25
|
+
import "../authdocloader-hiFSyM7V.js";
|
|
26
|
+
import "../ld-DzlJ_IpT.js";
|
|
27
|
+
import "../owner-81ey_76X.js";
|
|
28
|
+
import "../proof-BlULDH4H.js";
|
|
29
|
+
import "../lookup-D0je8AqR.js";
|
|
30
|
+
import { InboxListenerSet } from "../inbox-DAAZZl2k.js";
|
|
31
|
+
import "../builder-mi6RdzNE.js";
|
|
32
32
|
import "../collection-Dfb0TPno.js";
|
|
33
|
-
import "../keycache-
|
|
33
|
+
import "../keycache-C1pEuRyQ.js";
|
|
34
34
|
import "../retry-BiIhZWgD.js";
|
|
35
|
-
import "../send-
|
|
36
|
-
import { test } from "../testing-
|
|
37
|
-
import "../std__assert-
|
|
38
|
-
import { assertFalse } from "../assert_rejects-
|
|
39
|
-
import "../assert_is_error-
|
|
40
|
-
import "../assert_not_equals-
|
|
41
|
-
import "../assert_throws-
|
|
35
|
+
import "../send-DdxfTHo6.js";
|
|
36
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
37
|
+
import "../std__assert-o_r9vqm1.js";
|
|
38
|
+
import { assertFalse } from "../assert_rejects-DWQ4jaf9.js";
|
|
39
|
+
import "../assert_is_error-BTlryvT0.js";
|
|
40
|
+
import "../assert_not_equals-C685gKx6.js";
|
|
41
|
+
import "../assert_throws-YetpVSc-.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-RMU32mk4.js";
|
|
44
|
+
import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-C4XQHW5_.js";
|
|
45
45
|
|
|
46
46
|
//#region federation/handler.test.ts
|
|
47
47
|
test("acceptsJsonLd()", () => {
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import "../docloader-
|
|
8
|
-
import "../url-
|
|
9
|
-
import "../multibase-
|
|
10
|
-
import { Activity, Create, Invite, Offer, Update } from "../vocab-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import "../docloader-bgBm1Hd1.js";
|
|
8
|
+
import "../url-C2xuoQD1.js";
|
|
9
|
+
import "../multibase-CnLHszip.js";
|
|
10
|
+
import { Activity, Create, Invite, Offer, Update } from "../vocab-DFlq4Wa6.js";
|
|
11
11
|
import "../langstr-DbWheeIS.js";
|
|
12
|
-
import "../type-
|
|
13
|
-
import { InboxListenerSet } from "../inbox-
|
|
14
|
-
import { test } from "../testing-
|
|
15
|
-
import "../assert_is_error-
|
|
16
|
-
import { assertThrows } from "../assert_throws-
|
|
12
|
+
import "../type-CFuiGLz9.js";
|
|
13
|
+
import { InboxListenerSet } from "../inbox-DAAZZl2k.js";
|
|
14
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
15
|
+
import "../assert_is_error-BTlryvT0.js";
|
|
16
|
+
import { assertThrows } from "../assert_throws-YetpVSc-.js";
|
|
17
17
|
|
|
18
18
|
//#region federation/inbox.test.ts
|
|
19
19
|
test("InboxListenerSet", () => {
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import { assert } from "../assert-
|
|
8
|
-
import { assertInstanceOf } from "../assert_instance_of-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import { assert } from "../assert-LOEeCUK5.js";
|
|
8
|
+
import { assertInstanceOf } from "../assert_instance_of-XtuFevV_.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import "../docloader-
|
|
11
|
-
import "../url-
|
|
12
|
-
import "../multibase-
|
|
13
|
-
import { CryptographicKey, Multikey } from "../vocab-
|
|
10
|
+
import "../docloader-bgBm1Hd1.js";
|
|
11
|
+
import "../url-C2xuoQD1.js";
|
|
12
|
+
import "../multibase-CnLHszip.js";
|
|
13
|
+
import { CryptographicKey, Multikey } from "../vocab-DFlq4Wa6.js";
|
|
14
14
|
import "../langstr-DbWheeIS.js";
|
|
15
|
-
import { KvKeyCache } from "../keycache-
|
|
16
|
-
import { test } from "../testing-
|
|
15
|
+
import { KvKeyCache } from "../keycache-C1pEuRyQ.js";
|
|
16
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
17
17
|
|
|
18
18
|
//#region federation/keycache.test.ts
|
|
19
19
|
test("KvKeyCache.set()", async () => {
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import "../assert-
|
|
8
|
-
import "../assert_instance_of-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import "../assert-LOEeCUK5.js";
|
|
8
|
+
import "../assert_instance_of-XtuFevV_.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
|
|
10
|
-
import { test } from "../testing-
|
|
11
|
-
import "../std__assert-
|
|
12
|
-
import "../assert_rejects-
|
|
13
|
-
import "../assert_is_error-
|
|
14
|
-
import "../assert_not_equals-
|
|
15
|
-
import "../assert_throws-
|
|
10
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
11
|
+
import "../std__assert-o_r9vqm1.js";
|
|
12
|
+
import "../assert_rejects-DWQ4jaf9.js";
|
|
13
|
+
import "../assert_is_error-BTlryvT0.js";
|
|
14
|
+
import "../assert_not_equals-C685gKx6.js";
|
|
15
|
+
import "../assert_throws-YetpVSc-.js";
|
|
16
16
|
|
|
17
17
|
//#region federation/kv.test.ts
|
|
18
18
|
test("MemoryKvStore", async (t) => {
|
|
@@ -22,6 +22,7 @@ test("MemoryKvStore", async (t) => {
|
|
|
22
22
|
assertEquals(await store.get(["foo", "bar"]), "foobar");
|
|
23
23
|
assertEquals(await store.get(["foo"]), void 0);
|
|
24
24
|
await store.set(["foo", "baz"], "baz", { ttl: Temporal.Duration.from({ seconds: 0 }) });
|
|
25
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
25
26
|
assertEquals(await store.get(["foo", "baz"]), void 0);
|
|
26
27
|
});
|
|
27
28
|
await t.step("delete()", async () => {
|
|
@@ -3,45 +3,45 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { assertEquals } from "../assert_equals-
|
|
7
|
-
import { assert } from "../assert-
|
|
8
|
-
import { assertInstanceOf } from "../assert_instance_of-
|
|
6
|
+
import { assertEquals } from "../assert_equals-B44MxcIj.js";
|
|
7
|
+
import { assert } from "../assert-LOEeCUK5.js";
|
|
8
|
+
import { assertInstanceOf } from "../assert_instance_of-XtuFevV_.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-
|
|
12
|
-
import "../url-
|
|
13
|
-
import "../semver-
|
|
14
|
-
import "../client-
|
|
10
|
+
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-3wVT6S9E.js";
|
|
11
|
+
import { FetchError, fetchDocumentLoader } from "../docloader-bgBm1Hd1.js";
|
|
12
|
+
import "../url-C2xuoQD1.js";
|
|
13
|
+
import "../semver-BNrOOAs9.js";
|
|
14
|
+
import "../client-DuUKk4pk.js";
|
|
15
15
|
import { RouterError } from "../router-D_aVZZUc.js";
|
|
16
|
-
import "../types-
|
|
17
|
-
import "../multibase-
|
|
18
|
-
import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-
|
|
16
|
+
import "../types-CJHS5pXl.js";
|
|
17
|
+
import "../multibase-CnLHszip.js";
|
|
18
|
+
import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-DFlq4Wa6.js";
|
|
19
19
|
import "../langstr-DbWheeIS.js";
|
|
20
|
-
import "../lookup-
|
|
21
|
-
import { getTypeId } from "../type-
|
|
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-
|
|
20
|
+
import "../lookup-DL62q3Xh.js";
|
|
21
|
+
import { getTypeId } from "../type-CFuiGLz9.js";
|
|
22
|
+
import "../actor-TYqJGdVq.js";
|
|
23
|
+
import "../key-KVhaUM92.js";
|
|
24
|
+
import { signRequest, verifyRequest } from "../http-D2DkwsjA.js";
|
|
25
|
+
import { getAuthenticatedDocumentLoader } from "../authdocloader-hiFSyM7V.js";
|
|
26
|
+
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-DzlJ_IpT.js";
|
|
27
|
+
import { doesActorOwnKey } from "../owner-81ey_76X.js";
|
|
28
|
+
import { signObject, verifyObject } from "../proof-BlULDH4H.js";
|
|
29
|
+
import { lookupObject } from "../lookup-D0je8AqR.js";
|
|
30
|
+
import "../inbox-DAAZZl2k.js";
|
|
31
|
+
import "../builder-mi6RdzNE.js";
|
|
32
32
|
import "../collection-Dfb0TPno.js";
|
|
33
|
-
import "../keycache-
|
|
33
|
+
import "../keycache-C1pEuRyQ.js";
|
|
34
34
|
import "../retry-BiIhZWgD.js";
|
|
35
|
-
import "../send-
|
|
36
|
-
import { test } from "../testing-
|
|
37
|
-
import { assertStrictEquals } from "../std__assert-
|
|
38
|
-
import { assertFalse, assertRejects } from "../assert_rejects-
|
|
39
|
-
import "../assert_is_error-
|
|
40
|
-
import { assertNotEquals } from "../assert_not_equals-
|
|
41
|
-
import { assertThrows } from "../assert_throws-
|
|
35
|
+
import "../send-DdxfTHo6.js";
|
|
36
|
+
import { test } from "../testing-DLyvtiiW.js";
|
|
37
|
+
import { assertStrictEquals } from "../std__assert-o_r9vqm1.js";
|
|
38
|
+
import { assertFalse, assertRejects } from "../assert_rejects-DWQ4jaf9.js";
|
|
39
|
+
import "../assert_is_error-BTlryvT0.js";
|
|
40
|
+
import { assertNotEquals } from "../assert_not_equals-C685gKx6.js";
|
|
41
|
+
import { assertThrows } from "../assert_throws-YetpVSc-.js";
|
|
42
42
|
import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
|
|
43
|
-
import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-
|
|
44
|
-
import { esm_default } from "../esm-
|
|
43
|
+
import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-C4XQHW5_.js";
|
|
44
|
+
import { esm_default } from "../esm-DO9PrujO.js";
|
|
45
45
|
|
|
46
46
|
//#region testing/fixtures/example.com/person.json
|
|
47
47
|
var __context$1 = ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"];
|
|
@@ -356,12 +356,11 @@ test("Federation.createContext()", async (t) => {
|
|
|
356
356
|
assertEquals(await ctx.lookupObject("https://example.com/object"), null);
|
|
357
357
|
await assertRejects(() => ctx.sendActivity({ identifier: "handle" }, [], new Create({})), TypeError, "The activity to send must have at least one actor property.");
|
|
358
358
|
await ctx.sendActivity({ identifier: "handle" }, [], new Create({ actor: new URL("https://example.com/users/handle") }));
|
|
359
|
-
const
|
|
359
|
+
const ctx2 = createFederation({
|
|
360
360
|
kv,
|
|
361
361
|
documentLoader: mockDocumentLoader,
|
|
362
362
|
contextLoader: mockDocumentLoader
|
|
363
|
-
});
|
|
364
|
-
const ctx2 = federation2.createContext(new URL("https://example.com/"), 123);
|
|
363
|
+
}).createContext(new URL("https://example.com/"), 123);
|
|
365
364
|
assertEquals(await ctx2.lookupObject("https://example.com/object"), new Object$1({
|
|
366
365
|
id: new URL("https://example.com/object"),
|
|
367
366
|
name: "Fetched object"
|
|
@@ -617,8 +616,7 @@ test("Federation.createContext()", async (t) => {
|
|
|
617
616
|
});
|
|
618
617
|
});
|
|
619
618
|
await t.step("Context.clone()", () => {
|
|
620
|
-
const
|
|
621
|
-
const ctx = federation.createContext(new URL("https://example.com/"), 123);
|
|
619
|
+
const ctx = createFederation({ kv }).createContext(new URL("https://example.com/"), 123);
|
|
622
620
|
const clone = ctx.clone(456);
|
|
623
621
|
assertStrictEquals(clone.canonicalOrigin, ctx.canonicalOrigin);
|
|
624
622
|
assertStrictEquals(clone.origin, ctx.origin);
|
|
@@ -654,11 +652,10 @@ test("Federation.createContext()", async (t) => {
|
|
|
654
652
|
}));
|
|
655
653
|
});
|
|
656
654
|
await t.step("Context.lookupNodeInfo()", async () => {
|
|
657
|
-
const
|
|
655
|
+
const ctx = createFederation({
|
|
658
656
|
kv,
|
|
659
657
|
userAgent: "CustomUserAgent/1.2.3"
|
|
660
|
-
});
|
|
661
|
-
const ctx = federation.createContext(new URL("https://example.com/"), 123);
|
|
658
|
+
}).createContext(new URL("https://example.com/"), 123);
|
|
662
659
|
const nodeInfo = await ctx.lookupNodeInfo("https://example.com/");
|
|
663
660
|
assertEquals(nodeInfo, {
|
|
664
661
|
software: {
|
|
@@ -923,8 +920,7 @@ test("Federation.setInboxListeners()", async (t) => {
|
|
|
923
920
|
authenticatedDocumentLoaderFactory(identity) {
|
|
924
921
|
const docLoader = getAuthenticatedDocumentLoader(identity);
|
|
925
922
|
return (url) => {
|
|
926
|
-
|
|
927
|
-
if (urlObj.host === "example.com") return docLoader(url);
|
|
923
|
+
if (new URL(url).host === "example.com") return docLoader(url);
|
|
928
924
|
return mockDocumentLoader(url);
|
|
929
925
|
};
|
|
930
926
|
}
|
|
@@ -1072,19 +1068,18 @@ test("FederationImpl.processQueuedTask()", async (t) => {
|
|
|
1072
1068
|
await t.step("with MessageQueue having nativeRetrial", async () => {
|
|
1073
1069
|
const kv = new MemoryKvStore();
|
|
1074
1070
|
const queuedMessages = [];
|
|
1075
|
-
const queue = {
|
|
1076
|
-
nativeRetrial: true,
|
|
1077
|
-
enqueue(message, _options) {
|
|
1078
|
-
queuedMessages.push(message);
|
|
1079
|
-
return Promise.resolve();
|
|
1080
|
-
},
|
|
1081
|
-
listen(_handler, _options) {
|
|
1082
|
-
return Promise.resolve();
|
|
1083
|
-
}
|
|
1084
|
-
};
|
|
1085
1071
|
const federation = new FederationImpl({
|
|
1086
1072
|
kv,
|
|
1087
|
-
queue
|
|
1073
|
+
queue: {
|
|
1074
|
+
nativeRetrial: true,
|
|
1075
|
+
enqueue(message, _options) {
|
|
1076
|
+
queuedMessages.push(message);
|
|
1077
|
+
return Promise.resolve();
|
|
1078
|
+
},
|
|
1079
|
+
listen(_handler, _options) {
|
|
1080
|
+
return Promise.resolve();
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1088
1083
|
});
|
|
1089
1084
|
federation.setInboxListeners("/users/{identifier}/inbox", "/inbox").on(Create, () => {
|
|
1090
1085
|
throw new Error("Intended error for testing");
|
|
@@ -1135,18 +1130,17 @@ test("FederationImpl.processQueuedTask()", async (t) => {
|
|
|
1135
1130
|
await t.step("with MessageQueue having no nativeRetrial", async () => {
|
|
1136
1131
|
const kv = new MemoryKvStore();
|
|
1137
1132
|
let queuedMessages = [];
|
|
1138
|
-
const queue = {
|
|
1139
|
-
enqueue(message, _options) {
|
|
1140
|
-
queuedMessages.push(message);
|
|
1141
|
-
return Promise.resolve();
|
|
1142
|
-
},
|
|
1143
|
-
listen(_handler, _options) {
|
|
1144
|
-
return Promise.resolve();
|
|
1145
|
-
}
|
|
1146
|
-
};
|
|
1147
1133
|
const federation = new FederationImpl({
|
|
1148
1134
|
kv,
|
|
1149
|
-
queue
|
|
1135
|
+
queue: {
|
|
1136
|
+
enqueue(message, _options) {
|
|
1137
|
+
queuedMessages.push(message);
|
|
1138
|
+
return Promise.resolve();
|
|
1139
|
+
},
|
|
1140
|
+
listen(_handler, _options) {
|
|
1141
|
+
return Promise.resolve();
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1150
1144
|
});
|
|
1151
1145
|
federation.setInboxListeners("/users/{identifier}/inbox", "/inbox").on(Create, () => {
|
|
1152
1146
|
throw new Error("Intended error for testing");
|
|
@@ -1227,23 +1221,19 @@ test("ContextImpl.lookupObject()", async (t) => {
|
|
|
1227
1221
|
}
|
|
1228
1222
|
});
|
|
1229
1223
|
await t.step("allowPrivateAddress: true", async () => {
|
|
1230
|
-
const
|
|
1224
|
+
const result = await createFederation({
|
|
1231
1225
|
kv: new MemoryKvStore(),
|
|
1232
1226
|
allowPrivateAddress: true
|
|
1233
|
-
});
|
|
1234
|
-
const ctx = federation.createContext(new URL("https://example.com/"));
|
|
1235
|
-
const result = await ctx.lookupObject("@test@localhost");
|
|
1227
|
+
}).createContext(new URL("https://example.com/")).lookupObject("@test@localhost");
|
|
1236
1228
|
assertInstanceOf(result, Person);
|
|
1237
1229
|
assertEquals(result.id, new URL("https://localhost/actor"));
|
|
1238
1230
|
assertEquals(result.preferredUsername, "test");
|
|
1239
1231
|
});
|
|
1240
1232
|
await t.step("allowPrivateAddress: false", async () => {
|
|
1241
|
-
const
|
|
1233
|
+
const result = await createFederation({
|
|
1242
1234
|
kv: new MemoryKvStore(),
|
|
1243
1235
|
allowPrivateAddress: false
|
|
1244
|
-
});
|
|
1245
|
-
const ctx = federation.createContext(new URL("https://example.com/"));
|
|
1246
|
-
const result = await ctx.lookupObject("@test@localhost");
|
|
1236
|
+
}).createContext(new URL("https://example.com/")).lookupObject("@test@localhost");
|
|
1247
1237
|
assertEquals(result, null);
|
|
1248
1238
|
});
|
|
1249
1239
|
esm_default.hardReset();
|
|
@@ -1270,11 +1260,9 @@ test("ContextImpl.sendActivity()", async (t) => {
|
|
|
1270
1260
|
contextLoader: mockDocumentLoader,
|
|
1271
1261
|
keyCache: {
|
|
1272
1262
|
async get(keyId) {
|
|
1273
|
-
const
|
|
1274
|
-
const keys = await ctx.getActorKeyPairs("1");
|
|
1263
|
+
const keys = await federation.createContext(new URL("https://example.com/"), void 0).getActorKeyPairs("1");
|
|
1275
1264
|
for (const key$1 of keys) if (key$1.keyId.href === keyId.href) if (key$1.publicKey.algorithm.name === "Ed25519") return key$1.multikey;
|
|
1276
1265
|
else return key$1.cryptographicKey;
|
|
1277
|
-
return void 0;
|
|
1278
1266
|
},
|
|
1279
1267
|
async set(_keyId, _key) {}
|
|
1280
1268
|
}
|
|
@@ -1648,20 +1636,18 @@ test("InboxContextImpl.forwardActivity()", async (t) => {
|
|
|
1648
1636
|
contextLoader: mockDocumentLoader
|
|
1649
1637
|
});
|
|
1650
1638
|
await t.step("skip", async () => {
|
|
1651
|
-
|
|
1639
|
+
await new InboxContextImpl(null, {
|
|
1652
1640
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
1653
1641
|
"type": "Create",
|
|
1654
1642
|
"id": "https://example.com/activity",
|
|
1655
1643
|
"actor": "https://example.com/person2"
|
|
1656
|
-
}
|
|
1657
|
-
const ctx = new InboxContextImpl(null, activity, "https://example.com/activity", "https://www.w3.org/ns/activitystreams#Create", {
|
|
1644
|
+
}, "https://example.com/activity", "https://www.w3.org/ns/activitystreams#Create", {
|
|
1658
1645
|
data: void 0,
|
|
1659
1646
|
federation,
|
|
1660
1647
|
url: new URL("https://example.com/"),
|
|
1661
1648
|
documentLoader: fetchDocumentLoader,
|
|
1662
1649
|
contextLoader: fetchDocumentLoader
|
|
1663
|
-
})
|
|
1664
|
-
await ctx.forwardActivity([{
|
|
1650
|
+
}).forwardActivity([{
|
|
1665
1651
|
privateKey: rsaPrivateKey2,
|
|
1666
1652
|
keyId: rsaPublicKey2.id
|
|
1667
1653
|
}], {
|
|
@@ -1671,13 +1657,12 @@ test("InboxContextImpl.forwardActivity()", async (t) => {
|
|
|
1671
1657
|
assertEquals(verified, null);
|
|
1672
1658
|
});
|
|
1673
1659
|
await t.step("unsigned", async () => {
|
|
1674
|
-
const
|
|
1660
|
+
const ctx = new InboxContextImpl(null, {
|
|
1675
1661
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
1676
1662
|
"type": "Create",
|
|
1677
1663
|
"id": "https://example.com/activity",
|
|
1678
1664
|
"actor": "https://example.com/person2"
|
|
1679
|
-
}
|
|
1680
|
-
const ctx = new InboxContextImpl(null, activity, "https://example.com/activity", "https://www.w3.org/ns/activitystreams#Create", {
|
|
1665
|
+
}, "https://example.com/activity", "https://www.w3.org/ns/activitystreams#Create", {
|
|
1681
1666
|
data: void 0,
|
|
1682
1667
|
federation,
|
|
1683
1668
|
url: new URL("https://example.com/"),
|
|
@@ -1701,14 +1686,13 @@ test("InboxContextImpl.forwardActivity()", async (t) => {
|
|
|
1701
1686
|
contextLoader: mockDocumentLoader,
|
|
1702
1687
|
documentLoader: mockDocumentLoader
|
|
1703
1688
|
});
|
|
1704
|
-
|
|
1689
|
+
await new InboxContextImpl(null, await activity.toJsonLd({ contextLoader: mockDocumentLoader }), activity.id?.href, getTypeId(activity).href, {
|
|
1705
1690
|
data: void 0,
|
|
1706
1691
|
federation,
|
|
1707
1692
|
url: new URL("https://example.com/"),
|
|
1708
1693
|
documentLoader: fetchDocumentLoader,
|
|
1709
1694
|
contextLoader: fetchDocumentLoader
|
|
1710
|
-
})
|
|
1711
|
-
await ctx.forwardActivity([{
|
|
1695
|
+
}).forwardActivity([{
|
|
1712
1696
|
privateKey: rsaPrivateKey2,
|
|
1713
1697
|
keyId: rsaPublicKey2.id
|
|
1714
1698
|
}], {
|
|
@@ -1724,14 +1708,13 @@ test("InboxContextImpl.forwardActivity()", async (t) => {
|
|
|
1724
1708
|
"id": "https://example.com/activity",
|
|
1725
1709
|
"actor": "https://example.com/person2"
|
|
1726
1710
|
}, rsaPrivateKey3, rsaPublicKey3.id, { contextLoader: mockDocumentLoader });
|
|
1727
|
-
|
|
1711
|
+
await new InboxContextImpl(null, activity, "https://example.com/activity", "https://www.w3.org/ns/activitystreams#Create", {
|
|
1728
1712
|
data: void 0,
|
|
1729
1713
|
federation,
|
|
1730
1714
|
url: new URL("https://example.com/"),
|
|
1731
1715
|
documentLoader: fetchDocumentLoader,
|
|
1732
1716
|
contextLoader: fetchDocumentLoader
|
|
1733
|
-
})
|
|
1734
|
-
await ctx.forwardActivity([{
|
|
1717
|
+
}).forwardActivity([{
|
|
1735
1718
|
privateKey: rsaPrivateKey2,
|
|
1736
1719
|
keyId: rsaPublicKey2.id
|
|
1737
1720
|
}], {
|
|
@@ -1745,22 +1728,17 @@ test("InboxContextImpl.forwardActivity()", async (t) => {
|
|
|
1745
1728
|
test("KvSpecDeterminer", async (t) => {
|
|
1746
1729
|
await t.step("should use default spec when not found in KV", async () => {
|
|
1747
1730
|
const kv = new MemoryKvStore();
|
|
1748
|
-
const
|
|
1749
|
-
const determiner = new KvSpecDeterminer(kv, prefix);
|
|
1750
|
-
const spec = await determiner.determineSpec("example.com");
|
|
1731
|
+
const spec = await new KvSpecDeterminer(kv, ["test", "spec"]).determineSpec("example.com");
|
|
1751
1732
|
assertEquals(spec, "rfc9421");
|
|
1752
1733
|
});
|
|
1753
1734
|
await t.step("should use custom default spec", async () => {
|
|
1754
1735
|
const kv = new MemoryKvStore();
|
|
1755
|
-
const
|
|
1756
|
-
const determiner = new KvSpecDeterminer(kv, prefix, "draft-cavage-http-signatures-12");
|
|
1757
|
-
const spec = await determiner.determineSpec("example.com");
|
|
1736
|
+
const spec = await new KvSpecDeterminer(kv, ["test", "spec"], "draft-cavage-http-signatures-12").determineSpec("example.com");
|
|
1758
1737
|
assertEquals(spec, "draft-cavage-http-signatures-12");
|
|
1759
1738
|
});
|
|
1760
1739
|
await t.step("should remember and retrieve spec from KV", async () => {
|
|
1761
1740
|
const kv = new MemoryKvStore();
|
|
1762
|
-
const
|
|
1763
|
-
const determiner = new KvSpecDeterminer(kv, prefix);
|
|
1741
|
+
const determiner = new KvSpecDeterminer(kv, ["test", "spec"]);
|
|
1764
1742
|
await determiner.rememberSpec("example.com", "draft-cavage-http-signatures-12");
|
|
1765
1743
|
const spec = await determiner.determineSpec("example.com");
|
|
1766
1744
|
assertEquals(spec, "draft-cavage-http-signatures-12");
|
|
@@ -1769,8 +1747,7 @@ test("KvSpecDeterminer", async (t) => {
|
|
|
1769
1747
|
});
|
|
1770
1748
|
await t.step("should override remembered spec", async () => {
|
|
1771
1749
|
const kv = new MemoryKvStore();
|
|
1772
|
-
const
|
|
1773
|
-
const determiner = new KvSpecDeterminer(kv, prefix);
|
|
1750
|
+
const determiner = new KvSpecDeterminer(kv, ["test", "spec"]);
|
|
1774
1751
|
await determiner.rememberSpec("example.com", "draft-cavage-http-signatures-12");
|
|
1775
1752
|
let spec = await determiner.determineSpec("example.com");
|
|
1776
1753
|
assertEquals(spec, "draft-cavage-http-signatures-12");
|