@fedify/fedify 2.0.0-pr.435.1667 → 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 (147) hide show
  1. package/dist/{actor-C3gJhZJj.cjs → actor-CwZ2m5rG.cjs} +7263 -2440
  2. package/dist/{actor-DMgu-ZjT.d.cts → actor-D6K058Tb.d.cts} +1 -1
  3. package/dist/{actor-Cpal85xW.js → actor-D8gCwLzv.js} +1 -1
  4. package/dist/{actor-CnVfp1Hp.js → actor-DoMcqXsW.js} +7263 -2440
  5. package/dist/{actor-C22bXuuC.d.ts → actor-T6RyhRgk.d.ts} +1 -1
  6. package/dist/{assert_rejects-7UF4R_Qs.js → assert_rejects-DiIiJbZn.js} +1 -1
  7. package/dist/{assert_throws-53_pKeP3.js → assert_throws-BOO88avQ.js} +1 -1
  8. package/dist/{authdocloader-DWnwkjvZ.js → authdocloader-Cv_qEn1G.js} +3 -3
  9. package/dist/{authdocloader-Df2BFefL.js → authdocloader-DYTNpaMA.js} +3 -3
  10. package/dist/{authdocloader-DPCGwidE.cjs → authdocloader-bsmVF6eO.cjs} +3 -3
  11. package/dist/{builder-CMxichO9.js → builder-1_skw-d2.js} +10 -4
  12. package/dist/{client-BqyuOGiQ.js → client-D5CBsPrc.js} +1 -1
  13. package/dist/compat/mod.d.cts +7 -7
  14. package/dist/compat/mod.d.ts +7 -7
  15. package/dist/compat/transformers.test.js +18 -17
  16. package/dist/{context-CDSZdQHD.d.ts → context-DBKpNBnc.d.ts} +66 -12
  17. package/dist/{context-Dq8aCtMH.d.cts → context-DiqjMRef.d.cts} +66 -12
  18. package/dist/{docloader-B1O1Z5OK.cjs → docloader-CYnQRIXv.cjs} +2 -2
  19. package/dist/{docloader-xJVzq9O0.js → docloader-Czl3xV10.js} +2 -2
  20. package/dist/{esm-BBznxjVc.js → esm-Dl5T1RNE.js} +1 -1
  21. package/dist/federation/builder.test.js +10 -10
  22. package/dist/federation/collection.test.js +8 -8
  23. package/dist/federation/handler.test.js +26 -145
  24. package/dist/federation/idempotency.test.d.ts +3 -0
  25. package/dist/federation/idempotency.test.js +202 -0
  26. package/dist/federation/inbox.test.js +6 -6
  27. package/dist/federation/keycache.test.js +4 -4
  28. package/dist/federation/kv.test.js +8 -8
  29. package/dist/federation/middleware.test.js +238 -44
  30. package/dist/federation/mod.cjs +10 -10
  31. package/dist/federation/mod.d.cts +7 -7
  32. package/dist/federation/mod.d.ts +7 -7
  33. package/dist/federation/mod.js +10 -10
  34. package/dist/federation/mq.test.js +10 -10
  35. package/dist/federation/negotiation.test.d.ts +3 -0
  36. package/dist/federation/negotiation.test.js +28 -0
  37. package/dist/federation/retry.test.js +5 -5
  38. package/dist/federation/router.test.js +8 -8
  39. package/dist/federation/send.test.js +15 -15
  40. package/dist/fixtures/media.example.com/avatars/test-avatar.jpg.json +6 -0
  41. package/dist/{http-Hw9HJp9i.cjs → http-CAusBl_3.cjs} +3 -3
  42. package/dist/{http-CovAm6we.js → http-C_Qc2neP.js} +3 -3
  43. package/dist/{http-y7khnX5Q.js → http-CuS-d4U0.js} +2 -2
  44. package/dist/{http-BS6766zs.d.cts → http-D-e6AFwR.d.cts} +1 -1
  45. package/dist/{http-DqSNLFNY.d.ts → http-D6Uj2x2y.d.ts} +1 -1
  46. package/dist/{inbox-DpcYOzs8.js → inbox-IETv_Qez.js} +24 -7
  47. package/dist/{key-BRmlopJL.js → key-BNJQQm3h.js} +2 -2
  48. package/dist/{key-lapZwBwG.js → key-C_ruQbbl.js} +4 -4
  49. package/dist/key-DIMJMxf4.cjs +10 -0
  50. package/dist/{key-DORX19Bl.js → key-DnqhSgAv.js} +2 -2
  51. package/dist/{key-jf6dIIF-.js → key-DpFjiItf.js} +3 -3
  52. package/dist/{key-CzF9SAEI.cjs → key-DuXv64tg.cjs} +2 -2
  53. package/dist/{keycache-AH1uj1j-.js → keycache-CSBkusP8.js} +1 -1
  54. package/dist/{keys-B3fzLXBG.js → keys-D3_MDK7n.js} +1 -1
  55. package/dist/{ld-D3cq9xO1.js → ld-Isot0tiW.js} +2 -2
  56. package/dist/{lookup-BrhURkmj.js → lookup-CbtuFbtg.js} +21 -12
  57. package/dist/{lookup-7u217Q3H.cjs → lookup-D6dro5Au.cjs} +1 -1
  58. package/dist/{lookup-CfU0DgLr.js → lookup-Dhm78GlK.js} +1 -1
  59. package/dist/middleware-BpR6186a.js +26 -0
  60. package/dist/{middleware-DXWUGrBQ.js → middleware-BuHr2fzh.js} +73 -81
  61. package/dist/middleware-DDMxdtWM.cjs +17 -0
  62. package/dist/{middleware-BDN7YoYJ.js → middleware-DQYscW90.js} +47 -142
  63. package/dist/{middleware-Gsxukxs5.cjs → middleware-Dgmdgrvb.cjs} +73 -81
  64. package/dist/middleware-T-knSMwl.js +17 -0
  65. package/dist/{mod-Drmz72EK.d.ts → mod-BhUKmBJD.d.ts} +2 -2
  66. package/dist/{mod-BhMnAkFX.d.cts → mod-Bpb5QLaZ.d.cts} +2 -2
  67. package/dist/{mod-TFoH2Ql8.d.ts → mod-CerN_Sza.d.ts} +1 -1
  68. package/dist/{mod-Dc_-mf8s.d.cts → mod-Cj1tHXBR.d.cts} +1 -1
  69. package/dist/{mod-evzlRVZq.d.cts → mod-CxkWO3Mg.d.cts} +19 -1
  70. package/dist/{mod-RI3-KvUI.d.ts → mod-D_y2y32N.d.ts} +2 -2
  71. package/dist/{mod-BClfg3ej.d.cts → mod-Djzcw2ry.d.cts} +2 -2
  72. package/dist/{mod-Cxt4Kpf6.d.ts → mod-DlU8ISoa.d.ts} +19 -1
  73. package/dist/mod.cjs +10 -10
  74. package/dist/mod.d.cts +10 -10
  75. package/dist/mod.d.ts +10 -10
  76. package/dist/mod.js +10 -10
  77. package/dist/negotiation-5NPJL6zp.js +71 -0
  78. package/dist/nodeinfo/client.test.js +10 -10
  79. package/dist/nodeinfo/handler.test.js +23 -22
  80. package/dist/nodeinfo/mod.cjs +2 -2
  81. package/dist/nodeinfo/mod.js +2 -2
  82. package/dist/nodeinfo/types.test.js +8 -8
  83. package/dist/{owner-B-7Ptt_m.d.cts → owner-BN_tO3cY.d.cts} +2 -2
  84. package/dist/{owner-NFlQJyvM.js → owner-ChSL4aJ7.js} +2 -2
  85. package/dist/{owner-CQPnQVtf.d.ts → owner-hd9lvQcP.d.ts} +2 -2
  86. package/dist/{proof-Be1oOYEh.js → proof-BiSCuwyA.js} +3 -3
  87. package/dist/{proof-Gip91fK7.cjs → proof-ONNmhInb.cjs} +3 -3
  88. package/dist/{proof-ar9xgPWi.js → proof-x3IBewan.js} +2 -2
  89. package/dist/runtime/authdocloader.test.js +14 -14
  90. package/dist/runtime/docloader.test.js +9 -9
  91. package/dist/runtime/key.test.js +10 -10
  92. package/dist/runtime/langstr.test.js +8 -8
  93. package/dist/runtime/link.test.js +3 -3
  94. package/dist/runtime/mod.cjs +6 -6
  95. package/dist/runtime/mod.d.cts +3 -3
  96. package/dist/runtime/mod.d.ts +3 -3
  97. package/dist/runtime/mod.js +6 -6
  98. package/dist/runtime/multibase/multibase.test.js +8 -8
  99. package/dist/runtime/url.test.js +5 -5
  100. package/dist/{send-DkwkMFjJ.js → send-D5fjmUEj.js} +2 -2
  101. package/dist/sig/http.test.js +13 -13
  102. package/dist/sig/key.test.js +11 -11
  103. package/dist/sig/ld.test.js +10 -10
  104. package/dist/sig/mod.cjs +6 -6
  105. package/dist/sig/mod.d.cts +5 -5
  106. package/dist/sig/mod.d.ts +5 -5
  107. package/dist/sig/mod.js +6 -6
  108. package/dist/sig/owner.test.js +12 -12
  109. package/dist/sig/proof.test.js +12 -12
  110. package/dist/testing/docloader.test.js +8 -8
  111. package/dist/testing/mod.d.ts +272 -0
  112. package/dist/testing/mod.js +3 -3
  113. package/dist/{testing-BMBhkcz9.js → testing-tWr1VQxx.js} +2 -2
  114. package/dist/{type-FCer_9yh.js → type-DaUr3Il7.js} +6944 -2121
  115. package/dist/{types-CZ_qo9KW.cjs → types-D2Nyz0tR.cjs} +1 -1
  116. package/dist/{types-CNWeAz8v.js → types-DQuSDtDg.js} +1 -1
  117. package/dist/vocab/actor.test.js +10 -10
  118. package/dist/vocab/lookup.test.js +259 -9
  119. package/dist/vocab/mod.cjs +4 -4
  120. package/dist/vocab/mod.d.cts +3 -3
  121. package/dist/vocab/mod.d.ts +3 -3
  122. package/dist/vocab/mod.js +4 -4
  123. package/dist/vocab/type.test.js +3 -3
  124. package/dist/vocab/vocab.test.js +402 -13
  125. package/dist/{vocab-SOE1ifCr.d.ts → vocab-BI0Ak5lL.d.ts} +290 -0
  126. package/dist/{vocab-9MjZjuZb.cjs → vocab-Dd4VMrr0.cjs} +23 -14
  127. package/dist/{vocab-DJTYMqyU.d.cts → vocab-Dw1-yVGg.d.cts} +290 -0
  128. package/dist/{vocab-gpwUU9fc.js → vocab-w--qk7HF.js} +23 -14
  129. package/dist/webfinger/handler.test.js +23 -22
  130. package/dist/webfinger/lookup.test.js +9 -9
  131. package/dist/webfinger/mod.cjs +2 -2
  132. package/dist/webfinger/mod.js +2 -2
  133. package/dist/x/cfworkers.test.js +8 -8
  134. package/dist/x/hono.d.cts +6 -6
  135. package/dist/x/hono.d.ts +6 -6
  136. package/dist/x/sveltekit.d.cts +6 -6
  137. package/dist/x/sveltekit.d.ts +6 -6
  138. package/package.json +1 -1
  139. package/dist/key-CV3FT32G.cjs +0 -10
  140. package/dist/middleware-CV-OPMlZ.js +0 -17
  141. package/dist/middleware-DGqnaAbp.cjs +0 -17
  142. package/dist/middleware-cCdfTTMv.js +0 -25
  143. /package/dist/{assert_is_error-B035L3om.js → assert_is_error-BPGph1Jx.js} +0 -0
  144. /package/dist/{assert_not_equals-C80BG-_5.js → assert_not_equals-f3m3epl3.js} +0 -0
  145. /package/dist/{denokv-jZ0Z2h0M.js → denokv-Bv33Xxea.js} +0 -0
  146. /package/dist/{retry-CfF8Gn4d.js → retry-D4GJ670a.js} +0 -0
  147. /package/dist/{std__assert-DWivtrGR.js → std__assert-X-_kMxKM.js} +0 -0
@@ -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
@@ -4,7 +4,7 @@
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
6
  import { AssertionError } from "./assert_equals-DSbWqCm3.js";
7
- import { assertIsError } from "./assert_is_error-B035L3om.js";
7
+ import { assertIsError } from "./assert_is_error-BPGph1Jx.js";
8
8
 
9
9
  //#region ../../node_modules/.pnpm/@jsr+std__assert@0.226.0/node_modules/@jsr/std__assert/assert_false.js
10
10
  /**
@@ -4,7 +4,7 @@
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
6
  import { AssertionError } from "./assert_equals-DSbWqCm3.js";
7
- import { assertIsError } from "./assert_is_error-B035L3om.js";
7
+ import { assertIsError } from "./assert_is_error-BPGph1Jx.js";
8
8
 
9
9
  //#region ../../node_modules/.pnpm/@jsr+std__assert@0.226.0/node_modules/@jsr/std__assert/assert_throws.js
10
10
  function assertThrows(fn, errorClassOrMsg, msgIncludesOrMsg, msg) {
@@ -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-xJVzq9O0.js";
6
- import { validateCryptoKey } from "./key-BRmlopJL.js";
7
- import { doubleKnock } from "./http-CovAm6we.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-FCer_9yh.js";
7
- import { validateCryptoKey } from "./key-DORX19Bl.js";
8
- import { doubleKnock } from "./http-y7khnX5Q.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-B1O1Z5OK.cjs');
7
- const require_key = require('./key-CzF9SAEI.cjs');
8
- const require_http = require('./http-Hw9HJp9i.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-FCer_9yh.js";
7
- import { Router, RouterError } from "./lookup-BrhURkmj.js";
8
- import { InboxListenerSet } from "./inbox-DpcYOzs8.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-cCdfTTMv.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-FCer_9yh.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-Dq8aCtMH.cjs";
10
+ import { ActivityTransformer } from "../context-DiqjMRef.cjs";
11
11
  import "../mq-B7R1Q-M5.cjs";
12
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-BhMnAkFX.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-CDSZdQHD.js";
12
+ import { ActivityTransformer } from "../context-DBKpNBnc.js";
13
13
  import "../mq-CRGm1e_F.js";
14
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-RI3-KvUI.js";
14
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-D_y2y32N.js";
15
15
  export { ActivityTransformer, actorDehydrator, autoIdAssigner, getDefaultActivityTransformers };
@@ -3,29 +3,30 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Follow, Person } from "../type-FCer_9yh.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-BDN7YoYJ.js";
12
- import "../client-BqyuOGiQ.js";
13
- import "../lookup-BrhURkmj.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-Cpal85xW.js";
16
- import "../key-DORX19Bl.js";
17
- import "../http-y7khnX5Q.js";
18
- import "../authdocloader-Df2BFefL.js";
19
- import "../ld-D3cq9xO1.js";
20
- import "../owner-NFlQJyvM.js";
21
- import "../proof-ar9xgPWi.js";
22
- import "../inbox-DpcYOzs8.js";
23
- import "../builder-CMxichO9.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-AH1uj1j-.js";
26
- import "../retry-CfF8Gn4d.js";
27
- import "../send-DkwkMFjJ.js";
28
- import { test } from "../testing-BMBhkcz9.js";
25
+ import "../keycache-CSBkusP8.js";
26
+ import "../negotiation-5NPJL6zp.js";
27
+ import "../retry-D4GJ670a.js";
28
+ import "../send-D5fjmUEj.js";
29
+ import { test } from "../testing-tWr1VQxx.js";
29
30
 
30
31
  //#region src/compat/transformers.test.ts
31
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";
@@ -1092,12 +1092,6 @@ interface FederationOptions<TContextData> {
1092
1092
  * @since 1.4.0
1093
1093
  */
1094
1094
  contextLoaderFactory?: DocumentLoaderFactory;
1095
- /**
1096
- * A custom JSON-LD context loader. By default, this uses the same loader
1097
- * as the document loader.
1098
- * @deprecated Use {@link contextLoaderFactory} instead.
1099
- */
1100
- contextLoader?: DocumentLoader;
1101
1095
  /**
1102
1096
  * A factory function that creates an authenticated document loader for a
1103
1097
  * given identity. This is used for fetching documents that require
@@ -1306,6 +1300,36 @@ interface CollectionCallbackSetters<TContext extends Context<TContextData>, TCon
1306
1300
  */
1307
1301
  authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContext, TContextData, TFilter>;
1308
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>;
1309
1333
  /**
1310
1334
  * Registry for inbox listeners for different activity types.
1311
1335
  */
@@ -1336,6 +1360,36 @@ interface InboxListenerSetters<TContextData> {
1336
1360
  * @since 0.11.0
1337
1361
  */
1338
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>;
1339
1393
  }
1340
1394
  /**
1341
1395
  * Parameters of {@link Federation.fetch} method.
@@ -2254,4 +2308,4 @@ interface ActorKeyPair extends CryptoKeyPair {
2254
2308
  multikey: Multikey;
2255
2309
  }
2256
2310
  //#endregion
2257
- 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";
@@ -1090,12 +1090,6 @@ interface FederationOptions<TContextData> {
1090
1090
  * @since 1.4.0
1091
1091
  */
1092
1092
  contextLoaderFactory?: DocumentLoaderFactory;
1093
- /**
1094
- * A custom JSON-LD context loader. By default, this uses the same loader
1095
- * as the document loader.
1096
- * @deprecated Use {@link contextLoaderFactory} instead.
1097
- */
1098
- contextLoader?: DocumentLoader;
1099
1093
  /**
1100
1094
  * A factory function that creates an authenticated document loader for a
1101
1095
  * given identity. This is used for fetching documents that require
@@ -1304,6 +1298,36 @@ interface CollectionCallbackSetters<TContext extends Context<TContextData>, TCon
1304
1298
  */
1305
1299
  authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContext, TContextData, TFilter>;
1306
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>;
1307
1331
  /**
1308
1332
  * Registry for inbox listeners for different activity types.
1309
1333
  */
@@ -1334,6 +1358,36 @@ interface InboxListenerSetters<TContextData> {
1334
1358
  * @since 0.11.0
1335
1359
  */
1336
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>;
1337
1391
  }
1338
1392
  /**
1339
1393
  * Parameters of {@link Federation.fetch} method.
@@ -2252,4 +2306,4 @@ interface ActorKeyPair extends CryptoKeyPair {
2252
2306
  multikey: Multikey;
2253
2307
  }
2254
2308
  //#endregion
2255
- 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.1667+3a249c3e";
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",
@@ -95,7 +95,7 @@ var tasks = {
95
95
  "command": "deno publish",
96
96
  "dependencies": ["codegen"]
97
97
  },
98
- "pnpm:install": "pnpm install",
98
+ "pnpm:install": "pnpm install --silent",
99
99
  "pnpm:build": {
100
100
  "command": "pnpm exec tsdown",
101
101
  "dependencies": ["codegen", "pnpm:install"]
@@ -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.1667+3a249c3e";
12
+ var version = "2.0.0-pr.445.1694+d0c7cd75";
13
13
  var license = "MIT";
14
14
  var exports = {
15
15
  ".": "./src/mod.ts",
@@ -94,7 +94,7 @@ var tasks = {
94
94
  "command": "deno publish",
95
95
  "dependencies": ["codegen"]
96
96
  },
97
- "pnpm:install": "pnpm install",
97
+ "pnpm:install": "pnpm install --silent",
98
98
  "pnpm:build": {
99
99
  "command": "pnpm exec tsdown",
100
100
  "dependencies": ["codegen", "pnpm:install"]
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { __commonJS, __toESM } from "./type-FCer_9yh.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,20 +3,20 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Note, Person } from "../type-FCer_9yh.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-BrhURkmj.js";
12
- import "../inbox-DpcYOzs8.js";
13
- import { createFederationBuilder } from "../builder-CMxichO9.js";
14
- import { test } from "../testing-BMBhkcz9.js";
15
- import { assertExists } from "../std__assert-DWivtrGR.js";
16
- import "../assert_rejects-7UF4R_Qs.js";
17
- import "../assert_is_error-B035L3om.js";
18
- import "../assert_not_equals-C80BG-_5.js";
19
- import { assertThrows } from "../assert_throws-53_pKeP3.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
+ import { assertExists } from "../std__assert-X-_kMxKM.js";
16
+ import "../assert_rejects-DiIiJbZn.js";
17
+ import "../assert_is_error-BPGph1Jx.js";
18
+ import "../assert_not_equals-f3m3epl3.js";
19
+ import { assertThrows } from "../assert_throws-BOO88avQ.js";
20
20
 
21
21
  //#region src/federation/builder.test.ts
22
22
  test("FederationBuilder", async (t) => {
@@ -3,18 +3,18 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-FCer_9yh.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-BrhURkmj.js";
10
+ import "../lookup-CbtuFbtg.js";
11
11
  import { buildCollectionSynchronizationHeader, digest } from "../collection-CcnIw1qY.js";
12
- import { test } from "../testing-BMBhkcz9.js";
13
- import "../std__assert-DWivtrGR.js";
14
- import "../assert_rejects-7UF4R_Qs.js";
15
- import "../assert_is_error-B035L3om.js";
16
- import "../assert_not_equals-C80BG-_5.js";
17
- import "../assert_throws-53_pKeP3.js";
12
+ import { test } from "../testing-tWr1VQxx.js";
13
+ import "../std__assert-X-_kMxKM.js";
14
+ import "../assert_rejects-DiIiJbZn.js";
15
+ import "../assert_is_error-BPGph1Jx.js";
16
+ import "../assert_not_equals-f3m3epl3.js";
17
+ import "../assert_throws-BOO88avQ.js";
18
18
  import { decodeHex } from "byte-encodings/hex";
19
19
 
20
20
  //#region src/federation/collection.test.ts