@fedify/fedify 2.0.0-pr.435.1673 → 2.0.0-pr.445.1694

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 (138) hide show
  1. package/dist/{actor-CNUje03O.cjs → actor-CwZ2m5rG.cjs} +7263 -2440
  2. package/dist/{actor-DMgu-ZjT.d.cts → actor-D6K058Tb.d.cts} +1 -1
  3. package/dist/{actor-BxAu0qet.js → actor-D8gCwLzv.js} +1 -1
  4. package/dist/{actor-m_ko-86v.js → actor-DoMcqXsW.js} +7263 -2440
  5. package/dist/{actor-C22bXuuC.d.ts → actor-T6RyhRgk.d.ts} +1 -1
  6. package/dist/{authdocloader-nRFL9luh.js → authdocloader-Cv_qEn1G.js} +3 -3
  7. package/dist/{authdocloader-Chl2nuOI.js → authdocloader-DYTNpaMA.js} +3 -3
  8. package/dist/{authdocloader-D_3mtAjX.cjs → authdocloader-bsmVF6eO.cjs} +3 -3
  9. package/dist/{builder-C8Of4dPy.js → builder-1_skw-d2.js} +10 -4
  10. package/dist/{client-yGBH5stP.js → client-D5CBsPrc.js} +1 -1
  11. package/dist/compat/mod.d.cts +7 -7
  12. package/dist/compat/mod.d.ts +7 -7
  13. package/dist/compat/transformers.test.js +16 -16
  14. package/dist/{context-CQsAT7xk.d.ts → context-DBKpNBnc.d.ts} +67 -12
  15. package/dist/{context-tVOQ76fi.d.cts → context-DiqjMRef.d.cts} +67 -12
  16. package/dist/{docloader-SZjTrl6Z.cjs → docloader-CYnQRIXv.cjs} +1 -1
  17. package/dist/{docloader-_WdHTWQR.js → docloader-Czl3xV10.js} +1 -1
  18. package/dist/{esm-e_G_xo95.js → esm-Dl5T1RNE.js} +1 -1
  19. package/dist/federation/builder.test.js +5 -5
  20. package/dist/federation/collection.test.js +3 -3
  21. package/dist/federation/handler.test.js +17 -17
  22. package/dist/federation/idempotency.test.d.ts +3 -0
  23. package/dist/federation/idempotency.test.js +202 -0
  24. package/dist/federation/inbox.test.js +4 -4
  25. package/dist/federation/keycache.test.js +4 -4
  26. package/dist/federation/kv.test.js +3 -3
  27. package/dist/federation/middleware.test.js +24 -47
  28. package/dist/federation/mod.cjs +10 -10
  29. package/dist/federation/mod.d.cts +7 -7
  30. package/dist/federation/mod.d.ts +7 -7
  31. package/dist/federation/mod.js +10 -10
  32. package/dist/federation/mq.test.js +3 -3
  33. package/dist/federation/negotiation.test.js +3 -3
  34. package/dist/federation/retry.test.js +3 -3
  35. package/dist/federation/router.test.js +3 -3
  36. package/dist/federation/send.test.js +10 -10
  37. package/dist/fixtures/media.example.com/avatars/test-avatar.jpg.json +6 -0
  38. package/dist/{http-DREvFalF.cjs → http-CAusBl_3.cjs} +3 -3
  39. package/dist/{http-BpoEurUR.js → http-C_Qc2neP.js} +3 -3
  40. package/dist/{http-BEo67UOx.js → http-CuS-d4U0.js} +2 -2
  41. package/dist/{http-BS6766zs.d.cts → http-D-e6AFwR.d.cts} +1 -1
  42. package/dist/{http-DqSNLFNY.d.ts → http-D6Uj2x2y.d.ts} +1 -1
  43. package/dist/{inbox-D-B5xFtJ.js → inbox-IETv_Qez.js} +24 -7
  44. package/dist/{key-Cf8KTg-A.js → key-BNJQQm3h.js} +2 -2
  45. package/dist/{key-DJpcumqB.js → key-C_ruQbbl.js} +4 -4
  46. package/dist/key-DIMJMxf4.cjs +10 -0
  47. package/dist/{key-Cps8Sv3N.js → key-DnqhSgAv.js} +2 -2
  48. package/dist/{key-DqrTz8Xq.js → key-DpFjiItf.js} +3 -3
  49. package/dist/{key-JqiQvcq1.cjs → key-DuXv64tg.cjs} +2 -2
  50. package/dist/{keycache-D_Q1fPV0.js → keycache-CSBkusP8.js} +1 -1
  51. package/dist/{keys-F0jh2GNR.js → keys-D3_MDK7n.js} +1 -1
  52. package/dist/{ld-CXygHn_m.js → ld-Isot0tiW.js} +2 -2
  53. package/dist/{lookup-DuqY2_In.js → lookup-CbtuFbtg.js} +21 -12
  54. package/dist/{lookup-C-Y0Ep1a.cjs → lookup-D6dro5Au.cjs} +1 -1
  55. package/dist/{lookup-C6WSLjPE.js → lookup-Dhm78GlK.js} +1 -1
  56. package/dist/middleware-BpR6186a.js +26 -0
  57. package/dist/{middleware-2qNNXYEE.js → middleware-BuHr2fzh.js} +52 -29
  58. package/dist/middleware-DDMxdtWM.cjs +17 -0
  59. package/dist/{middleware-CMiUxZ6O.js → middleware-DQYscW90.js} +26 -26
  60. package/dist/{middleware-BsFAFlnZ.cjs → middleware-Dgmdgrvb.cjs} +52 -29
  61. package/dist/middleware-T-knSMwl.js +17 -0
  62. package/dist/{mod-Drmz72EK.d.ts → mod-BhUKmBJD.d.ts} +2 -2
  63. package/dist/{mod-DBQAI4v9.d.cts → mod-Bpb5QLaZ.d.cts} +2 -2
  64. package/dist/{mod-TFoH2Ql8.d.ts → mod-CerN_Sza.d.ts} +1 -1
  65. package/dist/{mod-Dc_-mf8s.d.cts → mod-Cj1tHXBR.d.cts} +1 -1
  66. package/dist/{mod-evzlRVZq.d.cts → mod-CxkWO3Mg.d.cts} +19 -1
  67. package/dist/{mod-B26zRlH1.d.ts → mod-D_y2y32N.d.ts} +2 -2
  68. package/dist/{mod-BClfg3ej.d.cts → mod-Djzcw2ry.d.cts} +2 -2
  69. package/dist/{mod-Cxt4Kpf6.d.ts → mod-DlU8ISoa.d.ts} +19 -1
  70. package/dist/mod.cjs +10 -10
  71. package/dist/mod.d.cts +10 -10
  72. package/dist/mod.d.ts +10 -10
  73. package/dist/mod.js +10 -10
  74. package/dist/nodeinfo/client.test.js +5 -5
  75. package/dist/nodeinfo/handler.test.js +16 -16
  76. package/dist/nodeinfo/mod.cjs +2 -2
  77. package/dist/nodeinfo/mod.js +2 -2
  78. package/dist/nodeinfo/types.test.js +3 -3
  79. package/dist/{owner-B-7Ptt_m.d.cts → owner-BN_tO3cY.d.cts} +2 -2
  80. package/dist/{owner-D2fTlp_x.js → owner-ChSL4aJ7.js} +2 -2
  81. package/dist/{owner-CQPnQVtf.d.ts → owner-hd9lvQcP.d.ts} +2 -2
  82. package/dist/{proof-CHM9su4L.js → proof-BiSCuwyA.js} +3 -3
  83. package/dist/{proof-C4Y4gJcm.cjs → proof-ONNmhInb.cjs} +3 -3
  84. package/dist/{proof-kEUjWRNJ.js → proof-x3IBewan.js} +2 -2
  85. package/dist/runtime/authdocloader.test.js +9 -9
  86. package/dist/runtime/docloader.test.js +4 -4
  87. package/dist/runtime/key.test.js +5 -5
  88. package/dist/runtime/langstr.test.js +3 -3
  89. package/dist/runtime/link.test.js +3 -3
  90. package/dist/runtime/mod.cjs +6 -6
  91. package/dist/runtime/mod.d.cts +3 -3
  92. package/dist/runtime/mod.d.ts +3 -3
  93. package/dist/runtime/mod.js +6 -6
  94. package/dist/runtime/multibase/multibase.test.js +3 -3
  95. package/dist/runtime/url.test.js +3 -3
  96. package/dist/{send-Utq2Jm0I.js → send-D5fjmUEj.js} +2 -2
  97. package/dist/sig/http.test.js +8 -8
  98. package/dist/sig/key.test.js +6 -6
  99. package/dist/sig/ld.test.js +7 -7
  100. package/dist/sig/mod.cjs +6 -6
  101. package/dist/sig/mod.d.cts +5 -5
  102. package/dist/sig/mod.d.ts +5 -5
  103. package/dist/sig/mod.js +6 -6
  104. package/dist/sig/owner.test.js +7 -7
  105. package/dist/sig/proof.test.js +7 -7
  106. package/dist/testing/docloader.test.js +3 -3
  107. package/dist/testing/mod.d.ts +272 -0
  108. package/dist/testing/mod.js +3 -3
  109. package/dist/{testing-DUpTIvNE.js → testing-tWr1VQxx.js} +2 -2
  110. package/dist/{type-BYN6Ax2M.js → type-DaUr3Il7.js} +6943 -2120
  111. package/dist/{types-BBpQe860.cjs → types-D2Nyz0tR.cjs} +1 -1
  112. package/dist/{types-BXkh8ctL.js → types-DQuSDtDg.js} +1 -1
  113. package/dist/vocab/actor.test.js +5 -5
  114. package/dist/vocab/lookup.test.js +255 -5
  115. package/dist/vocab/mod.cjs +4 -4
  116. package/dist/vocab/mod.d.cts +3 -3
  117. package/dist/vocab/mod.d.ts +3 -3
  118. package/dist/vocab/mod.js +4 -4
  119. package/dist/vocab/type.test.js +3 -3
  120. package/dist/vocab/vocab.test.js +397 -8
  121. package/dist/{vocab-SOE1ifCr.d.ts → vocab-BI0Ak5lL.d.ts} +290 -0
  122. package/dist/{vocab-DWZQ7gVQ.cjs → vocab-Dd4VMrr0.cjs} +23 -14
  123. package/dist/{vocab-DJTYMqyU.d.cts → vocab-Dw1-yVGg.d.cts} +290 -0
  124. package/dist/{vocab-PKJB4DyY.js → vocab-w--qk7HF.js} +23 -14
  125. package/dist/webfinger/handler.test.js +16 -16
  126. package/dist/webfinger/lookup.test.js +4 -4
  127. package/dist/webfinger/mod.cjs +2 -2
  128. package/dist/webfinger/mod.js +2 -2
  129. package/dist/x/cfworkers.test.js +3 -3
  130. package/dist/x/hono.d.cts +6 -6
  131. package/dist/x/hono.d.ts +6 -6
  132. package/dist/x/sveltekit.d.cts +6 -6
  133. package/dist/x/sveltekit.d.ts +6 -6
  134. package/package.json +1 -1
  135. package/dist/key-BvvbahfP.cjs +0 -10
  136. package/dist/middleware-BD1IE5O5.js +0 -26
  137. package/dist/middleware-BuZrvrDv.js +0 -17
  138. package/dist/middleware-h_3nRr8m.cjs +0 -17
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { GetUserAgentOptions } from "./docloader-CxWcuWqQ.js";
4
- import { Application, Group, Organization, Person, Service } from "./vocab-SOE1ifCr.js";
4
+ import { Application, Group, Organization, Person, Service } from "./vocab-BI0Ak5lL.js";
5
5
  import { TracerProvider } from "@opentelemetry/api";
6
6
 
7
7
  //#region src/vocab/actor.d.ts
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-_WdHTWQR.js";
6
- import { validateCryptoKey } from "./key-Cf8KTg-A.js";
7
- import { doubleKnock } from "./http-BpoEurUR.js";
5
+ import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-Czl3xV10.js";
6
+ import { validateCryptoKey } from "./key-BNJQQm3h.js";
7
+ import { doubleKnock } from "./http-C_Qc2neP.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
10
10
  //#region src/runtime/authdocloader.ts
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./type-BYN6Ax2M.js";
7
- import { validateCryptoKey } from "./key-Cps8Sv3N.js";
8
- import { doubleKnock } from "./http-BEo67UOx.js";
6
+ import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./type-DaUr3Il7.js";
7
+ import { validateCryptoKey } from "./key-DnqhSgAv.js";
8
+ import { doubleKnock } from "./http-CuS-d4U0.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
 
11
11
  //#region src/runtime/authdocloader.ts
@@ -3,9 +3,9 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_docloader = require('./docloader-SZjTrl6Z.cjs');
7
- const require_key = require('./key-JqiQvcq1.cjs');
8
- const require_http = require('./http-DREvFalF.cjs');
6
+ const require_docloader = require('./docloader-CYnQRIXv.cjs');
7
+ const require_key = require('./key-DuXv64tg.cjs');
8
+ const require_http = require('./http-CAusBl_3.cjs');
9
9
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
10
10
 
11
11
  //#region src/runtime/authdocloader.ts
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getTypeId } from "./type-BYN6Ax2M.js";
7
- import { Router, RouterError } from "./lookup-DuqY2_In.js";
8
- import { InboxListenerSet } from "./inbox-D-B5xFtJ.js";
6
+ import { deno_default, getTypeId } from "./type-DaUr3Il7.js";
7
+ import { Router, RouterError } from "./lookup-CbtuFbtg.js";
8
+ import { InboxListenerSet } from "./inbox-IETv_Qez.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
11
11
 
@@ -28,6 +28,7 @@ var FederationBuilderImpl = class {
28
28
  inboxListeners;
29
29
  inboxErrorHandler;
30
30
  sharedInboxKeyDispatcher;
31
+ idempotencyStrategy;
31
32
  collectionTypeIds;
32
33
  collectionCallbacks;
33
34
  /**
@@ -42,7 +43,7 @@ var FederationBuilderImpl = class {
42
43
  this.collectionTypeIds = {};
43
44
  }
44
45
  async build(options) {
45
- const { FederationImpl } = await import("./middleware-BD1IE5O5.js");
46
+ const { FederationImpl } = await import("./middleware-BpR6186a.js");
46
47
  const f = new FederationImpl(options);
47
48
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
48
49
  f.router = this.router.clone();
@@ -64,6 +65,7 @@ var FederationBuilderImpl = class {
64
65
  f.inboxListeners = this.inboxListeners?.clone();
65
66
  f.inboxErrorHandler = this.inboxErrorHandler;
66
67
  f.sharedInboxKeyDispatcher = this.sharedInboxKeyDispatcher;
68
+ f.idempotencyStrategy = this.idempotencyStrategy;
67
69
  return f;
68
70
  }
69
71
  _getTracer() {
@@ -486,6 +488,10 @@ var FederationBuilderImpl = class {
486
488
  setSharedKeyDispatcher: (dispatcher) => {
487
489
  this.sharedInboxKeyDispatcher = dispatcher;
488
490
  return setters;
491
+ },
492
+ withIdempotency: (strategy) => {
493
+ this.idempotencyStrategy = strategy;
494
+ return setters;
489
495
  }
490
496
  };
491
497
  return setters;
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { getUserAgent } from "./type-BYN6Ax2M.js";
6
+ import { getUserAgent } from "./type-DaUr3Il7.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
 
9
9
  //#region src/nodeinfo/client.ts
@@ -1,13 +1,13 @@
1
1
  import "../kv-63Cil1MD.cjs";
2
2
  import "../docloader-D-MrRyHl.cjs";
3
3
  import "../client-CegPX0Rn.cjs";
4
- import "../vocab-DJTYMqyU.cjs";
5
- import "../actor-DMgu-ZjT.cjs";
6
- import "../http-BS6766zs.cjs";
7
- import "../owner-B-7Ptt_m.cjs";
8
- import "../mod-evzlRVZq.cjs";
4
+ import "../vocab-Dw1-yVGg.cjs";
5
+ import "../actor-D6K058Tb.cjs";
6
+ import "../http-D-e6AFwR.cjs";
7
+ import "../owner-BN_tO3cY.cjs";
8
+ import "../mod-CxkWO3Mg.cjs";
9
9
  import "../mod-jQ4OODsl.cjs";
10
- import { ActivityTransformer } from "../context-tVOQ76fi.cjs";
10
+ import { ActivityTransformer } from "../context-DiqjMRef.cjs";
11
11
  import "../mq-B7R1Q-M5.cjs";
12
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-DBQAI4v9.cjs";
12
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-Bpb5QLaZ.cjs";
13
13
  export { ActivityTransformer, actorDehydrator, autoIdAssigner, getDefaultActivityTransformers };
@@ -3,13 +3,13 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import "../kv-C7sopW2E.js";
4
4
  import "../docloader-CxWcuWqQ.js";
5
5
  import "../client-bgSdkFa2.js";
6
- import "../vocab-SOE1ifCr.js";
7
- import "../actor-C22bXuuC.js";
8
- import "../http-DqSNLFNY.js";
9
- import "../owner-CQPnQVtf.js";
10
- import "../mod-Cxt4Kpf6.js";
6
+ import "../vocab-BI0Ak5lL.js";
7
+ import "../actor-T6RyhRgk.js";
8
+ import "../http-D6Uj2x2y.js";
9
+ import "../owner-hd9lvQcP.js";
10
+ import "../mod-DlU8ISoa.js";
11
11
  import "../mod-DBzN0aCM.js";
12
- import { ActivityTransformer } from "../context-CQsAT7xk.js";
12
+ import { ActivityTransformer } from "../context-DBKpNBnc.js";
13
13
  import "../mq-CRGm1e_F.js";
14
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-B26zRlH1.js";
14
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-D_y2y32N.js";
15
15
  export { ActivityTransformer, actorDehydrator, autoIdAssigner, getDefaultActivityTransformers };
@@ -3,30 +3,30 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Follow, Person } from "../type-BYN6Ax2M.js";
6
+ import { Follow, Person } from "../type-DaUr3Il7.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-CMiUxZ6O.js";
12
- import "../client-yGBH5stP.js";
13
- import "../lookup-DuqY2_In.js";
11
+ import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-DQYscW90.js";
12
+ import "../client-D5CBsPrc.js";
13
+ import "../lookup-CbtuFbtg.js";
14
14
  import "../types-BSuWJsOm.js";
15
- import "../actor-BxAu0qet.js";
16
- import "../key-Cps8Sv3N.js";
17
- import "../http-BEo67UOx.js";
18
- import "../authdocloader-Chl2nuOI.js";
19
- import "../ld-CXygHn_m.js";
20
- import "../owner-D2fTlp_x.js";
21
- import "../proof-kEUjWRNJ.js";
22
- import "../inbox-D-B5xFtJ.js";
23
- import "../builder-C8Of4dPy.js";
15
+ import "../actor-D8gCwLzv.js";
16
+ import "../key-DnqhSgAv.js";
17
+ import "../http-CuS-d4U0.js";
18
+ import "../authdocloader-DYTNpaMA.js";
19
+ import "../ld-Isot0tiW.js";
20
+ import "../owner-ChSL4aJ7.js";
21
+ import "../proof-x3IBewan.js";
22
+ import "../inbox-IETv_Qez.js";
23
+ import "../builder-1_skw-d2.js";
24
24
  import "../collection-CcnIw1qY.js";
25
- import "../keycache-D_Q1fPV0.js";
25
+ import "../keycache-CSBkusP8.js";
26
26
  import "../negotiation-5NPJL6zp.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-Utq2Jm0I.js";
29
- import { test } from "../testing-DUpTIvNE.js";
28
+ import "../send-D5fjmUEj.js";
29
+ import { test } from "../testing-tWr1VQxx.js";
30
30
 
31
31
  //#region src/compat/transformers.test.ts
32
32
  const federation = new FederationImpl({ kv: new MemoryKvStore() });
@@ -3,11 +3,11 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import { KvKey, KvStore } from "./kv-C7sopW2E.js";
4
4
  import { AuthenticatedDocumentLoaderFactory, DocumentLoader, DocumentLoaderFactory, GetUserAgentOptions } from "./docloader-CxWcuWqQ.js";
5
5
  import { GetNodeInfoOptions, JsonValue, NodeInfo } from "./client-bgSdkFa2.js";
6
- import { Activity, Collection, CryptographicKey, Hashtag, Link, Multikey, Object as Object$1 } from "./vocab-SOE1ifCr.js";
7
- import { Actor, Recipient } from "./actor-C22bXuuC.js";
8
- import { HttpMessageSignaturesSpec } from "./http-DqSNLFNY.js";
9
- import { GetKeyOwnerOptions } from "./owner-CQPnQVtf.js";
10
- import { LookupObjectOptions, TraverseCollectionOptions } from "./mod-Cxt4Kpf6.js";
6
+ import { Activity, Collection, CryptographicKey, Hashtag, Link, Multikey, Object as Object$1 } from "./vocab-BI0Ak5lL.js";
7
+ import { Actor, Recipient } from "./actor-T6RyhRgk.js";
8
+ import { HttpMessageSignaturesSpec } from "./http-D6Uj2x2y.js";
9
+ import { GetKeyOwnerOptions } from "./owner-hd9lvQcP.js";
10
+ import { LookupObjectOptions, TraverseCollectionOptions } from "./mod-DlU8ISoa.js";
11
11
  import { Link as Link$1, LookupWebFingerOptions, ResourceDescriptor } from "./mod-DBzN0aCM.js";
12
12
  import { MessageQueue } from "./mq-CRGm1e_F.js";
13
13
  import { Span, TracerProvider } from "@opentelemetry/api";
@@ -309,6 +309,7 @@ type CustomCollectionCounter<TParams extends Record<string, string>, TContextDat
309
309
  type CustomCollectionCursor<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: TParams) => string | null | Promise<string | null>;
310
310
  //#endregion
311
311
  //#region src/federation/handler.d.ts
312
+
312
313
  /**
313
314
  * Options for the {@link respondWithObject} and
314
315
  * {@link respondWithObjectIfAcceptable} functions.
@@ -1091,12 +1092,6 @@ interface FederationOptions<TContextData> {
1091
1092
  * @since 1.4.0
1092
1093
  */
1093
1094
  contextLoaderFactory?: DocumentLoaderFactory;
1094
- /**
1095
- * A custom JSON-LD context loader. By default, this uses the same loader
1096
- * as the document loader.
1097
- * @deprecated Use {@link contextLoaderFactory} instead.
1098
- */
1099
- contextLoader?: DocumentLoader;
1100
1095
  /**
1101
1096
  * A factory function that creates an authenticated document loader for a
1102
1097
  * given identity. This is used for fetching documents that require
@@ -1305,6 +1300,36 @@ interface CollectionCallbackSetters<TContext extends Context<TContextData>, TCon
1305
1300
  */
1306
1301
  authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContext, TContextData, TFilter>;
1307
1302
  }
1303
+ /**
1304
+ * The strategy for handling activity idempotency in inbox processing.
1305
+ *
1306
+ * - `"global"`: Activities are deduplicated globally across all inboxes and
1307
+ * origins. The same activity ID will be processed only once, regardless
1308
+ * of which inbox receives it or which server sent it.
1309
+ *
1310
+ * - `"per-origin"`: Activities are deduplicated per receiving server's origin.
1311
+ * The same activity ID will be processed only once on each receiving server,
1312
+ * but can be processed separately on different receiving servers. This had
1313
+ * been the default behavior in Fedify 1.x versions.
1314
+ *
1315
+ * - `"per-inbox"`: Activities are deduplicated per inbox. The same activity
1316
+ * ID can be processed once per inbox, allowing the same activity to be
1317
+ * delivered to multiple inboxes independently. This follows standard
1318
+ * ActivityPub behavior and is the default strategy since Fedify 2.0.0.
1319
+ *
1320
+ * @since 1.9.0
1321
+ */
1322
+ type IdempotencyStrategy = "global" | "per-origin" | "per-inbox";
1323
+ /**
1324
+ * A callback to generate a custom idempotency key for an activity.
1325
+ * Returns the cache key to use, or null to skip idempotency checking.
1326
+ * @template TContextData The context data to pass to the {@link InboxContext}.
1327
+ * @param ctx The inbox context.
1328
+ * @param activity The activity being processed.
1329
+ * @returns The idempotency key to use for caching, or null to skip caching.
1330
+ * @since 1.9.0
1331
+ */
1332
+ type IdempotencyKeyCallback<TContextData> = (ctx: InboxContext<TContextData>, activity: Activity) => string | null | Promise<string | null>;
1308
1333
  /**
1309
1334
  * Registry for inbox listeners for different activity types.
1310
1335
  */
@@ -1335,6 +1360,36 @@ interface InboxListenerSetters<TContextData> {
1335
1360
  * @since 0.11.0
1336
1361
  */
1337
1362
  setSharedKeyDispatcher(dispatcher: SharedInboxKeyDispatcher<TContextData>): InboxListenerSetters<TContextData>;
1363
+ /**
1364
+ * Configures the strategy for handling activity idempotency in inbox processing.
1365
+ *
1366
+ * @example
1367
+ * Use per-inbox strategy (standard ActivityPub behavior):
1368
+ * ```
1369
+ * federation
1370
+ * .setInboxListeners("/users/{identifier}/inbox", "/inbox")
1371
+ * .withIdempotency("per-inbox");
1372
+ * ```
1373
+ *
1374
+ * Use custom strategy:
1375
+ * ```
1376
+ * federation
1377
+ * .setInboxListeners("/users/{identifier}/inbox", "/inbox")
1378
+ * .withIdempotency((ctx, activity) => {
1379
+ * // Return null to skip idempotency
1380
+ * return `${ctx.origin}:${activity.id?.href}:${ctx.recipient}`;
1381
+ * });
1382
+ * ```
1383
+ *
1384
+ * @param strategy The idempotency strategy to use. Can be:
1385
+ * - `"global"`: Activities are deduplicated across all inboxes and origins
1386
+ * - `"per-origin"`: Activities are deduplicated per inbox origin
1387
+ * - `"per-inbox"`: Activities are deduplicated per inbox
1388
+ * - A custom callback function that returns the cache key to use
1389
+ * @returns The setters object so that settings can be chained.
1390
+ * @since 1.9.0
1391
+ */
1392
+ withIdempotency(strategy: IdempotencyStrategy | IdempotencyKeyCallback<TContextData>): InboxListenerSetters<TContextData>;
1338
1393
  }
1339
1394
  /**
1340
1395
  * Parameters of {@link Federation.fetch} method.
@@ -2253,4 +2308,4 @@ interface ActorKeyPair extends CryptoKeyPair {
2253
2308
  multikey: Multikey;
2254
2309
  }
2255
2310
  //#endregion
2256
- export { ActivityTransformer, ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParamsKeyPath, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
2311
+ export { ActivityTransformer, ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParamsKeyPath, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
@@ -1,11 +1,11 @@
1
1
  import { KvKey, KvStore } from "./kv-63Cil1MD.cjs";
2
2
  import { AuthenticatedDocumentLoaderFactory, DocumentLoader, DocumentLoaderFactory, GetUserAgentOptions } from "./docloader-D-MrRyHl.cjs";
3
3
  import { GetNodeInfoOptions, JsonValue, NodeInfo } from "./client-CegPX0Rn.cjs";
4
- import { Activity, Collection, CryptographicKey, Hashtag, Link, Multikey, Object as Object$1 } from "./vocab-DJTYMqyU.cjs";
5
- import { Actor, Recipient } from "./actor-DMgu-ZjT.cjs";
6
- import { HttpMessageSignaturesSpec } from "./http-BS6766zs.cjs";
7
- import { GetKeyOwnerOptions } from "./owner-B-7Ptt_m.cjs";
8
- import { LookupObjectOptions, TraverseCollectionOptions } from "./mod-evzlRVZq.cjs";
4
+ import { Activity, Collection, CryptographicKey, Hashtag, Link, Multikey, Object as Object$1 } from "./vocab-Dw1-yVGg.cjs";
5
+ import { Actor, Recipient } from "./actor-D6K058Tb.cjs";
6
+ import { HttpMessageSignaturesSpec } from "./http-D-e6AFwR.cjs";
7
+ import { GetKeyOwnerOptions } from "./owner-BN_tO3cY.cjs";
8
+ import { LookupObjectOptions, TraverseCollectionOptions } from "./mod-CxkWO3Mg.cjs";
9
9
  import { Link as Link$1, LookupWebFingerOptions, ResourceDescriptor } from "./mod-jQ4OODsl.cjs";
10
10
  import { MessageQueue } from "./mq-B7R1Q-M5.cjs";
11
11
  import { Span, TracerProvider } from "@opentelemetry/api";
@@ -307,6 +307,7 @@ type CustomCollectionCounter<TParams extends Record<string, string>, TContextDat
307
307
  type CustomCollectionCursor<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: TParams) => string | null | Promise<string | null>;
308
308
  //#endregion
309
309
  //#region src/federation/handler.d.ts
310
+
310
311
  /**
311
312
  * Options for the {@link respondWithObject} and
312
313
  * {@link respondWithObjectIfAcceptable} functions.
@@ -1089,12 +1090,6 @@ interface FederationOptions<TContextData> {
1089
1090
  * @since 1.4.0
1090
1091
  */
1091
1092
  contextLoaderFactory?: DocumentLoaderFactory;
1092
- /**
1093
- * A custom JSON-LD context loader. By default, this uses the same loader
1094
- * as the document loader.
1095
- * @deprecated Use {@link contextLoaderFactory} instead.
1096
- */
1097
- contextLoader?: DocumentLoader;
1098
1093
  /**
1099
1094
  * A factory function that creates an authenticated document loader for a
1100
1095
  * given identity. This is used for fetching documents that require
@@ -1303,6 +1298,36 @@ interface CollectionCallbackSetters<TContext extends Context<TContextData>, TCon
1303
1298
  */
1304
1299
  authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContext, TContextData, TFilter>;
1305
1300
  }
1301
+ /**
1302
+ * The strategy for handling activity idempotency in inbox processing.
1303
+ *
1304
+ * - `"global"`: Activities are deduplicated globally across all inboxes and
1305
+ * origins. The same activity ID will be processed only once, regardless
1306
+ * of which inbox receives it or which server sent it.
1307
+ *
1308
+ * - `"per-origin"`: Activities are deduplicated per receiving server's origin.
1309
+ * The same activity ID will be processed only once on each receiving server,
1310
+ * but can be processed separately on different receiving servers. This had
1311
+ * been the default behavior in Fedify 1.x versions.
1312
+ *
1313
+ * - `"per-inbox"`: Activities are deduplicated per inbox. The same activity
1314
+ * ID can be processed once per inbox, allowing the same activity to be
1315
+ * delivered to multiple inboxes independently. This follows standard
1316
+ * ActivityPub behavior and is the default strategy since Fedify 2.0.0.
1317
+ *
1318
+ * @since 1.9.0
1319
+ */
1320
+ type IdempotencyStrategy = "global" | "per-origin" | "per-inbox";
1321
+ /**
1322
+ * A callback to generate a custom idempotency key for an activity.
1323
+ * Returns the cache key to use, or null to skip idempotency checking.
1324
+ * @template TContextData The context data to pass to the {@link InboxContext}.
1325
+ * @param ctx The inbox context.
1326
+ * @param activity The activity being processed.
1327
+ * @returns The idempotency key to use for caching, or null to skip caching.
1328
+ * @since 1.9.0
1329
+ */
1330
+ type IdempotencyKeyCallback<TContextData> = (ctx: InboxContext<TContextData>, activity: Activity) => string | null | Promise<string | null>;
1306
1331
  /**
1307
1332
  * Registry for inbox listeners for different activity types.
1308
1333
  */
@@ -1333,6 +1358,36 @@ interface InboxListenerSetters<TContextData> {
1333
1358
  * @since 0.11.0
1334
1359
  */
1335
1360
  setSharedKeyDispatcher(dispatcher: SharedInboxKeyDispatcher<TContextData>): InboxListenerSetters<TContextData>;
1361
+ /**
1362
+ * Configures the strategy for handling activity idempotency in inbox processing.
1363
+ *
1364
+ * @example
1365
+ * Use per-inbox strategy (standard ActivityPub behavior):
1366
+ * ```
1367
+ * federation
1368
+ * .setInboxListeners("/users/{identifier}/inbox", "/inbox")
1369
+ * .withIdempotency("per-inbox");
1370
+ * ```
1371
+ *
1372
+ * Use custom strategy:
1373
+ * ```
1374
+ * federation
1375
+ * .setInboxListeners("/users/{identifier}/inbox", "/inbox")
1376
+ * .withIdempotency((ctx, activity) => {
1377
+ * // Return null to skip idempotency
1378
+ * return `${ctx.origin}:${activity.id?.href}:${ctx.recipient}`;
1379
+ * });
1380
+ * ```
1381
+ *
1382
+ * @param strategy The idempotency strategy to use. Can be:
1383
+ * - `"global"`: Activities are deduplicated across all inboxes and origins
1384
+ * - `"per-origin"`: Activities are deduplicated per inbox origin
1385
+ * - `"per-inbox"`: Activities are deduplicated per inbox
1386
+ * - A custom callback function that returns the cache key to use
1387
+ * @returns The setters object so that settings can be chained.
1388
+ * @since 1.9.0
1389
+ */
1390
+ withIdempotency(strategy: IdempotencyStrategy | IdempotencyKeyCallback<TContextData>): InboxListenerSetters<TContextData>;
1336
1391
  }
1337
1392
  /**
1338
1393
  * Parameters of {@link Federation.fetch} method.
@@ -2251,4 +2306,4 @@ interface ActorKeyPair extends CryptoKeyPair {
2251
2306
  multikey: Multikey;
2252
2307
  }
2253
2308
  //#endregion
2254
- export { ActivityTransformer, ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParamsKeyPath, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
2309
+ export { ActivityTransformer, ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParamsKeyPath, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
@@ -10,7 +10,7 @@ const node_net = require_chunk.__toESM(require("node:net"));
10
10
 
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "2.0.0-pr.435.1673+515e9f9e";
13
+ var version = "2.0.0-pr.445.1694+d0c7cd75";
14
14
  var license = "MIT";
15
15
  var exports$1 = {
16
16
  ".": "./src/mod.ts",
@@ -9,7 +9,7 @@ import { isIP } from "node:net";
9
9
 
10
10
  //#region deno.json
11
11
  var name = "@fedify/fedify";
12
- var version = "2.0.0-pr.435.1673+515e9f9e";
12
+ var version = "2.0.0-pr.445.1694+d0c7cd75";
13
13
  var license = "MIT";
14
14
  var exports = {
15
15
  ".": "./src/mod.ts",
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { __commonJS, __toESM } from "./type-BYN6Ax2M.js";
6
+ import { __commonJS, __toESM } from "./type-DaUr3Il7.js";
7
7
 
8
8
  //#region ../../node_modules/.pnpm/glob-to-regexp@0.4.1/node_modules/glob-to-regexp/index.js
9
9
  var require_glob_to_regexp = __commonJS({ "../../node_modules/.pnpm/glob-to-regexp@0.4.1/node_modules/glob-to-regexp/index.js"(exports, module) {
@@ -3,15 +3,15 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Note, Person } from "../type-BYN6Ax2M.js";
6
+ import { Activity, Note, Person } from "../type-DaUr3Il7.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import "../lookup-DuqY2_In.js";
12
- import "../inbox-D-B5xFtJ.js";
13
- import { createFederationBuilder } from "../builder-C8Of4dPy.js";
14
- import { test } from "../testing-DUpTIvNE.js";
11
+ import "../lookup-CbtuFbtg.js";
12
+ import "../inbox-IETv_Qez.js";
13
+ import { createFederationBuilder } from "../builder-1_skw-d2.js";
14
+ import { test } from "../testing-tWr1VQxx.js";
15
15
  import { assertExists } from "../std__assert-X-_kMxKM.js";
16
16
  import "../assert_rejects-DiIiJbZn.js";
17
17
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,13 +3,13 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-BYN6Ax2M.js";
6
+ import "../type-DaUr3Il7.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-DuqY2_In.js";
10
+ import "../lookup-CbtuFbtg.js";
11
11
  import { buildCollectionSynchronizationHeader, digest } from "../collection-CcnIw1qY.js";
12
- import { test } from "../testing-DUpTIvNE.js";
12
+ import { test } from "../testing-tWr1VQxx.js";
13
13
  import "../std__assert-X-_kMxKM.js";
14
14
  import "../assert_rejects-DiIiJbZn.js";
15
15
  import "../assert_is_error-BPGph1Jx.js";
@@ -3,36 +3,36 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Create, Note, Person } from "../type-BYN6Ax2M.js";
6
+ import { Create, Note, Person } from "../type-DaUr3Il7.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-CRZrzyXm.js";
11
- import { createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-CMiUxZ6O.js";
12
- import "../client-yGBH5stP.js";
13
- import "../lookup-DuqY2_In.js";
11
+ import { createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-DQYscW90.js";
12
+ import "../client-D5CBsPrc.js";
13
+ import "../lookup-CbtuFbtg.js";
14
14
  import "../types-BSuWJsOm.js";
15
- import "../actor-BxAu0qet.js";
16
- import "../key-Cps8Sv3N.js";
17
- import { signRequest } from "../http-BEo67UOx.js";
18
- import "../authdocloader-Chl2nuOI.js";
19
- import "../ld-CXygHn_m.js";
20
- import "../owner-D2fTlp_x.js";
21
- import "../proof-kEUjWRNJ.js";
22
- import { InboxListenerSet } from "../inbox-D-B5xFtJ.js";
23
- import "../builder-C8Of4dPy.js";
15
+ import "../actor-D8gCwLzv.js";
16
+ import "../key-DnqhSgAv.js";
17
+ import { signRequest } from "../http-CuS-d4U0.js";
18
+ import "../authdocloader-DYTNpaMA.js";
19
+ import "../ld-Isot0tiW.js";
20
+ import "../owner-ChSL4aJ7.js";
21
+ import "../proof-x3IBewan.js";
22
+ import { InboxListenerSet } from "../inbox-IETv_Qez.js";
23
+ import "../builder-1_skw-d2.js";
24
24
  import "../collection-CcnIw1qY.js";
25
- import "../keycache-D_Q1fPV0.js";
25
+ import "../keycache-CSBkusP8.js";
26
26
  import "../negotiation-5NPJL6zp.js";
27
27
  import "../retry-D4GJ670a.js";
28
- import "../send-Utq2Jm0I.js";
29
- import { createInboxContext, createRequestContext, mockDocumentLoader, test } from "../testing-DUpTIvNE.js";
28
+ import "../send-D5fjmUEj.js";
29
+ import { createInboxContext, createRequestContext, mockDocumentLoader, test } from "../testing-tWr1VQxx.js";
30
30
  import "../std__assert-X-_kMxKM.js";
31
31
  import "../assert_rejects-DiIiJbZn.js";
32
32
  import "../assert_is_error-BPGph1Jx.js";
33
33
  import "../assert_not_equals-f3m3epl3.js";
34
34
  import "../assert_throws-BOO88avQ.js";
35
- import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-F0jh2GNR.js";
35
+ import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-D3_MDK7n.js";
36
36
 
37
37
  //#region src/federation/handler.test.ts
38
38
  test("handleActor()", async () => {
@@ -0,0 +1,3 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { URLPattern } from "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};