@fedify/fedify 2.0.0-dev.1961 → 2.0.0-dev.206

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 (266) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +66 -36
  3. package/dist/{builder-BrqBKkVi.js → builder-BU9qEchZ.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 -10
  9. package/dist/compat/mod.d.ts +6 -10
  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-V-XS2_6O.d.ts → context-C7vzWilY.d.ts} +63 -65
  14. package/dist/{context-PxGADCsD.d.cts → context-CrB9RFy5.d.cts} +63 -65
  15. package/dist/deno-BUTHG7dM.js +117 -0
  16. package/dist/{testing-DpRy1YTU.js → dist-B5f6a8Tt.js} +90 -110
  17. package/dist/{docloader-HB61Uc88.js → docloader-BaYIAi2d.js} +3 -3
  18. package/dist/{esm-DaZiDvFW.js → esm-DGl7uK1r.js} +1 -1
  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 -11
  29. package/dist/federation/mod.d.ts +7 -11
  30. package/dist/federation/mod.js +8 -11
  31. package/dist/federation/mq.test.js +5 -6
  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-B2bao4EB.js → http-BxDH6plL.js} +3 -2
  40. package/dist/{http-M8k5mKc0.d.cts → http-ClB3pLcL.d.cts} +1 -1
  41. package/dist/{http-BbO0ejuk.d.ts → http-DLBDPal9.d.ts} +1 -1
  42. package/dist/{http-CUsGQiwU.js → http-DbN7EWyT.js} +119 -9
  43. package/dist/{http-BxgYWxTY.cjs → http-xz1rOLDK.cjs} +132 -16
  44. package/dist/{inbox-CAojlSWc.js → inbox-Cv5jVEEr.js} +2 -1
  45. package/dist/{key-Dz-KWCap.js → key-s_Hu2h8g.js} +3 -3
  46. package/dist/{keycache-Czcf33al.js → keycache-DRxpZ5r9.js} +1 -1
  47. package/dist/{keys-BN4nelft.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-5j5Pb-V6.cjs → kv-cache-BCBmDkwr.cjs} +2 -2
  52. package/dist/{kv-cache-DN9pfMBe.js → kv-cache-BEeqyGER.js} +14 -1
  53. package/dist/{kv-cache-Bq6kUUoG.js → kv-cache-CCkFOmOl.js} +2 -2
  54. package/dist/{ld-CEJHYq8u.js → ld-DXqgYcc9.js} +4 -3
  55. package/dist/middleware-CTmdJqh8.cjs +12 -0
  56. package/dist/middleware-CjwpmFSb.js +26 -0
  57. package/dist/{middleware-DgrceAHB.js → middleware-DzYMj3P9.js} +162 -165
  58. package/dist/middleware-FbKIfGNn.js +12 -0
  59. package/dist/{middleware-DW3rJHWy.cjs → middleware-IW3LA3Vi.cjs} +210 -194
  60. package/dist/{middleware-Df9OWALM.js → middleware-mAVYJs2q.js} +164 -154
  61. package/dist/{mod-DMpuiKXi.d.cts → mod-0p9zUdzg.d.cts} +6 -6
  62. package/dist/mod-0qnPv4EC.d.cts +62 -0
  63. package/dist/{mod-DgxG-byT.d.cts → mod-BrS8tiad.d.cts} +2 -2
  64. package/dist/mod-C3SOvTD1.d.ts +64 -0
  65. package/dist/{mod-BoRKfJPE.d.cts → mod-D6pS5_xJ.d.cts} +4 -4
  66. package/dist/{mod-D5Z2tISD.d.ts → mod-jOa7W503.d.ts} +2 -2
  67. package/dist/{mod-Cdo6SYlJ.d.ts → mod-waqu-BL_.d.ts} +4 -4
  68. package/dist/{mod-aAE2wOWV.d.ts → mod-xc20HhMD.d.ts} +6 -6
  69. package/dist/mod.cjs +11 -93
  70. package/dist/mod.d.cts +11 -15
  71. package/dist/mod.d.ts +11 -15
  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-kQRGVXG1.d.ts → owner-BgI8C-VY.d.ts} +1 -2
  86. package/dist/{owner-B4HbyP8s.d.cts → owner-C-zfmVAD.d.cts} +1 -2
  87. package/dist/{owner-JwI-WzF-.js → owner-VcVFcfvO.js} +44 -8
  88. package/dist/{proof-CObJuclI.cjs → proof-LJKB8sTg.cjs} +63 -28
  89. package/dist/{proof-xH0V1mdD.js → proof-Q-IWSQjT.js} +46 -11
  90. package/dist/{proof-Dhqndmfg.js → proof-VthB8GiV.js} +3 -2
  91. package/dist/router-D9eI0s4b.js +118 -0
  92. package/dist/{send-1o7D-GGL.js → send-Bb7N5G5a.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 +24 -35
  116. package/dist/actor-DhgrrgXz.cjs +0 -42079
  117. package/dist/actor-DiKHxw_H.js +0 -41647
  118. package/dist/actor-DqFajh9s.d.ts +0 -130
  119. package/dist/actor-Kqyoic-M.js +0 -146
  120. package/dist/actor-f2NtjyCg.d.cts +0 -128
  121. package/dist/fixtures/activitypub.academy/users/brauca_darradiul.json +0 -83
  122. package/dist/fixtures/example.com/announce.json +0 -6
  123. package/dist/fixtures/example.com/collection.json +0 -19
  124. package/dist/fixtures/example.com/create.json +0 -6
  125. package/dist/fixtures/example.com/cross-origin-actor.json +0 -6
  126. package/dist/fixtures/example.com/hong-gildong.json +0 -11
  127. package/dist/fixtures/example.com/invite.json +0 -7
  128. package/dist/fixtures/example.com/key.json +0 -7
  129. package/dist/fixtures/example.com/key2.json +0 -6
  130. package/dist/fixtures/example.com/object.json +0 -6
  131. package/dist/fixtures/example.com/orderedcollectionpage.json +0 -24
  132. package/dist/fixtures/example.com/paged/a.json +0 -13
  133. package/dist/fixtures/example.com/paged/b.json +0 -16
  134. package/dist/fixtures/example.com/paged-collection.json +0 -6
  135. package/dist/fixtures/example.com/person.json +0 -22
  136. package/dist/fixtures/example.com/person2.json +0 -40
  137. package/dist/fixtures/example.com/test.json +0 -5
  138. package/dist/fixtures/example.com/users/handle.json +0 -16
  139. package/dist/fixtures/example.com/wrong-type.json +0 -3
  140. package/dist/fixtures/media.example.com/avatars/test-avatar.jpg.json +0 -6
  141. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +0 -24
  142. package/dist/fixtures/remote.domain/users/bob.json +0 -20
  143. package/dist/fixtures/server.example/users/alice.json +0 -20
  144. package/dist/fixtures/w3id.org/identity/v1.json +0 -152
  145. package/dist/fixtures/w3id.org/security/data-integrity/v1.json +0 -74
  146. package/dist/fixtures/w3id.org/security/multikey/v1.json +0 -35
  147. package/dist/fixtures/w3id.org/security/v1.json +0 -50
  148. package/dist/fixtures/wizard.casa/users/hongminhee.json +0 -69
  149. package/dist/fixtures/www.w3.org/ns/activitystreams.json +0 -379
  150. package/dist/fixtures/www.w3.org/ns/did/v1.json +0 -58
  151. package/dist/lookup-D8hvtZHY.js +0 -42178
  152. package/dist/lookup-_Hap2IXS.cjs +0 -265
  153. package/dist/lookup-gMu_9ZKY.js +0 -253
  154. package/dist/middleware-19QFZj7b.js +0 -26
  155. package/dist/middleware-BbbcXY4w.cjs +0 -15
  156. package/dist/middleware-CSTK543z.js +0 -15
  157. package/dist/mod-BlVovdcy.d.ts +0 -309
  158. package/dist/mod-BxRCHTz-.d.cts +0 -307
  159. package/dist/mod-C58MZ7Wx.d.cts +0 -113
  160. package/dist/mod-CcDPcLJW.d.cts +0 -1
  161. package/dist/mod-Ds0mpFZU.d.ts +0 -115
  162. package/dist/mod-bjzj5QIb.d.ts +0 -2
  163. package/dist/src/vocab/accept.yaml +0 -15
  164. package/dist/src/vocab/activity.yaml +0 -98
  165. package/dist/src/vocab/add.yaml +0 -16
  166. package/dist/src/vocab/announce.yaml +0 -30
  167. package/dist/src/vocab/application.yaml +0 -324
  168. package/dist/src/vocab/arrive.yaml +0 -15
  169. package/dist/src/vocab/article.yaml +0 -46
  170. package/dist/src/vocab/audio.yaml +0 -11
  171. package/dist/src/vocab/block.yaml +0 -16
  172. package/dist/src/vocab/chatmessage.yaml +0 -50
  173. package/dist/src/vocab/collection.yaml +0 -154
  174. package/dist/src/vocab/collectionpage.yaml +0 -55
  175. package/dist/src/vocab/create.yaml +0 -28
  176. package/dist/src/vocab/dataintegrityproof.yaml +0 -56
  177. package/dist/src/vocab/delete.yaml +0 -27
  178. package/dist/src/vocab/didservice.yaml +0 -22
  179. package/dist/src/vocab/dislike.yaml +0 -14
  180. package/dist/src/vocab/document.yaml +0 -31
  181. package/dist/src/vocab/emoji.yaml +0 -12
  182. package/dist/src/vocab/emojireact.yaml +0 -17
  183. package/dist/src/vocab/endpoints.yaml +0 -85
  184. package/dist/src/vocab/event.yaml +0 -11
  185. package/dist/src/vocab/export.yaml +0 -9
  186. package/dist/src/vocab/flag.yaml +0 -15
  187. package/dist/src/vocab/follow.yaml +0 -19
  188. package/dist/src/vocab/group.yaml +0 -324
  189. package/dist/src/vocab/hashtag.yaml +0 -14
  190. package/dist/src/vocab/ignore.yaml +0 -14
  191. package/dist/src/vocab/image.yaml +0 -9
  192. package/dist/src/vocab/intransitiveactivity.yaml +0 -15
  193. package/dist/src/vocab/invite.yaml +0 -14
  194. package/dist/src/vocab/join.yaml +0 -14
  195. package/dist/src/vocab/key.yaml +0 -28
  196. package/dist/src/vocab/leave.yaml +0 -14
  197. package/dist/src/vocab/like.yaml +0 -16
  198. package/dist/src/vocab/link.yaml +0 -101
  199. package/dist/src/vocab/listen.yaml +0 -12
  200. package/dist/src/vocab/mention.yaml +0 -9
  201. package/dist/src/vocab/move.yaml +0 -15
  202. package/dist/src/vocab/multikey.yaml +0 -36
  203. package/dist/src/vocab/note.yaml +0 -48
  204. package/dist/src/vocab/object.yaml +0 -404
  205. package/dist/src/vocab/offer.yaml +0 -15
  206. package/dist/src/vocab/orderedcollection.yaml +0 -39
  207. package/dist/src/vocab/orderedcollectionpage.yaml +0 -50
  208. package/dist/src/vocab/organization.yaml +0 -324
  209. package/dist/src/vocab/page.yaml +0 -11
  210. package/dist/src/vocab/person.yaml +0 -324
  211. package/dist/src/vocab/place.yaml +0 -75
  212. package/dist/src/vocab/profile.yaml +0 -26
  213. package/dist/src/vocab/propertyvalue.yaml +0 -32
  214. package/dist/src/vocab/question.yaml +0 -103
  215. package/dist/src/vocab/read.yaml +0 -13
  216. package/dist/src/vocab/reject.yaml +0 -14
  217. package/dist/src/vocab/relationship.yaml +0 -52
  218. package/dist/src/vocab/remove.yaml +0 -14
  219. package/dist/src/vocab/service.yaml +0 -324
  220. package/dist/src/vocab/source.yaml +0 -26
  221. package/dist/src/vocab/tentativeaccept.yaml +0 -14
  222. package/dist/src/vocab/tentativereject.yaml +0 -14
  223. package/dist/src/vocab/tombstone.yaml +0 -24
  224. package/dist/src/vocab/travel.yaml +0 -16
  225. package/dist/src/vocab/undo.yaml +0 -26
  226. package/dist/src/vocab/update.yaml +0 -58
  227. package/dist/src/vocab/video.yaml +0 -11
  228. package/dist/src/vocab/view.yaml +0 -13
  229. package/dist/testing/docloader.test.js +0 -22
  230. package/dist/vocab/actor.test.js +0 -5963
  231. package/dist/vocab/lookup.test.d.ts +0 -3
  232. package/dist/vocab/lookup.test.js +0 -454
  233. package/dist/vocab/mod.cjs +0 -86
  234. package/dist/vocab/mod.d.cts +0 -4
  235. package/dist/vocab/mod.d.ts +0 -6
  236. package/dist/vocab/mod.js +0 -9
  237. package/dist/vocab/type.test.d.ts +0 -3
  238. package/dist/vocab/type.test.js +0 -24
  239. package/dist/vocab/vocab.test.d.ts +0 -3
  240. package/dist/vocab/vocab.test.js +0 -9397
  241. package/dist/vocab-BCWe1Ih5.d.ts +0 -14905
  242. package/dist/vocab-CAwj263k.js +0 -255
  243. package/dist/vocab-CeDBzu-f.d.cts +0 -14903
  244. package/dist/vocab-DgHGCFcw.cjs +0 -291
  245. package/dist/webfinger/handler.test.d.ts +0 -3
  246. package/dist/webfinger/lookup.test.d.ts +0 -3
  247. package/dist/webfinger/lookup.test.js +0 -193
  248. package/dist/webfinger/mod.cjs +0 -8
  249. package/dist/webfinger/mod.d.cts +0 -2
  250. package/dist/webfinger/mod.d.ts +0 -4
  251. package/dist/webfinger/mod.js +0 -8
  252. package/dist/webfinger-C72Y8lrh.js +0 -4
  253. package/dist/webfinger-vAtLmxOF.cjs +0 -4
  254. /package/dist/{collection-BzWsN9pB.js → collection-CcnIw1qY.js} +0 -0
  255. /package/dist/{testing/docloader.test.d.ts → federation/webfinger.test.d.ts} +0 -0
  256. /package/dist/{mod-CVgZgliM.d.ts → mod-1E3W847c.d.ts} +0 -0
  257. /package/dist/{mod-B-hUPT2N.d.cts → mod-C81L6_lQ.d.cts} +0 -0
  258. /package/dist/{negotiation-C4nFufNk.js → negotiation-5NPJL6zp.js} +0 -0
  259. /package/dist/{nodeinfo-BnthBobC.js → nodeinfo-BlLsRSiT.js} +0 -0
  260. /package/dist/{nodeinfo-CdN0rEnZ.cjs → nodeinfo-DuMYTpbZ.cjs} +0 -0
  261. /package/dist/{vocab/actor.test.d.ts → otel/exporter.test.d.ts} +0 -0
  262. /package/dist/{retry-CfF8Gn4d.js → retry-D4GJ670a.js} +0 -0
  263. /package/dist/{sig-C34-oHBl.js → sig-CwuONEzF.js} +0 -0
  264. /package/dist/{sig-YYj5tCnr.cjs → sig-DeXX2xnj.cjs} +0 -0
  265. /package/dist/{utils-DyRU1gdZ.cjs → utils-Db0ZmjcD.cjs} +0 -0
  266. /package/dist/{utils-D-Va7aXC.js → utils-Wranxuoe.js} +0 -0
@@ -3,16 +3,126 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_lookup = require('./lookup-_Hap2IXS.cjs');
7
- const require_actor = require('./actor-DhgrrgXz.cjs');
8
6
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
7
+ const __fedify_vocab = require_chunk.__toESM(require("@fedify/vocab"));
9
8
  const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
10
- const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
11
9
  const byte_encodings_hex = require_chunk.__toESM(require("byte-encodings/hex"));
12
10
  const __opentelemetry_semantic_conventions = require_chunk.__toESM(require("@opentelemetry/semantic-conventions"));
13
11
  const byte_encodings_base64 = require_chunk.__toESM(require("byte-encodings/base64"));
14
12
  const structured_field_values = require_chunk.__toESM(require("structured-field-values"));
13
+ const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
14
+
15
+ //#region deno.json
16
+ var name = "@fedify/fedify";
17
+ var version = "2.0.0-dev.206+fa815928";
18
+ var license = "MIT";
19
+ var exports$1 = {
20
+ ".": "./src/mod.ts",
21
+ "./compat": "./src/compat/mod.ts",
22
+ "./federation": "./src/federation/mod.ts",
23
+ "./nodeinfo": "./src/nodeinfo/mod.ts",
24
+ "./otel": "./src/otel/mod.ts",
25
+ "./sig": "./src/sig/mod.ts",
26
+ "./utils": "./src/utils/mod.ts"
27
+ };
28
+ var imports = {
29
+ "@multiformats/base-x": "npm:@multiformats/base-x@^4.0.1",
30
+ "@opentelemetry/core": "npm:@opentelemetry/core@^2.0.0",
31
+ "@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@^2.0.0",
32
+ "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.27.0",
33
+ "@std/assert": "jsr:@std/assert@^0.226.0",
34
+ "@std/url": "jsr:@std/url@^0.225.1",
35
+ "asn1js": "npm:asn1js@^3.0.7",
36
+ "fast-check": "npm:fast-check@^3.22.0",
37
+ "fetch-mock": "npm:fetch-mock@^12.5.2",
38
+ "json-canon": "npm:json-canon@^1.0.1",
39
+ "jsonld": "npm:jsonld@^9.0.0",
40
+ "multicodec": "npm:multicodec@^3.2.1",
41
+ "pkijs": "npm:pkijs@^3.3.3",
42
+ "structured-field-values": "npm:structured-field-values@^2.0.4",
43
+ "uri-template-router": "npm:uri-template-router@^1.0.0",
44
+ "url-template": "npm:url-template@^3.1.1"
45
+ };
46
+ var exclude = [
47
+ ".test-report.xml",
48
+ "apidoc/",
49
+ "dist/",
50
+ "node_modules/",
51
+ "npm/",
52
+ "pnpm-lock.yaml",
53
+ "src/cfworkers/dist/",
54
+ "src/cfworkers/fixtures/",
55
+ "src/cfworkers/imports.ts",
56
+ "src/cfworkers/README.md",
57
+ "src/cfworkers/server.ts",
58
+ "src/cfworkers/server.js",
59
+ "src/cfworkers/server.js.map"
60
+ ];
61
+ var publish = { "exclude": ["**/*.test.ts", "src/testing/"] };
62
+ var tasks = {
63
+ "codegen": "deno task -f @fedify/vocab compile",
64
+ "cache": {
65
+ "command": "deno cache src/mod.ts",
66
+ "dependencies": ["codegen"]
67
+ },
68
+ "check": {
69
+ "command": "deno fmt --check && deno lint && deno check src/**/*.ts",
70
+ "dependencies": ["codegen"]
71
+ },
72
+ "test": {
73
+ "command": "deno test --check --doc --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel",
74
+ "dependencies": ["codegen"]
75
+ },
76
+ "coverage": "deno task test --clean --coverage && deno coverage --html coverage",
77
+ "bench": {
78
+ "command": "deno bench --allow-read --allow-write --allow-net --allow-env --allow-run --unstable-kv",
79
+ "dependencies": ["codegen"]
80
+ },
81
+ "apidoc": {
82
+ "command": "deno doc --html --name=Fedify --output=apidoc/ src/mod.ts",
83
+ "dependencies": ["codegen"]
84
+ },
85
+ "publish": {
86
+ "command": "deno publish",
87
+ "dependencies": ["codegen"]
88
+ },
89
+ "pnpm:install": "pnpm install --silent",
90
+ "pnpm:build": {
91
+ "command": "pnpm exec tsdown",
92
+ "dependencies": ["pnpm:build-vocab"]
93
+ },
94
+ "test:node": {
95
+ "command": "cd dist/ && node --test",
96
+ "dependencies": ["pnpm:build"]
97
+ },
98
+ "test:bun": {
99
+ "command": "cd dist/ && bun test --timeout 60000",
100
+ "dependencies": ["pnpm:build"]
101
+ },
102
+ "test:cfworkers": {
103
+ "command": "pnpm exec wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts",
104
+ "dependencies": ["pnpm:build"]
105
+ },
106
+ "test-all": { "dependencies": [
107
+ "check",
108
+ "test",
109
+ "test:node",
110
+ "test:bun",
111
+ "test:cfworkers"
112
+ ] }
113
+ };
114
+ var deno_default = {
115
+ name,
116
+ version,
117
+ license,
118
+ exports: exports$1,
119
+ imports,
120
+ exclude,
121
+ publish,
122
+ tasks
123
+ };
15
124
 
125
+ //#endregion
16
126
  //#region src/sig/key.ts
17
127
  /**
18
128
  * Checks if the given key is valid and supported. No-op if the key is valid,
@@ -108,7 +218,7 @@ async function importJwk(jwk, type) {
108
218
  */
109
219
  function fetchKey(keyId, cls, options = {}) {
110
220
  const tracerProvider = options.tracerProvider ?? __opentelemetry_api.trace.getTracerProvider();
111
- const tracer = tracerProvider.getTracer(require_lookup.deno_default.name, require_lookup.deno_default.version);
221
+ const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
112
222
  keyId = typeof keyId === "string" ? new URL(keyId) : keyId;
113
223
  return tracer.startActiveSpan("activitypub.fetch_key", {
114
224
  kind: __opentelemetry_api.SpanKind.CLIENT,
@@ -176,7 +286,7 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
176
286
  }
177
287
  let object;
178
288
  try {
179
- object = await require_actor.Object.fromJsonLd(document, {
289
+ object = await __fedify_vocab.Object.fromJsonLd(document, {
180
290
  documentLoader,
181
291
  contextLoader,
182
292
  tracerProvider
@@ -203,8 +313,8 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
203
313
  }
204
314
  let key = null;
205
315
  if (object instanceof cls) key = object;
206
- else if (require_actor.isActor(object)) {
207
- const keys = cls === require_actor.CryptographicKey ? object.getPublicKeys({
316
+ else if ((0, __fedify_vocab.isActor)(object)) {
317
+ const keys = cls === __fedify_vocab.CryptographicKey ? object.getPublicKeys({
208
318
  documentLoader,
209
319
  contextLoader,
210
320
  tracerProvider
@@ -276,7 +386,7 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
276
386
  async function signRequest(request, privateKey, keyId, options = {}) {
277
387
  validateCryptoKey(privateKey, "private");
278
388
  const tracerProvider = options.tracerProvider ?? __opentelemetry_api.trace.getTracerProvider();
279
- const tracer = tracerProvider.getTracer(require_lookup.deno_default.name, require_lookup.deno_default.version);
389
+ const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
280
390
  return await tracer.startActiveSpan("http_signatures.sign", async (span) => {
281
391
  try {
282
392
  const spec = options.spec ?? "draft-cavage-http-signatures-12";
@@ -286,7 +396,7 @@ async function signRequest(request, privateKey, keyId, options = {}) {
286
396
  if (span.isRecording()) {
287
397
  span.setAttribute(__opentelemetry_semantic_conventions.ATTR_HTTP_REQUEST_METHOD, signed.method);
288
398
  span.setAttribute(__opentelemetry_semantic_conventions.ATTR_URL_FULL, signed.url);
289
- for (const [name, value] of signed.headers) span.setAttribute((0, __opentelemetry_semantic_conventions.ATTR_HTTP_REQUEST_HEADER)(name), value);
399
+ for (const [name$1, value] of signed.headers) span.setAttribute((0, __opentelemetry_semantic_conventions.ATTR_HTTP_REQUEST_HEADER)(name$1), value);
290
400
  span.setAttribute("http_signatures.key_id", keyId.href);
291
401
  }
292
402
  return signed;
@@ -314,8 +424,8 @@ async function signRequestDraft(request, privateKey, keyId, span, currentTime, b
314
424
  }
315
425
  if (!headers.has("Date")) headers.set("Date", currentTime == null ? (/* @__PURE__ */ new Date()).toUTCString() : new Date(currentTime.toString()).toUTCString());
316
426
  const serialized = [["(request-target)", `${request.method.toLowerCase()} ${url.pathname}`], ...headers];
317
- const headerNames = serialized.map(([name]) => name);
318
- const message = serialized.map(([name, value]) => `${name}: ${value.trim()}`).join("\n");
427
+ const headerNames = serialized.map(([name$1]) => name$1);
428
+ const message = serialized.map(([name$1, value]) => `${name$1}: ${value.trim()}`).join("\n");
319
429
  const signature = await crypto.subtle.sign("RSASSA-PKCS1-v1_5", privateKey, new TextEncoder().encode(message));
320
430
  const sigHeader = `keyId="${keyId.href}",algorithm="rsa-sha256",headers="${headerNames.join(" ")}",signature="${(0, byte_encodings_base64.encodeBase64)(signature)}"`;
321
431
  headers.set("Signature", sigHeader);
@@ -505,12 +615,12 @@ const supportedHashAlgorithms = {
505
615
  */
506
616
  async function verifyRequest(request, options = {}) {
507
617
  const tracerProvider = options.tracerProvider ?? __opentelemetry_api.trace.getTracerProvider();
508
- const tracer = tracerProvider.getTracer(require_lookup.deno_default.name, require_lookup.deno_default.version);
618
+ const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
509
619
  return await tracer.startActiveSpan("http_signatures.verify", async (span) => {
510
620
  if (span.isRecording()) {
511
621
  span.setAttribute(__opentelemetry_semantic_conventions.ATTR_HTTP_REQUEST_METHOD, request.method);
512
622
  span.setAttribute(__opentelemetry_semantic_conventions.ATTR_URL_FULL, request.url);
513
- for (const [name, value] of request.headers) span.setAttribute((0, __opentelemetry_semantic_conventions.ATTR_HTTP_REQUEST_HEADER)(name), value);
623
+ for (const [name$1, value] of request.headers) span.setAttribute((0, __opentelemetry_semantic_conventions.ATTR_HTTP_REQUEST_HEADER)(name$1), value);
514
624
  }
515
625
  try {
516
626
  let spec = options.spec;
@@ -677,7 +787,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
677
787
  const { keyId, headers, signature } = sigValues;
678
788
  span?.setAttribute("http_signatures.key_id", keyId);
679
789
  if ("algorithm" in sigValues) span?.setAttribute("http_signatures.algorithm", sigValues.algorithm);
680
- const { key, cached } = await fetchKey(new URL(keyId), require_actor.CryptographicKey, {
790
+ const { key, cached } = await fetchKey(new URL(keyId), __fedify_vocab.CryptographicKey, {
681
791
  documentLoader,
682
792
  contextLoader,
683
793
  keyCache,
@@ -693,7 +803,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
693
803
  logger.debug("Failed to verify; required headers missing in the Signature header: {headers}.", { headers });
694
804
  return null;
695
805
  }
696
- const message = headerNames.map((name) => `${name}: ` + (name === "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name === "(created)" ? sigValues.created ?? "" : name === "(expires)" ? sigValues.expires ?? "" : name === "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
806
+ const message = headerNames.map((name$1) => `${name$1}: ` + (name$1 === "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name$1 === "(created)" ? sigValues.created ?? "" : name$1 === "(expires)" ? sigValues.expires ?? "" : name$1 === "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name$1))).join("\n");
697
807
  const sig = (0, byte_encodings_base64.decodeBase64)(signature);
698
808
  span?.setAttribute("http_signatures.signature", (0, byte_encodings_hex.encodeHex)(sig));
699
809
  const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));
@@ -870,7 +980,7 @@ async function verifyRequestRfc9421(request, span, { documentLoader, contextLoad
870
980
  }
871
981
  span?.setAttribute("http_signatures.key_id", sigInput.keyId);
872
982
  span?.setAttribute("http_signatures.created", sigInput.created.toString());
873
- const { key, cached } = await fetchKey(new URL(sigInput.keyId), require_actor.CryptographicKey, {
983
+ const { key, cached } = await fetchKey(new URL(sigInput.keyId), __fedify_vocab.CryptographicKey, {
874
984
  documentLoader,
875
985
  contextLoader,
876
986
  keyCache,
@@ -1056,6 +1166,12 @@ function timingSafeEqual(a, b) {
1056
1166
  }
1057
1167
 
1058
1168
  //#endregion
1169
+ Object.defineProperty(exports, 'deno_default', {
1170
+ enumerable: true,
1171
+ get: function () {
1172
+ return deno_default;
1173
+ }
1174
+ });
1059
1175
  Object.defineProperty(exports, 'doubleKnock', {
1060
1176
  enumerable: true,
1061
1177
  get: function () {
@@ -3,8 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, deno_default, getTypeId } from "./lookup-D8hvtZHY.js";
6
+ import { deno_default } from "./deno-BUTHG7dM.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
+ import { Activity, getTypeId } from "@fedify/vocab";
8
9
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
9
10
 
10
11
  //#region src/federation/inbox.ts
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Object as Object$1, deno_default } from "./lookup-D8hvtZHY.js";
7
- import { isActor } from "./actor-Kqyoic-M.js";
8
- import { getDocumentLoader } from "@fedify/vocab-runtime";
6
+ import { deno_default } from "./deno-BUTHG7dM.js";
9
7
  import { getLogger } from "@logtape/logtape";
8
+ import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
9
+ import { getDocumentLoader } from "@fedify/vocab-runtime";
10
10
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
11
11
 
12
12
  //#region src/sig/key.ts
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./lookup-D8hvtZHY.js";
6
+ import { CryptographicKey, Multikey } from "@fedify/vocab";
7
7
 
8
8
  //#region src/federation/keycache.ts
9
9
  var KvKeyCache = class {
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./lookup-D8hvtZHY.js";
6
+ import { CryptographicKey, Multikey } from "@fedify/vocab";
7
7
  import { importSpki } from "@fedify/vocab-runtime";
8
8
 
9
9
  //#region src/testing/keys.ts
@@ -16,6 +16,21 @@ interface KvStoreSetOptions {
16
16
  */
17
17
  ttl?: Temporal.Duration;
18
18
  }
19
+ /**
20
+ * An entry returned by the {@link KvStore.list} method.
21
+ *
22
+ * @since 1.10.0
23
+ */
24
+ interface KvStoreListEntry {
25
+ /**
26
+ * The key of the entry.
27
+ */
28
+ readonly key: KvKey;
29
+ /**
30
+ * The value of the entry.
31
+ */
32
+ readonly value: unknown;
33
+ }
19
34
  /**
20
35
  * An abstract interface for a key–value store.
21
36
  *
@@ -51,6 +66,16 @@ interface KvStore {
51
66
  * @since 1.8.0
52
67
  */
53
68
  cas?: (key: KvKey, expectedValue: unknown, newValue: unknown, options?: KvStoreSetOptions) => Promise<boolean>;
69
+ /**
70
+ * Lists all entries in the store that match the given prefix.
71
+ * If no prefix is given, all entries are returned.
72
+ * @param prefix The prefix to filter keys by. If not specified, all entries
73
+ * are returned.
74
+ * @returns An async iterable of entries matching the prefix.
75
+ * @since 1.10.0
76
+ * @since 2.0.0 This method is now required instead of optional.
77
+ */
78
+ list(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
54
79
  }
55
80
  /**
56
81
  * A key–value store that stores values in memory.
@@ -76,6 +101,10 @@ declare class MemoryKvStore implements KvStore {
76
101
  * {@inheritDoc KvStore.cas}
77
102
  */
78
103
  cas(key: KvKey, expectedValue: unknown, newValue: unknown, options?: KvStoreSetOptions): Promise<boolean>;
104
+ /**
105
+ * {@inheritDoc KvStore.list}
106
+ */
107
+ list(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
79
108
  }
80
109
  //#endregion
81
- export { KvKey, KvStore, KvStoreSetOptions, MemoryKvStore };
110
+ export { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore };
@@ -19,6 +19,21 @@ interface KvStoreSetOptions {
19
19
  */
20
20
  ttl?: Temporal.Duration;
21
21
  }
22
+ /**
23
+ * An entry returned by the {@link KvStore.list} method.
24
+ *
25
+ * @since 1.10.0
26
+ */
27
+ interface KvStoreListEntry {
28
+ /**
29
+ * The key of the entry.
30
+ */
31
+ readonly key: KvKey;
32
+ /**
33
+ * The value of the entry.
34
+ */
35
+ readonly value: unknown;
36
+ }
22
37
  /**
23
38
  * An abstract interface for a key–value store.
24
39
  *
@@ -54,6 +69,16 @@ interface KvStore {
54
69
  * @since 1.8.0
55
70
  */
56
71
  cas?: (key: KvKey, expectedValue: unknown, newValue: unknown, options?: KvStoreSetOptions) => Promise<boolean>;
72
+ /**
73
+ * Lists all entries in the store that match the given prefix.
74
+ * If no prefix is given, all entries are returned.
75
+ * @param prefix The prefix to filter keys by. If not specified, all entries
76
+ * are returned.
77
+ * @returns An async iterable of entries matching the prefix.
78
+ * @since 1.10.0
79
+ * @since 2.0.0 This method is now required instead of optional.
80
+ */
81
+ list(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
57
82
  }
58
83
  /**
59
84
  * A key–value store that stores values in memory.
@@ -79,6 +104,10 @@ declare class MemoryKvStore implements KvStore {
79
104
  * {@inheritDoc KvStore.cas}
80
105
  */
81
106
  cas(key: KvKey, expectedValue: unknown, newValue: unknown, options?: KvStoreSetOptions): Promise<boolean>;
107
+ /**
108
+ * {@inheritDoc KvStore.list}
109
+ */
110
+ list(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
82
111
  }
83
112
  //#endregion
84
- export { KvKey, KvStore, KvStoreSetOptions, MemoryKvStore };
113
+ export { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore };
@@ -68,6 +68,28 @@ var MemoryKvStore = class {
68
68
  this.#values[encodedKey] = [newValue, expiration];
69
69
  return Promise.resolve(true);
70
70
  }
71
+ /**
72
+ * {@inheritDoc KvStore.list}
73
+ */
74
+ async *list(prefix) {
75
+ const now = Temporal.Now.instant();
76
+ for (const [encodedKey, entry] of Object.entries(this.#values)) {
77
+ const key = JSON.parse(encodedKey);
78
+ if (prefix != null) {
79
+ if (key.length < prefix.length) continue;
80
+ if (!prefix.every((p, i) => key[i] === p)) continue;
81
+ }
82
+ const [value, expiration] = entry;
83
+ if (expiration != null && now.until(expiration).sign < 0) {
84
+ delete this.#values[encodedKey];
85
+ continue;
86
+ }
87
+ yield {
88
+ key,
89
+ value
90
+ };
91
+ }
92
+ }
71
93
  };
72
94
 
73
95
  //#endregion
@@ -3,10 +3,10 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
- const require_http = require('./http-BxgYWxTY.cjs');
6
+ const require_http = require('./http-xz1rOLDK.cjs');
7
7
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
8
- const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
9
8
  const es_toolkit = require_chunk.__toESM(require("es-toolkit"));
9
+ const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
10
10
 
11
11
  //#region src/utils/docloader.ts
12
12
  const logger$1 = (0, __logtape_logtape.getLogger)([
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { preloadedContexts } from "@fedify/vocab-runtime";
7
6
  import { getLogger } from "@logtape/logtape";
7
+ import { preloadedContexts } from "@fedify/vocab-runtime";
8
8
 
9
9
  //#region src/utils/kv-cache.ts
10
10
  const logger = getLogger([
@@ -28,6 +28,19 @@ var MockKvStore = class {
28
28
  cas(..._) {
29
29
  return Promise.resolve(false);
30
30
  }
31
+ async *list(prefix) {
32
+ for (const [encodedKey, value] of Object.entries(this.#values)) {
33
+ const key = JSON.parse(encodedKey);
34
+ if (prefix != null) {
35
+ if (key.length < prefix.length) continue;
36
+ if (!prefix.every((p, i) => key[i] === p)) continue;
37
+ }
38
+ yield {
39
+ key,
40
+ value
41
+ };
42
+ }
43
+ }
31
44
  };
32
45
  /**
33
46
  * Decorates a {@link DocumentLoader} with a cache backed by a {@link Deno.Kv}.
@@ -2,10 +2,10 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { doubleKnock, validateCryptoKey } from "./http-CUsGQiwU.js";
5
+ import { doubleKnock, validateCryptoKey } from "./http-DbN7EWyT.js";
6
6
  import { getLogger } from "@logtape/logtape";
7
- import { UrlError, createActivityPubRequest, getDocumentLoader, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
8
7
  import { curry } from "es-toolkit";
8
+ import { UrlError, createActivityPubRequest, getDocumentLoader, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
9
9
 
10
10
  //#region src/utils/docloader.ts
11
11
  const logger$1 = getLogger([
@@ -3,10 +3,11 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { Activity, CryptographicKey, Object as Object$1, deno_default, getTypeId } from "./lookup-D8hvtZHY.js";
7
- import { fetchKey, validateCryptoKey } from "./key-Dz-KWCap.js";
8
- import { getDocumentLoader } from "@fedify/vocab-runtime";
6
+ import { deno_default } from "./deno-BUTHG7dM.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-s_Hu2h8g.js";
9
8
  import { getLogger } from "@logtape/logtape";
9
+ import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
10
+ import { getDocumentLoader } from "@fedify/vocab-runtime";
10
11
  import { SpanStatusCode, trace } from "@opentelemetry/api";
11
12
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
12
13
  import { encodeHex } from "byte-encodings/hex";
@@ -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-xz1rOLDK.cjs');
7
+ const require_middleware = require('./middleware-IW3LA3Vi.cjs');
8
+ require('./proof-LJKB8sTg.cjs');
9
+ require('./types-B6z6CqIz.cjs');
10
+ require('./kv-cache-BCBmDkwr.cjs');
11
+
12
+ exports.FederationImpl = require_middleware.FederationImpl;
@@ -0,0 +1,26 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+ globalThis.addEventListener = () => {};
5
+
6
+ import "./deno-BUTHG7dM.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-DzYMj3P9.js";
8
+ import "./client-Dg7OfUDA.js";
9
+ import "./router-D9eI0s4b.js";
10
+ import "./types-CPz01LGH.js";
11
+ import "./key-s_Hu2h8g.js";
12
+ import "./http-BxDH6plL.js";
13
+ import "./ld-DXqgYcc9.js";
14
+ import "./owner-VcVFcfvO.js";
15
+ import "./proof-VthB8GiV.js";
16
+ import "./docloader-BaYIAi2d.js";
17
+ import "./kv-cache-BEeqyGER.js";
18
+ import "./inbox-Cv5jVEEr.js";
19
+ import "./builder-BU9qEchZ.js";
20
+ import "./collection-CcnIw1qY.js";
21
+ import "./keycache-DRxpZ5r9.js";
22
+ import "./negotiation-5NPJL6zp.js";
23
+ import "./retry-D4GJ670a.js";
24
+ import "./send-Bb7N5G5a.js";
25
+
26
+ export { FederationImpl };