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

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-m_ko-86v.js → actor-C0gLJq8I.js} +7263 -2440
  2. package/dist/{actor-CNUje03O.cjs → actor-CsRJa7wV.cjs} +7263 -2440
  3. package/dist/{actor-DMgu-ZjT.d.cts → actor-D6K058Tb.d.cts} +1 -1
  4. package/dist/{actor-C22bXuuC.d.ts → actor-T6RyhRgk.d.ts} +1 -1
  5. package/dist/{actor-BxAu0qet.js → actor-VrXd7EdX.js} +1 -1
  6. package/dist/{authdocloader-nRFL9luh.js → authdocloader-6F9IP-VO.js} +3 -3
  7. package/dist/{authdocloader-D_3mtAjX.cjs → authdocloader-BkuVo8LL.cjs} +3 -3
  8. package/dist/{authdocloader-Chl2nuOI.js → authdocloader-C8LXxsmU.js} +3 -3
  9. package/dist/{builder-C8Of4dPy.js → builder-JjsppXTK.js} +14 -8
  10. package/dist/{client-yGBH5stP.js → client-BS-GE3XI.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-B1X8-X33.d.ts} +186 -98
  15. package/dist/{context-tVOQ76fi.d.cts → context-DYCJXr7J.d.cts} +186 -98
  16. package/dist/{docloader-_WdHTWQR.js → docloader-AMdJU291.js} +1 -1
  17. package/dist/{docloader-SZjTrl6Z.cjs → docloader-BdF5STdg.cjs} +1 -1
  18. package/dist/{esm-e_G_xo95.js → esm-CvUgdJZ_.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-BS6766zs.d.cts → http-D-e6AFwR.d.cts} +1 -1
  39. package/dist/{http-DqSNLFNY.d.ts → http-D6Uj2x2y.d.ts} +1 -1
  40. package/dist/{http-BpoEurUR.js → http-DVQEn98K.js} +3 -3
  41. package/dist/{http-DREvFalF.cjs → http-D_BI5KHC.cjs} +3 -3
  42. package/dist/{http-BEo67UOx.js → http-DbyMqL2X.js} +2 -2
  43. package/dist/{inbox-D-B5xFtJ.js → inbox-DQlf_-Dz.js} +24 -7
  44. package/dist/{key-DJpcumqB.js → key-BBzfhQGE.js} +4 -4
  45. package/dist/key-BMz_uAnc.cjs +10 -0
  46. package/dist/{key-Cps8Sv3N.js → key-BSJX6n9o.js} +2 -2
  47. package/dist/{key-JqiQvcq1.cjs → key-D-RgWfcf.cjs} +2 -2
  48. package/dist/{key-Cf8KTg-A.js → key-DFefr8X2.js} +2 -2
  49. package/dist/{key-DqrTz8Xq.js → key-DW2DrPGl.js} +3 -3
  50. package/dist/{keycache-D_Q1fPV0.js → keycache-CcIfdj0m.js} +1 -1
  51. package/dist/{keys-F0jh2GNR.js → keys-DnSaJmvD.js} +1 -1
  52. package/dist/{ld-CXygHn_m.js → ld-CAJ6Q2od.js} +2 -2
  53. package/dist/{lookup-C-Y0Ep1a.cjs → lookup-B2Bsau2g.cjs} +1 -1
  54. package/dist/{lookup-C6WSLjPE.js → lookup-BGCuyJRy.js} +1 -1
  55. package/dist/{lookup-DuqY2_In.js → lookup-C3pnuyiD.js} +21 -12
  56. package/dist/{middleware-2qNNXYEE.js → middleware-1oxZY_0z.js} +78 -56
  57. package/dist/middleware-B8WWe8Q2.js +26 -0
  58. package/dist/{middleware-CMiUxZ6O.js → middleware-BDqkoMAQ.js} +48 -49
  59. package/dist/{middleware-BsFAFlnZ.cjs → middleware-D0XMPoN8.cjs} +78 -56
  60. package/dist/middleware-DipQbJmB.js +17 -0
  61. package/dist/middleware-mLaQeD_Z.cjs +17 -0
  62. package/dist/{mod-Drmz72EK.d.ts → mod-BhUKmBJD.d.ts} +2 -2
  63. package/dist/{mod-TFoH2Ql8.d.ts → mod-CerN_Sza.d.ts} +1 -1
  64. package/dist/{mod-Dc_-mf8s.d.cts → mod-Cj1tHXBR.d.cts} +1 -1
  65. package/dist/{mod-evzlRVZq.d.cts → mod-CxkWO3Mg.d.cts} +19 -1
  66. package/dist/{mod-B26zRlH1.d.ts → mod-DcKxhFQ8.d.ts} +2 -2
  67. package/dist/{mod-BClfg3ej.d.cts → mod-Djzcw2ry.d.cts} +2 -2
  68. package/dist/{mod-Cxt4Kpf6.d.ts → mod-DlU8ISoa.d.ts} +19 -1
  69. package/dist/{mod-DBQAI4v9.d.cts → mod-twdvV2hR.d.cts} +2 -2
  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-CaIfLBwg.js} +2 -2
  81. package/dist/{owner-CQPnQVtf.d.ts → owner-hd9lvQcP.d.ts} +2 -2
  82. package/dist/{proof-C4Y4gJcm.cjs → proof-AhyVJcNZ.cjs} +3 -3
  83. package/dist/{proof-kEUjWRNJ.js → proof-BQwXHakc.js} +2 -2
  84. package/dist/{proof-CHM9su4L.js → proof-CKXppjee.js} +3 -3
  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-DQd3R1Oc.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 +391 -86
  108. package/dist/testing/mod.js +3 -3
  109. package/dist/{testing-DUpTIvNE.js → testing-BljKU-GG.js} +2 -2
  110. package/dist/{type-BYN6Ax2M.js → type-COb6KNlm.js} +6943 -2120
  111. package/dist/{types-BXkh8ctL.js → types-CEn4wB51.js} +1 -1
  112. package/dist/{types-BBpQe860.cjs → types-DI0yutHB.cjs} +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-PKJB4DyY.js → vocab-CkWH9P5l.js} +23 -14
  123. package/dist/{vocab-DJTYMqyU.d.cts → vocab-Dw1-yVGg.d.cts} +290 -0
  124. package/dist/{vocab-DWZQ7gVQ.cjs → vocab-NZXL5Pr-.cjs} +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,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,9 +304,10 @@ 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
311
  /**
311
312
  * Options for the {@link respondWithObject} and
312
313
  * {@link respondWithObjectIfAcceptable} functions.
@@ -701,7 +702,7 @@ interface Federatable<TContextData> {
701
702
  * @returns An object with methods to set other actor dispatcher callbacks.
702
703
  * @throws {RouterError} Thrown if the path pattern is invalid.
703
704
  */
704
- 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>;
705
706
  /**
706
707
  * Registers an object dispatcher.
707
708
  *
@@ -765,7 +766,7 @@ interface Federatable<TContextData> {
765
766
  */
766
767
  setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
767
768
  typeId: URL;
768
- }, 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>;
769
770
  /**
770
771
  * Registers an object dispatcher.
771
772
  *
@@ -781,7 +782,7 @@ interface Federatable<TContextData> {
781
782
  */
782
783
  setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
783
784
  typeId: URL;
784
- }, 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>;
785
786
  /**
786
787
  * Registers an object dispatcher.
787
788
  *
@@ -797,7 +798,7 @@ interface Federatable<TContextData> {
797
798
  */
798
799
  setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
799
800
  typeId: URL;
800
- }, 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>;
801
802
  /**
802
803
  * Registers an inbox dispatcher.
803
804
  *
@@ -809,7 +810,7 @@ interface Federatable<TContextData> {
809
810
  * @param dispatcher An inbox dispatcher callback to register.
810
811
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
811
812
  */
812
- 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>;
813
814
  /**
814
815
  * Registers an outbox dispatcher.
815
816
  *
@@ -833,7 +834,7 @@ interface Federatable<TContextData> {
833
834
  * @param dispatcher An outbox dispatcher callback to register.
834
835
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
835
836
  */
836
- 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>;
837
838
  /**
838
839
  * Registers a following collection dispatcher.
839
840
  * @param path The URI path pattern for the following collection. The syntax
@@ -845,7 +846,7 @@ interface Federatable<TContextData> {
845
846
  * callbacks.
846
847
  * @throws {RouterError} Thrown if the path pattern is invalid.
847
848
  */
848
- 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>;
849
850
  /**
850
851
  * Registers a followers collection dispatcher.
851
852
  * @param path The URI path pattern for the followers collection. The syntax
@@ -857,7 +858,7 @@ interface Federatable<TContextData> {
857
858
  * callbacks.
858
859
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
859
860
  */
860
- 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>;
861
862
  /**
862
863
  * Registers a liked collection dispatcher.
863
864
  * @param path The URI path pattern for the liked collection. The syntax
@@ -869,7 +870,7 @@ interface Federatable<TContextData> {
869
870
  * callbacks.
870
871
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
871
872
  */
872
- 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>;
873
874
  /**
874
875
  * Registers a featured collection dispatcher.
875
876
  * @param path The URI path pattern for the featured collection. The syntax
@@ -881,7 +882,7 @@ interface Federatable<TContextData> {
881
882
  * callbacks.
882
883
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
883
884
  */
884
- 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>;
885
886
  /**
886
887
  * Registers a featured tags collection dispatcher.
887
888
  * @param path The URI path pattern for the featured tags collection.
@@ -893,7 +894,7 @@ interface Federatable<TContextData> {
893
894
  * callbacks.
894
895
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
895
896
  */
896
- 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>;
897
898
  /**
898
899
  * Assigns the URL path for the inbox and starts setting inbox listeners.
899
900
  *
@@ -923,7 +924,41 @@ interface Federatable<TContextData> {
923
924
  * @returns An object to register inbox listeners.
924
925
  * @throws {RouteError} Thrown if the path pattern is invalid.
925
926
  */
926
- 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
+ /**
929
+ * Registers a collection of objects dispatcher.
930
+ *
931
+ * @template TContextData The context data to pass to the {@link Context}.
932
+ * @template TObject The type of objects to dispatch.
933
+ * @template TParam The parameter names of the requested URL.
934
+ * @param name A unique name for the collection dispatcher.
935
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
936
+ * @param path The URI path pattern for the collection dispatcher.
937
+ * The syntax is based on URI Template
938
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
939
+ * The path must have one or more variables.
940
+ * @param dispatcher A collection dispatcher callback to register.
941
+ */
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>;
927
962
  /**
928
963
  * Registers a collection of objects dispatcher.
929
964
  *
@@ -938,7 +973,26 @@ interface Federatable<TContextData> {
938
973
  * The path must have one or more variables.
939
974
  * @param dispatcher A collection dispatcher callback to register.
940
975
  */
941
- 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>;
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>;
942
996
  /**
943
997
  * Registers an ordered collection of objects dispatcher.
944
998
  *
@@ -953,7 +1007,26 @@ interface Federatable<TContextData> {
953
1007
  * The path must have one or more variables.
954
1008
  * @param dispatcher A collection dispatcher callback to register.
955
1009
  */
956
- 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>;
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>;
1013
+ /**
1014
+ * Registers an ordered collection of objects dispatcher.
1015
+ *
1016
+ * @template TContextData The context data to pass to the {@link Context}.
1017
+ * @template TObject The type of objects to dispatch.
1018
+ * @template TParam The parameter names of the requested URL.
1019
+ * @param name A unique name for the collection dispatcher.
1020
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
1021
+ * @param path The URI path pattern for the collection dispatcher.
1022
+ * The syntax is based on URI Template
1023
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
1024
+ * The path must have one or more variables.
1025
+ * @param dispatcher A collection dispatcher callback to register.
1026
+ */
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>;
957
1030
  }
958
1031
  /**
959
1032
  * An object that registers federation-related business logic and dispatches
@@ -1089,12 +1162,6 @@ interface FederationOptions<TContextData> {
1089
1162
  * @since 1.4.0
1090
1163
  */
1091
1164
  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
1165
  /**
1099
1166
  * A factory function that creates an authenticated document loader for a
1100
1167
  * given identity. This is used for fetching documents that require
@@ -1303,6 +1370,36 @@ interface CollectionCallbackSetters<TContext extends Context<TContextData>, TCon
1303
1370
  */
1304
1371
  authorize(predicate: AuthorizePredicate<TContextData>): CollectionCallbackSetters<TContext, TContextData, TFilter>;
1305
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>;
1306
1403
  /**
1307
1404
  * Registry for inbox listeners for different activity types.
1308
1405
  */
@@ -1333,6 +1430,36 @@ interface InboxListenerSetters<TContextData> {
1333
1430
  * @since 0.11.0
1334
1431
  */
1335
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>;
1336
1463
  }
1337
1464
  /**
1338
1465
  * Parameters of {@link Federation.fetch} method.
@@ -1371,38 +1498,38 @@ interface FederationFetchOptions<TContextData> {
1371
1498
  /**
1372
1499
  * Additional settings for a custom collection dispatcher.
1373
1500
  *
1374
- * @template TParams The type of the parameters in the URL path.
1501
+ * @template TParam The type of the parameters in the URL path.
1375
1502
  * @template TContext The type of the context. {@link Context} or
1376
1503
  * {@link RequestContext}.
1377
1504
  * @template TContextData The context data to pass to the {@link Context}.
1378
1505
  * @template TFilter The type of filter for the collection.
1379
1506
  */
1380
- interface CustomCollectionCallbackSetters<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> {
1507
+ interface CustomCollectionCallbackSetters<TParam extends string, TContext extends Context<TContextData>, TContextData> {
1381
1508
  /**
1382
1509
  * Sets the counter for the custom collection.
1383
1510
  * @param counter A callback that returns the number of items in the custom collection.
1384
1511
  * @returns The setters object so that settings can be chained.
1385
1512
  */
1386
- setCounter(counter: CustomCollectionCounter<TParams, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1513
+ setCounter(counter: CustomCollectionCounter<TParam, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1387
1514
  /**
1388
1515
  * Sets the first cursor for the custom collection.
1389
1516
  * @param cursor The cursor for the first item in the custom collection.
1390
1517
  * @returns The setters object so that settings can be chained.
1391
1518
  */
1392
- setFirstCursor(cursor: CustomCollectionCursor<TParams, TContext, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1519
+ setFirstCursor(cursor: CustomCollectionCursor<TParam, TContext, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1393
1520
  /**
1394
1521
  * Sets the last cursor for the custom collection.
1395
1522
  * @param cursor The cursor for the last item in the custom collection.
1396
1523
  * @returns The setters object so that settings can be chained.
1397
1524
  */
1398
- setLastCursor(cursor: CustomCollectionCursor<TParams, TContext, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1525
+ setLastCursor(cursor: CustomCollectionCursor<TParam, TContext, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1399
1526
  /**
1400
1527
  * Specifies the conditions under which requests are authorized.
1401
1528
  * @param predicate A callback that returns whether a request is authorized.
1402
1529
  * @returns The setters object so that settings can be chained.
1403
1530
  * @since 0.7.0
1404
1531
  */
1405
- authorize(predicate: ObjectAuthorizePredicate<TContextData, string>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
1532
+ authorize(predicate: ObjectAuthorizePredicate<TContextData, string>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
1406
1533
  }
1407
1534
  /**
1408
1535
  * Represents an object with a type ID, which is either a constructor or an
@@ -1414,73 +1541,34 @@ type ConstructorWithTypeId<TObject extends Object$1> = (new (...args: any[]) =>
1414
1541
  typeId: URL;
1415
1542
  };
1416
1543
  /**
1417
- * Represents a path from the key of parameter objects.
1418
- * @param Params - A record of parameters where keys are parameter names and
1419
- * values are their string representations.
1420
- * @returns A string representing the path with all parameters.
1421
- * @example
1422
- * ```ts
1423
- * type UserPostPath = ParamsKeyPath<{ userId: string; postId: string }>;
1424
- * let userPostPath: UserPostPath;
1425
- * // userPostPath = "/posts/{postId}"; // invalid - does not contain `{userId}`
1426
- * // userPostPath = "/users/{userId}"; // invalid - does not contain `{postId}`
1427
- * userPostPath = "/users/{userId}/posts/{postId}"; // valid
1428
- * userPostPath = "/posts/{postId}/users/{userId}"; // valid
1429
- * ```
1430
- */
1431
- type ParamsKeyPath<Params extends Record<string, string>> = ParamsPath<Extract<keyof Params, string>> & string;
1432
- /**
1433
- * Represents a path with multiple parameters.
1434
- * All permutations of the parameters are included in the union type.
1435
- * The path must have all parameters in the form of `{paramName}`.
1436
- * @param Params - A union of parameter names.
1437
- * @returns A string representing the path with all parameters.
1438
- * @example
1439
- * ```ts
1440
- * type UserPostPath = ParamsPath<"userId" | "postId">;
1441
- * // = `${string}{userId}${string}` & `${string}{postId}${string}`
1442
- * // =
1443
- * // | `${string}{userId}${string}{postId}${string}`
1444
- * // | `${string}{postId}${string}{userId}${string}`
1445
- * let userPostPath: UserPostPath;
1446
- * userPostPath = "/users/posts"; // ❌ invalid
1447
- * userPostPath = "/users/{userId}"; // ❌ invalid
1448
- * userPostPath = "/posts/{postId}"; // ❌ invalid
1449
- * userPostPath = "/users/{userId}/posts/{postId}"; // ✅ valid
1450
- * userPostPath = "/posts/{postId}/users/{userId}"; // ✅ valid
1451
- */
1452
- type ParamsPath<Params extends string> = UnionToIntersection<ParamPath<Params>>;
1453
- /**
1454
- * Represents a path with a single parameter.
1455
- * The path must have at least one of the parameters in the form of `{paramName}`.
1456
- * @param Param - The name of the parameter.
1457
- * @returns A string representing the path with the parameter.
1458
- * @example
1459
- * ```ts
1460
- * type UserPostPath = ParamPath<"userId" | "postId">;
1461
- * // = `${string}{userId}${string}` | `${string}{postId}${string}`
1462
- * let userPostPath: UserPostPath;
1463
- * userPostPath = "/users/posts"; // ❌ invalid
1464
- * userPostPath = "/users/{userId}"; // ✅ valid
1465
- * userPostPath = "/posts/{postId}"; // ✅ valid
1466
- * userPostPath = "/users/{userId}/posts/{postId}"; // ✅ valid
1467
- * userPostPath = "/posts/{postId}/users/{userId}"; // ✅ valid
1468
- */
1469
- type ParamPath<Param extends string> = `${string}{${Param}}${string}`;
1470
- /**
1471
- * 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.
1472
1550
  *
1473
- * @template U - The union type to convert.
1474
- * @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.
1475
1562
  * @example
1476
1563
  * ```ts
1477
- * type A = { a: string };
1478
- * type B = { b: number };
1479
- * type AorB = A | B;
1480
- * type AandB = UnionToIntersection<AorB>;
1481
- * // 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.
1482
1570
  */
1483
- 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}}`;
1484
1572
  //#endregion
1485
1573
  //#region src/federation/context.d.ts
1486
1574
  /**
@@ -2251,4 +2339,4 @@ interface ActorKeyPair extends CryptoKeyPair {
2251
2339
  multikey: Multikey;
2252
2340
  }
2253
2341
  //#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 };
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 };
@@ -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.449.1725+70c3284b";
13
13
  var license = "MIT";
14
14
  var exports = {
15
15
  ".": "./src/mod.ts",
@@ -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.449.1725+70c3284b";
14
14
  var license = "MIT";
15
15
  var exports$1 = {
16
16
  ".": "./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-COb6KNlm.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-COb6KNlm.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-C3pnuyiD.js";
12
+ import "../inbox-DQlf_-Dz.js";
13
+ import { createFederationBuilder } from "../builder-JjsppXTK.js";
14
+ import { test } from "../testing-BljKU-GG.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-COb6KNlm.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-C3pnuyiD.js";
11
11
  import { buildCollectionSynchronizationHeader, digest } from "../collection-CcnIw1qY.js";
12
- import { test } from "../testing-DUpTIvNE.js";
12
+ import { test } from "../testing-BljKU-GG.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-COb6KNlm.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-BDqkoMAQ.js";
12
+ import "../client-BS-GE3XI.js";
13
+ import "../lookup-C3pnuyiD.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-VrXd7EdX.js";
16
+ import "../key-BSJX6n9o.js";
17
+ import { signRequest } from "../http-DbyMqL2X.js";
18
+ import "../authdocloader-C8LXxsmU.js";
19
+ import "../ld-CAJ6Q2od.js";
20
+ import "../owner-CaIfLBwg.js";
21
+ import "../proof-BQwXHakc.js";
22
+ import { InboxListenerSet } from "../inbox-DQlf_-Dz.js";
23
+ import "../builder-JjsppXTK.js";
24
24
  import "../collection-CcnIw1qY.js";
25
- import "../keycache-D_Q1fPV0.js";
25
+ import "../keycache-CcIfdj0m.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-DQd3R1Oc.js";
29
+ import { createInboxContext, createRequestContext, mockDocumentLoader, test } from "../testing-BljKU-GG.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-DnSaJmvD.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 = () => {};