@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
@@ -2,22 +2,21 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { getDefaultActivityTransformers } from "./transformers-BFT6d7J5.js";
6
- import { deno_default, lookupWebFinger } from "./lookup-DdpqU9Gb.js";
7
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-CtTW_fTc.js";
8
- import { doubleKnock, exportJwk, importJwk, validateCryptoKey, verifyRequest } from "./http-DmUiHemJ.js";
9
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-AhMjXzru.js";
10
- import { getNodeInfo, nodeInfoToJson } from "./types-BtUjyi5y.js";
11
- import { getAuthenticatedDocumentLoader, kvCache } from "./kv-cache-B5TLf2fI.js";
12
- import { lookupObject, traverseCollection } from "./vocab-CuAJ4Tbh.js";
5
+ import { getDefaultActivityTransformers } from "./transformers-N_ip_y4P.js";
6
+ import { deno_default, doubleKnock, exportJwk, importJwk, validateCryptoKey, verifyRequest } from "./http-B5BgMxiO.js";
7
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-DzFse-Bn.js";
8
+ import { getNodeInfo, nodeInfoToJson } from "./types-8l28uC8o.js";
9
+ import { getAuthenticatedDocumentLoader, kvCache } from "./kv-cache-BqWqxam4.js";
13
10
  import { getLogger, withContext } from "@logtape/logtape";
11
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
14
12
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
15
- import { getDocumentLoader } from "@fedify/vocab-runtime";
16
13
  import { cloneDeep } from "es-toolkit";
17
14
  import { Router } from "uri-template-router";
18
15
  import { parseTemplate } from "url-template";
19
16
  import { encodeHex } from "byte-encodings/hex";
20
17
  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";
18
+ import { getDocumentLoader } from "@fedify/vocab-runtime";
19
+ import { lookupWebFinger } from "@fedify/webfinger";
21
20
  import { domainToASCII } from "node:url";
22
21
 
23
22
  //#region src/federation/inbox.ts
@@ -338,7 +337,7 @@ var FederationBuilderImpl = class {
338
337
  this.collectionTypeIds = {};
339
338
  }
340
339
  async build(options) {
341
- const { FederationImpl: FederationImpl$1 } = await import("./middleware-DGwP3i-w.js");
340
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-ZN9cd_L8.js");
342
341
  const f = new FederationImpl$1(options);
343
342
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
344
343
  f.router = this.router.clone();
@@ -1490,6 +1489,13 @@ async function handleInboxInternal(request, parameters, span) {
1490
1489
  }
1491
1490
  if (activity.id != null) span.setAttribute("activitypub.activity.id", activity.id.href);
1492
1491
  span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
1492
+ span.addEvent("activitypub.activity.received", {
1493
+ "activitypub.activity.json": JSON.stringify(json),
1494
+ "activitypub.activity.verified": activity != null,
1495
+ "ld_signatures.verified": ldSigVerified,
1496
+ "http_signatures.verified": httpSigKey != null,
1497
+ "http_signatures.key_id": httpSigKey?.id?.href ?? ""
1498
+ });
1493
1499
  if (httpSigKey != null && !await doesActorOwnKey(activity, httpSigKey, ctx)) {
1494
1500
  logger$1.error("The signer ({keyId}) and the actor ({actorId}) do not match.", {
1495
1501
  activity: json,
@@ -2030,139 +2036,6 @@ function handleNodeInfoJrd(_request, context$1) {
2030
2036
  return Promise.resolve(response);
2031
2037
  }
2032
2038
 
2033
- //#endregion
2034
- //#region src/webfinger/handler.ts
2035
- const logger = getLogger([
2036
- "fedify",
2037
- "webfinger",
2038
- "server"
2039
- ]);
2040
- /**
2041
- * Handles a WebFinger request. You would not typically call this function
2042
- * directly, but instead use {@link Federation.fetch} method.
2043
- * @param request The WebFinger request to handle.
2044
- * @param parameters The parameters for handling the request.
2045
- * @returns The response to the request.
2046
- */
2047
- async function handleWebFinger(request, options) {
2048
- if (options.tracer == null) return await handleWebFingerInternal(request, options);
2049
- return await options.tracer.startActiveSpan("webfinger.handle", { kind: SpanKind.SERVER }, async (span) => {
2050
- try {
2051
- const response = await handleWebFingerInternal(request, options);
2052
- span.setStatus({ code: response.ok ? SpanStatusCode.UNSET : SpanStatusCode.ERROR });
2053
- return response;
2054
- } catch (error) {
2055
- span.setStatus({
2056
- code: SpanStatusCode.ERROR,
2057
- message: String(error)
2058
- });
2059
- throw error;
2060
- } finally {
2061
- span.end();
2062
- }
2063
- });
2064
- }
2065
- async function handleWebFingerInternal(request, { context: context$1, host, actorDispatcher, actorHandleMapper, actorAliasMapper, onNotFound, span, webFingerLinksDispatcher }) {
2066
- if (actorDispatcher == null) {
2067
- logger.error("Actor dispatcher is not set.");
2068
- return await onNotFound(request);
2069
- }
2070
- const resource = context$1.url.searchParams.get("resource");
2071
- if (resource == null) return new Response("Missing resource parameter.", { status: 400 });
2072
- span?.setAttribute("webfinger.resource", resource);
2073
- let resourceUrl;
2074
- try {
2075
- resourceUrl = new URL(resource);
2076
- } catch (e) {
2077
- if (e instanceof TypeError) return new Response("Invalid resource URL.", { status: 400 });
2078
- throw e;
2079
- }
2080
- span?.setAttribute("webfinger.resource.scheme", resourceUrl.protocol.replace(/:$/, ""));
2081
- async function mapUsernameToIdentifier(username) {
2082
- if (actorHandleMapper == null) {
2083
- logger.error("No actor handle mapper is set; use the WebFinger username {username} as the actor's internal identifier.", { username });
2084
- return username;
2085
- }
2086
- const identifier$1 = await actorHandleMapper(context$1, username);
2087
- if (identifier$1 == null) {
2088
- logger.error("Actor {username} not found.", { username });
2089
- return null;
2090
- }
2091
- return identifier$1;
2092
- }
2093
- let identifier = null;
2094
- const uriParsed = context$1.parseUri(resourceUrl);
2095
- if (uriParsed?.type != "actor") {
2096
- const match = /^acct:([^@]+)@([^@]+)$/.exec(resource);
2097
- if (match == null) {
2098
- const result = await actorAliasMapper?.(context$1, resourceUrl);
2099
- if (result == null) return await onNotFound(request);
2100
- if ("identifier" in result) identifier = result.identifier;
2101
- else identifier = await mapUsernameToIdentifier(result.username);
2102
- } else {
2103
- const portMatch = /:\d+$/.exec(match[2]);
2104
- const normalizedHost = portMatch == null ? domainToASCII(match[2].toLowerCase()) : domainToASCII(match[2].substring(0, portMatch.index).toLowerCase()) + portMatch[0];
2105
- if (normalizedHost != context$1.url.host && normalizedHost != host) return await onNotFound(request);
2106
- else {
2107
- identifier = await mapUsernameToIdentifier(match[1]);
2108
- resourceUrl = new URL(`acct:${match[1]}@${normalizedHost}`);
2109
- }
2110
- }
2111
- } else identifier = uriParsed.identifier;
2112
- if (identifier == null) return await onNotFound(request);
2113
- const actor = await actorDispatcher(context$1, identifier);
2114
- if (actor == null) {
2115
- logger.error("Actor {identifier} not found.", { identifier });
2116
- return await onNotFound(request);
2117
- }
2118
- const links = [{
2119
- rel: "self",
2120
- href: context$1.getActorUri(identifier).href,
2121
- type: "application/activity+json"
2122
- }];
2123
- for (const url of actor.urls) if (url instanceof Link && url.href != null) links.push({
2124
- rel: url.rel ?? "http://webfinger.net/rel/profile-page",
2125
- href: url.href.href,
2126
- type: url.mediaType == null ? void 0 : url.mediaType
2127
- });
2128
- else if (url instanceof URL) links.push({
2129
- rel: "http://webfinger.net/rel/profile-page",
2130
- href: url.href
2131
- });
2132
- for await (const image of actor.getIcons()) {
2133
- if (image.url?.href == null) continue;
2134
- const link = {
2135
- rel: "http://webfinger.net/rel/avatar",
2136
- href: image.url.href.toString()
2137
- };
2138
- if (image.mediaType != null) link.type = image.mediaType;
2139
- links.push(link);
2140
- }
2141
- if (webFingerLinksDispatcher != null) {
2142
- const customLinks = await webFingerLinksDispatcher(context$1, resourceUrl);
2143
- if (customLinks != null) for (const link of customLinks) links.push(link);
2144
- }
2145
- const aliases = [];
2146
- if (resourceUrl.protocol != "acct:" && actor.preferredUsername != null) {
2147
- aliases.push(`acct:${actor.preferredUsername}@${host ?? context$1.url.host}`);
2148
- if (host != null && host !== context$1.url.host) aliases.push(`acct:${actor.preferredUsername}@${context$1.url.host}`);
2149
- }
2150
- if (resourceUrl.href !== context$1.getActorUri(identifier).href) aliases.push(context$1.getActorUri(identifier).href);
2151
- if (resourceUrl.protocol === "acct:" && host != null && host !== context$1.url.host && !resourceUrl.href.endsWith(`@${host}`)) {
2152
- const username = resourceUrl.href.replace(/^acct:/, "").replace(/@.*$/, "");
2153
- aliases.push(`acct:${username}@${host}`);
2154
- }
2155
- const jrd = {
2156
- subject: resourceUrl.href,
2157
- aliases,
2158
- links
2159
- };
2160
- return new Response(JSON.stringify(jrd), { headers: {
2161
- "Content-Type": "application/jrd+json",
2162
- "Access-Control-Allow-Origin": "*"
2163
- } });
2164
- }
2165
-
2166
2039
  //#endregion
2167
2040
  //#region src/federation/retry.ts
2168
2041
  /**
@@ -2189,8 +2062,8 @@ function createExponentialBackoffPolicy(options = {}) {
2189
2062
  milliseconds *= 1 + Math.random();
2190
2063
  milliseconds = Math.round(milliseconds);
2191
2064
  }
2192
- const delay$1 = Temporal.Duration.from({ milliseconds });
2193
- return Temporal.Duration.compare(delay$1, maxDelay) > 0 ? maxDelay : delay$1;
2065
+ const delay = Temporal.Duration.from({ milliseconds });
2066
+ return Temporal.Duration.compare(delay, maxDelay) > 0 ? maxDelay : delay;
2194
2067
  };
2195
2068
  }
2196
2069
 
@@ -2242,7 +2115,7 @@ function sendActivity(options) {
2242
2115
  await sendActivityInternal({
2243
2116
  ...options,
2244
2117
  tracerProvider
2245
- });
2118
+ }, span);
2246
2119
  } catch (e) {
2247
2120
  span.setStatus({
2248
2121
  code: SpanStatusCode.ERROR,
@@ -2254,7 +2127,7 @@ function sendActivity(options) {
2254
2127
  }
2255
2128
  });
2256
2129
  }
2257
- async function sendActivityInternal({ activity, activityId, keys, inbox, headers, specDeterminer, tracerProvider }) {
2130
+ async function sendActivityInternal({ activity, activityId, keys, inbox, headers, specDeterminer, tracerProvider }, span) {
2258
2131
  const logger$1 = getLogger([
2259
2132
  "fedify",
2260
2133
  "federation",
@@ -2309,6 +2182,143 @@ async function sendActivityInternal({ activity, activityId, keys, inbox, headers
2309
2182
  });
2310
2183
  throw new Error(`Failed to send activity ${activityId} to ${inbox.href} (${response.status} ${response.statusText}):\n${error}`);
2311
2184
  }
2185
+ span.addEvent("activitypub.activity.sent", {
2186
+ "activitypub.activity.json": JSON.stringify(activity),
2187
+ "activitypub.inbox.url": inbox.href,
2188
+ "activitypub.activity.id": activityId ?? ""
2189
+ });
2190
+ }
2191
+
2192
+ //#endregion
2193
+ //#region src/federation/webfinger.ts
2194
+ const logger = getLogger([
2195
+ "fedify",
2196
+ "webfinger",
2197
+ "server"
2198
+ ]);
2199
+ /**
2200
+ * Handles a WebFinger request. You would not typically call this function
2201
+ * directly, but instead use {@link Federation.fetch} method.
2202
+ * @param request The WebFinger request to handle.
2203
+ * @param parameters The parameters for handling the request.
2204
+ * @returns The response to the request.
2205
+ */
2206
+ async function handleWebFinger(request, options) {
2207
+ if (options.tracer == null) return await handleWebFingerInternal(request, options);
2208
+ return await options.tracer.startActiveSpan("webfinger.handle", { kind: SpanKind.SERVER }, async (span) => {
2209
+ try {
2210
+ const response = await handleWebFingerInternal(request, options);
2211
+ span.setStatus({ code: response.ok ? SpanStatusCode.UNSET : SpanStatusCode.ERROR });
2212
+ return response;
2213
+ } catch (error) {
2214
+ span.setStatus({
2215
+ code: SpanStatusCode.ERROR,
2216
+ message: String(error)
2217
+ });
2218
+ throw error;
2219
+ } finally {
2220
+ span.end();
2221
+ }
2222
+ });
2223
+ }
2224
+ async function handleWebFingerInternal(request, { context: context$1, host, actorDispatcher, actorHandleMapper, actorAliasMapper, onNotFound, span, webFingerLinksDispatcher }) {
2225
+ if (actorDispatcher == null) {
2226
+ logger.error("Actor dispatcher is not set.");
2227
+ return await onNotFound(request);
2228
+ }
2229
+ const resource = context$1.url.searchParams.get("resource");
2230
+ if (resource == null) return new Response("Missing resource parameter.", { status: 400 });
2231
+ span?.setAttribute("webfinger.resource", resource);
2232
+ let resourceUrl;
2233
+ try {
2234
+ resourceUrl = new URL(resource);
2235
+ } catch (e) {
2236
+ if (e instanceof TypeError) return new Response("Invalid resource URL.", { status: 400 });
2237
+ throw e;
2238
+ }
2239
+ span?.setAttribute("webfinger.resource.scheme", resourceUrl.protocol.replace(/:$/, ""));
2240
+ async function mapUsernameToIdentifier(username) {
2241
+ if (actorHandleMapper == null) {
2242
+ logger.error("No actor handle mapper is set; use the WebFinger username {username} as the actor's internal identifier.", { username });
2243
+ return username;
2244
+ }
2245
+ const identifier$1 = await actorHandleMapper(context$1, username);
2246
+ if (identifier$1 == null) {
2247
+ logger.error("Actor {username} not found.", { username });
2248
+ return null;
2249
+ }
2250
+ return identifier$1;
2251
+ }
2252
+ let identifier = null;
2253
+ const uriParsed = context$1.parseUri(resourceUrl);
2254
+ if (uriParsed?.type != "actor") {
2255
+ const match = /^acct:([^@]+)@([^@]+)$/.exec(resource);
2256
+ if (match == null) {
2257
+ const result = await actorAliasMapper?.(context$1, resourceUrl);
2258
+ if (result == null) return await onNotFound(request);
2259
+ if ("identifier" in result) identifier = result.identifier;
2260
+ else identifier = await mapUsernameToIdentifier(result.username);
2261
+ } else {
2262
+ const portMatch = /:\d+$/.exec(match[2]);
2263
+ const normalizedHost = portMatch == null ? domainToASCII(match[2].toLowerCase()) : domainToASCII(match[2].substring(0, portMatch.index).toLowerCase()) + portMatch[0];
2264
+ if (normalizedHost != context$1.url.host && normalizedHost != host) return await onNotFound(request);
2265
+ else {
2266
+ identifier = await mapUsernameToIdentifier(match[1]);
2267
+ resourceUrl = new URL(`acct:${match[1]}@${normalizedHost}`);
2268
+ }
2269
+ }
2270
+ } else identifier = uriParsed.identifier;
2271
+ if (identifier == null) return await onNotFound(request);
2272
+ const actor = await actorDispatcher(context$1, identifier);
2273
+ if (actor == null) {
2274
+ logger.error("Actor {identifier} not found.", { identifier });
2275
+ return await onNotFound(request);
2276
+ }
2277
+ const links = [{
2278
+ rel: "self",
2279
+ href: context$1.getActorUri(identifier).href,
2280
+ type: "application/activity+json"
2281
+ }];
2282
+ for (const url of actor.urls) if (url instanceof Link && url.href != null) links.push({
2283
+ rel: url.rel ?? "http://webfinger.net/rel/profile-page",
2284
+ href: url.href.href,
2285
+ type: url.mediaType == null ? void 0 : url.mediaType
2286
+ });
2287
+ else if (url instanceof URL) links.push({
2288
+ rel: "http://webfinger.net/rel/profile-page",
2289
+ href: url.href
2290
+ });
2291
+ for await (const image of actor.getIcons()) {
2292
+ if (image.url?.href == null) continue;
2293
+ links.push({
2294
+ rel: "http://webfinger.net/rel/avatar",
2295
+ href: image.url.href.toString(),
2296
+ ...image.mediaType != null && { type: image.mediaType }
2297
+ });
2298
+ }
2299
+ if (webFingerLinksDispatcher != null) {
2300
+ const customLinks = await webFingerLinksDispatcher(context$1, resourceUrl);
2301
+ if (customLinks != null) for (const link of customLinks) links.push(link);
2302
+ }
2303
+ const aliases = [];
2304
+ if (resourceUrl.protocol != "acct:" && actor.preferredUsername != null) {
2305
+ aliases.push(`acct:${actor.preferredUsername}@${host ?? context$1.url.host}`);
2306
+ if (host != null && host !== context$1.url.host) aliases.push(`acct:${actor.preferredUsername}@${context$1.url.host}`);
2307
+ }
2308
+ if (resourceUrl.href !== context$1.getActorUri(identifier).href) aliases.push(context$1.getActorUri(identifier).href);
2309
+ if (resourceUrl.protocol === "acct:" && host != null && host !== context$1.url.host && !resourceUrl.href.endsWith(`@${host}`)) {
2310
+ const username = resourceUrl.href.replace(/^acct:/, "").replace(/@.*$/, "");
2311
+ aliases.push(`acct:${username}@${host}`);
2312
+ }
2313
+ const jrd = {
2314
+ subject: resourceUrl.href,
2315
+ aliases,
2316
+ links
2317
+ };
2318
+ return new Response(JSON.stringify(jrd), { headers: {
2319
+ "Content-Type": "application/jrd+json",
2320
+ "Access-Control-Allow-Origin": "*"
2321
+ } });
2312
2322
  }
2313
2323
 
2314
2324
  //#endregion
@@ -2615,11 +2625,11 @@ var FederationImpl = class extends FederationBuilderImpl {
2615
2625
  });
2616
2626
  throw error;
2617
2627
  }
2618
- const delay$1 = this.outboxRetryPolicy({
2628
+ const delay = this.outboxRetryPolicy({
2619
2629
  elapsedTime: Temporal.Instant.from(message.started).until(Temporal.Now.instant()),
2620
2630
  attempts: message.attempt
2621
2631
  });
2622
- if (delay$1 != null) {
2632
+ if (delay != null) {
2623
2633
  logger$1.error("Failed to send activity {activityId} to {inbox} (attempt #{attempt}); retry...:\n{error}", {
2624
2634
  ...logData,
2625
2635
  error
@@ -2627,7 +2637,7 @@ var FederationImpl = class extends FederationBuilderImpl {
2627
2637
  await this.outboxQueue?.enqueue({
2628
2638
  ...message,
2629
2639
  attempt: message.attempt + 1
2630
- }, { delay: Temporal.Duration.compare(delay$1, { seconds: 0 }) < 0 ? Temporal.Duration.from({ seconds: 0 }) : delay$1 });
2640
+ }, { delay: Temporal.Duration.compare(delay, { seconds: 0 }) < 0 ? Temporal.Duration.from({ seconds: 0 }) : delay });
2631
2641
  } else logger$1.error("Failed to send activity {activityId} to {inbox} after {attempt} attempts; giving up:\n{error}", {
2632
2642
  ...logData,
2633
2643
  error
@@ -2714,11 +2724,11 @@ var FederationImpl = class extends FederationBuilderImpl {
2714
2724
  span$1.end();
2715
2725
  throw error;
2716
2726
  }
2717
- const delay$1 = this.inboxRetryPolicy({
2727
+ const delay = this.inboxRetryPolicy({
2718
2728
  elapsedTime: Temporal.Instant.from(message.started).until(Temporal.Now.instant()),
2719
2729
  attempts: message.attempt
2720
2730
  });
2721
- if (delay$1 != null) {
2731
+ if (delay != null) {
2722
2732
  logger$1.error("Failed to process the incoming activity {activityId} (attempt #{attempt}); retry...:\n{error}", {
2723
2733
  error,
2724
2734
  attempt: message.attempt,
@@ -2729,7 +2739,7 @@ var FederationImpl = class extends FederationBuilderImpl {
2729
2739
  await this.inboxQueue?.enqueue({
2730
2740
  ...message,
2731
2741
  attempt: message.attempt + 1
2732
- }, { delay: Temporal.Duration.compare(delay$1, { seconds: 0 }) < 0 ? Temporal.Duration.from({ seconds: 0 }) : delay$1 });
2742
+ }, { delay: Temporal.Duration.compare(delay, { seconds: 0 }) < 0 ? Temporal.Duration.from({ seconds: 0 }) : delay });
2733
2743
  } else logger$1.error("Failed to process the incoming activity {activityId} after {trial} attempts; giving up:\n{error}", {
2734
2744
  error,
2735
2745
  activityId: activity.id?.href,
@@ -4144,4 +4154,4 @@ function getRequestId(request) {
4144
4154
  }
4145
4155
 
4146
4156
  //#endregion
4147
- export { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, Router$1 as Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };
4157
+ export { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, Router$1 as Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
@@ -0,0 +1,12 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('./transformers-BjBg6Lag.cjs');
6
+ require('./http-B_jtB30-.cjs');
7
+ const require_middleware = require('./middleware-BaoVtoMl.cjs');
8
+ require('./proof-vmNsq1AQ.cjs');
9
+ require('./types-B6z6CqIz.cjs');
10
+ require('./kv-cache-DY6hQ8Rf.cjs');
11
+
12
+ exports.FederationImpl = require_middleware.FederationImpl;