@fedify/fedify 1.7.10 → 1.7.11

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 (67) hide show
  1. package/dist/{actor-C9RnX-Fl.js → actor-2ENhJMd7.js} +3 -3
  2. package/dist/{actor-m_MgQ1Da.js → actor-DgWryCk8.js} +179 -179
  3. package/dist/{authdocloader-cdK4XSRT.js → authdocloader-BUJAQQAE.js} +3 -3
  4. package/dist/{authdocloader-7OXAs5XI.js → authdocloader-CK17fG7y.js} +3 -3
  5. package/dist/{builder-C7nJE1zO.js → builder-CZM8EtHh.js} +3 -3
  6. package/dist/{client-DXIsEekV.js → client-D83KwIk4.js} +1 -1
  7. package/dist/compat/transformers.test.js +17 -17
  8. package/dist/{context-Bts52fbz.js → context-MUHrGcK9.js} +2 -2
  9. package/dist/{docloader-BK2Fp3AJ.js → docloader-BcyuO_kK.js} +1 -1
  10. package/dist/{docloader-CgkbWVNz.js → docloader-D4wl8z_4.js} +1 -1
  11. package/dist/federation/builder.test.js +4 -4
  12. package/dist/federation/handler.test.js +19 -19
  13. package/dist/federation/inbox.test.js +3 -3
  14. package/dist/federation/keycache.test.js +3 -3
  15. package/dist/federation/middleware.test.js +18 -18
  16. package/dist/federation/mod.js +10 -10
  17. package/dist/federation/send.test.js +9 -9
  18. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +24 -0
  19. package/dist/{http-D1IBucdD.js → http-DFHfa9tA.js} +51 -5
  20. package/dist/{http-CwQqD0nE.js → http-Dsj_eYDw.js} +51 -5
  21. package/dist/{inbox-BrMkm2b5.js → inbox-CltmHpHc.js} +2 -2
  22. package/dist/{key-ZtjFeVO8.js → key-BROjrzkW.js} +5 -5
  23. package/dist/{key-Do-Pud3s.js → key-bBurC_PZ.js} +4 -4
  24. package/dist/{key-DtQ4rLnr.js → key-bttcdrh5.js} +3 -3
  25. package/dist/{key-C6phFgFq.js → key-qFVeObG1.js} +2 -2
  26. package/dist/{keycache-B_99o7Nj.js → keycache-DijbBawF.js} +1 -1
  27. package/dist/{keys-BgLpfFXK.js → keys-DJ5t4jB4.js} +1 -1
  28. package/dist/{ld-AzOj4-js.js → ld-U-lGfuzj.js} +3 -3
  29. package/dist/{lookup-ChtUDlB-.js → lookup-BGqnk7rW.js} +1 -1
  30. package/dist/{lookup-DJgGrigh.js → lookup-BlPHJ-Ff.js} +1 -1
  31. package/dist/{lookup-CBbanOdu.js → lookup-C8ZpflGI.js} +3 -3
  32. package/dist/{middleware-R0UobiAQ.js → middleware-BRzqW-QG.js} +10 -10
  33. package/dist/middleware-BhqeOJrC.js +17 -0
  34. package/dist/{middleware-BS_et69x.js → middleware-D66R1UZl.js} +15 -15
  35. package/dist/middleware-DFra19vb.js +33 -0
  36. package/dist/mod.js +10 -10
  37. package/dist/nodeinfo/client.test.js +2 -2
  38. package/dist/nodeinfo/handler.test.js +18 -18
  39. package/dist/nodeinfo/mod.js +2 -2
  40. package/dist/{owner-Ces3Cs3s.js → owner-2zho-3Ew.js} +3 -3
  41. package/dist/{proof-BKV4HiE8.js → proof-3J23UdVg.js} +3 -3
  42. package/dist/{proof-BOQF8Trx.js → proof-BYHc1mMr.js} +3 -3
  43. package/dist/runtime/authdocloader.test.js +8 -8
  44. package/dist/runtime/docloader.test.js +1 -1
  45. package/dist/runtime/key.test.js +5 -5
  46. package/dist/runtime/mod.js +6 -6
  47. package/dist/{send-aAmnTqe8.js → send-CW7iJ-b9.js} +2 -2
  48. package/dist/sig/http.test.js +23 -7
  49. package/dist/sig/key.test.js +6 -6
  50. package/dist/sig/ld.test.js +7 -7
  51. package/dist/sig/mod.js +6 -6
  52. package/dist/sig/owner.test.js +8 -8
  53. package/dist/sig/proof.test.js +7 -7
  54. package/dist/{types-DBIKpLqH.js → types-DXmLob1B.js} +1 -1
  55. package/dist/vocab/actor.test.js +4 -4
  56. package/dist/vocab/lookup.test.js +4 -4
  57. package/dist/vocab/mod.js +4 -4
  58. package/dist/vocab/type.test.js +2 -2
  59. package/dist/vocab/vocab.test.js +3 -3
  60. package/dist/{vocab-BOerhowX.js → vocab-BojAnGjI.js} +178 -178
  61. package/dist/{vocab-F6vbRsQh.js → vocab-Cy9XhW_T.js} +3 -3
  62. package/dist/webfinger/handler.test.js +18 -18
  63. package/dist/webfinger/lookup.test.js +2 -2
  64. package/dist/webfinger/mod.js +2 -2
  65. package/package.json +1 -1
  66. package/dist/middleware-BVMzYv1x.js +0 -33
  67. package/dist/middleware-CnpuCK_K.js +0 -17
@@ -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-BK2Fp3AJ.js";
6
- import { validateCryptoKey } from "./key-C6phFgFq.js";
7
- import { doubleKnock } from "./http-CwQqD0nE.js";
5
+ import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-BcyuO_kK.js";
6
+ import { validateCryptoKey } from "./key-qFVeObG1.js";
7
+ import { doubleKnock } from "./http-Dsj_eYDw.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
10
10
  //#region runtime/authdocloader.ts
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { createRequest, getRemoteDocument, logRequest } from "./docloader-CgkbWVNz.js";
6
+ import { createRequest, getRemoteDocument, logRequest } from "./docloader-D4wl8z_4.js";
7
7
  import { UrlError, validatePublicUrl } from "./url-kTAI6_KP.js";
8
- import { validateCryptoKey } from "./key-DtQ4rLnr.js";
9
- import { doubleKnock } from "./http-D1IBucdD.js";
8
+ import { validateCryptoKey } from "./key-bttcdrh5.js";
9
+ import { doubleKnock } from "./http-DFHfa9tA.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
 
12
12
  //#region runtime/authdocloader.ts
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-CgkbWVNz.js";
6
+ import { deno_default } from "./docloader-D4wl8z_4.js";
7
7
  import { Router, RouterError } from "./router-D_aVZZUc.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
- import { InboxListenerSet } from "./inbox-BrMkm2b5.js";
9
+ import { InboxListenerSet } from "./inbox-CltmHpHc.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
12
12
 
@@ -34,7 +34,7 @@ var FederationBuilderImpl = class {
34
34
  this.objectTypeIds = {};
35
35
  }
36
36
  async build(options) {
37
- const { FederationImpl } = await import("./middleware-BVMzYv1x.js");
37
+ const { FederationImpl } = await import("./middleware-DFra19vb.js");
38
38
  const f = new FederationImpl(options);
39
39
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
40
40
  f.router = this.router.clone();
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { getUserAgent } from "./docloader-CgkbWVNz.js";
6
+ import { getUserAgent } from "./docloader-D4wl8z_4.js";
7
7
  import { parseSemVer } from "./semver-DWClQt_5.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import { assert } from "../assert-DmFG7ppO.js";
8
8
  import { assertInstanceOf } from "../assert_instance_of-CF09JHYM.js";
9
9
  import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
10
- import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-BS_et69x.js";
11
- import "../docloader-CgkbWVNz.js";
10
+ import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-D66R1UZl.js";
11
+ import "../docloader-D4wl8z_4.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import "../semver-DWClQt_5.js";
14
- import "../client-DXIsEekV.js";
14
+ import "../client-D83KwIk4.js";
15
15
  import "../router-D_aVZZUc.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import { Follow, Person } from "../vocab-BOerhowX.js";
18
+ import { Follow, Person } from "../vocab-BojAnGjI.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-ChtUDlB-.js";
20
+ import "../lookup-BGqnk7rW.js";
21
21
  import "../type-D2s5lmbZ.js";
22
- import "../actor-C9RnX-Fl.js";
23
- import "../key-DtQ4rLnr.js";
24
- import "../http-D1IBucdD.js";
25
- import "../authdocloader-7OXAs5XI.js";
26
- import "../ld-AzOj4-js.js";
27
- import "../owner-Ces3Cs3s.js";
28
- import "../proof-BOQF8Trx.js";
29
- import "../lookup-CBbanOdu.js";
30
- import "../inbox-BrMkm2b5.js";
31
- import "../builder-C7nJE1zO.js";
22
+ import "../actor-2ENhJMd7.js";
23
+ import "../key-bttcdrh5.js";
24
+ import "../http-DFHfa9tA.js";
25
+ import "../authdocloader-CK17fG7y.js";
26
+ import "../ld-U-lGfuzj.js";
27
+ import "../owner-2zho-3Ew.js";
28
+ import "../proof-BYHc1mMr.js";
29
+ import "../lookup-C8ZpflGI.js";
30
+ import "../inbox-CltmHpHc.js";
31
+ import "../builder-CZM8EtHh.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-B_99o7Nj.js";
33
+ import "../keycache-DijbBawF.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-aAmnTqe8.js";
35
+ import "../send-CW7iJ-b9.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
 
38
38
  //#region compat/transformers.test.ts
@@ -4,8 +4,8 @@
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
6
  import { RouterError } from "./router-D_aVZZUc.js";
7
- import { lookupWebFinger } from "./lookup-ChtUDlB-.js";
8
- import { lookupObject, traverseCollection } from "./lookup-CBbanOdu.js";
7
+ import { lookupWebFinger } from "./lookup-BGqnk7rW.js";
8
+ import { lookupObject, traverseCollection } from "./lookup-C8ZpflGI.js";
9
9
  import { mockDocumentLoader } from "./docloader-09nVWLAZ.js";
10
10
  import { trace } from "@opentelemetry/api";
11
11
 
@@ -10,7 +10,7 @@ import { isIP } from "node:net";
10
10
 
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "1.7.10";
13
+ var version = "1.7.11";
14
14
  var license = "MIT";
15
15
  var exports = {
16
16
  ".": "./mod.ts",
@@ -10,7 +10,7 @@ import process from "node:process";
10
10
 
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "1.7.10";
13
+ var version = "1.7.11";
14
14
  var license = "MIT";
15
15
  var exports = {
16
16
  ".": "./mod.ts",
@@ -7,16 +7,16 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import "../assert-DmFG7ppO.js";
8
8
  import "../assert_instance_of-CF09JHYM.js";
9
9
  import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
10
- import "../docloader-CgkbWVNz.js";
10
+ import "../docloader-D4wl8z_4.js";
11
11
  import "../url-kTAI6_KP.js";
12
12
  import { parseSemVer } from "../semver-DWClQt_5.js";
13
13
  import "../router-D_aVZZUc.js";
14
14
  import "../multibase-DeCHcK8L.js";
15
- import { Activity, Note, Person } from "../vocab-BOerhowX.js";
15
+ import { Activity, Note, Person } from "../vocab-BojAnGjI.js";
16
16
  import "../langstr-DbWheeIS.js";
17
17
  import "../type-D2s5lmbZ.js";
18
- import "../inbox-BrMkm2b5.js";
19
- import { createFederationBuilder } from "../builder-C7nJE1zO.js";
18
+ import "../inbox-CltmHpHc.js";
19
+ import { createFederationBuilder } from "../builder-CZM8EtHh.js";
20
20
  import { test } from "../testing-BZ0dJ4qn.js";
21
21
  import { assertExists } from "../std__assert-vp0TKMS1.js";
22
22
  import "../assert_rejects-C-sxEMM5.js";
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import { assert } from "../assert-DmFG7ppO.js";
8
8
  import "../assert_instance_of-CF09JHYM.js";
9
9
  import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
10
- import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-BS_et69x.js";
11
- import "../docloader-CgkbWVNz.js";
10
+ import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-D66R1UZl.js";
11
+ import "../docloader-D4wl8z_4.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import "../semver-DWClQt_5.js";
14
- import "../client-DXIsEekV.js";
14
+ import "../client-D83KwIk4.js";
15
15
  import "../router-D_aVZZUc.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import { Create, Note, Person } from "../vocab-BOerhowX.js";
18
+ import { Create, Note, Person } from "../vocab-BojAnGjI.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-ChtUDlB-.js";
20
+ import "../lookup-BGqnk7rW.js";
21
21
  import "../type-D2s5lmbZ.js";
22
- import "../actor-C9RnX-Fl.js";
23
- import "../key-DtQ4rLnr.js";
24
- import { signRequest } from "../http-D1IBucdD.js";
25
- import "../authdocloader-7OXAs5XI.js";
26
- import "../ld-AzOj4-js.js";
27
- import "../owner-Ces3Cs3s.js";
28
- import "../proof-BOQF8Trx.js";
29
- import "../lookup-CBbanOdu.js";
30
- import { InboxListenerSet } from "../inbox-BrMkm2b5.js";
31
- import "../builder-C7nJE1zO.js";
22
+ import "../actor-2ENhJMd7.js";
23
+ import "../key-bttcdrh5.js";
24
+ import { signRequest } from "../http-DFHfa9tA.js";
25
+ import "../authdocloader-CK17fG7y.js";
26
+ import "../ld-U-lGfuzj.js";
27
+ import "../owner-2zho-3Ew.js";
28
+ import "../proof-BYHc1mMr.js";
29
+ import "../lookup-C8ZpflGI.js";
30
+ import { InboxListenerSet } from "../inbox-CltmHpHc.js";
31
+ import "../builder-CZM8EtHh.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-B_99o7Nj.js";
33
+ import "../keycache-DijbBawF.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-aAmnTqe8.js";
35
+ import "../send-CW7iJ-b9.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
  import "../std__assert-vp0TKMS1.js";
38
38
  import { assertFalse } from "../assert_rejects-C-sxEMM5.js";
@@ -40,8 +40,8 @@ import "../assert_is_error-nrwA1GeT.js";
40
40
  import "../assert_not_equals-Dc7y-V5Q.js";
41
41
  import "../assert_throws-Cn9C6Jur.js";
42
42
  import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
43
- import { createInboxContext, createRequestContext } from "../context-Bts52fbz.js";
44
- import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BgLpfFXK.js";
43
+ import { createInboxContext, createRequestContext } from "../context-MUHrGcK9.js";
44
+ import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-DJ5t4jB4.js";
45
45
 
46
46
  //#region federation/handler.test.ts
47
47
  test("acceptsJsonLd()", () => {
@@ -4,13 +4,13 @@
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
6
  import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
- import "../docloader-CgkbWVNz.js";
7
+ import "../docloader-D4wl8z_4.js";
8
8
  import "../url-kTAI6_KP.js";
9
9
  import "../multibase-DeCHcK8L.js";
10
- import { Activity, Create, Invite, Offer, Update } from "../vocab-BOerhowX.js";
10
+ import { Activity, Create, Invite, Offer, Update } from "../vocab-BojAnGjI.js";
11
11
  import "../langstr-DbWheeIS.js";
12
12
  import "../type-D2s5lmbZ.js";
13
- import { InboxListenerSet } from "../inbox-BrMkm2b5.js";
13
+ import { InboxListenerSet } from "../inbox-CltmHpHc.js";
14
14
  import { test } from "../testing-BZ0dJ4qn.js";
15
15
  import "../assert_is_error-nrwA1GeT.js";
16
16
  import { assertThrows } from "../assert_throws-Cn9C6Jur.js";
@@ -7,12 +7,12 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import { assert } from "../assert-DmFG7ppO.js";
8
8
  import { assertInstanceOf } from "../assert_instance_of-CF09JHYM.js";
9
9
  import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
10
- import "../docloader-CgkbWVNz.js";
10
+ import "../docloader-D4wl8z_4.js";
11
11
  import "../url-kTAI6_KP.js";
12
12
  import "../multibase-DeCHcK8L.js";
13
- import { CryptographicKey, Multikey } from "../vocab-BOerhowX.js";
13
+ import { CryptographicKey, Multikey } from "../vocab-BojAnGjI.js";
14
14
  import "../langstr-DbWheeIS.js";
15
- import { KvKeyCache } from "../keycache-B_99o7Nj.js";
15
+ import { KvKeyCache } from "../keycache-DijbBawF.js";
16
16
  import { test } from "../testing-BZ0dJ4qn.js";
17
17
 
18
18
  //#region federation/keycache.test.ts
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import { assert } from "../assert-DmFG7ppO.js";
8
8
  import { assertInstanceOf } from "../assert_instance_of-CF09JHYM.js";
9
9
  import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
10
- import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-BS_et69x.js";
11
- import { FetchError, fetchDocumentLoader } from "../docloader-CgkbWVNz.js";
10
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-D66R1UZl.js";
11
+ import { FetchError, fetchDocumentLoader } from "../docloader-D4wl8z_4.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import "../semver-DWClQt_5.js";
14
- import "../client-DXIsEekV.js";
14
+ import "../client-D83KwIk4.js";
15
15
  import { RouterError } from "../router-D_aVZZUc.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-BOerhowX.js";
18
+ import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-BojAnGjI.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-ChtUDlB-.js";
20
+ import "../lookup-BGqnk7rW.js";
21
21
  import { getTypeId } from "../type-D2s5lmbZ.js";
22
- import "../actor-C9RnX-Fl.js";
23
- import "../key-DtQ4rLnr.js";
24
- import { signRequest, verifyRequest } from "../http-D1IBucdD.js";
25
- import { getAuthenticatedDocumentLoader } from "../authdocloader-7OXAs5XI.js";
26
- import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-AzOj4-js.js";
27
- import { doesActorOwnKey } from "../owner-Ces3Cs3s.js";
28
- import { signObject, verifyObject } from "../proof-BOQF8Trx.js";
29
- import { lookupObject } from "../lookup-CBbanOdu.js";
30
- import "../inbox-BrMkm2b5.js";
31
- import "../builder-C7nJE1zO.js";
22
+ import "../actor-2ENhJMd7.js";
23
+ import "../key-bttcdrh5.js";
24
+ import { signRequest, verifyRequest } from "../http-DFHfa9tA.js";
25
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-CK17fG7y.js";
26
+ import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-U-lGfuzj.js";
27
+ import { doesActorOwnKey } from "../owner-2zho-3Ew.js";
28
+ import { signObject, verifyObject } from "../proof-BYHc1mMr.js";
29
+ import { lookupObject } from "../lookup-C8ZpflGI.js";
30
+ import "../inbox-CltmHpHc.js";
31
+ import "../builder-CZM8EtHh.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-B_99o7Nj.js";
33
+ import "../keycache-DijbBawF.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-aAmnTqe8.js";
35
+ import "../send-CW7iJ-b9.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
  import { assertStrictEquals } from "../std__assert-vp0TKMS1.js";
38
38
  import { assertFalse, assertRejects } from "../assert_rejects-C-sxEMM5.js";
@@ -40,7 +40,7 @@ import "../assert_is_error-nrwA1GeT.js";
40
40
  import { assertNotEquals } from "../assert_not_equals-Dc7y-V5Q.js";
41
41
  import { assertThrows } from "../assert_throws-Cn9C6Jur.js";
42
42
  import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
43
- import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-BgLpfFXK.js";
43
+ import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-DJ5t4jB4.js";
44
44
  import { esm_default } from "../esm-Db4De7AS.js";
45
45
 
46
46
  //#region testing/fixtures/example.com/person.json
@@ -3,16 +3,16 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import "../transformers-ghwJuzGY.js";
6
- import "../docloader-BK2Fp3AJ.js";
7
- import "../actor-m_MgQ1Da.js";
8
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-R0UobiAQ.js";
9
- import "../lookup-DJgGrigh.js";
10
- import "../key-C6phFgFq.js";
11
- import "../http-CwQqD0nE.js";
12
- import "../proof-BKV4HiE8.js";
6
+ import "../docloader-BcyuO_kK.js";
7
+ import "../actor-DgWryCk8.js";
8
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-BRzqW-QG.js";
9
+ import "../lookup-BlPHJ-Ff.js";
10
+ import "../key-qFVeObG1.js";
11
+ import "../http-Dsj_eYDw.js";
12
+ import "../proof-3J23UdVg.js";
13
13
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-BRIQn-GV.js";
14
- import "../types-DBIKpLqH.js";
15
- import "../authdocloader-cdK4XSRT.js";
16
- import "../vocab-F6vbRsQh.js";
14
+ import "../types-DXmLob1B.js";
15
+ import "../authdocloader-BUJAQQAE.js";
16
+ import "../vocab-Cy9XhW_T.js";
17
17
 
18
18
  export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
@@ -6,18 +6,18 @@
6
6
  import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import { assert } from "../assert-DmFG7ppO.js";
8
8
  import "../assert_instance_of-CF09JHYM.js";
9
- import "../docloader-CgkbWVNz.js";
9
+ import "../docloader-D4wl8z_4.js";
10
10
  import "../url-kTAI6_KP.js";
11
11
  import "../multibase-DeCHcK8L.js";
12
- import { Activity, Application, Endpoints, Group, Person, Service } from "../vocab-BOerhowX.js";
12
+ import { Activity, Application, Endpoints, Group, Person, Service } from "../vocab-BojAnGjI.js";
13
13
  import "../langstr-DbWheeIS.js";
14
- import "../lookup-ChtUDlB-.js";
14
+ import "../lookup-BGqnk7rW.js";
15
15
  import "../type-D2s5lmbZ.js";
16
- import "../actor-C9RnX-Fl.js";
17
- import "../key-DtQ4rLnr.js";
18
- import { verifyRequest } from "../http-D1IBucdD.js";
19
- import { doesActorOwnKey } from "../owner-Ces3Cs3s.js";
20
- import { extractInboxes, sendActivity } from "../send-aAmnTqe8.js";
16
+ import "../actor-2ENhJMd7.js";
17
+ import "../key-bttcdrh5.js";
18
+ import { verifyRequest } from "../http-DFHfa9tA.js";
19
+ import { doesActorOwnKey } from "../owner-2zho-3Ew.js";
20
+ import { extractInboxes, sendActivity } from "../send-CW7iJ-b9.js";
21
21
  import { test } from "../testing-BZ0dJ4qn.js";
22
22
  import "../std__assert-vp0TKMS1.js";
23
23
  import { assertFalse, assertRejects } from "../assert_rejects-C-sxEMM5.js";
@@ -25,7 +25,7 @@ import "../assert_is_error-nrwA1GeT.js";
25
25
  import { assertNotEquals } from "../assert_not_equals-Dc7y-V5Q.js";
26
26
  import "../assert_throws-Cn9C6Jur.js";
27
27
  import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
28
- import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-BgLpfFXK.js";
28
+ import { ed25519Multikey, ed25519PrivateKey, rsaPrivateKey2, rsaPublicKey2 } from "../keys-DJ5t4jB4.js";
29
29
  import { esm_default } from "../esm-Db4De7AS.js";
30
30
 
31
31
  //#region federation/send.test.ts
@@ -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
+ }
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-CgkbWVNz.js";
7
- import { CryptographicKey } from "./vocab-BOerhowX.js";
8
- import { fetchKey, validateCryptoKey } from "./key-DtQ4rLnr.js";
6
+ import { deno_default } from "./docloader-D4wl8z_4.js";
7
+ import { CryptographicKey } from "./vocab-BojAnGjI.js";
8
+ import { fetchKey, validateCryptoKey } from "./key-bttcdrh5.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanStatusCode, trace } from "@opentelemetry/api";
11
11
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
@@ -367,7 +367,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
367
367
  return null;
368
368
  }
369
369
  }
370
- 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)));
370
+ 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]]));
371
371
  if (!("keyId" in sigValues)) {
372
372
  logger.debug("Failed to verify; no keyId field found in the Signature header.", { signature: sigHeader });
373
373
  return null;
@@ -378,6 +378,52 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
378
378
  logger.debug("Failed to verify; no signature field found in the Signature header.", { signature: sigHeader });
379
379
  return null;
380
380
  }
381
+ if ("expires" in sigValues) {
382
+ const expiresSeconds = parseInt(sigValues.expires);
383
+ if (!Number.isInteger(expiresSeconds)) {
384
+ logger.debug("Failed to verify; invalid expires field in the Signature header: {expires}.", {
385
+ expires: sigValues.expires,
386
+ signature: sigHeader
387
+ });
388
+ return null;
389
+ }
390
+ const expires = Temporal.Instant.fromEpochMilliseconds(expiresSeconds * 1e3);
391
+ if (Temporal.Instant.compare(now, expires) > 0) {
392
+ logger.debug("Failed to verify; signature expired at {expires} (now: {now}).", {
393
+ expires: expires.toString(),
394
+ now: now.toString(),
395
+ signature: sigHeader
396
+ });
397
+ return null;
398
+ }
399
+ }
400
+ if ("created" in sigValues) {
401
+ const createdSeconds = parseInt(sigValues.created);
402
+ if (!Number.isInteger(createdSeconds)) {
403
+ logger.debug("Failed to verify; invalid created field in the Signature header: {created}.", {
404
+ created: sigValues.created,
405
+ signature: sigHeader
406
+ });
407
+ return null;
408
+ }
409
+ if (timeWindow !== false) {
410
+ const created = Temporal.Instant.fromEpochMilliseconds(createdSeconds * 1e3);
411
+ const tw = timeWindow ?? { minutes: 1 };
412
+ if (Temporal.Instant.compare(created, now.add(tw)) > 0) {
413
+ logger.debug("Failed to verify; created is too far in the future.", {
414
+ created: created.toString(),
415
+ now: now.toString()
416
+ });
417
+ return null;
418
+ } else if (Temporal.Instant.compare(created, now.subtract(tw)) < 0) {
419
+ logger.debug("Failed to verify; created is too far in the past.", {
420
+ created: created.toString(),
421
+ now: now.toString()
422
+ });
423
+ return null;
424
+ }
425
+ }
426
+ }
381
427
  const { keyId, headers, signature } = sigValues;
382
428
  span?.setAttribute("http_signatures.key_id", keyId);
383
429
  if ("algorithm" in sigValues) span?.setAttribute("http_signatures.algorithm", sigValues.algorithm);
@@ -397,7 +443,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
397
443
  logger.debug("Failed to verify; required headers missing in the Signature header: {headers}.", { headers });
398
444
  return null;
399
445
  }
400
- 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");
446
+ 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");
401
447
  const sig = decodeBase64(signature);
402
448
  span?.setAttribute("http_signatures.signature", encodeHex(sig));
403
449
  const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));
@@ -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-BK2Fp3AJ.js";
6
- import { CryptographicKey } from "./actor-m_MgQ1Da.js";
7
- import { fetchKey, validateCryptoKey } from "./key-C6phFgFq.js";
5
+ import { deno_default } from "./docloader-BcyuO_kK.js";
6
+ import { CryptographicKey } from "./actor-DgWryCk8.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-qFVeObG1.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));
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-CgkbWVNz.js";
7
- import { Activity } from "./vocab-BOerhowX.js";
6
+ import { deno_default } from "./docloader-D4wl8z_4.js";
7
+ import { Activity } from "./vocab-BojAnGjI.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -3,14 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "./docloader-CgkbWVNz.js";
6
+ import "./docloader-D4wl8z_4.js";
7
7
  import "./url-kTAI6_KP.js";
8
8
  import "./multibase-DeCHcK8L.js";
9
- import "./vocab-BOerhowX.js";
9
+ import "./vocab-BojAnGjI.js";
10
10
  import "./langstr-DbWheeIS.js";
11
- import "./lookup-ChtUDlB-.js";
11
+ import "./lookup-BGqnk7rW.js";
12
12
  import "./type-D2s5lmbZ.js";
13
- import "./actor-C9RnX-Fl.js";
14
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DtQ4rLnr.js";
13
+ import "./actor-2ENhJMd7.js";
14
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-bttcdrh5.js";
15
15
 
16
16
  export { validateCryptoKey };
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "./docloader-BK2Fp3AJ.js";
6
- import "./actor-m_MgQ1Da.js";
7
- import "./lookup-DJgGrigh.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-C6phFgFq.js";
5
+ import "./docloader-BcyuO_kK.js";
6
+ import "./actor-DgWryCk8.js";
7
+ import "./lookup-BlPHJ-Ff.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-qFVeObG1.js";
9
9
 
10
10
  export { validateCryptoKey };