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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +68 -35
  3. package/dist/{builder-GG0LDRaK.js → builder-R1Sfe-tb.js} +5 -3
  4. package/dist/{client-BsGzbnV-.d.ts → client-CUTUGgvJ.d.ts} +18 -18
  5. package/dist/{client-pY7-3icS.js → client-Dg7OfUDA.js} +28 -23
  6. package/dist/{client-94iWEfQa.d.cts → client-by-PEGAJ.d.cts} +18 -18
  7. package/dist/compat/mod.cjs +1 -1
  8. package/dist/compat/mod.d.cts +6 -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-i60L3ZJW.js +117 -0
  16. package/dist/{testing-bgnt5CjE.js → dist-B5f6a8Tt.js} +90 -110
  17. package/dist/{docloader-Buj0Y50A.js → docloader-BuOglEYx.js} +3 -3
  18. package/dist/{esm-vPU_GxaY.js → esm-DGl7uK1r.js} +32 -17
  19. package/dist/federation/builder.test.js +7 -5
  20. package/dist/federation/collection.test.js +2 -3
  21. package/dist/federation/handler.test.js +110 -22
  22. package/dist/federation/idempotency.test.js +23 -22
  23. package/dist/federation/inbox.test.js +4 -3
  24. package/dist/federation/keycache.test.js +4 -4
  25. package/dist/federation/kv.test.js +56 -3
  26. package/dist/federation/middleware.test.js +95 -93
  27. package/dist/federation/mod.cjs +8 -10
  28. package/dist/federation/mod.d.cts +7 -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-ByZmUHwe.js → http-B5BgMxiO.js} +119 -9
  40. package/dist/{http-CTi-owaL.cjs → http-B_jtB30-.cjs} +132 -16
  41. package/dist/{http-M8k5mKc0.d.cts → http-ClB3pLcL.d.cts} +1 -1
  42. package/dist/{http-BbO0ejuk.d.ts → http-DLBDPal9.d.ts} +1 -1
  43. package/dist/{http-DO88HCOK.js → http-uzkhnm0W.js} +3 -2
  44. package/dist/{inbox-BwIgnk8R.js → inbox-CxrUTds4.js} +2 -1
  45. package/dist/{key-CrKmngwF.js → key-DBHCloAO.js} +3 -3
  46. package/dist/{keycache-CFv8xdnH.js → keycache-DRxpZ5r9.js} +1 -1
  47. package/dist/{keys-B2yaEG79.js → keys-ZbcByPg9.js} +1 -1
  48. package/dist/{kv-Bxr0Q87_.d.cts → kv-B4vFhIYL.d.cts} +30 -1
  49. package/dist/{kv-BKNZ-Tb-.d.ts → kv-CYySNrsn.d.ts} +30 -1
  50. package/dist/{kv-CRZrzyXm.js → kv-QzKcOQgP.js} +22 -0
  51. package/dist/{kv-cache-DN9pfMBe.js → kv-cache-BEeqyGER.js} +14 -1
  52. package/dist/{kv-cache-CykGg2IP.js → kv-cache-BqWqxam4.js} +2 -2
  53. package/dist/{kv-cache-BbklA4EG.cjs → kv-cache-DY6hQ8Rf.cjs} +2 -2
  54. package/dist/{ld-Ckl2k3lF.js → ld-CZgNIUGN.js} +4 -3
  55. package/dist/{middleware-X0RaVmfv.cjs → middleware-BaoVtoMl.cjs} +210 -194
  56. package/dist/{middleware-Dv90Gwc-.js → middleware-BqPcChYv.js} +164 -154
  57. package/dist/middleware-CnrWiFJI.cjs +12 -0
  58. package/dist/{middleware-CdPISvYD.js → middleware-CxwWsgSo.js} +162 -165
  59. package/dist/middleware-DoFisLae.js +26 -0
  60. package/dist/middleware-ZN9cd_L8.js +12 -0
  61. package/dist/{mod-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-C8UEs7je.js → owner-BDvRiO5T.js} +44 -8
  86. package/dist/{owner-kQRGVXG1.d.ts → owner-BgI8C-VY.d.ts} +1 -2
  87. package/dist/{owner-B4HbyP8s.d.cts → owner-C-zfmVAD.d.cts} +1 -2
  88. package/dist/{proof-CDW6KgLA.js → proof-DzFse-Bn.js} +46 -11
  89. package/dist/{proof-CWKgvgzL.js → proof-XEPY5YKg.js} +3 -2
  90. package/dist/{proof-yc6sVqKg.cjs → proof-vmNsq1AQ.cjs} +63 -28
  91. package/dist/router-D9eI0s4b.js +118 -0
  92. package/dist/{send-z5jueBCW.js → send-BdhhZ2MN.js} +9 -4
  93. package/dist/sig/http.test.js +6 -7
  94. package/dist/sig/key.test.js +5 -5
  95. package/dist/sig/ld.test.js +6 -6
  96. package/dist/sig/mod.cjs +3 -5
  97. package/dist/sig/mod.d.cts +3 -5
  98. package/dist/sig/mod.d.ts +3 -5
  99. package/dist/sig/mod.js +3 -5
  100. package/dist/sig/owner.test.js +29 -6
  101. package/dist/sig/proof.test.js +6 -6
  102. package/dist/testing/mod.d.ts +70 -6999
  103. package/dist/testing/mod.js +4 -3
  104. package/dist/{transformers-CoBS-oFG.cjs → transformers-BjBg6Lag.cjs} +2 -2
  105. package/dist/{transformers-BFT6d7J5.js → transformers-N_ip_y4P.js} +2 -2
  106. package/dist/{types-BtUjyi5y.js → types-8l28uC8o.js} +30 -25
  107. package/dist/{types-CWgzGaqk.cjs → types-B6z6CqIz.cjs} +30 -25
  108. package/dist/{types-C2XVl6gj.js → types-CPz01LGH.js} +3 -3
  109. package/dist/utils/docloader.test.js +7 -8
  110. package/dist/utils/kv-cache.test.js +5 -3
  111. package/dist/utils/mod.cjs +3 -5
  112. package/dist/utils/mod.d.cts +3 -4
  113. package/dist/utils/mod.d.ts +3 -4
  114. package/dist/utils/mod.js +3 -5
  115. package/package.json +25 -36
  116. package/dist/actor-C6x8UgbE.cjs +0 -42079
  117. package/dist/actor-C76CDThG.js +0 -41647
  118. package/dist/actor-DqFajh9s.d.ts +0 -130
  119. package/dist/actor-DrFLTQdj.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-D17ydBQd.cjs +0 -265
  152. package/dist/lookup-DrCNfWHm.js +0 -253
  153. package/dist/lookup-yP6Lo5JV.js +0 -42178
  154. package/dist/middleware-BSCsvvh-.js +0 -26
  155. package/dist/middleware-GFpHLL1X.cjs +0 -15
  156. package/dist/middleware-pl3iXZpj.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-B4wXNBv8.js +0 -255
  242. package/dist/vocab-BCWe1Ih5.d.ts +0 -14905
  243. package/dist/vocab-CeDBzu-f.d.cts +0 -14903
  244. package/dist/vocab-Hqae4yux.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
@@ -1,253 +0,0 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
-
5
- import { getLogger } from "@logtape/logtape";
6
- import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
7
- import { UrlError, getUserAgent, validatePublicUrl } from "@fedify/vocab-runtime";
8
-
9
- //#region deno.json
10
- var name = "@fedify/fedify";
11
- var version = "2.0.0-dev.1908+c31cc639";
12
- var license = "MIT";
13
- var exports = {
14
- ".": "./src/mod.ts",
15
- "./compat": "./src/compat/mod.ts",
16
- "./federation": "./src/federation/mod.ts",
17
- "./nodeinfo": "./src/nodeinfo/mod.ts",
18
- "./sig": "./src/sig/mod.ts",
19
- "./testing": "./src/testing/mod.ts",
20
- "./vocab": "./src/vocab/mod.ts",
21
- "./utils": "./src/utils/mod.ts",
22
- "./webfinger": "./src/webfinger/mod.ts"
23
- };
24
- var imports = {
25
- "@multiformats/base-x": "npm:@multiformats/base-x@^4.0.1",
26
- "@opentelemetry/api": "npm:@opentelemetry/api@^1.9.0",
27
- "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.27.0",
28
- "@std/assert": "jsr:@std/assert@^0.226.0",
29
- "@std/url": "jsr:@std/url@^0.225.1",
30
- "asn1js": "npm:asn1js@^3.0.5",
31
- "es-toolkit": "jsr:@es-toolkit/es-toolkit@^1.39.5",
32
- "fast-check": "npm:fast-check@^3.22.0",
33
- "fetch-mock": "npm:fetch-mock@^12.5.2",
34
- "json-canon": "npm:json-canon@^1.0.1",
35
- "jsonld": "npm:jsonld@^8.3.2",
36
- "multicodec": "npm:multicodec@^3.2.1",
37
- "pkijs": "npm:pkijs@^3.2.4",
38
- "structured-field-values": "npm:structured-field-values@^2.0.4",
39
- "uri-template-router": "npm:uri-template-router@^1.0.0",
40
- "url-template": "npm:url-template@^3.1.1"
41
- };
42
- var include = ["src/vocab/vocab.ts"];
43
- var exclude = [
44
- ".test-report.xml",
45
- "apidoc/",
46
- "dist/",
47
- "node_modules/",
48
- "npm/",
49
- "pnpm-lock.yaml",
50
- "src/cfworkers/dist/",
51
- "src/cfworkers/fixtures/",
52
- "src/cfworkers/imports.ts",
53
- "src/cfworkers/README.md",
54
- "src/cfworkers/server.ts",
55
- "src/cfworkers/server.js",
56
- "src/cfworkers/server.js.map",
57
- "src/vocab/*.yaml",
58
- "!src/vocab/vocab.ts"
59
- ];
60
- var tasks = {
61
- "codegen": "deno run --allow-read --allow-write --allow-env --check scripts/codegen.ts && deno fmt src/vocab/vocab.ts && deno cache src/vocab/vocab.ts && deno check src/vocab/vocab.ts",
62
- "cache": {
63
- "command": "deno cache src/mod.ts",
64
- "dependencies": ["codegen"]
65
- },
66
- "check": {
67
- "command": "deno fmt --check && deno lint && deno check src/**/*.ts",
68
- "dependencies": ["codegen"]
69
- },
70
- "test": {
71
- "command": "deno test --check --doc --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel",
72
- "dependencies": ["codegen"]
73
- },
74
- "coverage": "deno task test --clean --coverage && deno coverage --html coverage",
75
- "bench": {
76
- "command": "deno bench --allow-read --allow-write --allow-net --allow-env --allow-run --unstable-kv",
77
- "dependencies": ["codegen"]
78
- },
79
- "apidoc": {
80
- "command": "deno doc --html --name=Fedify --output=apidoc/ src/mod.ts",
81
- "dependencies": ["codegen"]
82
- },
83
- "publish": {
84
- "command": "deno publish",
85
- "dependencies": ["codegen"]
86
- },
87
- "pnpm:install": "pnpm install --silent",
88
- "pnpm:build": {
89
- "command": "pnpm exec tsdown",
90
- "dependencies": [
91
- "codegen",
92
- "pnpm:install",
93
- "pnpm:build-vocab"
94
- ]
95
- },
96
- "pnpm:build-vocab-runtime": { "command": "cd ../vocab-runtime && pnpm build" },
97
- "pnpm:build-vocab-tools": { "command": "cd ../vocab-tools && pnpm build" },
98
- "pnpm:build-vocab": { "dependencies": ["pnpm:build-vocab-runtime", "pnpm:build-vocab-tools"] },
99
- "test:node": {
100
- "command": "cd dist/ && node --test",
101
- "dependencies": ["pnpm:build"]
102
- },
103
- "test:bun": {
104
- "command": "cd dist/ && bun test --timeout 60000",
105
- "dependencies": ["pnpm:build-vocab", "pnpm:build"]
106
- },
107
- "test:cfworkers": {
108
- "command": "pnpm exec wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts",
109
- "dependencies": ["pnpm:build-vocab", "pnpm:build"]
110
- },
111
- "test-all": { "dependencies": [
112
- "check",
113
- "test",
114
- "test:node",
115
- "test:bun",
116
- "test:cfworkers"
117
- ] }
118
- };
119
- var deno_default = {
120
- name,
121
- version,
122
- license,
123
- exports,
124
- imports,
125
- include,
126
- exclude,
127
- tasks
128
- };
129
-
130
- //#endregion
131
- //#region src/webfinger/lookup.ts
132
- const logger = getLogger([
133
- "fedify",
134
- "webfinger",
135
- "lookup"
136
- ]);
137
- const DEFAULT_MAX_REDIRECTION = 5;
138
- /**
139
- * Looks up a WebFinger resource.
140
- * @param resource The resource URL to look up.
141
- * @param options Extra options for looking up the resource.
142
- * @returns The resource descriptor, or `null` if not found.
143
- * @since 0.2.0
144
- */
145
- async function lookupWebFinger(resource, options = {}) {
146
- const tracerProvider = options.tracerProvider ?? trace.getTracerProvider();
147
- const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
148
- return await tracer.startActiveSpan("webfinger.lookup", {
149
- kind: SpanKind.CLIENT,
150
- attributes: {
151
- "webfinger.resource": resource.toString(),
152
- "webfinger.resource.scheme": typeof resource === "string" ? resource.replace(/:.*$/, "") : resource.protocol.replace(/:$/, "")
153
- }
154
- }, async (span) => {
155
- try {
156
- const result = await lookupWebFingerInternal(resource, options);
157
- span.setStatus({ code: result === null ? SpanStatusCode.ERROR : SpanStatusCode.OK });
158
- return result;
159
- } catch (error) {
160
- span.setStatus({
161
- code: SpanStatusCode.ERROR,
162
- message: String(error)
163
- });
164
- throw error;
165
- } finally {
166
- span.end();
167
- }
168
- });
169
- }
170
- async function lookupWebFingerInternal(resource, options = {}) {
171
- if (typeof resource === "string") resource = new URL(resource);
172
- let protocol = "https:";
173
- let server;
174
- if (resource.protocol === "acct:") {
175
- const atPos = resource.pathname.lastIndexOf("@");
176
- if (atPos < 0) return null;
177
- server = resource.pathname.substring(atPos + 1);
178
- if (server === "") return null;
179
- } else {
180
- protocol = resource.protocol;
181
- server = resource.host;
182
- }
183
- let url = new URL(`${protocol}//${server}/.well-known/webfinger`);
184
- url.searchParams.set("resource", resource.href);
185
- let redirected = 0;
186
- while (true) {
187
- logger.debug("Fetching WebFinger resource descriptor from {url}...", { url: url.href });
188
- let response;
189
- if (options.allowPrivateAddress !== true) try {
190
- await validatePublicUrl(url.href);
191
- } catch (e) {
192
- if (e instanceof UrlError) {
193
- logger.error("Invalid URL for WebFinger resource descriptor: {error}", { error: e });
194
- return null;
195
- }
196
- throw e;
197
- }
198
- try {
199
- response = await fetch(url, {
200
- headers: {
201
- Accept: "application/jrd+json",
202
- "User-Agent": typeof options.userAgent === "string" ? options.userAgent : getUserAgent(options.userAgent)
203
- },
204
- redirect: "manual",
205
- signal: options.signal
206
- });
207
- } catch (error) {
208
- logger.debug("Failed to fetch WebFinger resource descriptor: {error}", {
209
- url: url.href,
210
- error
211
- });
212
- return null;
213
- }
214
- if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
215
- redirected++;
216
- const maxRedirection = options.maxRedirection ?? DEFAULT_MAX_REDIRECTION;
217
- if (redirected >= maxRedirection) {
218
- logger.error("Too many redirections ({redirections}) while fetching WebFinger resource descriptor.", { redirections: redirected });
219
- return null;
220
- }
221
- const redirectedUrl = new URL(response.headers.get("Location"), response.url == null || response.url === "" ? url : response.url);
222
- if (redirectedUrl.protocol !== url.protocol) {
223
- logger.error("Redirected to a different protocol ({protocol} to {redirectedProtocol}) while fetching WebFinger resource descriptor.", {
224
- protocol: url.protocol,
225
- redirectedProtocol: redirectedUrl.protocol
226
- });
227
- return null;
228
- }
229
- url = redirectedUrl;
230
- continue;
231
- }
232
- if (!response.ok) {
233
- logger.debug("Failed to fetch WebFinger resource descriptor: {status} {statusText}.", {
234
- url: url.href,
235
- status: response.status,
236
- statusText: response.statusText
237
- });
238
- return null;
239
- }
240
- try {
241
- return await response.json();
242
- } catch (e) {
243
- if (e instanceof SyntaxError) {
244
- logger.debug("Failed to parse WebFinger resource descriptor as JSON: {error}", { error: e });
245
- return null;
246
- }
247
- throw e;
248
- }
249
- }
250
- }
251
-
252
- //#endregion
253
- export { deno_default, lookupWebFinger };