diff --git a/package-lock.json b/package-lock.json index 1d67787..f12a536 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "eslint": "8.55.0", "eslint-config-silverwind": "79.3.6", "execa": "8.0.1", + "fetch-enhanced": "12.0.0", "glowie": "1.2.0", "hosted-git-info": "7.0.1", "memize": "2.1.0", @@ -32,6 +33,7 @@ "supports-color": "9.4.0", "text-table": "0.2.0", "timerel": "5.4.3", + "undici": "6.2.0", "versions": "12.0.0", "vitest": "1.0.1", "vitest-config-silverwind": "5.0.0" @@ -633,6 +635,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -2162,6 +2173,28 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-enhanced": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/fetch-enhanced/-/fetch-enhanced-12.0.0.tgz", + "integrity": "sha512-SQO24i/b7gxQIha3zCugGfXCPFqPu8uxJmrk+/zGB/KmV02X747GXpL3L17v2zjqi8SR/2SI/hvsxE9jZA+MGw==", + "dev": true, + "dependencies": { + "hpagent": "1.2.0", + "proxy-from-env": "1.1.0", + "quick-lru": "7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "undici": "*" + }, + "peerDependenciesMeta": { + "undici": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2420,6 +2453,15 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/human-signals": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", @@ -3302,6 +3344,12 @@ "node": ">=4" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3331,6 +3379,18 @@ } ] }, + "node_modules/quick-lru": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.0.0.tgz", + "integrity": "sha512-MX8gB7cVYTrYcFfAnfLlhRd0+Toyl8yX8uBx1MrX7K0jegiz9TumwOK27ldXrgDlHRdVi+MqU9Ssw6dr4BNreg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -4032,6 +4092,18 @@ "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", "dev": true }, + "node_modules/undici": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.2.0.tgz", + "integrity": "sha512-bglzaehBOLMe+BfK+Gv5Vpwpgdq2skaEBbSH92tcAv37wHHHTEGu43boyfTaHB+mwSo3VjyD/8d+ytPGeqsFIg==", + "dev": true, + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=18.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/package.json b/package.json index 781f821..c564522 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "eslint": "8.55.0", "eslint-config-silverwind": "79.3.6", "execa": "8.0.1", + "fetch-enhanced": "12.0.0", "glowie": "1.2.0", "hosted-git-info": "7.0.1", "memize": "2.1.0", @@ -34,6 +35,7 @@ "supports-color": "9.4.0", "text-table": "0.2.0", "timerel": "5.4.3", + "undici": "6.2.0", "versions": "12.0.0", "vitest": "1.0.1", "vitest-config-silverwind": "5.0.0" diff --git a/updates.js b/updates.js index 1cc9089..b53dcf0 100755 --- a/updates.js +++ b/updates.js @@ -1,11 +1,12 @@ #!/usr/bin/env node import ansiRegex from "ansi-regex"; +import fetchEnhanced from "fetch-enhanced"; import minimist from "minimist"; import rat from "registry-auth-token"; import rc from "rc"; import {parse, coerce, diff, gt, gte, lt, neq, valid, validRange} from "semver"; import textTable from "text-table"; -import {cwd, stdout, argv, env, exit} from "node:process"; +import {cwd, stdout, argv, env, exit, versions} from "node:process"; import hostedGitInfo from "hosted-git-info"; import {join, dirname, basename, resolve} from "node:path"; import {lstatSync, readFileSync, truncateSync, writeFileSync, accessSync} from "node:fs"; @@ -17,6 +18,15 @@ import pAll from "p-all"; import memize from "memize"; import picomatch from "picomatch"; +// in bun use fetch as-is, it has built-in proxy support +// in node, wrap the native fetch to add proxy support +let fetch; +if (versions?.bun) { + fetch = globalThis.fetch; +} else { + fetch = fetchEnhanced(globalThis.fetch, {undici: true}); +} + const MAX_SOCKETS = 96; const sep = "\0";