@fedify/fedify 2.0.0-dev.1566 → 2.0.0-dev.159

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 (297) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +66 -30
  3. package/dist/{assert_rejects-DiIiJbZn.js → assert_rejects-Ce45JcFg.js} +1 -1
  4. package/dist/{assert_is_error-BPGph1Jx.js → assert_throws-BNXdRGWP.js} +31 -1
  5. package/dist/{builder-B2I70zuM.js → builder-oZcZfn1d.js} +15 -8
  6. package/dist/chunk-DqRYRqnO.cjs +34 -0
  7. package/dist/client-94iWEfQa.d.cts +222 -0
  8. package/dist/{client-DF8anIB5.d.ts → client-BivSNrEg.d.ts} +3 -75
  9. package/dist/{client-BVDUd3WA.js → client-CgMTXmAD.js} +3 -22
  10. package/dist/compat/mod.cjs +10 -0
  11. package/dist/compat/mod.d.cts +7 -0
  12. package/dist/compat/mod.d.ts +6 -12
  13. package/dist/compat/mod.js +5 -5
  14. package/dist/compat/transformers.test.js +21 -20
  15. package/dist/compat-DmDDELst.cjs +4 -0
  16. package/dist/compat-nxUqe4Z-.js +4 -0
  17. package/dist/context-Bns6uTJq.js +109 -0
  18. package/dist/{context-9gCpIkiz.d.ts → context-CYZ2i00R.d.ts} +321 -129
  19. package/dist/context-D2MrtLch.d.cts +2447 -0
  20. package/dist/deno-CGe3r5lB.js +117 -0
  21. package/dist/{testing-CWE5Nn0S.js → dist-B5f6a8Tt.js} +90 -111
  22. package/dist/{authdocloader-BilVqAPe.js → docloader-Bh4ZzxTs.js} +17 -8
  23. package/dist/{esm-eH43VACi.js → esm-DGl7uK1r.js} +32 -17
  24. package/dist/federation/builder.test.js +12 -13
  25. package/dist/federation/collection.test.js +6 -9
  26. package/dist/federation/handler.test.js +115 -148
  27. package/dist/federation/idempotency.test.js +202 -0
  28. package/dist/federation/inbox.test.js +5 -6
  29. package/dist/federation/keycache.test.js +4 -5
  30. package/dist/federation/kv.test.js +61 -9
  31. package/dist/federation/middleware.test.js +311 -131
  32. package/dist/federation/mod.cjs +25 -0
  33. package/dist/federation/mod.d.cts +7 -0
  34. package/dist/federation/mod.d.ts +7 -13
  35. package/dist/federation/mod.js +11 -16
  36. package/dist/federation/mq.test.js +9 -10
  37. package/dist/federation/negotiation.test.js +25 -0
  38. package/dist/federation/retry.test.js +2 -4
  39. package/dist/federation/router.test.js +6 -8
  40. package/dist/federation/send.test.js +55 -15
  41. package/dist/{webfinger/handler.test.js → federation/webfinger.test.js} +27 -26
  42. package/dist/federation-B431K2gm.cjs +266 -0
  43. package/dist/{federation-CMX7WzeL.js → federation-BbZwNNWj.js} +31 -9
  44. package/dist/http-AW19epBO.cjs +1222 -0
  45. package/dist/{http-BE2S7wC2.js → http-CN7c23sh.js} +4 -3
  46. package/dist/{http-Cdjyj7h1.js → http-CZ24XIWJ.js} +375 -15
  47. package/dist/http-ClB3pLcL.d.cts +253 -0
  48. package/dist/{http-DqSNLFNY.d.ts → http-DLBDPal9.d.ts} +2 -2
  49. package/dist/{inbox-CtcEN1S1.js → inbox-DLgz90Tj.js} +25 -7
  50. package/dist/{key-q4xxkABj.js → key-fb8Ovh-p.js} +3 -2
  51. package/dist/{keycache-CtCHz6HR.js → keycache-DRxpZ5r9.js} +1 -1
  52. package/dist/{keys-BiuLoxwK.js → keys-ZbcByPg9.js} +2 -1
  53. package/dist/{kv-C7sopW2E.d.ts → kv-CtOmTRNc.d.ts} +30 -1
  54. package/dist/kv-D8q9fLkA.d.cts +110 -0
  55. package/dist/{kv-CRZrzyXm.js → kv-QzKcOQgP.js} +22 -0
  56. package/dist/kv-cache-8rnKI8DT.cjs +134 -0
  57. package/dist/kv-cache-BEeqyGER.js +107 -0
  58. package/dist/kv-cache-DGCF5il_.js +122 -0
  59. package/dist/{ld-PkXepnwg.js → ld-9If_eMWm.js} +6 -4
  60. package/dist/{middleware-BQHcEUgM.js → middleware-BpTxdimj.js} +230 -327
  61. package/dist/middleware-DR-CCeAc.cjs +12 -0
  62. package/dist/{middleware-HDts7zkt.js → middleware-DdBvEeAn.js} +272 -271
  63. package/dist/middleware-DrwTlwzK.js +12 -0
  64. package/dist/middleware-psDtCgD-.cjs +4242 -0
  65. package/dist/middleware-vXfeY_vA.js +26 -0
  66. package/dist/mod-BrS8tiad.d.cts +266 -0
  67. package/dist/mod-C81L6_lQ.d.cts +1 -0
  68. package/dist/mod-CJgbdSqb.d.ts +109 -0
  69. package/dist/mod-CNNTHyBC.d.cts +80 -0
  70. package/dist/mod-CS-MS7gZ.d.cts +62 -0
  71. package/dist/{mod-Bqxcp7eN.d.ts → mod-D_cmv2il.d.ts} +4 -4
  72. package/dist/mod-DcPRcifg.d.cts +107 -0
  73. package/dist/mod-DqFSzJA0.d.ts +64 -0
  74. package/dist/{mod-Drmz72EK.d.ts → mod-jOa7W503.d.ts} +3 -3
  75. package/dist/mod.cjs +55 -0
  76. package/dist/mod.d.cts +11 -0
  77. package/dist/mod.d.ts +11 -17
  78. package/dist/mod.js +15 -21
  79. package/dist/negotiation-5NPJL6zp.js +71 -0
  80. package/dist/nodeinfo/client.test.js +29 -111
  81. package/dist/nodeinfo/handler.test.js +26 -26
  82. package/dist/nodeinfo/mod.cjs +10 -0
  83. package/dist/nodeinfo/mod.d.cts +3 -0
  84. package/dist/nodeinfo/mod.d.ts +3 -5
  85. package/dist/nodeinfo/mod.js +6 -7
  86. package/dist/nodeinfo/types.test.js +7 -15
  87. package/dist/nodeinfo-BlLsRSiT.js +4 -0
  88. package/dist/nodeinfo-DuMYTpbZ.cjs +4 -0
  89. package/dist/otel/exporter.test.js +899 -0
  90. package/dist/otel/mod.cjs +262 -0
  91. package/dist/otel/mod.d.cts +230 -0
  92. package/dist/otel/mod.d.ts +232 -0
  93. package/dist/otel/mod.js +261 -0
  94. package/dist/{owner-CQPnQVtf.d.ts → owner-BgI8C-VY.d.ts} +2 -3
  95. package/dist/owner-C-zfmVAD.d.cts +66 -0
  96. package/dist/{owner-DZ5zP8JS.js → owner-CCSlDz_P.js} +45 -8
  97. package/dist/{proof-D8S7qgEZ.js → proof-1s5PweRC.js} +53 -17
  98. package/dist/proof-DCmRymP1.cjs +709 -0
  99. package/dist/{proof-ohtusUSV.js → proof-WPbBCoJ-.js} +4 -3
  100. package/dist/router-D9eI0s4b.js +118 -0
  101. package/dist/{send-BBi1tzS8.js → send-DBgPrFik.js} +9 -4
  102. package/dist/sig/http.test.js +12 -14
  103. package/dist/sig/key.test.js +9 -11
  104. package/dist/sig/ld.test.js +8 -10
  105. package/dist/sig/mod.cjs +26 -0
  106. package/dist/sig/mod.d.cts +4 -0
  107. package/dist/sig/mod.d.ts +3 -7
  108. package/dist/sig/mod.js +6 -10
  109. package/dist/sig/owner.test.js +33 -12
  110. package/dist/sig/proof.test.js +13 -14
  111. package/dist/sig-CwuONEzF.js +4 -0
  112. package/dist/sig-DeXX2xnj.cjs +4 -0
  113. package/dist/testing/mod.d.ts +180 -6946
  114. package/dist/testing/mod.js +4 -4
  115. package/dist/transformers-BjBg6Lag.cjs +116 -0
  116. package/dist/{transformers-Dna8Fg7k.js → transformers-N_ip_y4P.js} +5 -5
  117. package/dist/{types-BIgY6c-l.js → types-BEdCLHqP.js} +1 -3
  118. package/dist/types-Q-qkJXBV.cjs +315 -0
  119. package/dist/{types-CTYFFnQp.js → types-hKTi53FO.js} +8 -169
  120. package/dist/{runtime/authdocloader.test.js → utils/docloader.test.js} +13 -15
  121. package/dist/utils/kv-cache.test.js +211 -0
  122. package/dist/utils/mod.cjs +10 -0
  123. package/dist/utils/mod.d.cts +4 -0
  124. package/dist/utils/mod.d.ts +6 -0
  125. package/dist/utils/mod.js +9 -0
  126. package/dist/utils-Db0ZmjcD.cjs +4 -0
  127. package/dist/utils-Wranxuoe.js +4 -0
  128. package/package.json +69 -55
  129. package/dist/actor-BKxX_F1w.js +0 -37311
  130. package/dist/actor-C22bXuuC.d.ts +0 -130
  131. package/dist/actor-DI_YpFlI.js +0 -146
  132. package/dist/assert_throws-BOO88avQ.js +0 -39
  133. package/dist/authdocloader-UdvnssIx.js +0 -52
  134. package/dist/compat-Bb5myD13.js +0 -4
  135. package/dist/denokv-Bv33Xxea.js +0 -57
  136. package/dist/docloader-4XS4XdXc.js +0 -4615
  137. package/dist/docloader-CxWcuWqQ.d.ts +0 -221
  138. package/dist/fixtures/activitypub.academy/users/brauca_darradiul.json +0 -83
  139. package/dist/fixtures/example.com/announce.json +0 -6
  140. package/dist/fixtures/example.com/collection.json +0 -19
  141. package/dist/fixtures/example.com/create.json +0 -6
  142. package/dist/fixtures/example.com/cross-origin-actor.json +0 -6
  143. package/dist/fixtures/example.com/hong-gildong.json +0 -11
  144. package/dist/fixtures/example.com/invite.json +0 -7
  145. package/dist/fixtures/example.com/key.json +0 -7
  146. package/dist/fixtures/example.com/key2.json +0 -6
  147. package/dist/fixtures/example.com/object.json +0 -6
  148. package/dist/fixtures/example.com/orderedcollectionpage.json +0 -24
  149. package/dist/fixtures/example.com/paged/a.json +0 -13
  150. package/dist/fixtures/example.com/paged/b.json +0 -16
  151. package/dist/fixtures/example.com/paged-collection.json +0 -6
  152. package/dist/fixtures/example.com/person.json +0 -22
  153. package/dist/fixtures/example.com/person2.json +0 -40
  154. package/dist/fixtures/example.com/test.json +0 -5
  155. package/dist/fixtures/example.com/users/handle.json +0 -16
  156. package/dist/fixtures/example.com/wrong-type.json +0 -3
  157. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +0 -24
  158. package/dist/fixtures/remote.domain/users/bob.json +0 -20
  159. package/dist/fixtures/server.example/users/alice.json +0 -20
  160. package/dist/fixtures/w3id.org/identity/v1.json +0 -152
  161. package/dist/fixtures/w3id.org/security/data-integrity/v1.json +0 -74
  162. package/dist/fixtures/w3id.org/security/multikey/v1.json +0 -35
  163. package/dist/fixtures/w3id.org/security/v1.json +0 -50
  164. package/dist/fixtures/wizard.casa/users/hongminhee.json +0 -69
  165. package/dist/fixtures/www.w3.org/ns/activitystreams.json +0 -379
  166. package/dist/fixtures/www.w3.org/ns/did/v1.json +0 -58
  167. package/dist/key-C2_QSigr.js +0 -260
  168. package/dist/key-Ck2-lYS5.js +0 -10
  169. package/dist/key-II1NsE_S.js +0 -10
  170. package/dist/lookup-DCIN2EFw.js +0 -322
  171. package/dist/lookup-DVlWgAsd.js +0 -131
  172. package/dist/middleware-CTQfgVW8.js +0 -17
  173. package/dist/middleware-D3rOl6Au.js +0 -26
  174. package/dist/mod-Cxt4Kpf6.d.ts +0 -291
  175. package/dist/mod-DBzN0aCM.d.ts +0 -115
  176. package/dist/mod-TFoH2Ql8.d.ts +0 -104
  177. package/dist/mod-g0xFzAP9.d.ts +0 -2
  178. package/dist/mq-CRGm1e_F.d.ts +0 -143
  179. package/dist/nodeinfo/semver.test.js +0 -143
  180. package/dist/nodeinfo-CyEbLjHs.js +0 -4
  181. package/dist/runtime/docloader.test.js +0 -522
  182. package/dist/runtime/key.test.js +0 -103
  183. package/dist/runtime/langstr.test.js +0 -39
  184. package/dist/runtime/mod.d.ts +0 -8
  185. package/dist/runtime/mod.js +0 -13
  186. package/dist/runtime/multibase/multibase.test.d.ts +0 -3
  187. package/dist/runtime/multibase/multibase.test.js +0 -358
  188. package/dist/runtime/url.test.d.ts +0 -3
  189. package/dist/runtime/url.test.js +0 -45
  190. package/dist/runtime-BSkOVUWM.js +0 -4
  191. package/dist/semver-dArNLkR9.js +0 -149
  192. package/dist/sig-BXJO--F9.js +0 -4
  193. package/dist/src/vocab/accept.yaml +0 -15
  194. package/dist/src/vocab/activity.yaml +0 -98
  195. package/dist/src/vocab/add.yaml +0 -16
  196. package/dist/src/vocab/announce.yaml +0 -30
  197. package/dist/src/vocab/application.yaml +0 -324
  198. package/dist/src/vocab/arrive.yaml +0 -15
  199. package/dist/src/vocab/article.yaml +0 -46
  200. package/dist/src/vocab/audio.yaml +0 -11
  201. package/dist/src/vocab/block.yaml +0 -16
  202. package/dist/src/vocab/chatmessage.yaml +0 -50
  203. package/dist/src/vocab/collection.yaml +0 -154
  204. package/dist/src/vocab/collectionpage.yaml +0 -55
  205. package/dist/src/vocab/create.yaml +0 -28
  206. package/dist/src/vocab/dataintegrityproof.yaml +0 -56
  207. package/dist/src/vocab/delete.yaml +0 -27
  208. package/dist/src/vocab/didservice.yaml +0 -22
  209. package/dist/src/vocab/dislike.yaml +0 -14
  210. package/dist/src/vocab/document.yaml +0 -31
  211. package/dist/src/vocab/emoji.yaml +0 -12
  212. package/dist/src/vocab/emojireact.yaml +0 -17
  213. package/dist/src/vocab/endpoints.yaml +0 -85
  214. package/dist/src/vocab/event.yaml +0 -11
  215. package/dist/src/vocab/export.yaml +0 -9
  216. package/dist/src/vocab/flag.yaml +0 -15
  217. package/dist/src/vocab/follow.yaml +0 -19
  218. package/dist/src/vocab/group.yaml +0 -324
  219. package/dist/src/vocab/hashtag.yaml +0 -14
  220. package/dist/src/vocab/ignore.yaml +0 -14
  221. package/dist/src/vocab/image.yaml +0 -9
  222. package/dist/src/vocab/intransitiveactivity.yaml +0 -15
  223. package/dist/src/vocab/invite.yaml +0 -14
  224. package/dist/src/vocab/join.yaml +0 -14
  225. package/dist/src/vocab/key.yaml +0 -28
  226. package/dist/src/vocab/leave.yaml +0 -14
  227. package/dist/src/vocab/like.yaml +0 -16
  228. package/dist/src/vocab/link.yaml +0 -101
  229. package/dist/src/vocab/listen.yaml +0 -12
  230. package/dist/src/vocab/mention.yaml +0 -9
  231. package/dist/src/vocab/move.yaml +0 -15
  232. package/dist/src/vocab/multikey.yaml +0 -36
  233. package/dist/src/vocab/note.yaml +0 -48
  234. package/dist/src/vocab/object.yaml +0 -404
  235. package/dist/src/vocab/offer.yaml +0 -15
  236. package/dist/src/vocab/orderedcollection.yaml +0 -39
  237. package/dist/src/vocab/orderedcollectionpage.yaml +0 -50
  238. package/dist/src/vocab/organization.yaml +0 -324
  239. package/dist/src/vocab/page.yaml +0 -11
  240. package/dist/src/vocab/person.yaml +0 -324
  241. package/dist/src/vocab/place.yaml +0 -75
  242. package/dist/src/vocab/profile.yaml +0 -26
  243. package/dist/src/vocab/propertyvalue.yaml +0 -32
  244. package/dist/src/vocab/question.yaml +0 -103
  245. package/dist/src/vocab/read.yaml +0 -13
  246. package/dist/src/vocab/reject.yaml +0 -14
  247. package/dist/src/vocab/relationship.yaml +0 -52
  248. package/dist/src/vocab/remove.yaml +0 -14
  249. package/dist/src/vocab/service.yaml +0 -324
  250. package/dist/src/vocab/source.yaml +0 -26
  251. package/dist/src/vocab/tentativeaccept.yaml +0 -14
  252. package/dist/src/vocab/tentativereject.yaml +0 -14
  253. package/dist/src/vocab/tombstone.yaml +0 -24
  254. package/dist/src/vocab/travel.yaml +0 -16
  255. package/dist/src/vocab/undo.yaml +0 -26
  256. package/dist/src/vocab/update.yaml +0 -58
  257. package/dist/src/vocab/video.yaml +0 -11
  258. package/dist/src/vocab/view.yaml +0 -13
  259. package/dist/testing/docloader.test.js +0 -24
  260. package/dist/type-B7_rMIU9.js +0 -42006
  261. package/dist/vocab/actor.test.d.ts +0 -3
  262. package/dist/vocab/actor.test.js +0 -5965
  263. package/dist/vocab/lookup.test.d.ts +0 -3
  264. package/dist/vocab/lookup.test.js +0 -206
  265. package/dist/vocab/mod.d.ts +0 -8
  266. package/dist/vocab/mod.js +0 -10
  267. package/dist/vocab/schema.yaml +0 -247
  268. package/dist/vocab/type.test.d.ts +0 -3
  269. package/dist/vocab/type.test.js +0 -25
  270. package/dist/vocab/vocab.test.d.ts +0 -3
  271. package/dist/vocab/vocab.test.js +0 -3363
  272. package/dist/vocab-3Eie7Ze4.js +0 -246
  273. package/dist/vocab-SOE1ifCr.d.ts +0 -14634
  274. package/dist/webfinger/handler.test.d.ts +0 -3
  275. package/dist/webfinger/lookup.test.d.ts +0 -3
  276. package/dist/webfinger/lookup.test.js +0 -195
  277. package/dist/webfinger/mod.d.ts +0 -6
  278. package/dist/webfinger/mod.js +0 -9
  279. package/dist/webfinger-C3GIyXIg.js +0 -4
  280. package/dist/x/cfworkers.d.ts +0 -61
  281. package/dist/x/cfworkers.js +0 -98
  282. package/dist/x/cfworkers.test.d.ts +0 -3
  283. package/dist/x/cfworkers.test.js +0 -179
  284. package/dist/x/hono.d.ts +0 -56
  285. package/dist/x/hono.js +0 -60
  286. package/dist/x/sveltekit.d.ts +0 -48
  287. package/dist/x/sveltekit.js +0 -68
  288. /package/dist/{assert_not_equals-f3m3epl3.js → assert_not_equals-C80BG-_5.js} +0 -0
  289. /package/dist/{collection-CSzG2j1P.js → collection-CcnIw1qY.js} +0 -0
  290. /package/dist/{nodeinfo/semver.test.d.ts → federation/idempotency.test.d.ts} +0 -0
  291. /package/dist/{runtime/authdocloader.test.d.ts → federation/negotiation.test.d.ts} +0 -0
  292. /package/dist/{runtime/docloader.test.d.ts → federation/webfinger.test.d.ts} +0 -0
  293. /package/dist/{mod-1pDWKvUL.d.ts → mod-1E3W847c.d.ts} +0 -0
  294. /package/dist/{runtime/key.test.d.ts → otel/exporter.test.d.ts} +0 -0
  295. /package/dist/{std__assert-X-_kMxKM.js → std__assert-DWivtrGR.js} +0 -0
  296. /package/dist/{testing → utils}/docloader.test.d.ts +0 -0
  297. /package/dist/{runtime/langstr.test.d.ts → utils/kv-cache.test.d.ts} +0 -0
@@ -3,25 +3,23 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { UrlError } from "../type-B7_rMIU9.js";
6
+ import { mockDocumentLoader, test } from "../dist-B5f6a8Tt.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
- import "../lookup-DCIN2EFw.js";
11
- import "../actor-DI_YpFlI.js";
12
- import "../key-q4xxkABj.js";
13
- import { verifyRequest } from "../http-BE2S7wC2.js";
14
- import { getAuthenticatedDocumentLoader } from "../authdocloader-BilVqAPe.js";
15
- import { mockDocumentLoader, test } from "../testing-CWE5Nn0S.js";
16
- import "../std__assert-X-_kMxKM.js";
17
- import { assertRejects } from "../assert_rejects-DiIiJbZn.js";
18
- import "../assert_is_error-BPGph1Jx.js";
19
- import "../assert_not_equals-f3m3epl3.js";
20
- import "../assert_throws-BOO88avQ.js";
21
- import { rsaPrivateKey2 } from "../keys-BiuLoxwK.js";
22
- import { esm_default } from "../esm-eH43VACi.js";
10
+ import "../deno-CGe3r5lB.js";
11
+ import "../key-fb8Ovh-p.js";
12
+ import { verifyRequest } from "../http-CN7c23sh.js";
13
+ import { getAuthenticatedDocumentLoader } from "../docloader-Bh4ZzxTs.js";
14
+ import "../std__assert-DWivtrGR.js";
15
+ import { assertRejects } from "../assert_rejects-Ce45JcFg.js";
16
+ import "../assert_throws-BNXdRGWP.js";
17
+ import "../assert_not_equals-C80BG-_5.js";
18
+ import { rsaPrivateKey2 } from "../keys-ZbcByPg9.js";
19
+ import { esm_default } from "../esm-DGl7uK1r.js";
20
+ import { UrlError } from "@fedify/vocab-runtime";
23
21
 
24
- //#region src/runtime/authdocloader.test.ts
22
+ //#region src/utils/docloader.test.ts
25
23
  test("getAuthenticatedDocumentLoader()", async (t) => {
26
24
  esm_default.spyGlobal();
27
25
  esm_default.get("begin:https://example.com/object", async (cl) => {
@@ -0,0 +1,211 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+ globalThis.addEventListener = () => {};
5
+
6
+ import { mockDocumentLoader, test } from "../dist-B5f6a8Tt.js";
7
+ import { MockKvStore, kvCache } from "../kv-cache-BEeqyGER.js";
8
+ import { preloadedContexts } from "@fedify/vocab-runtime";
9
+ import { deepStrictEqual, throws } from "node:assert";
10
+
11
+ //#region src/utils/kv-cache.test.ts
12
+ test("kvCache()", async (t) => {
13
+ const kv = new MockKvStore();
14
+ await t.step("cached", async () => {
15
+ const loader = kvCache({
16
+ kv,
17
+ loader: mockDocumentLoader,
18
+ rules: [
19
+ ["https://example.org/", Temporal.Duration.from({ days: 1 })],
20
+ [new URL("https://example.net/"), Temporal.Duration.from({ days: 1 })],
21
+ [new URLPattern("https://example.com/*"), Temporal.Duration.from({ days: 30 })]
22
+ ],
23
+ prefix: ["_test", "cached"]
24
+ });
25
+ const result = await loader("https://example.com/object");
26
+ deepStrictEqual(result, {
27
+ contextUrl: null,
28
+ documentUrl: "https://example.com/object",
29
+ document: {
30
+ "@context": "https://www.w3.org/ns/activitystreams",
31
+ id: "https://example.com/object",
32
+ name: "Fetched object",
33
+ type: "Object"
34
+ }
35
+ });
36
+ const cache = await kv.get([
37
+ "_test",
38
+ "cached",
39
+ "https://example.com/object"
40
+ ]);
41
+ deepStrictEqual(cache, result);
42
+ await kv.set([
43
+ "_test",
44
+ "cached",
45
+ "https://example.org/"
46
+ ], {
47
+ contextUrl: null,
48
+ documentUrl: "https://example.org/",
49
+ document: { "id": "https://example.org/" }
50
+ });
51
+ const result2 = await loader("https://example.org/");
52
+ deepStrictEqual(result2, {
53
+ contextUrl: null,
54
+ documentUrl: "https://example.org/",
55
+ document: { "id": "https://example.org/" }
56
+ });
57
+ await kv.set([
58
+ "_test",
59
+ "cached",
60
+ "https://example.net/"
61
+ ], {
62
+ contextUrl: null,
63
+ documentUrl: "https://example.net/",
64
+ document: { "id": "https://example.net/" }
65
+ });
66
+ const result3 = await loader("https://example.net/");
67
+ deepStrictEqual(result3, {
68
+ contextUrl: null,
69
+ documentUrl: "https://example.net/",
70
+ document: { "id": "https://example.net/" }
71
+ });
72
+ });
73
+ await t.step("not cached", async () => {
74
+ const loader = kvCache({
75
+ kv,
76
+ loader: mockDocumentLoader,
77
+ rules: [],
78
+ prefix: ["_test", "not cached"]
79
+ });
80
+ const result = await loader("https://example.com/object");
81
+ deepStrictEqual(result, {
82
+ contextUrl: null,
83
+ documentUrl: "https://example.com/object",
84
+ document: {
85
+ "@context": "https://www.w3.org/ns/activitystreams",
86
+ id: "https://example.com/object",
87
+ name: "Fetched object",
88
+ type: "Object"
89
+ }
90
+ });
91
+ const cache = await kv.get([
92
+ "test2",
93
+ "not cached",
94
+ "https://example.com/object"
95
+ ]);
96
+ deepStrictEqual(cache, void 0);
97
+ });
98
+ await t.step("maximum cache duration", () => {
99
+ throws(() => kvCache({
100
+ kv,
101
+ loader: mockDocumentLoader,
102
+ rules: [["https://example.com/", Temporal.Duration.from({
103
+ days: 30,
104
+ seconds: 1
105
+ })]]
106
+ }), TypeError, "The maximum cache duration is 30 days");
107
+ throws(() => kvCache({
108
+ kv,
109
+ loader: mockDocumentLoader,
110
+ rules: [[new URLPattern("https://example.com/*"), Temporal.Duration.from({
111
+ days: 30,
112
+ seconds: 1
113
+ })]]
114
+ }), TypeError, "The maximum cache duration is 30 days");
115
+ });
116
+ await t.step("on kv store exception", async () => {
117
+ class KvStoreThrowsException {
118
+ get(_key) {
119
+ throw new Error("Failed to get key");
120
+ }
121
+ set(_key, _value, _options) {
122
+ throw new Error("Failed to set key");
123
+ }
124
+ delete(_key) {
125
+ throw new Error("Failed to delete key");
126
+ }
127
+ async *list(_prefix) {
128
+ throw new Error("Failed to list keys");
129
+ }
130
+ }
131
+ const loader = kvCache({
132
+ kv: new KvStoreThrowsException(),
133
+ loader: mockDocumentLoader,
134
+ rules: [
135
+ ["https://example.org/", Temporal.Duration.from({ days: 1 })],
136
+ [new URL("https://example.net/"), Temporal.Duration.from({ days: 1 })],
137
+ [new URLPattern("https://example.com/*"), Temporal.Duration.from({ days: 30 })]
138
+ ],
139
+ prefix: ["_test", "not cached"]
140
+ });
141
+ const result = await loader("https://example.com/object");
142
+ deepStrictEqual(result, {
143
+ contextUrl: null,
144
+ documentUrl: "https://example.com/object",
145
+ document: {
146
+ "@context": "https://www.w3.org/ns/activitystreams",
147
+ id: "https://example.com/object",
148
+ name: "Fetched object",
149
+ type: "Object"
150
+ }
151
+ });
152
+ });
153
+ await t.step("preloaded contexts bypass cache", async () => {
154
+ const kv$1 = new MockKvStore();
155
+ let loaderCalled = false;
156
+ const mockLoader = (url) => {
157
+ loaderCalled = true;
158
+ return Promise.resolve({
159
+ contextUrl: null,
160
+ documentUrl: url,
161
+ document: { "mock": "document" }
162
+ });
163
+ };
164
+ const loader = kvCache({
165
+ kv: kv$1,
166
+ loader: mockLoader,
167
+ prefix: ["_test", "preloaded"]
168
+ });
169
+ const activityStreamsUrl = "https://www.w3.org/ns/activitystreams";
170
+ loaderCalled = false;
171
+ const result = await loader(activityStreamsUrl);
172
+ deepStrictEqual(result, {
173
+ contextUrl: null,
174
+ documentUrl: activityStreamsUrl,
175
+ document: preloadedContexts[activityStreamsUrl]
176
+ });
177
+ deepStrictEqual(loaderCalled, false, "Loader should not be called for preloaded contexts");
178
+ const cachedValue = await kv$1.get([
179
+ "_test",
180
+ "preloaded",
181
+ activityStreamsUrl
182
+ ]);
183
+ deepStrictEqual(cachedValue, void 0, "Preloaded contexts should not be cached in KV store");
184
+ const securityUrl = "https://w3id.org/security/v1";
185
+ loaderCalled = false;
186
+ const result2 = await loader(securityUrl);
187
+ deepStrictEqual(result2, {
188
+ contextUrl: null,
189
+ documentUrl: securityUrl,
190
+ document: preloadedContexts[securityUrl]
191
+ });
192
+ deepStrictEqual(loaderCalled, false, "Loader should not be called for preloaded contexts");
193
+ const nonPreloadedUrl = "https://example.com/not-preloaded";
194
+ loaderCalled = false;
195
+ const result3 = await loader(nonPreloadedUrl);
196
+ deepStrictEqual(result3, {
197
+ contextUrl: null,
198
+ documentUrl: nonPreloadedUrl,
199
+ document: { "mock": "document" }
200
+ });
201
+ deepStrictEqual(loaderCalled, true, "Loader should be called for non-preloaded URLs");
202
+ const cachedValue2 = await kv$1.get([
203
+ "_test",
204
+ "preloaded",
205
+ nonPreloadedUrl
206
+ ]);
207
+ deepStrictEqual(cachedValue2, result3, "Non-preloaded URLs should be cached");
208
+ });
209
+ });
210
+
211
+ //#endregion
@@ -0,0 +1,10 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('../http-AW19epBO.cjs');
6
+ const require_kv_cache = require('../kv-cache-8rnKI8DT.cjs');
7
+ require('../utils-Db0ZmjcD.cjs');
8
+
9
+ exports.getAuthenticatedDocumentLoader = require_kv_cache.getAuthenticatedDocumentLoader;
10
+ exports.kvCache = require_kv_cache.kvCache;
@@ -0,0 +1,4 @@
1
+ import "../http-ClB3pLcL.cjs";
2
+ import "../kv-D8q9fLkA.cjs";
3
+ import { getAuthenticatedDocumentLoader, kvCache } from "../mod-DcPRcifg.cjs";
4
+ export { getAuthenticatedDocumentLoader, kvCache };
@@ -0,0 +1,6 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { URLPattern } from "urlpattern-polyfill";
3
+ import "../http-DLBDPal9.js";
4
+ import "../kv-CtOmTRNc.js";
5
+ import { getAuthenticatedDocumentLoader, kvCache } from "../mod-CJgbdSqb.js";
6
+ export { getAuthenticatedDocumentLoader, kvCache };
@@ -0,0 +1,9 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
5
+ import "../http-CZ24XIWJ.js";
6
+ import { getAuthenticatedDocumentLoader, kvCache } from "../kv-cache-DGCF5il_.js";
7
+ import "../utils-Wranxuoe.js";
8
+
9
+ export { getAuthenticatedDocumentLoader, kvCache };
@@ -0,0 +1,4 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
@@ -0,0 +1,4 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/fedify",
3
- "version": "2.0.0-dev.1566+4a3d567d",
3
+ "version": "2.0.0-dev.159+6c07cd44",
4
4
  "description": "An ActivityPub server framework",
5
5
  "keywords": [
6
6
  "ActivityPub",
@@ -35,104 +35,118 @@
35
35
  "dist"
36
36
  ],
37
37
  "module": "./dist/mod.js",
38
+ "main": "./dist/mod.cjs",
38
39
  "types": "./dist/mod.d.ts",
39
40
  "exports": {
40
41
  ".": {
41
- "types": "./dist/mod.d.ts",
42
+ "types": {
43
+ "import": "./dist/mod.d.ts",
44
+ "require": "./dist/mod.d.cts",
45
+ "default": "./dist/mod.d.ts"
46
+ },
42
47
  "import": "./dist/mod.js",
48
+ "require": "./dist/mod.cjs",
43
49
  "default": "./dist/mod.js"
44
50
  },
45
51
  "./compat": {
46
- "types": "./dist/compat/mod.d.ts",
52
+ "types": {
53
+ "import": "./dist/compat/mod.d.ts",
54
+ "require": "./dist/compat/mod.d.cts",
55
+ "default": "./dist/compat/mod.d.ts"
56
+ },
47
57
  "import": "./dist/compat/mod.js",
58
+ "require": "./dist/compat/mod.cjs",
48
59
  "default": "./dist/compat/mod.js"
49
60
  },
50
61
  "./federation": {
51
- "types": "./dist/federation/mod.d.ts",
62
+ "types": {
63
+ "import": "./dist/federation/mod.d.ts",
64
+ "require": "./dist/federation/mod.d.cts",
65
+ "default": "./dist/federation/mod.d.ts"
66
+ },
52
67
  "import": "./dist/federation/mod.js",
68
+ "require": "./dist/federation/mod.cjs",
53
69
  "default": "./dist/federation/mod.js"
54
70
  },
55
71
  "./nodeinfo": {
56
- "types": "./dist/nodeinfo/mod.d.ts",
72
+ "types": {
73
+ "import": "./dist/nodeinfo/mod.d.ts",
74
+ "require": "./dist/nodeinfo/mod.d.cts",
75
+ "default": "./dist/nodeinfo/mod.d.ts"
76
+ },
57
77
  "import": "./dist/nodeinfo/mod.js",
78
+ "require": "./dist/nodeinfo/mod.cjs",
58
79
  "default": "./dist/nodeinfo/mod.js"
59
80
  },
60
- "./runtime": {
61
- "types": "./dist/runtime/mod.d.ts",
62
- "import": "./dist/runtime/mod.js",
63
- "default": "./dist/runtime/mod.js"
81
+ "./otel": {
82
+ "types": {
83
+ "import": "./dist/otel/mod.d.ts",
84
+ "require": "./dist/otel/mod.d.cts",
85
+ "default": "./dist/otel/mod.d.ts"
86
+ },
87
+ "import": "./dist/otel/mod.js",
88
+ "require": "./dist/otel/mod.cjs",
89
+ "default": "./dist/otel/mod.js"
64
90
  },
65
91
  "./sig": {
66
- "types": "./dist/sig/mod.d.ts",
92
+ "types": {
93
+ "import": "./dist/sig/mod.d.ts",
94
+ "require": "./dist/sig/mod.d.cts",
95
+ "default": "./dist/sig/mod.d.ts"
96
+ },
67
97
  "import": "./dist/sig/mod.js",
98
+ "require": "./dist/sig/mod.cjs",
68
99
  "default": "./dist/sig/mod.js"
69
100
  },
70
- "./vocab": {
71
- "types": "./dist/vocab/mod.d.ts",
72
- "import": "./dist/vocab/mod.js",
73
- "default": "./dist/vocab/mod.js"
74
- },
75
- "./webfinger": {
76
- "types": "./dist/webfinger/mod.d.ts",
77
- "import": "./dist/webfinger/mod.js",
78
- "default": "./dist/webfinger/mod.js"
79
- },
80
- "./x/cfworkers": {
81
- "types": "./dist/x/cfworkers.d.ts",
82
- "import": "./dist/x/cfworkers.js",
83
- "default": "./dist/x/cfworkers.js"
84
- },
85
- "./x/hono": {
86
- "types": "./dist/x/hono.d.ts",
87
- "import": "./dist/x/hono.js",
88
- "default": "./dist/x/hono.js"
89
- },
90
- "./x/sveltekit": {
91
- "types": "./dist/x/sveltekit.d.ts",
92
- "import": "./dist/x/sveltekit.js",
93
- "default": "./dist/x/sveltekit.js"
101
+ "./utils": {
102
+ "types": {
103
+ "import": "./dist/utils/mod.d.ts",
104
+ "require": "./dist/utils/mod.d.cts",
105
+ "default": "./dist/utils/mod.d.ts"
106
+ },
107
+ "import": "./dist/utils/mod.js",
108
+ "require": "./dist/utils/mod.cjs",
109
+ "default": "./dist/utils/mod.js"
94
110
  }
95
111
  },
96
112
  "dependencies": {
97
- "@cfworker/json-schema": "^4.1.1",
98
- "@hugoalh/http-header-link": "^1.0.2",
99
113
  "@js-temporal/polyfill": "^0.5.1",
100
- "@logtape/logtape": "^1.0.0",
101
- "@multiformats/base-x": "^4.0.1",
114
+ "@logtape/logtape": "^1.3.5",
102
115
  "@opentelemetry/api": "^1.9.0",
116
+ "@opentelemetry/core": "^2.0.0",
117
+ "@opentelemetry/sdk-trace-base": "^2.0.0",
103
118
  "@opentelemetry/semantic-conventions": "^1.27.0",
104
- "asn1js": "^3.0.5",
105
119
  "byte-encodings": "^1.0.11",
106
- "es-toolkit": "^1.39.5",
120
+ "es-toolkit": "1.43.0",
107
121
  "json-canon": "^1.0.1",
108
- "jsonld": "^8.3.2",
122
+ "jsonld": "^9.0.0",
109
123
  "multicodec": "^3.2.1",
110
- "pkijs": "^3.2.4",
111
124
  "structured-field-values": "^2.0.4",
112
- "uri-template-router": "^0.0.17",
125
+ "uri-template-router": "^1.0.0",
113
126
  "url-template": "^3.1.1",
114
- "urlpattern-polyfill": "^10.1.0"
127
+ "urlpattern-polyfill": "^10.1.0",
128
+ "@fedify/vocab": "2.0.0-dev.159+6c07cd44",
129
+ "@fedify/vocab-runtime": "2.0.0-dev.159+6c07cd44",
130
+ "@fedify/webfinger": "2.0.0-dev.159+6c07cd44"
115
131
  },
116
132
  "devDependencies": {
117
- "@cloudflare/workers-types": "^4.20250529.0",
118
133
  "@std/assert": "npm:@jsr/std__assert@^0.226.0",
119
134
  "@std/path": "npm:@jsr/std__path@^1.0.6",
120
- "@std/url": "npm:@jsr/std__url@1.0.0-rc.3",
121
- "@std/yaml": "npm:@jsr/std__yaml@^1.0.6",
122
135
  "@types/node": "^24.2.1",
123
- "fast-check": "^3.22.0",
124
- "fetch-mock": "^12.5.2",
136
+ "fetch-mock": "^12.5.4",
125
137
  "miniflare": "^4.20250523.0",
126
138
  "tsdown": "^0.12.9",
127
139
  "tsx": "^4.19.4",
128
- "typescript": "^5.9.2",
129
- "wrangler": "^4.17.0"
140
+ "typescript": "^5.9.3",
141
+ "wrangler": "^4.17.0",
142
+ "@fedify/fixture": "2.0.0",
143
+ "@fedify/vocab-tools": "^2.0.0-dev.159+6c07cd44"
130
144
  },
131
145
  "scripts": {
132
- "build": "deno task codegen && tsdown",
133
- "prepublish": "deno task codegen && tsdown",
134
- "test": "deno task codegen && tsdown && cd dist/ && node --test",
135
- "test:bun": "deno task codegen && tsdown && cd dist/ && bun test --timeout 60000",
146
+ "build": "tsdown",
147
+ "prepublish": "tsdown",
148
+ "test": "tsdown && cd dist/ && node --test",
149
+ "test:bun": "tsdown && cd dist/ && bun test --timeout 60000",
136
150
  "test:cfworkers": "deno task codegen && wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts"
137
151
  }
138
152
  }