@fedify/fedify 2.2.3-dev.1098 → 2.2.3

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 (60) hide show
  1. package/dist/{builder-mqtih91o.mjs → builder-CaVN56-q.mjs} +2 -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-BPMgyX7m.d.ts → context-BU-1O90h.d.ts} +48 -6
  6. package/dist/{context-DwkhwUX9.d.cts → context-DVA8wHZ0.d.cts} +48 -6
  7. package/dist/{deno-CziVFvS6.mjs → deno-DMg4SgCb.mjs} +1 -1
  8. package/dist/{docloader-fI9DeYyB.mjs → docloader-Da15YRxG.mjs} +2 -2
  9. package/dist/federation/builder.test.mjs +1 -1
  10. package/dist/federation/handler.test.mjs +1363 -43
  11. package/dist/federation/idempotency.test.mjs +2 -2
  12. package/dist/federation/middleware.test.mjs +1584 -80
  13. package/dist/federation/mod.cjs +1 -1
  14. package/dist/federation/mod.d.cts +2 -2
  15. package/dist/federation/mod.d.ts +2 -2
  16. package/dist/federation/mod.js +1 -1
  17. package/dist/federation/retry.test.mjs +1 -1
  18. package/dist/federation/send.test.mjs +3 -3
  19. package/dist/federation/temporal.test.d.mts +2 -0
  20. package/dist/federation/temporal.test.mjs +71 -0
  21. package/dist/federation/webfinger.test.mjs +1 -1
  22. package/dist/{http-D8qsXrUS.js → http-BPPaA2uz.js} +1 -1
  23. package/dist/{http-BDCGf4Ac.mjs → http-C_edJspG.mjs} +2 -2
  24. package/dist/{http-kPc328Pc.cjs → http-Cl0Q2bUO.cjs} +1 -1
  25. package/dist/{key-D3TgMhcs.mjs → key-BAQuZEU1.mjs} +1 -1
  26. package/dist/{kv-cache-D_eVhctK.js → kv-cache-C4DGZ_t4.js} +1 -1
  27. package/dist/{kv-cache-zxW74Wfd.cjs → kv-cache-DmGi6uC-.cjs} +1 -1
  28. package/dist/ld-tusP_XxG.mjs +573 -0
  29. package/dist/{middleware-xR9KxICq.cjs → middleware-0V-9qj7m.cjs} +399 -73
  30. package/dist/{middleware-gXlDLkok.js → middleware-Ar1QOOPG.js} +396 -71
  31. package/dist/{middleware-2gmMVy8b.mjs → middleware-D9k0Knum.mjs} +314 -78
  32. package/dist/{middleware-BuOXw_hM.cjs → middleware-OQPBzyvx.cjs} +1 -1
  33. package/dist/{middleware-CfaiRKQ9.mjs → middleware-madKLp2f.mjs} +1 -1
  34. package/dist/{mod-CNAHY39V.d.ts → mod-BVt6iTmH.d.ts} +1 -1
  35. package/dist/{mod-Bi6WOdti.d.cts → mod-q-NFLW6B.d.cts} +1 -1
  36. package/dist/mod.cjs +4 -4
  37. package/dist/mod.d.cts +2 -2
  38. package/dist/mod.d.ts +2 -2
  39. package/dist/mod.js +4 -4
  40. package/dist/nodeinfo/handler.test.mjs +1 -1
  41. package/dist/{owner-DBSV2TSl.mjs → owner-DRHNR5YO.mjs} +2 -2
  42. package/dist/{proof-tz91vdtN.mjs → proof-DLhLRv3m.mjs} +2 -2
  43. package/dist/{proof-CZDkoeWG.cjs → proof-DfrItHmh.cjs} +351 -3
  44. package/dist/{proof-z93OkIov.js → proof-SQ4cQs3A.js} +298 -4
  45. package/dist/{send-CNjG31rJ.mjs → send-C7tim5U9.mjs} +2 -2
  46. package/dist/sig/http.test.mjs +2 -2
  47. package/dist/sig/key.test.mjs +1 -1
  48. package/dist/sig/ld.test.mjs +558 -2
  49. package/dist/sig/mod.cjs +2 -2
  50. package/dist/sig/mod.js +2 -2
  51. package/dist/sig/owner.test.mjs +1 -1
  52. package/dist/sig/proof.test.mjs +1 -1
  53. package/dist/temporal-LL61Ddf2.mjs +95 -0
  54. package/dist/testing/mod.d.mts +48 -6
  55. package/dist/utils/docloader.test.mjs +2 -2
  56. package/dist/utils/mod.cjs +1 -1
  57. package/dist/utils/mod.js +1 -1
  58. package/package.json +5 -5
  59. package/dist/ld-D_u8mdpv.mjs +0 -279
  60. /package/dist/{retry-bMXBL97A.mjs → retry-v_sGLH1d.mjs} +0 -0
@@ -2,7 +2,7 @@ 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-CziVFvS6.mjs";
5
+ import { n as version, t as name } from "./deno-DMg4SgCb.mjs";
6
6
  import { t as ActivityListenerSet } from "./activity-listener-ell7W1s9.mjs";
7
7
  import { Tombstone, getTypeId } from "@fedify/vocab";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -58,7 +58,7 @@ var FederationBuilderImpl = class {
58
58
  this.collectionTypeIds = {};
59
59
  }
60
60
  async build(options) {
61
- const { FederationImpl } = await import("./middleware-CfaiRKQ9.mjs");
61
+ const { FederationImpl } = await import("./middleware-madKLp2f.mjs");
62
62
  const f = new FederationImpl(options);
63
63
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
64
64
  f.router = this.router.clone();
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { Ot as ActivityTransformer, n as Context } from "../context-DwkhwUX9.cjs";
2
+ import { Ot as ActivityTransformer, n as Context } from "../context-DVA8wHZ0.cjs";
3
3
  import { Activity } from "@fedify/vocab";
4
4
 
5
5
  //#region src/compat/transformers.d.ts
@@ -1,5 +1,5 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { Ot as ActivityTransformer, n as Context } from "../context-BPMgyX7m.js";
2
+ import { Ot as ActivityTransformer, n as Context } from "../context-BU-1O90h.js";
3
3
  import { Activity } from "@fedify/vocab";
4
4
 
5
5
  //#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-DikXweDx.mjs";
7
7
  import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
8
- import { n as FederationImpl, v as actorDehydrator, y as autoIdAssigner } from "../middleware-2gmMVy8b.mjs";
8
+ import { n as FederationImpl, v as actorDehydrator, y as autoIdAssigner } from "../middleware-D9k0Knum.mjs";
9
9
  import { test } from "@fedify/fixture";
10
10
  import { Follow, Person } from "@fedify/vocab";
11
11
  //#region src/compat/transformers.test.ts
@@ -734,6 +734,42 @@ interface InboxMessage {
734
734
  readonly id: ReturnType<typeof crypto.randomUUID>;
735
735
  readonly baseUrl: string;
736
736
  readonly activity: unknown;
737
+ /**
738
+ * The normalized JSON-LD representation of a signed inbox activity that
739
+ * Fedify already compacted successfully while accepting the request. Queue
740
+ * workers can reuse this producer-side parse cache under stricter loader or
741
+ * network constraints without changing the raw payload preserved for
742
+ * forwarding.
743
+ *
744
+ * This may exist even when {@link ldSignatureVerified} is `false`, because
745
+ * fallback-authenticated traffic and already-queued backlog items can still
746
+ * depend on the cached normalized form to avoid re-fetching remote custom
747
+ * contexts during worker processing.
748
+ *
749
+ * This is optional for backward compatibility with messages that were
750
+ * queued by older Fedify versions or that were already in a queue before
751
+ * upgrading.
752
+ *
753
+ * Fedify keeps this on the queued message itself instead of an external
754
+ * sidecar because generic queue backends do not provide reliable lifecycle
755
+ * guarantees for auxiliary storage across retries and redeliveries.
756
+ *
757
+ * @internal
758
+ */
759
+ readonly normalizedActivity?: unknown;
760
+ /**
761
+ * Whether the producer actually verified the Linked Data Signature before
762
+ * queueing this message. This lets workers distinguish verified LDS replay
763
+ * from other authenticated inbox traffic that merely happened to include a
764
+ * signature block. This provenance marker is separate from the optional
765
+ * normalizedActivity parse cache.
766
+ *
767
+ * `undefined` preserves backward compatibility with older queued messages
768
+ * that predate this marker.
769
+ *
770
+ * @internal
771
+ */
772
+ readonly ldSignatureVerified?: boolean;
737
773
  readonly started: string;
738
774
  readonly attempt: number;
739
775
  readonly identifier: string | null;
@@ -2497,9 +2533,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2497
2533
  * Forwards a received activity to the recipients' inboxes. The forwarded
2498
2534
  * activity will be signed in HTTP Signatures by the forwarder, but its
2499
2535
  * payload will not be modified, i.e., Linked Data Signatures and Object
2500
- * Integrity Proofs will not be added. Therefore, if the activity is not
2501
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2502
- * Proofs), the recipient probably will not trust the activity.
2536
+ * Integrity Proofs will not be added. Even when Fedify internally
2537
+ * normalizes a Linked Data Signature activity for parsing, this method still
2538
+ * forwards the original received payload so the sender's signatures/proofs
2539
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2540
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2541
+ * recipient probably will not trust the activity.
2503
2542
  * @param forwarder The forwarder's identifier or the forwarder's username
2504
2543
  * or the forwarder's key pair(s).
2505
2544
  * @param recipients The recipients of the activity.
@@ -2515,9 +2554,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2515
2554
  * Forwards a received activity to the recipients' inboxes. The forwarded
2516
2555
  * activity will be signed in HTTP Signatures by the forwarder, but its
2517
2556
  * payload will not be modified, i.e., Linked Data Signatures and Object
2518
- * Integrity Proofs will not be added. Therefore, if the activity is not
2519
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2520
- * Proofs), the recipient probably will not trust the activity.
2557
+ * Integrity Proofs will not be added. Even when Fedify internally
2558
+ * normalizes a Linked Data Signature activity for parsing, this method still
2559
+ * forwards the original received payload so the sender's signatures/proofs
2560
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2561
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2562
+ * recipient probably will not trust the activity.
2521
2563
  * @param forwarder The forwarder's identifier or the forwarder's username.
2522
2564
  * @param recipients In this case, it must be `"followers"`.
2523
2565
  * @param options Options for forwarding the activity.
@@ -734,6 +734,42 @@ interface InboxMessage {
734
734
  readonly id: ReturnType<typeof crypto.randomUUID>;
735
735
  readonly baseUrl: string;
736
736
  readonly activity: unknown;
737
+ /**
738
+ * The normalized JSON-LD representation of a signed inbox activity that
739
+ * Fedify already compacted successfully while accepting the request. Queue
740
+ * workers can reuse this producer-side parse cache under stricter loader or
741
+ * network constraints without changing the raw payload preserved for
742
+ * forwarding.
743
+ *
744
+ * This may exist even when {@link ldSignatureVerified} is `false`, because
745
+ * fallback-authenticated traffic and already-queued backlog items can still
746
+ * depend on the cached normalized form to avoid re-fetching remote custom
747
+ * contexts during worker processing.
748
+ *
749
+ * This is optional for backward compatibility with messages that were
750
+ * queued by older Fedify versions or that were already in a queue before
751
+ * upgrading.
752
+ *
753
+ * Fedify keeps this on the queued message itself instead of an external
754
+ * sidecar because generic queue backends do not provide reliable lifecycle
755
+ * guarantees for auxiliary storage across retries and redeliveries.
756
+ *
757
+ * @internal
758
+ */
759
+ readonly normalizedActivity?: unknown;
760
+ /**
761
+ * Whether the producer actually verified the Linked Data Signature before
762
+ * queueing this message. This lets workers distinguish verified LDS replay
763
+ * from other authenticated inbox traffic that merely happened to include a
764
+ * signature block. This provenance marker is separate from the optional
765
+ * normalizedActivity parse cache.
766
+ *
767
+ * `undefined` preserves backward compatibility with older queued messages
768
+ * that predate this marker.
769
+ *
770
+ * @internal
771
+ */
772
+ readonly ldSignatureVerified?: boolean;
737
773
  readonly started: string;
738
774
  readonly attempt: number;
739
775
  readonly identifier: string | null;
@@ -2497,9 +2533,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2497
2533
  * Forwards a received activity to the recipients' inboxes. The forwarded
2498
2534
  * activity will be signed in HTTP Signatures by the forwarder, but its
2499
2535
  * payload will not be modified, i.e., Linked Data Signatures and Object
2500
- * Integrity Proofs will not be added. Therefore, if the activity is not
2501
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2502
- * Proofs), the recipient probably will not trust the activity.
2536
+ * Integrity Proofs will not be added. Even when Fedify internally
2537
+ * normalizes a Linked Data Signature activity for parsing, this method still
2538
+ * forwards the original received payload so the sender's signatures/proofs
2539
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2540
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2541
+ * recipient probably will not trust the activity.
2503
2542
  * @param forwarder The forwarder's identifier or the forwarder's username
2504
2543
  * or the forwarder's key pair(s).
2505
2544
  * @param recipients The recipients of the activity.
@@ -2515,9 +2554,12 @@ interface InboxContext<TContextData> extends Context<TContextData> {
2515
2554
  * Forwards a received activity to the recipients' inboxes. The forwarded
2516
2555
  * activity will be signed in HTTP Signatures by the forwarder, but its
2517
2556
  * payload will not be modified, i.e., Linked Data Signatures and Object
2518
- * Integrity Proofs will not be added. Therefore, if the activity is not
2519
- * signed (i.e., it has neither Linked Data Signatures nor Object Integrity
2520
- * Proofs), the recipient probably will not trust the activity.
2557
+ * Integrity Proofs will not be added. Even when Fedify internally
2558
+ * normalizes a Linked Data Signature activity for parsing, this method still
2559
+ * forwards the original received payload so the sender's signatures/proofs
2560
+ * are preserved as-is. Therefore, if the activity is not signed (i.e., it
2561
+ * has neither Linked Data Signatures nor Object Integrity Proofs), the
2562
+ * recipient probably will not trust the activity.
2521
2563
  * @param forwarder The forwarder's identifier or the forwarder's username.
2522
2564
  * @param recipients In this case, it must be `"followers"`.
2523
2565
  * @param options Options for forwarding the activity.
@@ -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.3-dev.1098+aaf52a7f";
6
+ var version = "2.2.3";
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-D3TgMhcs.mjs";
5
- import { n as doubleKnock } from "./http-BDCGf4Ac.mjs";
4
+ import { o as validateCryptoKey } from "./key-BAQuZEU1.mjs";
5
+ import { n as doubleKnock } from "./http-C_edJspG.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";
@@ -6,7 +6,7 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
6
6
  import { i as assertExists } from "../std__assert-CRDpx_HF.mjs";
7
7
  import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
8
8
  import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
9
- import { n as createFederationBuilder } from "../builder-mqtih91o.mjs";
9
+ import { n as createFederationBuilder } from "../builder-CaVN56-q.mjs";
10
10
  import { test } from "@fedify/fixture";
11
11
  import { Activity, Note, Person } from "@fedify/vocab";
12
12
  //#region src/federation/builder.test.ts