@fedify/relay 2.2.0-dev.613 → 2.2.0-dev.622

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.
@@ -1,3 +1,2 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
- import { URLPattern } from "urlpattern-polyfill";
3
- globalThis.addEventListener = () => {};
2
+ import { URLPattern } from "urlpattern-polyfill";
@@ -1,15 +1,12 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- import { exportSpki, getDocumentLoader, isRelayFollowerData } from "./types-B94EmP_a.js";
1
+ import "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { n as exportSpki, r as getDocumentLoader, t as isRelayFollowerData } from "./types-PxzSnHFx.js";
7
5
  import { MemoryKvStore, signRequest } from "@fedify/fedify";
8
6
  import { createRelay } from "@fedify/relay";
9
7
  import { Accept, Announce, Create, Delete, Follow, Move, Note, Person, Undo, Update } from "@fedify/vocab";
10
8
  import { ok, strictEqual } from "node:assert";
11
9
  import test, { describe } from "node:test";
12
-
13
10
  //#region src/litepub.test.ts
14
11
  const mockDocumentLoader = async (url) => {
15
12
  if (url === "https://remote.example.com/users/alice" || url === "https://remote.example.com/users/alice#main-key") return {
@@ -57,33 +54,28 @@ const rsaPublicKey = {
57
54
  };
58
55
  describe("LitePubRelay", () => {
59
56
  test("constructor with required options", () => {
60
- const options = {
57
+ ok(createRelay("litepub", {
61
58
  kv: new MemoryKvStore(),
62
59
  origin: "https://relay.example.com",
63
60
  documentLoaderFactory: () => mockDocumentLoader,
64
61
  subscriptionHandler: async (_ctx, _actor) => {
65
62
  return await Promise.resolve(true);
66
63
  }
67
- };
68
- const relay = createRelay("litepub", options);
69
- ok(relay);
64
+ }));
70
65
  });
71
66
  test("fetch method returns Response", async () => {
72
- const kv = new MemoryKvStore();
73
67
  const relay = createRelay("litepub", {
74
- kv,
68
+ kv: new MemoryKvStore(),
75
69
  origin: "https://relay.example.com",
76
70
  documentLoaderFactory: () => mockDocumentLoader,
77
71
  subscriptionHandler: () => Promise.resolve(true)
78
72
  });
79
73
  const request = new Request("https://relay.example.com/users/relay", { headers: { "Accept": "application/activity+json" } });
80
- const response = await relay.fetch(request);
81
- ok(response instanceof Response);
74
+ ok(await relay.fetch(request) instanceof Response);
82
75
  });
83
76
  test("fetching relay actor returns Application", async () => {
84
- const kv = new MemoryKvStore();
85
77
  const relay = createRelay("litepub", {
86
- kv,
78
+ kv: new MemoryKvStore(),
87
79
  origin: "https://relay.example.com",
88
80
  documentLoaderFactory: () => mockDocumentLoader,
89
81
  subscriptionHandler: () => Promise.resolve(true)
@@ -97,21 +89,18 @@ describe("LitePubRelay", () => {
97
89
  strictEqual(json.name, "ActivityPub Relay");
98
90
  });
99
91
  test("fetching non-relay actor returns 404", async () => {
100
- const kv = new MemoryKvStore();
101
92
  const relay = createRelay("litepub", {
102
- kv,
93
+ kv: new MemoryKvStore(),
103
94
  origin: "https://relay.example.com",
104
95
  documentLoaderFactory: () => mockDocumentLoader,
105
96
  subscriptionHandler: () => Promise.resolve(true)
106
97
  });
107
98
  const request = new Request("https://relay.example.com/users/non-existent", { headers: { "Accept": "application/activity+json" } });
108
- const response = await relay.fetch(request);
109
- strictEqual(response.status, 404);
99
+ strictEqual((await relay.fetch(request)).status, 404);
110
100
  });
111
101
  test("followers collection returns empty list initially", async () => {
112
- const kv = new MemoryKvStore();
113
102
  const relay = createRelay("litepub", {
114
- kv,
103
+ kv: new MemoryKvStore(),
115
104
  origin: "https://relay.example.com",
116
105
  documentLoaderFactory: () => mockDocumentLoader,
117
106
  subscriptionHandler: () => Promise.resolve(true)
@@ -160,9 +149,8 @@ describe("LitePubRelay", () => {
160
149
  if (json.totalItems !== void 0) strictEqual(json.totalItems, 2);
161
150
  });
162
151
  test("relay actor has correct properties", async () => {
163
- const kv = new MemoryKvStore();
164
152
  const relay = createRelay("litepub", {
165
- kv,
153
+ kv: new MemoryKvStore(),
166
154
  origin: "https://relay.example.com",
167
155
  documentLoaderFactory: () => mockDocumentLoader,
168
156
  subscriptionHandler: () => Promise.resolve(true)
@@ -245,8 +233,7 @@ describe("LitePubRelay", () => {
245
233
  });
246
234
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
247
235
  await relay.fetch(request);
248
- const followerData = await kv.get(["follower", "https://remote.example.com/users/alice"]);
249
- strictEqual(followerData, void 0);
236
+ strictEqual(await kv.get(["follower", "https://remote.example.com/users/alice"]), void 0);
250
237
  });
251
238
  test("handles public Follow activity", async () => {
252
239
  const kv = new MemoryKvStore();
@@ -298,8 +285,7 @@ describe("LitePubRelay", () => {
298
285
  });
299
286
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
300
287
  await relay.fetch(request);
301
- const followerData = await kv.get(["follower", "https://remote.example.com/users/alice"]);
302
- strictEqual(followerData, void 0);
288
+ strictEqual(await kv.get(["follower", "https://remote.example.com/users/alice"]), void 0);
303
289
  });
304
290
  test("ignores duplicate Follow activity from pending follower", async () => {
305
291
  const kv = new MemoryKvStore();
@@ -412,8 +398,7 @@ describe("LitePubRelay", () => {
412
398
  });
413
399
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
414
400
  await relay.fetch(request);
415
- const followerData = await kv.get(["follower", followerId]);
416
- strictEqual(followerData, void 0);
401
+ strictEqual(await kv.get(["follower", followerId]), void 0);
417
402
  });
418
403
  test("handles Create activity with Announce forwarding", async () => {
419
404
  const kv = new MemoryKvStore();
@@ -453,9 +438,8 @@ describe("LitePubRelay", () => {
453
438
  ok(response.status === 200 || response.status === 202);
454
439
  });
455
440
  test("handles Update activity with Announce forwarding", async () => {
456
- const kv = new MemoryKvStore();
457
441
  const relay = createRelay("litepub", {
458
- kv,
442
+ kv: new MemoryKvStore(),
459
443
  origin: "https://relay.example.com",
460
444
  documentLoaderFactory: () => mockDocumentLoader,
461
445
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -480,9 +464,8 @@ describe("LitePubRelay", () => {
480
464
  ok(response.status === 200 || response.status === 202);
481
465
  });
482
466
  test("handles Move activity with Announce forwarding", async () => {
483
- const kv = new MemoryKvStore();
484
467
  const relay = createRelay("litepub", {
485
- kv,
468
+ kv: new MemoryKvStore(),
486
469
  origin: "https://relay.example.com",
487
470
  documentLoaderFactory: () => mockDocumentLoader,
488
471
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -504,9 +487,8 @@ describe("LitePubRelay", () => {
504
487
  ok(response.status === 200 || response.status === 202);
505
488
  });
506
489
  test("handles Delete activity with Announce forwarding", async () => {
507
- const kv = new MemoryKvStore();
508
490
  const relay = createRelay("litepub", {
509
- kv,
491
+ kv: new MemoryKvStore(),
510
492
  origin: "https://relay.example.com",
511
493
  documentLoaderFactory: () => mockDocumentLoader,
512
494
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -527,9 +509,8 @@ describe("LitePubRelay", () => {
527
509
  ok(response.status === 200 || response.status === 202);
528
510
  });
529
511
  test("handles Announce activity forwarding", async () => {
530
- const kv = new MemoryKvStore();
531
512
  const relay = createRelay("litepub", {
532
- kv,
513
+ kv: new MemoryKvStore(),
533
514
  origin: "https://relay.example.com",
534
515
  documentLoaderFactory: () => mockDocumentLoader,
535
516
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -697,5 +678,5 @@ describe("LitePubRelay", () => {
697
678
  }
698
679
  });
699
680
  });
700
-
701
- //#endregion
681
+ //#endregion
682
+ export {};
@@ -1,3 +1,2 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
- import { URLPattern } from "urlpattern-polyfill";
3
- globalThis.addEventListener = () => {};
2
+ import { URLPattern } from "urlpattern-polyfill";
@@ -1,15 +1,12 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- import { exportSpki, getDocumentLoader, isRelayFollowerData } from "./types-B94EmP_a.js";
1
+ import "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { n as exportSpki, r as getDocumentLoader, t as isRelayFollowerData } from "./types-PxzSnHFx.js";
7
5
  import { MemoryKvStore, signRequest } from "@fedify/fedify";
8
6
  import { createRelay } from "@fedify/relay";
9
7
  import { Create, Delete, Follow, Move, Note, Person, Undo, Update } from "@fedify/vocab";
10
8
  import { ok, strictEqual } from "node:assert";
11
9
  import test, { describe } from "node:test";
12
-
13
10
  //#region src/mastodon.test.ts
14
11
  const mockDocumentLoader = async (url) => {
15
12
  if (url === "https://remote.example.com/users/alice" || url === "https://remote.example.com/users/alice#main-key") return {
@@ -57,33 +54,28 @@ const rsaPublicKey = {
57
54
  };
58
55
  describe("MastodonRelay", () => {
59
56
  test("constructor with required options", () => {
60
- const options = {
57
+ ok(createRelay("mastodon", {
61
58
  kv: new MemoryKvStore(),
62
59
  origin: "https://relay.example.com",
63
60
  documentLoaderFactory: () => mockDocumentLoader,
64
61
  subscriptionHandler: async (_ctx, _actor) => {
65
62
  return await Promise.resolve(true);
66
63
  }
67
- };
68
- const relay = createRelay("mastodon", options);
69
- ok(relay);
64
+ }));
70
65
  });
71
66
  test("fetch method returns Response", async () => {
72
- const kv = new MemoryKvStore();
73
67
  const relay = createRelay("mastodon", {
74
- kv,
68
+ kv: new MemoryKvStore(),
75
69
  origin: "https://relay.example.com",
76
70
  documentLoaderFactory: () => mockDocumentLoader,
77
71
  subscriptionHandler: () => Promise.resolve(true)
78
72
  });
79
73
  const request = new Request("https://relay.example.com/users/relay", { headers: { "Accept": "application/activity+json" } });
80
- const response = await relay.fetch(request);
81
- ok(response instanceof Response);
74
+ ok(await relay.fetch(request) instanceof Response);
82
75
  });
83
76
  test("fetching relay actor returns Application", async () => {
84
- const kv = new MemoryKvStore();
85
77
  const relay = createRelay("mastodon", {
86
- kv,
78
+ kv: new MemoryKvStore(),
87
79
  origin: "https://relay.example.com",
88
80
  documentLoaderFactory: () => mockDocumentLoader,
89
81
  subscriptionHandler: () => Promise.resolve(true)
@@ -97,21 +89,18 @@ describe("MastodonRelay", () => {
97
89
  strictEqual(json.name, "ActivityPub Relay");
98
90
  });
99
91
  test("fetching non-relay actor returns 404", async () => {
100
- const kv = new MemoryKvStore();
101
92
  const relay = createRelay("mastodon", {
102
- kv,
93
+ kv: new MemoryKvStore(),
103
94
  origin: "https://relay.example.com",
104
95
  documentLoaderFactory: () => mockDocumentLoader,
105
96
  subscriptionHandler: () => Promise.resolve(true)
106
97
  });
107
98
  const request = new Request("https://relay.example.com/users/non-existent", { headers: { "Accept": "application/activity+json" } });
108
- const response = await relay.fetch(request);
109
- strictEqual(response.status, 404);
99
+ strictEqual((await relay.fetch(request)).status, 404);
110
100
  });
111
101
  test("followers collection returns empty list initially", async () => {
112
- const kv = new MemoryKvStore();
113
102
  const relay = createRelay("mastodon", {
114
- kv,
103
+ kv: new MemoryKvStore(),
115
104
  origin: "https://relay.example.com",
116
105
  documentLoaderFactory: () => mockDocumentLoader,
117
106
  subscriptionHandler: () => Promise.resolve(true)
@@ -171,8 +160,7 @@ describe("MastodonRelay", () => {
171
160
  actor: await follower.toJsonLd(),
172
161
  state: "accepted"
173
162
  });
174
- const storedActor = await kv.get(["follower", followerId]);
175
- ok(storedActor);
163
+ ok(await kv.get(["follower", followerId]));
176
164
  });
177
165
  test("removes follower from KV when Undo Follow is received", async () => {
178
166
  const kv = new MemoryKvStore();
@@ -187,13 +175,11 @@ describe("MastodonRelay", () => {
187
175
  state: "accepted"
188
176
  });
189
177
  await kv.delete(["follower", followerId]);
190
- const storedActor = await kv.get(["follower", followerId]);
191
- strictEqual(storedActor, void 0);
178
+ strictEqual(await kv.get(["follower", followerId]), void 0);
192
179
  });
193
180
  test("relay actor has correct properties", async () => {
194
- const kv = new MemoryKvStore();
195
181
  const relay = createRelay("mastodon", {
196
- kv,
182
+ kv: new MemoryKvStore(),
197
183
  origin: "https://relay.example.com",
198
184
  documentLoaderFactory: () => mockDocumentLoader,
199
185
  subscriptionHandler: () => Promise.resolve(true)
@@ -267,8 +253,7 @@ describe("MastodonRelay", () => {
267
253
  await relay.fetch(request);
268
254
  strictEqual(handlerCalled, true);
269
255
  ok(handlerActor);
270
- const followerData = await kv.get(["follower", "https://remote.example.com/users/alice"]);
271
- ok(followerData);
256
+ ok(await kv.get(["follower", "https://remote.example.com/users/alice"]));
272
257
  });
273
258
  test("handles Follow activity with subscription rejection", async () => {
274
259
  const kv = new MemoryKvStore();
@@ -298,8 +283,7 @@ describe("MastodonRelay", () => {
298
283
  });
299
284
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
300
285
  await relay.fetch(request);
301
- const followerData = await kv.get(["follower", "https://remote.example.com/users/alice"]);
302
- strictEqual(followerData, void 0);
286
+ strictEqual(await kv.get(["follower", "https://remote.example.com/users/alice"]), void 0);
303
287
  });
304
288
  test("handles Undo Follow activity", async () => {
305
289
  const kv = new MemoryKvStore();
@@ -338,8 +322,7 @@ describe("MastodonRelay", () => {
338
322
  });
339
323
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
340
324
  await relay.fetch(request);
341
- const followerData = await kv.get(["follower", followerId]);
342
- strictEqual(followerData, void 0);
325
+ strictEqual(await kv.get(["follower", followerId]), void 0);
343
326
  });
344
327
  test("handles Create activity forwarding", async () => {
345
328
  const kv = new MemoryKvStore();
@@ -379,9 +362,8 @@ describe("MastodonRelay", () => {
379
362
  ok(response.status === 200 || response.status === 202);
380
363
  });
381
364
  test("handles Delete activity forwarding", async () => {
382
- const kv = new MemoryKvStore();
383
365
  const relay = createRelay("mastodon", {
384
- kv,
366
+ kv: new MemoryKvStore(),
385
367
  origin: "https://relay.example.com",
386
368
  documentLoaderFactory: () => mockDocumentLoader,
387
369
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -402,9 +384,8 @@ describe("MastodonRelay", () => {
402
384
  ok(response.status === 200 || response.status === 202);
403
385
  });
404
386
  test("handles Update activity forwarding", async () => {
405
- const kv = new MemoryKvStore();
406
387
  const relay = createRelay("mastodon", {
407
- kv,
388
+ kv: new MemoryKvStore(),
408
389
  origin: "https://relay.example.com",
409
390
  documentLoaderFactory: () => mockDocumentLoader,
410
391
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -429,9 +410,8 @@ describe("MastodonRelay", () => {
429
410
  ok(response.status === 200 || response.status === 202);
430
411
  });
431
412
  test("handles Move activity forwarding", async () => {
432
- const kv = new MemoryKvStore();
433
413
  const relay = createRelay("mastodon", {
434
- kv,
414
+ kv: new MemoryKvStore(),
435
415
  origin: "https://relay.example.com",
436
416
  documentLoaderFactory: () => mockDocumentLoader,
437
417
  authenticatedDocumentLoaderFactory: () => mockDocumentLoader,
@@ -472,8 +452,7 @@ describe("MastodonRelay", () => {
472
452
  });
473
453
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
474
454
  await relay.fetch(request);
475
- const followerData = await kv.get(["follower", "https://remote.example.com/users/alice"]);
476
- strictEqual(followerData, void 0);
455
+ strictEqual(await kv.get(["follower", "https://remote.example.com/users/alice"]), void 0);
477
456
  });
478
457
  test("handles public Follow activity", async () => {
479
458
  const kv = new MemoryKvStore();
@@ -501,8 +480,7 @@ describe("MastodonRelay", () => {
501
480
  });
502
481
  request = await signRequest(request, rsaKeyPair.privateKey, rsaPublicKey.id);
503
482
  await relay.fetch(request);
504
- const followerData = await kv.get(["follower", "https://remote.example.com/users/alice"]);
505
- ok(followerData);
483
+ ok(await kv.get(["follower", "https://remote.example.com/users/alice"]));
506
484
  });
507
485
  test("list() returns empty when no followers exist", async () => {
508
486
  const kv = new MemoryKvStore();
@@ -656,9 +634,8 @@ describe("MastodonRelay", () => {
656
634
  ok(result.actor);
657
635
  strictEqual(result.actor.preferredUsername, "alice");
658
636
  strictEqual(result.actor.inboxId?.href, "https://remote.example.com/users/alice/inbox");
659
- const nonExistent = await relay.getFollower("https://remote.example.com/users/nonexistent");
660
- strictEqual(nonExistent, null);
637
+ strictEqual(await relay.getFollower("https://remote.example.com/users/nonexistent"), null);
661
638
  });
662
639
  });
663
-
664
- //#endregion
640
+ //#endregion
641
+ export {};