@fedify/fedify 1.9.10 → 1.9.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/{actor-CGzgm5oD.cjs → actor-BaIbAIQ4.cjs} +187 -187
  2. package/dist/{actor-Dk8QQxfb.mjs → actor-BgNoo4Eo.mjs} +1 -1
  3. package/dist/{actor-BCmFER1x.js → actor-I6MTQt65.js} +187 -187
  4. package/dist/{authdocloader-C0oFDv-u.cjs → authdocloader-BML29LEF.cjs} +3 -3
  5. package/dist/{authdocloader-BlqYxYyU.mjs → authdocloader-CQRL6xBg.mjs} +3 -3
  6. package/dist/{authdocloader-C4Km7IX-.js → authdocloader-DGVNFUsJ.js} +3 -3
  7. package/dist/{builder-Dy69enN4.mjs → builder-B8VNNUzm.mjs} +4 -4
  8. package/dist/{client-BVxHrCKU.mjs → client-Cjo9kYUV.mjs} +1 -1
  9. package/dist/compat/mod.cjs +1 -1
  10. package/dist/compat/mod.d.cts +1 -1
  11. package/dist/compat/mod.d.ts +1 -1
  12. package/dist/compat/transformers.test.mjs +3 -3
  13. package/dist/{context-Cf8s07xm.d.ts → context-CNkTuNIm.d.ts} +48 -6
  14. package/dist/{context-Crmwowsw.d.cts → context-jX79cwCB.d.cts} +48 -6
  15. package/dist/{docloader-L_Yv0SO1.cjs → docloader-CB5WT9yk.cjs} +1 -1
  16. package/dist/{docloader-CJRlqHTE.js → docloader-XzYOPh6W.js} +1 -1
  17. package/dist/{esm-Bl5QZ7fr.mjs → esm-Br6fmrGY.mjs} +1 -1
  18. package/dist/federation/builder.test.mjs +3 -3
  19. package/dist/federation/collection.test.mjs +1 -1
  20. package/dist/federation/handler.test.mjs +1361 -45
  21. package/dist/federation/idempotency.test.mjs +5 -5
  22. package/dist/federation/inbox.test.mjs +3 -3
  23. package/dist/federation/keycache.test.mjs +3 -3
  24. package/dist/federation/kv.test.mjs +1 -1
  25. package/dist/federation/middleware.test.mjs +1586 -82
  26. package/dist/federation/mod.cjs +2 -2
  27. package/dist/federation/mod.d.cts +1 -1
  28. package/dist/federation/mod.d.ts +1 -1
  29. package/dist/federation/mod.js +1 -1
  30. package/dist/federation/mq.test.mjs +3 -3
  31. package/dist/federation/retry.test.mjs +2 -2
  32. package/dist/federation/router.test.mjs +2 -2
  33. package/dist/federation/send.test.mjs +7 -7
  34. package/dist/federation/temporal.test.d.mts +2 -0
  35. package/dist/federation/temporal.test.mjs +71 -0
  36. package/dist/{http-CEocuLno.js → http-CXpt61mo.js} +3 -3
  37. package/dist/{http-lEtFJ9QZ.mjs → http-GSUEBn2H.mjs} +2 -2
  38. package/dist/{http-ChxLPxfJ.cjs → http-L4148RPe.cjs} +3 -3
  39. package/dist/{inbox-f2JhwcoC.mjs → inbox-DRfIo1Ox.mjs} +7 -4
  40. package/dist/{key-CcFvjYSE.mjs → key-73aMUDcO.mjs} +2 -2
  41. package/dist/{key-DXRa1vj8.mjs → key-CqxBq3-S.mjs} +1 -1
  42. package/dist/{key-DL1K1oFv.cjs → key-D3E68McA.cjs} +2 -2
  43. package/dist/{key-CfQiiCFY.js → key-DtaAm2V1.js} +2 -2
  44. package/dist/{key-GSxkNZYW.cjs → key-Yfx6HgfZ.cjs} +1 -1
  45. package/dist/{keycache-Car3vCR8.mjs → keycache-tpX1dxwp.mjs} +1 -1
  46. package/dist/{keys-BPA70FRA.mjs → keys-B9pkL0lY.mjs} +1 -1
  47. package/dist/ld-DqEigU4F.mjs +548 -0
  48. package/dist/{lookup-BZCRNz7r.cjs → lookup-BK6z2RO5.cjs} +1 -1
  49. package/dist/{lookup-ByZEGrUD.mjs → lookup-DA92hMtK.mjs} +1 -1
  50. package/dist/{lookup-MjsiCtwV.js → lookup-DDOc-i0I.js} +1 -1
  51. package/dist/{middleware-DwelHV2a.cjs → middleware-CcRfmHUw.cjs} +404 -78
  52. package/dist/{middleware-D23J06Wi.js → middleware-D72Tt9sq.js} +401 -76
  53. package/dist/{middleware-DT1q8p2_.mjs → middleware-DNRnMI46.mjs} +313 -80
  54. package/dist/{middleware-DzVgR5WN.cjs → middleware-DfCM9WFN.cjs} +1 -1
  55. package/dist/{middleware-DQF9aAWg.mjs → middleware-ufTj15Ba.mjs} +1 -1
  56. package/dist/mod.cjs +10 -10
  57. package/dist/mod.d.cts +1 -1
  58. package/dist/mod.d.ts +1 -1
  59. package/dist/mod.js +9 -9
  60. package/dist/nodeinfo/client.test.mjs +3 -3
  61. package/dist/nodeinfo/handler.test.mjs +2 -2
  62. package/dist/nodeinfo/mod.cjs +1 -1
  63. package/dist/nodeinfo/mod.js +1 -1
  64. package/dist/nodeinfo/semver.test.mjs +1 -1
  65. package/dist/nodeinfo/types.test.mjs +1 -1
  66. package/dist/{owner-2Hw80SWJ.mjs → owner-C7rjJog4.mjs} +3 -3
  67. package/dist/{proof-DOwB_RsW.cjs → proof-BZb-g5fh.cjs} +347 -5
  68. package/dist/{proof-DoJnUD_A.js → proof-CjgdsMq_.js} +300 -6
  69. package/dist/{proof-B6709oyL.mjs → proof-GWFCtXCY.mjs} +2 -2
  70. package/dist/runtime/authdocloader.test.mjs +6 -6
  71. package/dist/runtime/docloader.test.mjs +3 -3
  72. package/dist/runtime/key.test.mjs +3 -3
  73. package/dist/runtime/langstr.test.mjs +2 -2
  74. package/dist/runtime/link.test.mjs +2 -2
  75. package/dist/runtime/mod.cjs +3 -3
  76. package/dist/runtime/mod.js +3 -3
  77. package/dist/runtime/multibase/multibase.test.mjs +2 -2
  78. package/dist/runtime/url.test.mjs +2 -2
  79. package/dist/{send-CaI0XRhr.mjs → send-B1cXA43r.mjs} +2 -2
  80. package/dist/sig/http.test.mjs +6 -6
  81. package/dist/sig/key.test.mjs +4 -4
  82. package/dist/sig/ld.test.mjs +561 -5
  83. package/dist/sig/mod.cjs +3 -3
  84. package/dist/sig/mod.js +3 -3
  85. package/dist/sig/owner.test.mjs +5 -5
  86. package/dist/sig/proof.test.mjs +4 -4
  87. package/dist/temporal-DE-KwUkP.mjs +95 -0
  88. package/dist/testing/docloader.test.mjs +1 -1
  89. package/dist/testing/mod.d.mts +48 -6
  90. package/dist/testing/mod.mjs +1 -1
  91. package/dist/{testing-2hgRVgOJ.mjs → testing-Brx3i-JJ.mjs} +2 -2
  92. package/dist/{transformers-BZ3mYJ1P.cjs → transformers-v2GoHgHn.cjs} +1 -1
  93. package/dist/{types-36cPcbK8.js → types-CRRb96yX.js} +1 -1
  94. package/dist/{types-DXy2Djgl.cjs → types-Ck12MwLI.cjs} +1 -1
  95. package/dist/vocab/actor.test.mjs +4 -4
  96. package/dist/vocab/cjs.test.mjs +1 -1
  97. package/dist/vocab/lookup.test.mjs +4 -4
  98. package/dist/vocab/mod.cjs +3 -3
  99. package/dist/vocab/mod.js +3 -3
  100. package/dist/vocab/type.test.mjs +2 -2
  101. package/dist/vocab/vocab.test.mjs +3 -3
  102. package/dist/{vocab-BPE_99_6.mjs → vocab-D9ewcFHJ.mjs} +186 -186
  103. package/dist/webfinger/handler.test.mjs +3 -3
  104. package/dist/webfinger/lookup.test.mjs +3 -3
  105. package/dist/webfinger/mod.cjs +1 -1
  106. package/dist/webfinger/mod.js +1 -1
  107. package/dist/x/cfworkers.cjs +1 -1
  108. package/dist/x/cfworkers.test.mjs +1 -1
  109. package/dist/x/hono.cjs +1 -1
  110. package/dist/x/hono.d.cts +1 -1
  111. package/dist/x/hono.d.ts +1 -1
  112. package/dist/x/sveltekit.cjs +1 -1
  113. package/dist/x/sveltekit.d.cts +1 -1
  114. package/dist/x/sveltekit.d.ts +1 -1
  115. package/package.json +1 -1
  116. package/dist/ld-C5izJRbw.mjs +0 -254
  117. /package/dist/{denokv-CoSB_Eps.mjs → denokv-NJPMXyK0.mjs} +0 -0
  118. /package/dist/{retry-Ddbq3AcK.mjs → retry-B_E3V_Dx.mjs} +0 -0
@@ -1,8 +1,8 @@
1
1
  const { Temporal } = require("@js-temporal/polyfill");
2
2
  const { URLPattern } = require("urlpattern-polyfill");
3
- const require_docloader = require("./docloader-L_Yv0SO1.cjs");
4
- const require_key = require("./key-DL1K1oFv.cjs");
5
- const require_http = require("./http-ChxLPxfJ.cjs");
3
+ const require_docloader = require("./docloader-CB5WT9yk.cjs");
4
+ const require_key = require("./key-D3E68McA.cjs");
5
+ const require_http = require("./http-L4148RPe.cjs");
6
6
  //#region src/runtime/authdocloader.ts
7
7
  const logger = (0, require("@logtape/logtape").getLogger)([
8
8
  "fedify",
@@ -1,9 +1,9 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { $ as UrlError, K as createRequest, Q as logRequest, Y as getRemoteDocument, rt as validatePublicUrl } from "./vocab-BPE_99_6.mjs";
5
- import { a as validateCryptoKey } from "./key-CcFvjYSE.mjs";
6
- import { n as doubleKnock } from "./http-lEtFJ9QZ.mjs";
4
+ import { $ as UrlError, K as createRequest, Q as logRequest, Y as getRemoteDocument, rt as validatePublicUrl } from "./vocab-D9ewcFHJ.mjs";
5
+ import { a as validateCryptoKey } from "./key-73aMUDcO.mjs";
6
+ import { n as doubleKnock } from "./http-GSUEBn2H.mjs";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  //#region src/runtime/authdocloader.ts
9
9
  const logger = getLogger([
@@ -1,8 +1,8 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
- import { a as getRemoteDocument, c as logRequest, l as UrlError, n as createRequest, u as validatePublicUrl } from "./docloader-CJRlqHTE.js";
4
- import { o as validateCryptoKey } from "./key-CfQiiCFY.js";
5
- import { t as doubleKnock } from "./http-CEocuLno.js";
3
+ import { a as getRemoteDocument, c as logRequest, l as UrlError, n as createRequest, u as validatePublicUrl } from "./docloader-XzYOPh6W.js";
4
+ import { o as validateCryptoKey } from "./key-DtaAm2V1.js";
5
+ import { t as doubleKnock } from "./http-CXpt61mo.js";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  //#region src/runtime/authdocloader.ts
8
8
  const logger = getLogger([
@@ -1,9 +1,9 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { U as getTypeId, ot as name, st as version } from "./vocab-BPE_99_6.mjs";
5
- import { i as RouterError, r as Router } from "./lookup-ByZEGrUD.mjs";
6
- import { t as InboxListenerSet } from "./inbox-f2JhwcoC.mjs";
4
+ import { U as getTypeId, ot as name, st as version } from "./vocab-D9ewcFHJ.mjs";
5
+ import { i as RouterError, r as Router } from "./lookup-DA92hMtK.mjs";
6
+ import { t as InboxListenerSet } from "./inbox-DRfIo1Ox.mjs";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
  //#region src/federation/builder.ts
@@ -40,7 +40,7 @@ var FederationBuilderImpl = class {
40
40
  this.collectionTypeIds = {};
41
41
  }
42
42
  async build(options) {
43
- const { FederationImpl } = await import("./middleware-DQF9aAWg.mjs");
43
+ const { FederationImpl } = await import("./middleware-ufTj15Ba.mjs");
44
44
  const f = new FederationImpl(options);
45
45
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
46
46
  f.router = this.router.clone();
@@ -1,7 +1,7 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { X as getUserAgent } from "./vocab-BPE_99_6.mjs";
4
+ import { X as getUserAgent } from "./vocab-D9ewcFHJ.mjs";
5
5
  import { n as parseSemVer } from "./semver-CgD82xxg.mjs";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  //#region src/nodeinfo/client.ts
@@ -1,7 +1,7 @@
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_transformers = require("../transformers-BZ3mYJ1P.cjs");
4
+ const require_transformers = require("../transformers-v2GoHgHn.cjs");
5
5
  exports.actorDehydrator = require_transformers.actorDehydrator;
6
6
  exports.autoIdAssigner = require_transformers.autoIdAssigner;
7
7
  exports.getDefaultActivityTransformers = require_transformers.getDefaultActivityTransformers;
@@ -1,5 +1,5 @@
1
1
  import { n as Activity } from "../vocab-BLvSEtuz.cjs";
2
- import { n as Context, pt as ActivityTransformer } from "../context-Crmwowsw.cjs";
2
+ import { n as Context, pt as ActivityTransformer } from "../context-jX79cwCB.cjs";
3
3
 
4
4
  //#region src/compat/transformers.d.ts
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { n as Activity } from "../vocab-lhCS9lzq.js";
4
- import { n as Context, pt as ActivityTransformer } from "../context-Cf8s07xm.js";
4
+ import { n as Context, pt as ActivityTransformer } from "../context-CNkTuNIm.js";
5
5
 
6
6
  //#region src/compat/transformers.d.ts
7
7
  /**
@@ -1,13 +1,13 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { C as Person, u as Follow } from "../vocab-BPE_99_6.mjs";
5
- import { t as test } from "../testing-2hgRVgOJ.mjs";
4
+ import { C as Person, u as Follow } from "../vocab-D9ewcFHJ.mjs";
5
+ import { t as test } from "../testing-Brx3i-JJ.mjs";
6
6
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
7
7
  import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
8
8
  import { t as assert } from "../assert-DikXweDx.mjs";
9
9
  import { t as MemoryKvStore } from "../kv-DM1zFCtL.mjs";
10
- import { _ as actorDehydrator, n as FederationImpl, v as autoIdAssigner } from "../middleware-DT1q8p2_.mjs";
10
+ import { _ as actorDehydrator, n as FederationImpl, v as autoIdAssigner } from "../middleware-DNRnMI46.mjs";
11
11
  //#region src/compat/transformers.test.ts
12
12
  const context = new FederationImpl({ kv: new MemoryKvStore() }).createContext(new URL("http://example.com/"));
13
13
  test("autoIdAssigner", async () => {
@@ -480,6 +480,42 @@ interface InboxMessage {
480
480
  id: ReturnType<typeof crypto.randomUUID>;
481
481
  baseUrl: string;
482
482
  activity: unknown;
483
+ /**
484
+ * The normalized JSON-LD representation of a signed inbox activity that
485
+ * Fedify already compacted successfully while accepting the request. Queue
486
+ * workers can reuse this producer-side parse cache under stricter loader or
487
+ * network constraints without changing the raw payload preserved for
488
+ * forwarding.
489
+ *
490
+ * This may exist even when {@link ldSignatureVerified} is `false`, because
491
+ * fallback-authenticated traffic and already-queued backlog items can still
492
+ * depend on the cached normalized form to avoid re-fetching remote custom
493
+ * contexts during worker processing.
494
+ *
495
+ * This is optional for backward compatibility with messages that were
496
+ * queued by older Fedify versions or that were already in a queue before
497
+ * upgrading.
498
+ *
499
+ * Fedify keeps this on the queued message itself instead of an external
500
+ * sidecar because generic queue backends do not provide reliable lifecycle
501
+ * guarantees for auxiliary storage across retries and redeliveries.
502
+ *
503
+ * @internal
504
+ */
505
+ normalizedActivity?: unknown;
506
+ /**
507
+ * Whether the producer actually verified the Linked Data Signature before
508
+ * queueing this message. This lets workers distinguish verified LDS replay
509
+ * from other authenticated inbox traffic that merely happened to include a
510
+ * signature block. This provenance marker is separate from the optional
511
+ * normalizedActivity parse cache.
512
+ *
513
+ * `undefined` preserves backward compatibility with older queued messages
514
+ * that predate this marker.
515
+ *
516
+ * @internal
517
+ */
518
+ ldSignatureVerified?: boolean;
483
519
  started: string;
484
520
  attempt: number;
485
521
  identifier: string | null;
@@ -2049,9 +2085,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2049
2085
  * Forwards a received activity to the recipients' inboxes. The forwarded
2050
2086
  * activity will be signed in HTTP Signatures by the forwarder, but its
2051
2087
  * payload will not be modified, i.e., Linked Data Signatures and Object
2052
- * Integrity Proofs will not be added. Therefore, if the activity is not
2053
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2054
- * Proofs), the recipient probably will not trust the activity.
2088
+ * Integrity Proofs will not be added. Even when Fedify internally
2089
+ * normalizes a Linked Data Signature activity for parsing, this method still
2090
+ * forwards the original received payload so the sender's signatures/proofs
2091
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2092
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2093
+ * recipient probably will not trust the activity.
2055
2094
  * @param forwarder The forwarder's identifier or the forwarder's username
2056
2095
  * or the forwarder's key pair(s).
2057
2096
  * @param recipients The recipients of the activity.
@@ -2069,9 +2108,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2069
2108
  * Forwards a received activity to the recipients' inboxes. The forwarded
2070
2109
  * activity will be signed in HTTP Signatures by the forwarder, but its
2071
2110
  * payload will not be modified, i.e., Linked Data Signatures and Object
2072
- * Integrity Proofs will not be added. Therefore, if the activity is not
2073
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2074
- * Proofs), the recipient probably will not trust the activity.
2111
+ * Integrity Proofs will not be added. Even when Fedify internally
2112
+ * normalizes a Linked Data Signature activity for parsing, this method still
2113
+ * forwards the original received payload so the sender's signatures/proofs
2114
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2115
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2116
+ * recipient probably will not trust the activity.
2075
2117
  * @param forwarder The forwarder's identifier or the forwarder's username.
2076
2118
  * @param recipients In this case, it must be `"followers"`.
2077
2119
  * @param options Options for forwarding the activity.
@@ -478,6 +478,42 @@ interface InboxMessage {
478
478
  id: ReturnType<typeof crypto.randomUUID>;
479
479
  baseUrl: string;
480
480
  activity: unknown;
481
+ /**
482
+ * The normalized JSON-LD representation of a signed inbox activity that
483
+ * Fedify already compacted successfully while accepting the request. Queue
484
+ * workers can reuse this producer-side parse cache under stricter loader or
485
+ * network constraints without changing the raw payload preserved for
486
+ * forwarding.
487
+ *
488
+ * This may exist even when {@link ldSignatureVerified} is `false`, because
489
+ * fallback-authenticated traffic and already-queued backlog items can still
490
+ * depend on the cached normalized form to avoid re-fetching remote custom
491
+ * contexts during worker processing.
492
+ *
493
+ * This is optional for backward compatibility with messages that were
494
+ * queued by older Fedify versions or that were already in a queue before
495
+ * upgrading.
496
+ *
497
+ * Fedify keeps this on the queued message itself instead of an external
498
+ * sidecar because generic queue backends do not provide reliable lifecycle
499
+ * guarantees for auxiliary storage across retries and redeliveries.
500
+ *
501
+ * @internal
502
+ */
503
+ normalizedActivity?: unknown;
504
+ /**
505
+ * Whether the producer actually verified the Linked Data Signature before
506
+ * queueing this message. This lets workers distinguish verified LDS replay
507
+ * from other authenticated inbox traffic that merely happened to include a
508
+ * signature block. This provenance marker is separate from the optional
509
+ * normalizedActivity parse cache.
510
+ *
511
+ * `undefined` preserves backward compatibility with older queued messages
512
+ * that predate this marker.
513
+ *
514
+ * @internal
515
+ */
516
+ ldSignatureVerified?: boolean;
481
517
  started: string;
482
518
  attempt: number;
483
519
  identifier: string | null;
@@ -2047,9 +2083,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2047
2083
  * Forwards a received activity to the recipients' inboxes. The forwarded
2048
2084
  * activity will be signed in HTTP Signatures by the forwarder, but its
2049
2085
  * payload will not be modified, i.e., Linked Data Signatures and Object
2050
- * Integrity Proofs will not be added. Therefore, if the activity is not
2051
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2052
- * Proofs), the recipient probably will not trust the activity.
2086
+ * Integrity Proofs will not be added. Even when Fedify internally
2087
+ * normalizes a Linked Data Signature activity for parsing, this method still
2088
+ * forwards the original received payload so the sender's signatures/proofs
2089
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2090
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2091
+ * recipient probably will not trust the activity.
2053
2092
  * @param forwarder The forwarder's identifier or the forwarder's username
2054
2093
  * or the forwarder's key pair(s).
2055
2094
  * @param recipients The recipients of the activity.
@@ -2067,9 +2106,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2067
2106
  * Forwards a received activity to the recipients' inboxes. The forwarded
2068
2107
  * activity will be signed in HTTP Signatures by the forwarder, but its
2069
2108
  * payload will not be modified, i.e., Linked Data Signatures and Object
2070
- * Integrity Proofs will not be added. Therefore, if the activity is not
2071
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2072
- * Proofs), the recipient probably will not trust the activity.
2109
+ * Integrity Proofs will not be added. Even when Fedify internally
2110
+ * normalizes a Linked Data Signature activity for parsing, this method still
2111
+ * forwards the original received payload so the sender's signatures/proofs
2112
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2113
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2114
+ * recipient probably will not trust the activity.
2073
2115
  * @param forwarder The forwarder's identifier or the forwarder's username.
2074
2116
  * @param recipients In this case, it must be `"followers"`.
2075
2117
  * @param options Options for forwarding the activity.
@@ -29,7 +29,7 @@ let node_dns_promises = require("node:dns/promises");
29
29
  let node_net = require("node:net");
30
30
  //#region deno.json
31
31
  var name = "@fedify/fedify";
32
- var version = "1.9.10";
32
+ var version = "1.9.11";
33
33
  //#endregion
34
34
  //#region src/runtime/contexts.ts
35
35
  const preloadedContexts = {
@@ -6,7 +6,7 @@ import { lookup } from "node:dns/promises";
6
6
  import { isIP } from "node:net";
7
7
  //#region deno.json
8
8
  var name = "@fedify/fedify";
9
- var version = "1.9.10";
9
+ var version = "1.9.11";
10
10
  //#endregion
11
11
  //#region src/runtime/contexts.ts
12
12
  const preloadedContexts = {
@@ -1,7 +1,7 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { ct as __commonJSMin, dt as __toESM } from "./vocab-BPE_99_6.mjs";
4
+ import { ct as __commonJSMin, dt as __toESM } from "./vocab-D9ewcFHJ.mjs";
5
5
  //#region ../../node_modules/.pnpm/glob-to-regexp@0.4.1/node_modules/glob-to-regexp/index.js
6
6
  var require_glob_to_regexp = /* @__PURE__ */ __commonJSMin(((exports, module) => {
7
7
  module.exports = function(glob, opts) {
@@ -1,14 +1,14 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { C as Person, _ as Note, t as Activity } from "../vocab-BPE_99_6.mjs";
5
- import { t as test } from "../testing-2hgRVgOJ.mjs";
4
+ import { C as Person, _ as Note, t as Activity } from "../vocab-D9ewcFHJ.mjs";
5
+ import { t as test } from "../testing-Brx3i-JJ.mjs";
6
6
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
7
7
  import { a as assertExists } from "../std__assert-2v7gYiZp.mjs";
8
8
  import { t as assertThrows } from "../assert_throws-BIL7gChy.mjs";
9
9
  import { t as MemoryKvStore } from "../kv-DM1zFCtL.mjs";
10
10
  import { n as parseSemVer } from "../semver-CgD82xxg.mjs";
11
- import { n as createFederationBuilder } from "../builder-Dy69enN4.mjs";
11
+ import { n as createFederationBuilder } from "../builder-B8VNNUzm.mjs";
12
12
  //#region src/federation/builder.test.ts
13
13
  test("FederationBuilder", async (t) => {
14
14
  await t.step("should build a Federation object with registered components", async () => {
@@ -1,7 +1,7 @@
1
1
  import "@js-temporal/polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { t as test } from "../testing-2hgRVgOJ.mjs";
4
+ import { t as test } from "../testing-Brx3i-JJ.mjs";
5
5
  import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
6
6
  import "../std__assert-2v7gYiZp.mjs";
7
7
  import { n as digest, t as buildCollectionSynchronizationHeader } from "../collection-BD6-SZ6O.mjs";