@fedify/vocab-runtime 2.0.35-dev.2480 → 2.0.35
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.
- package/deno.json +5 -2
- package/dist/internal.cjs +6 -0
- package/dist/internal.d.cts +3 -0
- package/dist/internal.d.ts +3 -0
- package/dist/internal.js +3 -0
- package/dist/mod.cjs +105 -253
- package/dist/mod.d.cts +5 -27
- package/dist/mod.d.ts +6 -27
- package/dist/mod.js +98 -245
- package/dist/public-fetch-BC-nWJNM.d.ts +143 -0
- package/dist/public-fetch-CFnW7XMn.cjs +821 -0
- package/dist/public-fetch-DBpt3xxf.d.cts +143 -0
- package/dist/public-fetch-Dfmc_Kfy.js +772 -0
- package/dist/tests/{body-s65I5CCa.mjs → body-ByUnLtuw.mjs} +1 -1
- package/dist/tests/{body-moFua5l6.cjs → body-Cul4-oB8.cjs} +1 -1
- package/dist/tests/body.test.cjs +1 -1
- package/dist/tests/body.test.mjs +1 -1
- package/dist/tests/docloader.test.cjs +616 -1306
- package/dist/tests/docloader.test.mjs +562 -1271
- package/dist/tests/esm-4DuocLvD.cjs +1208 -0
- package/dist/tests/esm-CnLt0wAF.mjs +1225 -0
- package/dist/tests/internal/multicodec.test.cjs +1 -1
- package/dist/tests/internal/multicodec.test.mjs +1 -1
- package/dist/tests/key.test.cjs +2 -2
- package/dist/tests/key.test.mjs +2 -2
- package/dist/tests/langstr.test.cjs +1 -1
- package/dist/tests/langstr.test.mjs +1 -1
- package/dist/tests/langtag.test.cjs +1 -1
- package/dist/tests/langtag.test.mjs +1 -1
- package/dist/tests/link.test.cjs +1 -1
- package/dist/tests/link.test.mjs +1 -1
- package/dist/tests/multibase/multibase.test.cjs +1 -1
- package/dist/tests/multibase/multibase.test.mjs +1 -1
- package/dist/tests/node-BTPYk2h-.mjs +84 -0
- package/dist/tests/node-DWD76vPo.cjs +90 -0
- package/dist/tests/pin-grant-BAlKqSph.mjs +53 -0
- package/dist/tests/pin-grant-CU-o367k.cjs +70 -0
- package/dist/tests/pin-grant.test.cjs +88 -0
- package/dist/tests/pin-grant.test.d.cts +1 -0
- package/dist/tests/pin-grant.test.d.mts +1 -0
- package/dist/tests/pin-grant.test.mjs +88 -0
- package/dist/tests/pinners/bun.test.cjs +167 -0
- package/dist/tests/pinners/bun.test.d.cts +1 -0
- package/dist/tests/pinners/bun.test.d.mts +1 -0
- package/dist/tests/pinners/bun.test.mjs +167 -0
- package/dist/tests/pinners/node.test.cjs +269 -0
- package/dist/tests/pinners/node.test.d.cts +1 -0
- package/dist/tests/pinners/node.test.d.mts +1 -0
- package/dist/tests/pinners/node.test.mjs +268 -0
- package/dist/tests/pinners/pinners.test.cjs +197 -0
- package/dist/tests/pinners/pinners.test.d.cts +1 -0
- package/dist/tests/pinners/pinners.test.d.mts +1 -0
- package/dist/tests/pinners/pinners.test.mjs +197 -0
- package/dist/tests/pinners/testdata/node-child.cjs +135 -0
- package/dist/tests/pinners/testdata/node-child.d.cts +1 -0
- package/dist/tests/pinners/testdata/node-child.d.mts +1 -0
- package/dist/tests/pinners/testdata/node-child.mjs +134 -0
- package/dist/tests/pinners-BjE-YJLL.cjs +221 -0
- package/dist/tests/pinners-C0SoXz-S.mjs +203 -0
- package/dist/tests/public-fetch-BUSPlh1C.mjs +170 -0
- package/dist/tests/public-fetch-Ddjfxbwc.cjs +187 -0
- package/dist/tests/public-fetch.test.cjs +1074 -0
- package/dist/tests/public-fetch.test.d.cts +1 -0
- package/dist/tests/public-fetch.test.d.mts +1 -0
- package/dist/tests/public-fetch.test.mjs +1074 -0
- package/dist/tests/{request-BnwgFF6c.cjs → request-B7Iyskql.cjs} +1 -1
- package/dist/tests/{request-CZWDeBC-.mjs → request-pGToUa6Q.mjs} +1 -1
- package/dist/tests/request.test.cjs +1 -1
- package/dist/tests/request.test.mjs +1 -1
- package/dist/tests/support-EdBgVdNy.cjs +363 -0
- package/dist/tests/support-SnCB9BSR.mjs +272 -0
- package/dist/tests/{url-Qk1svKZU.cjs → url-DLuSj57U.cjs} +88 -12
- package/dist/tests/{url-DzlMS01z.mjs → url-DjsVF44Q.mjs} +65 -13
- package/dist/tests/url.test.cjs +4 -1
- package/dist/tests/url.test.mjs +4 -1
- package/package.json +13 -2
- package/src/docloader.test.ts +690 -31
- package/src/docloader.ts +174 -67
- package/src/internal.ts +13 -0
- package/src/pin-grant.test.ts +118 -0
- package/src/pin-grant.ts +99 -0
- package/src/pinners/bun.test.ts +278 -0
- package/src/pinners/bun.ts +223 -0
- package/src/pinners/mod.ts +59 -0
- package/src/pinners/node.test.ts +415 -0
- package/src/pinners/node.ts +144 -0
- package/src/pinners/pinners.test.ts +316 -0
- package/src/pinners/testdata/node-child.ts +147 -0
- package/src/pinners/testdata/proxy-child.ts +82 -0
- package/src/pinners/testdata/support.ts +343 -0
- package/src/pinners/testdata/tls-cert.pem +12 -0
- package/src/pinners/testdata/tls-child.ts +88 -0
- package/src/pinners/testdata/tls-key.pem +5 -0
- package/src/pinners/types.ts +48 -0
- package/src/public-fetch.test.ts +1286 -0
- package/src/public-fetch.ts +338 -0
- package/src/testdata/public-fetch-deno-worker.ts +74 -0
- package/src/url.test.ts +11 -0
- package/src/url.ts +113 -22
- package/tsdown.config.ts +12 -3
- /package/dist/tests/{langtag-Bm8oKhIO.cjs → langtag-B_fXk5oL.cjs} +0 -0
- /package/dist/tests/{langtag-QZZgy903.mjs → langtag-CwDxJ10m.mjs} +0 -0
- /package/dist/tests/{link-NUUWCdnK.mjs → link-CYszIegt.mjs} +0 -0
- /package/dist/tests/{link-FguCydMA.cjs → link-qDTmjPw_.cjs} +0 -0
- /package/dist/tests/{multibase-CnmModw0.cjs → multibase-BKJat02S.cjs} +0 -0
- /package/dist/tests/{multibase-DLBufb99.mjs → multibase-CNswrMoP.mjs} +0 -0
- /package/dist/tests/{multicodec-CxGVGa91.cjs → multicodec-B-_CSt1M.cjs} +0 -0
- /package/dist/tests/{multicodec-CyFp54fI.mjs → multicodec-CDEzQTyO.mjs} +0 -0
|
@@ -18,28 +18,65 @@ var UrlError = class extends Error {
|
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
20
|
* Validates a URL to prevent SSRF attacks.
|
|
21
|
+
*
|
|
22
|
+
* This function only checks the addresses that the hostname currently
|
|
23
|
+
* resolves to; it does not pin the connection to those addresses. A request
|
|
24
|
+
* made after this check resolves the hostname again, so this function alone
|
|
25
|
+
* does not prevent DNS rebinding.
|
|
21
26
|
*/
|
|
22
27
|
async function validatePublicUrl(url) {
|
|
23
|
-
const
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
if (hostname.startsWith("[") && hostname.endsWith("]")) hostname = hostname.slice(1, -1);
|
|
27
|
-
if (hostname === "localhost") throw new UrlError("Localhost is not allowed");
|
|
28
|
-
const hostnameFamily = (0, node_net.isIP)(hostname);
|
|
29
|
-
if (hostnameFamily !== 0) {
|
|
30
|
-
validatePublicIpAddress(hostname, hostnameFamily);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if ("Deno" in globalThis && !(0, node_net.isIP)(hostname)) {
|
|
28
|
+
const { hostname, family } = parsePublicUrl(url);
|
|
29
|
+
if (family !== 0) return;
|
|
30
|
+
if ("Deno" in globalThis) {
|
|
34
31
|
if ((await Deno.permissions.query({ name: "net" })).state !== "granted") return;
|
|
35
32
|
}
|
|
36
33
|
if ("Bun" in globalThis) {
|
|
37
34
|
if (hostname === "example.com" || hostname.endsWith(".example.com")) return;
|
|
38
35
|
else if (hostname === "fedify-test.internal") throw new UrlError("Invalid or private address: fedify-test.internal");
|
|
39
36
|
}
|
|
37
|
+
await lookupPublicAddresses(hostname, lookupAllAddresses);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolves all addresses of the given hostname through `node:dns/promises`.
|
|
41
|
+
* The default `dns` object is looked up on every call so that tests can still
|
|
42
|
+
* stub `dns.lookup()`.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
function lookupAllAddresses(hostname) {
|
|
46
|
+
return node_dns_promises.default.lookup(hostname, { all: true });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Checks the parts of a URL that can be validated without resolving it:
|
|
50
|
+
* the protocol, the `localhost` hostname, and IP literal hostnames.
|
|
51
|
+
* @throws {UrlError} If the URL is not allowed.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
function parsePublicUrl(url) {
|
|
55
|
+
const parsed = new URL(url);
|
|
56
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new UrlError(`Unsupported protocol: ${parsed.protocol}`);
|
|
57
|
+
let hostname = parsed.hostname;
|
|
58
|
+
if (hostname.startsWith("[") && hostname.endsWith("]")) hostname = hostname.slice(1, -1);
|
|
59
|
+
if (hostname === "localhost") throw new UrlError("Localhost is not allowed");
|
|
60
|
+
const family = (0, node_net.isIP)(hostname);
|
|
61
|
+
if (family !== 0) validatePublicIpAddress(hostname, family);
|
|
62
|
+
return {
|
|
63
|
+
url: parsed,
|
|
64
|
+
hostname,
|
|
65
|
+
family
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolves the given hostname and checks that every returned IP address is
|
|
70
|
+
* public.
|
|
71
|
+
* @returns The IP addresses of the hostname, without non-IP entries.
|
|
72
|
+
* @throws {UrlError} If the lookup fails, returns no IP address, or returns
|
|
73
|
+
* any non-public address.
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
async function lookupPublicAddresses(hostname, lookup) {
|
|
40
77
|
let addresses;
|
|
41
78
|
try {
|
|
42
|
-
addresses = await
|
|
79
|
+
addresses = await lookup(hostname);
|
|
43
80
|
} catch (error) {
|
|
44
81
|
throw new UrlError("DNS lookup failed", {
|
|
45
82
|
cause: error,
|
|
@@ -47,6 +84,21 @@ async function validatePublicUrl(url) {
|
|
|
47
84
|
});
|
|
48
85
|
}
|
|
49
86
|
validateLookupAddresses(addresses);
|
|
87
|
+
return addresses.filter(({ address }) => (0, node_net.isIP)(address) !== 0).map(({ address }) => ({
|
|
88
|
+
address,
|
|
89
|
+
family: (0, node_net.isIP)(address)
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Checks that the given IP address is public. This is used right before
|
|
94
|
+
* connecting to an address that passed {@link lookupPublicAddresses}.
|
|
95
|
+
* @throws {UrlError} If the address is not a public IP address.
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
function assertPublicAddress(address) {
|
|
99
|
+
const family = (0, node_net.isIP)(address.address);
|
|
100
|
+
if (family === 0 || family !== address.family) throw new UrlError(`Invalid or private address: ${address.address}`);
|
|
101
|
+
validatePublicIpAddress(address.address, family);
|
|
50
102
|
}
|
|
51
103
|
/**
|
|
52
104
|
* Validates the IP addresses returned by `node:dns.lookup()`.
|
|
@@ -218,6 +270,12 @@ Object.defineProperty(exports, "UrlError", {
|
|
|
218
270
|
return UrlError;
|
|
219
271
|
}
|
|
220
272
|
});
|
|
273
|
+
Object.defineProperty(exports, "assertPublicAddress", {
|
|
274
|
+
enumerable: true,
|
|
275
|
+
get: function() {
|
|
276
|
+
return assertPublicAddress;
|
|
277
|
+
}
|
|
278
|
+
});
|
|
221
279
|
Object.defineProperty(exports, "expandIPv6Address", {
|
|
222
280
|
enumerable: true,
|
|
223
281
|
get: function() {
|
|
@@ -236,6 +294,24 @@ Object.defineProperty(exports, "isValidPublicIPv6Address", {
|
|
|
236
294
|
return isValidPublicIPv6Address;
|
|
237
295
|
}
|
|
238
296
|
});
|
|
297
|
+
Object.defineProperty(exports, "lookupAllAddresses", {
|
|
298
|
+
enumerable: true,
|
|
299
|
+
get: function() {
|
|
300
|
+
return lookupAllAddresses;
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
Object.defineProperty(exports, "lookupPublicAddresses", {
|
|
304
|
+
enumerable: true,
|
|
305
|
+
get: function() {
|
|
306
|
+
return lookupPublicAddresses;
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
Object.defineProperty(exports, "parsePublicUrl", {
|
|
310
|
+
enumerable: true,
|
|
311
|
+
get: function() {
|
|
312
|
+
return parsePublicUrl;
|
|
313
|
+
}
|
|
314
|
+
});
|
|
239
315
|
Object.defineProperty(exports, "validateLookupAddresses", {
|
|
240
316
|
enumerable: true,
|
|
241
317
|
get: function() {
|
|
@@ -16,28 +16,65 @@ var UrlError = class extends Error {
|
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
18
|
* Validates a URL to prevent SSRF attacks.
|
|
19
|
+
*
|
|
20
|
+
* This function only checks the addresses that the hostname currently
|
|
21
|
+
* resolves to; it does not pin the connection to those addresses. A request
|
|
22
|
+
* made after this check resolves the hostname again, so this function alone
|
|
23
|
+
* does not prevent DNS rebinding.
|
|
19
24
|
*/
|
|
20
25
|
async function validatePublicUrl(url) {
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
if (hostname.startsWith("[") && hostname.endsWith("]")) hostname = hostname.slice(1, -1);
|
|
25
|
-
if (hostname === "localhost") throw new UrlError("Localhost is not allowed");
|
|
26
|
-
const hostnameFamily = isIP(hostname);
|
|
27
|
-
if (hostnameFamily !== 0) {
|
|
28
|
-
validatePublicIpAddress(hostname, hostnameFamily);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if ("Deno" in globalThis && !isIP(hostname)) {
|
|
26
|
+
const { hostname, family } = parsePublicUrl(url);
|
|
27
|
+
if (family !== 0) return;
|
|
28
|
+
if ("Deno" in globalThis) {
|
|
32
29
|
if ((await Deno.permissions.query({ name: "net" })).state !== "granted") return;
|
|
33
30
|
}
|
|
34
31
|
if ("Bun" in globalThis) {
|
|
35
32
|
if (hostname === "example.com" || hostname.endsWith(".example.com")) return;
|
|
36
33
|
else if (hostname === "fedify-test.internal") throw new UrlError("Invalid or private address: fedify-test.internal");
|
|
37
34
|
}
|
|
35
|
+
await lookupPublicAddresses(hostname, lookupAllAddresses);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolves all addresses of the given hostname through `node:dns/promises`.
|
|
39
|
+
* The default `dns` object is looked up on every call so that tests can still
|
|
40
|
+
* stub `dns.lookup()`.
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
function lookupAllAddresses(hostname) {
|
|
44
|
+
return dns.lookup(hostname, { all: true });
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Checks the parts of a URL that can be validated without resolving it:
|
|
48
|
+
* the protocol, the `localhost` hostname, and IP literal hostnames.
|
|
49
|
+
* @throws {UrlError} If the URL is not allowed.
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
function parsePublicUrl(url) {
|
|
53
|
+
const parsed = new URL(url);
|
|
54
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new UrlError(`Unsupported protocol: ${parsed.protocol}`);
|
|
55
|
+
let hostname = parsed.hostname;
|
|
56
|
+
if (hostname.startsWith("[") && hostname.endsWith("]")) hostname = hostname.slice(1, -1);
|
|
57
|
+
if (hostname === "localhost") throw new UrlError("Localhost is not allowed");
|
|
58
|
+
const family = isIP(hostname);
|
|
59
|
+
if (family !== 0) validatePublicIpAddress(hostname, family);
|
|
60
|
+
return {
|
|
61
|
+
url: parsed,
|
|
62
|
+
hostname,
|
|
63
|
+
family
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resolves the given hostname and checks that every returned IP address is
|
|
68
|
+
* public.
|
|
69
|
+
* @returns The IP addresses of the hostname, without non-IP entries.
|
|
70
|
+
* @throws {UrlError} If the lookup fails, returns no IP address, or returns
|
|
71
|
+
* any non-public address.
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
async function lookupPublicAddresses(hostname, lookup) {
|
|
38
75
|
let addresses;
|
|
39
76
|
try {
|
|
40
|
-
addresses = await
|
|
77
|
+
addresses = await lookup(hostname);
|
|
41
78
|
} catch (error) {
|
|
42
79
|
throw new UrlError("DNS lookup failed", {
|
|
43
80
|
cause: error,
|
|
@@ -45,6 +82,21 @@ async function validatePublicUrl(url) {
|
|
|
45
82
|
});
|
|
46
83
|
}
|
|
47
84
|
validateLookupAddresses(addresses);
|
|
85
|
+
return addresses.filter(({ address }) => isIP(address) !== 0).map(({ address }) => ({
|
|
86
|
+
address,
|
|
87
|
+
family: isIP(address)
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Checks that the given IP address is public. This is used right before
|
|
92
|
+
* connecting to an address that passed {@link lookupPublicAddresses}.
|
|
93
|
+
* @throws {UrlError} If the address is not a public IP address.
|
|
94
|
+
* @internal
|
|
95
|
+
*/
|
|
96
|
+
function assertPublicAddress(address) {
|
|
97
|
+
const family = isIP(address.address);
|
|
98
|
+
if (family === 0 || family !== address.family) throw new UrlError(`Invalid or private address: ${address.address}`);
|
|
99
|
+
validatePublicIpAddress(address.address, family);
|
|
48
100
|
}
|
|
49
101
|
/**
|
|
50
102
|
* Validates the IP addresses returned by `node:dns.lookup()`.
|
|
@@ -210,4 +262,4 @@ function matchesIPv6Prefix(address, prefixWords, prefixLength) {
|
|
|
210
262
|
return true;
|
|
211
263
|
}
|
|
212
264
|
//#endregion
|
|
213
|
-
export {
|
|
265
|
+
export { isValidPublicIPv6Address as a, parsePublicUrl as c, isValidPublicIPv4Address as i, validateLookupAddresses as l, assertPublicAddress as n, lookupAllAddresses as o, expandIPv6Address as r, lookupPublicAddresses as s, UrlError as t, validatePublicUrl as u };
|
package/dist/tests/url.test.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("./chunk-Do9eywBl.cjs");
|
|
2
|
-
const require_url = require("./url-
|
|
2
|
+
const require_url = require("./url-DLuSj57U.cjs");
|
|
3
3
|
let node_test = require("node:test");
|
|
4
4
|
let node_assert = require("node:assert");
|
|
5
5
|
//#region src/url.test.ts
|
|
@@ -52,6 +52,9 @@ let node_assert = require("node:assert");
|
|
|
52
52
|
await require_url.validatePublicUrl("https://[2001:db8::1]");
|
|
53
53
|
await require_url.validatePublicUrl("https://[64:ff9b::8.8.8.8]");
|
|
54
54
|
});
|
|
55
|
+
(0, node_test.test)("validatePublicUrl() keeps rejecting fedify-test.internal on Bun", { skip: !("Bun" in globalThis) }, async () => {
|
|
56
|
+
await (0, node_assert.rejects)(() => require_url.validatePublicUrl("https://fedify-test.internal/"), (error) => error instanceof require_url.UrlError && error.reason === "disallowed");
|
|
57
|
+
});
|
|
55
58
|
(0, node_test.test)("validateLookupAddresses() tolerates Cloudflare Workers CNAME entries", () => {
|
|
56
59
|
require_url.validateLookupAddresses([
|
|
57
60
|
{
|
package/dist/tests/url.test.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as isValidPublicIPv6Address, i as isValidPublicIPv4Address, l as validateLookupAddresses, r as expandIPv6Address, t as UrlError, u as validatePublicUrl } from "./url-DjsVF44Q.mjs";
|
|
2
2
|
import { test } from "node:test";
|
|
3
3
|
import { deepStrictEqual, ok, rejects, strictEqual, throws } from "node:assert";
|
|
4
4
|
//#region src/url.test.ts
|
|
@@ -51,6 +51,9 @@ test("validatePublicUrl()", async () => {
|
|
|
51
51
|
await validatePublicUrl("https://[2001:db8::1]");
|
|
52
52
|
await validatePublicUrl("https://[64:ff9b::8.8.8.8]");
|
|
53
53
|
});
|
|
54
|
+
test("validatePublicUrl() keeps rejecting fedify-test.internal on Bun", { skip: !("Bun" in globalThis) }, async () => {
|
|
55
|
+
await rejects(() => validatePublicUrl("https://fedify-test.internal/"), (error) => error instanceof UrlError && error.reason === "disallowed");
|
|
56
|
+
});
|
|
54
57
|
test("validateLookupAddresses() tolerates Cloudflare Workers CNAME entries", () => {
|
|
55
58
|
validateLookupAddresses([
|
|
56
59
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fedify/vocab-runtime",
|
|
3
|
-
"version": "2.0.35
|
|
3
|
+
"version": "2.0.35",
|
|
4
4
|
"homepage": "https://fedify.dev/",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,6 +35,16 @@
|
|
|
35
35
|
"require": "./dist/mod.cjs",
|
|
36
36
|
"default": "./dist/mod.js"
|
|
37
37
|
},
|
|
38
|
+
"./internal": {
|
|
39
|
+
"types": {
|
|
40
|
+
"import": "./dist/internal.d.ts",
|
|
41
|
+
"require": "./dist/internal.d.cts",
|
|
42
|
+
"default": "./dist/internal.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"import": "./dist/internal.js",
|
|
45
|
+
"require": "./dist/internal.cjs",
|
|
46
|
+
"default": "./dist/internal.js"
|
|
47
|
+
},
|
|
38
48
|
"./jsonld": {
|
|
39
49
|
"types": {
|
|
40
50
|
"import": "./dist/jsonld.d.ts",
|
|
@@ -83,7 +93,8 @@
|
|
|
83
93
|
"asn1js": "^3.0.6",
|
|
84
94
|
"byte-encodings": "^1.0.11",
|
|
85
95
|
"jsonld": "^9.0.0",
|
|
86
|
-
"pkijs": "^3.3.3"
|
|
96
|
+
"pkijs": "^3.3.3",
|
|
97
|
+
"undici": "^7.30.1"
|
|
87
98
|
},
|
|
88
99
|
"scripts": {
|
|
89
100
|
"build:self": "tsdown",
|