@fedify/fedify 2.0.0-dev.1641 → 2.0.0-dev.1726

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-CP03csrm.cjs → actor-Bn2RCpws.cjs} +7263 -2440
  2. package/dist/{actor-DMgu-ZjT.d.cts → actor-D6K058Tb.d.cts} +1 -1
  3. package/dist/{actor-C22bXuuC.d.ts → actor-T6RyhRgk.d.ts} +1 -1
  4. package/dist/{actor-DVpsNXhn.js → actor-dO7jHa6A.js} +1 -1
  5. package/dist/{actor-DU511yTk.js → actor-menZmmiI.js} +7263 -2440
  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-BnsFSERg.cjs → authdocloader-CEqdZdT7.cjs} +3 -3
  9. package/dist/{authdocloader-DCgMyo82.js → authdocloader-CZsCIRLV.js} +3 -3
  10. package/dist/{authdocloader-BkIZCKQv.js → authdocloader-DevmXsTo.js} +3 -3
  11. package/dist/{builder-E2Icrl_a.js → builder-CGF1vv7G.js} +14 -8
  12. package/dist/{client-BW4V0OJx.js → client-BfzV3u96.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-B1X8-X33.d.ts} +185 -98
  17. package/dist/{context-Dq8aCtMH.d.cts → context-DYCJXr7J.d.cts} +185 -98
  18. package/dist/{docloader-kae6M-GI.cjs → docloader-Buh0Ah9G.cjs} +2 -2
  19. package/dist/{docloader-BtqIh1OE.js → docloader-DOmINJ1U.js} +2 -2
  20. package/dist/{esm-mtx3XJAD.js → esm-BODOj_Oi.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-ZhcoaYEa.cjs → http-BmbMWfmh.cjs} +3 -3
  42. package/dist/{http-BS6766zs.d.cts → http-D-e6AFwR.d.cts} +1 -1
  43. package/dist/{http-DqSNLFNY.d.ts → http-D6Uj2x2y.d.ts} +1 -1
  44. package/dist/{http-Cox5GsED.js → http-Danw_xTY.js} +2 -2
  45. package/dist/{http-C7uYFcBo.js → http-gHyCrTrX.js} +3 -3
  46. package/dist/{inbox-BDdRbWNI.js → inbox-Blp5F74G.js} +24 -7
  47. package/dist/{key-CgwCzDC4.js → key-B2cp5-JF.js} +3 -3
  48. package/dist/{key-HqzOCwDc.cjs → key-BR1W25rw.cjs} +2 -2
  49. package/dist/{key-Cc0JlcKe.js → key-BnjofJ4e.js} +2 -2
  50. package/dist/{key-CfiBDu3o.js → key-CIIkeide.js} +2 -2
  51. package/dist/key-DhflzsBJ.cjs +10 -0
  52. package/dist/{key-B9Z5ZuX9.js → key-WES6wszI.js} +4 -4
  53. package/dist/{keycache-CVBjz3xi.js → keycache-Covv8lvK.js} +1 -1
  54. package/dist/{keys-CBKbYaJA.js → keys-DZ1bqhJz.js} +1 -1
  55. package/dist/{ld-CxgmnSO3.js → ld-C7KL1MK2.js} +2 -2
  56. package/dist/{lookup-QHjmy4Og.cjs → lookup-CDOxr8vw.cjs} +1 -1
  57. package/dist/{lookup-NuT9cCSl.js → lookup-D8tCnUj2.js} +1 -1
  58. package/dist/{lookup-CiU3QxQz.js → lookup-VSVPBU3J.js} +21 -12
  59. package/dist/middleware-9KSLASn7.js +17 -0
  60. package/dist/{middleware-LyCG_YVM.cjs → middleware-C60xXvWx.cjs} +99 -108
  61. package/dist/middleware-CH0PNtaj.cjs +17 -0
  62. package/dist/middleware-CrzCnpdt.js +26 -0
  63. package/dist/{middleware-DXidHY4N.js → middleware-DXOZ6_ST.js} +99 -108
  64. package/dist/{middleware-ByPnvMMS.js → middleware-HKKY6sAX.js} +69 -165
  65. package/dist/{mod-Drmz72EK.d.ts → mod-BhUKmBJD.d.ts} +2 -2
  66. package/dist/{mod-TFoH2Ql8.d.ts → mod-CerN_Sza.d.ts} +1 -1
  67. package/dist/{mod-Dc_-mf8s.d.cts → mod-Cj1tHXBR.d.cts} +1 -1
  68. package/dist/{mod-evzlRVZq.d.cts → mod-CxkWO3Mg.d.cts} +19 -1
  69. package/dist/{mod-RI3-KvUI.d.ts → mod-DcKxhFQ8.d.ts} +2 -2
  70. package/dist/{mod-BClfg3ej.d.cts → mod-Djzcw2ry.d.cts} +2 -2
  71. package/dist/{mod-Cxt4Kpf6.d.ts → mod-DlU8ISoa.d.ts} +19 -1
  72. package/dist/{mod-BhMnAkFX.d.cts → mod-twdvV2hR.d.cts} +2 -2
  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-Cxob5_PK.js → owner-COcyel6J.js} +2 -2
  85. package/dist/{owner-CQPnQVtf.d.ts → owner-hd9lvQcP.d.ts} +2 -2
  86. package/dist/{proof-2Gcor0_N.cjs → proof-CMJcrQoM.cjs} +3 -3
  87. package/dist/{proof-BiSQNUmQ.js → proof-Cpk853lc.js} +2 -2
  88. package/dist/{proof-DkxwMaWE.js → proof-D6pbnNx2.js} +3 -3
  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-DSEhWIYD.js → send-C7A7_big.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 +391 -86
  112. package/dist/testing/mod.js +3 -3
  113. package/dist/{testing-ByQmUvf-.js → testing-e8Kpb1uV.js} +2 -2
  114. package/dist/{type-B4NJkfVg.js → type-D_8QzkEn.js} +6944 -2121
  115. package/dist/{types-l2uh_ZhP.js → types-Db4ukgX8.js} +1 -1
  116. package/dist/{types-Bqt2EgP0.cjs → types-LjTL4QMx.cjs} +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-lBFcVxVF.js → vocab-CJHF7Q71.js} +23 -14
  127. package/dist/{vocab-B0-5a8pw.cjs → vocab-DLHpZwOW.cjs} +23 -14
  128. package/dist/{vocab-DJTYMqyU.d.cts → vocab-Dw1-yVGg.d.cts} +290 -0
  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-D-7DPHNl.cjs +0 -10
  140. package/dist/middleware-BHboQ4BE.js +0 -25
  141. package/dist/middleware-Bp3I9z8r.js +0 -17
  142. package/dist/middleware-oYqSU5ky.cjs +0 -17
  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,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";
@@ -281,7 +281,7 @@ type ObjectAuthorizePredicate<TContextData, TParam extends string> = (context: R
281
281
  * the entire collection without pagination.
282
282
  * @since 1.8.0
283
283
  */
284
- type CustomCollectionDispatcher<TItem, TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: TParams, cursor: string | null) => PageItems<TItem> | null | Promise<PageItems<TItem> | null>;
284
+ type CustomCollectionDispatcher<TItem, TParam extends string, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: Record<TParam, string>, cursor: string | null) => PageItems<TItem> | null | Promise<PageItems<TItem> | null>;
285
285
  /**
286
286
  * A callback that counts the number of items in a custom collection.
287
287
  *
@@ -291,7 +291,7 @@ type CustomCollectionDispatcher<TItem, TParams extends Record<string, string>, T
291
291
  * @param values The parameters of the requested URL.
292
292
  * @since 1.8.0
293
293
  */
294
- type CustomCollectionCounter<TParams extends Record<string, string>, TContextData> = (context: RequestContext<TContextData>, values: TParams) => number | bigint | null | Promise<number | bigint | null>;
294
+ type CustomCollectionCounter<TParam extends string, TContextData> = (context: RequestContext<TContextData>, values: Record<TParam, string>) => number | bigint | null | Promise<number | bigint | null>;
295
295
  /**
296
296
  * A callback that returns a cursor for a custom collection.
297
297
  *
@@ -304,7 +304,7 @@ type CustomCollectionCounter<TParams extends Record<string, string>, TContextDat
304
304
  * @param values The parameters of the requested URL.
305
305
  * @since 1.8.0
306
306
  */
307
- type CustomCollectionCursor<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: TParams) => string | null | Promise<string | null>;
307
+ type CustomCollectionCursor<TParam extends string, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: Record<TParam, string>) => string | null | Promise<string | null>;
308
308
  //#endregion
309
309
  //#region src/federation/handler.d.ts
310
310
 
@@ -702,7 +702,7 @@ interface Federatable<TContextData> {
702
702
  * @returns An object with methods to set other actor dispatcher callbacks.
703
703
  * @throws {RouterError} Thrown if the path pattern is invalid.
704
704
  */
705
- setActorDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: ActorDispatcher<TContextData>): ActorCallbackSetters<TContextData>;
705
+ setActorDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: ActorDispatcher<TContextData>): ActorCallbackSetters<TContextData>;
706
706
  /**
707
707
  * Registers an object dispatcher.
708
708
  *
@@ -766,7 +766,7 @@ interface Federatable<TContextData> {
766
766
  */
767
767
  setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
768
768
  typeId: URL;
769
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
769
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
770
770
  /**
771
771
  * Registers an object dispatcher.
772
772
  *
@@ -782,7 +782,7 @@ interface Federatable<TContextData> {
782
782
  */
783
783
  setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
784
784
  typeId: URL;
785
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
785
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
786
786
  /**
787
787
  * Registers an object dispatcher.
788
788
  *
@@ -798,7 +798,7 @@ interface Federatable<TContextData> {
798
798
  */
799
799
  setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
800
800
  typeId: URL;
801
- }, path: `${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
801
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
802
802
  /**
803
803
  * Registers an inbox dispatcher.
804
804
  *
@@ -810,7 +810,7 @@ interface Federatable<TContextData> {
810
810
  * @param dispatcher An inbox dispatcher callback to register.
811
811
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
812
812
  */
813
- setInboxDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
813
+ setInboxDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
814
814
  /**
815
815
  * Registers an outbox dispatcher.
816
816
  *
@@ -834,7 +834,7 @@ interface Federatable<TContextData> {
834
834
  * @param dispatcher An outbox dispatcher callback to register.
835
835
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
836
836
  */
837
- setOutboxDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
837
+ setOutboxDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
838
838
  /**
839
839
  * Registers a following collection dispatcher.
840
840
  * @param path The URI path pattern for the following collection. The syntax
@@ -846,7 +846,7 @@ interface Federatable<TContextData> {
846
846
  * callbacks.
847
847
  * @throws {RouterError} Thrown if the path pattern is invalid.
848
848
  */
849
- setFollowingDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Actor | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
849
+ setFollowingDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Actor | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
850
850
  /**
851
851
  * Registers a followers collection dispatcher.
852
852
  * @param path The URI path pattern for the followers collection. The syntax
@@ -858,7 +858,7 @@ interface Federatable<TContextData> {
858
858
  * callbacks.
859
859
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
860
860
  */
861
- setFollowersDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Recipient, Context<TContextData>, TContextData, URL>): CollectionCallbackSetters<Context<TContextData>, TContextData, URL>;
861
+ setFollowersDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Recipient, Context<TContextData>, TContextData, URL>): CollectionCallbackSetters<Context<TContextData>, TContextData, URL>;
862
862
  /**
863
863
  * Registers a liked collection dispatcher.
864
864
  * @param path The URI path pattern for the liked collection. The syntax
@@ -870,7 +870,7 @@ interface Federatable<TContextData> {
870
870
  * callbacks.
871
871
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
872
872
  */
873
- setLikedDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Object$1 | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
873
+ setLikedDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Object$1 | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
874
874
  /**
875
875
  * Registers a featured collection dispatcher.
876
876
  * @param path The URI path pattern for the featured collection. The syntax
@@ -882,7 +882,7 @@ interface Federatable<TContextData> {
882
882
  * callbacks.
883
883
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
884
884
  */
885
- setFeaturedDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Object$1, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
885
+ setFeaturedDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Object$1, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
886
886
  /**
887
887
  * Registers a featured tags collection dispatcher.
888
888
  * @param path The URI path pattern for the featured tags collection.
@@ -894,7 +894,7 @@ interface Federatable<TContextData> {
894
894
  * callbacks.
895
895
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
896
896
  */
897
- setFeaturedTagsDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Hashtag, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
897
+ setFeaturedTagsDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Hashtag, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
898
898
  /**
899
899
  * Assigns the URL path for the inbox and starts setting inbox listeners.
900
900
  *
@@ -924,7 +924,7 @@ interface Federatable<TContextData> {
924
924
  * @returns An object to register inbox listeners.
925
925
  * @throws {RouteError} Thrown if the path pattern is invalid.
926
926
  */
927
- setInboxListeners(inboxPath: `${string}{identifier}${string}` | `${string}{handle}${string}`, sharedInboxPath?: string): InboxListenerSetters<TContextData>;
927
+ setInboxListeners(inboxPath: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, sharedInboxPath?: string): InboxListenerSetters<TContextData>;
928
928
  /**
929
929
  * Registers a collection of objects dispatcher.
930
930
  *
@@ -939,7 +939,77 @@ interface Federatable<TContextData> {
939
939
  * The path must have one or more variables.
940
940
  * @param dispatcher A collection dispatcher callback to register.
941
941
  */
942
- setCollectionDispatcher<TObject extends Object$1, TParams extends Record<string, string>>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: ParamsKeyPath<TParams>, dispatcher: CustomCollectionDispatcher<TObject, TParams, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParams, RequestContext<TContextData>, TContextData>;
942
+ setCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: (new (...args: any[]) => TObject) & {
943
+ typeId: URL;
944
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
945
+ /**
946
+ * Registers a collection of objects dispatcher.
947
+ *
948
+ * @template TContextData The context data to pass to the {@link Context}.
949
+ * @template TObject The type of objects to dispatch.
950
+ * @template TParam The parameter names of the requested URL.
951
+ * @param name A unique name for the collection dispatcher.
952
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
953
+ * @param path The URI path pattern for the collection dispatcher.
954
+ * The syntax is based on URI Template
955
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
956
+ * The path must have one or more variables.
957
+ * @param dispatcher A collection dispatcher callback to register.
958
+ */
959
+ setCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: (new (...args: any[]) => TObject) & {
960
+ typeId: URL;
961
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
962
+ /**
963
+ * Registers a collection of objects dispatcher.
964
+ *
965
+ * @template TContextData The context data to pass to the {@link Context}.
966
+ * @template TObject The type of objects to dispatch.
967
+ * @template TParam The parameter names of the requested URL.
968
+ * @param name A unique name for the collection dispatcher.
969
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
970
+ * @param path The URI path pattern for the collection dispatcher.
971
+ * The syntax is based on URI Template
972
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
973
+ * The path must have one or more variables.
974
+ * @param dispatcher A collection dispatcher callback to register.
975
+ */
976
+ setCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: (new (...args: any[]) => TObject) & {
977
+ typeId: URL;
978
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
979
+ /**
980
+ * Registers an ordered collection of objects dispatcher.
981
+ *
982
+ * @template TContextData The context data to pass to the {@link Context}.
983
+ * @template TObject The type of objects to dispatch.
984
+ * @template TParam The parameter names of the requested URL.
985
+ * @param name A unique name for the collection dispatcher.
986
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
987
+ * @param path The URI path pattern for the collection dispatcher.
988
+ * The syntax is based on URI Template
989
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
990
+ * The path must have one or more variables.
991
+ * @param dispatcher A collection dispatcher callback to register.
992
+ */
993
+ setOrderedCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: (new (...args: any[]) => TObject) & {
994
+ typeId: URL;
995
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
996
+ /**
997
+ * Registers an ordered collection of objects dispatcher.
998
+ *
999
+ * @template TContextData The context data to pass to the {@link Context}.
1000
+ * @template TObject The type of objects to dispatch.
1001
+ * @template TParam The parameter names of the requested URL.
1002
+ * @param name A unique name for the collection dispatcher.
1003
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
1004
+ * @param path The URI path pattern for the collection dispatcher.
1005
+ * The syntax is based on URI Template
1006
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
1007
+ * The path must have one or more variables.
1008
+ * @param dispatcher A collection dispatcher callback to register.
1009
+ */
1010
+ setOrderedCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: (new (...args: any[]) => TObject) & {
1011
+ typeId: URL;
1012
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
943
1013
  /**
944
1014
  * Registers an ordered collection of objects dispatcher.
945
1015
  *
@@ -954,7 +1024,9 @@ interface Federatable<TContextData> {
954
1024
  * The path must have one or more variables.
955
1025
  * @param dispatcher A collection dispatcher callback to register.
956
1026
  */
957
- setOrderedCollectionDispatcher<TObject extends Object$1, TParams extends Record<string, string>>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: ParamsKeyPath<TParams>, dispatcher: CustomCollectionDispatcher<TObject, TParams, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParams, RequestContext<TContextData>, TContextData>;
1027
+ setOrderedCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: (new (...args: any[]) => TObject) & {
1028
+ typeId: URL;
1029
+ }, path: `${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
958
1030
  }
959
1031
  /**
960
1032
  * An object that registers federation-related business logic and dispatches
@@ -1090,12 +1162,6 @@ interface FederationOptions<TContextData> {
1090
1162
  * @since 1.4.0
1091
1163
  */
1092
1164
  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
1165
  /**
1100
1166
  * A factory function that creates an authenticated document loader for a
1101
1167
  * given identity. This is used for fetching documents that require
@@ -1304,6 +1370,36 @@ interface CollectionCallbackSetters<TContext extends Context<TContextData>, TCon
1304
1370
  */
1305
1371
  authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContext, TContextData, TFilter>;
1306
1372
  }
1373
+ /**
1374
+ * The strategy for handling activity idempotency in inbox processing.
1375
+ *
1376
+ * - `"global"`: Activities are deduplicated globally across all inboxes and
1377
+ * origins. The same activity ID will be processed only once, regardless
1378
+ * of which inbox receives it or which server sent it.
1379
+ *
1380
+ * - `"per-origin"`: Activities are deduplicated per receiving server's origin.
1381
+ * The same activity ID will be processed only once on each receiving server,
1382
+ * but can be processed separately on different receiving servers. This had
1383
+ * been the default behavior in Fedify 1.x versions.
1384
+ *
1385
+ * - `"per-inbox"`: Activities are deduplicated per inbox. The same activity
1386
+ * ID can be processed once per inbox, allowing the same activity to be
1387
+ * delivered to multiple inboxes independently. This follows standard
1388
+ * ActivityPub behavior and is the default strategy since Fedify 2.0.0.
1389
+ *
1390
+ * @since 1.9.0
1391
+ */
1392
+ type IdempotencyStrategy = "global" | "per-origin" | "per-inbox";
1393
+ /**
1394
+ * A callback to generate a custom idempotency key for an activity.
1395
+ * Returns the cache key to use, or null to skip idempotency checking.
1396
+ * @template TContextData The context data to pass to the {@link InboxContext}.
1397
+ * @param ctx The inbox context.
1398
+ * @param activity The activity being processed.
1399
+ * @returns The idempotency key to use for caching, or null to skip caching.
1400
+ * @since 1.9.0
1401
+ */
1402
+ type IdempotencyKeyCallback<TContextData> = (ctx: InboxContext<TContextData>, activity: Activity) => string | null | Promise<string | null>;
1307
1403
  /**
1308
1404
  * Registry for inbox listeners for different activity types.
1309
1405
  */
@@ -1334,6 +1430,36 @@ interface InboxListenerSetters<TContextData> {
1334
1430
  * @since 0.11.0
1335
1431
  */
1336
1432
  setSharedKeyDispatcher(dispatcher: SharedInboxKeyDispatcher<TContextData>): InboxListenerSetters<TContextData>;
1433
+ /**
1434
+ * Configures the strategy for handling activity idempotency in inbox processing.
1435
+ *
1436
+ * @example
1437
+ * Use per-inbox strategy (standard ActivityPub behavior):
1438
+ * ```
1439
+ * federation
1440
+ * .setInboxListeners("/users/{identifier}/inbox", "/inbox")
1441
+ * .withIdempotency("per-inbox");
1442
+ * ```
1443
+ *
1444
+ * Use custom strategy:
1445
+ * ```
1446
+ * federation
1447
+ * .setInboxListeners("/users/{identifier}/inbox", "/inbox")
1448
+ * .withIdempotency((ctx, activity) => {
1449
+ * // Return null to skip idempotency
1450
+ * return `${ctx.origin}:${activity.id?.href}:${ctx.recipient}`;
1451
+ * });
1452
+ * ```
1453
+ *
1454
+ * @param strategy The idempotency strategy to use. Can be:
1455
+ * - `"global"`: Activities are deduplicated across all inboxes and origins
1456
+ * - `"per-origin"`: Activities are deduplicated per inbox origin
1457
+ * - `"per-inbox"`: Activities are deduplicated per inbox
1458
+ * - A custom callback function that returns the cache key to use
1459
+ * @returns The setters object so that settings can be chained.
1460
+ * @since 1.9.0
1461
+ */
1462
+ withIdempotency(strategy: IdempotencyStrategy | IdempotencyKeyCallback<TContextData>): InboxListenerSetters<TContextData>;
1337
1463
  }
1338
1464
  /**
1339
1465
  * Parameters of {@link Federation.fetch} method.
@@ -1372,38 +1498,38 @@ interface FederationFetchOptions<TContextData> {
1372
1498
  /**
1373
1499
  * Additional settings for a custom collection dispatcher.
1374
1500
  *
1375
- * @template TParams The type of the parameters in the URL path.
1501
+ * @template TParam The type of the parameters in the URL path.
1376
1502
  * @template TContext The type of the context. {@link Context} or
1377
1503
  * {@link RequestContext}.
1378
1504
  * @template TContextData The context data to pass to the {@link Context}.
1379
1505
  * @template TFilter The type of filter for the collection.
1380
1506
  */
1381
- interface CustomCollectionCallbackSetters<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> {
1507
+ interface CustomCollectionCallbackSetters<TParam extends string, TContext extends Context<TContextData>, TContextData> {
1382
1508
  /**
1383
1509
  * Sets the counter for the custom collection.
1384
1510
  * @param counter A callback that returns the number of items in the custom collection.
1385
1511
  * @returns The setters object so that settings can be chained.
1386
1512
  */
1387
- setCounter(counter: CustomCollectionCounter<TParams, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1513
+ setCounter(counter: CustomCollectionCounter<TParam, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1388
1514
  /**
1389
1515
  * Sets the first cursor for the custom collection.
1390
1516
  * @param cursor The cursor for the first item in the custom collection.
1391
1517
  * @returns The setters object so that settings can be chained.
1392
1518
  */
1393
- setFirstCursor(cursor: CustomCollectionCursor<TParams, TContext, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1519
+ setFirstCursor(cursor: CustomCollectionCursor<TParam, TContext, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1394
1520
  /**
1395
1521
  * Sets the last cursor for the custom collection.
1396
1522
  * @param cursor The cursor for the last item in the custom collection.
1397
1523
  * @returns The setters object so that settings can be chained.
1398
1524
  */
1399
- setLastCursor(cursor: CustomCollectionCursor<TParams, TContext, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1525
+ setLastCursor(cursor: CustomCollectionCursor<TParam, TContext, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1400
1526
  /**
1401
1527
  * Specifies the conditions under which requests are authorized.
1402
1528
  * @param predicate A callback that returns whether a request is authorized.
1403
1529
  * @returns The setters object so that settings can be chained.
1404
1530
  * @since 0.7.0
1405
1531
  */
1406
- authorize(predicate: ObjectAuthorizePredicate<TContextData, string>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1532
+ authorize(predicate: ObjectAuthorizePredicate<TContextData, string>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1407
1533
  }
1408
1534
  /**
1409
1535
  * Represents an object with a type ID, which is either a constructor or an
@@ -1415,73 +1541,34 @@ type ConstructorWithTypeId<TObject extends Object$1> = (new (...args: any[]) =>
1415
1541
  typeId: URL;
1416
1542
  };
1417
1543
  /**
1418
- * Represents a path from the key of parameter objects.
1419
- * @param Params - A record of parameters where keys are parameter names and
1420
- * values are their string representations.
1421
- * @returns A string representing the path with all parameters.
1422
- * @example
1423
- * ```ts
1424
- * type UserPostPath = ParamsKeyPath<{ userId: string; postId: string }>;
1425
- * let userPostPath: UserPostPath;
1426
- * // userPostPath = "/posts/{postId}"; // invalid - does not contain `{userId}`
1427
- * // userPostPath = "/users/{userId}"; // invalid - does not contain `{postId}`
1428
- * userPostPath = "/users/{userId}/posts/{postId}"; // valid
1429
- * userPostPath = "/posts/{postId}/users/{userId}"; // valid
1430
- * ```
1431
- */
1432
- type ParamsKeyPath<Params extends Record<string, string>> = ParamsPath<Extract<keyof Params, string>> & string;
1433
- /**
1434
- * Represents a path with multiple parameters.
1435
- * All permutations of the parameters are included in the union type.
1436
- * The path must have all parameters in the form of `{paramName}`.
1437
- * @param Params - A union of parameter names.
1438
- * @returns A string representing the path with all parameters.
1439
- * @example
1440
- * ```ts
1441
- * type UserPostPath = ParamsPath<"userId" | "postId">;
1442
- * // = `${string}{userId}${string}` & `${string}{postId}${string}`
1443
- * // =
1444
- * // | `${string}{userId}${string}{postId}${string}`
1445
- * // | `${string}{postId}${string}{userId}${string}`
1446
- * let userPostPath: UserPostPath;
1447
- * userPostPath = "/users/posts"; // ❌ invalid
1448
- * userPostPath = "/users/{userId}"; // ❌ invalid
1449
- * userPostPath = "/posts/{postId}"; // ❌ invalid
1450
- * userPostPath = "/users/{userId}/posts/{postId}"; // ✅ valid
1451
- * userPostPath = "/posts/{postId}/users/{userId}"; // ✅ valid
1452
- */
1453
- type ParamsPath<Params extends string> = UnionToIntersection<ParamPath<Params>>;
1454
- /**
1455
- * Represents a path with a single parameter.
1456
- * The path must have at least one of the parameters in the form of `{paramName}`.
1457
- * @param Param - The name of the parameter.
1458
- * @returns A string representing the path with the parameter.
1459
- * @example
1460
- * ```ts
1461
- * type UserPostPath = ParamPath<"userId" | "postId">;
1462
- * // = `${string}{userId}${string}` | `${string}{postId}${string}`
1463
- * let userPostPath: UserPostPath;
1464
- * userPostPath = "/users/posts"; // ❌ invalid
1465
- * userPostPath = "/users/{userId}"; // ✅ valid
1466
- * userPostPath = "/posts/{postId}"; // ✅ valid
1467
- * userPostPath = "/users/{userId}/posts/{postId}"; // ✅ valid
1468
- * userPostPath = "/posts/{postId}/users/{userId}"; // ✅ valid
1469
- */
1470
- type ParamPath<Param extends string> = `${string}{${Param}}${string}`;
1471
- /**
1472
- * Converts union types to intersection types.
1544
+ * Defines a union of all valid RFC 6570 URI Template expressions for a given
1545
+ * parameter name.
1546
+ *
1547
+ * RFC 6570 specifies a syntax for URI templates, allowing for variable
1548
+ * expansion. This type captures all Level 1-4 operator expressions for a
1549
+ * single, named variable.
1473
1550
  *
1474
- * @template U - The union type to convert.
1475
- * @returns The intersection type of the union.
1551
+ * The supported expression types are:
1552
+ * - `{Param}`: Simple string expansion
1553
+ * - `+{Param}`: Reserved string expansion
1554
+ * - `#{Param}`: Fragment expansion
1555
+ * - `{.Param}`: Label expansion with a dot-prefix
1556
+ * - `{/Param}`: Path segment expansion
1557
+ * - `{;Param}`: Path-style parameter expansion
1558
+ * - `{?Param}`: Query component expansion
1559
+ * - `{&Param}`: Query continuation expansion
1560
+ *
1561
+ * @template Param The name of the parameter to be used in the expressions.
1476
1562
  * @example
1477
1563
  * ```ts
1478
- * type A = { a: string };
1479
- * type B = { b: number };
1480
- * type AorB = A | B;
1481
- * type AandB = UnionToIntersection<AorB>;
1482
- * // AandB = { a: string; b: number }
1564
+ * type UserIdExpression = Rfc6570Expression<"userId">;
1565
+ *
1566
+ * // The variable `userPath` can be assigned any of the valid expressions.
1567
+ * const userPath: UserIdExpression = "{/userId}";
1568
+ * ```
1569
+ * @see {@link https://tools.ietf.org/html/rfc6570} for the full specification.
1483
1570
  */
1484
- type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
1571
+ type Rfc6570Expression<Param extends string> = `{${Param}}` | `{+${Param}}` | `{#${Param}}` | `{.${Param}}` | `{/${Param}}` | `{;${Param}}` | `{?${Param}}` | `{&${Param}}`;
1485
1572
  //#endregion
1486
1573
  //#region src/federation/context.d.ts
1487
1574
  /**
@@ -2252,4 +2339,4 @@ interface ActorKeyPair extends CryptoKeyPair {
2252
2339
  multikey: Multikey;
2253
2340
  }
2254
2341
  //#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 };
2342
+ 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, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, 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-dev.1641+6b0c942c";
13
+ var version = "2.0.0-dev.1726+99d0d861";
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-dev.1641+6b0c942c";
12
+ var version = "2.0.0-dev.1726+99d0d861";
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-B4NJkfVg.js";
6
+ import { __commonJS, __toESM } from "./type-D_8QzkEn.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-B4NJkfVg.js";
6
+ import { Activity, Note, Person } from "../type-D_8QzkEn.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-CiU3QxQz.js";
12
- import "../inbox-BDdRbWNI.js";
13
- import { createFederationBuilder } from "../builder-E2Icrl_a.js";
14
- import { test } from "../testing-ByQmUvf-.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-VSVPBU3J.js";
12
+ import "../inbox-Blp5F74G.js";
13
+ import { createFederationBuilder } from "../builder-CGF1vv7G.js";
14
+ import { test } from "../testing-e8Kpb1uV.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-B4NJkfVg.js";
6
+ import "../type-D_8QzkEn.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-CiU3QxQz.js";
10
+ import "../lookup-VSVPBU3J.js";
11
11
  import { buildCollectionSynchronizationHeader, digest } from "../collection-CcnIw1qY.js";
12
- import { test } from "../testing-ByQmUvf-.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-e8Kpb1uV.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