@fedify/fedify 2.0.0-pr.412.1692 → 2.0.0-pr.412.1794

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 (193) hide show
  1. package/README.md +3 -0
  2. package/dist/{actor-D5S46edz.js → actor-BXHc5r-q.js} +1 -1
  3. package/dist/{actor-CrTGiTZd.cjs → actor-Ba9Z1eNJ.cjs} +921 -1451
  4. package/dist/{actor-T6RyhRgk.d.ts → actor-DqFajh9s.d.ts} +2 -2
  5. package/dist/{actor-G2S5sPEA.js → actor-DzhunPC_.js} +189 -677
  6. package/dist/{actor-D6K058Tb.d.cts → actor-f2NtjyCg.d.cts} +2 -2
  7. package/dist/{assert_rejects-DiIiJbZn.js → assert_rejects-Ce45JcFg.js} +1 -1
  8. package/dist/{assert_is_error-BPGph1Jx.js → assert_throws-BNXdRGWP.js} +31 -1
  9. package/dist/{builder-OA47XRft.js → builder-u7usRsT3.js} +7 -8
  10. package/dist/{client-CegPX0Rn.d.cts → client-94iWEfQa.d.cts} +1 -1
  11. package/dist/{client-bgSdkFa2.d.ts → client-BsGzbnV-.d.ts} +1 -1
  12. package/dist/{client-Bmd-i8x8.js → client-pY7-3icS.js} +1 -1
  13. package/dist/compat/mod.d.cts +11 -12
  14. package/dist/compat/mod.d.ts +11 -12
  15. package/dist/compat/transformers.test.js +20 -20
  16. package/dist/{context-ByZprN0S.d.ts → context-DG0huGW-.d.ts} +124 -127
  17. package/dist/{context-C5BsZkDr.d.cts → context-DJ8aSy2Q.d.cts} +124 -127
  18. package/dist/{authdocloader-SjwloJUA.js → docloader-CrbAy9Oc.js} +17 -8
  19. package/dist/{esm-CwHz8Y8t.js → esm-C-Qa1zEM.js} +11 -11
  20. package/dist/federation/builder.test.js +8 -10
  21. package/dist/federation/collection.test.js +7 -9
  22. package/dist/federation/handler.test.js +25 -26
  23. package/dist/federation/idempotency.test.js +25 -26
  24. package/dist/federation/inbox.test.js +4 -6
  25. package/dist/federation/keycache.test.js +3 -4
  26. package/dist/federation/kv.test.js +6 -8
  27. package/dist/federation/middleware.test.js +32 -33
  28. package/dist/federation/mod.cjs +9 -11
  29. package/dist/federation/mod.d.cts +12 -13
  30. package/dist/federation/mod.d.ts +12 -13
  31. package/dist/federation/mod.js +9 -11
  32. package/dist/federation/mq.test.js +8 -10
  33. package/dist/federation/negotiation.test.js +7 -9
  34. package/dist/federation/retry.test.js +4 -5
  35. package/dist/federation/router.test.js +6 -8
  36. package/dist/federation/send.test.js +13 -15
  37. package/dist/{http-D6Uj2x2y.d.ts → http-BbO0ejuk.d.ts} +2 -2
  38. package/dist/{http-C5tC93Hn.js → http-CUVx-vzb.js} +256 -6
  39. package/dist/{http-DGjdMiLc.js → http-D2kIm9la.js} +2 -2
  40. package/dist/{http-BiBofurJ.cjs → http-Dofes42e.cjs} +289 -9
  41. package/dist/{http-D-e6AFwR.d.cts → http-M8k5mKc0.d.cts} +2 -2
  42. package/dist/{inbox-BoDY3z8G.js → inbox-HjG5peXY.js} +1 -1
  43. package/dist/{key-IxRhZpOF.js → key-CxdLUFS6.js} +3 -2
  44. package/dist/{keycache-TEniXNel.js → keycache-bU7COwsh.js} +1 -1
  45. package/dist/{keys-bZxcrZ9Z.js → keys-DMHs8XNn.js} +2 -1
  46. package/dist/kv-cache-CGXcDejL.js +122 -0
  47. package/dist/kv-cache-DN9pfMBe.js +94 -0
  48. package/dist/kv-cache-Dkvbn6rg.cjs +134 -0
  49. package/dist/{ld-DW7A0uIc.js → ld-CIhvSCCr.js} +3 -2
  50. package/dist/{lookup-cVRa2QM-.js → lookup-CHkCVZTU.js} +131 -2
  51. package/dist/lookup-CfFkONZD.cjs +272 -0
  52. package/dist/{type-NEA09tSC.js → lookup-DQRtjvb1.js} +503 -5328
  53. package/dist/middleware-Bot7EEwV.js +26 -0
  54. package/dist/middleware-CFJgmUMW.cjs +15 -0
  55. package/dist/{middleware-Cgr3PtaJ.js → middleware-CJlj5Olw.js} +44 -48
  56. package/dist/middleware-CjHl2NHA.js +15 -0
  57. package/dist/{middleware-TfuVoceY.cjs → middleware-D74TgW2E.cjs} +60 -66
  58. package/dist/{middleware-DvvYAIsd.js → middleware-DMk2Mdn9.js} +40 -46
  59. package/dist/mod-0noXw66R.d.cts +107 -0
  60. package/dist/{mod-BhUKmBJD.d.ts → mod-B2iOw50L.d.ts} +3 -3
  61. package/dist/mod-B9M-8jm2.d.ts +109 -0
  62. package/dist/{mod-DlU8ISoa.d.ts → mod-BlVovdcy.d.ts} +2 -2
  63. package/dist/{mod-D6hQoxC5.d.ts → mod-BoHnwOCs.d.ts} +2 -2
  64. package/dist/{mod-CxkWO3Mg.d.cts → mod-BxRCHTz-.d.cts} +2 -2
  65. package/dist/{mod-jQ4OODsl.d.cts → mod-C58MZ7Wx.d.cts} +1 -1
  66. package/dist/{mod-8DMWKtQE.d.cts → mod-DJcZDvjA.d.cts} +2 -2
  67. package/dist/{mod-Djzcw2ry.d.cts → mod-DgdBYYa0.d.cts} +3 -3
  68. package/dist/{mod-DBzN0aCM.d.ts → mod-Ds0mpFZU.d.ts} +1 -1
  69. package/dist/mod.cjs +19 -32
  70. package/dist/mod.d.cts +15 -16
  71. package/dist/mod.d.ts +16 -17
  72. package/dist/mod.js +14 -16
  73. package/dist/nodeinfo/client.test.js +8 -10
  74. package/dist/nodeinfo/handler.test.js +24 -25
  75. package/dist/nodeinfo/mod.cjs +2 -3
  76. package/dist/nodeinfo/mod.d.cts +2 -4
  77. package/dist/nodeinfo/mod.d.ts +2 -4
  78. package/dist/nodeinfo/mod.js +2 -3
  79. package/dist/nodeinfo/types.test.js +7 -9
  80. package/dist/{owner-BN_tO3cY.d.cts → owner-B4HbyP8s.d.cts} +3 -3
  81. package/dist/{owner-6Vc3UXXE.js → owner-Dvh7mBvr.js} +3 -2
  82. package/dist/{owner-hd9lvQcP.d.ts → owner-kQRGVXG1.d.ts} +3 -3
  83. package/dist/{proof-CRJWXFfT.cjs → proof-D0uThUvD.cjs} +17 -16
  84. package/dist/{proof-C1jhbeNv.js → proof-Dgy35fzc.js} +2 -2
  85. package/dist/{proof-Chi90OXv.js → proof-fqzaMJ4g.js} +5 -4
  86. package/dist/{send-DjATl6i3.js → send-Drp20VO9.js} +2 -2
  87. package/dist/sig/http.test.js +12 -13
  88. package/dist/sig/key.test.js +9 -11
  89. package/dist/sig/ld.test.js +8 -10
  90. package/dist/sig/mod.cjs +9 -11
  91. package/dist/sig/mod.d.cts +5 -7
  92. package/dist/sig/mod.d.ts +5 -7
  93. package/dist/sig/mod.js +5 -7
  94. package/dist/sig/owner.test.js +10 -12
  95. package/dist/sig/proof.test.js +13 -14
  96. package/dist/testing/docloader.test.js +6 -8
  97. package/dist/testing/mod.d.ts +114 -196
  98. package/dist/testing/mod.js +2 -3
  99. package/dist/{testing-BnfPB5T-.js → testing-g4UC4liW.js} +1 -2
  100. package/dist/{types-dLXLjVLf.js → types-BtUjyi5y.js} +1 -1
  101. package/dist/{types-CmmUQisS.cjs → types-CWgzGaqk.cjs} +3 -3
  102. package/dist/{runtime/authdocloader.test.js → utils/docloader.test.js} +14 -15
  103. package/dist/utils/kv-cache.test.js +209 -0
  104. package/dist/utils/mod.cjs +12 -0
  105. package/dist/utils/mod.d.cts +5 -0
  106. package/dist/utils/mod.d.ts +7 -0
  107. package/dist/utils/mod.js +11 -0
  108. package/dist/vocab/actor.test.js +8 -10
  109. package/dist/vocab/lookup.test.js +7 -9
  110. package/dist/vocab/mod.cjs +3 -4
  111. package/dist/vocab/mod.d.cts +3 -5
  112. package/dist/vocab/mod.d.ts +3 -5
  113. package/dist/vocab/mod.js +3 -4
  114. package/dist/vocab/type.test.js +2 -3
  115. package/dist/vocab/vocab.test.js +9 -10
  116. package/dist/{vocab-BI0Ak5lL.d.ts → vocab-BCWe1Ih5.d.ts} +2 -21
  117. package/dist/{vocab-rWbHpc2J.js → vocab-BnR3nIU9.js} +3 -3
  118. package/dist/{vocab-Dw1-yVGg.d.cts → vocab-CeDBzu-f.d.cts} +2 -21
  119. package/dist/{vocab-C5Y-0fGj.cjs → vocab-DFaWWYDn.cjs} +5 -5
  120. package/dist/webfinger/handler.test.js +24 -25
  121. package/dist/webfinger/lookup.test.js +7 -9
  122. package/dist/webfinger/mod.cjs +2 -3
  123. package/dist/webfinger/mod.d.cts +1 -3
  124. package/dist/webfinger/mod.d.ts +1 -3
  125. package/dist/webfinger/mod.js +2 -3
  126. package/dist/x/cfworkers.d.cts +2 -2
  127. package/dist/x/cfworkers.d.ts +2 -2
  128. package/dist/x/cfworkers.test.js +6 -8
  129. package/dist/x/hono.d.cts +10 -11
  130. package/dist/x/hono.d.ts +10 -11
  131. package/dist/x/sveltekit.d.cts +10 -11
  132. package/dist/x/sveltekit.d.ts +10 -11
  133. package/package.json +18 -17
  134. package/dist/assert_throws-BOO88avQ.js +0 -39
  135. package/dist/authdocloader-C5AvdCCi.js +0 -52
  136. package/dist/authdocloader-CQMPmpaO.cjs +0 -58
  137. package/dist/docloader-7Ey7wNHx.cjs +0 -4861
  138. package/dist/docloader-CkweNhUH.js +0 -4795
  139. package/dist/docloader-CxWcuWqQ.d.ts +0 -221
  140. package/dist/docloader-D-MrRyHl.d.cts +0 -219
  141. package/dist/key-CZR7QraT.cjs +0 -290
  142. package/dist/key-Cf8MffVe.cjs +0 -10
  143. package/dist/key-CkxrAIyp.js +0 -260
  144. package/dist/key-Dk0j88Jo.js +0 -10
  145. package/dist/key-Epcl5jpz.js +0 -10
  146. package/dist/lookup-DhQCVVja.js +0 -331
  147. package/dist/lookup-DiV4LFBg.cjs +0 -137
  148. package/dist/middleware-Be1JStOx.js +0 -17
  149. package/dist/middleware-CDOK7WOb.js +0 -26
  150. package/dist/middleware-EjIW2mZB.cjs +0 -17
  151. package/dist/mod-CerN_Sza.d.ts +0 -104
  152. package/dist/mod-Cj1tHXBR.d.cts +0 -102
  153. package/dist/runtime/docloader.test.js +0 -522
  154. package/dist/runtime/key.test.d.ts +0 -3
  155. package/dist/runtime/key.test.js +0 -103
  156. package/dist/runtime/langstr.test.d.ts +0 -3
  157. package/dist/runtime/langstr.test.js +0 -39
  158. package/dist/runtime/link.test.d.ts +0 -3
  159. package/dist/runtime/link.test.js +0 -61
  160. package/dist/runtime/mod.cjs +0 -25
  161. package/dist/runtime/mod.d.cts +0 -6
  162. package/dist/runtime/mod.d.ts +0 -8
  163. package/dist/runtime/mod.js +0 -13
  164. package/dist/runtime/multibase/multibase.test.d.ts +0 -3
  165. package/dist/runtime/multibase/multibase.test.js +0 -358
  166. package/dist/runtime/url.test.d.ts +0 -3
  167. package/dist/runtime/url.test.js +0 -45
  168. /package/dist/{assert_not_equals-f3m3epl3.js → assert_not_equals-C80BG-_5.js} +0 -0
  169. /package/dist/{collection-CcnIw1qY.js → collection-BzWsN9pB.js} +0 -0
  170. /package/dist/{denokv-Bv33Xxea.js → denokv-CCssOzMJ.js} +0 -0
  171. /package/dist/{federation-H2_En3j5.cjs → federation-CRpdnOMS.cjs} +0 -0
  172. /package/dist/{federation-D1U8YY9t.js → federation-jcR8-ZxP.js} +0 -0
  173. /package/dist/{kv-C7sopW2E.d.ts → kv-BKNZ-Tb-.d.ts} +0 -0
  174. /package/dist/{kv-63Cil1MD.d.cts → kv-Bxr0Q87_.d.cts} +0 -0
  175. /package/dist/{mod-FZd39qVq.d.cts → mod-B-hUPT2N.d.cts} +0 -0
  176. /package/dist/{mod-1pDWKvUL.d.ts → mod-CVgZgliM.d.ts} +0 -0
  177. /package/dist/{mod-g0xFzAP9.d.ts → mod-xIj-IT58.d.ts} +0 -0
  178. /package/dist/{mq-CRGm1e_F.d.ts → mq-CUKlBw08.d.ts} +0 -0
  179. /package/dist/{mq-B7R1Q-M5.d.cts → mq-DcJPkXD5.d.cts} +0 -0
  180. /package/dist/{negotiation-5NPJL6zp.js → negotiation-C4nFufNk.js} +0 -0
  181. /package/dist/{nodeinfo-DfycQ8Wf.js → nodeinfo-BnthBobC.js} +0 -0
  182. /package/dist/{nodeinfo-Co9lJrWl.cjs → nodeinfo-CdN0rEnZ.cjs} +0 -0
  183. /package/dist/{retry-D4GJ670a.js → retry-CfF8Gn4d.js} +0 -0
  184. /package/dist/{runtime-DPYEDf-o.js → sig-C34-oHBl.js} +0 -0
  185. /package/dist/{runtime-C58AJWSv.cjs → sig-YYj5tCnr.cjs} +0 -0
  186. /package/dist/{std__assert-X-_kMxKM.js → std__assert-DWivtrGR.js} +0 -0
  187. /package/dist/{types-BSuWJsOm.js → types-C2XVl6gj.js} +0 -0
  188. /package/dist/{runtime → utils}/docloader.test.d.ts +0 -0
  189. /package/dist/{runtime/authdocloader.test.d.ts → utils/kv-cache.test.d.ts} +0 -0
  190. /package/dist/{sig-Cj3tk-ig.js → utils-D-Va7aXC.js} +0 -0
  191. /package/dist/{sig-ByHXzqUi.cjs → utils-DyRU1gdZ.cjs} +0 -0
  192. /package/dist/{webfinger-De_bU0iE.js → webfinger-C72Y8lrh.js} +0 -0
  193. /package/dist/{webfinger-BjOEdFPs.cjs → webfinger-vAtLmxOF.cjs} +0 -0
@@ -0,0 +1,272 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ const require_chunk = require('./chunk-DqRYRqnO.cjs');
6
+ const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
7
+ const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
8
+ const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
9
+
10
+ //#region deno.json
11
+ var name = "@fedify/fedify";
12
+ var version = "2.0.0-pr.412.1794+5c393341";
13
+ var license = "MIT";
14
+ var exports$1 = {
15
+ ".": "./src/mod.ts",
16
+ "./compat": "./src/compat/mod.ts",
17
+ "./federation": "./src/federation/mod.ts",
18
+ "./nodeinfo": "./src/nodeinfo/mod.ts",
19
+ "./sig": "./src/sig/mod.ts",
20
+ "./testing": "./src/testing/mod.ts",
21
+ "./vocab": "./src/vocab/mod.ts",
22
+ "./utils": "./src/utils/mod.ts",
23
+ "./webfinger": "./src/webfinger/mod.ts",
24
+ "./x/cfworkers": "./src/x/cfworkers.ts",
25
+ "./x/denokv": "./src/x/denokv.ts",
26
+ "./x/fresh": "./src/x/fresh.ts",
27
+ "./x/hono": "./src/x/hono.ts",
28
+ "./x/sveltekit": "./src/x/sveltekit.ts"
29
+ };
30
+ var imports = {
31
+ "@cfworker/json-schema": "npm:@cfworker/json-schema@^4.1.1",
32
+ "@multiformats/base-x": "npm:@multiformats/base-x@^4.0.1",
33
+ "@opentelemetry/api": "npm:@opentelemetry/api@^1.9.0",
34
+ "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.27.0",
35
+ "@std/assert": "jsr:@std/assert@^0.226.0",
36
+ "@std/testing": "jsr:@std/testing@^0.224.0",
37
+ "@std/url": "jsr:@std/url@^0.225.1",
38
+ "asn1js": "npm:asn1js@^3.0.5",
39
+ "es-toolkit": "jsr:@es-toolkit/es-toolkit@^1.39.5",
40
+ "fast-check": "npm:fast-check@^3.22.0",
41
+ "fetch-mock": "npm:fetch-mock@^12.5.2",
42
+ "json-canon": "npm:json-canon@^1.0.1",
43
+ "jsonld": "npm:jsonld@^8.3.2",
44
+ "multicodec": "npm:multicodec@^3.2.1",
45
+ "pkijs": "npm:pkijs@^3.2.4",
46
+ "structured-field-values": "npm:structured-field-values@^2.0.4",
47
+ "uri-template-router": "npm:uri-template-router@^0.0.17",
48
+ "url-template": "npm:url-template@^3.1.1"
49
+ };
50
+ var include = ["src/vocab/vocab.ts"];
51
+ var exclude = [
52
+ ".test-report.xml",
53
+ "apidoc/",
54
+ "dist/",
55
+ "node_modules/",
56
+ "npm/",
57
+ "pnpm-lock.yaml",
58
+ "src/cfworkers/dist/",
59
+ "src/cfworkers/fixtures/",
60
+ "src/cfworkers/imports.ts",
61
+ "src/cfworkers/README.md",
62
+ "src/cfworkers/server.ts",
63
+ "src/cfworkers/server.js",
64
+ "src/cfworkers/server.js.map",
65
+ "src/codegen/schema.yaml",
66
+ "src/vocab/*.yaml",
67
+ "!src/vocab/vocab.ts"
68
+ ];
69
+ var tasks = {
70
+ "codegen": "GENPATH=vocab-$(deno eval \"console.log(crypto.randomUUID());\").ts && deno run --allow-read --allow-write --check src/codegen/main.ts src/vocab/ src/vocab/$GENPATH && deno fmt src/vocab/$GENPATH && mv src/vocab/$GENPATH src/vocab/vocab.ts && deno cache src/vocab/vocab.ts && deno check src/vocab/vocab.ts",
71
+ "cache": {
72
+ "command": "deno cache src/mod.ts",
73
+ "dependencies": ["codegen"]
74
+ },
75
+ "check": {
76
+ "command": "deno fmt --check && deno lint && deno check src/**/*.ts",
77
+ "dependencies": ["codegen"]
78
+ },
79
+ "test": {
80
+ "command": "deno test --check --doc --allow-read --allow-write --allow-env --unstable-kv --trace-leaks --parallel",
81
+ "dependencies": ["codegen"]
82
+ },
83
+ "coverage": "deno task test --clean --coverage && deno coverage --html coverage",
84
+ "bench": {
85
+ "command": "deno bench --allow-read --allow-write --allow-net --allow-env --allow-run --unstable-kv",
86
+ "dependencies": ["codegen"]
87
+ },
88
+ "apidoc": {
89
+ "command": "deno doc --html --name=Fedify --output=apidoc/ src/mod.ts",
90
+ "dependencies": ["codegen"]
91
+ },
92
+ "publish": {
93
+ "command": "deno publish",
94
+ "dependencies": ["codegen"]
95
+ },
96
+ "pnpm:install": "pnpm install --silent",
97
+ "pnpm:build": {
98
+ "command": "pnpm exec tsdown",
99
+ "dependencies": [
100
+ "codegen",
101
+ "pnpm:install",
102
+ "pnpm:build-vocab"
103
+ ]
104
+ },
105
+ "pnpm:build-vocab-runtime": { "command": "cd ../vocab-runtime && pnpm build" },
106
+ "pnpm:build-vocab": { "dependencies": ["pnpm:build-vocab-runtime"] },
107
+ "test:node": {
108
+ "command": "cd dist/ && node --test",
109
+ "dependencies": ["pnpm:build"]
110
+ },
111
+ "test:bun": {
112
+ "command": "cd dist/ && bun test --timeout 60000",
113
+ "dependencies": ["pnpm:build-vocab", "pnpm:build"]
114
+ },
115
+ "test:cfworkers": {
116
+ "command": "pnpm exec wrangler deploy --dry-run --outdir src/cfworkers && node --import=tsx src/cfworkers/client.ts",
117
+ "dependencies": ["pnpm:build-vocab", "pnpm:build"]
118
+ },
119
+ "test-all": { "dependencies": [
120
+ "check",
121
+ "test",
122
+ "test:node",
123
+ "test:bun",
124
+ "test:cfworkers"
125
+ ] }
126
+ };
127
+ var deno_default = {
128
+ name,
129
+ version,
130
+ license,
131
+ exports: exports$1,
132
+ imports,
133
+ include,
134
+ exclude,
135
+ tasks
136
+ };
137
+
138
+ //#endregion
139
+ //#region src/webfinger/lookup.ts
140
+ const logger = (0, __logtape_logtape.getLogger)([
141
+ "fedify",
142
+ "webfinger",
143
+ "lookup"
144
+ ]);
145
+ const DEFAULT_MAX_REDIRECTION = 5;
146
+ /**
147
+ * Looks up a WebFinger resource.
148
+ * @param resource The resource URL to look up.
149
+ * @param options Extra options for looking up the resource.
150
+ * @returns The resource descriptor, or `null` if not found.
151
+ * @since 0.2.0
152
+ */
153
+ async function lookupWebFinger(resource, options = {}) {
154
+ const tracerProvider = options.tracerProvider ?? __opentelemetry_api.trace.getTracerProvider();
155
+ const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
156
+ return await tracer.startActiveSpan("webfinger.lookup", {
157
+ kind: __opentelemetry_api.SpanKind.CLIENT,
158
+ attributes: {
159
+ "webfinger.resource": resource.toString(),
160
+ "webfinger.resource.scheme": typeof resource === "string" ? resource.replace(/:.*$/, "") : resource.protocol.replace(/:$/, "")
161
+ }
162
+ }, async (span) => {
163
+ try {
164
+ const result = await lookupWebFingerInternal(resource, options);
165
+ span.setStatus({ code: result === null ? __opentelemetry_api.SpanStatusCode.ERROR : __opentelemetry_api.SpanStatusCode.OK });
166
+ return result;
167
+ } catch (error) {
168
+ span.setStatus({
169
+ code: __opentelemetry_api.SpanStatusCode.ERROR,
170
+ message: String(error)
171
+ });
172
+ throw error;
173
+ } finally {
174
+ span.end();
175
+ }
176
+ });
177
+ }
178
+ async function lookupWebFingerInternal(resource, options = {}) {
179
+ if (typeof resource === "string") resource = new URL(resource);
180
+ let protocol = "https:";
181
+ let server;
182
+ if (resource.protocol === "acct:") {
183
+ const atPos = resource.pathname.lastIndexOf("@");
184
+ if (atPos < 0) return null;
185
+ server = resource.pathname.substring(atPos + 1);
186
+ if (server === "") return null;
187
+ } else {
188
+ protocol = resource.protocol;
189
+ server = resource.host;
190
+ }
191
+ let url = new URL(`${protocol}//${server}/.well-known/webfinger`);
192
+ url.searchParams.set("resource", resource.href);
193
+ let redirected = 0;
194
+ while (true) {
195
+ logger.debug("Fetching WebFinger resource descriptor from {url}...", { url: url.href });
196
+ let response;
197
+ if (options.allowPrivateAddress !== true) try {
198
+ await (0, __fedify_vocab_runtime.validatePublicUrl)(url.href);
199
+ } catch (e) {
200
+ if (e instanceof __fedify_vocab_runtime.UrlError) {
201
+ logger.error("Invalid URL for WebFinger resource descriptor: {error}", { error: e });
202
+ return null;
203
+ }
204
+ throw e;
205
+ }
206
+ try {
207
+ response = await fetch(url, {
208
+ headers: {
209
+ Accept: "application/jrd+json",
210
+ "User-Agent": typeof options.userAgent === "string" ? options.userAgent : (0, __fedify_vocab_runtime.getUserAgent)(options.userAgent)
211
+ },
212
+ redirect: "manual",
213
+ signal: options.signal
214
+ });
215
+ } catch (error) {
216
+ logger.debug("Failed to fetch WebFinger resource descriptor: {error}", {
217
+ url: url.href,
218
+ error
219
+ });
220
+ return null;
221
+ }
222
+ if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
223
+ redirected++;
224
+ const maxRedirection = options.maxRedirection ?? DEFAULT_MAX_REDIRECTION;
225
+ if (redirected >= maxRedirection) {
226
+ logger.error("Too many redirections ({redirections}) while fetching WebFinger resource descriptor.", { redirections: redirected });
227
+ return null;
228
+ }
229
+ const redirectedUrl = new URL(response.headers.get("Location"), response.url == null || response.url === "" ? url : response.url);
230
+ if (redirectedUrl.protocol !== url.protocol) {
231
+ logger.error("Redirected to a different protocol ({protocol} to {redirectedProtocol}) while fetching WebFinger resource descriptor.", {
232
+ protocol: url.protocol,
233
+ redirectedProtocol: redirectedUrl.protocol
234
+ });
235
+ return null;
236
+ }
237
+ url = redirectedUrl;
238
+ continue;
239
+ }
240
+ if (!response.ok) {
241
+ logger.debug("Failed to fetch WebFinger resource descriptor: {status} {statusText}.", {
242
+ url: url.href,
243
+ status: response.status,
244
+ statusText: response.statusText
245
+ });
246
+ return null;
247
+ }
248
+ try {
249
+ return await response.json();
250
+ } catch (e) {
251
+ if (e instanceof SyntaxError) {
252
+ logger.debug("Failed to parse WebFinger resource descriptor as JSON: {error}", { error: e });
253
+ return null;
254
+ }
255
+ throw e;
256
+ }
257
+ }
258
+ }
259
+
260
+ //#endregion
261
+ Object.defineProperty(exports, 'deno_default', {
262
+ enumerable: true,
263
+ get: function () {
264
+ return deno_default;
265
+ }
266
+ });
267
+ Object.defineProperty(exports, 'lookupWebFinger', {
268
+ enumerable: true,
269
+ get: function () {
270
+ return lookupWebFinger;
271
+ }
272
+ });