@fedify/fedify 1.8.7 → 1.8.8

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.
Files changed (79) hide show
  1. package/dist/{actor-WJ7wHeRU.js → actor-D5zJLubE.js} +179 -179
  2. package/dist/{actor-C7pfGu4X.js → actor-DKJ72HBQ.js} +1 -1
  3. package/dist/{authdocloader-ZiObBwwa.js → authdocloader-pzRDiXLk.js} +3 -3
  4. package/dist/{authdocloader-NFokReAQ.js → authdocloader-w7hU3Xzw.js} +3 -3
  5. package/dist/{builder-BHKW2pdc.js → builder-DbbSJ4vt.js} +4 -4
  6. package/dist/{client-CJxLG6ee.js → client-B9kISh6m.js} +1 -1
  7. package/dist/compat/transformers.test.js +16 -16
  8. package/dist/{docloader-B8l5ArhI.js → docloader-D6nrrkAU.js} +1 -1
  9. package/dist/{esm-HTbWR6Yb.js → esm-DfURz5Dz.js} +1 -1
  10. package/dist/federation/builder.test.js +5 -5
  11. package/dist/federation/collection.test.js +3 -3
  12. package/dist/federation/handler.test.js +17 -17
  13. package/dist/federation/inbox.test.js +4 -4
  14. package/dist/federation/keycache.test.js +4 -4
  15. package/dist/federation/kv.test.js +3 -3
  16. package/dist/federation/middleware.test.js +18 -18
  17. package/dist/federation/mod.js +10 -10
  18. package/dist/federation/mq.test.js +3 -3
  19. package/dist/federation/retry.test.js +3 -3
  20. package/dist/federation/router.test.js +3 -3
  21. package/dist/federation/send.test.js +10 -10
  22. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +24 -0
  23. package/dist/{http-BYpPKHof.js → http-B8eB5wLF.js} +51 -5
  24. package/dist/{http-BTbT0TFj.js → http-XM_5g9iL.js} +50 -4
  25. package/dist/{inbox-CZpWkkEj.js → inbox-C9E49Pou.js} +1 -1
  26. package/dist/{key-DO-jGH1-.js → key-B9qnPXyL.js} +2 -2
  27. package/dist/{key-XRVsGjsK.js → key-CLM0leyT.js} +3 -3
  28. package/dist/{key-CVBXeeCe.js → key-P3bO2rXA.js} +4 -4
  29. package/dist/{key-DUTRSgmm.js → key-oUS5fi-N.js} +2 -2
  30. package/dist/{keycache-ByS53syz.js → keycache-2pZuH3A-.js} +1 -1
  31. package/dist/{keys-Beku4H4V.js → keys-DJFDO1rn.js} +1 -1
  32. package/dist/{ld-B2Zws6mR.js → ld-C2VyxmCP.js} +2 -2
  33. package/dist/{lookup-B3DDTNE8.js → lookup-B8TqsqkQ.js} +1 -1
  34. package/dist/{lookup-OrOsTes4.js → lookup-dn69qZmX.js} +1 -1
  35. package/dist/middleware-CQKWjMya.js +17 -0
  36. package/dist/{middleware-D8drNbUb.js → middleware-CXZPCCsr.js} +10 -10
  37. package/dist/middleware-CisYXKrH.js +26 -0
  38. package/dist/{middleware-C5lTWaJc.js → middleware-DyTrXF7S.js} +13 -13
  39. package/dist/mod.js +10 -10
  40. package/dist/nodeinfo/client.test.js +5 -5
  41. package/dist/nodeinfo/handler.test.js +16 -16
  42. package/dist/nodeinfo/mod.js +2 -2
  43. package/dist/nodeinfo/semver.test.js +3 -3
  44. package/dist/nodeinfo/types.test.js +3 -3
  45. package/dist/{owner-BgiYvP3X.js → owner-9q2J7Hci.js} +2 -2
  46. package/dist/{proof-CANzMXwU.js → proof-OSaKdB5O.js} +3 -3
  47. package/dist/{proof-wOJ2cerK.js → proof-vmDGDdUB.js} +2 -2
  48. package/dist/runtime/authdocloader.test.js +9 -9
  49. package/dist/runtime/docloader.test.js +4 -4
  50. package/dist/runtime/key.test.js +5 -5
  51. package/dist/runtime/langstr.test.js +3 -3
  52. package/dist/runtime/mod.js +6 -6
  53. package/dist/runtime/multibase/multibase.test.js +3 -3
  54. package/dist/runtime/url.test.js +3 -3
  55. package/dist/{send-C4n5IcVS.js → send-C56X13t3.js} +2 -2
  56. package/dist/sig/http.test.js +24 -8
  57. package/dist/sig/key.test.js +6 -6
  58. package/dist/sig/ld.test.js +7 -7
  59. package/dist/sig/mod.js +6 -6
  60. package/dist/sig/owner.test.js +7 -7
  61. package/dist/sig/proof.test.js +7 -7
  62. package/dist/testing/docloader.test.js +3 -3
  63. package/dist/testing/mod.js +3 -3
  64. package/dist/{testing-Do5ElhBv.js → testing-7szOyHGm.js} +2 -2
  65. package/dist/{type-s3cxzdF7.js → type-DvwzlVhz.js} +178 -178
  66. package/dist/{types-sRqvaRh2.js → types-V_Rxyw-n.js} +1 -1
  67. package/dist/vocab/actor.test.js +5 -5
  68. package/dist/vocab/lookup.test.js +4 -4
  69. package/dist/vocab/mod.js +4 -4
  70. package/dist/vocab/type.test.js +3 -3
  71. package/dist/vocab/vocab.test.js +4 -4
  72. package/dist/{vocab-BEyMnNOH.js → vocab-Bd762LSM.js} +3 -3
  73. package/dist/webfinger/handler.test.js +16 -16
  74. package/dist/webfinger/lookup.test.js +4 -4
  75. package/dist/webfinger/mod.js +2 -2
  76. package/dist/x/cfworkers.test.js +3 -3
  77. package/package.json +1 -1
  78. package/dist/middleware-ByzBB8GV.js +0 -26
  79. package/dist/middleware-CeKE_YXN.js +0 -17
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Application, Group, Organization, Person, Service, deno_default, getTypeId, lookupWebFinger } from "./type-s3cxzdF7.js";
6
+ import { Application, Group, Organization, Person, Service, deno_default, getTypeId, lookupWebFinger } from "./type-DvwzlVhz.js";
7
7
  import { SpanStatusCode, trace } from "@opentelemetry/api";
8
8
  import { domainToASCII, domainToUnicode } from "node:url";
9
9
 
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./type-s3cxzdF7.js";
7
- import { validateCryptoKey } from "./key-DUTRSgmm.js";
8
- import { doubleKnock } from "./http-BTbT0TFj.js";
6
+ import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./type-DvwzlVhz.js";
7
+ import { validateCryptoKey } from "./key-oUS5fi-N.js";
8
+ import { doubleKnock } from "./http-XM_5g9iL.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
 
11
11
  //#region src/runtime/authdocloader.ts
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-B8l5ArhI.js";
6
- import { validateCryptoKey } from "./key-DO-jGH1-.js";
7
- import { doubleKnock } from "./http-BYpPKHof.js";
5
+ import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-D6nrrkAU.js";
6
+ import { validateCryptoKey } from "./key-B9qnPXyL.js";
7
+ import { doubleKnock } from "./http-B8eB5wLF.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
10
10
  //#region src/runtime/authdocloader.ts
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getTypeId } from "./type-s3cxzdF7.js";
7
- import { Router, RouterError } from "./lookup-OrOsTes4.js";
8
- import { InboxListenerSet } from "./inbox-CZpWkkEj.js";
6
+ import { deno_default, getTypeId } from "./type-DvwzlVhz.js";
7
+ import { Router, RouterError } from "./lookup-dn69qZmX.js";
8
+ import { InboxListenerSet } from "./inbox-C9E49Pou.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
11
11
 
@@ -41,7 +41,7 @@ var FederationBuilderImpl = class {
41
41
  this.collectionTypeIds = {};
42
42
  }
43
43
  async build(options) {
44
- const { FederationImpl } = await import("./middleware-ByzBB8GV.js");
44
+ const { FederationImpl } = await import("./middleware-CisYXKrH.js");
45
45
  const f = new FederationImpl(options);
46
46
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
47
47
  f.router = this.router.clone();
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { getUserAgent } from "./type-s3cxzdF7.js";
6
+ import { getUserAgent } from "./type-DvwzlVhz.js";
7
7
  import { parseSemVer } from "./semver-dArNLkR9.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
@@ -3,30 +3,30 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Follow, Person } from "../type-s3cxzdF7.js";
6
+ import { Follow, Person } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-C5lTWaJc.js";
11
+ import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-DyTrXF7S.js";
12
12
  import "../semver-dArNLkR9.js";
13
- import "../client-CJxLG6ee.js";
14
- import "../lookup-OrOsTes4.js";
13
+ import "../client-B9kISh6m.js";
14
+ import "../lookup-dn69qZmX.js";
15
15
  import "../types-BIgY6c-l.js";
16
- import "../actor-C7pfGu4X.js";
17
- import "../key-DUTRSgmm.js";
18
- import "../http-BTbT0TFj.js";
19
- import "../authdocloader-ZiObBwwa.js";
20
- import "../ld-B2Zws6mR.js";
21
- import "../owner-BgiYvP3X.js";
22
- import "../proof-wOJ2cerK.js";
23
- import "../inbox-CZpWkkEj.js";
24
- import "../builder-BHKW2pdc.js";
16
+ import "../actor-DKJ72HBQ.js";
17
+ import "../key-oUS5fi-N.js";
18
+ import "../http-XM_5g9iL.js";
19
+ import "../authdocloader-pzRDiXLk.js";
20
+ import "../ld-C2VyxmCP.js";
21
+ import "../owner-9q2J7Hci.js";
22
+ import "../proof-vmDGDdUB.js";
23
+ import "../inbox-C9E49Pou.js";
24
+ import "../builder-DbbSJ4vt.js";
25
25
  import "../collection-CSzG2j1P.js";
26
- import "../keycache-ByS53syz.js";
26
+ import "../keycache-2pZuH3A-.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-C4n5IcVS.js";
29
- import { test } from "../testing-Do5ElhBv.js";
28
+ import "../send-C56X13t3.js";
29
+ import { test } from "../testing-7szOyHGm.js";
30
30
 
31
31
  //#region src/compat/transformers.test.ts
32
32
  const federation = new FederationImpl({ kv: new MemoryKvStore() });
@@ -10,7 +10,7 @@ import { isIP } from "node:net";
10
10
 
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "1.8.7";
13
+ var version = "1.8.8";
14
14
  var license = "MIT";
15
15
  var exports = {
16
16
  ".": "./src/mod.ts",
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { __commonJS, __toESM } from "./type-s3cxzdF7.js";
6
+ import { __commonJS, __toESM } from "./type-DvwzlVhz.js";
7
7
 
8
8
  //#region ../../node_modules/.pnpm/glob-to-regexp@0.4.1/node_modules/glob-to-regexp/index.js
9
9
  var require_glob_to_regexp = __commonJS({ "../../node_modules/.pnpm/glob-to-regexp@0.4.1/node_modules/glob-to-regexp/index.js"(exports, module) {
@@ -3,16 +3,16 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Note, Person } from "../type-s3cxzdF7.js";
6
+ import { Activity, Note, Person } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
11
  import { parseSemVer } from "../semver-dArNLkR9.js";
12
- import "../lookup-OrOsTes4.js";
13
- import "../inbox-CZpWkkEj.js";
14
- import { createFederationBuilder } from "../builder-BHKW2pdc.js";
15
- import { test } from "../testing-Do5ElhBv.js";
12
+ import "../lookup-dn69qZmX.js";
13
+ import "../inbox-C9E49Pou.js";
14
+ import { createFederationBuilder } from "../builder-DbbSJ4vt.js";
15
+ import { test } from "../testing-7szOyHGm.js";
16
16
  import { assertExists } from "../std__assert-X-_kMxKM.js";
17
17
  import "../assert_rejects-DiIiJbZn.js";
18
18
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,13 +3,13 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-s3cxzdF7.js";
6
+ import "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-OrOsTes4.js";
10
+ import "../lookup-dn69qZmX.js";
11
11
  import { buildCollectionSynchronizationHeader, digest } from "../collection-CSzG2j1P.js";
12
- import { test } from "../testing-Do5ElhBv.js";
12
+ import { test } from "../testing-7szOyHGm.js";
13
13
  import "../std__assert-X-_kMxKM.js";
14
14
  import "../assert_rejects-DiIiJbZn.js";
15
15
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,36 +3,36 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Create, Note, Person } from "../type-s3cxzdF7.js";
6
+ import { Create, Note, Person } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-C5lTWaJc.js";
11
+ import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-DyTrXF7S.js";
12
12
  import "../semver-dArNLkR9.js";
13
- import "../client-CJxLG6ee.js";
14
- import "../lookup-OrOsTes4.js";
13
+ import "../client-B9kISh6m.js";
14
+ import "../lookup-dn69qZmX.js";
15
15
  import "../types-BIgY6c-l.js";
16
- import "../actor-C7pfGu4X.js";
17
- import "../key-DUTRSgmm.js";
18
- import { signRequest } from "../http-BTbT0TFj.js";
19
- import "../authdocloader-ZiObBwwa.js";
20
- import "../ld-B2Zws6mR.js";
21
- import "../owner-BgiYvP3X.js";
22
- import "../proof-wOJ2cerK.js";
23
- import { InboxListenerSet } from "../inbox-CZpWkkEj.js";
24
- import "../builder-BHKW2pdc.js";
16
+ import "../actor-DKJ72HBQ.js";
17
+ import "../key-oUS5fi-N.js";
18
+ import { signRequest } from "../http-XM_5g9iL.js";
19
+ import "../authdocloader-pzRDiXLk.js";
20
+ import "../ld-C2VyxmCP.js";
21
+ import "../owner-9q2J7Hci.js";
22
+ import "../proof-vmDGDdUB.js";
23
+ import { InboxListenerSet } from "../inbox-C9E49Pou.js";
24
+ import "../builder-DbbSJ4vt.js";
25
25
  import "../collection-CSzG2j1P.js";
26
- import "../keycache-ByS53syz.js";
26
+ import "../keycache-2pZuH3A-.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-C4n5IcVS.js";
29
- import { createInboxContext, createRequestContext, mockDocumentLoader, test } from "../testing-Do5ElhBv.js";
28
+ import "../send-C56X13t3.js";
29
+ import { createInboxContext, createRequestContext, mockDocumentLoader, test } from "../testing-7szOyHGm.js";
30
30
  import "../std__assert-X-_kMxKM.js";
31
31
  import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
32
32
  import "../assert_is_error-BPGph1Jx.js";
33
33
  import "../assert_not_equals-f3m3epl3.js";
34
34
  import "../assert_throws-BOO88avQ.js";
35
- import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-Beku4H4V.js";
35
+ import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-DJFDO1rn.js";
36
36
 
37
37
  //#region src/federation/handler.test.ts
38
38
  test("acceptsJsonLd()", () => {
@@ -3,11 +3,11 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Create, Invite, Offer, Update } from "../type-s3cxzdF7.js";
6
+ import { Activity, Create, Invite, Offer, Update } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
- import "../lookup-OrOsTes4.js";
9
- import { InboxListenerSet } from "../inbox-CZpWkkEj.js";
10
- import { test } from "../testing-Do5ElhBv.js";
8
+ import "../lookup-dn69qZmX.js";
9
+ import { InboxListenerSet } from "../inbox-C9E49Pou.js";
10
+ import { test } from "../testing-7szOyHGm.js";
11
11
  import "../assert_is_error-BPGph1Jx.js";
12
12
  import { assertThrows } from "../assert_throws-BOO88avQ.js";
13
13
 
@@ -3,14 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "../type-s3cxzdF7.js";
6
+ import { CryptographicKey, Multikey } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import "../lookup-OrOsTes4.js";
12
- import { KvKeyCache } from "../keycache-ByS53syz.js";
13
- import { test } from "../testing-Do5ElhBv.js";
11
+ import "../lookup-dn69qZmX.js";
12
+ import { KvKeyCache } from "../keycache-2pZuH3A-.js";
13
+ import { test } from "../testing-7szOyHGm.js";
14
14
 
15
15
  //#region src/federation/keycache.test.ts
16
16
  test("KvKeyCache.set()", async () => {
@@ -3,13 +3,13 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-s3cxzdF7.js";
6
+ import "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import "../lookup-OrOsTes4.js";
12
- import { test } from "../testing-Do5ElhBv.js";
11
+ import "../lookup-dn69qZmX.js";
12
+ import { test } from "../testing-7szOyHGm.js";
13
13
  import "../std__assert-X-_kMxKM.js";
14
14
  import "../assert_rejects-DiIiJbZn.js";
15
15
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,37 +3,37 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Announce, Create, FetchError, Invite, Multikey, Note, Object as Object$1, Offer, Person, fetchDocumentLoader, getTypeId } from "../type-s3cxzdF7.js";
6
+ import { Activity, Announce, Create, FetchError, Invite, Multikey, Note, Object as Object$1, Offer, Person, fetchDocumentLoader, getTypeId } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-C5lTWaJc.js";
11
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-DyTrXF7S.js";
12
12
  import "../semver-dArNLkR9.js";
13
- import "../client-CJxLG6ee.js";
14
- import { RouterError, lookupObject } from "../lookup-OrOsTes4.js";
13
+ import "../client-B9kISh6m.js";
14
+ import { RouterError, lookupObject } from "../lookup-dn69qZmX.js";
15
15
  import "../types-BIgY6c-l.js";
16
- import "../actor-C7pfGu4X.js";
17
- import "../key-DUTRSgmm.js";
18
- import { signRequest, verifyRequest } from "../http-BTbT0TFj.js";
19
- import { getAuthenticatedDocumentLoader } from "../authdocloader-ZiObBwwa.js";
20
- import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-B2Zws6mR.js";
21
- import { doesActorOwnKey } from "../owner-BgiYvP3X.js";
22
- import { signObject, verifyObject } from "../proof-wOJ2cerK.js";
23
- import "../inbox-CZpWkkEj.js";
24
- import "../builder-BHKW2pdc.js";
16
+ import "../actor-DKJ72HBQ.js";
17
+ import "../key-oUS5fi-N.js";
18
+ import { signRequest, verifyRequest } from "../http-XM_5g9iL.js";
19
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-pzRDiXLk.js";
20
+ import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-C2VyxmCP.js";
21
+ import { doesActorOwnKey } from "../owner-9q2J7Hci.js";
22
+ import { signObject, verifyObject } from "../proof-vmDGDdUB.js";
23
+ import "../inbox-C9E49Pou.js";
24
+ import "../builder-DbbSJ4vt.js";
25
25
  import "../collection-CSzG2j1P.js";
26
- import "../keycache-ByS53syz.js";
26
+ import "../keycache-2pZuH3A-.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-C4n5IcVS.js";
29
- import { mockDocumentLoader, test } from "../testing-Do5ElhBv.js";
28
+ import "../send-C56X13t3.js";
29
+ import { mockDocumentLoader, test } from "../testing-7szOyHGm.js";
30
30
  import { assertStrictEquals } from "../std__assert-X-_kMxKM.js";
31
31
  import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
32
32
  import "../assert_is_error-BPGph1Jx.js";
33
33
  import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
34
34
  import { assertThrows } from "../assert_throws-BOO88avQ.js";
35
- import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-Beku4H4V.js";
36
- import { esm_default } from "../esm-HTbWR6Yb.js";
35
+ import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-DJFDO1rn.js";
36
+ import { esm_default } from "../esm-DfURz5Dz.js";
37
37
 
38
38
  //#region src/testing/fixtures/example.com/person.json
39
39
  var __context$1 = ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"];
@@ -3,16 +3,16 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import "../transformers-Dna8Fg7k.js";
6
- import "../docloader-B8l5ArhI.js";
7
- import "../actor-WJ7wHeRU.js";
8
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-D8drNbUb.js";
9
- import "../lookup-B3DDTNE8.js";
10
- import "../key-DO-jGH1-.js";
11
- import "../http-BYpPKHof.js";
12
- import "../proof-CANzMXwU.js";
6
+ import "../docloader-D6nrrkAU.js";
7
+ import "../actor-D5zJLubE.js";
8
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-CXZPCCsr.js";
9
+ import "../lookup-B8TqsqkQ.js";
10
+ import "../key-B9qnPXyL.js";
11
+ import "../http-B8eB5wLF.js";
12
+ import "../proof-OSaKdB5O.js";
13
13
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-CMX7WzeL.js";
14
- import "../types-sRqvaRh2.js";
15
- import "../authdocloader-NFokReAQ.js";
16
- import "../vocab-BEyMnNOH.js";
14
+ import "../types-V_Rxyw-n.js";
15
+ import "../authdocloader-w7hU3Xzw.js";
16
+ import "../vocab-Bd762LSM.js";
17
17
 
18
18
  export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
@@ -3,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-s3cxzdF7.js";
6
+ import "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-OrOsTes4.js";
11
- import { test } from "../testing-Do5ElhBv.js";
10
+ import "../lookup-dn69qZmX.js";
11
+ import { test } from "../testing-7szOyHGm.js";
12
12
  import { assertGreater, assertGreaterOrEqual } from "../std__assert-X-_kMxKM.js";
13
13
  import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
14
14
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,11 +3,11 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-s3cxzdF7.js";
6
+ import "../type-DvwzlVhz.js";
7
7
  import { AssertionError, assertEquals } from "../assert_equals-DSbWqCm3.js";
8
- import "../lookup-OrOsTes4.js";
8
+ import "../lookup-dn69qZmX.js";
9
9
  import { createExponentialBackoffPolicy } from "../retry-D4GJ670a.js";
10
- import { test } from "../testing-Do5ElhBv.js";
10
+ import { test } from "../testing-7szOyHGm.js";
11
11
  import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
12
12
 
13
13
  //#region src/federation/retry.test.ts
@@ -3,12 +3,12 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-s3cxzdF7.js";
6
+ import "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import { Router, RouterError } from "../lookup-OrOsTes4.js";
11
- import { test } from "../testing-Do5ElhBv.js";
10
+ import { Router, RouterError } from "../lookup-dn69qZmX.js";
11
+ import { test } from "../testing-7szOyHGm.js";
12
12
  import "../std__assert-X-_kMxKM.js";
13
13
  import { assertFalse } from "../assert_rejects-DiIiJbZn.js";
14
14
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,24 +3,24 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Application, Endpoints, Group, Person, Service } from "../type-s3cxzdF7.js";
6
+ import { Activity, Application, Endpoints, Group, Person, Service } from "../type-DvwzlVhz.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-OrOsTes4.js";
11
- import "../actor-C7pfGu4X.js";
12
- import "../key-DUTRSgmm.js";
13
- import { verifyRequest } from "../http-BTbT0TFj.js";
14
- import { doesActorOwnKey } from "../owner-BgiYvP3X.js";
15
- import { extractInboxes, sendActivity } from "../send-C4n5IcVS.js";
16
- import { mockDocumentLoader, test } from "../testing-Do5ElhBv.js";
10
+ import "../lookup-dn69qZmX.js";
11
+ import "../actor-DKJ72HBQ.js";
12
+ import "../key-oUS5fi-N.js";
13
+ import { verifyRequest } from "../http-XM_5g9iL.js";
14
+ import { doesActorOwnKey } from "../owner-9q2J7Hci.js";
15
+ import { extractInboxes, sendActivity } from "../send-C56X13t3.js";
16
+ import { mockDocumentLoader, test } from "../testing-7szOyHGm.js";
17
17
  import "../std__assert-X-_kMxKM.js";
18
18
  import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
19
19
  import "../assert_is_error-BPGph1Jx.js";
20
20
  import { assertNotEquals } from "../assert_not_equals-f3m3epl3.js";
21
21
  import "../assert_throws-BOO88avQ.js";
22
- import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-Beku4H4V.js";
23
- import { esm_default } from "../esm-HTbWR6Yb.js";
22
+ import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-DJFDO1rn.js";
23
+ import { esm_default } from "../esm-DfURz5Dz.js";
24
24
 
25
25
  //#region src/federation/send.test.ts
26
26
  test("extractInboxes()", () => {
@@ -0,0 +1,24 @@
1
+ {
2
+ "@context": [
3
+ "https://www.w3.org/ns/activitystreams",
4
+ "https://w3id.org/security/v1"
5
+ ],
6
+ "id": "https://oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd",
7
+ "type": "Person",
8
+ "preferredUsername": "hongminhee",
9
+ "name": "洪兔",
10
+ "inbox": "https://oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd/inbox",
11
+ "outbox": "https://oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd/outbox",
12
+ "publicKey": {
13
+ "id": "https://oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd#main-key",
14
+ "owner": "https://oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd",
15
+ "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAowJfOzpA/nAYyL0bVDTm\niCAOlhFCIBnqwk1jvGrbkDhMzxlsgyoDqUSlmcJdKaPwu24YdFajDtJIgto27Ju7\nIC3hB7OFchnZ4JZrdYFo7CJABOzK58o12sdmmkCdY5hXWf1604E+mzyIdBAJ1FFJ\nL8vP07VEUsZ7yo9x0iVNg7HpCOK+y6BqI2GHS2dq9qkqQEIhC2TKHXn/RQVXwYB6\nG+YQmVUtcsbCVKdcWyTKhItLRGnepu3BqBSbieLxV27B1O9NFSoPu8xiBUnYwMoe\nsUQCE5tGcqxc75HzcVCbq7PqVqHZ1NW9RYssaSUqi4FYcjXxQrR08DrAl8rR4eXT\n4QIDAQAB\n-----END PUBLIC KEY-----\n"
16
+ },
17
+ "endpoints": {
18
+ "type": "as:Endpoints",
19
+ "sharedInbox": "https://oeee.cafe/inbox"
20
+ },
21
+ "followers": "https://oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd/followers",
22
+ "manuallyApprovesFollowers": false,
23
+ "url": "https://oeee.cafe/@hongminhee"
24
+ }
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { deno_default } from "./docloader-B8l5ArhI.js";
6
- import { CryptographicKey } from "./actor-WJ7wHeRU.js";
7
- import { fetchKey, validateCryptoKey } from "./key-DO-jGH1-.js";
5
+ import { deno_default } from "./docloader-D6nrrkAU.js";
6
+ import { CryptographicKey } from "./actor-D5zJLubE.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-B9qnPXyL.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
@@ -366,7 +366,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
366
366
  return null;
367
367
  }
368
368
  }
369
- const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)="([^"]*)"\s*$/)).filter((m) => m != null).map((m) => m.slice(1, 3)));
369
+ const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)=(?:"([^"]*)"|(\d+))\s*$/)).filter((m) => m != null).map((m) => [m[1], m[2] ?? m[3]]));
370
370
  if (!("keyId" in sigValues)) {
371
371
  logger.debug("Failed to verify; no keyId field found in the Signature header.", { signature: sigHeader });
372
372
  return null;
@@ -377,6 +377,52 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
377
377
  logger.debug("Failed to verify; no signature field found in the Signature header.", { signature: sigHeader });
378
378
  return null;
379
379
  }
380
+ if ("expires" in sigValues) {
381
+ const expiresSeconds = parseInt(sigValues.expires);
382
+ if (!Number.isInteger(expiresSeconds)) {
383
+ logger.debug("Failed to verify; invalid expires field in the Signature header: {expires}.", {
384
+ expires: sigValues.expires,
385
+ signature: sigHeader
386
+ });
387
+ return null;
388
+ }
389
+ const expires = Temporal.Instant.fromEpochMilliseconds(expiresSeconds * 1e3);
390
+ if (Temporal.Instant.compare(now, expires) > 0) {
391
+ logger.debug("Failed to verify; signature expired at {expires} (now: {now}).", {
392
+ expires: expires.toString(),
393
+ now: now.toString(),
394
+ signature: sigHeader
395
+ });
396
+ return null;
397
+ }
398
+ }
399
+ if ("created" in sigValues) {
400
+ const createdSeconds = parseInt(sigValues.created);
401
+ if (!Number.isInteger(createdSeconds)) {
402
+ logger.debug("Failed to verify; invalid created field in the Signature header: {created}.", {
403
+ created: sigValues.created,
404
+ signature: sigHeader
405
+ });
406
+ return null;
407
+ }
408
+ if (timeWindow !== false) {
409
+ const created = Temporal.Instant.fromEpochMilliseconds(createdSeconds * 1e3);
410
+ const tw = timeWindow ?? { minutes: 1 };
411
+ if (Temporal.Instant.compare(created, now.add(tw)) > 0) {
412
+ logger.debug("Failed to verify; created is too far in the future.", {
413
+ created: created.toString(),
414
+ now: now.toString()
415
+ });
416
+ return null;
417
+ } else if (Temporal.Instant.compare(created, now.subtract(tw)) < 0) {
418
+ logger.debug("Failed to verify; created is too far in the past.", {
419
+ created: created.toString(),
420
+ now: now.toString()
421
+ });
422
+ return null;
423
+ }
424
+ }
425
+ }
380
426
  const { keyId, headers, signature } = sigValues;
381
427
  span?.setAttribute("http_signatures.key_id", keyId);
382
428
  if ("algorithm" in sigValues) span?.setAttribute("http_signatures.algorithm", sigValues.algorithm);
@@ -396,7 +442,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
396
442
  logger.debug("Failed to verify; required headers missing in the Signature header: {headers}.", { headers });
397
443
  return null;
398
444
  }
399
- const message = headerNames.map((name) => `${name}: ` + (name == "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name == "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
445
+ const message = headerNames.map((name) => `${name}: ` + (name === "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name === "(created)" ? sigValues.created ?? "" : name === "(expires)" ? sigValues.expires ?? "" : name === "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
400
446
  const sig = decodeBase64(signature);
401
447
  span?.setAttribute("http_signatures.signature", encodeHex(sig));
402
448
  const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));