@fedify/fedify 2.3.9 → 2.3.10

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 (66) hide show
  1. package/dist/{builder-Dm72xfCy.mjs → builder-Bal9bfuM.mjs} +10 -2
  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-CAKnQy1x.d.ts → context-BWbdE_MZ.d.ts} +1 -1
  6. package/dist/{context-CSIggG9_.d.cts → context-MOrCC7yl.d.cts} +1 -1
  7. package/dist/{deno-Deo5dZf_.mjs → deno-DUgFsCmM.mjs} +1 -1
  8. package/dist/{docloader-BAVVKXPl.mjs → docloader-w72ipM49.mjs} +2 -2
  9. package/dist/federation/builder.test.mjs +37 -1
  10. package/dist/federation/handler.test.mjs +5 -5
  11. package/dist/federation/idempotency.test.mjs +2 -2
  12. package/dist/federation/metrics.test.mjs +1 -1
  13. package/dist/federation/middleware.test.mjs +122 -7
  14. package/dist/federation/mod.cjs +1 -1
  15. package/dist/federation/mod.d.cts +3 -3
  16. package/dist/federation/mod.d.ts +3 -3
  17. package/dist/federation/mod.js +1 -1
  18. package/dist/federation/send.test.mjs +3 -3
  19. package/dist/federation/temporal.test.mjs +1 -1
  20. package/dist/federation/webfinger.test.mjs +1 -1
  21. package/dist/{http-BqObaL32.mjs → http-BNDHRNJP.mjs} +3 -3
  22. package/dist/{http-DuWPL6ic.js → http-BY8PpQzP.js} +1 -1
  23. package/dist/{http-CjvY7wBM.cjs → http-CTYio50W.cjs} +1 -1
  24. package/dist/{key-D1TEfV4d.mjs → key-BbuFo4CW.mjs} +2 -2
  25. package/dist/{kv-D6hNiMTK.d.ts → kv-CZKl1IUS.d.cts} +3 -2
  26. package/dist/{kv-gJ8LYbxX.d.cts → kv-CxaI4eGo.d.ts} +3 -2
  27. package/dist/{kv-cache-DGnB9ZX_.mjs → kv-cache-CNZOaZYq.mjs} +1 -1
  28. package/dist/{kv-cache-C_4ufNbl.cjs → kv-cache-CrcqGkT-.cjs} +1 -1
  29. package/dist/{kv-cache-w0De7ODp.js → kv-cache-DNnjnc9t.js} +1 -1
  30. package/dist/{ld-DnGqAKWi.mjs → ld-BYV2Luge.mjs} +3 -3
  31. package/dist/{metrics-jUJmtE2u.mjs → metrics-QrVsKSG9.mjs} +1 -1
  32. package/dist/{middleware-C70IPcBw.mjs → middleware-54KSGAQA.mjs} +1 -1
  33. package/dist/{middleware-A-SjayRO.js → middleware-B4FNnN3W.js} +20 -9
  34. package/dist/{middleware-XCr66VRe.mjs → middleware-Bj9s3J_0.mjs} +21 -18
  35. package/dist/{middleware-BW5W0CTK.cjs → middleware-Dv-L7Plm.cjs} +20 -9
  36. package/dist/{mod-PVR75MeU.d.cts → mod-B6PwkUMU.d.cts} +1 -1
  37. package/dist/{mod-CQ8EjnN5.d.ts → mod-Br8yJNcE.d.ts} +1 -1
  38. package/dist/{mod-EbRFjVlY.d.cts → mod-Co1M3Ux0.d.cts} +1 -1
  39. package/dist/{mod-CFuyfw3c.d.ts → mod-LmD03uRA.d.ts} +1 -1
  40. package/dist/mod.cjs +4 -4
  41. package/dist/mod.d.cts +4 -4
  42. package/dist/mod.d.ts +4 -4
  43. package/dist/mod.js +4 -4
  44. package/dist/nodeinfo/handler.test.mjs +1 -1
  45. package/dist/otel/mod.d.cts +1 -1
  46. package/dist/otel/mod.d.ts +1 -1
  47. package/dist/{owner-C4iDnghj.mjs → owner-BsBzJADO.mjs} +2 -2
  48. package/dist/{proof-DqO9zYcc.js → proof-BxS2Xa8B.js} +1 -1
  49. package/dist/{proof-DvVA2Bmk.cjs → proof-CGKQFT2M.cjs} +1 -1
  50. package/dist/{proof-CpU6r25U.mjs → proof-cXVkPBIU.mjs} +3 -3
  51. package/dist/{send-YVatAj-a.mjs → send-omt23uTA.mjs} +3 -3
  52. package/dist/sig/http.test.mjs +2 -2
  53. package/dist/sig/key.test.mjs +1 -1
  54. package/dist/sig/ld.test.mjs +2 -2
  55. package/dist/sig/mod.cjs +2 -2
  56. package/dist/sig/mod.js +2 -2
  57. package/dist/sig/owner.test.mjs +1 -1
  58. package/dist/sig/proof.test.mjs +1 -1
  59. package/dist/{temporal-BJ-5wxWU.mjs → temporal-ZUAQe754.mjs} +1 -1
  60. package/dist/utils/docloader.test.mjs +2 -2
  61. package/dist/utils/kv-cache.test.mjs +1 -1
  62. package/dist/utils/mod.cjs +1 -1
  63. package/dist/utils/mod.d.cts +1 -1
  64. package/dist/utils/mod.d.ts +1 -1
  65. package/dist/utils/mod.js +1 -1
  66. package/package.json +7 -7
@@ -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-Deo5dZf_.mjs";
4
+ import { n as version, t as name } from "./deno-DUgFsCmM.mjs";
5
5
  import { metrics } from "@opentelemetry/api";
6
6
  import { FetchError } from "@fedify/vocab-runtime";
7
7
  //#region src/federation/metrics.ts
@@ -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-XCr66VRe.mjs";
4
+ import { n as FederationImpl } from "./middleware-Bj9s3J_0.mjs";
5
5
  export { FederationImpl };
@@ -2,10 +2,10 @@ import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { t as __exportAll } from "./chunk-CRNNMoPX.js";
4
4
  import { r as getDefaultActivityTransformers } from "./transformers-BGMIq1cs.js";
5
- import { A as recordWebFingerHandle, C as recordCollectionRequest, D as recordInboxActivity, E as recordFanoutRecipients, I as name, L as version, M as formatAcceptSignature, O as recordOutboxActivity, S as recordCollectionPageItems, _ as instrumentDocumentLoader, a as verifyRequestDetailed, b as recordCircuitBreakerStateChange, d as importJwk, f as validateCryptoKey, g as getRemoteHost, h as getFederationMetrics, i as verifyRequest, j as registerQueueDepthGauge, k as recordOutboxEnqueue, m as getDurationMs, n as parseRfc9421SignatureInput, o as exportJwk, t as doubleKnock, v as isAbortError, w as recordCollectionTotalItems, x as recordCollectionDispatchDuration } from "./http-DuWPL6ic.js";
5
+ import { A as recordWebFingerHandle, C as recordCollectionRequest, D as recordInboxActivity, E as recordFanoutRecipients, I as name, L as version, M as formatAcceptSignature, O as recordOutboxActivity, S as recordCollectionPageItems, _ as instrumentDocumentLoader, a as verifyRequestDetailed, b as recordCircuitBreakerStateChange, d as importJwk, f as validateCryptoKey, g as getRemoteHost, h as getFederationMetrics, i as verifyRequest, j as registerQueueDepthGauge, k as recordOutboxEnqueue, m as getDurationMs, n as parseRfc9421SignatureInput, o as exportJwk, t as doubleKnock, v as isAbortError, w as recordCollectionTotalItems, x as recordCollectionDispatchDuration } from "./http-BY8PpQzP.js";
6
6
  import { a as MAX_BODY_SIZE, i as BodyTooLargeError, n as getNodeInfo, o as readBoundedText, t as nodeInfoToJson } from "./types-miAYfiGO.js";
7
- import { _ as hasSignatureLike, b as signJsonLd, c as getKeyOwner, f as compactJsonLd, g as hasSignature, h as getNormalizationContextLoader, i as verifyObject, l as InvalidContextReferenceError, m as detachSignature, n as hasProofLike, o as normalizeOutgoingActivityJsonLd, r as signObject, s as doesActorOwnKey, u as assertSafeJsonLd, v as isClearlyMalformedContextReference, w as wrapContextLoaderForJsonLd, x as verifyCompactJsonLd, y as isInvalidUrlTypeError } from "./proof-DqO9zYcc.js";
8
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-w0De7ODp.js";
7
+ import { _ as hasSignatureLike, b as signJsonLd, c as getKeyOwner, f as compactJsonLd, g as hasSignature, h as getNormalizationContextLoader, i as verifyObject, l as InvalidContextReferenceError, m as detachSignature, n as hasProofLike, o as normalizeOutgoingActivityJsonLd, r as signObject, s as doesActorOwnKey, u as assertSafeJsonLd, v as isClearlyMalformedContextReference, w as wrapContextLoaderForJsonLd, x as verifyCompactJsonLd, y as isInvalidUrlTypeError } from "./proof-BxS2Xa8B.js";
8
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-DNnjnc9t.js";
9
9
  import { getLogger, withContext } from "@logtape/logtape";
10
10
  import { Router, RouterError, assertPath } from "@fedify/uri-template";
11
11
  import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, Tombstone, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
@@ -111,6 +111,7 @@ var FederationBuilderImpl = class {
111
111
  * Symbol registry for unique identification of unnamed symbols.
112
112
  */
113
113
  #symbolRegistry = /* @__PURE__ */ new Map();
114
+ #collectionNames = /* @__PURE__ */ new Map();
114
115
  constructor() {
115
116
  this.router = new Router();
116
117
  this.objectCallbacks = {};
@@ -139,6 +140,8 @@ var FederationBuilderImpl = class {
139
140
  f.objectTypeIds = { ...this.objectTypeIds };
140
141
  f.collectionCallbacks = { ...this.collectionCallbacks };
141
142
  f.collectionTypeIds = { ...this.collectionTypeIds };
143
+ f.#symbolRegistry = new Map(this.#symbolRegistry);
144
+ f.#collectionNames = new Map(this.#collectionNames);
142
145
  f.inboxPath = this.inboxPath;
143
146
  f.outboxPath = this.outboxPath;
144
147
  f.inboxCallbacks = this.inboxCallbacks == null ? void 0 : { ...this.inboxCallbacks };
@@ -618,6 +621,7 @@ var FederationBuilderImpl = class {
618
621
  if (this.collectionCallbacks[name] != null) throw new RouterError(`Collection dispatcher for ${strName} already set.`);
619
622
  assertPath(path);
620
623
  if (Router.variables(path).size < 1) throw new RouterError("Path for collection dispatcher must have at least one variable.");
624
+ this.#collectionNames.set(routeName, name);
621
625
  this.router.add(path, routeName);
622
626
  const callbacks = { dispatcher };
623
627
  this.collectionCallbacks[name] = callbacks;
@@ -655,6 +659,10 @@ var FederationBuilderImpl = class {
655
659
  const routeName = this.#uniqueCollectionId(name);
656
660
  return this.router.build(`collection:${routeName}`, values) ?? this.router.build(`orderedCollection:${routeName}`, values);
657
661
  }
662
+ /** Resolves a custom collection route to its original name. */
663
+ getCollectionName(routeName) {
664
+ return this.#collectionNames.get(routeName) ?? routeName.replace(/^(collection|orderedCollection):/, "");
665
+ }
658
666
  setOutboxPermanentFailureHandler(handler) {
659
667
  this.outboxPermanentFailureHandler = handler;
660
668
  }
@@ -5621,10 +5629,10 @@ var FederationImpl = class extends FederationBuilderImpl {
5621
5629
  onNotFound
5622
5630
  });
5623
5631
  case "collection": {
5624
- const name = route.name.replace(/^collection:/, "");
5632
+ const name = this.getCollectionName(route.name);
5625
5633
  const callbacks = this.collectionCallbacks[name];
5626
5634
  return await handleCustomCollection(request, {
5627
- name,
5635
+ name: String(name),
5628
5636
  context,
5629
5637
  values: route.values,
5630
5638
  collectionCallbacks: callbacks,
@@ -5635,10 +5643,10 @@ var FederationImpl = class extends FederationBuilderImpl {
5635
5643
  });
5636
5644
  }
5637
5645
  case "orderedCollection": {
5638
- const name = route.name.replace(/^orderedCollection:/, "");
5646
+ const name = this.getCollectionName(route.name);
5639
5647
  const callbacks = this.collectionCallbacks[name];
5640
5648
  return await handleOrderedCollection(request, {
5641
- name,
5649
+ name: String(name),
5642
5650
  context,
5643
5651
  values: route.values,
5644
5652
  collectionCallbacks: callbacks,
@@ -5881,8 +5889,10 @@ var ContextImpl = class ContextImpl {
5881
5889
  const collectionRegex = new RegExp(`^(${["collection", "orderedCollection"].join("|")}):(.*)$`);
5882
5890
  const match = route.name.match(collectionRegex);
5883
5891
  if (match !== null) {
5884
- const [, type, name] = match;
5892
+ const [, type] = match;
5893
+ const name = this.federation.getCollectionName(route.name);
5885
5894
  const cls = this.federation.collectionTypeIds[name];
5895
+ if (cls == null) return null;
5886
5896
  return {
5887
5897
  type,
5888
5898
  name,
@@ -6252,7 +6262,7 @@ var ContextImpl = class ContextImpl {
6252
6262
  "inbox"
6253
6263
  ]);
6254
6264
  const contextLoader = options.contextLoader ?? this.contextLoader;
6255
- const json = await activity.toJsonLd({ contextLoader });
6265
+ let json = await activity.toJsonLd({ contextLoader });
6256
6266
  const keyCache = new KvKeyCache(this.federation.kv, this.federation.kvPrefixes.publicKey, this);
6257
6267
  if (await verifyObject(Activity, json, {
6258
6268
  contextLoader,
@@ -6309,6 +6319,7 @@ var ContextImpl = class ContextImpl {
6309
6319
  }
6310
6320
  logger.debug("Successfully fetched the remote activity object {activityId}; ignore the original activity and use the fetched one, which is trustworthy.");
6311
6321
  activity = fetched;
6322
+ json = await fetched.toJsonLd({ contextLoader });
6312
6323
  } else logger.debug("Object Integrity Proofs are verified.", {
6313
6324
  recipient,
6314
6325
  activity: json
@@ -1,26 +1,26 @@
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-Deo5dZf_.mjs";
5
- import { a as instrumentDocumentLoader, b as recordWebFingerHandle, c as recordCircuitBreakerStateChange, d as recordCollectionRequest, f as recordCollectionTotalItems, g as recordInboxActivity, h as recordFanoutRecipients, i as getRemoteHost, l as recordCollectionDispatchDuration, n as getDurationMs, o as isAbortError, r as getFederationMetrics, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "./metrics-jUJmtE2u.mjs";
4
+ import { n as version, t as name } from "./deno-DUgFsCmM.mjs";
5
+ import { a as instrumentDocumentLoader, b as recordWebFingerHandle, c as recordCircuitBreakerStateChange, d as recordCollectionRequest, f as recordCollectionTotalItems, g as recordInboxActivity, h as recordFanoutRecipients, i as getRemoteHost, l as recordCollectionDispatchDuration, n as getDurationMs, o as isAbortError, r as getFederationMetrics, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "./metrics-QrVsKSG9.mjs";
6
6
  import { t as formatAcceptSignature } from "./accept-Dd__NiUL.mjs";
7
- import { o as importJwk, s as validateCryptoKey, t as exportJwk } from "./key-D1TEfV4d.mjs";
8
- import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-BqObaL32.mjs";
9
- import { t as getAuthenticatedDocumentLoader } from "./docloader-BAVVKXPl.mjs";
10
- import { n as kvCache } from "./kv-cache-DGnB9ZX_.mjs";
11
- import { _ as wrapContextLoaderForJsonLd, a as compactJsonLd, c as getNormalizationContextLoader, d as isClearlyMalformedContextReference, f as isInvalidUrlTypeError, l as hasSignature, m as verifyCompactJsonLd, p as signJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as hasSignatureLike } from "./ld-DnGqAKWi.mjs";
12
- import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-C4iDnghj.mjs";
7
+ import { o as importJwk, s as validateCryptoKey, t as exportJwk } from "./key-BbuFo4CW.mjs";
8
+ import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-BNDHRNJP.mjs";
9
+ import { t as getAuthenticatedDocumentLoader } from "./docloader-w72ipM49.mjs";
10
+ import { n as kvCache } from "./kv-cache-CNZOaZYq.mjs";
11
+ import { _ as wrapContextLoaderForJsonLd, a as compactJsonLd, c as getNormalizationContextLoader, d as isClearlyMalformedContextReference, f as isInvalidUrlTypeError, l as hasSignature, m as verifyCompactJsonLd, p as signJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as hasSignatureLike } from "./ld-BYV2Luge.mjs";
12
+ import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-BsBzJADO.mjs";
13
13
  import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-HOAywiid.mjs";
14
- import { i as verifyObject, n as hasProofLike, r as signObject } from "./proof-CpU6r25U.mjs";
14
+ import { i as verifyObject, n as hasProofLike, r as signObject } from "./proof-cXVkPBIU.mjs";
15
15
  import { d as readBoundedText, l as BodyTooLargeError, t as getNodeInfo, u as MAX_BODY_SIZE } from "./client-Ccbsek6u.mjs";
16
16
  import { t as nodeInfoToJson } from "./types-s4mCTGkT.mjs";
17
- import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-YVatAj-a.mjs";
18
- import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-Dm72xfCy.mjs";
17
+ import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-omt23uTA.mjs";
18
+ import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-Bal9bfuM.mjs";
19
19
  import { t as CircuitBreaker } from "./circuit-breaker-CDABzqVf.mjs";
20
20
  import { t as buildCollectionSynchronizationHeader } from "./collection-CA3V5zyK.mjs";
21
21
  import { t as KvKeyCache } from "./keycache-B3qRQNLj.mjs";
22
22
  import { t as acceptsJsonLd } from "./negotiation-CDW-_gUU.mjs";
23
- import { t as hasMalformedKnownTemporalLiteral } from "./temporal-BJ-5wxWU.mjs";
23
+ import { t as hasMalformedKnownTemporalLiteral } from "./temporal-ZUAQe754.mjs";
24
24
  import { t as createExponentialBackoffPolicy } from "./retry-_VvV0h9f.mjs";
25
25
  import { getLogger, withContext } from "@logtape/logtape";
26
26
  import { RouterError } from "@fedify/uri-template";
@@ -3870,10 +3870,10 @@ var FederationImpl = class extends FederationBuilderImpl {
3870
3870
  onNotFound
3871
3871
  });
3872
3872
  case "collection": {
3873
- const name = route.name.replace(/^collection:/, "");
3873
+ const name = this.getCollectionName(route.name);
3874
3874
  const callbacks = this.collectionCallbacks[name];
3875
3875
  return await handleCustomCollection(request, {
3876
- name,
3876
+ name: String(name),
3877
3877
  context,
3878
3878
  values: route.values,
3879
3879
  collectionCallbacks: callbacks,
@@ -3884,10 +3884,10 @@ var FederationImpl = class extends FederationBuilderImpl {
3884
3884
  });
3885
3885
  }
3886
3886
  case "orderedCollection": {
3887
- const name = route.name.replace(/^orderedCollection:/, "");
3887
+ const name = this.getCollectionName(route.name);
3888
3888
  const callbacks = this.collectionCallbacks[name];
3889
3889
  return await handleOrderedCollection(request, {
3890
- name,
3890
+ name: String(name),
3891
3891
  context,
3892
3892
  values: route.values,
3893
3893
  collectionCallbacks: callbacks,
@@ -4130,8 +4130,10 @@ var ContextImpl = class ContextImpl {
4130
4130
  const collectionRegex = new RegExp(`^(${["collection", "orderedCollection"].join("|")}):(.*)$`);
4131
4131
  const match = route.name.match(collectionRegex);
4132
4132
  if (match !== null) {
4133
- const [, type, name] = match;
4133
+ const [, type] = match;
4134
+ const name = this.federation.getCollectionName(route.name);
4134
4135
  const cls = this.federation.collectionTypeIds[name];
4136
+ if (cls == null) return null;
4135
4137
  return {
4136
4138
  type,
4137
4139
  name,
@@ -4501,7 +4503,7 @@ var ContextImpl = class ContextImpl {
4501
4503
  "inbox"
4502
4504
  ]);
4503
4505
  const contextLoader = options.contextLoader ?? this.contextLoader;
4504
- const json = await activity.toJsonLd({ contextLoader });
4506
+ let json = await activity.toJsonLd({ contextLoader });
4505
4507
  const keyCache = new KvKeyCache(this.federation.kv, this.federation.kvPrefixes.publicKey, this);
4506
4508
  if (await verifyObject(Activity, json, {
4507
4509
  contextLoader,
@@ -4558,6 +4560,7 @@ var ContextImpl = class ContextImpl {
4558
4560
  }
4559
4561
  logger.debug("Successfully fetched the remote activity object {activityId}; ignore the original activity and use the fetched one, which is trustworthy.");
4560
4562
  activity = fetched;
4563
+ json = await fetched.toJsonLd({ contextLoader });
4561
4564
  } else logger.debug("Object Integrity Proofs are verified.", {
4562
4565
  recipient,
4563
4566
  activity: json
@@ -2,10 +2,10 @@ const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
3
  const require_chunk = require("./chunk-DDcVe30Y.cjs");
4
4
  const require_transformers = require("./transformers-NeAONrAq.cjs");
5
- const require_http = require("./http-CjvY7wBM.cjs");
5
+ const require_http = require("./http-CTYio50W.cjs");
6
6
  const require_types = require("./types-DRPjmHVV.cjs");
7
- const require_proof = require("./proof-DvVA2Bmk.cjs");
8
- const require_kv_cache = require("./kv-cache-C_4ufNbl.cjs");
7
+ const require_proof = require("./proof-CGKQFT2M.cjs");
8
+ const require_kv_cache = require("./kv-cache-CrcqGkT-.cjs");
9
9
  let _logtape_logtape = require("@logtape/logtape");
10
10
  let _fedify_uri_template = require("@fedify/uri-template");
11
11
  let _fedify_vocab = require("@fedify/vocab");
@@ -112,6 +112,7 @@ var FederationBuilderImpl = class {
112
112
  * Symbol registry for unique identification of unnamed symbols.
113
113
  */
114
114
  #symbolRegistry = /* @__PURE__ */ new Map();
115
+ #collectionNames = /* @__PURE__ */ new Map();
115
116
  constructor() {
116
117
  this.router = new _fedify_uri_template.Router();
117
118
  this.objectCallbacks = {};
@@ -140,6 +141,8 @@ var FederationBuilderImpl = class {
140
141
  f.objectTypeIds = { ...this.objectTypeIds };
141
142
  f.collectionCallbacks = { ...this.collectionCallbacks };
142
143
  f.collectionTypeIds = { ...this.collectionTypeIds };
144
+ f.#symbolRegistry = new Map(this.#symbolRegistry);
145
+ f.#collectionNames = new Map(this.#collectionNames);
143
146
  f.inboxPath = this.inboxPath;
144
147
  f.outboxPath = this.outboxPath;
145
148
  f.inboxCallbacks = this.inboxCallbacks == null ? void 0 : { ...this.inboxCallbacks };
@@ -619,6 +622,7 @@ var FederationBuilderImpl = class {
619
622
  if (this.collectionCallbacks[name] != null) throw new _fedify_uri_template.RouterError(`Collection dispatcher for ${strName} already set.`);
620
623
  (0, _fedify_uri_template.assertPath)(path);
621
624
  if (_fedify_uri_template.Router.variables(path).size < 1) throw new _fedify_uri_template.RouterError("Path for collection dispatcher must have at least one variable.");
625
+ this.#collectionNames.set(routeName, name);
622
626
  this.router.add(path, routeName);
623
627
  const callbacks = { dispatcher };
624
628
  this.collectionCallbacks[name] = callbacks;
@@ -656,6 +660,10 @@ var FederationBuilderImpl = class {
656
660
  const routeName = this.#uniqueCollectionId(name);
657
661
  return this.router.build(`collection:${routeName}`, values) ?? this.router.build(`orderedCollection:${routeName}`, values);
658
662
  }
663
+ /** Resolves a custom collection route to its original name. */
664
+ getCollectionName(routeName) {
665
+ return this.#collectionNames.get(routeName) ?? routeName.replace(/^(collection|orderedCollection):/, "");
666
+ }
659
667
  setOutboxPermanentFailureHandler(handler) {
660
668
  this.outboxPermanentFailureHandler = handler;
661
669
  }
@@ -5622,10 +5630,10 @@ var FederationImpl = class extends FederationBuilderImpl {
5622
5630
  onNotFound
5623
5631
  });
5624
5632
  case "collection": {
5625
- const name = route.name.replace(/^collection:/, "");
5633
+ const name = this.getCollectionName(route.name);
5626
5634
  const callbacks = this.collectionCallbacks[name];
5627
5635
  return await handleCustomCollection(request, {
5628
- name,
5636
+ name: String(name),
5629
5637
  context,
5630
5638
  values: route.values,
5631
5639
  collectionCallbacks: callbacks,
@@ -5636,10 +5644,10 @@ var FederationImpl = class extends FederationBuilderImpl {
5636
5644
  });
5637
5645
  }
5638
5646
  case "orderedCollection": {
5639
- const name = route.name.replace(/^orderedCollection:/, "");
5647
+ const name = this.getCollectionName(route.name);
5640
5648
  const callbacks = this.collectionCallbacks[name];
5641
5649
  return await handleOrderedCollection(request, {
5642
- name,
5650
+ name: String(name),
5643
5651
  context,
5644
5652
  values: route.values,
5645
5653
  collectionCallbacks: callbacks,
@@ -5882,8 +5890,10 @@ var ContextImpl = class ContextImpl {
5882
5890
  const collectionRegex = new RegExp(`^(${["collection", "orderedCollection"].join("|")}):(.*)$`);
5883
5891
  const match = route.name.match(collectionRegex);
5884
5892
  if (match !== null) {
5885
- const [, type, name] = match;
5893
+ const [, type] = match;
5894
+ const name = this.federation.getCollectionName(route.name);
5886
5895
  const cls = this.federation.collectionTypeIds[name];
5896
+ if (cls == null) return null;
5887
5897
  return {
5888
5898
  type,
5889
5899
  name,
@@ -6253,7 +6263,7 @@ var ContextImpl = class ContextImpl {
6253
6263
  "inbox"
6254
6264
  ]);
6255
6265
  const contextLoader = options.contextLoader ?? this.contextLoader;
6256
- const json = await activity.toJsonLd({ contextLoader });
6266
+ let json = await activity.toJsonLd({ contextLoader });
6257
6267
  const keyCache = new KvKeyCache(this.federation.kv, this.federation.kvPrefixes.publicKey, this);
6258
6268
  if (await require_proof.verifyObject(_fedify_vocab.Activity, json, {
6259
6269
  contextLoader,
@@ -6310,6 +6320,7 @@ var ContextImpl = class ContextImpl {
6310
6320
  }
6311
6321
  logger.debug("Successfully fetched the remote activity object {activityId}; ignore the original activity and use the fetched one, which is trustworthy.");
6312
6322
  activity = fetched;
6323
+ json = await fetched.toJsonLd({ contextLoader });
6313
6324
  } else logger.debug("Object Integrity Proofs are verified.", {
6314
6325
  recipient,
6315
6326
  activity: json
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { G as ActorDispatcher, K as ActorHandleMapper, W as ActorAliasMapper, l as RequestContext, pt as WebFingerLinksDispatcher } from "./context-CSIggG9_.cjs";
2
+ import { G as ActorDispatcher, K as ActorHandleMapper, W as ActorAliasMapper, l as RequestContext, pt as WebFingerLinksDispatcher } from "./context-MOrCC7yl.cjs";
3
3
  import { MeterProvider, Span, Tracer } from "@opentelemetry/api";
4
4
  import { RouterError, RouterOptions, RouterRouteResult } from "@fedify/uri-template";
5
5
 
@@ -1,6 +1,6 @@
1
1
  /// <reference lib="esnext.temporal" />
2
2
  import { n as HttpMessageSignaturesSpecDeterminer } from "./http-DQmNpfym.js";
3
- import { n as KvStore, t as KvKey } from "./kv-D6hNiMTK.js";
3
+ import { n as KvStore, t as KvKey } from "./kv-CxaI4eGo.js";
4
4
  import { MeterProvider, TracerProvider } from "@opentelemetry/api";
5
5
  import { DocumentLoader, DocumentLoaderFactoryOptions } from "@fedify/vocab-runtime";
6
6
 
@@ -1,6 +1,6 @@
1
1
  /// <reference lib="esnext.temporal" />
2
2
  import { n as HttpMessageSignaturesSpecDeterminer } from "./http-DiWQB8Mr.cjs";
3
- import { n as KvStore, t as KvKey } from "./kv-gJ8LYbxX.cjs";
3
+ import { n as KvStore, t as KvKey } from "./kv-CZKl1IUS.cjs";
4
4
  import { DocumentLoader, DocumentLoaderFactoryOptions } from "@fedify/vocab-runtime";
5
5
  import { MeterProvider, TracerProvider } from "@opentelemetry/api";
6
6
 
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { G as ActorDispatcher, K as ActorHandleMapper, W as ActorAliasMapper, l as RequestContext, pt as WebFingerLinksDispatcher } from "./context-CAKnQy1x.js";
2
+ import { G as ActorDispatcher, K as ActorHandleMapper, W as ActorAliasMapper, l as RequestContext, pt as WebFingerLinksDispatcher } from "./context-BWbdE_MZ.js";
3
3
  import { RouterError, RouterOptions, RouterRouteResult } from "@fedify/uri-template";
4
4
  import { MeterProvider, Span, Tracer } from "@opentelemetry/api";
5
5
 
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-CjvY7wBM.cjs");
8
- const require_middleware = require("./middleware-BW5W0CTK.cjs");
7
+ const require_http = require("./http-CTYio50W.cjs");
8
+ const require_middleware = require("./middleware-Dv-L7Plm.cjs");
9
9
  const require_types = require("./types-DRPjmHVV.cjs");
10
- const require_proof = require("./proof-DvVA2Bmk.cjs");
11
- const require_kv_cache = require("./kv-cache-C_4ufNbl.cjs");
10
+ const require_proof = require("./proof-CGKQFT2M.cjs");
11
+ const require_kv_cache = require("./kv-cache-CrcqGkT-.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
@@ -2,13 +2,13 @@
2
2
  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-CAM_bQXx.cjs";
3
3
  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-DiWQB8Mr.cjs";
4
4
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-B3hNQCG8.cjs";
5
- import { $ as CustomCollectionCursor, A as Rfc6570Expression, At as parseCircuitBreakerKvState, B as createFederationBuilder, C as FederationStartQueueOptions, Ct as CircuitBreakerFailurePolicy, D as InboxListenerSetters, Dt as CircuitBreakerStateChange, E as InboxChallengePolicy, Et as CircuitBreakerState, F as CreateExponentialBackoffPolicyOptions, G as ActorDispatcher, H as respondWithObject, I as RetryContext, J as AuthorizePredicate, K as ActorHandleMapper, L as RetryPolicy, M as FederationOrigin, N as FederationQueueOptions, O as ObjectCallbackSetters, Ot as NormalizedCircuitBreakerOptions, P as createFederation, Q as CustomCollectionCounter, R as createExponentialBackoffPolicy, S as FederationOptions, St as CircuitBreakerCreateOptions, T as IdempotencyStrategy, Tt as CircuitBreakerOptions, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as ActorAliasMapper, X as CollectionCursor, Y as CollectionCounter, Z as CollectionDispatcher, _ as Federatable, _t as buildCollectionSynchronizationHeader, a as GetSignedKeyOptions, at as ObjectDispatcher, b as FederationBuilder, bt as CircuitBreakerActivityDrop, c as ParseUriResult, ct as OutboxListenerErrorHandler, d as SendActivityOptions, dt as UnverifiedActivityHandler, et as CustomCollectionDispatcher, f as SendActivityOptionsForCollection, ft as UnverifiedActivityReason, g as CustomCollectionCallbackSetters, gt as PageItems, h as ConstructorWithTypeId, ht as SenderKeyPair, i as GetActorOptions, it as ObjectAuthorizePredicate, j as FederationKvPrefixes, jt as ActivityTransformer, k as OutboxListenerSetters, kt as normalizeCircuitBreakerOptions, l as RequestContext, lt as OutboxPermanentFailureHandler, m as CollectionCallbackSetters, mt as SendActivityError, n as Context, nt as InboxListener, o as InboxContext, ot as OutboxErrorHandler, p as ActorCallbackSetters, pt as WebFingerLinksDispatcher, q as ActorKeyPairsDispatcher, r as ForwardActivityOptions, rt as NodeInfoDispatcher, s as OutboxContext, st as OutboxListener, t as ActorKeyPair, tt as InboxErrorHandler, u as RouteActivityOptions, ut as SharedInboxKeyDispatcher, v as Federation, vt as digest, w as IdempotencyKeyCallback, wt as CircuitBreakerKvState, x as FederationFetchOptions, xt as CircuitBreakerBeforeSendDecision, y as FederationBenchmarkOptions, yt as CircuitBreaker, z as Message } from "./context-CSIggG9_.cjs";
6
- import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-gJ8LYbxX.cjs";
5
+ import { $ as CustomCollectionCursor, A as Rfc6570Expression, At as parseCircuitBreakerKvState, B as createFederationBuilder, C as FederationStartQueueOptions, Ct as CircuitBreakerFailurePolicy, D as InboxListenerSetters, Dt as CircuitBreakerStateChange, E as InboxChallengePolicy, Et as CircuitBreakerState, F as CreateExponentialBackoffPolicyOptions, G as ActorDispatcher, H as respondWithObject, I as RetryContext, J as AuthorizePredicate, K as ActorHandleMapper, L as RetryPolicy, M as FederationOrigin, N as FederationQueueOptions, O as ObjectCallbackSetters, Ot as NormalizedCircuitBreakerOptions, P as createFederation, Q as CustomCollectionCounter, R as createExponentialBackoffPolicy, S as FederationOptions, St as CircuitBreakerCreateOptions, T as IdempotencyStrategy, Tt as CircuitBreakerOptions, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as ActorAliasMapper, X as CollectionCursor, Y as CollectionCounter, Z as CollectionDispatcher, _ as Federatable, _t as buildCollectionSynchronizationHeader, a as GetSignedKeyOptions, at as ObjectDispatcher, b as FederationBuilder, bt as CircuitBreakerActivityDrop, c as ParseUriResult, ct as OutboxListenerErrorHandler, d as SendActivityOptions, dt as UnverifiedActivityHandler, et as CustomCollectionDispatcher, f as SendActivityOptionsForCollection, ft as UnverifiedActivityReason, g as CustomCollectionCallbackSetters, gt as PageItems, h as ConstructorWithTypeId, ht as SenderKeyPair, i as GetActorOptions, it as ObjectAuthorizePredicate, j as FederationKvPrefixes, jt as ActivityTransformer, k as OutboxListenerSetters, kt as normalizeCircuitBreakerOptions, l as RequestContext, lt as OutboxPermanentFailureHandler, m as CollectionCallbackSetters, mt as SendActivityError, n as Context, nt as InboxListener, o as InboxContext, ot as OutboxErrorHandler, p as ActorCallbackSetters, pt as WebFingerLinksDispatcher, q as ActorKeyPairsDispatcher, r as ForwardActivityOptions, rt as NodeInfoDispatcher, s as OutboxContext, st as OutboxListener, t as ActorKeyPair, tt as InboxErrorHandler, u as RouteActivityOptions, ut as SharedInboxKeyDispatcher, v as Federation, vt as digest, w as IdempotencyKeyCallback, wt as CircuitBreakerKvState, x as FederationFetchOptions, xt as CircuitBreakerBeforeSendDecision, y as FederationBenchmarkOptions, yt as CircuitBreaker, z as Message } from "./context-MOrCC7yl.cjs";
6
+ import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-CZKl1IUS.cjs";
7
7
  import { a as MessageQueueEnqueueOptions, i as MessageQueueDepth, n as InProcessMessageQueueOptions, o as MessageQueueListenOptions, r as MessageQueue, s as ParallelMessageQueue, t as InProcessMessageQueue } from "./mq-D8uSFzxe.cjs";
8
8
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.cjs";
9
- import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-PVR75MeU.cjs";
9
+ import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-B6PwkUMU.cjs";
10
10
  import { _ as hasSignatureLike, a as createProof, b as verifySignature, c as verifyObject, d as SignJsonLdOptions, f as VerifyJsonLdOptions, g as detachSignature, h as createSignature, i as VerifyProofOptions, l as verifyProof, m as attachSignature, n as SignObjectOptions, o as hasProofLike, p as VerifySignatureOptions, r as VerifyObjectOptions, s as signObject, t as CreateProofOptions, u as CreateSignatureOptions, v as signJsonLd, y as verifyJsonLd } from "./mod-Bid79LFU.cjs";
11
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-EbRFjVlY.cjs";
11
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-Co1M3Ux0.cjs";
12
12
  export * from "@fedify/vocab-runtime";
13
13
 
14
14
  //#region src/mod.d.ts
package/dist/mod.d.ts CHANGED
@@ -2,13 +2,13 @@
2
2
  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-CSddvgWN.js";
3
3
  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-DQmNpfym.js";
4
4
  import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "./owner-CiBPcC6F.js";
5
- import { $ as CustomCollectionCursor, A as Rfc6570Expression, At as parseCircuitBreakerKvState, B as createFederationBuilder, C as FederationStartQueueOptions, Ct as CircuitBreakerFailurePolicy, D as InboxListenerSetters, Dt as CircuitBreakerStateChange, E as InboxChallengePolicy, Et as CircuitBreakerState, F as CreateExponentialBackoffPolicyOptions, G as ActorDispatcher, H as respondWithObject, I as RetryContext, J as AuthorizePredicate, K as ActorHandleMapper, L as RetryPolicy, M as FederationOrigin, N as FederationQueueOptions, O as ObjectCallbackSetters, Ot as NormalizedCircuitBreakerOptions, P as createFederation, Q as CustomCollectionCounter, R as createExponentialBackoffPolicy, S as FederationOptions, St as CircuitBreakerCreateOptions, T as IdempotencyStrategy, Tt as CircuitBreakerOptions, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as ActorAliasMapper, X as CollectionCursor, Y as CollectionCounter, Z as CollectionDispatcher, _ as Federatable, _t as buildCollectionSynchronizationHeader, a as GetSignedKeyOptions, at as ObjectDispatcher, b as FederationBuilder, bt as CircuitBreakerActivityDrop, c as ParseUriResult, ct as OutboxListenerErrorHandler, d as SendActivityOptions, dt as UnverifiedActivityHandler, et as CustomCollectionDispatcher, f as SendActivityOptionsForCollection, ft as UnverifiedActivityReason, g as CustomCollectionCallbackSetters, gt as PageItems, h as ConstructorWithTypeId, ht as SenderKeyPair, i as GetActorOptions, it as ObjectAuthorizePredicate, j as FederationKvPrefixes, jt as ActivityTransformer, k as OutboxListenerSetters, kt as normalizeCircuitBreakerOptions, l as RequestContext, lt as OutboxPermanentFailureHandler, m as CollectionCallbackSetters, mt as SendActivityError, n as Context, nt as InboxListener, o as InboxContext, ot as OutboxErrorHandler, p as ActorCallbackSetters, pt as WebFingerLinksDispatcher, q as ActorKeyPairsDispatcher, r as ForwardActivityOptions, rt as NodeInfoDispatcher, s as OutboxContext, st as OutboxListener, t as ActorKeyPair, tt as InboxErrorHandler, u as RouteActivityOptions, ut as SharedInboxKeyDispatcher, v as Federation, vt as digest, w as IdempotencyKeyCallback, wt as CircuitBreakerKvState, x as FederationFetchOptions, xt as CircuitBreakerBeforeSendDecision, y as FederationBenchmarkOptions, yt as CircuitBreaker, z as Message } from "./context-CAKnQy1x.js";
6
- import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-D6hNiMTK.js";
5
+ import { $ as CustomCollectionCursor, A as Rfc6570Expression, At as parseCircuitBreakerKvState, B as createFederationBuilder, C as FederationStartQueueOptions, Ct as CircuitBreakerFailurePolicy, D as InboxListenerSetters, Dt as CircuitBreakerStateChange, E as InboxChallengePolicy, Et as CircuitBreakerState, F as CreateExponentialBackoffPolicyOptions, G as ActorDispatcher, H as respondWithObject, I as RetryContext, J as AuthorizePredicate, K as ActorHandleMapper, L as RetryPolicy, M as FederationOrigin, N as FederationQueueOptions, O as ObjectCallbackSetters, Ot as NormalizedCircuitBreakerOptions, P as createFederation, Q as CustomCollectionCounter, R as createExponentialBackoffPolicy, S as FederationOptions, St as CircuitBreakerCreateOptions, T as IdempotencyStrategy, Tt as CircuitBreakerOptions, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as ActorAliasMapper, X as CollectionCursor, Y as CollectionCounter, Z as CollectionDispatcher, _ as Federatable, _t as buildCollectionSynchronizationHeader, a as GetSignedKeyOptions, at as ObjectDispatcher, b as FederationBuilder, bt as CircuitBreakerActivityDrop, c as ParseUriResult, ct as OutboxListenerErrorHandler, d as SendActivityOptions, dt as UnverifiedActivityHandler, et as CustomCollectionDispatcher, f as SendActivityOptionsForCollection, ft as UnverifiedActivityReason, g as CustomCollectionCallbackSetters, gt as PageItems, h as ConstructorWithTypeId, ht as SenderKeyPair, i as GetActorOptions, it as ObjectAuthorizePredicate, j as FederationKvPrefixes, jt as ActivityTransformer, k as OutboxListenerSetters, kt as normalizeCircuitBreakerOptions, l as RequestContext, lt as OutboxPermanentFailureHandler, m as CollectionCallbackSetters, mt as SendActivityError, n as Context, nt as InboxListener, o as InboxContext, ot as OutboxErrorHandler, p as ActorCallbackSetters, pt as WebFingerLinksDispatcher, q as ActorKeyPairsDispatcher, r as ForwardActivityOptions, rt as NodeInfoDispatcher, s as OutboxContext, st as OutboxListener, t as ActorKeyPair, tt as InboxErrorHandler, u as RouteActivityOptions, ut as SharedInboxKeyDispatcher, v as Federation, vt as digest, w as IdempotencyKeyCallback, wt as CircuitBreakerKvState, x as FederationFetchOptions, xt as CircuitBreakerBeforeSendDecision, y as FederationBenchmarkOptions, yt as CircuitBreaker, z as Message } from "./context-BWbdE_MZ.js";
6
+ import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "./kv-CxaI4eGo.js";
7
7
  import { a as MessageQueueEnqueueOptions, i as MessageQueueDepth, n as InProcessMessageQueueOptions, o as MessageQueueListenOptions, r as MessageQueue, s as ParallelMessageQueue, t as InProcessMessageQueue } from "./mq-D-nlpY04.js";
8
8
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./compat/mod.js";
9
- import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-CFuyfw3c.js";
9
+ import { a as RouterOptions, i as RouterError, n as handleWebFinger, o as RouterRouteResult, r as Router, t as WebFingerHandlerParameters } from "./mod-LmD03uRA.js";
10
10
  import { _ as hasSignatureLike, a as createProof, b as verifySignature, c as verifyObject, d as SignJsonLdOptions, f as VerifyJsonLdOptions, g as detachSignature, h as createSignature, i as VerifyProofOptions, l as verifyProof, m as attachSignature, n as SignObjectOptions, o as hasProofLike, p as VerifySignatureOptions, r as VerifyObjectOptions, s as signObject, t as CreateProofOptions, u as CreateSignatureOptions, v as signJsonLd, y as verifyJsonLd } from "./mod-TLEvgT1i.js";
11
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-CQ8EjnN5.js";
11
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./mod-Br8yJNcE.js";
12
12
  export * from "@fedify/vocab-runtime";
13
13
 
14
14
  //#region src/mod.d.ts
package/dist/mod.js CHANGED
@@ -3,11 +3,11 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import "./chunk-CRNNMoPX.js";
4
4
  import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-BGMIq1cs.js";
5
5
  import "./compat/mod.js";
6
- import { F as validateAcceptSignature, M as formatAcceptSignature, N as fulfillAcceptSignature, P as parseAcceptSignature, a as verifyRequestDetailed, c as fetchKey, d as importJwk, i as verifyRequest, l as fetchKeyDetailed, o as exportJwk, r as signRequest, u as generateCryptoKeyPair } from "./http-DuWPL6ic.js";
7
- import { a as SendActivityError, c as buildCollectionSynchronizationHeader, d as normalizeCircuitBreakerOptions, f as parseCircuitBreakerKvState, i as createExponentialBackoffPolicy, l as digest, o as respondWithObject, p as createFederationBuilder, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as CircuitBreaker } from "./middleware-A-SjayRO.js";
6
+ import { F as validateAcceptSignature, M as formatAcceptSignature, N as fulfillAcceptSignature, P as parseAcceptSignature, a as verifyRequestDetailed, c as fetchKey, d as importJwk, i as verifyRequest, l as fetchKeyDetailed, o as exportJwk, r as signRequest, u as generateCryptoKeyPair } from "./http-BY8PpQzP.js";
7
+ import { a as SendActivityError, c as buildCollectionSynchronizationHeader, d as normalizeCircuitBreakerOptions, f as parseCircuitBreakerKvState, i as createExponentialBackoffPolicy, l as digest, o as respondWithObject, p as createFederationBuilder, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as CircuitBreaker } from "./middleware-B4FNnN3W.js";
8
8
  import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-miAYfiGO.js";
9
- import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "./proof-DqO9zYcc.js";
10
- import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-w0De7ODp.js";
9
+ import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "./proof-BxS2Xa8B.js";
10
+ import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-DNnjnc9t.js";
11
11
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError } from "./federation/mod.js";
12
12
  import "./nodeinfo/mod.js";
13
13
  import "./runtime/mod.js";
@@ -5,7 +5,7 @@ import { r as createRequestContext } from "../context-CxbCIptr.mjs";
5
5
  import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
6
6
  import "../std__assert-BvGuO4xO.mjs";
7
7
  import { t as MemoryKvStore } from "../kv-CX8qfaad.mjs";
8
- import { _ as handleNodeInfo, o as createFederation, v as handleNodeInfoJrd } from "../middleware-XCr66VRe.mjs";
8
+ import { _ as handleNodeInfo, o as createFederation, v as handleNodeInfoJrd } from "../middleware-Bj9s3J_0.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  //#region src/nodeinfo/handler.test.ts
11
11
  test("handleNodeInfo()", async () => {
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { n as KvStore, t as KvKey } from "../kv-gJ8LYbxX.cjs";
2
+ import { n as KvStore, t as KvKey } from "../kv-CZKl1IUS.cjs";
3
3
  import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
4
4
  import { ExportResultCode } from "@opentelemetry/core";
5
5
 
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { n as KvStore, t as KvKey } from "../kv-D6hNiMTK.js";
2
+ import { n as KvStore, t as KvKey } from "../kv-CxaI4eGo.js";
3
3
  import { ExportResultCode } from "@opentelemetry/core";
4
4
  import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
5
5
 
@@ -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-Deo5dZf_.mjs";
5
- import { c as verifyKeyOwnership, n as fetchActorDocument, t as exportJwk } from "./key-D1TEfV4d.mjs";
4
+ import { n as version, t as name } from "./deno-DUgFsCmM.mjs";
5
+ import { c as verifyKeyOwnership, n as fetchActorDocument, t as exportJwk } from "./key-BbuFo4CW.mjs";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { I as name, L as version, c as fetchKey, f as validateCryptoKey, h as getFederationMetrics, m as getDurationMs, o as exportJwk, p as verifyKeyOwnership, s as fetchActorDocument, y as measureSignatureKeyFetch } from "./http-DuWPL6ic.js";
3
+ import { I as name, L as version, c as fetchKey, f as validateCryptoKey, h as getFederationMetrics, m as getDurationMs, o as exportJwk, p as verifyKeyOwnership, s as fetchActorDocument, y as measureSignatureKeyFetch } from "./http-BY8PpQzP.js";
4
4
  import { getLogger } from "@logtape/logtape";
5
5
  import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, PUBLIC_COLLECTION, getTypeId, isActor } from "@fedify/vocab";
6
6
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -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-CjvY7wBM.cjs");
4
+ const require_http = require("./http-CTYio50W.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,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-Deo5dZf_.mjs";
5
- import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-jUJmtE2u.mjs";
6
- import { r as fetchKey, s as validateCryptoKey } from "./key-D1TEfV4d.mjs";
4
+ import { n as version, t as name } from "./deno-DUgFsCmM.mjs";
5
+ import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-QrVsKSG9.mjs";
6
+ import { r as fetchKey, s as validateCryptoKey } from "./key-BbuFo4CW.mjs";
7
7
  import { n as preloadedOnlyDocumentLoader } from "./public-audience-jwoSIGUw.mjs";
8
8
  import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-HOAywiid.mjs";
9
9
  import { getLogger } from "@logtape/logtape";
@@ -1,9 +1,9 @@
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-Deo5dZf_.mjs";
5
- import { n as getDurationMs, r as getFederationMetrics } from "./metrics-jUJmtE2u.mjs";
6
- import { n as doubleKnock } from "./http-BqObaL32.mjs";
4
+ import { n as version, t as name } from "./deno-DUgFsCmM.mjs";
5
+ import { n as getDurationMs, r as getFederationMetrics } from "./metrics-QrVsKSG9.mjs";
6
+ import { n as doubleKnock } from "./http-BNDHRNJP.mjs";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
  import { FetchError, UrlError, validatePublicUrl } from "@fedify/vocab-runtime";
@@ -7,8 +7,8 @@ import { n as assertExists, t as assertStringIncludes } from "../std__assert-BvG
7
7
  import { n as assertGreaterOrEqual, r as assertFalse, t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
8
8
  import { t as assert } from "../assert-jSdZMYam.mjs";
9
9
  import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
10
- import { t as exportJwk } from "../key-D1TEfV4d.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-BqObaL32.mjs";
10
+ import { t as exportJwk } from "../key-BbuFo4CW.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-BNDHRNJP.mjs";
12
12
  import { i as rsaPrivateKey2, l as rsaPublicKey5, o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-BAK-tUlf.mjs";
13
13
  import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
14
14
  import { FetchError, exportSpki } from "@fedify/vocab-runtime";
@@ -6,7 +6,7 @@ import "../std__assert-BvGuO4xO.mjs";
6
6
  import { t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
7
7
  import { t as assert } from "../assert-jSdZMYam.mjs";
8
8
  import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
9
- import { a as generateCryptoKeyPair, i as fetchKeyDetailed, o as importJwk, r as fetchKey, s as validateCryptoKey, t as exportJwk } from "../key-D1TEfV4d.mjs";
9
+ import { a as generateCryptoKeyPair, i as fetchKeyDetailed, o as importJwk, r as fetchKey, s as validateCryptoKey, t as exportJwk } from "../key-BbuFo4CW.mjs";
10
10
  import { c as rsaPublicKey3, i as rsaPrivateKey2, o as rsaPublicKey1, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
11
11
  import { CryptographicKey, Multikey } from "@fedify/vocab";
12
12
  import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
@@ -5,9 +5,9 @@ import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
5
5
  import { n as assertGreaterOrEqual, r as assertFalse, t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
6
6
  import { n as assertInstanceOf, t as assert } from "../assert-jSdZMYam.mjs";
7
7
  import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
8
- import { a as generateCryptoKeyPair } from "../key-D1TEfV4d.mjs";
8
+ import { a as generateCryptoKeyPair } from "../key-BbuFo4CW.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 compactJsonLd, f as isInvalidUrlTypeError, g as verifySignature, h as verifyJsonLd, i as attachSignature, n as UnsafeJsonLdError, o as createSignature, p as signJsonLd, s as detachSignature, u as hasSignatureLike } from "../ld-DnGqAKWi.mjs";
10
+ import { a as compactJsonLd, f as isInvalidUrlTypeError, g as verifySignature, h as verifyJsonLd, i as attachSignature, n as UnsafeJsonLdError, o as createSignature, p as signJsonLd, s as detachSignature, u as hasSignatureLike } from "../ld-BYV2Luge.mjs";
11
11
  import { CryptographicKey } from "@fedify/vocab";
12
12
  import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
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-CjvY7wBM.cjs");
5
- const require_proof = require("../proof-DvVA2Bmk.cjs");
4
+ const require_http = require("../http-CTYio50W.cjs");
5
+ const require_proof = require("../proof-CGKQFT2M.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 { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { F as validateAcceptSignature, M as formatAcceptSignature, N as fulfillAcceptSignature, P as parseAcceptSignature, a as verifyRequestDetailed, c as fetchKey, d as importJwk, i as verifyRequest, l as fetchKeyDetailed, o as exportJwk, r as signRequest, u as generateCryptoKeyPair } from "../http-DuWPL6ic.js";
4
- import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "../proof-DqO9zYcc.js";
3
+ import { F as validateAcceptSignature, M as formatAcceptSignature, N as fulfillAcceptSignature, P as parseAcceptSignature, a as verifyRequestDetailed, c as fetchKey, d as importJwk, i as verifyRequest, l as fetchKeyDetailed, o as exportJwk, r as signRequest, u as generateCryptoKeyPair } from "../http-BY8PpQzP.js";
4
+ import { C as verifySignature, S as verifyJsonLd, _ as hasSignatureLike, a as verifyProof, b as signJsonLd, c as getKeyOwner, d as attachSignature, i as verifyObject, m as detachSignature, n as hasProofLike, p as createSignature, r as signObject, s as doesActorOwnKey, t as createProof } from "../proof-BxS2Xa8B.js";
5
5
  export { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, hasProofLike, hasSignatureLike, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };