@fedify/fedify 1.10.0-dev.5 → 2.0.0-dev.12

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 (271) hide show
  1. package/README.md +3 -0
  2. package/dist/{actor-BXsV2bEo.js → actor-C-FuEZU4.js} +220 -705
  3. package/dist/{actor-C1Euqngb.d.ts → actor-DqFajh9s.d.ts} +2 -2
  4. package/dist/{actor-Cn_Wo2Sr.cjs → actor-_9UN5RVT.cjs} +952 -1479
  5. package/dist/{actor-Ydzhc8dj.d.cts → actor-f2NtjyCg.d.cts} +2 -2
  6. package/dist/{actor-B1L4qxfi.js → actor-rOm0sXHU.js} +1 -1
  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-C-PtyBzf.js → builder-hArjoWjW.js} +3 -4
  10. package/dist/{client-DjT_tegg.d.cts → client-94iWEfQa.d.cts} +3 -75
  11. package/dist/{client-DF8anIB5.d.ts → client-BsGzbnV-.d.ts} +3 -75
  12. package/dist/{client-DQu9XLnH.js → client-pY7-3icS.js} +3 -22
  13. package/dist/compat/mod.d.cts +10 -12
  14. package/dist/compat/mod.d.ts +10 -12
  15. package/dist/compat/transformers.test.js +20 -20
  16. package/dist/{context-CwUAkopp.d.cts → context-PxGADCsD.d.cts} +152 -27
  17. package/dist/{context-CXUibY4L.d.ts → context-V-XS2_6O.d.ts} +152 -27
  18. package/dist/{authdocloader-Cx_DgATa.js → docloader-CE1lRhEV.js} +17 -8
  19. package/dist/{esm-BHq8vvU6.js → esm-BEFbR5eN.js} +32 -17
  20. package/dist/federation/builder.test.js +9 -12
  21. package/dist/federation/collection.test.js +7 -9
  22. package/dist/federation/handler.test.js +28 -149
  23. package/dist/federation/idempotency.test.js +26 -27
  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 +270 -93
  28. package/dist/federation/mod.cjs +9 -11
  29. package/dist/federation/mod.d.cts +10 -12
  30. package/dist/federation/mod.d.ts +10 -12
  31. package/dist/federation/mod.js +9 -11
  32. package/dist/federation/mq.test.js +10 -10
  33. package/dist/federation/negotiation.test.js +26 -0
  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 +14 -16
  37. package/dist/{http-wsGR6KkT.d.ts → http-BbO0ejuk.d.ts} +2 -2
  38. package/dist/{http-ZepHDnAP.js → http-Bmx7ea3F.js} +2 -2
  39. package/dist/{http-B1_DzfAU.d.cts → http-M8k5mKc0.d.cts} +2 -2
  40. package/dist/{http-C4Oi5eIq.js → http-Q_l4fCEE.js} +256 -6
  41. package/dist/{http-BtKvhGUI.cjs → http-So5V_Tgv.cjs} +289 -9
  42. package/dist/{inbox-D6-aBaqR.js → inbox-B9PjFn2S.js} +2 -7
  43. package/dist/{key-Dwqt62bf.js → key-khQpfFdw.js} +3 -2
  44. package/dist/{keycache-DZ51X_tY.js → keycache-BU3fsZFa.js} +1 -1
  45. package/dist/{keys-D9SlcZrs.js → keys-BaMFfIdL.js} +2 -1
  46. package/dist/kv-cache-DN9pfMBe.js +94 -0
  47. package/dist/kv-cache-R1oW382l.js +122 -0
  48. package/dist/kv-cache-X2ggcnHI.cjs +134 -0
  49. package/dist/{ld-CTGnKRt0.js → ld-BLMebnep.js} +3 -2
  50. package/dist/{type-BBugK2n5.js → lookup-C7SSHgK7.js} +542 -5394
  51. package/dist/{lookup-aQOlOGdF.cjs → lookup-CLaDFNx1.cjs} +134 -5
  52. package/dist/{lookup-BnxmqZLB.js → lookup-CtC3x1M6.js} +125 -2
  53. package/dist/middleware-BYBwqvTv.cjs +15 -0
  54. package/dist/{middleware-BtJedzGJ.js → middleware-Bda2JO66.js} +38 -84
  55. package/dist/{middleware-DHDM-Bzb.js → middleware-C3ml59Hp.js} +43 -146
  56. package/dist/middleware-DC7h2qq-.js +26 -0
  57. package/dist/{middleware-DTIx6DRv.cjs → middleware-DFLterpx.cjs} +58 -104
  58. package/dist/middleware-mQR2SM7T.js +15 -0
  59. package/dist/{mod-CDObsV1d.d.ts → mod-BlVovdcy.d.ts} +2 -2
  60. package/dist/{mod-mXx9V0q5.d.cts → mod-BoRKfJPE.d.cts} +2 -2
  61. package/dist/{mod-BUbqxBev.d.cts → mod-BxRCHTz-.d.cts} +2 -2
  62. package/dist/{mod-jQ4OODsl.d.cts → mod-C58MZ7Wx.d.cts} +1 -1
  63. package/dist/{mod-BcObK1Lz.d.ts → mod-Cdo6SYlJ.d.ts} +2 -2
  64. package/dist/{mod-DgcYoyZK.d.ts → mod-D5Z2tISD.d.ts} +3 -3
  65. package/dist/mod-DMpuiKXi.d.cts +107 -0
  66. package/dist/{mod-fjqfsrty.d.cts → mod-DgxG-byT.d.cts} +3 -3
  67. package/dist/{mod-DBzN0aCM.d.ts → mod-Ds0mpFZU.d.ts} +1 -1
  68. package/dist/mod-aAE2wOWV.d.ts +109 -0
  69. package/dist/mod.cjs +19 -34
  70. package/dist/mod.d.cts +15 -17
  71. package/dist/mod.d.ts +15 -17
  72. package/dist/mod.js +14 -16
  73. package/dist/negotiation-C4nFufNk.js +71 -0
  74. package/dist/nodeinfo/client.test.js +30 -111
  75. package/dist/nodeinfo/handler.test.js +25 -26
  76. package/dist/nodeinfo/mod.cjs +3 -6
  77. package/dist/nodeinfo/mod.d.cts +3 -5
  78. package/dist/nodeinfo/mod.d.ts +3 -5
  79. package/dist/nodeinfo/mod.js +3 -4
  80. package/dist/nodeinfo/types.test.js +8 -15
  81. package/dist/{owner-6KSEp9eV.d.cts → owner-B4HbyP8s.d.cts} +3 -3
  82. package/dist/{owner-DxpcLcST.js → owner-XzzTSr4S.js} +3 -2
  83. package/dist/{owner-BbeUDvOu.d.ts → owner-kQRGVXG1.d.ts} +3 -3
  84. package/dist/{proof-OAc97dy3.js → proof-B-qOSAuQ.js} +5 -4
  85. package/dist/{proof-ADZwDCs9.cjs → proof-BzJkFBBF.cjs} +18 -17
  86. package/dist/{proof-DBJnG2Jh.js → proof-C9sfVit1.js} +2 -2
  87. package/dist/{send-Df2mI5_D.js → send-yEkZlxzW.js} +2 -2
  88. package/dist/sig/http.test.js +12 -13
  89. package/dist/sig/key.test.js +9 -11
  90. package/dist/sig/ld.test.js +8 -10
  91. package/dist/sig/mod.cjs +9 -11
  92. package/dist/sig/mod.d.cts +5 -7
  93. package/dist/sig/mod.d.ts +5 -7
  94. package/dist/sig/mod.js +5 -7
  95. package/dist/sig/owner.test.js +11 -13
  96. package/dist/sig/proof.test.js +13 -14
  97. package/dist/src/vocab/accept.yaml +1 -1
  98. package/dist/src/vocab/activity.yaml +1 -1
  99. package/dist/src/vocab/add.yaml +1 -1
  100. package/dist/src/vocab/announce.yaml +1 -1
  101. package/dist/src/vocab/application.yaml +1 -1
  102. package/dist/src/vocab/arrive.yaml +1 -1
  103. package/dist/src/vocab/article.yaml +1 -1
  104. package/dist/src/vocab/audio.yaml +1 -1
  105. package/dist/src/vocab/block.yaml +1 -1
  106. package/dist/src/vocab/chatmessage.yaml +1 -1
  107. package/dist/src/vocab/collection.yaml +1 -1
  108. package/dist/src/vocab/collectionpage.yaml +1 -1
  109. package/dist/src/vocab/create.yaml +1 -1
  110. package/dist/src/vocab/dataintegrityproof.yaml +1 -1
  111. package/dist/src/vocab/delete.yaml +1 -1
  112. package/dist/src/vocab/didservice.yaml +1 -1
  113. package/dist/src/vocab/dislike.yaml +1 -1
  114. package/dist/src/vocab/document.yaml +1 -1
  115. package/dist/src/vocab/emoji.yaml +1 -1
  116. package/dist/src/vocab/emojireact.yaml +1 -1
  117. package/dist/src/vocab/endpoints.yaml +1 -1
  118. package/dist/src/vocab/event.yaml +1 -1
  119. package/dist/src/vocab/export.yaml +1 -1
  120. package/dist/src/vocab/flag.yaml +1 -1
  121. package/dist/src/vocab/follow.yaml +1 -1
  122. package/dist/src/vocab/group.yaml +1 -1
  123. package/dist/src/vocab/hashtag.yaml +1 -1
  124. package/dist/src/vocab/ignore.yaml +1 -1
  125. package/dist/src/vocab/image.yaml +1 -1
  126. package/dist/src/vocab/intransitiveactivity.yaml +1 -1
  127. package/dist/src/vocab/invite.yaml +1 -1
  128. package/dist/src/vocab/join.yaml +1 -1
  129. package/dist/src/vocab/key.yaml +1 -1
  130. package/dist/src/vocab/leave.yaml +1 -1
  131. package/dist/src/vocab/like.yaml +1 -1
  132. package/dist/src/vocab/link.yaml +1 -1
  133. package/dist/src/vocab/listen.yaml +1 -1
  134. package/dist/src/vocab/mention.yaml +1 -1
  135. package/dist/src/vocab/move.yaml +1 -1
  136. package/dist/src/vocab/multikey.yaml +1 -1
  137. package/dist/src/vocab/note.yaml +1 -1
  138. package/dist/src/vocab/object.yaml +1 -1
  139. package/dist/src/vocab/offer.yaml +1 -1
  140. package/dist/src/vocab/orderedcollection.yaml +1 -1
  141. package/dist/src/vocab/orderedcollectionpage.yaml +1 -1
  142. package/dist/src/vocab/organization.yaml +1 -1
  143. package/dist/src/vocab/page.yaml +1 -1
  144. package/dist/src/vocab/person.yaml +1 -1
  145. package/dist/src/vocab/place.yaml +1 -1
  146. package/dist/src/vocab/profile.yaml +1 -1
  147. package/dist/src/vocab/propertyvalue.yaml +1 -1
  148. package/dist/src/vocab/question.yaml +1 -1
  149. package/dist/src/vocab/read.yaml +1 -1
  150. package/dist/src/vocab/reject.yaml +1 -1
  151. package/dist/src/vocab/relationship.yaml +1 -1
  152. package/dist/src/vocab/remove.yaml +1 -1
  153. package/dist/src/vocab/service.yaml +1 -1
  154. package/dist/src/vocab/source.yaml +1 -1
  155. package/dist/src/vocab/tentativeaccept.yaml +1 -1
  156. package/dist/src/vocab/tentativereject.yaml +1 -1
  157. package/dist/src/vocab/tombstone.yaml +1 -1
  158. package/dist/src/vocab/travel.yaml +1 -1
  159. package/dist/src/vocab/undo.yaml +1 -1
  160. package/dist/src/vocab/update.yaml +1 -1
  161. package/dist/src/vocab/video.yaml +1 -1
  162. package/dist/src/vocab/view.yaml +1 -1
  163. package/dist/testing/docloader.test.js +6 -8
  164. package/dist/testing/mod.d.ts +10 -119
  165. package/dist/testing/mod.js +2 -3
  166. package/dist/{testing-J7AQVhyi.js → testing-D-nLIHkh.js} +1 -2
  167. package/dist/{types-C-qRy7Sr.js → types-BtUjyi5y.js} +5 -166
  168. package/dist/{types-BIgY6c-l.js → types-C2XVl6gj.js} +1 -3
  169. package/dist/{types-Bzu6UrRZ.cjs → types-CWgzGaqk.cjs} +6 -179
  170. package/dist/{runtime/authdocloader.test.js → utils/docloader.test.js} +14 -15
  171. package/dist/utils/kv-cache.test.js +209 -0
  172. package/dist/utils/mod.cjs +12 -0
  173. package/dist/utils/mod.d.cts +5 -0
  174. package/dist/utils/mod.d.ts +7 -0
  175. package/dist/utils/mod.js +11 -0
  176. package/dist/vocab/actor.test.js +8 -10
  177. package/dist/vocab/lookup.test.js +8 -10
  178. package/dist/vocab/mod.cjs +3 -4
  179. package/dist/vocab/mod.d.cts +3 -5
  180. package/dist/vocab/mod.d.ts +3 -5
  181. package/dist/vocab/mod.js +3 -4
  182. package/dist/vocab/type.test.js +2 -3
  183. package/dist/vocab/vocab.test.js +7618 -1973
  184. package/dist/{vocab-CDHNj5zp.d.ts → vocab-BCWe1Ih5.d.ts} +9 -25
  185. package/dist/{vocab-BmNpY-Qt.cjs → vocab-C96aggZM.cjs} +5 -5
  186. package/dist/{vocab-Cfs0937i.d.cts → vocab-CeDBzu-f.d.cts} +9 -25
  187. package/dist/{vocab-LbNRAL-4.js → vocab-axlR_8k0.js} +3 -3
  188. package/dist/webfinger/handler.test.js +24 -25
  189. package/dist/webfinger/lookup.test.js +7 -9
  190. package/dist/webfinger/mod.cjs +2 -3
  191. package/dist/webfinger/mod.d.cts +1 -3
  192. package/dist/webfinger/mod.d.ts +1 -3
  193. package/dist/webfinger/mod.js +2 -3
  194. package/package.json +20 -51
  195. package/dist/assert_throws-BOO88avQ.js +0 -39
  196. package/dist/authdocloader-D9EszOkX.js +0 -52
  197. package/dist/authdocloader-Drjjh5Im.cjs +0 -58
  198. package/dist/denokv-D0nfNQ1x.js +0 -57
  199. package/dist/docloader-Bmu3XCd9.js +0 -4825
  200. package/dist/docloader-Ca3eoIku.cjs +0 -4891
  201. package/dist/docloader-CxWcuWqQ.d.ts +0 -221
  202. package/dist/docloader-D-MrRyHl.d.cts +0 -219
  203. package/dist/key-B0fFsgYk.js +0 -10
  204. package/dist/key-BvTvHoN1.js +0 -10
  205. package/dist/key-CPuhWBwH.cjs +0 -290
  206. package/dist/key-DUfn16_4.js +0 -260
  207. package/dist/key-DZieB9_P.cjs +0 -10
  208. package/dist/lookup-DSMnJERg.js +0 -336
  209. package/dist/middleware-BnRluVn4.js +0 -17
  210. package/dist/middleware-CkMXhJ9g.cjs +0 -17
  211. package/dist/middleware-DhE-His4.js +0 -26
  212. package/dist/mod-CIbqfZW0.d.ts +0 -104
  213. package/dist/mod-Dt-G9ZOS.d.cts +0 -102
  214. package/dist/mq-B7R1Q-M5.d.cts +0 -140
  215. package/dist/mq-CRGm1e_F.d.ts +0 -143
  216. package/dist/nodeinfo/semver.test.js +0 -143
  217. package/dist/runtime/docloader.test.js +0 -588
  218. package/dist/runtime/key.test.d.ts +0 -3
  219. package/dist/runtime/key.test.js +0 -103
  220. package/dist/runtime/langstr.test.d.ts +0 -3
  221. package/dist/runtime/langstr.test.js +0 -40
  222. package/dist/runtime/link.test.d.ts +0 -3
  223. package/dist/runtime/link.test.js +0 -61
  224. package/dist/runtime/mod.cjs +0 -25
  225. package/dist/runtime/mod.d.cts +0 -6
  226. package/dist/runtime/mod.d.ts +0 -8
  227. package/dist/runtime/mod.js +0 -13
  228. package/dist/runtime/multibase/multibase.test.d.ts +0 -3
  229. package/dist/runtime/multibase/multibase.test.js +0 -358
  230. package/dist/runtime/url.test.d.ts +0 -3
  231. package/dist/runtime/url.test.js +0 -45
  232. package/dist/semver-dArNLkR9.js +0 -149
  233. package/dist/vocab/schema.yaml +0 -247
  234. package/dist/x/cfworkers.cjs +0 -100
  235. package/dist/x/cfworkers.d.cts +0 -59
  236. package/dist/x/cfworkers.d.ts +0 -61
  237. package/dist/x/cfworkers.js +0 -98
  238. package/dist/x/cfworkers.test.d.ts +0 -3
  239. package/dist/x/cfworkers.test.js +0 -179
  240. package/dist/x/hono.cjs +0 -61
  241. package/dist/x/hono.d.cts +0 -54
  242. package/dist/x/hono.d.ts +0 -56
  243. package/dist/x/hono.js +0 -60
  244. package/dist/x/sveltekit.cjs +0 -69
  245. package/dist/x/sveltekit.d.cts +0 -46
  246. package/dist/x/sveltekit.d.ts +0 -48
  247. package/dist/x/sveltekit.js +0 -68
  248. /package/dist/{assert_not_equals-f3m3epl3.js → assert_not_equals-C80BG-_5.js} +0 -0
  249. /package/dist/{collection-CSzG2j1P.js → collection-BzWsN9pB.js} +0 -0
  250. /package/dist/{nodeinfo/semver.test.d.ts → federation/negotiation.test.d.ts} +0 -0
  251. /package/dist/{federation-H2_En3j5.cjs → federation-CRpdnOMS.cjs} +0 -0
  252. /package/dist/{federation-D1U8YY9t.js → federation-jcR8-ZxP.js} +0 -0
  253. /package/dist/{kv-C7sopW2E.d.ts → kv-BKNZ-Tb-.d.ts} +0 -0
  254. /package/dist/{kv-63Cil1MD.d.cts → kv-Bxr0Q87_.d.cts} +0 -0
  255. /package/dist/{mod-C2tOeRkN.d.cts → mod-B-hUPT2N.d.cts} +0 -0
  256. /package/dist/{mod-1pDWKvUL.d.ts → mod-CVgZgliM.d.ts} +0 -0
  257. /package/dist/{mod-FZd39qVq.d.cts → mod-CcDPcLJW.d.cts} +0 -0
  258. /package/dist/{mod-g0xFzAP9.d.ts → mod-bjzj5QIb.d.ts} +0 -0
  259. /package/dist/{nodeinfo-DfycQ8Wf.js → nodeinfo-BnthBobC.js} +0 -0
  260. /package/dist/{nodeinfo-Co9lJrWl.cjs → nodeinfo-CdN0rEnZ.cjs} +0 -0
  261. /package/dist/{otel-Chy5T2Xh.js → otel-1BmGPuZc.js} +0 -0
  262. /package/dist/{retry-D4GJ670a.js → retry-CfF8Gn4d.js} +0 -0
  263. /package/dist/{runtime-DPYEDf-o.js → sig-C34-oHBl.js} +0 -0
  264. /package/dist/{runtime-C58AJWSv.cjs → sig-YYj5tCnr.cjs} +0 -0
  265. /package/dist/{std__assert-X-_kMxKM.js → std__assert-DWivtrGR.js} +0 -0
  266. /package/dist/{runtime → utils}/docloader.test.d.ts +0 -0
  267. /package/dist/{runtime/authdocloader.test.d.ts → utils/kv-cache.test.d.ts} +0 -0
  268. /package/dist/{sig-Cj3tk-ig.js → utils-D-Va7aXC.js} +0 -0
  269. /package/dist/{sig-ByHXzqUi.cjs → utils-DyRU1gdZ.cjs} +0 -0
  270. /package/dist/{webfinger-De_bU0iE.js → webfinger-C72Y8lrh.js} +0 -0
  271. /package/dist/{webfinger-BjOEdFPs.cjs → webfinger-vAtLmxOF.cjs} +0 -0
@@ -3,21 +3,20 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import { getDefaultActivityTransformers } from "./transformers-BFT6d7J5.js";
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-Bmu3XCd9.js";
7
- import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-BXsV2bEo.js";
8
- import { lookupWebFinger } from "./lookup-BnxmqZLB.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-DUfn16_4.js";
10
- import { doubleKnock, verifyRequest } from "./http-C4Oi5eIq.js";
11
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-OAc97dy3.js";
12
- import { getNodeInfo, nodeInfoToJson } from "./types-C-qRy7Sr.js";
13
- import { getAuthenticatedDocumentLoader } from "./authdocloader-D9EszOkX.js";
14
- import { lookupObject, traverseCollection } from "./vocab-LbNRAL-4.js";
6
+ import { deno_default, lookupWebFinger } from "./lookup-CtC3x1M6.js";
7
+ import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-C-FuEZU4.js";
8
+ import { doubleKnock, exportJwk, importJwk, validateCryptoKey, verifyRequest } from "./http-Q_l4fCEE.js";
9
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-B-qOSAuQ.js";
10
+ import { getNodeInfo, nodeInfoToJson } from "./types-BtUjyi5y.js";
11
+ import { getAuthenticatedDocumentLoader, kvCache } from "./kv-cache-R1oW382l.js";
12
+ import { lookupObject, traverseCollection } from "./vocab-axlR_8k0.js";
15
13
  import { getLogger, withContext } from "@logtape/logtape";
16
14
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
17
- import { encodeHex } from "byte-encodings/hex";
15
+ import { getDocumentLoader } from "@fedify/vocab-runtime";
18
16
  import { cloneDeep } from "es-toolkit";
19
17
  import { Router } from "uri-template-router";
20
18
  import { parseTemplate } from "url-template";
19
+ import { encodeHex } from "byte-encodings/hex";
21
20
  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";
22
21
  import { domainToASCII } from "node:url";
23
22
 
@@ -55,7 +54,6 @@ var InboxListenerSet = class InboxListenerSet {
55
54
  return this.dispatchWithClass(activity)?.listener ?? null;
56
55
  }
57
56
  };
58
- let warnedAboutDefaultIdempotency = false;
59
57
  async function routeActivity({ context: ctx, json, activity, recipient, inboxListeners, inboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
60
58
  const logger$1 = getLogger([
61
59
  "fedify",
@@ -65,11 +63,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
65
63
  let cacheKey = null;
66
64
  if (activity.id != null) {
67
65
  const inboxContext = inboxContextFactory(recipient, json, activity.id?.href, getTypeId(activity).href);
68
- const strategy = idempotencyStrategy ?? "per-origin";
69
- if (idempotencyStrategy === void 0 && !warnedAboutDefaultIdempotency) {
70
- logger$1.warn("Using default idempotency strategy 'per-origin'. This default will change to 'per-inbox' in Fedify 2.0. Please explicitly set the idempotency strategy using .withIdempotency().");
71
- warnedAboutDefaultIdempotency = true;
72
- }
66
+ const strategy = idempotencyStrategy ?? "per-inbox";
73
67
  let keyString;
74
68
  if (typeof strategy === "function") {
75
69
  const result = await strategy(inboxContext, activity);
@@ -344,7 +338,7 @@ var FederationBuilderImpl = class {
344
338
  this.collectionTypeIds = {};
345
339
  }
346
340
  async build(options) {
347
- const { FederationImpl: FederationImpl$1 } = await import("./middleware-BnRluVn4.js");
341
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-mQR2SM7T.js");
348
342
  const f = new FederationImpl$1(options);
349
343
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
350
344
  f.router = this.router.clone();
@@ -1007,9 +1001,6 @@ function preferredMediaTypes(accept) {
1007
1001
  const accepts = parseAccept(accept === void 0 ? "*/*" : accept ?? "");
1008
1002
  return accepts.filter(isQuality).sort(compareSpecs).map(getFullType);
1009
1003
  }
1010
-
1011
- //#endregion
1012
- //#region src/federation/handler.ts
1013
1004
  function acceptsJsonLd(request) {
1014
1005
  const accept = request.headers.get("Accept");
1015
1006
  const types = accept ? preferredMediaTypes(accept) : ["*/*"];
@@ -1017,6 +1008,9 @@ function acceptsJsonLd(request) {
1017
1008
  if (types[0] === "text/html" || types[0] === "application/xhtml+xml") return false;
1018
1009
  return types.includes("application/activity+json") || types.includes("application/ld+json") || types.includes("application/json");
1019
1010
  }
1011
+
1012
+ //#endregion
1013
+ //#region src/federation/handler.ts
1020
1014
  /**
1021
1015
  * Handles an actor request.
1022
1016
  * @template TContextData The context data to pass to the context.
@@ -1024,7 +1018,7 @@ function acceptsJsonLd(request) {
1024
1018
  * @param parameters The parameters for handling the actor.
1025
1019
  * @returns A promise that resolves to an HTTP response.
1026
1020
  */
1027
- async function handleActor(request, { identifier, context: context$1, actorDispatcher, authorizePredicate, onNotFound, onNotAcceptable, onUnauthorized }) {
1021
+ async function handleActor(request, { identifier, context: context$1, actorDispatcher, authorizePredicate, onNotFound, onUnauthorized }) {
1028
1022
  const logger$1 = getLogger([
1029
1023
  "fedify",
1030
1024
  "federation",
@@ -1039,7 +1033,6 @@ async function handleActor(request, { identifier, context: context$1, actorDispa
1039
1033
  logger$1.debug("Actor {identifier} not found.", { identifier });
1040
1034
  return await onNotFound(request);
1041
1035
  }
1042
- if (!acceptsJsonLd(request)) return await onNotAcceptable(request);
1043
1036
  if (authorizePredicate != null) {
1044
1037
  let key = await context$1.getSignedKey();
1045
1038
  key = key?.clone({}, { $warning: {
@@ -1074,11 +1067,10 @@ async function handleActor(request, { identifier, context: context$1, actorDispa
1074
1067
  * @param parameters The parameters for handling the object.
1075
1068
  * @returns A promise that resolves to an HTTP response.
1076
1069
  */
1077
- async function handleObject(request, { values, context: context$1, objectDispatcher, authorizePredicate, onNotFound, onNotAcceptable, onUnauthorized }) {
1070
+ async function handleObject(request, { values, context: context$1, objectDispatcher, authorizePredicate, onNotFound, onUnauthorized }) {
1078
1071
  if (objectDispatcher == null) return await onNotFound(request);
1079
1072
  const object = await objectDispatcher(context$1, values);
1080
1073
  if (object == null) return await onNotFound(request);
1081
- if (!acceptsJsonLd(request)) return await onNotAcceptable(request);
1082
1074
  if (authorizePredicate != null) {
1083
1075
  let key = await context$1.getSignedKey();
1084
1076
  key = key?.clone({}, { $warning: {
@@ -1116,7 +1108,7 @@ async function handleObject(request, { values, context: context$1, objectDispatc
1116
1108
  * @param parameters The parameters for handling the collection.
1117
1109
  * @returns A promise that resolves to an HTTP response.
1118
1110
  */
1119
- async function handleCollection(request, { name, identifier, uriGetter, filter, filterPredicate, context: context$1, collectionCallbacks, tracerProvider, onUnauthorized, onNotFound, onNotAcceptable }) {
1111
+ async function handleCollection(request, { name, identifier, uriGetter, filter, filterPredicate, context: context$1, collectionCallbacks, tracerProvider, onUnauthorized, onNotFound }) {
1120
1112
  const spanName = name.trim().replace(/\s+/g, "_");
1121
1113
  tracerProvider = tracerProvider ?? trace.getTracerProvider();
1122
1114
  const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
@@ -1229,7 +1221,6 @@ async function handleCollection(request, { name, identifier, uriGetter, filter,
1229
1221
  partOf
1230
1222
  });
1231
1223
  }
1232
- if (!acceptsJsonLd(request)) return await onNotAcceptable(request);
1233
1224
  if (collectionCallbacks.authorizePredicate != null) {
1234
1225
  let key = await context$1.getSignedKey();
1235
1226
  key = key?.clone({}, { $warning: {
@@ -1576,7 +1567,6 @@ async function handleInboxInternal(request, parameters, span) {
1576
1567
  const handleCustomCollection = exceptWrapper(_handleCustomCollection);
1577
1568
  async function _handleCustomCollection(request, { name, values, context: context$1, tracerProvider, collectionCallbacks: callbacks, filterPredicate }) {
1578
1569
  verifyDefined(callbacks);
1579
- verifyJsonLdRequest(request);
1580
1570
  await authIfNeeded(context$1, values, callbacks);
1581
1571
  const cursor = new URL(request.url).searchParams.get("cursor");
1582
1572
  return await new CustomCollectionHandler(name, values, context$1, callbacks, tracerProvider, Collection, CollectionPage, filterPredicate).fetchCollection(cursor).toJsonLd().then(respondAsActivity);
@@ -1595,7 +1585,6 @@ async function _handleCustomCollection(request, { name, values, context: context
1595
1585
  const handleOrderedCollection = exceptWrapper(_handleOrderedCollection);
1596
1586
  async function _handleOrderedCollection(request, { name, values, context: context$1, tracerProvider, collectionCallbacks: callbacks, filterPredicate }) {
1597
1587
  verifyDefined(callbacks);
1598
- verifyJsonLdRequest(request);
1599
1588
  await authIfNeeded(context$1, values, callbacks);
1600
1589
  const cursor = new URL(request.url).searchParams.get("cursor");
1601
1590
  return await new CustomCollectionHandler(name, values, context$1, callbacks, tracerProvider, OrderedCollection, OrderedCollectionPage, filterPredicate).fetchCollection(cursor).toJsonLd().then(respondAsActivity);
@@ -1872,10 +1861,9 @@ function exceptWrapper(handler) {
1872
1861
  try {
1873
1862
  return await handler(request, handlerParams);
1874
1863
  } catch (error) {
1875
- const { onNotFound, onNotAcceptable, onUnauthorized } = handlerParams;
1864
+ const { onNotFound, onUnauthorized } = handlerParams;
1876
1865
  switch (error?.constructor) {
1877
1866
  case ItemsNotFoundError: return await onNotFound(request);
1878
- case NotAcceptableError: return await onNotAcceptable(request);
1879
1867
  case UnauthorizedError: return await onUnauthorized(request);
1880
1868
  default: throw error;
1881
1869
  }
@@ -1893,15 +1881,6 @@ const verifyDefined = (callbacks) => {
1893
1881
  if (callbacks === void 0) throw new ItemsNotFoundError();
1894
1882
  };
1895
1883
  /**
1896
- * Verifies that a request accepts JSON-LD content type.
1897
- * @param request The HTTP request to verify.
1898
- * @throws {NotAcceptableError} If the request doesn't accept JSON-LD.
1899
- * @since 1.8.0
1900
- */
1901
- const verifyJsonLdRequest = (request) => {
1902
- if (!acceptsJsonLd(request)) throw new NotAcceptableError();
1903
- };
1904
- /**
1905
1884
  * Performs authorization if needed based on the authorization predicate.
1906
1885
  * @template TContextData The context data type.
1907
1886
  * @param {RequestContext<TContextData>} context The request context.
@@ -1985,15 +1964,6 @@ var ItemsNotFoundError = class extends HandlerError {
1985
1964
  }
1986
1965
  };
1987
1966
  /**
1988
- * Error thrown when the request is not acceptable (e.g., wrong content type).
1989
- * @since 1.8.0
1990
- */
1991
- var NotAcceptableError = class extends HandlerError {
1992
- constructor() {
1993
- super("The request is not acceptable.");
1994
- }
1995
- };
1996
- /**
1997
1967
  * Error thrown when access to a collection is unauthorized.
1998
1968
  * @since 1.8.0
1999
1969
  */
@@ -2390,7 +2360,6 @@ var FederationImpl = class extends FederationBuilderImpl {
2390
2360
  firstKnock;
2391
2361
  constructor(options) {
2392
2362
  super();
2393
- const logger$1 = getLogger(["fedify", "federation"]);
2394
2363
  this.kv = options.kv;
2395
2364
  this.kvPrefixes = {
2396
2365
  activityIdempotence: ["_fedify", "activityIdempotence"],
@@ -2438,17 +2407,13 @@ var FederationImpl = class extends FederationBuilderImpl {
2438
2407
  this.router.trailingSlashInsensitive = options.trailingSlashInsensitive ?? false;
2439
2408
  this._initializeRouter();
2440
2409
  if (options.allowPrivateAddress || options.userAgent != null) {
2441
- if (options.documentLoader != null) throw new TypeError("Cannot set documentLoader with allowPrivateAddress or userAgent options.");
2442
- else if (options.contextLoader != null) throw new TypeError("Cannot set contextLoader with allowPrivateAddress or userAgent options.");
2443
- else if (options.authenticatedDocumentLoaderFactory != null) throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with allowPrivateAddress or userAgent options.");
2410
+ if (options.documentLoaderFactory != null) throw new TypeError("Cannot set documentLoaderFactory with allowPrivateAddress or userAgent options.");
2411
+ if (options.contextLoaderFactory != null) throw new TypeError("Cannot set contextLoaderFactory with allowPrivateAddress or userAgent options.");
2412
+ if (options.authenticatedDocumentLoaderFactory != null) throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with allowPrivateAddress or userAgent options.");
2444
2413
  }
2445
2414
  const { allowPrivateAddress, userAgent } = options;
2446
2415
  this.allowPrivateAddress = allowPrivateAddress ?? false;
2447
- if (options.documentLoader != null) {
2448
- if (options.documentLoaderFactory != null) throw new TypeError("Cannot set both documentLoader and documentLoaderFactory options at a time; use documentLoaderFactory only.");
2449
- this.documentLoaderFactory = () => options.documentLoader;
2450
- logger$1.warn("The documentLoader option is deprecated; use documentLoaderFactory option instead.");
2451
- } else this.documentLoaderFactory = options.documentLoaderFactory ?? ((opts) => {
2416
+ this.documentLoaderFactory = options.documentLoaderFactory ?? ((opts) => {
2452
2417
  return kvCache({
2453
2418
  loader: getDocumentLoader({
2454
2419
  allowPrivateAddress: opts?.allowPrivateAddress ?? allowPrivateAddress,
@@ -2458,11 +2423,7 @@ var FederationImpl = class extends FederationBuilderImpl {
2458
2423
  prefix: this.kvPrefixes.remoteDocument
2459
2424
  });
2460
2425
  });
2461
- if (options.contextLoader != null) {
2462
- if (options.contextLoaderFactory != null) throw new TypeError("Cannot set both contextLoader and contextLoaderFactory options at a time; use contextLoaderFactory only.");
2463
- this.contextLoaderFactory = () => options.contextLoader;
2464
- logger$1.warn("The contextLoader option is deprecated; use contextLoaderFactory option instead.");
2465
- } else this.contextLoaderFactory = options.contextLoaderFactory ?? this.documentLoaderFactory;
2426
+ this.contextLoaderFactory = options.contextLoaderFactory ?? this.documentLoaderFactory;
2466
2427
  this.authenticatedDocumentLoaderFactory = options.authenticatedDocumentLoaderFactory ?? ((identity) => getAuthenticatedDocumentLoader(identity, {
2467
2428
  allowPrivateAddress,
2468
2429
  userAgent,
@@ -3001,6 +2962,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3001
2962
  span,
3002
2963
  tracer
3003
2964
  });
2965
+ if (acceptsJsonLd(request)) response.headers.set("Vary", "Accept");
3004
2966
  } catch (error) {
3005
2967
  span.setStatus({
3006
2968
  code: SpanStatusCode.ERROR,
@@ -3064,6 +3026,9 @@ var FederationImpl = class extends FederationBuilderImpl {
3064
3026
  context: context$1,
3065
3027
  nodeInfoDispatcher: this.nodeInfoDispatcher
3066
3028
  });
3029
+ }
3030
+ if (request.method !== "POST" && !acceptsJsonLd(request)) return await onNotAcceptable(request);
3031
+ switch (routeName) {
3067
3032
  case "actor":
3068
3033
  context$1 = this.#createContext(request, contextData, { invokedFromActorDispatcher: { identifier: route.values.identifier ?? route.values.handle } });
3069
3034
  return await handleActor(request, {
@@ -3072,8 +3037,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3072
3037
  actorDispatcher: this.actorCallbacks?.dispatcher,
3073
3038
  authorizePredicate: this.actorCallbacks?.authorizePredicate,
3074
3039
  onUnauthorized,
3075
- onNotFound,
3076
- onNotAcceptable
3040
+ onNotFound
3077
3041
  });
3078
3042
  case "object": {
3079
3043
  const typeId = route.name.replace(/^object:/, "");
@@ -3089,8 +3053,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3089
3053
  objectDispatcher: callbacks?.dispatcher,
3090
3054
  authorizePredicate: callbacks?.authorizePredicate,
3091
3055
  onUnauthorized,
3092
- onNotFound,
3093
- onNotAcceptable
3056
+ onNotFound
3094
3057
  });
3095
3058
  }
3096
3059
  case "outbox": return await handleCollection(request, {
@@ -3101,8 +3064,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3101
3064
  collectionCallbacks: this.outboxCallbacks,
3102
3065
  tracerProvider: this.tracerProvider,
3103
3066
  onUnauthorized,
3104
- onNotFound,
3105
- onNotAcceptable
3067
+ onNotFound
3106
3068
  });
3107
3069
  case "inbox":
3108
3070
  if (request.method !== "POST") return await handleCollection(request, {
@@ -3113,8 +3075,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3113
3075
  collectionCallbacks: this.inboxCallbacks,
3114
3076
  tracerProvider: this.tracerProvider,
3115
3077
  onUnauthorized,
3116
- onNotFound,
3117
- onNotAcceptable
3078
+ onNotFound
3118
3079
  });
3119
3080
  context$1 = this.#createContext(request, contextData, { documentLoader: await context$1.getDocumentLoader({ identifier: route.values.identifier ?? route.values.handle }) });
3120
3081
  case "sharedInbox":
@@ -3147,8 +3108,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3147
3108
  collectionCallbacks: this.followingCallbacks,
3148
3109
  tracerProvider: this.tracerProvider,
3149
3110
  onUnauthorized,
3150
- onNotFound,
3151
- onNotAcceptable
3111
+ onNotFound
3152
3112
  });
3153
3113
  case "followers": {
3154
3114
  let baseUrl = url.searchParams.get("base-url");
@@ -3171,8 +3131,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3171
3131
  collectionCallbacks: this.followersCallbacks,
3172
3132
  tracerProvider: this.tracerProvider,
3173
3133
  onUnauthorized,
3174
- onNotFound,
3175
- onNotAcceptable
3134
+ onNotFound
3176
3135
  });
3177
3136
  }
3178
3137
  case "liked": return await handleCollection(request, {
@@ -3183,8 +3142,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3183
3142
  collectionCallbacks: this.likedCallbacks,
3184
3143
  tracerProvider: this.tracerProvider,
3185
3144
  onUnauthorized,
3186
- onNotFound,
3187
- onNotAcceptable
3145
+ onNotFound
3188
3146
  });
3189
3147
  case "featured": return await handleCollection(request, {
3190
3148
  name: "featured",
@@ -3194,8 +3152,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3194
3152
  collectionCallbacks: this.featuredCallbacks,
3195
3153
  tracerProvider: this.tracerProvider,
3196
3154
  onUnauthorized,
3197
- onNotFound,
3198
- onNotAcceptable
3155
+ onNotFound
3199
3156
  });
3200
3157
  case "featuredTags": return await handleCollection(request, {
3201
3158
  name: "featured tags",
@@ -3205,8 +3162,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3205
3162
  collectionCallbacks: this.featuredTagsCallbacks,
3206
3163
  tracerProvider: this.tracerProvider,
3207
3164
  onUnauthorized,
3208
- onNotFound,
3209
- onNotAcceptable
3165
+ onNotFound
3210
3166
  });
3211
3167
  case "collection": {
3212
3168
  const name = route.name.replace(/^collection:/, "");
@@ -3218,8 +3174,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3218
3174
  collectionCallbacks: callbacks,
3219
3175
  tracerProvider: this.tracerProvider,
3220
3176
  onUnauthorized,
3221
- onNotFound,
3222
- onNotAcceptable
3177
+ onNotFound
3223
3178
  });
3224
3179
  }
3225
3180
  case "orderedCollection": {
@@ -3232,8 +3187,7 @@ var FederationImpl = class extends FederationBuilderImpl {
3232
3187
  collectionCallbacks: callbacks,
3233
3188
  tracerProvider: this.tracerProvider,
3234
3189
  onUnauthorized,
3235
- onNotFound,
3236
- onNotAcceptable
3190
+ onNotFound
3237
3191
  });
3238
3192
  }
3239
3193
  default: {