@fedify/fedify 2.0.0-dev.1875 → 2.0.0-dev.196

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 (283) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +68 -35
  3. package/dist/{builder-CLT_zIyw.js → builder-R1Sfe-tb.js} +5 -3
  4. package/dist/{client-BsGzbnV-.d.ts → client-CUTUGgvJ.d.ts} +18 -18
  5. package/dist/{client-pY7-3icS.js → client-Dg7OfUDA.js} +28 -23
  6. package/dist/{client-94iWEfQa.d.cts → client-by-PEGAJ.d.cts} +18 -18
  7. package/dist/compat/mod.cjs +1 -1
  8. package/dist/compat/mod.d.cts +6 -11
  9. package/dist/compat/mod.d.ts +6 -11
  10. package/dist/compat/mod.js +1 -1
  11. package/dist/compat/transformers.test.js +22 -21
  12. package/dist/context-Bns6uTJq.js +109 -0
  13. package/dist/{context-DG0huGW-.d.ts → context-C7vzWilY.d.ts} +200 -65
  14. package/dist/{context-DJ8aSy2Q.d.cts → context-CrB9RFy5.d.cts} +200 -65
  15. package/dist/deno-i60L3ZJW.js +117 -0
  16. package/dist/{testing-CW4N8vgf.js → dist-B5f6a8Tt.js} +90 -110
  17. package/dist/{docloader-BkhI_RcC.js → docloader-BuOglEYx.js} +3 -3
  18. package/dist/{esm-DOqAYjlY.js → esm-DGl7uK1r.js} +32 -17
  19. package/dist/federation/builder.test.js +7 -5
  20. package/dist/federation/collection.test.js +2 -3
  21. package/dist/federation/handler.test.js +110 -22
  22. package/dist/federation/idempotency.test.js +23 -22
  23. package/dist/federation/inbox.test.js +4 -3
  24. package/dist/federation/keycache.test.js +4 -4
  25. package/dist/federation/kv.test.js +56 -3
  26. package/dist/federation/middleware.test.js +95 -93
  27. package/dist/federation/mod.cjs +8 -10
  28. package/dist/federation/mod.d.cts +7 -12
  29. package/dist/federation/mod.d.ts +7 -12
  30. package/dist/federation/mod.js +8 -11
  31. package/dist/federation/mq.test.js +5 -4
  32. package/dist/federation/negotiation.test.js +2 -3
  33. package/dist/federation/retry.test.js +2 -3
  34. package/dist/federation/router.test.js +2 -2
  35. package/dist/federation/send.test.js +51 -9
  36. package/dist/{webfinger/handler.test.js → federation/webfinger.test.js} +24 -22
  37. package/dist/{federation-CRpdnOMS.cjs → federation-B431K2gm.cjs} +22 -0
  38. package/dist/{federation-jcR8-ZxP.js → federation-BbZwNNWj.js} +28 -6
  39. package/dist/{http-DmUiHemJ.js → http-B5BgMxiO.js} +119 -9
  40. package/dist/{http-DarlEN23.cjs → http-B_jtB30-.cjs} +132 -16
  41. package/dist/{http-M8k5mKc0.d.cts → http-ClB3pLcL.d.cts} +1 -1
  42. package/dist/{http-BbO0ejuk.d.ts → http-DLBDPal9.d.ts} +1 -1
  43. package/dist/{http-BIYwcgTd.js → http-uzkhnm0W.js} +3 -2
  44. package/dist/{inbox-Dbt8hLxb.js → inbox-CxrUTds4.js} +2 -1
  45. package/dist/{key-BcT6cdMK.js → key-DBHCloAO.js} +3 -3
  46. package/dist/{keycache-B8aIeTgt.js → keycache-DRxpZ5r9.js} +1 -1
  47. package/dist/{keys-Bs-0Hapk.js → keys-ZbcByPg9.js} +1 -1
  48. package/dist/{kv-Bxr0Q87_.d.cts → kv-B4vFhIYL.d.cts} +30 -1
  49. package/dist/{kv-BKNZ-Tb-.d.ts → kv-CYySNrsn.d.ts} +30 -1
  50. package/dist/{kv-CRZrzyXm.js → kv-QzKcOQgP.js} +22 -0
  51. package/dist/{kv-cache-DN9pfMBe.js → kv-cache-BEeqyGER.js} +14 -1
  52. package/dist/{kv-cache-B5TLf2fI.js → kv-cache-BqWqxam4.js} +2 -2
  53. package/dist/{kv-cache-BWWu8RyL.cjs → kv-cache-DY6hQ8Rf.cjs} +2 -2
  54. package/dist/{ld-DR6mmQjt.js → ld-CZgNIUGN.js} +4 -3
  55. package/dist/{middleware-B09KVcU4.cjs → middleware-BaoVtoMl.cjs} +210 -194
  56. package/dist/{middleware-B_rzGWsn.js → middleware-BqPcChYv.js} +164 -154
  57. package/dist/middleware-CnrWiFJI.cjs +12 -0
  58. package/dist/{middleware-Aqt52eK0.js → middleware-CxwWsgSo.js} +162 -165
  59. package/dist/middleware-DoFisLae.js +26 -0
  60. package/dist/middleware-ZN9cd_L8.js +12 -0
  61. package/dist/{mod-0noXw66R.d.cts → mod-0p9zUdzg.d.cts} +6 -6
  62. package/dist/mod-0qnPv4EC.d.cts +62 -0
  63. package/dist/{mod-DgdBYYa0.d.cts → mod-BrS8tiad.d.cts} +2 -2
  64. package/dist/mod-C3SOvTD1.d.ts +64 -0
  65. package/dist/{mod-DJcZDvjA.d.cts → mod-D6pS5_xJ.d.cts} +4 -4
  66. package/dist/{mod-B2iOw50L.d.ts → mod-jOa7W503.d.ts} +2 -2
  67. package/dist/{mod-BoHnwOCs.d.ts → mod-waqu-BL_.d.ts} +4 -4
  68. package/dist/{mod-B9M-8jm2.d.ts → mod-xc20HhMD.d.ts} +6 -6
  69. package/dist/mod.cjs +11 -93
  70. package/dist/mod.d.cts +11 -16
  71. package/dist/mod.d.ts +11 -16
  72. package/dist/mod.js +11 -15
  73. package/dist/nodeinfo/client.test.js +3 -4
  74. package/dist/nodeinfo/handler.test.js +22 -21
  75. package/dist/nodeinfo/mod.cjs +2 -2
  76. package/dist/nodeinfo/mod.d.cts +2 -2
  77. package/dist/nodeinfo/mod.d.ts +2 -2
  78. package/dist/nodeinfo/mod.js +2 -2
  79. package/dist/nodeinfo/types.test.js +2 -3
  80. package/dist/otel/exporter.test.js +893 -0
  81. package/dist/otel/mod.cjs +256 -0
  82. package/dist/otel/mod.d.cts +230 -0
  83. package/dist/otel/mod.d.ts +232 -0
  84. package/dist/otel/mod.js +255 -0
  85. package/dist/{owner-DEgLiB7Z.js → owner-BDvRiO5T.js} +44 -8
  86. package/dist/{owner-kQRGVXG1.d.ts → owner-BgI8C-VY.d.ts} +1 -2
  87. package/dist/{owner-B4HbyP8s.d.cts → owner-C-zfmVAD.d.cts} +1 -2
  88. package/dist/{proof-AhMjXzru.js → proof-DzFse-Bn.js} +46 -11
  89. package/dist/{proof-p3cmdfis.js → proof-XEPY5YKg.js} +3 -2
  90. package/dist/{proof-CbB_yXKu.cjs → proof-vmNsq1AQ.cjs} +63 -28
  91. package/dist/router-D9eI0s4b.js +118 -0
  92. package/dist/{send-CcKJ-npK.js → send-BdhhZ2MN.js} +9 -4
  93. package/dist/sig/http.test.js +6 -7
  94. package/dist/sig/key.test.js +5 -5
  95. package/dist/sig/ld.test.js +6 -6
  96. package/dist/sig/mod.cjs +3 -5
  97. package/dist/sig/mod.d.cts +3 -5
  98. package/dist/sig/mod.d.ts +3 -5
  99. package/dist/sig/mod.js +3 -5
  100. package/dist/sig/owner.test.js +29 -6
  101. package/dist/sig/proof.test.js +6 -6
  102. package/dist/testing/mod.d.ts +70 -6999
  103. package/dist/testing/mod.js +4 -3
  104. package/dist/{transformers-CoBS-oFG.cjs → transformers-BjBg6Lag.cjs} +2 -2
  105. package/dist/{transformers-BFT6d7J5.js → transformers-N_ip_y4P.js} +2 -2
  106. package/dist/{types-BtUjyi5y.js → types-8l28uC8o.js} +30 -25
  107. package/dist/{types-CWgzGaqk.cjs → types-B6z6CqIz.cjs} +30 -25
  108. package/dist/{types-C2XVl6gj.js → types-CPz01LGH.js} +3 -3
  109. package/dist/utils/docloader.test.js +7 -8
  110. package/dist/utils/kv-cache.test.js +5 -3
  111. package/dist/utils/mod.cjs +3 -5
  112. package/dist/utils/mod.d.cts +3 -4
  113. package/dist/utils/mod.d.ts +3 -4
  114. package/dist/utils/mod.js +3 -5
  115. package/package.json +25 -67
  116. package/dist/actor-BQuDqoKQ.cjs +0 -42079
  117. package/dist/actor-CmPnJ0G7.js +0 -146
  118. package/dist/actor-CtTW_fTc.js +0 -41647
  119. package/dist/actor-DqFajh9s.d.ts +0 -130
  120. package/dist/actor-f2NtjyCg.d.cts +0 -128
  121. package/dist/denokv-CCssOzMJ.js +0 -57
  122. package/dist/fixtures/activitypub.academy/users/brauca_darradiul.json +0 -83
  123. package/dist/fixtures/example.com/announce.json +0 -6
  124. package/dist/fixtures/example.com/collection.json +0 -19
  125. package/dist/fixtures/example.com/create.json +0 -6
  126. package/dist/fixtures/example.com/cross-origin-actor.json +0 -6
  127. package/dist/fixtures/example.com/hong-gildong.json +0 -11
  128. package/dist/fixtures/example.com/invite.json +0 -7
  129. package/dist/fixtures/example.com/key.json +0 -7
  130. package/dist/fixtures/example.com/key2.json +0 -6
  131. package/dist/fixtures/example.com/object.json +0 -6
  132. package/dist/fixtures/example.com/orderedcollectionpage.json +0 -24
  133. package/dist/fixtures/example.com/paged/a.json +0 -13
  134. package/dist/fixtures/example.com/paged/b.json +0 -16
  135. package/dist/fixtures/example.com/paged-collection.json +0 -6
  136. package/dist/fixtures/example.com/person.json +0 -22
  137. package/dist/fixtures/example.com/person2.json +0 -40
  138. package/dist/fixtures/example.com/test.json +0 -5
  139. package/dist/fixtures/example.com/users/handle.json +0 -16
  140. package/dist/fixtures/example.com/wrong-type.json +0 -3
  141. package/dist/fixtures/media.example.com/avatars/test-avatar.jpg.json +0 -6
  142. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +0 -24
  143. package/dist/fixtures/remote.domain/users/bob.json +0 -20
  144. package/dist/fixtures/server.example/users/alice.json +0 -20
  145. package/dist/fixtures/w3id.org/identity/v1.json +0 -152
  146. package/dist/fixtures/w3id.org/security/data-integrity/v1.json +0 -74
  147. package/dist/fixtures/w3id.org/security/multikey/v1.json +0 -35
  148. package/dist/fixtures/w3id.org/security/v1.json +0 -50
  149. package/dist/fixtures/wizard.casa/users/hongminhee.json +0 -69
  150. package/dist/fixtures/www.w3.org/ns/activitystreams.json +0 -379
  151. package/dist/fixtures/www.w3.org/ns/did/v1.json +0 -58
  152. package/dist/lookup-Bhv7efZB.js +0 -42183
  153. package/dist/lookup-DdpqU9Gb.js +0 -258
  154. package/dist/lookup-EHJhdA8l.cjs +0 -270
  155. package/dist/middleware-C_Sa9J23.cjs +0 -15
  156. package/dist/middleware-DGwP3i-w.js +0 -15
  157. package/dist/middleware-Xyxj43cy.js +0 -26
  158. package/dist/mod-BlVovdcy.d.ts +0 -309
  159. package/dist/mod-BxRCHTz-.d.cts +0 -307
  160. package/dist/mod-C2tOeRkN.d.cts +0 -1
  161. package/dist/mod-C58MZ7Wx.d.cts +0 -113
  162. package/dist/mod-Ds0mpFZU.d.ts +0 -115
  163. package/dist/mod-xIj-IT58.d.ts +0 -2
  164. package/dist/mq-CUKlBw08.d.ts +0 -143
  165. package/dist/mq-DcJPkXD5.d.cts +0 -140
  166. package/dist/src/vocab/accept.yaml +0 -15
  167. package/dist/src/vocab/activity.yaml +0 -98
  168. package/dist/src/vocab/add.yaml +0 -16
  169. package/dist/src/vocab/announce.yaml +0 -30
  170. package/dist/src/vocab/application.yaml +0 -324
  171. package/dist/src/vocab/arrive.yaml +0 -15
  172. package/dist/src/vocab/article.yaml +0 -46
  173. package/dist/src/vocab/audio.yaml +0 -11
  174. package/dist/src/vocab/block.yaml +0 -16
  175. package/dist/src/vocab/chatmessage.yaml +0 -50
  176. package/dist/src/vocab/collection.yaml +0 -154
  177. package/dist/src/vocab/collectionpage.yaml +0 -55
  178. package/dist/src/vocab/create.yaml +0 -28
  179. package/dist/src/vocab/dataintegrityproof.yaml +0 -56
  180. package/dist/src/vocab/delete.yaml +0 -27
  181. package/dist/src/vocab/didservice.yaml +0 -22
  182. package/dist/src/vocab/dislike.yaml +0 -14
  183. package/dist/src/vocab/document.yaml +0 -31
  184. package/dist/src/vocab/emoji.yaml +0 -12
  185. package/dist/src/vocab/emojireact.yaml +0 -17
  186. package/dist/src/vocab/endpoints.yaml +0 -85
  187. package/dist/src/vocab/event.yaml +0 -11
  188. package/dist/src/vocab/export.yaml +0 -9
  189. package/dist/src/vocab/flag.yaml +0 -15
  190. package/dist/src/vocab/follow.yaml +0 -19
  191. package/dist/src/vocab/group.yaml +0 -324
  192. package/dist/src/vocab/hashtag.yaml +0 -14
  193. package/dist/src/vocab/ignore.yaml +0 -14
  194. package/dist/src/vocab/image.yaml +0 -9
  195. package/dist/src/vocab/intransitiveactivity.yaml +0 -15
  196. package/dist/src/vocab/invite.yaml +0 -14
  197. package/dist/src/vocab/join.yaml +0 -14
  198. package/dist/src/vocab/key.yaml +0 -28
  199. package/dist/src/vocab/leave.yaml +0 -14
  200. package/dist/src/vocab/like.yaml +0 -16
  201. package/dist/src/vocab/link.yaml +0 -101
  202. package/dist/src/vocab/listen.yaml +0 -12
  203. package/dist/src/vocab/mention.yaml +0 -9
  204. package/dist/src/vocab/move.yaml +0 -15
  205. package/dist/src/vocab/multikey.yaml +0 -36
  206. package/dist/src/vocab/note.yaml +0 -48
  207. package/dist/src/vocab/object.yaml +0 -404
  208. package/dist/src/vocab/offer.yaml +0 -15
  209. package/dist/src/vocab/orderedcollection.yaml +0 -39
  210. package/dist/src/vocab/orderedcollectionpage.yaml +0 -50
  211. package/dist/src/vocab/organization.yaml +0 -324
  212. package/dist/src/vocab/page.yaml +0 -11
  213. package/dist/src/vocab/person.yaml +0 -324
  214. package/dist/src/vocab/place.yaml +0 -75
  215. package/dist/src/vocab/profile.yaml +0 -26
  216. package/dist/src/vocab/propertyvalue.yaml +0 -32
  217. package/dist/src/vocab/question.yaml +0 -103
  218. package/dist/src/vocab/read.yaml +0 -13
  219. package/dist/src/vocab/reject.yaml +0 -14
  220. package/dist/src/vocab/relationship.yaml +0 -52
  221. package/dist/src/vocab/remove.yaml +0 -14
  222. package/dist/src/vocab/service.yaml +0 -324
  223. package/dist/src/vocab/source.yaml +0 -26
  224. package/dist/src/vocab/tentativeaccept.yaml +0 -14
  225. package/dist/src/vocab/tentativereject.yaml +0 -14
  226. package/dist/src/vocab/tombstone.yaml +0 -24
  227. package/dist/src/vocab/travel.yaml +0 -16
  228. package/dist/src/vocab/undo.yaml +0 -26
  229. package/dist/src/vocab/update.yaml +0 -58
  230. package/dist/src/vocab/video.yaml +0 -11
  231. package/dist/src/vocab/view.yaml +0 -13
  232. package/dist/testing/docloader.test.js +0 -22
  233. package/dist/vocab/actor.test.js +0 -5963
  234. package/dist/vocab/lookup.test.d.ts +0 -3
  235. package/dist/vocab/lookup.test.js +0 -454
  236. package/dist/vocab/mod.cjs +0 -86
  237. package/dist/vocab/mod.d.cts +0 -4
  238. package/dist/vocab/mod.d.ts +0 -6
  239. package/dist/vocab/mod.js +0 -9
  240. package/dist/vocab/type.test.d.ts +0 -3
  241. package/dist/vocab/type.test.js +0 -24
  242. package/dist/vocab/vocab.test.d.ts +0 -3
  243. package/dist/vocab/vocab.test.js +0 -9397
  244. package/dist/vocab-BCWe1Ih5.d.ts +0 -14905
  245. package/dist/vocab-CeDBzu-f.d.cts +0 -14903
  246. package/dist/vocab-CuAJ4Tbh.js +0 -255
  247. package/dist/vocab-DCYaqGPG.cjs +0 -291
  248. package/dist/webfinger/handler.test.d.ts +0 -3
  249. package/dist/webfinger/lookup.test.d.ts +0 -3
  250. package/dist/webfinger/lookup.test.js +0 -193
  251. package/dist/webfinger/mod.cjs +0 -8
  252. package/dist/webfinger/mod.d.cts +0 -2
  253. package/dist/webfinger/mod.d.ts +0 -4
  254. package/dist/webfinger/mod.js +0 -8
  255. package/dist/webfinger-C72Y8lrh.js +0 -4
  256. package/dist/webfinger-vAtLmxOF.cjs +0 -4
  257. package/dist/x/cfworkers.cjs +0 -100
  258. package/dist/x/cfworkers.d.cts +0 -59
  259. package/dist/x/cfworkers.d.ts +0 -61
  260. package/dist/x/cfworkers.js +0 -98
  261. package/dist/x/cfworkers.test.d.ts +0 -3
  262. package/dist/x/cfworkers.test.js +0 -177
  263. package/dist/x/hono.cjs +0 -61
  264. package/dist/x/hono.d.cts +0 -53
  265. package/dist/x/hono.d.ts +0 -55
  266. package/dist/x/hono.js +0 -60
  267. package/dist/x/sveltekit.cjs +0 -69
  268. package/dist/x/sveltekit.d.cts +0 -45
  269. package/dist/x/sveltekit.d.ts +0 -47
  270. package/dist/x/sveltekit.js +0 -68
  271. /package/dist/{collection-BzWsN9pB.js → collection-CcnIw1qY.js} +0 -0
  272. /package/dist/{testing/docloader.test.d.ts → federation/webfinger.test.d.ts} +0 -0
  273. /package/dist/{mod-CVgZgliM.d.ts → mod-1E3W847c.d.ts} +0 -0
  274. /package/dist/{mod-B-hUPT2N.d.cts → mod-C81L6_lQ.d.cts} +0 -0
  275. /package/dist/{negotiation-C4nFufNk.js → negotiation-5NPJL6zp.js} +0 -0
  276. /package/dist/{nodeinfo-BnthBobC.js → nodeinfo-BlLsRSiT.js} +0 -0
  277. /package/dist/{nodeinfo-CdN0rEnZ.cjs → nodeinfo-DuMYTpbZ.cjs} +0 -0
  278. /package/dist/{vocab/actor.test.d.ts → otel/exporter.test.d.ts} +0 -0
  279. /package/dist/{retry-CfF8Gn4d.js → retry-D4GJ670a.js} +0 -0
  280. /package/dist/{sig-C34-oHBl.js → sig-CwuONEzF.js} +0 -0
  281. /package/dist/{sig-YYj5tCnr.cjs → sig-DeXX2xnj.cjs} +0 -0
  282. /package/dist/{utils-DyRU1gdZ.cjs → utils-Db0ZmjcD.cjs} +0 -0
  283. /package/dist/{utils-D-Va7aXC.js → utils-Wranxuoe.js} +0 -0
@@ -3,25 +3,28 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, RouterError, deno_default, getTypeId, lookupObject, lookupWebFinger, traverseCollection } from "./lookup-Bhv7efZB.js";
7
- import { getNodeInfo } from "./client-pY7-3icS.js";
8
- import { nodeInfoToJson } from "./types-C2XVl6gj.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-BcT6cdMK.js";
10
- import { verifyRequest } from "./http-BIYwcgTd.js";
11
- import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-DR6mmQjt.js";
12
- import { doesActorOwnKey, getKeyOwner } from "./owner-DEgLiB7Z.js";
13
- import { signObject, verifyObject } from "./proof-p3cmdfis.js";
14
- import { getAuthenticatedDocumentLoader } from "./docloader-BkhI_RcC.js";
15
- import { kvCache } from "./kv-cache-DN9pfMBe.js";
16
- import { routeActivity } from "./inbox-Dbt8hLxb.js";
17
- import { FederationBuilderImpl } from "./builder-CLT_zIyw.js";
18
- import { buildCollectionSynchronizationHeader } from "./collection-BzWsN9pB.js";
19
- import { KvKeyCache } from "./keycache-B8aIeTgt.js";
20
- import { acceptsJsonLd } from "./negotiation-C4nFufNk.js";
21
- import { createExponentialBackoffPolicy } from "./retry-CfF8Gn4d.js";
22
- import { extractInboxes, sendActivity } from "./send-CcKJ-npK.js";
23
- import { getDocumentLoader } from "@fedify/vocab-runtime";
6
+ import { deno_default } from "./deno-i60L3ZJW.js";
7
+ import { getNodeInfo } from "./client-Dg7OfUDA.js";
8
+ import { RouterError } from "./router-D9eI0s4b.js";
9
+ import { nodeInfoToJson } from "./types-CPz01LGH.js";
10
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-DBHCloAO.js";
11
+ import { verifyRequest } from "./http-uzkhnm0W.js";
12
+ import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-CZgNIUGN.js";
13
+ import { doesActorOwnKey, getKeyOwner } from "./owner-BDvRiO5T.js";
14
+ import { signObject, verifyObject } from "./proof-XEPY5YKg.js";
15
+ import { getAuthenticatedDocumentLoader } from "./docloader-BuOglEYx.js";
16
+ import { kvCache } from "./kv-cache-BEeqyGER.js";
17
+ import { routeActivity } from "./inbox-CxrUTds4.js";
18
+ import { FederationBuilderImpl } from "./builder-R1Sfe-tb.js";
19
+ import { buildCollectionSynchronizationHeader } from "./collection-CcnIw1qY.js";
20
+ import { KvKeyCache } from "./keycache-DRxpZ5r9.js";
21
+ import { acceptsJsonLd } from "./negotiation-5NPJL6zp.js";
22
+ import { createExponentialBackoffPolicy } from "./retry-D4GJ670a.js";
23
+ import { extractInboxes, sendActivity } from "./send-BdhhZ2MN.js";
24
24
  import { getLogger, withContext } from "@logtape/logtape";
25
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
26
+ import { getDocumentLoader } from "@fedify/vocab-runtime";
27
+ import { lookupWebFinger } from "@fedify/webfinger";
25
28
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
26
29
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_RESPONSE_HEADER, ATTR_HTTP_RESPONSE_STATUS_CODE, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
27
30
  import { domainToASCII } from "node:url";
@@ -62,7 +65,7 @@ function autoIdAssigner(activity, context$1) {
62
65
  * activity like this:
63
66
  *
64
67
  * ```typescript
65
- * import { Follow, Person } from "@fedify/fedify/vocab";
68
+ * import { Follow, Person } from "@fedify/vocab";
66
69
  * const input = new Follow({
67
70
  * id: new URL("http://example.com/activities/1"),
68
71
  * actor: new Person({
@@ -81,7 +84,7 @@ function autoIdAssigner(activity, context$1) {
81
84
  * The result of applying this transformer would be:
82
85
  *
83
86
  * ```typescript
84
- * import { Follow, Person } from "@fedify/fedify/vocab";
87
+ * import { Follow, Person } from "@fedify/vocab";
85
88
  * const output = new Follow({
86
89
  * id: new URL("http://example.com/activities/1"),
87
90
  * actor: new URL("http://example.com/actors/1"),
@@ -154,151 +157,6 @@ function handleNodeInfoJrd(_request, context$1) {
154
157
  return Promise.resolve(response);
155
158
  }
156
159
 
157
- //#endregion
158
- //#region src/vocab/constants.ts
159
- /**
160
- * The special public collection for [public addressing]. *Do not mutate this
161
- * object.*
162
- *
163
- * [public addressing]: https://www.w3.org/TR/activitypub/#public-addressing
164
- *
165
- * @since 0.7.0
166
- */
167
- const PUBLIC_COLLECTION = new URL("https://www.w3.org/ns/activitystreams#Public");
168
-
169
- //#endregion
170
- //#region src/webfinger/handler.ts
171
- const logger = getLogger([
172
- "fedify",
173
- "webfinger",
174
- "server"
175
- ]);
176
- /**
177
- * Handles a WebFinger request. You would not typically call this function
178
- * directly, but instead use {@link Federation.fetch} method.
179
- * @param request The WebFinger request to handle.
180
- * @param parameters The parameters for handling the request.
181
- * @returns The response to the request.
182
- */
183
- async function handleWebFinger(request, options) {
184
- if (options.tracer == null) return await handleWebFingerInternal(request, options);
185
- return await options.tracer.startActiveSpan("webfinger.handle", { kind: SpanKind.SERVER }, async (span) => {
186
- try {
187
- const response = await handleWebFingerInternal(request, options);
188
- span.setStatus({ code: response.ok ? SpanStatusCode.UNSET : SpanStatusCode.ERROR });
189
- return response;
190
- } catch (error) {
191
- span.setStatus({
192
- code: SpanStatusCode.ERROR,
193
- message: String(error)
194
- });
195
- throw error;
196
- } finally {
197
- span.end();
198
- }
199
- });
200
- }
201
- async function handleWebFingerInternal(request, { context: context$1, host, actorDispatcher, actorHandleMapper, actorAliasMapper, onNotFound, span, webFingerLinksDispatcher }) {
202
- if (actorDispatcher == null) {
203
- logger.error("Actor dispatcher is not set.");
204
- return await onNotFound(request);
205
- }
206
- const resource = context$1.url.searchParams.get("resource");
207
- if (resource == null) return new Response("Missing resource parameter.", { status: 400 });
208
- span?.setAttribute("webfinger.resource", resource);
209
- let resourceUrl;
210
- try {
211
- resourceUrl = new URL(resource);
212
- } catch (e) {
213
- if (e instanceof TypeError) return new Response("Invalid resource URL.", { status: 400 });
214
- throw e;
215
- }
216
- span?.setAttribute("webfinger.resource.scheme", resourceUrl.protocol.replace(/:$/, ""));
217
- async function mapUsernameToIdentifier(username) {
218
- if (actorHandleMapper == null) {
219
- logger.error("No actor handle mapper is set; use the WebFinger username {username} as the actor's internal identifier.", { username });
220
- return username;
221
- }
222
- const identifier$1 = await actorHandleMapper(context$1, username);
223
- if (identifier$1 == null) {
224
- logger.error("Actor {username} not found.", { username });
225
- return null;
226
- }
227
- return identifier$1;
228
- }
229
- let identifier = null;
230
- const uriParsed = context$1.parseUri(resourceUrl);
231
- if (uriParsed?.type != "actor") {
232
- const match = /^acct:([^@]+)@([^@]+)$/.exec(resource);
233
- if (match == null) {
234
- const result = await actorAliasMapper?.(context$1, resourceUrl);
235
- if (result == null) return await onNotFound(request);
236
- if ("identifier" in result) identifier = result.identifier;
237
- else identifier = await mapUsernameToIdentifier(result.username);
238
- } else {
239
- const portMatch = /:\d+$/.exec(match[2]);
240
- const normalizedHost = portMatch == null ? domainToASCII(match[2].toLowerCase()) : domainToASCII(match[2].substring(0, portMatch.index).toLowerCase()) + portMatch[0];
241
- if (normalizedHost != context$1.url.host && normalizedHost != host) return await onNotFound(request);
242
- else {
243
- identifier = await mapUsernameToIdentifier(match[1]);
244
- resourceUrl = new URL(`acct:${match[1]}@${normalizedHost}`);
245
- }
246
- }
247
- } else identifier = uriParsed.identifier;
248
- if (identifier == null) return await onNotFound(request);
249
- const actor = await actorDispatcher(context$1, identifier);
250
- if (actor == null) {
251
- logger.error("Actor {identifier} not found.", { identifier });
252
- return await onNotFound(request);
253
- }
254
- const links = [{
255
- rel: "self",
256
- href: context$1.getActorUri(identifier).href,
257
- type: "application/activity+json"
258
- }];
259
- for (const url of actor.urls) if (url instanceof Link && url.href != null) links.push({
260
- rel: url.rel ?? "http://webfinger.net/rel/profile-page",
261
- href: url.href.href,
262
- type: url.mediaType == null ? void 0 : url.mediaType
263
- });
264
- else if (url instanceof URL) links.push({
265
- rel: "http://webfinger.net/rel/profile-page",
266
- href: url.href
267
- });
268
- for await (const image of actor.getIcons()) {
269
- if (image.url?.href == null) continue;
270
- const link = {
271
- rel: "http://webfinger.net/rel/avatar",
272
- href: image.url.href.toString()
273
- };
274
- if (image.mediaType != null) link.type = image.mediaType;
275
- links.push(link);
276
- }
277
- if (webFingerLinksDispatcher != null) {
278
- const customLinks = await webFingerLinksDispatcher(context$1, resourceUrl);
279
- if (customLinks != null) for (const link of customLinks) links.push(link);
280
- }
281
- const aliases = [];
282
- if (resourceUrl.protocol != "acct:" && actor.preferredUsername != null) {
283
- aliases.push(`acct:${actor.preferredUsername}@${host ?? context$1.url.host}`);
284
- if (host != null && host !== context$1.url.host) aliases.push(`acct:${actor.preferredUsername}@${context$1.url.host}`);
285
- }
286
- if (resourceUrl.href !== context$1.getActorUri(identifier).href) aliases.push(context$1.getActorUri(identifier).href);
287
- if (resourceUrl.protocol === "acct:" && host != null && host !== context$1.url.host && !resourceUrl.href.endsWith(`@${host}`)) {
288
- const username = resourceUrl.href.replace(/^acct:/, "").replace(/@.*$/, "");
289
- aliases.push(`acct:${username}@${host}`);
290
- }
291
- const jrd = {
292
- subject: resourceUrl.href,
293
- aliases,
294
- links
295
- };
296
- return new Response(JSON.stringify(jrd), { headers: {
297
- "Content-Type": "application/jrd+json",
298
- "Access-Control-Allow-Origin": "*"
299
- } });
300
- }
301
-
302
160
  //#endregion
303
161
  //#region src/federation/handler.ts
304
162
  /**
@@ -780,6 +638,13 @@ async function handleInboxInternal(request, parameters, span) {
780
638
  }
781
639
  if (activity.id != null) span.setAttribute("activitypub.activity.id", activity.id.href);
782
640
  span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
641
+ span.addEvent("activitypub.activity.received", {
642
+ "activitypub.activity.json": JSON.stringify(json),
643
+ "activitypub.activity.verified": activity != null,
644
+ "ld_signatures.verified": ldSigVerified,
645
+ "http_signatures.verified": httpSigKey != null,
646
+ "http_signatures.key_id": httpSigKey?.id?.href ?? ""
647
+ });
783
648
  if (httpSigKey != null && !await doesActorOwnKey(activity, httpSigKey, ctx)) {
784
649
  logger$2.error("The signer ({keyId}) and the actor ({actorId}) do not match.", {
785
650
  activity: json,
@@ -1282,6 +1147,138 @@ async function respondWithObjectIfAcceptable(object, request, options) {
1282
1147
  return response;
1283
1148
  }
1284
1149
 
1150
+ //#endregion
1151
+ //#region src/federation/webfinger.ts
1152
+ const logger = getLogger([
1153
+ "fedify",
1154
+ "webfinger",
1155
+ "server"
1156
+ ]);
1157
+ /**
1158
+ * Handles a WebFinger request. You would not typically call this function
1159
+ * directly, but instead use {@link Federation.fetch} method.
1160
+ * @param request The WebFinger request to handle.
1161
+ * @param parameters The parameters for handling the request.
1162
+ * @returns The response to the request.
1163
+ */
1164
+ async function handleWebFinger(request, options) {
1165
+ if (options.tracer == null) return await handleWebFingerInternal(request, options);
1166
+ return await options.tracer.startActiveSpan("webfinger.handle", { kind: SpanKind.SERVER }, async (span) => {
1167
+ try {
1168
+ const response = await handleWebFingerInternal(request, options);
1169
+ span.setStatus({ code: response.ok ? SpanStatusCode.UNSET : SpanStatusCode.ERROR });
1170
+ return response;
1171
+ } catch (error) {
1172
+ span.setStatus({
1173
+ code: SpanStatusCode.ERROR,
1174
+ message: String(error)
1175
+ });
1176
+ throw error;
1177
+ } finally {
1178
+ span.end();
1179
+ }
1180
+ });
1181
+ }
1182
+ async function handleWebFingerInternal(request, { context: context$1, host, actorDispatcher, actorHandleMapper, actorAliasMapper, onNotFound, span, webFingerLinksDispatcher }) {
1183
+ if (actorDispatcher == null) {
1184
+ logger.error("Actor dispatcher is not set.");
1185
+ return await onNotFound(request);
1186
+ }
1187
+ const resource = context$1.url.searchParams.get("resource");
1188
+ if (resource == null) return new Response("Missing resource parameter.", { status: 400 });
1189
+ span?.setAttribute("webfinger.resource", resource);
1190
+ let resourceUrl;
1191
+ try {
1192
+ resourceUrl = new URL(resource);
1193
+ } catch (e) {
1194
+ if (e instanceof TypeError) return new Response("Invalid resource URL.", { status: 400 });
1195
+ throw e;
1196
+ }
1197
+ span?.setAttribute("webfinger.resource.scheme", resourceUrl.protocol.replace(/:$/, ""));
1198
+ async function mapUsernameToIdentifier(username) {
1199
+ if (actorHandleMapper == null) {
1200
+ logger.error("No actor handle mapper is set; use the WebFinger username {username} as the actor's internal identifier.", { username });
1201
+ return username;
1202
+ }
1203
+ const identifier$1 = await actorHandleMapper(context$1, username);
1204
+ if (identifier$1 == null) {
1205
+ logger.error("Actor {username} not found.", { username });
1206
+ return null;
1207
+ }
1208
+ return identifier$1;
1209
+ }
1210
+ let identifier = null;
1211
+ const uriParsed = context$1.parseUri(resourceUrl);
1212
+ if (uriParsed?.type != "actor") {
1213
+ const match = /^acct:([^@]+)@([^@]+)$/.exec(resource);
1214
+ if (match == null) {
1215
+ const result = await actorAliasMapper?.(context$1, resourceUrl);
1216
+ if (result == null) return await onNotFound(request);
1217
+ if ("identifier" in result) identifier = result.identifier;
1218
+ else identifier = await mapUsernameToIdentifier(result.username);
1219
+ } else {
1220
+ const portMatch = /:\d+$/.exec(match[2]);
1221
+ const normalizedHost = portMatch == null ? domainToASCII(match[2].toLowerCase()) : domainToASCII(match[2].substring(0, portMatch.index).toLowerCase()) + portMatch[0];
1222
+ if (normalizedHost != context$1.url.host && normalizedHost != host) return await onNotFound(request);
1223
+ else {
1224
+ identifier = await mapUsernameToIdentifier(match[1]);
1225
+ resourceUrl = new URL(`acct:${match[1]}@${normalizedHost}`);
1226
+ }
1227
+ }
1228
+ } else identifier = uriParsed.identifier;
1229
+ if (identifier == null) return await onNotFound(request);
1230
+ const actor = await actorDispatcher(context$1, identifier);
1231
+ if (actor == null) {
1232
+ logger.error("Actor {identifier} not found.", { identifier });
1233
+ return await onNotFound(request);
1234
+ }
1235
+ const links = [{
1236
+ rel: "self",
1237
+ href: context$1.getActorUri(identifier).href,
1238
+ type: "application/activity+json"
1239
+ }];
1240
+ for (const url of actor.urls) if (url instanceof Link && url.href != null) links.push({
1241
+ rel: url.rel ?? "http://webfinger.net/rel/profile-page",
1242
+ href: url.href.href,
1243
+ type: url.mediaType == null ? void 0 : url.mediaType
1244
+ });
1245
+ else if (url instanceof URL) links.push({
1246
+ rel: "http://webfinger.net/rel/profile-page",
1247
+ href: url.href
1248
+ });
1249
+ for await (const image of actor.getIcons()) {
1250
+ if (image.url?.href == null) continue;
1251
+ links.push({
1252
+ rel: "http://webfinger.net/rel/avatar",
1253
+ href: image.url.href.toString(),
1254
+ ...image.mediaType != null && { type: image.mediaType }
1255
+ });
1256
+ }
1257
+ if (webFingerLinksDispatcher != null) {
1258
+ const customLinks = await webFingerLinksDispatcher(context$1, resourceUrl);
1259
+ if (customLinks != null) for (const link of customLinks) links.push(link);
1260
+ }
1261
+ const aliases = [];
1262
+ if (resourceUrl.protocol != "acct:" && actor.preferredUsername != null) {
1263
+ aliases.push(`acct:${actor.preferredUsername}@${host ?? context$1.url.host}`);
1264
+ if (host != null && host !== context$1.url.host) aliases.push(`acct:${actor.preferredUsername}@${context$1.url.host}`);
1265
+ }
1266
+ if (resourceUrl.href !== context$1.getActorUri(identifier).href) aliases.push(context$1.getActorUri(identifier).href);
1267
+ if (resourceUrl.protocol === "acct:" && host != null && host !== context$1.url.host && !resourceUrl.href.endsWith(`@${host}`)) {
1268
+ const username = resourceUrl.href.replace(/^acct:/, "").replace(/@.*$/, "");
1269
+ aliases.push(`acct:${username}@${host}`);
1270
+ }
1271
+ const jrd = {
1272
+ subject: resourceUrl.href,
1273
+ aliases,
1274
+ links
1275
+ };
1276
+ return new Response(JSON.stringify(jrd), { headers: {
1277
+ "Content-Type": "application/jrd+json",
1278
+ "Access-Control-Allow-Origin": "*"
1279
+ } });
1280
+ }
1281
+
1285
1282
  //#endregion
1286
1283
  //#region src/federation/middleware.ts
1287
1284
  /**
@@ -0,0 +1,26 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+ globalThis.addEventListener = () => {};
5
+
6
+ import "./deno-i60L3ZJW.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-CxwWsgSo.js";
8
+ import "./client-Dg7OfUDA.js";
9
+ import "./router-D9eI0s4b.js";
10
+ import "./types-CPz01LGH.js";
11
+ import "./key-DBHCloAO.js";
12
+ import "./http-uzkhnm0W.js";
13
+ import "./ld-CZgNIUGN.js";
14
+ import "./owner-BDvRiO5T.js";
15
+ import "./proof-XEPY5YKg.js";
16
+ import "./docloader-BuOglEYx.js";
17
+ import "./kv-cache-BEeqyGER.js";
18
+ import "./inbox-CxrUTds4.js";
19
+ import "./builder-R1Sfe-tb.js";
20
+ import "./collection-CcnIw1qY.js";
21
+ import "./keycache-DRxpZ5r9.js";
22
+ import "./negotiation-5NPJL6zp.js";
23
+ import "./retry-D4GJ670a.js";
24
+ import "./send-BdhhZ2MN.js";
25
+
26
+ export { FederationImpl };
@@ -0,0 +1,12 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
5
+ import "./transformers-N_ip_y4P.js";
6
+ import "./http-B5BgMxiO.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-BqPcChYv.js";
8
+ import "./proof-DzFse-Bn.js";
9
+ import "./types-8l28uC8o.js";
10
+ import "./kv-cache-BqWqxam4.js";
11
+
12
+ export { FederationImpl };
@@ -1,5 +1,5 @@
1
- import { HttpMessageSignaturesSpecDeterminer } from "./http-M8k5mKc0.cjs";
2
- import { KvKey, KvStore } from "./kv-Bxr0Q87_.cjs";
1
+ import { HttpMessageSignaturesSpecDeterminer } from "./http-ClB3pLcL.cjs";
2
+ import { KvKey, KvStore } from "./kv-B4vFhIYL.cjs";
3
3
  import { DocumentLoader, DocumentLoaderFactoryOptions } from "@fedify/vocab-runtime";
4
4
  import { TracerProvider } from "@opentelemetry/api";
5
5
 
@@ -72,16 +72,16 @@ interface KvCacheParameters {
72
72
  /**
73
73
  * The document loader to decorate with a cache.
74
74
  */
75
- loader: DocumentLoader;
75
+ readonly loader: DocumentLoader;
76
76
  /**
77
77
  * The key–value store to use for backing the cache.
78
78
  */
79
- kv: KvStore;
79
+ readonly kv: KvStore;
80
80
  /**
81
81
  * The key prefix to use for namespacing the cache.
82
82
  * `["_fedify", "remoteDocument"]` by default.
83
83
  */
84
- prefix?: KvKey;
84
+ readonly prefix?: KvKey;
85
85
  /**
86
86
  * The per-URL cache rules in the array of `[urlPattern, duration]` pairs
87
87
  * where `urlPattern` is either a string, a {@link URL}, or
@@ -90,7 +90,7 @@ interface KvCacheParameters {
90
90
  *
91
91
  * By default, 5 minutes for all URLs.
92
92
  */
93
- rules?: [string | URL | URLPattern, Temporal.Duration | Temporal.DurationLike][];
93
+ readonly rules?: readonly [string | URL | URLPattern, Temporal.Duration | Temporal.DurationLike][];
94
94
  }
95
95
  /**
96
96
  * Decorates a {@link DocumentLoader} with a cache backed by a {@link Deno.Kv}.
@@ -0,0 +1,62 @@
1
+ import { ActorAliasMapper, ActorDispatcher, ActorHandleMapper, RequestContext, WebFingerLinksDispatcher } from "./context-CrB9RFy5.cjs";
2
+ import { Span, Tracer } from "@opentelemetry/api";
3
+
4
+ //#region src/federation/webfinger.d.ts
5
+ /**
6
+ * Parameters for {@link handleWebFinger}.
7
+ */
8
+ interface WebFingerHandlerParameters<TContextData> {
9
+ /**
10
+ * The request context.
11
+ */
12
+ context: RequestContext<TContextData>;
13
+ /**
14
+ * The canonical hostname of the server, if it's explicitly configured.
15
+ * @since 1.5.0
16
+ */
17
+ host?: string;
18
+ /**
19
+ * The callback for dispatching the actor.
20
+ */
21
+ actorDispatcher?: ActorDispatcher<TContextData>;
22
+ /**
23
+ * The callback for mapping a WebFinger username to the corresponding actor's
24
+ * internal identifier, or `null` if the username is not found.
25
+ * @since 0.15.0
26
+ */
27
+ actorHandleMapper?: ActorHandleMapper<TContextData>;
28
+ /**
29
+ * The callback for mapping a WebFinger query to the corresponding actor's
30
+ * internal identifier or username, or `null` if the query is not found.
31
+ * @since 1.4.0
32
+ */
33
+ actorAliasMapper?: ActorAliasMapper<TContextData>;
34
+ /**
35
+ * The callback for dispatching the Links of webFinger.
36
+ */
37
+ webFingerLinksDispatcher?: WebFingerLinksDispatcher<TContextData>;
38
+ /**
39
+ * The function to call when the actor is not found.
40
+ */
41
+ onNotFound(request: Request): Response | Promise<Response>;
42
+ /**
43
+ * The OpenTelemetry tracer.
44
+ * @since 1.3.0
45
+ */
46
+ tracer?: Tracer;
47
+ /**
48
+ * The span for the request.
49
+ * @since 1.3.0
50
+ */
51
+ span?: Span;
52
+ }
53
+ /**
54
+ * Handles a WebFinger request. You would not typically call this function
55
+ * directly, but instead use {@link Federation.fetch} method.
56
+ * @param request The WebFinger request to handle.
57
+ * @param parameters The parameters for handling the request.
58
+ * @returns The response to the request.
59
+ */
60
+ declare function handleWebFinger<TContextData>(request: Request, options: WebFingerHandlerParameters<TContextData>): Promise<Response>;
61
+ //#endregion
62
+ export { WebFingerHandlerParameters, handleWebFinger };
@@ -1,5 +1,5 @@
1
- import { CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1 } from "./vocab-CeDBzu-f.cjs";
2
- import { KeyCache } from "./http-M8k5mKc0.cjs";
1
+ import { KeyCache } from "./http-ClB3pLcL.cjs";
2
+ import { CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1 } from "@fedify/vocab";
3
3
  import { DocumentLoader } from "@fedify/vocab-runtime";
4
4
  import { TracerProvider } from "@opentelemetry/api";
5
5
 
@@ -0,0 +1,64 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { URLPattern } from "urlpattern-polyfill";
3
+ import { ActorAliasMapper, ActorDispatcher, ActorHandleMapper, RequestContext, WebFingerLinksDispatcher } from "./context-C7vzWilY.js";
4
+ import { Span, Tracer } from "@opentelemetry/api";
5
+
6
+ //#region src/federation/webfinger.d.ts
7
+ /**
8
+ * Parameters for {@link handleWebFinger}.
9
+ */
10
+ interface WebFingerHandlerParameters<TContextData> {
11
+ /**
12
+ * The request context.
13
+ */
14
+ context: RequestContext<TContextData>;
15
+ /**
16
+ * The canonical hostname of the server, if it's explicitly configured.
17
+ * @since 1.5.0
18
+ */
19
+ host?: string;
20
+ /**
21
+ * The callback for dispatching the actor.
22
+ */
23
+ actorDispatcher?: ActorDispatcher<TContextData>;
24
+ /**
25
+ * The callback for mapping a WebFinger username to the corresponding actor's
26
+ * internal identifier, or `null` if the username is not found.
27
+ * @since 0.15.0
28
+ */
29
+ actorHandleMapper?: ActorHandleMapper<TContextData>;
30
+ /**
31
+ * The callback for mapping a WebFinger query to the corresponding actor's
32
+ * internal identifier or username, or `null` if the query is not found.
33
+ * @since 1.4.0
34
+ */
35
+ actorAliasMapper?: ActorAliasMapper<TContextData>;
36
+ /**
37
+ * The callback for dispatching the Links of webFinger.
38
+ */
39
+ webFingerLinksDispatcher?: WebFingerLinksDispatcher<TContextData>;
40
+ /**
41
+ * The function to call when the actor is not found.
42
+ */
43
+ onNotFound(request: Request): Response | Promise<Response>;
44
+ /**
45
+ * The OpenTelemetry tracer.
46
+ * @since 1.3.0
47
+ */
48
+ tracer?: Tracer;
49
+ /**
50
+ * The span for the request.
51
+ * @since 1.3.0
52
+ */
53
+ span?: Span;
54
+ }
55
+ /**
56
+ * Handles a WebFinger request. You would not typically call this function
57
+ * directly, but instead use {@link Federation.fetch} method.
58
+ * @param request The WebFinger request to handle.
59
+ * @param parameters The parameters for handling the request.
60
+ * @returns The response to the request.
61
+ */
62
+ declare function handleWebFinger<TContextData>(request: Request, options: WebFingerHandlerParameters<TContextData>): Promise<Response>;
63
+ //#endregion
64
+ export { WebFingerHandlerParameters, handleWebFinger };
@@ -1,5 +1,5 @@
1
- import { Activity } from "./vocab-CeDBzu-f.cjs";
2
- import { ActivityTransformer, Context } from "./context-DJ8aSy2Q.cjs";
1
+ import { ActivityTransformer, Context } from "./context-CrB9RFy5.cjs";
2
+ import { Activity } from "@fedify/vocab";
3
3
 
4
4
  //#region src/compat/transformers.d.ts
5
5
 
@@ -28,7 +28,7 @@ declare function autoIdAssigner<TContextData>(activity: Activity, context: Conte
28
28
  * activity like this:
29
29
  *
30
30
  * ```typescript
31
- * import { Follow, Person } from "@fedify/fedify/vocab";
31
+ * import { Follow, Person } from "@fedify/vocab";
32
32
  * const input = new Follow({
33
33
  * id: new URL("http://example.com/activities/1"),
34
34
  * actor: new Person({
@@ -47,7 +47,7 @@ declare function autoIdAssigner<TContextData>(activity: Activity, context: Conte
47
47
  * The result of applying this transformer would be:
48
48
  *
49
49
  * ```typescript
50
- * import { Follow, Person } from "@fedify/fedify/vocab";
50
+ * import { Follow, Person } from "@fedify/vocab";
51
51
  * const output = new Follow({
52
52
  * id: new URL("http://example.com/activities/1"),
53
53
  * actor: new URL("http://example.com/actors/1"),
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1 } from "./vocab-BCWe1Ih5.js";
4
- import { KeyCache } from "./http-BbO0ejuk.js";
3
+ import { KeyCache } from "./http-DLBDPal9.js";
4
+ import { CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1 } from "@fedify/vocab";
5
5
  import { TracerProvider } from "@opentelemetry/api";
6
6
  import { DocumentLoader } from "@fedify/vocab-runtime";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { Activity } from "./vocab-BCWe1Ih5.js";
4
- import { ActivityTransformer, Context } from "./context-DG0huGW-.js";
3
+ import { ActivityTransformer, Context } from "./context-C7vzWilY.js";
4
+ import { Activity } from "@fedify/vocab";
5
5
 
6
6
  //#region src/compat/transformers.d.ts
7
7
 
@@ -30,7 +30,7 @@ declare function autoIdAssigner<TContextData>(activity: Activity, context: Conte
30
30
  * activity like this:
31
31
  *
32
32
  * ```typescript
33
- * import { Follow, Person } from "@fedify/fedify/vocab";
33
+ * import { Follow, Person } from "@fedify/vocab";
34
34
  * const input = new Follow({
35
35
  * id: new URL("http://example.com/activities/1"),
36
36
  * actor: new Person({
@@ -49,7 +49,7 @@ declare function autoIdAssigner<TContextData>(activity: Activity, context: Conte
49
49
  * The result of applying this transformer would be:
50
50
  *
51
51
  * ```typescript
52
- * import { Follow, Person } from "@fedify/fedify/vocab";
52
+ * import { Follow, Person } from "@fedify/vocab";
53
53
  * const output = new Follow({
54
54
  * id: new URL("http://example.com/activities/1"),
55
55
  * actor: new URL("http://example.com/actors/1"),