@fedify/fedify 2.2.0-dev.671 → 2.2.0-dev.677

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 (56) hide show
  1. package/dist/{builder-DbwMErXg.mjs → builder-DVJNyKAX.mjs} +3 -3
  2. package/dist/compat/mod.d.cts +1 -1
  3. package/dist/compat/mod.d.ts +1 -1
  4. package/dist/compat/transformers.test.mjs +1 -1
  5. package/dist/{context-BOiMZBu5.d.ts → context-C0fssarc.d.ts} +4 -1
  6. package/dist/{context-BhZVy7RB.d.cts → context-LmrZPwti.d.cts} +4 -1
  7. package/dist/{deno-hMabhCww.mjs → deno-DhywNCFr.mjs} +1 -1
  8. package/dist/{docloader-DfimMtL4.mjs → docloader-C08QBNrF.mjs} +2 -2
  9. package/dist/federation/builder.test.mjs +1 -1
  10. package/dist/federation/handler.test.mjs +3 -3
  11. package/dist/federation/idempotency.test.mjs +2 -2
  12. package/dist/federation/inbox.test.mjs +1 -1
  13. package/dist/federation/middleware.test.mjs +35 -29
  14. package/dist/federation/mod.cjs +1 -1
  15. package/dist/federation/mod.d.cts +2 -2
  16. package/dist/federation/mod.d.ts +2 -2
  17. package/dist/federation/mod.js +1 -1
  18. package/dist/federation/send.test.mjs +3 -3
  19. package/dist/federation/webfinger.test.mjs +1 -1
  20. package/dist/{http-0f792a_Z.mjs → http-CPJdCaSL.mjs} +2 -2
  21. package/dist/{http-oG4y8q4n.js → http-D3tag6Yq.js} +1 -1
  22. package/dist/{http-BewLiYTT.cjs → http-YvNVio1S.cjs} +1 -1
  23. package/dist/{inbox-wbJQKd-b.mjs → inbox-BaETdNND.mjs} +1 -1
  24. package/dist/{key-Buz4jrLL.mjs → key-D0Yn0mtH.mjs} +1 -1
  25. package/dist/{kv-cache-BnfUjj42.js → kv-cache-CmiF_bSD.js} +1 -1
  26. package/dist/{kv-cache-E_ri3gGZ.cjs → kv-cache-Pk6XERKs.cjs} +1 -1
  27. package/dist/{ld-Drc5O1ub.mjs → ld-DbgG8OrC.mjs} +2 -2
  28. package/dist/{middleware-BhdA_6gU.cjs → middleware-CRwpNEwP.cjs} +1 -1
  29. package/dist/{middleware-CqaVY7Db.js → middleware-D5u0ehbB.js} +41 -16
  30. package/dist/{middleware-DcwyRzc9.mjs → middleware-ItHrRua7.mjs} +48 -23
  31. package/dist/{middleware-5TGjniPd.cjs → middleware-eyhwv4v9.cjs} +42 -17
  32. package/dist/{middleware-CCeWFq7G.mjs → middleware-vdOFJOOX.mjs} +1 -1
  33. package/dist/{mod-Bp_CzKd4.d.cts → mod-Cgpc49fA.d.cts} +1 -1
  34. package/dist/{mod-DKOAow7a.d.ts → mod-CnwZoDzx.d.ts} +1 -1
  35. package/dist/mod.cjs +4 -4
  36. package/dist/mod.d.cts +2 -2
  37. package/dist/mod.d.ts +2 -2
  38. package/dist/mod.js +4 -4
  39. package/dist/nodeinfo/handler.test.mjs +1 -1
  40. package/dist/{owner-CLKB6EdW.mjs → owner-rvdHpSM9.mjs} +2 -2
  41. package/dist/{proof-CNU71NVu.cjs → proof-4G31YUYH.cjs} +1 -1
  42. package/dist/{proof-CZf0bupI.mjs → proof-BrTLb1tP.mjs} +2 -2
  43. package/dist/{proof-Cr-0THxd.js → proof-zRahbXVh.js} +1 -1
  44. package/dist/{send-Bsp6qk0O.mjs → send-CqkObdC8.mjs} +2 -2
  45. package/dist/sig/http.test.mjs +2 -2
  46. package/dist/sig/key.test.mjs +1 -1
  47. package/dist/sig/ld.test.mjs +2 -2
  48. package/dist/sig/mod.cjs +2 -2
  49. package/dist/sig/mod.js +2 -2
  50. package/dist/sig/owner.test.mjs +1 -1
  51. package/dist/sig/proof.test.mjs +1 -1
  52. package/dist/testing/mod.d.mts +4 -1
  53. package/dist/utils/docloader.test.mjs +2 -2
  54. package/dist/utils/mod.cjs +1 -1
  55. package/dist/utils/mod.js +1 -1
  56. package/package.json +5 -5
@@ -2,8 +2,8 @@ import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { n as RouterError, t as Router } from "./router-CrMLXoOr.mjs";
5
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
6
- import { t as InboxListenerSet } from "./inbox-wbJQKd-b.mjs";
5
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
6
+ import { t as InboxListenerSet } from "./inbox-BaETdNND.mjs";
7
7
  import { getTypeId } from "@fedify/vocab";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
  import { getLogger } from "@logtape/logtape";
@@ -43,7 +43,7 @@ var FederationBuilderImpl = class {
43
43
  this.collectionTypeIds = {};
44
44
  }
45
45
  async build(options) {
46
- const { FederationImpl } = await import("./middleware-CCeWFq7G.mjs");
46
+ const { FederationImpl } = await import("./middleware-vdOFJOOX.mjs");
47
47
  const f = new FederationImpl(options);
48
48
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
49
49
  f.router = this.router.clone();
@@ -1,4 +1,4 @@
1
- import { Ct as ActivityTransformer, n as Context } from "../context-BhZVy7RB.cjs";
1
+ import { Ct as ActivityTransformer, n as Context } from "../context-LmrZPwti.cjs";
2
2
  import { Activity } from "@fedify/vocab";
3
3
 
4
4
  //#region src/compat/transformers.d.ts
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { Ct as ActivityTransformer, n as Context } from "../context-BOiMZBu5.js";
3
+ import { Ct as ActivityTransformer, n as Context } from "../context-C0fssarc.js";
4
4
  import { Activity } from "@fedify/vocab";
5
5
 
6
6
  //#region src/compat/transformers.d.ts
@@ -5,7 +5,7 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
5
5
  import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
6
6
  import { t as assert } from "../assert-ddO5KLpe.mjs";
7
7
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
8
- import { _ as autoIdAssigner, g as actorDehydrator, n as FederationImpl } from "../middleware-DcwyRzc9.mjs";
8
+ import { _ as autoIdAssigner, g as actorDehydrator, n as FederationImpl } from "../middleware-ItHrRua7.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  import { Follow, Person } from "@fedify/vocab";
11
11
  //#region src/compat/transformers.test.ts
@@ -2573,7 +2573,10 @@ interface GetSignedKeyOptions {
2573
2573
  */
2574
2574
  interface ActorKeyPair extends CryptoKeyPair {
2575
2575
  /**
2576
- * The URI of the public key, which is used for verifying HTTP Signatures.
2576
+ * The URI of the public key for {@link CryptographicKey}, which is used for
2577
+ * verifying HTTP Signatures and Linked Data Signatures. Note that this is
2578
+ * the ID of the {@link cryptographicKey}, not of the {@link multikey};
2579
+ * the {@link Multikey} instance has a distinct ID of its own.
2577
2580
  */
2578
2581
  readonly keyId: URL;
2579
2582
  /**
@@ -2571,7 +2571,10 @@ interface GetSignedKeyOptions {
2571
2571
  */
2572
2572
  interface ActorKeyPair extends CryptoKeyPair {
2573
2573
  /**
2574
- * The URI of the public key, which is used for verifying HTTP Signatures.
2574
+ * The URI of the public key for {@link CryptographicKey}, which is used for
2575
+ * verifying HTTP Signatures and Linked Data Signatures. Note that this is
2576
+ * the ID of the {@link cryptographicKey}, not of the {@link multikey};
2577
+ * the {@link Multikey} instance has a distinct ID of its own.
2575
2578
  */
2576
2579
  readonly keyId: URL;
2577
2580
  /**
@@ -3,6 +3,6 @@ import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  //#region deno.json
5
5
  var name = "@fedify/fedify";
6
- var version = "2.2.0-dev.671+61141c60";
6
+ var version = "2.2.0-dev.677+41046619";
7
7
  //#endregion
8
8
  export { version as n, name as t };
@@ -1,8 +1,8 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { o as validateCryptoKey } from "./key-Buz4jrLL.mjs";
5
- import { n as doubleKnock } from "./http-0f792a_Z.mjs";
4
+ import { o as validateCryptoKey } from "./key-D0Yn0mtH.mjs";
5
+ import { n as doubleKnock } from "./http-CPJdCaSL.mjs";
6
6
  import { curry } from "es-toolkit";
7
7
  import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, validatePublicUrl } from "@fedify/vocab-runtime";
8
8
  import { getLogger } from "@logtape/logtape";
@@ -5,7 +5,7 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
5
5
  import { a as assertExists } from "../std__assert-Duiq_YC9.mjs";
6
6
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
7
7
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
8
- import { n as createFederationBuilder } from "../builder-DbwMErXg.mjs";
8
+ import { n as createFederationBuilder } from "../builder-DVJNyKAX.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  import { Activity, Note, Person } from "@fedify/vocab";
11
11
  //#region src/federation/builder.test.ts
@@ -6,11 +6,11 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
6
6
  import "../std__assert-Duiq_YC9.mjs";
7
7
  import { t as assert } from "../assert-ddO5KLpe.mjs";
8
8
  import { r as parseAcceptSignature } from "../accept-Dd__NiUL.mjs";
9
- import { s as signRequest } from "../http-0f792a_Z.mjs";
9
+ import { s as signRequest } from "../http-CPJdCaSL.mjs";
10
10
  import { a as rsaPrivateKey3, c as rsaPublicKey3, s as rsaPublicKey2 } from "../keys-BAK-tUlf.mjs";
11
11
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
12
- import { a as createFederation, c as handleCollection, d as handleObject, f as respondWithObject, l as handleCustomCollection, p as respondWithObjectIfAcceptable, s as handleActor, u as handleInbox } from "../middleware-DcwyRzc9.mjs";
13
- import { t as InboxListenerSet } from "../inbox-wbJQKd-b.mjs";
12
+ import { a as createFederation, c as handleCollection, d as handleObject, f as respondWithObject, l as handleCustomCollection, p as respondWithObjectIfAcceptable, s as handleActor, u as handleInbox } from "../middleware-ItHrRua7.mjs";
13
+ import { t as InboxListenerSet } from "../inbox-BaETdNND.mjs";
14
14
  import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
15
15
  import { Create, Note, Person } from "@fedify/vocab";
16
16
  import { FetchError } from "@fedify/vocab-runtime";
@@ -4,9 +4,9 @@ globalThis.addEventListener = () => {};
4
4
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
5
5
  import "../std__assert-Duiq_YC9.mjs";
6
6
  import { n as ed25519PrivateKey, r as ed25519PublicKey, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
7
- import { n as signObject } from "../proof-CZf0bupI.mjs";
7
+ import { n as signObject } from "../proof-BrTLb1tP.mjs";
8
8
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
9
- import { a as createFederation } from "../middleware-DcwyRzc9.mjs";
9
+ import { a as createFederation } from "../middleware-ItHrRua7.mjs";
10
10
  import { mockDocumentLoader, test } from "@fedify/fixture";
11
11
  import { Create, Follow, Person } from "@fedify/vocab";
12
12
  //#region src/federation/idempotency.test.ts
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
5
5
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
6
- import { t as InboxListenerSet } from "../inbox-wbJQKd-b.mjs";
6
+ import { t as InboxListenerSet } from "../inbox-BaETdNND.mjs";
7
7
  import { test } from "@fedify/fixture";
8
8
  import { Activity, Create, Invite, Offer, Update } from "@fedify/vocab";
9
9
  //#region src/federation/inbox.test.ts
@@ -10,14 +10,14 @@ import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
10
10
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
11
11
  import { t as assertNotEquals } from "../assert_not_equals--wG9hV7u.mjs";
12
12
  import { t as assert } from "../assert-ddO5KLpe.mjs";
13
- import { l as verifyRequest, s as signRequest } from "../http-0f792a_Z.mjs";
13
+ import { l as verifyRequest, s as signRequest } from "../http-CPJdCaSL.mjs";
14
14
  import { a as rsaPrivateKey3, c as rsaPublicKey3, i as rsaPrivateKey2, n as ed25519PrivateKey, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
15
- import { t as getAuthenticatedDocumentLoader } from "../docloader-DfimMtL4.mjs";
16
- import { a as signJsonLd, o as verifyJsonLd, r as detachSignature } from "../ld-Drc5O1ub.mjs";
17
- import { t as doesActorOwnKey } from "../owner-CLKB6EdW.mjs";
18
- import { n as signObject, r as verifyObject } from "../proof-CZf0bupI.mjs";
15
+ import { t as getAuthenticatedDocumentLoader } from "../docloader-C08QBNrF.mjs";
16
+ import { a as signJsonLd, o as verifyJsonLd, r as detachSignature } from "../ld-DbgG8OrC.mjs";
17
+ import { t as doesActorOwnKey } from "../owner-rvdHpSM9.mjs";
18
+ import { n as signObject, r as verifyObject } from "../proof-BrTLb1tP.mjs";
19
19
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
20
- import { a as createFederation, i as KvSpecDeterminer, n as FederationImpl, r as InboxContextImpl, t as ContextImpl } from "../middleware-DcwyRzc9.mjs";
20
+ import { a as createFederation, i as KvSpecDeterminer, n as FederationImpl, r as InboxContextImpl, t as ContextImpl } from "../middleware-ItHrRua7.mjs";
21
21
  import { mockDocumentLoader, test } from "@fedify/fixture";
22
22
  import * as vocab from "@fedify/vocab";
23
23
  import { getTypeId, lookupObject } from "@fedify/vocab";
@@ -285,7 +285,7 @@ test({
285
285
  owner: new URL("https://example.com/users/handle")
286
286
  }),
287
287
  multikey: new vocab.Multikey({
288
- id: new URL("https://example.com/users/handle#main-key"),
288
+ id: new URL("https://example.com/users/handle#multikey-1"),
289
289
  controller: new URL("https://example.com/users/handle"),
290
290
  publicKey: rsaPublicKey2.publicKey
291
291
  })
@@ -298,7 +298,7 @@ test({
298
298
  owner: new URL("https://example.com/users/handle")
299
299
  }),
300
300
  multikey: new vocab.Multikey({
301
- id: new URL("https://example.com/users/handle#key-2"),
301
+ id: new URL("https://example.com/users/handle#multikey-2"),
302
302
  controller: new URL("https://example.com/users/handle"),
303
303
  publicKey: ed25519PublicKey.publicKey
304
304
  })
@@ -1729,8 +1729,10 @@ test("ContextImpl.sendActivity()", async (t) => {
1729
1729
  keyCache: {
1730
1730
  async get(keyId) {
1731
1731
  const keys = await federation.createContext(new URL("https://example.com/"), void 0).getActorKeyPairs("1");
1732
- for (const key of keys) if (key.keyId.href === keyId.href) if (key.publicKey.algorithm.name === "Ed25519") return key.multikey;
1733
- else return key.cryptographicKey;
1732
+ for (const key of keys) {
1733
+ if (key.keyId.href === keyId.href) return key.cryptographicKey;
1734
+ if (key.multikey.id?.href === keyId.href) return key.multikey;
1735
+ }
1734
1736
  },
1735
1737
  async set(_keyId, _key) {}
1736
1738
  }
@@ -1896,25 +1898,29 @@ test("ContextImpl.sendActivity()", async (t) => {
1896
1898
  id: new URL("https://example.com/recipient"),
1897
1899
  inboxId: new URL("https://example.com/inbox")
1898
1900
  }, activity, { fanout: "force" });
1899
- assertEquals(queue.messages, [{
1900
- id: queue.messages[0].id,
1901
- type: "fanout",
1902
- activity: await activity.toJsonLd({
1903
- format: "compact",
1904
- contextLoader: documentLoader
1905
- }),
1906
- activityId: "https://example.com/activity/1",
1907
- activityType: "https://www.w3.org/ns/activitystreams#Create",
1908
- baseUrl: "https://example.com",
1909
- collectionSync: void 0,
1910
- inboxes: { "https://example.com/inbox": {
1911
- actorIds: ["https://example.com/recipient"],
1912
- sharedInbox: false
1913
- } },
1914
- keys: queue.messages[0].type === "fanout" ? queue.messages[0].keys : [],
1915
- orderingKey: void 0,
1916
- traceContext: {}
1917
- }]);
1901
+ assertEquals(queue.messages.length, 1);
1902
+ assert(queue.messages[0].type === "fanout");
1903
+ const fanoutMsg = queue.messages[0];
1904
+ assertEquals(fanoutMsg.activityId, "https://example.com/activity/1");
1905
+ assertEquals(fanoutMsg.activityType, "https://www.w3.org/ns/activitystreams#Create");
1906
+ assertEquals(fanoutMsg.baseUrl, "https://example.com");
1907
+ assertEquals(fanoutMsg.collectionSync, void 0);
1908
+ assertEquals(fanoutMsg.orderingKey, void 0);
1909
+ assertEquals(fanoutMsg.inboxes, { "https://example.com/inbox": {
1910
+ actorIds: ["https://example.com/recipient"],
1911
+ sharedInbox: false
1912
+ } });
1913
+ const signedActivity = await vocab.Create.fromJsonLd(fanoutMsg.activity, {
1914
+ contextLoader: documentLoader,
1915
+ documentLoader
1916
+ });
1917
+ assertEquals(signedActivity.id?.href, "https://example.com/activity/1");
1918
+ let proofCount = 0;
1919
+ for await (const proof of signedActivity.getProofs({ contextLoader: documentLoader })) {
1920
+ assertEquals(proof.verificationMethodId?.href, "https://example.com/john#multikey-2");
1921
+ proofCount++;
1922
+ }
1923
+ assertEquals(proofCount, 1);
1918
1924
  });
1919
1925
  queue.clear();
1920
1926
  await t.step("fanout: \"skip\"", async () => {
@@ -2,7 +2,7 @@ const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  require("../chunk-DDcVe30Y.cjs");
5
- const require_middleware = require("../middleware-5TGjniPd.cjs");
5
+ const require_middleware = require("../middleware-eyhwv4v9.cjs");
6
6
  let es_toolkit = require("es-toolkit");
7
7
  //#region src/federation/kv.ts
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "../context-BhZVy7RB.cjs";
1
+ import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "../context-LmrZPwti.cjs";
2
2
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "../kv-CbLNp3zQ.cjs";
3
- import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-Bp_CzKd4.cjs";
3
+ import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-Cgpc49fA.cjs";
4
4
  export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxChallengePolicy, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "../context-BOiMZBu5.js";
3
+ import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "../context-C0fssarc.js";
4
4
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "../kv-GFYnFoOl.js";
5
- import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-DKOAow7a.js";
5
+ import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-CnwZoDzx.js";
6
6
  export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxChallengePolicy, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
- import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "../middleware-CqaVY7Db.js";
3
+ import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "../middleware-D5u0ehbB.js";
4
4
  import { isEqual } from "es-toolkit";
5
5
  //#region src/federation/kv.ts
6
6
  /**
@@ -8,10 +8,10 @@ import { n as assertFalse, t as assertRejects } from "../assert_rejects-B-qJtC9Z
8
8
  import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
9
9
  import { t as assertNotEquals } from "../assert_not_equals--wG9hV7u.mjs";
10
10
  import { t as assert } from "../assert-ddO5KLpe.mjs";
11
- import { l as verifyRequest } from "../http-0f792a_Z.mjs";
11
+ import { l as verifyRequest } from "../http-CPJdCaSL.mjs";
12
12
  import { i as rsaPrivateKey2, n as ed25519PrivateKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
13
- import { t as doesActorOwnKey } from "../owner-CLKB6EdW.mjs";
14
- import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "../send-Bsp6qk0O.mjs";
13
+ import { t as doesActorOwnKey } from "../owner-rvdHpSM9.mjs";
14
+ import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "../send-CqkObdC8.mjs";
15
15
  import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
16
16
  import { Activity, Application, Endpoints, Group, Person, Service } from "@fedify/vocab";
17
17
  //#region src/federation/send.test.ts
@@ -5,7 +5,7 @@ import { n as createRequestContext } from "../context-Juj6bdHC.mjs";
5
5
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
6
6
  import "../std__assert-Duiq_YC9.mjs";
7
7
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
8
- import { a as createFederation, o as handleWebFinger } from "../middleware-DcwyRzc9.mjs";
8
+ import { a as createFederation, o as handleWebFinger } from "../middleware-ItHrRua7.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  import { Image, Link, Person } from "@fedify/vocab";
11
11
  //#region src/federation/webfinger.test.ts
@@ -1,9 +1,9 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
5
  import { i as validateAcceptSignature, n as fulfillAcceptSignature, r as parseAcceptSignature } from "./accept-Dd__NiUL.mjs";
6
- import { o as validateCryptoKey, r as fetchKeyDetailed } from "./key-Buz4jrLL.mjs";
6
+ import { o as validateCryptoKey, r as fetchKeyDetailed } from "./key-D0Yn0mtH.mjs";
7
7
  import { CryptographicKey } from "@fedify/vocab";
8
8
  import { SpanStatusCode, trace } from "@opentelemetry/api";
9
9
  import { FetchError } from "@fedify/vocab-runtime";
@@ -10,7 +10,7 @@ import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } fro
10
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "2.2.0-dev.671+61141c60";
13
+ var version = "2.2.0-dev.677+41046619";
14
14
  //#endregion
15
15
  //#region src/sig/accept.ts
16
16
  /**
@@ -11,7 +11,7 @@ let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conve
11
11
  let byte_encodings_base64 = require("byte-encodings/base64");
12
12
  //#region deno.json
13
13
  var name = "@fedify/fedify";
14
- var version = "2.2.0-dev.671+61141c60";
14
+ var version = "2.2.0-dev.677+41046619";
15
15
  //#endregion
16
16
  //#region src/sig/accept.ts
17
17
  /**
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
5
  import { Activity, getTypeId } from "@fedify/vocab";
6
6
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
7
7
  import { getLogger } from "@logtape/logtape";
@@ -1,7 +1,7 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
5
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
6
6
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
7
7
  import { FetchError, getDocumentLoader } from "@fedify/vocab-runtime";
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { d as validateCryptoKey, t as doubleKnock } from "./http-oG4y8q4n.js";
3
+ import { d as validateCryptoKey, t as doubleKnock } from "./http-D3tag6Yq.js";
4
4
  import { getLogger } from "@logtape/logtape";
5
5
  import { curry } from "es-toolkit";
6
6
  import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
@@ -1,7 +1,7 @@
1
1
  const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  require("./chunk-DDcVe30Y.cjs");
4
- const require_http = require("./http-BewLiYTT.cjs");
4
+ const require_http = require("./http-YvNVio1S.cjs");
5
5
  let _logtape_logtape = require("@logtape/logtape");
6
6
  let es_toolkit = require("es-toolkit");
7
7
  let _fedify_vocab_runtime = require("@fedify/vocab-runtime");
@@ -1,8 +1,8 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
5
- import { n as fetchKey, o as validateCryptoKey } from "./key-Buz4jrLL.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
+ import { n as fetchKey, o as validateCryptoKey } from "./key-D0Yn0mtH.mjs";
6
6
  import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
7
7
  import { SpanStatusCode, trace } from "@opentelemetry/api";
8
8
  import { getDocumentLoader } from "@fedify/vocab-runtime";
@@ -1,4 +1,4 @@
1
1
  const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
- const require_middleware = require("./middleware-5TGjniPd.cjs");
3
+ const require_middleware = require("./middleware-eyhwv4v9.cjs");
4
4
  exports.FederationImpl = require_middleware.FederationImpl;
@@ -2,10 +2,10 @@ import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  import { t as __exportAll } from "./chunk-nlSIicah.js";
4
4
  import { r as getDefaultActivityTransformers } from "./transformers-ve6e2xcg.js";
5
- import { _ as version, a as verifyRequestDetailed, d as validateCryptoKey, f as formatAcceptSignature, g as name, i as verifyRequest, n as parseRfc9421SignatureInput, o as exportJwk, t as doubleKnock, u as importJwk } from "./http-oG4y8q4n.js";
6
- import { a as doesActorOwnKey, d as signJsonLd, f as verifyJsonLd, l as detachSignature, n as signObject, o as getKeyOwner, r as verifyObject, u as hasSignature } from "./proof-Cr-0THxd.js";
5
+ import { _ as version, a as verifyRequestDetailed, d as validateCryptoKey, f as formatAcceptSignature, g as name, i as verifyRequest, n as parseRfc9421SignatureInput, o as exportJwk, t as doubleKnock, u as importJwk } from "./http-D3tag6Yq.js";
6
+ import { a as doesActorOwnKey, d as signJsonLd, f as verifyJsonLd, l as detachSignature, n as signObject, o as getKeyOwner, r as verifyObject, u as hasSignature } from "./proof-zRahbXVh.js";
7
7
  import { n as getNodeInfo, t as nodeInfoToJson } from "./types-hvL8ElAs.js";
8
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-BnfUjj42.js";
8
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-CmiF_bSD.js";
9
9
  import { getLogger, withContext } from "@logtape/logtape";
10
10
  import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
11
11
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -3003,14 +3003,17 @@ var FederationImpl = class extends FederationBuilderImpl {
3003
3003
  let rsaKey = null;
3004
3004
  for (const { keyId, privateKey } of keys) {
3005
3005
  validateCryptoKey(privateKey, "private");
3006
- if (rsaKey == null && privateKey.algorithm.name === "RSASSA-PKCS1-v1_5") {
3007
- rsaKey = {
3008
- keyId,
3009
- privateKey
3010
- };
3011
- continue;
3012
- }
3013
- if (privateKey.algorithm.name === "Ed25519") {
3006
+ if (rsaKey == null && privateKey.algorithm.name === "RSASSA-PKCS1-v1_5") rsaKey = {
3007
+ keyId,
3008
+ privateKey
3009
+ };
3010
+ }
3011
+ for await (const _ of activity.getProofs({ contextLoader })) {
3012
+ proofCreated = true;
3013
+ break;
3014
+ }
3015
+ if (!proofCreated) {
3016
+ for (const { keyId, privateKey } of keys) if (privateKey.algorithm.name === "Ed25519") {
3014
3017
  activity = await signObject(activity, privateKey, keyId, {
3015
3018
  contextLoader,
3016
3019
  tracerProvider: this.tracerProvider
@@ -3602,6 +3605,7 @@ var ContextImpl = class ContextImpl {
3602
3605
  }
3603
3606
  const owner = this.getActorUri(identifier);
3604
3607
  const result = [];
3608
+ let i = 1;
3605
3609
  for (const keyPair of keyPairs) {
3606
3610
  const newPair = {
3607
3611
  ...keyPair,
@@ -3611,12 +3615,13 @@ var ContextImpl = class ContextImpl {
3611
3615
  publicKey: keyPair.publicKey
3612
3616
  }),
3613
3617
  multikey: new Multikey({
3614
- id: keyPair.keyId,
3618
+ id: new URL(`#multikey-${i}`, owner),
3615
3619
  controller: owner,
3616
3620
  publicKey: keyPair.publicKey
3617
3621
  })
3618
3622
  };
3619
3623
  result.push(newPair);
3624
+ i++;
3620
3625
  }
3621
3626
  return result;
3622
3627
  }
@@ -3754,6 +3759,7 @@ var ContextImpl = class ContextImpl {
3754
3759
  ]);
3755
3760
  let keys;
3756
3761
  let identifier = null;
3762
+ let actorKeyPairs = null;
3757
3763
  if ("identifier" in sender || "username" in sender) {
3758
3764
  if ("identifier" in sender) identifier = sender.identifier;
3759
3765
  else {
@@ -3766,8 +3772,13 @@ var ContextImpl = class ContextImpl {
3766
3772
  }
3767
3773
  }
3768
3774
  span.setAttribute("fedify.actor.identifier", identifier);
3769
- keys = await this.getKeyPairsFromIdentifier(identifier);
3770
- if (keys.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
3775
+ if (this.federation.actorCallbacks?.keyPairsDispatcher == null) throw new Error("No actor key pairs dispatcher registered.");
3776
+ actorKeyPairs = await this.getActorKeyPairs(identifier);
3777
+ if (actorKeyPairs.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
3778
+ keys = actorKeyPairs.map((kp) => ({
3779
+ keyId: kp.keyId,
3780
+ privateKey: kp.privateKey
3781
+ }));
3771
3782
  } else if (Array.isArray(sender)) {
3772
3783
  if (sender.length < 1) throw new Error("The sender's key pairs are empty.");
3773
3784
  keys = sender;
@@ -3803,6 +3814,16 @@ var ContextImpl = class ContextImpl {
3803
3814
  });
3804
3815
  throw new TypeError("The activity to send must have at least one actor property.");
3805
3816
  }
3817
+ if (actorKeyPairs != null) {
3818
+ const contextLoader = this.contextLoader;
3819
+ for (const kp of actorKeyPairs) {
3820
+ if (kp.privateKey.algorithm.name !== "Ed25519" || kp.multikey.id == null) continue;
3821
+ activity = await signObject(activity, kp.privateKey, kp.multikey.id, {
3822
+ contextLoader,
3823
+ tracerProvider: this.tracerProvider
3824
+ });
3825
+ }
3826
+ }
3806
3827
  const inboxes = extractInboxes({
3807
3828
  recipients: expandedRecipients,
3808
3829
  preferSharedInbox: options.preferSharedInbox,
@@ -4136,8 +4157,12 @@ var InboxContextImpl = class InboxContextImpl extends ContextImpl {
4136
4157
  identifier = mapped;
4137
4158
  }
4138
4159
  }
4139
- keys = await this.getKeyPairsFromIdentifier(identifier);
4140
- if (keys.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
4160
+ const actorKeyPairs = await this.getActorKeyPairs(identifier);
4161
+ if (actorKeyPairs.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
4162
+ keys = actorKeyPairs.map((kp) => ({
4163
+ keyId: kp.keyId,
4164
+ privateKey: kp.privateKey
4165
+ }));
4141
4166
  } else if (Array.isArray(forwarder)) {
4142
4167
  if (forwarder.length < 1) throw new Error("The forwarder's key pairs are empty.");
4143
4168
  keys = forwarder;
@@ -2,24 +2,24 @@ import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
4
  import { n as RouterError } from "./router-CrMLXoOr.mjs";
5
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
5
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
6
6
  import { t as formatAcceptSignature } from "./accept-Dd__NiUL.mjs";
7
- import { a as importJwk, o as validateCryptoKey, t as exportJwk } from "./key-Buz4jrLL.mjs";
8
- import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-0f792a_Z.mjs";
9
- import { t as getAuthenticatedDocumentLoader } from "./docloader-DfimMtL4.mjs";
7
+ import { a as importJwk, o as validateCryptoKey, t as exportJwk } from "./key-D0Yn0mtH.mjs";
8
+ import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-CPJdCaSL.mjs";
9
+ import { t as getAuthenticatedDocumentLoader } from "./docloader-C08QBNrF.mjs";
10
10
  import { n as kvCache } from "./kv-cache-B01V7s3h.mjs";
11
- import { a as signJsonLd, i as hasSignature, o as verifyJsonLd, r as detachSignature } from "./ld-Drc5O1ub.mjs";
12
- import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-CLKB6EdW.mjs";
13
- import { n as signObject, r as verifyObject } from "./proof-CZf0bupI.mjs";
11
+ import { a as signJsonLd, i as hasSignature, o as verifyJsonLd, r as detachSignature } from "./ld-DbgG8OrC.mjs";
12
+ import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-rvdHpSM9.mjs";
13
+ import { n as signObject, r as verifyObject } from "./proof-BrTLb1tP.mjs";
14
14
  import { t as getNodeInfo } from "./client-DEpOVgY1.mjs";
15
15
  import { t as nodeInfoToJson } from "./types-DCP0WLdt.mjs";
16
- import { n as routeActivity } from "./inbox-wbJQKd-b.mjs";
17
- import { t as FederationBuilderImpl } from "./builder-DbwMErXg.mjs";
16
+ import { n as routeActivity } from "./inbox-BaETdNND.mjs";
17
+ import { t as FederationBuilderImpl } from "./builder-DVJNyKAX.mjs";
18
18
  import { t as buildCollectionSynchronizationHeader } from "./collection-BD6-SZ6O.mjs";
19
19
  import { t as KvKeyCache } from "./keycache-CCSwkQcY.mjs";
20
20
  import { t as acceptsJsonLd } from "./negotiation-DnsfFF8I.mjs";
21
21
  import { t as createExponentialBackoffPolicy } from "./retry-B_E3V_Dx.mjs";
22
- import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-Bsp6qk0O.mjs";
22
+ import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-CqkObdC8.mjs";
23
23
  import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
24
24
  import { lookupWebFinger } from "@fedify/webfinger";
25
25
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -1890,14 +1890,17 @@ var FederationImpl = class extends FederationBuilderImpl {
1890
1890
  let rsaKey = null;
1891
1891
  for (const { keyId, privateKey } of keys) {
1892
1892
  validateCryptoKey(privateKey, "private");
1893
- if (rsaKey == null && privateKey.algorithm.name === "RSASSA-PKCS1-v1_5") {
1894
- rsaKey = {
1895
- keyId,
1896
- privateKey
1897
- };
1898
- continue;
1899
- }
1900
- if (privateKey.algorithm.name === "Ed25519") {
1893
+ if (rsaKey == null && privateKey.algorithm.name === "RSASSA-PKCS1-v1_5") rsaKey = {
1894
+ keyId,
1895
+ privateKey
1896
+ };
1897
+ }
1898
+ for await (const _ of activity.getProofs({ contextLoader })) {
1899
+ proofCreated = true;
1900
+ break;
1901
+ }
1902
+ if (!proofCreated) {
1903
+ for (const { keyId, privateKey } of keys) if (privateKey.algorithm.name === "Ed25519") {
1901
1904
  activity = await signObject(activity, privateKey, keyId, {
1902
1905
  contextLoader,
1903
1906
  tracerProvider: this.tracerProvider
@@ -2489,6 +2492,7 @@ var ContextImpl = class ContextImpl {
2489
2492
  }
2490
2493
  const owner = this.getActorUri(identifier);
2491
2494
  const result = [];
2495
+ let i = 1;
2492
2496
  for (const keyPair of keyPairs) {
2493
2497
  const newPair = {
2494
2498
  ...keyPair,
@@ -2498,12 +2502,13 @@ var ContextImpl = class ContextImpl {
2498
2502
  publicKey: keyPair.publicKey
2499
2503
  }),
2500
2504
  multikey: new Multikey({
2501
- id: keyPair.keyId,
2505
+ id: new URL(`#multikey-${i}`, owner),
2502
2506
  controller: owner,
2503
2507
  publicKey: keyPair.publicKey
2504
2508
  })
2505
2509
  };
2506
2510
  result.push(newPair);
2511
+ i++;
2507
2512
  }
2508
2513
  return result;
2509
2514
  }
@@ -2641,6 +2646,7 @@ var ContextImpl = class ContextImpl {
2641
2646
  ]);
2642
2647
  let keys;
2643
2648
  let identifier = null;
2649
+ let actorKeyPairs = null;
2644
2650
  if ("identifier" in sender || "username" in sender) {
2645
2651
  if ("identifier" in sender) identifier = sender.identifier;
2646
2652
  else {
@@ -2653,8 +2659,13 @@ var ContextImpl = class ContextImpl {
2653
2659
  }
2654
2660
  }
2655
2661
  span.setAttribute("fedify.actor.identifier", identifier);
2656
- keys = await this.getKeyPairsFromIdentifier(identifier);
2657
- if (keys.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
2662
+ if (this.federation.actorCallbacks?.keyPairsDispatcher == null) throw new Error("No actor key pairs dispatcher registered.");
2663
+ actorKeyPairs = await this.getActorKeyPairs(identifier);
2664
+ if (actorKeyPairs.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
2665
+ keys = actorKeyPairs.map((kp) => ({
2666
+ keyId: kp.keyId,
2667
+ privateKey: kp.privateKey
2668
+ }));
2658
2669
  } else if (Array.isArray(sender)) {
2659
2670
  if (sender.length < 1) throw new Error("The sender's key pairs are empty.");
2660
2671
  keys = sender;
@@ -2690,6 +2701,16 @@ var ContextImpl = class ContextImpl {
2690
2701
  });
2691
2702
  throw new TypeError("The activity to send must have at least one actor property.");
2692
2703
  }
2704
+ if (actorKeyPairs != null) {
2705
+ const contextLoader = this.contextLoader;
2706
+ for (const kp of actorKeyPairs) {
2707
+ if (kp.privateKey.algorithm.name !== "Ed25519" || kp.multikey.id == null) continue;
2708
+ activity = await signObject(activity, kp.privateKey, kp.multikey.id, {
2709
+ contextLoader,
2710
+ tracerProvider: this.tracerProvider
2711
+ });
2712
+ }
2713
+ }
2693
2714
  const inboxes = extractInboxes({
2694
2715
  recipients: expandedRecipients,
2695
2716
  preferSharedInbox: options.preferSharedInbox,
@@ -3023,8 +3044,12 @@ var InboxContextImpl = class InboxContextImpl extends ContextImpl {
3023
3044
  identifier = mapped;
3024
3045
  }
3025
3046
  }
3026
- keys = await this.getKeyPairsFromIdentifier(identifier);
3027
- if (keys.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
3047
+ const actorKeyPairs = await this.getActorKeyPairs(identifier);
3048
+ if (actorKeyPairs.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
3049
+ keys = actorKeyPairs.map((kp) => ({
3050
+ keyId: kp.keyId,
3051
+ privateKey: kp.privateKey
3052
+ }));
3028
3053
  } else if (Array.isArray(forwarder)) {
3029
3054
  if (forwarder.length < 1) throw new Error("The forwarder's key pairs are empty.");
3030
3055
  keys = forwarder;
@@ -2,10 +2,10 @@ const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  require("./chunk-DDcVe30Y.cjs");
4
4
  const require_transformers = require("./transformers-NeAONrAq.cjs");
5
- const require_http = require("./http-BewLiYTT.cjs");
6
- const require_proof = require("./proof-CNU71NVu.cjs");
5
+ const require_http = require("./http-YvNVio1S.cjs");
6
+ const require_proof = require("./proof-4G31YUYH.cjs");
7
7
  const require_types = require("./types-KC4QAoxe.cjs");
8
- const require_kv_cache = require("./kv-cache-E_ri3gGZ.cjs");
8
+ const require_kv_cache = require("./kv-cache-Pk6XERKs.cjs");
9
9
  let _logtape_logtape = require("@logtape/logtape");
10
10
  let _fedify_vocab = require("@fedify/vocab");
11
11
  let _opentelemetry_api = require("@opentelemetry/api");
@@ -331,7 +331,7 @@ var FederationBuilderImpl = class {
331
331
  this.collectionTypeIds = {};
332
332
  }
333
333
  async build(options) {
334
- const { FederationImpl } = await Promise.resolve().then(() => require("./middleware-BhdA_6gU.cjs"));
334
+ const { FederationImpl } = await Promise.resolve().then(() => require("./middleware-CRwpNEwP.cjs"));
335
335
  const f = new FederationImpl(options);
336
336
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
337
337
  f.router = this.router.clone();
@@ -2996,14 +2996,17 @@ var FederationImpl = class extends FederationBuilderImpl {
2996
2996
  let rsaKey = null;
2997
2997
  for (const { keyId, privateKey } of keys) {
2998
2998
  require_http.validateCryptoKey(privateKey, "private");
2999
- if (rsaKey == null && privateKey.algorithm.name === "RSASSA-PKCS1-v1_5") {
3000
- rsaKey = {
3001
- keyId,
3002
- privateKey
3003
- };
3004
- continue;
3005
- }
3006
- if (privateKey.algorithm.name === "Ed25519") {
2999
+ if (rsaKey == null && privateKey.algorithm.name === "RSASSA-PKCS1-v1_5") rsaKey = {
3000
+ keyId,
3001
+ privateKey
3002
+ };
3003
+ }
3004
+ for await (const _ of activity.getProofs({ contextLoader })) {
3005
+ proofCreated = true;
3006
+ break;
3007
+ }
3008
+ if (!proofCreated) {
3009
+ for (const { keyId, privateKey } of keys) if (privateKey.algorithm.name === "Ed25519") {
3007
3010
  activity = await require_proof.signObject(activity, privateKey, keyId, {
3008
3011
  contextLoader,
3009
3012
  tracerProvider: this.tracerProvider
@@ -3595,6 +3598,7 @@ var ContextImpl = class ContextImpl {
3595
3598
  }
3596
3599
  const owner = this.getActorUri(identifier);
3597
3600
  const result = [];
3601
+ let i = 1;
3598
3602
  for (const keyPair of keyPairs) {
3599
3603
  const newPair = {
3600
3604
  ...keyPair,
@@ -3604,12 +3608,13 @@ var ContextImpl = class ContextImpl {
3604
3608
  publicKey: keyPair.publicKey
3605
3609
  }),
3606
3610
  multikey: new _fedify_vocab.Multikey({
3607
- id: keyPair.keyId,
3611
+ id: new URL(`#multikey-${i}`, owner),
3608
3612
  controller: owner,
3609
3613
  publicKey: keyPair.publicKey
3610
3614
  })
3611
3615
  };
3612
3616
  result.push(newPair);
3617
+ i++;
3613
3618
  }
3614
3619
  return result;
3615
3620
  }
@@ -3747,6 +3752,7 @@ var ContextImpl = class ContextImpl {
3747
3752
  ]);
3748
3753
  let keys;
3749
3754
  let identifier = null;
3755
+ let actorKeyPairs = null;
3750
3756
  if ("identifier" in sender || "username" in sender) {
3751
3757
  if ("identifier" in sender) identifier = sender.identifier;
3752
3758
  else {
@@ -3759,8 +3765,13 @@ var ContextImpl = class ContextImpl {
3759
3765
  }
3760
3766
  }
3761
3767
  span.setAttribute("fedify.actor.identifier", identifier);
3762
- keys = await this.getKeyPairsFromIdentifier(identifier);
3763
- if (keys.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
3768
+ if (this.federation.actorCallbacks?.keyPairsDispatcher == null) throw new Error("No actor key pairs dispatcher registered.");
3769
+ actorKeyPairs = await this.getActorKeyPairs(identifier);
3770
+ if (actorKeyPairs.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
3771
+ keys = actorKeyPairs.map((kp) => ({
3772
+ keyId: kp.keyId,
3773
+ privateKey: kp.privateKey
3774
+ }));
3764
3775
  } else if (Array.isArray(sender)) {
3765
3776
  if (sender.length < 1) throw new Error("The sender's key pairs are empty.");
3766
3777
  keys = sender;
@@ -3796,6 +3807,16 @@ var ContextImpl = class ContextImpl {
3796
3807
  });
3797
3808
  throw new TypeError("The activity to send must have at least one actor property.");
3798
3809
  }
3810
+ if (actorKeyPairs != null) {
3811
+ const contextLoader = this.contextLoader;
3812
+ for (const kp of actorKeyPairs) {
3813
+ if (kp.privateKey.algorithm.name !== "Ed25519" || kp.multikey.id == null) continue;
3814
+ activity = await require_proof.signObject(activity, kp.privateKey, kp.multikey.id, {
3815
+ contextLoader,
3816
+ tracerProvider: this.tracerProvider
3817
+ });
3818
+ }
3819
+ }
3799
3820
  const inboxes = extractInboxes({
3800
3821
  recipients: expandedRecipients,
3801
3822
  preferSharedInbox: options.preferSharedInbox,
@@ -4129,8 +4150,12 @@ var InboxContextImpl = class InboxContextImpl extends ContextImpl {
4129
4150
  identifier = mapped;
4130
4151
  }
4131
4152
  }
4132
- keys = await this.getKeyPairsFromIdentifier(identifier);
4133
- if (keys.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
4153
+ const actorKeyPairs = await this.getActorKeyPairs(identifier);
4154
+ if (actorKeyPairs.length < 1) throw new Error(`No key pair found for actor ${JSON.stringify(identifier)}.`);
4155
+ keys = actorKeyPairs.map((kp) => ({
4156
+ keyId: kp.keyId,
4157
+ privateKey: kp.privateKey
4158
+ }));
4134
4159
  } else if (Array.isArray(forwarder)) {
4135
4160
  if (forwarder.length < 1) throw new Error("The forwarder's key pairs are empty.");
4136
4161
  keys = forwarder;
@@ -1,5 +1,5 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as FederationImpl } from "./middleware-DcwyRzc9.mjs";
4
+ import { n as FederationImpl } from "./middleware-ItHrRua7.mjs";
5
5
  export { FederationImpl };
@@ -1,4 +1,4 @@
1
- import { Q as ActorHandleMapper, X as ActorAliasMapper, Z as ActorDispatcher, _t as WebFingerLinksDispatcher, s as RequestContext } from "./context-BhZVy7RB.cjs";
1
+ import { Q as ActorHandleMapper, X as ActorAliasMapper, Z as ActorDispatcher, _t as WebFingerLinksDispatcher, s as RequestContext } from "./context-LmrZPwti.cjs";
2
2
  import { Span, Tracer } from "@opentelemetry/api";
3
3
 
4
4
  //#region src/federation/webfinger.d.ts
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { Q as ActorHandleMapper, X as ActorAliasMapper, Z as ActorDispatcher, _t as WebFingerLinksDispatcher, s as RequestContext } from "./context-BOiMZBu5.js";
3
+ import { Q as ActorHandleMapper, X as ActorAliasMapper, Z as ActorDispatcher, _t as WebFingerLinksDispatcher, s as RequestContext } from "./context-C0fssarc.js";
4
4
  import { Span, Tracer } from "@opentelemetry/api";
5
5
 
6
6
  //#region src/federation/webfinger.d.ts
package/dist/mod.cjs CHANGED
@@ -4,11 +4,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  require("./chunk-DDcVe30Y.cjs");
5
5
  const require_transformers = require("./transformers-NeAONrAq.cjs");
6
6
  require("./compat/mod.cjs");
7
- const require_http = require("./http-BewLiYTT.cjs");
8
- const require_middleware = require("./middleware-5TGjniPd.cjs");
9
- const require_proof = require("./proof-CNU71NVu.cjs");
7
+ const require_http = require("./http-YvNVio1S.cjs");
8
+ const require_middleware = require("./middleware-eyhwv4v9.cjs");
9
+ const require_proof = require("./proof-4G31YUYH.cjs");
10
10
  const require_types = require("./types-KC4QAoxe.cjs");
11
- const require_kv_cache = require("./kv-cache-E_ri3gGZ.cjs");
11
+ const require_kv_cache = require("./kv-cache-Pk6XERKs.cjs");
12
12
  const require_federation_mod = require("./federation/mod.cjs");
13
13
  require("./nodeinfo/mod.cjs");
14
14
  require("./runtime/mod.cjs");
package/dist/mod.d.cts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { a as InboundService, c as OutboundService, d as Software, f as Usage, i as parseNodeInfo, l as Protocol, n as ParseNodeInfoOptions, o as JsonValue, p as nodeInfoToJson, r as getNodeInfo, s as NodeInfo, t as GetNodeInfoOptions, u as Services } from "./client-z-8dc-e1.cjs";
2
2
  import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "./http-CrGuipxe.cjs";
3
3
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-CptqhsOy.cjs";
4
- import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, Ct as ActivityTransformer, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "./context-BhZVy7RB.cjs";
4
+ import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, Ct as ActivityTransformer, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "./context-LmrZPwti.cjs";
5
5
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-CbLNp3zQ.cjs";
6
6
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.cjs";
7
- import { n as handleWebFinger, t as WebFingerHandlerParameters } from "./mod-Bp_CzKd4.cjs";
7
+ import { n as handleWebFinger, t as WebFingerHandlerParameters } from "./mod-Cgpc49fA.cjs";
8
8
  import { _ as verifyJsonLd, a as createProof, c as verifyProof, d as VerifyJsonLdOptions, f as VerifySignatureOptions, g as signJsonLd, h as detachSignature, i as VerifyProofOptions, l as CreateSignatureOptions, m as createSignature, n as SignObjectOptions, o as signObject, p as attachSignature, r as VerifyObjectOptions, s as verifyObject, t as CreateProofOptions, u as SignJsonLdOptions, v as verifySignature } from "./mod-DoJBjjnO.cjs";
9
9
  import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-CMEbIaNh.cjs";
10
10
  export * from "@fedify/vocab-runtime";
package/dist/mod.d.ts CHANGED
@@ -3,10 +3,10 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import { a as InboundService, c as OutboundService, d as Software, f as Usage, i as parseNodeInfo, l as Protocol, n as ParseNodeInfoOptions, o as JsonValue, p as nodeInfoToJson, r as getNodeInfo, s as NodeInfo, t as GetNodeInfoOptions, u as Services } from "./client-AtlibPOU.js";
4
4
  import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "./http-aQzN9Ayi.js";
5
5
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-74ARJ5TL.js";
6
- import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, Ct as ActivityTransformer, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "./context-BOiMZBu5.js";
6
+ import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, Ct as ActivityTransformer, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "./context-C0fssarc.js";
7
7
  import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-GFYnFoOl.js";
8
8
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.js";
9
- import { n as handleWebFinger, t as WebFingerHandlerParameters } from "./mod-DKOAow7a.js";
9
+ import { n as handleWebFinger, t as WebFingerHandlerParameters } from "./mod-CnwZoDzx.js";
10
10
  import { _ as verifyJsonLd, a as createProof, c as verifyProof, d as VerifyJsonLdOptions, f as VerifySignatureOptions, g as signJsonLd, h as detachSignature, i as VerifyProofOptions, l as CreateSignatureOptions, m as createSignature, n as SignObjectOptions, o as signObject, p as attachSignature, r as VerifyObjectOptions, s as verifyObject, t as CreateProofOptions, u as SignJsonLdOptions, v as verifySignature } from "./mod-DvxszxXC.js";
11
11
  import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-CLgIXe9w.js";
12
12
  export * from "@fedify/vocab-runtime";
package/dist/mod.js CHANGED
@@ -3,11 +3,11 @@ import "urlpattern-polyfill";
3
3
  import "./chunk-nlSIicah.js";
4
4
  import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-ve6e2xcg.js";
5
5
  import "./compat/mod.js";
6
- import { a as verifyRequestDetailed, c as fetchKeyDetailed, f as formatAcceptSignature, h as validateAcceptSignature, i as verifyRequest, l as generateCryptoKeyPair, m as parseAcceptSignature, o as exportJwk, p as fulfillAcceptSignature, r as signRequest, s as fetchKey, u as importJwk } from "./http-oG4y8q4n.js";
7
- import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "./middleware-CqaVY7Db.js";
8
- import { a as doesActorOwnKey, c as createSignature, d as signJsonLd, f as verifyJsonLd, i as verifyProof, l as detachSignature, n as signObject, o as getKeyOwner, p as verifySignature, r as verifyObject, s as attachSignature, t as createProof } from "./proof-Cr-0THxd.js";
6
+ import { a as verifyRequestDetailed, c as fetchKeyDetailed, f as formatAcceptSignature, h as validateAcceptSignature, i as verifyRequest, l as generateCryptoKeyPair, m as parseAcceptSignature, o as exportJwk, p as fulfillAcceptSignature, r as signRequest, s as fetchKey, u as importJwk } from "./http-D3tag6Yq.js";
7
+ import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "./middleware-D5u0ehbB.js";
8
+ import { a as doesActorOwnKey, c as createSignature, d as signJsonLd, f as verifyJsonLd, i as verifyProof, l as detachSignature, n as signObject, o as getKeyOwner, p as verifySignature, r as verifyObject, s as attachSignature, t as createProof } from "./proof-zRahbXVh.js";
9
9
  import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-hvL8ElAs.js";
10
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-BnfUjj42.js";
10
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-CmiF_bSD.js";
11
11
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation/mod.js";
12
12
  import "./nodeinfo/mod.js";
13
13
  import "./runtime/mod.js";
@@ -5,7 +5,7 @@ import { n as createRequestContext } from "../context-Juj6bdHC.mjs";
5
5
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
6
6
  import "../std__assert-Duiq_YC9.mjs";
7
7
  import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
8
- import { a as createFederation, h as handleNodeInfoJrd, m as handleNodeInfo } from "../middleware-DcwyRzc9.mjs";
8
+ import { a as createFederation, h as handleNodeInfoJrd, m as handleNodeInfo } from "../middleware-ItHrRua7.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  //#region src/nodeinfo/handler.test.ts
11
11
  test("handleNodeInfo()", async () => {
@@ -1,8 +1,8 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
5
- import "./key-Buz4jrLL.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
+ import "./key-D0Yn0mtH.mjs";
6
6
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
7
7
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
8
8
  import { getDocumentLoader } from "@fedify/vocab-runtime";
@@ -1,7 +1,7 @@
1
1
  const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  const require_chunk = require("./chunk-DDcVe30Y.cjs");
4
- const require_http = require("./http-BewLiYTT.cjs");
4
+ const require_http = require("./http-YvNVio1S.cjs");
5
5
  let _logtape_logtape = require("@logtape/logtape");
6
6
  let _fedify_vocab = require("@fedify/vocab");
7
7
  let _opentelemetry_api = require("@opentelemetry/api");
@@ -1,8 +1,8 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
5
- import { n as fetchKey, o as validateCryptoKey } from "./key-Buz4jrLL.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
+ import { n as fetchKey, o as validateCryptoKey } from "./key-D0Yn0mtH.mjs";
6
6
  import { Activity, DataIntegrityProof, Multikey, getTypeId } from "@fedify/vocab";
7
7
  import { SpanStatusCode, trace } from "@opentelemetry/api";
8
8
  import { getLogger } from "@logtape/logtape";
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
- import { _ as version, d as validateCryptoKey, g as name, s as fetchKey } from "./http-oG4y8q4n.js";
3
+ import { _ as version, d as validateCryptoKey, g as name, s as fetchKey } from "./http-D3tag6Yq.js";
4
4
  import { getLogger } from "@logtape/logtape";
5
5
  import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "@fedify/vocab";
6
6
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,8 +1,8 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno-hMabhCww.mjs";
5
- import { n as doubleKnock } from "./http-0f792a_Z.mjs";
4
+ import { n as version, t as name } from "./deno-DhywNCFr.mjs";
5
+ import { n as doubleKnock } from "./http-CPJdCaSL.mjs";
6
6
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  //#region src/federation/send.ts
@@ -7,8 +7,8 @@ import { a as assertExists, t as assertStringIncludes } from "../std__assert-Dui
7
7
  import { n as assertFalse, t as assertRejects } from "../assert_rejects-B-qJtC9Z.mjs";
8
8
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
9
9
  import { t as assert } from "../assert-ddO5KLpe.mjs";
10
- import { t as exportJwk } from "../key-Buz4jrLL.mjs";
11
- import { a as parseRfc9421Signature, c as timingSafeEqual, i as formatRfc9421SignatureParameters, l as verifyRequest, n as doubleKnock, o as parseRfc9421SignatureInput, r as formatRfc9421Signature, s as signRequest, t as createRfc9421SignatureBase, u as verifyRequestDetailed } from "../http-0f792a_Z.mjs";
10
+ import { t as exportJwk } from "../key-D0Yn0mtH.mjs";
11
+ import { a as parseRfc9421Signature, c as timingSafeEqual, i as formatRfc9421SignatureParameters, l as verifyRequest, n as doubleKnock, o as parseRfc9421SignatureInput, r as formatRfc9421Signature, s as signRequest, t as createRfc9421SignatureBase, u as verifyRequestDetailed } from "../http-CPJdCaSL.mjs";
12
12
  import { i as rsaPrivateKey2, l as rsaPublicKey5, o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-BAK-tUlf.mjs";
13
13
  import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
14
14
  import { FetchError, exportSpki } from "@fedify/vocab-runtime";
@@ -5,7 +5,7 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
5
5
  import "../std__assert-Duiq_YC9.mjs";
6
6
  import { t as assertRejects } from "../assert_rejects-B-qJtC9Z.mjs";
7
7
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
8
- import { a as importJwk, i as generateCryptoKeyPair, n as fetchKey, o as validateCryptoKey, r as fetchKeyDetailed, t as exportJwk } from "../key-Buz4jrLL.mjs";
8
+ import { a as importJwk, i as generateCryptoKeyPair, n as fetchKey, o as validateCryptoKey, r as fetchKeyDetailed, t as exportJwk } from "../key-D0Yn0mtH.mjs";
9
9
  import { c as rsaPublicKey3, i as rsaPrivateKey2, o as rsaPublicKey1, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
10
10
  import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
11
11
  import { CryptographicKey, Multikey } from "@fedify/vocab";
@@ -5,9 +5,9 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
5
5
  import { n as assertFalse, t as assertRejects } from "../assert_rejects-B-qJtC9Z.mjs";
6
6
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
7
7
  import { t as assert } from "../assert-ddO5KLpe.mjs";
8
- import { i as generateCryptoKeyPair } from "../key-Buz4jrLL.mjs";
8
+ import { i as generateCryptoKeyPair } from "../key-D0Yn0mtH.mjs";
9
9
  import { a as rsaPrivateKey3, c as rsaPublicKey3, i as rsaPrivateKey2, n as ed25519PrivateKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
10
- import { a as signJsonLd, n as createSignature, o as verifyJsonLd, r as detachSignature, s as verifySignature, t as attachSignature } from "../ld-Drc5O1ub.mjs";
10
+ import { a as signJsonLd, n as createSignature, o as verifyJsonLd, r as detachSignature, s as verifySignature, t as attachSignature } from "../ld-DbgG8OrC.mjs";
11
11
  import { mockDocumentLoader, test } from "@fedify/fixture";
12
12
  import { CryptographicKey } from "@fedify/vocab";
13
13
  import { encodeBase64 } from "byte-encodings/base64";
package/dist/sig/mod.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const require_http = require("../http-BewLiYTT.cjs");
5
- const require_proof = require("../proof-CNU71NVu.cjs");
4
+ const require_http = require("../http-YvNVio1S.cjs");
5
+ const require_proof = require("../proof-4G31YUYH.cjs");
6
6
  exports.attachSignature = require_proof.attachSignature;
7
7
  exports.createProof = require_proof.createProof;
8
8
  exports.createSignature = require_proof.createSignature;
package/dist/sig/mod.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
- import { a as verifyRequestDetailed, c as fetchKeyDetailed, f as formatAcceptSignature, h as validateAcceptSignature, i as verifyRequest, l as generateCryptoKeyPair, m as parseAcceptSignature, o as exportJwk, p as fulfillAcceptSignature, r as signRequest, s as fetchKey, u as importJwk } from "../http-oG4y8q4n.js";
4
- import { a as doesActorOwnKey, c as createSignature, d as signJsonLd, f as verifyJsonLd, i as verifyProof, l as detachSignature, n as signObject, o as getKeyOwner, p as verifySignature, r as verifyObject, s as attachSignature, t as createProof } from "../proof-Cr-0THxd.js";
3
+ import { a as verifyRequestDetailed, c as fetchKeyDetailed, f as formatAcceptSignature, h as validateAcceptSignature, i as verifyRequest, l as generateCryptoKeyPair, m as parseAcceptSignature, o as exportJwk, p as fulfillAcceptSignature, r as signRequest, s as fetchKey, u as importJwk } from "../http-D3tag6Yq.js";
4
+ import { a as doesActorOwnKey, c as createSignature, d as signJsonLd, f as verifyJsonLd, i as verifyProof, l as detachSignature, n as signObject, o as getKeyOwner, p as verifySignature, r as verifyObject, s as attachSignature, t as createProof } from "../proof-zRahbXVh.js";
5
5
  export { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };
@@ -6,7 +6,7 @@ import "../std__assert-Duiq_YC9.mjs";
6
6
  import { n as assertFalse } from "../assert_rejects-B-qJtC9Z.mjs";
7
7
  import { t as assert } from "../assert-ddO5KLpe.mjs";
8
8
  import { o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-BAK-tUlf.mjs";
9
- import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-CLKB6EdW.mjs";
9
+ import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-rvdHpSM9.mjs";
10
10
  import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
11
11
  import { Create, CryptographicKey, lookupObject } from "@fedify/vocab";
12
12
  //#region src/sig/owner.test.ts
@@ -6,7 +6,7 @@ import "../std__assert-Duiq_YC9.mjs";
6
6
  import { t as assertRejects } from "../assert_rejects-B-qJtC9Z.mjs";
7
7
  import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
8
8
  import { i as rsaPrivateKey2, n as ed25519PrivateKey, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
9
- import { i as verifyProof, n as signObject, r as verifyObject, t as createProof } from "../proof-CZf0bupI.mjs";
9
+ import { i as verifyProof, n as signObject, r as verifyObject, t as createProof } from "../proof-BrTLb1tP.mjs";
10
10
  import { mockDocumentLoader, test } from "@fedify/fixture";
11
11
  import { Create, DataIntegrityProof, Multikey, Note, Place } from "@fedify/vocab";
12
12
  import { decodeMultibase, importMultibaseKey } from "@fedify/vocab-runtime";
@@ -2121,7 +2121,10 @@ interface GetSignedKeyOptions {
2121
2121
  */
2122
2122
  interface ActorKeyPair extends CryptoKeyPair {
2123
2123
  /**
2124
- * The URI of the public key, which is used for verifying HTTP Signatures.
2124
+ * The URI of the public key for {@link CryptographicKey}, which is used for
2125
+ * verifying HTTP Signatures and Linked Data Signatures. Note that this is
2126
+ * the ID of the {@link cryptographicKey}, not of the {@link multikey};
2127
+ * the {@link Multikey} instance has a distinct ID of its own.
2125
2128
  */
2126
2129
  readonly keyId: URL;
2127
2130
  /**
@@ -5,9 +5,9 @@ import { t as esm_default } from "../esm-DVILvP5e.mjs";
5
5
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
6
6
  import "../std__assert-Duiq_YC9.mjs";
7
7
  import { t as assertRejects } from "../assert_rejects-B-qJtC9Z.mjs";
8
- import { l as verifyRequest } from "../http-0f792a_Z.mjs";
8
+ import { l as verifyRequest } from "../http-CPJdCaSL.mjs";
9
9
  import { i as rsaPrivateKey2 } from "../keys-BAK-tUlf.mjs";
10
- import { t as getAuthenticatedDocumentLoader } from "../docloader-DfimMtL4.mjs";
10
+ import { t as getAuthenticatedDocumentLoader } from "../docloader-C08QBNrF.mjs";
11
11
  import { mockDocumentLoader, test } from "@fedify/fixture";
12
12
  import { UrlError } from "@fedify/vocab-runtime";
13
13
  //#region src/utils/docloader.test.ts
@@ -1,6 +1,6 @@
1
1
  const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const require_kv_cache = require("../kv-cache-E_ri3gGZ.cjs");
4
+ const require_kv_cache = require("../kv-cache-Pk6XERKs.cjs");
5
5
  exports.getAuthenticatedDocumentLoader = require_kv_cache.getAuthenticatedDocumentLoader;
6
6
  exports.kvCache = require_kv_cache.kvCache;
package/dist/utils/mod.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../kv-cache-BnfUjj42.js";
3
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../kv-cache-CmiF_bSD.js";
4
4
  export { getAuthenticatedDocumentLoader, kvCache };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/fedify",
3
- "version": "2.2.0-dev.671+61141c60",
3
+ "version": "2.2.0-dev.677+41046619",
4
4
  "description": "An ActivityPub server framework",
5
5
  "keywords": [
6
6
  "ActivityPub",
@@ -144,9 +144,9 @@
144
144
  "uri-template-router": "^1.0.0",
145
145
  "url-template": "^3.1.1",
146
146
  "urlpattern-polyfill": "^10.1.0",
147
- "@fedify/vocab": "2.2.0-dev.671+61141c60",
148
- "@fedify/webfinger": "2.2.0-dev.671+61141c60",
149
- "@fedify/vocab-runtime": "2.2.0-dev.671+61141c60"
147
+ "@fedify/webfinger": "2.2.0-dev.677+41046619",
148
+ "@fedify/vocab": "2.2.0-dev.677+41046619",
149
+ "@fedify/vocab-runtime": "2.2.0-dev.677+41046619"
150
150
  },
151
151
  "devDependencies": {
152
152
  "@std/assert": "npm:@jsr/std__assert@^0.226.0",
@@ -159,7 +159,7 @@
159
159
  "typescript": "^5.9.2",
160
160
  "wrangler": "^4.17.0",
161
161
  "@fedify/fixture": "2.0.0",
162
- "@fedify/vocab-tools": "^2.2.0-dev.671+61141c60"
162
+ "@fedify/vocab-tools": "^2.2.0-dev.677+41046619"
163
163
  },
164
164
  "scripts": {
165
165
  "build:self": "tsdown",