@fedify/fedify 2.0.0-pr.412.1692 → 2.0.0-pr.412.1794

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 (193) hide show
  1. package/README.md +3 -0
  2. package/dist/{actor-D5S46edz.js → actor-BXHc5r-q.js} +1 -1
  3. package/dist/{actor-CrTGiTZd.cjs → actor-Ba9Z1eNJ.cjs} +921 -1451
  4. package/dist/{actor-T6RyhRgk.d.ts → actor-DqFajh9s.d.ts} +2 -2
  5. package/dist/{actor-G2S5sPEA.js → actor-DzhunPC_.js} +189 -677
  6. package/dist/{actor-D6K058Tb.d.cts → actor-f2NtjyCg.d.cts} +2 -2
  7. package/dist/{assert_rejects-DiIiJbZn.js → assert_rejects-Ce45JcFg.js} +1 -1
  8. package/dist/{assert_is_error-BPGph1Jx.js → assert_throws-BNXdRGWP.js} +31 -1
  9. package/dist/{builder-OA47XRft.js → builder-u7usRsT3.js} +7 -8
  10. package/dist/{client-CegPX0Rn.d.cts → client-94iWEfQa.d.cts} +1 -1
  11. package/dist/{client-bgSdkFa2.d.ts → client-BsGzbnV-.d.ts} +1 -1
  12. package/dist/{client-Bmd-i8x8.js → client-pY7-3icS.js} +1 -1
  13. package/dist/compat/mod.d.cts +11 -12
  14. package/dist/compat/mod.d.ts +11 -12
  15. package/dist/compat/transformers.test.js +20 -20
  16. package/dist/{context-ByZprN0S.d.ts → context-DG0huGW-.d.ts} +124 -127
  17. package/dist/{context-C5BsZkDr.d.cts → context-DJ8aSy2Q.d.cts} +124 -127
  18. package/dist/{authdocloader-SjwloJUA.js → docloader-CrbAy9Oc.js} +17 -8
  19. package/dist/{esm-CwHz8Y8t.js → esm-C-Qa1zEM.js} +11 -11
  20. package/dist/federation/builder.test.js +8 -10
  21. package/dist/federation/collection.test.js +7 -9
  22. package/dist/federation/handler.test.js +25 -26
  23. package/dist/federation/idempotency.test.js +25 -26
  24. package/dist/federation/inbox.test.js +4 -6
  25. package/dist/federation/keycache.test.js +3 -4
  26. package/dist/federation/kv.test.js +6 -8
  27. package/dist/federation/middleware.test.js +32 -33
  28. package/dist/federation/mod.cjs +9 -11
  29. package/dist/federation/mod.d.cts +12 -13
  30. package/dist/federation/mod.d.ts +12 -13
  31. package/dist/federation/mod.js +9 -11
  32. package/dist/federation/mq.test.js +8 -10
  33. package/dist/federation/negotiation.test.js +7 -9
  34. package/dist/federation/retry.test.js +4 -5
  35. package/dist/federation/router.test.js +6 -8
  36. package/dist/federation/send.test.js +13 -15
  37. package/dist/{http-D6Uj2x2y.d.ts → http-BbO0ejuk.d.ts} +2 -2
  38. package/dist/{http-C5tC93Hn.js → http-CUVx-vzb.js} +256 -6
  39. package/dist/{http-DGjdMiLc.js → http-D2kIm9la.js} +2 -2
  40. package/dist/{http-BiBofurJ.cjs → http-Dofes42e.cjs} +289 -9
  41. package/dist/{http-D-e6AFwR.d.cts → http-M8k5mKc0.d.cts} +2 -2
  42. package/dist/{inbox-BoDY3z8G.js → inbox-HjG5peXY.js} +1 -1
  43. package/dist/{key-IxRhZpOF.js → key-CxdLUFS6.js} +3 -2
  44. package/dist/{keycache-TEniXNel.js → keycache-bU7COwsh.js} +1 -1
  45. package/dist/{keys-bZxcrZ9Z.js → keys-DMHs8XNn.js} +2 -1
  46. package/dist/kv-cache-CGXcDejL.js +122 -0
  47. package/dist/kv-cache-DN9pfMBe.js +94 -0
  48. package/dist/kv-cache-Dkvbn6rg.cjs +134 -0
  49. package/dist/{ld-DW7A0uIc.js → ld-CIhvSCCr.js} +3 -2
  50. package/dist/{lookup-cVRa2QM-.js → lookup-CHkCVZTU.js} +131 -2
  51. package/dist/lookup-CfFkONZD.cjs +272 -0
  52. package/dist/{type-NEA09tSC.js → lookup-DQRtjvb1.js} +503 -5328
  53. package/dist/middleware-Bot7EEwV.js +26 -0
  54. package/dist/middleware-CFJgmUMW.cjs +15 -0
  55. package/dist/{middleware-Cgr3PtaJ.js → middleware-CJlj5Olw.js} +44 -48
  56. package/dist/middleware-CjHl2NHA.js +15 -0
  57. package/dist/{middleware-TfuVoceY.cjs → middleware-D74TgW2E.cjs} +60 -66
  58. package/dist/{middleware-DvvYAIsd.js → middleware-DMk2Mdn9.js} +40 -46
  59. package/dist/mod-0noXw66R.d.cts +107 -0
  60. package/dist/{mod-BhUKmBJD.d.ts → mod-B2iOw50L.d.ts} +3 -3
  61. package/dist/mod-B9M-8jm2.d.ts +109 -0
  62. package/dist/{mod-DlU8ISoa.d.ts → mod-BlVovdcy.d.ts} +2 -2
  63. package/dist/{mod-D6hQoxC5.d.ts → mod-BoHnwOCs.d.ts} +2 -2
  64. package/dist/{mod-CxkWO3Mg.d.cts → mod-BxRCHTz-.d.cts} +2 -2
  65. package/dist/{mod-jQ4OODsl.d.cts → mod-C58MZ7Wx.d.cts} +1 -1
  66. package/dist/{mod-8DMWKtQE.d.cts → mod-DJcZDvjA.d.cts} +2 -2
  67. package/dist/{mod-Djzcw2ry.d.cts → mod-DgdBYYa0.d.cts} +3 -3
  68. package/dist/{mod-DBzN0aCM.d.ts → mod-Ds0mpFZU.d.ts} +1 -1
  69. package/dist/mod.cjs +19 -32
  70. package/dist/mod.d.cts +15 -16
  71. package/dist/mod.d.ts +16 -17
  72. package/dist/mod.js +14 -16
  73. package/dist/nodeinfo/client.test.js +8 -10
  74. package/dist/nodeinfo/handler.test.js +24 -25
  75. package/dist/nodeinfo/mod.cjs +2 -3
  76. package/dist/nodeinfo/mod.d.cts +2 -4
  77. package/dist/nodeinfo/mod.d.ts +2 -4
  78. package/dist/nodeinfo/mod.js +2 -3
  79. package/dist/nodeinfo/types.test.js +7 -9
  80. package/dist/{owner-BN_tO3cY.d.cts → owner-B4HbyP8s.d.cts} +3 -3
  81. package/dist/{owner-6Vc3UXXE.js → owner-Dvh7mBvr.js} +3 -2
  82. package/dist/{owner-hd9lvQcP.d.ts → owner-kQRGVXG1.d.ts} +3 -3
  83. package/dist/{proof-CRJWXFfT.cjs → proof-D0uThUvD.cjs} +17 -16
  84. package/dist/{proof-C1jhbeNv.js → proof-Dgy35fzc.js} +2 -2
  85. package/dist/{proof-Chi90OXv.js → proof-fqzaMJ4g.js} +5 -4
  86. package/dist/{send-DjATl6i3.js → send-Drp20VO9.js} +2 -2
  87. package/dist/sig/http.test.js +12 -13
  88. package/dist/sig/key.test.js +9 -11
  89. package/dist/sig/ld.test.js +8 -10
  90. package/dist/sig/mod.cjs +9 -11
  91. package/dist/sig/mod.d.cts +5 -7
  92. package/dist/sig/mod.d.ts +5 -7
  93. package/dist/sig/mod.js +5 -7
  94. package/dist/sig/owner.test.js +10 -12
  95. package/dist/sig/proof.test.js +13 -14
  96. package/dist/testing/docloader.test.js +6 -8
  97. package/dist/testing/mod.d.ts +114 -196
  98. package/dist/testing/mod.js +2 -3
  99. package/dist/{testing-BnfPB5T-.js → testing-g4UC4liW.js} +1 -2
  100. package/dist/{types-dLXLjVLf.js → types-BtUjyi5y.js} +1 -1
  101. package/dist/{types-CmmUQisS.cjs → types-CWgzGaqk.cjs} +3 -3
  102. package/dist/{runtime/authdocloader.test.js → utils/docloader.test.js} +14 -15
  103. package/dist/utils/kv-cache.test.js +209 -0
  104. package/dist/utils/mod.cjs +12 -0
  105. package/dist/utils/mod.d.cts +5 -0
  106. package/dist/utils/mod.d.ts +7 -0
  107. package/dist/utils/mod.js +11 -0
  108. package/dist/vocab/actor.test.js +8 -10
  109. package/dist/vocab/lookup.test.js +7 -9
  110. package/dist/vocab/mod.cjs +3 -4
  111. package/dist/vocab/mod.d.cts +3 -5
  112. package/dist/vocab/mod.d.ts +3 -5
  113. package/dist/vocab/mod.js +3 -4
  114. package/dist/vocab/type.test.js +2 -3
  115. package/dist/vocab/vocab.test.js +9 -10
  116. package/dist/{vocab-BI0Ak5lL.d.ts → vocab-BCWe1Ih5.d.ts} +2 -21
  117. package/dist/{vocab-rWbHpc2J.js → vocab-BnR3nIU9.js} +3 -3
  118. package/dist/{vocab-Dw1-yVGg.d.cts → vocab-CeDBzu-f.d.cts} +2 -21
  119. package/dist/{vocab-C5Y-0fGj.cjs → vocab-DFaWWYDn.cjs} +5 -5
  120. package/dist/webfinger/handler.test.js +24 -25
  121. package/dist/webfinger/lookup.test.js +7 -9
  122. package/dist/webfinger/mod.cjs +2 -3
  123. package/dist/webfinger/mod.d.cts +1 -3
  124. package/dist/webfinger/mod.d.ts +1 -3
  125. package/dist/webfinger/mod.js +2 -3
  126. package/dist/x/cfworkers.d.cts +2 -2
  127. package/dist/x/cfworkers.d.ts +2 -2
  128. package/dist/x/cfworkers.test.js +6 -8
  129. package/dist/x/hono.d.cts +10 -11
  130. package/dist/x/hono.d.ts +10 -11
  131. package/dist/x/sveltekit.d.cts +10 -11
  132. package/dist/x/sveltekit.d.ts +10 -11
  133. package/package.json +18 -17
  134. package/dist/assert_throws-BOO88avQ.js +0 -39
  135. package/dist/authdocloader-C5AvdCCi.js +0 -52
  136. package/dist/authdocloader-CQMPmpaO.cjs +0 -58
  137. package/dist/docloader-7Ey7wNHx.cjs +0 -4861
  138. package/dist/docloader-CkweNhUH.js +0 -4795
  139. package/dist/docloader-CxWcuWqQ.d.ts +0 -221
  140. package/dist/docloader-D-MrRyHl.d.cts +0 -219
  141. package/dist/key-CZR7QraT.cjs +0 -290
  142. package/dist/key-Cf8MffVe.cjs +0 -10
  143. package/dist/key-CkxrAIyp.js +0 -260
  144. package/dist/key-Dk0j88Jo.js +0 -10
  145. package/dist/key-Epcl5jpz.js +0 -10
  146. package/dist/lookup-DhQCVVja.js +0 -331
  147. package/dist/lookup-DiV4LFBg.cjs +0 -137
  148. package/dist/middleware-Be1JStOx.js +0 -17
  149. package/dist/middleware-CDOK7WOb.js +0 -26
  150. package/dist/middleware-EjIW2mZB.cjs +0 -17
  151. package/dist/mod-CerN_Sza.d.ts +0 -104
  152. package/dist/mod-Cj1tHXBR.d.cts +0 -102
  153. package/dist/runtime/docloader.test.js +0 -522
  154. package/dist/runtime/key.test.d.ts +0 -3
  155. package/dist/runtime/key.test.js +0 -103
  156. package/dist/runtime/langstr.test.d.ts +0 -3
  157. package/dist/runtime/langstr.test.js +0 -39
  158. package/dist/runtime/link.test.d.ts +0 -3
  159. package/dist/runtime/link.test.js +0 -61
  160. package/dist/runtime/mod.cjs +0 -25
  161. package/dist/runtime/mod.d.cts +0 -6
  162. package/dist/runtime/mod.d.ts +0 -8
  163. package/dist/runtime/mod.js +0 -13
  164. package/dist/runtime/multibase/multibase.test.d.ts +0 -3
  165. package/dist/runtime/multibase/multibase.test.js +0 -358
  166. package/dist/runtime/url.test.d.ts +0 -3
  167. package/dist/runtime/url.test.js +0 -45
  168. /package/dist/{assert_not_equals-f3m3epl3.js → assert_not_equals-C80BG-_5.js} +0 -0
  169. /package/dist/{collection-CcnIw1qY.js → collection-BzWsN9pB.js} +0 -0
  170. /package/dist/{denokv-Bv33Xxea.js → denokv-CCssOzMJ.js} +0 -0
  171. /package/dist/{federation-H2_En3j5.cjs → federation-CRpdnOMS.cjs} +0 -0
  172. /package/dist/{federation-D1U8YY9t.js → federation-jcR8-ZxP.js} +0 -0
  173. /package/dist/{kv-C7sopW2E.d.ts → kv-BKNZ-Tb-.d.ts} +0 -0
  174. /package/dist/{kv-63Cil1MD.d.cts → kv-Bxr0Q87_.d.cts} +0 -0
  175. /package/dist/{mod-FZd39qVq.d.cts → mod-B-hUPT2N.d.cts} +0 -0
  176. /package/dist/{mod-1pDWKvUL.d.ts → mod-CVgZgliM.d.ts} +0 -0
  177. /package/dist/{mod-g0xFzAP9.d.ts → mod-xIj-IT58.d.ts} +0 -0
  178. /package/dist/{mq-CRGm1e_F.d.ts → mq-CUKlBw08.d.ts} +0 -0
  179. /package/dist/{mq-B7R1Q-M5.d.cts → mq-DcJPkXD5.d.cts} +0 -0
  180. /package/dist/{negotiation-5NPJL6zp.js → negotiation-C4nFufNk.js} +0 -0
  181. /package/dist/{nodeinfo-DfycQ8Wf.js → nodeinfo-BnthBobC.js} +0 -0
  182. /package/dist/{nodeinfo-Co9lJrWl.cjs → nodeinfo-CdN0rEnZ.cjs} +0 -0
  183. /package/dist/{retry-D4GJ670a.js → retry-CfF8Gn4d.js} +0 -0
  184. /package/dist/{runtime-DPYEDf-o.js → sig-C34-oHBl.js} +0 -0
  185. /package/dist/{runtime-C58AJWSv.cjs → sig-YYj5tCnr.cjs} +0 -0
  186. /package/dist/{std__assert-X-_kMxKM.js → std__assert-DWivtrGR.js} +0 -0
  187. /package/dist/{types-BSuWJsOm.js → types-C2XVl6gj.js} +0 -0
  188. /package/dist/{runtime → utils}/docloader.test.d.ts +0 -0
  189. /package/dist/{runtime/authdocloader.test.d.ts → utils/kv-cache.test.d.ts} +0 -0
  190. /package/dist/{sig-Cj3tk-ig.js → utils-D-Va7aXC.js} +0 -0
  191. /package/dist/{sig-ByHXzqUi.cjs → utils-DyRU1gdZ.cjs} +0 -0
  192. /package/dist/{webfinger-De_bU0iE.js → webfinger-C72Y8lrh.js} +0 -0
  193. /package/dist/{webfinger-BjOEdFPs.cjs → webfinger-vAtLmxOF.cjs} +0 -0
@@ -1,75 +1,9 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
+ import { DocumentLoader, GetUserAgentOptions, LanguageString } from "@fedify/vocab-runtime";
4
5
  import { Span, TracerProvider } from "@opentelemetry/api";
5
6
 
6
- //#region src/runtime/docloader.d.ts
7
- /**
8
- * A remote JSON-LD document and its context fetched by
9
- * a {@link DocumentLoader}.
10
- */
11
- interface RemoteDocument {
12
- /**
13
- * The URL of the context document.
14
- */
15
- contextUrl: string | null;
16
- /**
17
- * The fetched JSON-LD document.
18
- */
19
- document: unknown;
20
- /**
21
- * The URL of the fetched document.
22
- */
23
- documentUrl: string;
24
- }
25
- /**
26
- * Options for {@link DocumentLoader}.
27
- * @since 1.8.0
28
- */
29
- interface DocumentLoaderOptions {
30
- /**
31
- * An `AbortSignal` for cancellation.
32
- * @since 1.8.0
33
- */
34
- signal?: AbortSignal;
35
- }
36
- /**
37
- * A JSON-LD document loader that fetches documents from the Web.
38
- * @param url The URL of the document to load.
39
- * @param options The options for the document loader.
40
- * @returns The loaded remote document.
41
- */
42
- type DocumentLoader = (url: string, options?: DocumentLoaderOptions) => Promise<RemoteDocument>;
43
- /**
44
- * A factory function that creates a {@link DocumentLoader} with options.
45
- * @param options The options for the document loader.
46
- * @returns The document loader.
47
- * @since 1.4.0
48
- */
49
-
50
- /**
51
- * Options for making `User-Agent` string.
52
- * @see {@link getUserAgent}
53
- * @since 1.3.0
54
- */
55
- interface GetUserAgentOptions {
56
- /**
57
- * An optional software name and version, e.g., `"Hollo/1.0.0"`.
58
- */
59
- software?: string | null;
60
- /**
61
- * An optional URL to append to the user agent string.
62
- * Usually the URL of the ActivityPub instance.
63
- */
64
- url?: string | URL | null;
65
- }
66
- /**
67
- * Gets the user agent string for the given application and URL.
68
- * @param options The options for making the user agent string.
69
- * @returns The user agent string.
70
- * @since 1.3.0
71
- */
72
- //#endregion
73
7
  //#region src/nodeinfo/types.d.ts
74
8
  /**
75
9
  * The type of the result of parsing JSON.
@@ -248,25 +182,6 @@ interface GetNodeInfoOptions {
248
182
  * @since 1.2.0
249
183
  */
250
184
  //#endregion
251
- //#region src/runtime/langstr.d.ts
252
- /**
253
- * A language-tagged string which corresponds to the `rdf:langString` type.
254
- */
255
- declare class LanguageString extends String {
256
- /**
257
- * The locale of the string.
258
- * @since 2.0.0
259
- */
260
- readonly locale: Intl.Locale;
261
- /**
262
- * Constructs a new `LanguageString`.
263
- * @param value A string value written in the given language.
264
- * @param locale The language of the string. If a string is given, it will
265
- * be parsed as a `Intl.Locale` object.
266
- */
267
- constructor(value: string, language: Intl.Locale | string);
268
- }
269
- //#endregion
270
185
  //#region src/vocab/vocab.d.ts
271
186
  /** Describes an object of any kind. The Object type serves as the base type for
272
187
  * most of the other kinds of objects defined in the Activity Vocabulary,
@@ -7479,7 +7394,7 @@ type ObjectAuthorizePredicate<TContextData, TParam extends string> = (context: R
7479
7394
  * the entire collection without pagination.
7480
7395
  * @since 1.8.0
7481
7396
  */
7482
- 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>;
7397
+ 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>;
7483
7398
  /**
7484
7399
  * A callback that counts the number of items in a custom collection.
7485
7400
  *
@@ -7489,7 +7404,7 @@ type CustomCollectionDispatcher<TItem, TParams extends Record<string, string>, T
7489
7404
  * @param values The parameters of the requested URL.
7490
7405
  * @since 1.8.0
7491
7406
  */
7492
- type CustomCollectionCounter<TParams extends Record<string, string>, TContextData> = (context: RequestContext<TContextData>, values: TParams) => number | bigint | null | Promise<number | bigint | null>;
7407
+ type CustomCollectionCounter<TParam extends string, TContextData> = (context: RequestContext<TContextData>, values: Record<TParam, string>) => number | bigint | null | Promise<number | bigint | null>;
7493
7408
  /**
7494
7409
  * A callback that returns a cursor for a custom collection.
7495
7410
  *
@@ -7502,7 +7417,7 @@ type CustomCollectionCounter<TParams extends Record<string, string>, TContextDat
7502
7417
  * @param values The parameters of the requested URL.
7503
7418
  * @since 1.8.0
7504
7419
  */
7505
- type CustomCollectionCursor<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: TParams) => string | null | Promise<string | null>;
7420
+ type CustomCollectionCursor<TParam extends string, TContext extends Context<TContextData>, TContextData> = (context: TContext, values: Record<TParam, string>) => string | null | Promise<string | null>;
7506
7421
  //#endregion
7507
7422
  //#region src/federation/queue.d.ts
7508
7423
  interface SenderKeyJwkPair {
@@ -7623,7 +7538,7 @@ interface Federatable<TContextData> {
7623
7538
  * @returns An object with methods to set other actor dispatcher callbacks.
7624
7539
  * @throws {RouterError} Thrown if the path pattern is invalid.
7625
7540
  */
7626
- setActorDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: ActorDispatcher<TContextData>): ActorCallbackSetters<TContextData>;
7541
+ setActorDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: ActorDispatcher<TContextData>): ActorCallbackSetters<TContextData>;
7627
7542
  /**
7628
7543
  * Registers an object dispatcher.
7629
7544
  *
@@ -7637,9 +7552,7 @@ interface Federatable<TContextData> {
7637
7552
  * must have one or more variables.
7638
7553
  * @param dispatcher An object dispatcher callback to register.
7639
7554
  */
7640
- setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
7641
- typeId: URL;
7642
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7555
+ setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: ConstructorWithTypeId<TObject>, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7643
7556
  /**
7644
7557
  * Registers an object dispatcher.
7645
7558
  *
@@ -7653,9 +7566,7 @@ interface Federatable<TContextData> {
7653
7566
  * must have one or more variables.
7654
7567
  * @param dispatcher An object dispatcher callback to register.
7655
7568
  */
7656
- setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
7657
- typeId: URL;
7658
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7569
+ setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: ConstructorWithTypeId<TObject>, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7659
7570
  /**
7660
7571
  * Registers an object dispatcher.
7661
7572
  *
@@ -7669,9 +7580,7 @@ interface Federatable<TContextData> {
7669
7580
  * must have one or more variables.
7670
7581
  * @param dispatcher An object dispatcher callback to register.
7671
7582
  */
7672
- setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
7673
- typeId: URL;
7674
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7583
+ setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: ConstructorWithTypeId<TObject>, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7675
7584
  /**
7676
7585
  * Registers an object dispatcher.
7677
7586
  *
@@ -7685,9 +7594,7 @@ interface Federatable<TContextData> {
7685
7594
  * must have one or more variables.
7686
7595
  * @param dispatcher An object dispatcher callback to register.
7687
7596
  */
7688
- setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
7689
- typeId: URL;
7690
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7597
+ setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7691
7598
  /**
7692
7599
  * Registers an object dispatcher.
7693
7600
  *
@@ -7701,9 +7608,7 @@ interface Federatable<TContextData> {
7701
7608
  * must have one or more variables.
7702
7609
  * @param dispatcher An object dispatcher callback to register.
7703
7610
  */
7704
- setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
7705
- typeId: URL;
7706
- }, path: `${string}{${TParam}}${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7611
+ setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7707
7612
  /**
7708
7613
  * Registers an object dispatcher.
7709
7614
  *
@@ -7717,9 +7622,7 @@ interface Federatable<TContextData> {
7717
7622
  * must have one or more variables.
7718
7623
  * @param dispatcher An object dispatcher callback to register.
7719
7624
  */
7720
- setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: (new (...args: any[]) => TObject) & {
7721
- typeId: URL;
7722
- }, path: `${string}{${TParam}}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7625
+ setObjectDispatcher<TObject extends Object$1, TParam extends string>(cls: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: ObjectDispatcher<TContextData, TObject, TParam>): ObjectCallbackSetters<TContextData, TObject, TParam>;
7723
7626
  /**
7724
7627
  * Registers an inbox dispatcher.
7725
7628
  *
@@ -7731,7 +7634,7 @@ interface Federatable<TContextData> {
7731
7634
  * @param dispatcher An inbox dispatcher callback to register.
7732
7635
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
7733
7636
  */
7734
- setInboxDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7637
+ setInboxDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7735
7638
  /**
7736
7639
  * Registers an outbox dispatcher.
7737
7640
  *
@@ -7755,7 +7658,7 @@ interface Federatable<TContextData> {
7755
7658
  * @param dispatcher An outbox dispatcher callback to register.
7756
7659
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
7757
7660
  */
7758
- setOutboxDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7661
+ setOutboxDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Activity, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7759
7662
  /**
7760
7663
  * Registers a following collection dispatcher.
7761
7664
  * @param path The URI path pattern for the following collection. The syntax
@@ -7767,7 +7670,7 @@ interface Federatable<TContextData> {
7767
7670
  * callbacks.
7768
7671
  * @throws {RouterError} Thrown if the path pattern is invalid.
7769
7672
  */
7770
- setFollowingDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Actor | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7673
+ setFollowingDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Actor | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7771
7674
  /**
7772
7675
  * Registers a followers collection dispatcher.
7773
7676
  * @param path The URI path pattern for the followers collection. The syntax
@@ -7779,7 +7682,7 @@ interface Federatable<TContextData> {
7779
7682
  * callbacks.
7780
7683
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
7781
7684
  */
7782
- setFollowersDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Recipient, Context<TContextData>, TContextData, URL>): CollectionCallbackSetters<Context<TContextData>, TContextData, URL>;
7685
+ setFollowersDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Recipient, Context<TContextData>, TContextData, URL>): CollectionCallbackSetters<Context<TContextData>, TContextData, URL>;
7783
7686
  /**
7784
7687
  * Registers a liked collection dispatcher.
7785
7688
  * @param path The URI path pattern for the liked collection. The syntax
@@ -7791,7 +7694,7 @@ interface Federatable<TContextData> {
7791
7694
  * callbacks.
7792
7695
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
7793
7696
  */
7794
- setLikedDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Object$1 | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7697
+ setLikedDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Object$1 | URL, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7795
7698
  /**
7796
7699
  * Registers a featured collection dispatcher.
7797
7700
  * @param path The URI path pattern for the featured collection. The syntax
@@ -7803,7 +7706,7 @@ interface Federatable<TContextData> {
7803
7706
  * callbacks.
7804
7707
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
7805
7708
  */
7806
- setFeaturedDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Object$1, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7709
+ setFeaturedDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Object$1, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7807
7710
  /**
7808
7711
  * Registers a featured tags collection dispatcher.
7809
7712
  * @param path The URI path pattern for the featured tags collection.
@@ -7815,7 +7718,7 @@ interface Federatable<TContextData> {
7815
7718
  * callbacks.
7816
7719
  * @throws {@link RouterError} Thrown if the path pattern is invalid.
7817
7720
  */
7818
- setFeaturedTagsDispatcher(path: `${string}{identifier}${string}` | `${string}{handle}${string}`, dispatcher: CollectionDispatcher<Hashtag, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7721
+ setFeaturedTagsDispatcher(path: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, dispatcher: CollectionDispatcher<Hashtag, RequestContext<TContextData>, TContextData, void>): CollectionCallbackSetters<RequestContext<TContextData>, TContextData, void>;
7819
7722
  /**
7820
7723
  * Assigns the URL path for the inbox and starts setting inbox listeners.
7821
7724
  *
@@ -7845,7 +7748,37 @@ interface Federatable<TContextData> {
7845
7748
  * @returns An object to register inbox listeners.
7846
7749
  * @throws {RouteError} Thrown if the path pattern is invalid.
7847
7750
  */
7848
- setInboxListeners(inboxPath: `${string}{identifier}${string}` | `${string}{handle}${string}`, sharedInboxPath?: string): InboxListenerSetters<TContextData>;
7751
+ setInboxListeners(inboxPath: `${string}${Rfc6570Expression<"identifier">}${string}` | `${string}${Rfc6570Expression<"handle">}${string}`, sharedInboxPath?: string): InboxListenerSetters<TContextData>;
7752
+ /**
7753
+ * Registers a collection of objects dispatcher.
7754
+ *
7755
+ * @template TContextData The context data to pass to the {@link Context}.
7756
+ * @template TObject The type of objects to dispatch.
7757
+ * @template TParam The parameter names of the requested URL.
7758
+ * @param name A unique name for the collection dispatcher.
7759
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
7760
+ * @param path The URI path pattern for the collection dispatcher.
7761
+ * The syntax is based on URI Template
7762
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
7763
+ * The path must have one or more variables.
7764
+ * @param dispatcher A collection dispatcher callback to register.
7765
+ */
7766
+ setCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
7767
+ /**
7768
+ * Registers a collection of objects dispatcher.
7769
+ *
7770
+ * @template TContextData The context data to pass to the {@link Context}.
7771
+ * @template TObject The type of objects to dispatch.
7772
+ * @template TParam The parameter names of the requested URL.
7773
+ * @param name A unique name for the collection dispatcher.
7774
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
7775
+ * @param path The URI path pattern for the collection dispatcher.
7776
+ * The syntax is based on URI Template
7777
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
7778
+ * The path must have one or more variables.
7779
+ * @param dispatcher A collection dispatcher callback to register.
7780
+ */
7781
+ setCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
7849
7782
  /**
7850
7783
  * Registers a collection of objects dispatcher.
7851
7784
  *
@@ -7860,7 +7793,22 @@ interface Federatable<TContextData> {
7860
7793
  * The path must have one or more variables.
7861
7794
  * @param dispatcher A collection dispatcher callback to register.
7862
7795
  */
7863
- 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>;
7796
+ setCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
7797
+ /**
7798
+ * Registers an ordered collection of objects dispatcher.
7799
+ *
7800
+ * @template TContextData The context data to pass to the {@link Context}.
7801
+ * @template TObject The type of objects to dispatch.
7802
+ * @template TParam The parameter names of the requested URL.
7803
+ * @param name A unique name for the collection dispatcher.
7804
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
7805
+ * @param path The URI path pattern for the collection dispatcher.
7806
+ * The syntax is based on URI Template
7807
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
7808
+ * The path must have one or more variables.
7809
+ * @param dispatcher A collection dispatcher callback to register.
7810
+ */
7811
+ setOrderedCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
7864
7812
  /**
7865
7813
  * Registers an ordered collection of objects dispatcher.
7866
7814
  *
@@ -7875,7 +7823,22 @@ interface Federatable<TContextData> {
7875
7823
  * The path must have one or more variables.
7876
7824
  * @param dispatcher A collection dispatcher callback to register.
7877
7825
  */
7878
- 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>;
7826
+ setOrderedCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
7827
+ /**
7828
+ * Registers an ordered collection of objects dispatcher.
7829
+ *
7830
+ * @template TContextData The context data to pass to the {@link Context}.
7831
+ * @template TObject The type of objects to dispatch.
7832
+ * @template TParam The parameter names of the requested URL.
7833
+ * @param name A unique name for the collection dispatcher.
7834
+ * @param itemType The Activity Vocabulary class of the object to dispatch.
7835
+ * @param path The URI path pattern for the collection dispatcher.
7836
+ * The syntax is based on URI Template
7837
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
7838
+ * The path must have one or more variables.
7839
+ * @param dispatcher A collection dispatcher callback to register.
7840
+ */
7841
+ setOrderedCollectionDispatcher<TObject extends Object$1, TParam extends string>(name: string | symbol, itemType: ConstructorWithTypeId<TObject>, path: `${string}${Rfc6570Expression<TParam>}${string}`, dispatcher: CustomCollectionDispatcher<TObject, TParam, RequestContext<TContextData>, TContextData>): CustomCollectionCallbackSetters<TParam, RequestContext<TContextData>, TContextData>;
7879
7842
  }
7880
7843
  /**
7881
7844
  * An object that registers federation-related business logic and dispatches
@@ -8174,38 +8137,38 @@ interface FederationFetchOptions<TContextData> {
8174
8137
  /**
8175
8138
  * Additional settings for a custom collection dispatcher.
8176
8139
  *
8177
- * @template TParams The type of the parameters in the URL path.
8140
+ * @template TParam The type of the parameters in the URL path.
8178
8141
  * @template TContext The type of the context. {@link Context} or
8179
8142
  * {@link RequestContext}.
8180
8143
  * @template TContextData The context data to pass to the {@link Context}.
8181
8144
  * @template TFilter The type of filter for the collection.
8182
8145
  */
8183
- interface CustomCollectionCallbackSetters<TParams extends Record<string, string>, TContext extends Context<TContextData>, TContextData> {
8146
+ interface CustomCollectionCallbackSetters<TParam extends string, TContext extends Context<TContextData>, TContextData> {
8184
8147
  /**
8185
8148
  * Sets the counter for the custom collection.
8186
8149
  * @param counter A callback that returns the number of items in the custom collection.
8187
8150
  * @returns The setters object so that settings can be chained.
8188
8151
  */
8189
- setCounter(counter: CustomCollectionCounter<TParams, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
8152
+ setCounter(counter: CustomCollectionCounter<TParam, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
8190
8153
  /**
8191
8154
  * Sets the first cursor for the custom collection.
8192
8155
  * @param cursor The cursor for the first item in the custom collection.
8193
8156
  * @returns The setters object so that settings can be chained.
8194
8157
  */
8195
- setFirstCursor(cursor: CustomCollectionCursor<TParams, TContext, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
8158
+ setFirstCursor(cursor: CustomCollectionCursor<TParam, TContext, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
8196
8159
  /**
8197
8160
  * Sets the last cursor for the custom collection.
8198
8161
  * @param cursor The cursor for the last item in the custom collection.
8199
8162
  * @returns The setters object so that settings can be chained.
8200
8163
  */
8201
- setLastCursor(cursor: CustomCollectionCursor<TParams, TContext, TContextData>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
8164
+ setLastCursor(cursor: CustomCollectionCursor<TParam, TContext, TContextData>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
8202
8165
  /**
8203
8166
  * Specifies the conditions under which requests are authorized.
8204
8167
  * @param predicate A callback that returns whether a request is authorized.
8205
8168
  * @returns The setters object so that settings can be chained.
8206
8169
  * @since 0.7.0
8207
8170
  */
8208
- authorize(predicate: ObjectAuthorizePredicate<TContextData, string>): CustomCollectionCallbackSetters<TParams, TContext, TContextData>;
8171
+ authorize(predicate: ObjectAuthorizePredicate<TContextData, string>): CustomCollectionCallbackSetters<TParam, TContext, TContextData>;
8209
8172
  }
8210
8173
  /**
8211
8174
  * Represents an object with a type ID, which is either a constructor or an
@@ -8217,73 +8180,34 @@ type ConstructorWithTypeId<TObject extends Object$1> = (new (...args: any[]) =>
8217
8180
  typeId: URL;
8218
8181
  };
8219
8182
  /**
8220
- * Represents a path from the key of parameter objects.
8221
- * @param Params - A record of parameters where keys are parameter names and
8222
- * values are their string representations.
8223
- * @returns A string representing the path with all parameters.
8224
- * @example
8225
- * ```ts
8226
- * type UserPostPath = ParamsKeyPath<{ userId: string; postId: string }>;
8227
- * let userPostPath: UserPostPath;
8228
- * // userPostPath = "/posts/{postId}"; // invalid - does not contain `{userId}`
8229
- * // userPostPath = "/users/{userId}"; // invalid - does not contain `{postId}`
8230
- * userPostPath = "/users/{userId}/posts/{postId}"; // valid
8231
- * userPostPath = "/posts/{postId}/users/{userId}"; // valid
8232
- * ```
8233
- */
8234
- type ParamsKeyPath<Params extends Record<string, string>> = ParamsPath<Extract<keyof Params, string>> & string;
8235
- /**
8236
- * Represents a path with multiple parameters.
8237
- * All permutations of the parameters are included in the union type.
8238
- * The path must have all parameters in the form of `{paramName}`.
8239
- * @param Params - A union of parameter names.
8240
- * @returns A string representing the path with all parameters.
8241
- * @example
8242
- * ```ts
8243
- * type UserPostPath = ParamsPath<"userId" | "postId">;
8244
- * // = `${string}{userId}${string}` & `${string}{postId}${string}`
8245
- * // =
8246
- * // | `${string}{userId}${string}{postId}${string}`
8247
- * // | `${string}{postId}${string}{userId}${string}`
8248
- * let userPostPath: UserPostPath;
8249
- * userPostPath = "/users/posts"; // ❌ invalid
8250
- * userPostPath = "/users/{userId}"; // ❌ invalid
8251
- * userPostPath = "/posts/{postId}"; // ❌ invalid
8252
- * userPostPath = "/users/{userId}/posts/{postId}"; // ✅ valid
8253
- * userPostPath = "/posts/{postId}/users/{userId}"; // ✅ valid
8254
- */
8255
- type ParamsPath<Params extends string> = UnionToIntersection<ParamPath<Params>>;
8256
- /**
8257
- * Represents a path with a single parameter.
8258
- * The path must have at least one of the parameters in the form of `{paramName}`.
8259
- * @param Param - The name of the parameter.
8260
- * @returns A string representing the path with the parameter.
8261
- * @example
8262
- * ```ts
8263
- * type UserPostPath = ParamPath<"userId" | "postId">;
8264
- * // = `${string}{userId}${string}` | `${string}{postId}${string}`
8265
- * let userPostPath: UserPostPath;
8266
- * userPostPath = "/users/posts"; // ❌ invalid
8267
- * userPostPath = "/users/{userId}"; // ✅ valid
8268
- * userPostPath = "/posts/{postId}"; // ✅ valid
8269
- * userPostPath = "/users/{userId}/posts/{postId}"; // ✅ valid
8270
- * userPostPath = "/posts/{postId}/users/{userId}"; // ✅ valid
8271
- */
8272
- type ParamPath<Param extends string> = `${string}{${Param}}${string}`;
8273
- /**
8274
- * Converts union types to intersection types.
8183
+ * Defines a union of all valid RFC 6570 URI Template expressions for a given
8184
+ * parameter name.
8185
+ *
8186
+ * RFC 6570 specifies a syntax for URI templates, allowing for variable
8187
+ * expansion. This type captures all Level 1-4 operator expressions for a
8188
+ * single, named variable.
8275
8189
  *
8276
- * @template U - The union type to convert.
8277
- * @returns The intersection type of the union.
8190
+ * The supported expression types are:
8191
+ * - `{Param}`: Simple string expansion
8192
+ * - `+{Param}`: Reserved string expansion
8193
+ * - `#{Param}`: Fragment expansion
8194
+ * - `{.Param}`: Label expansion with a dot-prefix
8195
+ * - `{/Param}`: Path segment expansion
8196
+ * - `{;Param}`: Path-style parameter expansion
8197
+ * - `{?Param}`: Query component expansion
8198
+ * - `{&Param}`: Query continuation expansion
8199
+ *
8200
+ * @template Param The name of the parameter to be used in the expressions.
8278
8201
  * @example
8279
8202
  * ```ts
8280
- * type A = { a: string };
8281
- * type B = { b: number };
8282
- * type AorB = A | B;
8283
- * type AandB = UnionToIntersection<AorB>;
8284
- * // AandB = { a: string; b: number }
8203
+ * type UserIdExpression = Rfc6570Expression<"userId">;
8204
+ *
8205
+ * // The variable `userPath` can be assigned any of the valid expressions.
8206
+ * const userPath: UserIdExpression = "{/userId}";
8207
+ * ```
8208
+ * @see {@link https://tools.ietf.org/html/rfc6570} for the full specification.
8285
8209
  */
8286
- type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
8210
+ type Rfc6570Expression<Param extends string> = `{${Param}}` | `{+${Param}}` | `{#${Param}}` | `{.${Param}}` | `{/${Param}}` | `{;${Param}}` | `{?${Param}}` | `{&${Param}}`;
8287
8211
  //#endregion
8288
8212
  //#region src/federation/context.d.ts
8289
8213
  /**
@@ -8372,9 +8296,7 @@ interface Context<TContextData> {
8372
8296
  * @throws {TypeError} If values are invalid.
8373
8297
  * @since 0.7.0
8374
8298
  */
8375
- getObjectUri<TObject extends Object$1>(cls: (new (...args: any[]) => TObject) & {
8376
- typeId: URL;
8377
- }, values: Record<string, string>): URL;
8299
+ getObjectUri<TObject extends Object$1>(cls: ConstructorWithTypeId<TObject>, values: Record<string, string>): URL;
8378
8300
  /**
8379
8301
  * Builds the URI of an actor's outbox with the given identifier.
8380
8302
  * @param identifier The actor's identifier.
@@ -8688,9 +8610,7 @@ interface RequestContext<TContextData> extends Context<TContextData> {
8688
8610
  * @throws {TypeError} If values are invalid.
8689
8611
  * @since 0.7.0
8690
8612
  */
8691
- getObject<TObject extends Object$1>(cls: (new (...args: any[]) => TObject) & {
8692
- typeId: URL;
8693
- }, values: Record<string, string>): Promise<TObject | null>;
8613
+ getObject<TObject extends Object$1>(cls: ConstructorWithTypeId<TObject>, values: Record<string, string>): Promise<TObject | null>;
8694
8614
  /**
8695
8615
  * Gets the public key of the sender, if any exists and it is verified.
8696
8616
  * Otherwise, `null` is returned.
@@ -8834,9 +8754,7 @@ type ParseUriResult =
8834
8754
  * The case of an object URI.
8835
8755
  */ | {
8836
8756
  readonly type: "object";
8837
- readonly class: (new (...args: any[]) => Object$1) & {
8838
- typeId: URL;
8839
- };
8757
+ readonly class: ConstructorWithTypeId<Object$1>;
8840
8758
  readonly typeId: URL;
8841
8759
  readonly values: Record<string, string>;
8842
8760
  }
@@ -3,8 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "../type-NEA09tSC.js";
7
- import "../lookup-DhQCVVja.js";
8
- import { createInboxContext, createRequestContext, test, testDefinitions } from "../testing-BnfPB5T-.js";
6
+ import "../lookup-DQRtjvb1.js";
7
+ import { createInboxContext, createRequestContext, test, testDefinitions } from "../testing-g4UC4liW.js";
9
8
 
10
9
  export { createInboxContext, createRequestContext, test, testDefinitions };
@@ -3,8 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { __require, lookupWebFinger } from "./type-NEA09tSC.js";
7
- import { RouterError, lookupObject, traverseCollection } from "./lookup-DhQCVVja.js";
6
+ import { RouterError, __require, lookupObject, lookupWebFinger, traverseCollection } from "./lookup-DQRtjvb1.js";
8
7
  import { configure, getConsoleSink, getLogger, reset } from "@logtape/logtape";
9
8
  import { trace } from "@opentelemetry/api";
10
9
 
@@ -2,8 +2,8 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { getUserAgent } from "./docloader-CkweNhUH.js";
6
5
  import { getLogger } from "@logtape/logtape";
6
+ import { getUserAgent } from "@fedify/vocab-runtime";
7
7
 
8
8
  //#region src/nodeinfo/client.ts
9
9
  const logger = getLogger([
@@ -3,8 +3,8 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_docloader = require('./docloader-7Ey7wNHx.cjs');
7
6
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
7
+ const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
8
8
 
9
9
  //#region src/nodeinfo/client.ts
10
10
  const logger = (0, __logtape_logtape.getLogger)([
@@ -19,7 +19,7 @@ async function getNodeInfo(url, options = {}) {
19
19
  const wellKnownUrl = new URL("/.well-known/nodeinfo", url);
20
20
  const wellKnownResponse = await fetch(wellKnownUrl, { headers: {
21
21
  Accept: "application/json",
22
- "User-Agent": typeof options.userAgent === "string" ? options.userAgent : require_docloader.getUserAgent(options.userAgent)
22
+ "User-Agent": typeof options.userAgent === "string" ? options.userAgent : (0, __fedify_vocab_runtime.getUserAgent)(options.userAgent)
23
23
  } });
24
24
  if (!wellKnownResponse.ok) {
25
25
  logger.error("Failed to fetch {url}: {status} {statusText}", {
@@ -42,7 +42,7 @@ async function getNodeInfo(url, options = {}) {
42
42
  }
43
43
  const response = await fetch(nodeInfoUrl, { headers: {
44
44
  Accept: "application/json",
45
- "User-Agent": typeof options.userAgent === "string" ? options.userAgent : require_docloader.getUserAgent(options.userAgent)
45
+ "User-Agent": typeof options.userAgent === "string" ? options.userAgent : (0, __fedify_vocab_runtime.getUserAgent)(options.userAgent)
46
46
  } });
47
47
  if (!response.ok) {
48
48
  logger.error("Failed to fetch NodeInfo document from {url}: {status} {statusText}", {
@@ -3,25 +3,24 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError } from "../type-NEA09tSC.js";
6
+ import "../lookup-DQRtjvb1.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-DhQCVVja.js";
11
- import "../actor-D5S46edz.js";
12
- import "../key-IxRhZpOF.js";
13
- import { verifyRequest } from "../http-DGjdMiLc.js";
14
- import { getAuthenticatedDocumentLoader } from "../authdocloader-SjwloJUA.js";
15
- import { mockDocumentLoader, test } from "../testing-BnfPB5T-.js";
16
- import "../std__assert-X-_kMxKM.js";
17
- import { assertRejects } from "../assert_rejects-DiIiJbZn.js";
18
- import "../assert_is_error-BPGph1Jx.js";
19
- import "../assert_not_equals-f3m3epl3.js";
20
- import "../assert_throws-BOO88avQ.js";
21
- import { rsaPrivateKey2 } from "../keys-bZxcrZ9Z.js";
22
- import { esm_default } from "../esm-CwHz8Y8t.js";
10
+ import "../actor-BXHc5r-q.js";
11
+ import "../key-CxdLUFS6.js";
12
+ import { verifyRequest } from "../http-D2kIm9la.js";
13
+ import { getAuthenticatedDocumentLoader } from "../docloader-CrbAy9Oc.js";
14
+ import { mockDocumentLoader, test } from "../testing-g4UC4liW.js";
15
+ import "../std__assert-DWivtrGR.js";
16
+ import { assertRejects } from "../assert_rejects-Ce45JcFg.js";
17
+ import "../assert_throws-BNXdRGWP.js";
18
+ import "../assert_not_equals-C80BG-_5.js";
19
+ import { rsaPrivateKey2 } from "../keys-DMHs8XNn.js";
20
+ import { esm_default } from "../esm-C-Qa1zEM.js";
21
+ import { UrlError } from "@fedify/vocab-runtime";
23
22
 
24
- //#region src/runtime/authdocloader.test.ts
23
+ //#region src/utils/docloader.test.ts
25
24
  test("getAuthenticatedDocumentLoader()", async (t) => {
26
25
  esm_default.spyGlobal();
27
26
  esm_default.get("begin:https://example.com/object", async (cl) => {