.
This commit is contained in:
+53
@@ -0,0 +1,53 @@
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
// get platform specific cache directory adapted from playwright's handling
|
||||
// https://github.com/microsoft/playwright/blob/7d924470d397975a74a19184c136b3573a974e13/packages/playwright-core/src/utils/registry.ts#L141
|
||||
export function getCacheDirectory(fileDirectory, envPath) {
|
||||
let result;
|
||||
if (envPath) {
|
||||
result = envPath;
|
||||
} else {
|
||||
let systemCacheDirectory;
|
||||
if (process.platform === 'linux') {
|
||||
systemCacheDirectory = process.env.XDG_CACHE_HOME || path.join(os.homedir(), '.cache');
|
||||
} else if (process.platform === 'darwin') {
|
||||
systemCacheDirectory = path.join(os.homedir(), 'Library', 'Caches');
|
||||
} else if (process.platform === 'win32') {
|
||||
systemCacheDirectory = process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local');
|
||||
} else {
|
||||
/// Attempt to use generic tmp location for un-handled platform
|
||||
if (!systemCacheDirectory) {
|
||||
for (const dir of [
|
||||
path.join(os.homedir(), '.cache'),
|
||||
path.join(os.tmpdir())
|
||||
]){
|
||||
if (fs.existsSync(dir)) {
|
||||
systemCacheDirectory = dir;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!systemCacheDirectory) {
|
||||
console.error(Object.defineProperty(new Error('Unsupported platform: ' + process.platform), "__NEXT_ERROR_CODE", {
|
||||
value: "E141",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
}));
|
||||
process.exit(0);
|
||||
}
|
||||
}
|
||||
result = path.join(systemCacheDirectory, fileDirectory);
|
||||
}
|
||||
if (!path.isAbsolute(result)) {
|
||||
// It is important to resolve to the absolute path:
|
||||
// - for unzipping to work correctly;
|
||||
// - so that registry directory matches between installation and execution.
|
||||
// INIT_CWD points to the root of `npm/yarn install` and is probably what
|
||||
// the user meant when typing the relative path.
|
||||
result = path.resolve(process.env['INIT_CWD'] || process.cwd(), result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=get-cache-directory.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/get-cache-directory.ts"],"sourcesContent":["import os from 'os'\nimport path from 'path'\nimport fs from 'fs'\n\n// get platform specific cache directory adapted from playwright's handling\n// https://github.com/microsoft/playwright/blob/7d924470d397975a74a19184c136b3573a974e13/packages/playwright-core/src/utils/registry.ts#L141\nexport function getCacheDirectory(fileDirectory: string, envPath?: string) {\n let result\n\n if (envPath) {\n result = envPath\n } else {\n let systemCacheDirectory\n if (process.platform === 'linux') {\n systemCacheDirectory =\n process.env.XDG_CACHE_HOME || path.join(os.homedir(), '.cache')\n } else if (process.platform === 'darwin') {\n systemCacheDirectory = path.join(os.homedir(), 'Library', 'Caches')\n } else if (process.platform === 'win32') {\n systemCacheDirectory =\n process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local')\n } else {\n /// Attempt to use generic tmp location for un-handled platform\n if (!systemCacheDirectory) {\n for (const dir of [\n path.join(os.homedir(), '.cache'),\n path.join(os.tmpdir()),\n ]) {\n if (fs.existsSync(dir)) {\n systemCacheDirectory = dir\n break\n }\n }\n }\n\n if (!systemCacheDirectory) {\n console.error(new Error('Unsupported platform: ' + process.platform))\n process.exit(0)\n }\n }\n result = path.join(systemCacheDirectory, fileDirectory)\n }\n\n if (!path.isAbsolute(result)) {\n // It is important to resolve to the absolute path:\n // - for unzipping to work correctly;\n // - so that registry directory matches between installation and execution.\n // INIT_CWD points to the root of `npm/yarn install` and is probably what\n // the user meant when typing the relative path.\n result = path.resolve(process.env['INIT_CWD'] || process.cwd(), result)\n }\n return result\n}\n"],"names":["os","path","fs","getCacheDirectory","fileDirectory","envPath","result","systemCacheDirectory","process","platform","env","XDG_CACHE_HOME","join","homedir","LOCALAPPDATA","dir","tmpdir","existsSync","console","error","Error","exit","isAbsolute","resolve","cwd"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,OAAOC,QAAQ,KAAI;AAEnB,2EAA2E;AAC3E,4IAA4I;AAC5I,OAAO,SAASC,kBAAkBC,aAAqB,EAAEC,OAAgB;IACvE,IAAIC;IAEJ,IAAID,SAAS;QACXC,SAASD;IACX,OAAO;QACL,IAAIE;QACJ,IAAIC,QAAQC,QAAQ,KAAK,SAAS;YAChCF,uBACEC,QAAQE,GAAG,CAACC,cAAc,IAAIV,KAAKW,IAAI,CAACZ,GAAGa,OAAO,IAAI;QAC1D,OAAO,IAAIL,QAAQC,QAAQ,KAAK,UAAU;YACxCF,uBAAuBN,KAAKW,IAAI,CAACZ,GAAGa,OAAO,IAAI,WAAW;QAC5D,OAAO,IAAIL,QAAQC,QAAQ,KAAK,SAAS;YACvCF,uBACEC,QAAQE,GAAG,CAACI,YAAY,IAAIb,KAAKW,IAAI,CAACZ,GAAGa,OAAO,IAAI,WAAW;QACnE,OAAO;YACL,+DAA+D;YAC/D,IAAI,CAACN,sBAAsB;gBACzB,KAAK,MAAMQ,OAAO;oBAChBd,KAAKW,IAAI,CAACZ,GAAGa,OAAO,IAAI;oBACxBZ,KAAKW,IAAI,CAACZ,GAAGgB,MAAM;iBACpB,CAAE;oBACD,IAAId,GAAGe,UAAU,CAACF,MAAM;wBACtBR,uBAAuBQ;wBACvB;oBACF;gBACF;YACF;YAEA,IAAI,CAACR,sBAAsB;gBACzBW,QAAQC,KAAK,CAAC,qBAAsD,CAAtD,IAAIC,MAAM,2BAA2BZ,QAAQC,QAAQ,GAArD,qBAAA;2BAAA;gCAAA;kCAAA;gBAAqD;gBACnED,QAAQa,IAAI,CAAC;YACf;QACF;QACAf,SAASL,KAAKW,IAAI,CAACL,sBAAsBH;IAC3C;IAEA,IAAI,CAACH,KAAKqB,UAAU,CAAChB,SAAS;QAC5B,mDAAmD;QACnD,uCAAuC;QACvC,6EAA6E;QAC7E,yEAAyE;QACzE,gDAAgD;QAChDA,SAASL,KAAKsB,OAAO,CAACf,QAAQE,GAAG,CAAC,WAAW,IAAIF,QAAQgB,GAAG,IAAIlB;IAClE;IACA,OAAOA;AACT","ignoreList":[0]}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import { execSync } from 'child_process';
|
||||
import { getPkgManager } from './get-pkg-manager';
|
||||
export function getNpxCommand(baseDir) {
|
||||
const pkgManager = getPkgManager(baseDir);
|
||||
let command = 'npx --yes';
|
||||
if (pkgManager === 'pnpm') {
|
||||
command = 'pnpm --silent dlx';
|
||||
} else if (pkgManager === 'yarn') {
|
||||
try {
|
||||
execSync('yarn dlx --help', {
|
||||
stdio: 'ignore'
|
||||
});
|
||||
command = 'yarn --quiet dlx';
|
||||
} catch {}
|
||||
}
|
||||
return command;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=get-npx-command.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/get-npx-command.ts"],"sourcesContent":["import { execSync } from 'child_process'\nimport { getPkgManager } from './get-pkg-manager'\n\nexport function getNpxCommand(baseDir: string) {\n const pkgManager = getPkgManager(baseDir)\n let command = 'npx --yes'\n if (pkgManager === 'pnpm') {\n command = 'pnpm --silent dlx'\n } else if (pkgManager === 'yarn') {\n try {\n execSync('yarn dlx --help', { stdio: 'ignore' })\n command = 'yarn --quiet dlx'\n } catch {}\n }\n\n return command\n}\n"],"names":["execSync","getPkgManager","getNpxCommand","baseDir","pkgManager","command","stdio"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAe;AACxC,SAASC,aAAa,QAAQ,oBAAmB;AAEjD,OAAO,SAASC,cAAcC,OAAe;IAC3C,MAAMC,aAAaH,cAAcE;IACjC,IAAIE,UAAU;IACd,IAAID,eAAe,QAAQ;QACzBC,UAAU;IACZ,OAAO,IAAID,eAAe,QAAQ;QAChC,IAAI;YACFJ,SAAS,mBAAmB;gBAAEM,OAAO;YAAS;YAC9CD,UAAU;QACZ,EAAE,OAAM,CAAC;IACX;IAEA,OAAOA;AACT","ignoreList":[0]}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
import { execSync } from 'child_process';
|
||||
import dns from 'dns/promises';
|
||||
function getProxy() {
|
||||
if (process.env.https_proxy) {
|
||||
return process.env.https_proxy;
|
||||
}
|
||||
try {
|
||||
const httpsProxy = execSync('npm config get https-proxy', {
|
||||
encoding: 'utf8'
|
||||
}).trim();
|
||||
return httpsProxy !== 'null' ? httpsProxy : undefined;
|
||||
} catch (e) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
export async function getOnline() {
|
||||
try {
|
||||
await dns.lookup('registry.yarnpkg.com');
|
||||
return true;
|
||||
} catch {
|
||||
const proxy = getProxy();
|
||||
if (!proxy) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
const { hostname } = new URL(proxy);
|
||||
await dns.lookup(hostname);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=get-online.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/get-online.ts"],"sourcesContent":["import { execSync } from 'child_process'\nimport dns from 'dns/promises'\n\nfunction getProxy(): string | undefined {\n if (process.env.https_proxy) {\n return process.env.https_proxy\n }\n\n try {\n const httpsProxy = execSync('npm config get https-proxy', {\n encoding: 'utf8',\n }).trim()\n return httpsProxy !== 'null' ? httpsProxy : undefined\n } catch (e) {\n return\n }\n}\n\nexport async function getOnline(): Promise<boolean> {\n try {\n await dns.lookup('registry.yarnpkg.com')\n return true\n } catch {\n const proxy = getProxy()\n if (!proxy) {\n return false\n }\n\n try {\n const { hostname } = new URL(proxy)\n await dns.lookup(hostname)\n return true\n } catch {\n return false\n }\n }\n}\n"],"names":["execSync","dns","getProxy","process","env","https_proxy","httpsProxy","encoding","trim","undefined","e","getOnline","lookup","proxy","hostname","URL"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAe;AACxC,OAAOC,SAAS,eAAc;AAE9B,SAASC;IACP,IAAIC,QAAQC,GAAG,CAACC,WAAW,EAAE;QAC3B,OAAOF,QAAQC,GAAG,CAACC,WAAW;IAChC;IAEA,IAAI;QACF,MAAMC,aAAaN,SAAS,8BAA8B;YACxDO,UAAU;QACZ,GAAGC,IAAI;QACP,OAAOF,eAAe,SAASA,aAAaG;IAC9C,EAAE,OAAOC,GAAG;QACV;IACF;AACF;AAEA,OAAO,eAAeC;IACpB,IAAI;QACF,MAAMV,IAAIW,MAAM,CAAC;QACjB,OAAO;IACT,EAAE,OAAM;QACN,MAAMC,QAAQX;QACd,IAAI,CAACW,OAAO;YACV,OAAO;QACT;QAEA,IAAI;YACF,MAAM,EAAEC,QAAQ,EAAE,GAAG,IAAIC,IAAIF;YAC7B,MAAMZ,IAAIW,MAAM,CAACE;YACjB,OAAO;QACT,EAAE,OAAM;YACN,OAAO;QACT;IACF;AACF","ignoreList":[0]}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { execSync } from 'child_process';
|
||||
export function getPkgManager(baseDir) {
|
||||
try {
|
||||
for (const { lockFile, packageManager } of [
|
||||
{
|
||||
lockFile: 'yarn.lock',
|
||||
packageManager: 'yarn'
|
||||
},
|
||||
{
|
||||
lockFile: 'pnpm-lock.yaml',
|
||||
packageManager: 'pnpm'
|
||||
},
|
||||
{
|
||||
lockFile: 'package-lock.json',
|
||||
packageManager: 'npm'
|
||||
}
|
||||
]){
|
||||
if (fs.existsSync(path.join(baseDir, lockFile))) {
|
||||
return packageManager;
|
||||
}
|
||||
}
|
||||
const userAgent = process.env.npm_config_user_agent;
|
||||
if (userAgent) {
|
||||
if (userAgent.startsWith('yarn')) {
|
||||
return 'yarn';
|
||||
} else if (userAgent.startsWith('pnpm')) {
|
||||
return 'pnpm';
|
||||
}
|
||||
}
|
||||
try {
|
||||
execSync('yarn --version', {
|
||||
stdio: 'ignore'
|
||||
});
|
||||
return 'yarn';
|
||||
} catch {
|
||||
execSync('pnpm --version', {
|
||||
stdio: 'ignore'
|
||||
});
|
||||
return 'pnpm';
|
||||
}
|
||||
} catch {
|
||||
return 'npm';
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=get-pkg-manager.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/get-pkg-manager.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport { execSync } from 'child_process'\n\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn'\n\nexport function getPkgManager(baseDir: string): PackageManager {\n try {\n for (const { lockFile, packageManager } of [\n { lockFile: 'yarn.lock', packageManager: 'yarn' },\n { lockFile: 'pnpm-lock.yaml', packageManager: 'pnpm' },\n { lockFile: 'package-lock.json', packageManager: 'npm' },\n ]) {\n if (fs.existsSync(path.join(baseDir, lockFile))) {\n return packageManager as PackageManager\n }\n }\n const userAgent = process.env.npm_config_user_agent\n if (userAgent) {\n if (userAgent.startsWith('yarn')) {\n return 'yarn'\n } else if (userAgent.startsWith('pnpm')) {\n return 'pnpm'\n }\n }\n try {\n execSync('yarn --version', { stdio: 'ignore' })\n return 'yarn'\n } catch {\n execSync('pnpm --version', { stdio: 'ignore' })\n return 'pnpm'\n }\n } catch {\n return 'npm'\n }\n}\n"],"names":["fs","path","execSync","getPkgManager","baseDir","lockFile","packageManager","existsSync","join","userAgent","process","env","npm_config_user_agent","startsWith","stdio"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,QAAQ,QAAQ,gBAAe;AAIxC,OAAO,SAASC,cAAcC,OAAe;IAC3C,IAAI;QACF,KAAK,MAAM,EAAEC,QAAQ,EAAEC,cAAc,EAAE,IAAI;YACzC;gBAAED,UAAU;gBAAaC,gBAAgB;YAAO;YAChD;gBAAED,UAAU;gBAAkBC,gBAAgB;YAAO;YACrD;gBAAED,UAAU;gBAAqBC,gBAAgB;YAAM;SACxD,CAAE;YACD,IAAIN,GAAGO,UAAU,CAACN,KAAKO,IAAI,CAACJ,SAASC,YAAY;gBAC/C,OAAOC;YACT;QACF;QACA,MAAMG,YAAYC,QAAQC,GAAG,CAACC,qBAAqB;QACnD,IAAIH,WAAW;YACb,IAAIA,UAAUI,UAAU,CAAC,SAAS;gBAChC,OAAO;YACT,OAAO,IAAIJ,UAAUI,UAAU,CAAC,SAAS;gBACvC,OAAO;YACT;QACF;QACA,IAAI;YACFX,SAAS,kBAAkB;gBAAEY,OAAO;YAAS;YAC7C,OAAO;QACT,EAAE,OAAM;YACNZ,SAAS,kBAAkB;gBAAEY,OAAO;YAAS;YAC7C,OAAO;QACT;IACF,EAAE,OAAM;QACN,OAAO;IACT;AACF","ignoreList":[0]}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
import { execSync } from 'child_process';
|
||||
import { getPkgManager } from './get-pkg-manager';
|
||||
import { getFormattedNodeOptionsWithoutInspect } from '../../server/lib/utils';
|
||||
/**
|
||||
* Returns the package registry using the user's package manager.
|
||||
* The URL will have a trailing slash.
|
||||
* @default https://registry.npmjs.org/
|
||||
*/ export function getRegistry(baseDir = process.cwd()) {
|
||||
const pkgManager = getPkgManager(baseDir);
|
||||
// Since `npm config` command fails in npm workspace to prevent workspace config conflicts,
|
||||
// add `--no-workspaces` flag to run under the context of the root project only.
|
||||
// Safe for non-workspace projects as it's equivalent to default `--workspaces=false`.
|
||||
// x-ref: https://github.com/vercel/next.js/issues/47121#issuecomment-1499044345
|
||||
// x-ref: https://github.com/npm/statusboard/issues/371#issue-920669998
|
||||
const resolvedFlags = pkgManager === 'npm' ? '--no-workspaces' : '';
|
||||
let registry = `https://registry.npmjs.org/`;
|
||||
try {
|
||||
const output = execSync(`${pkgManager} config get registry ${resolvedFlags}`, {
|
||||
env: {
|
||||
...process.env,
|
||||
NODE_OPTIONS: getFormattedNodeOptionsWithoutInspect()
|
||||
}
|
||||
}).toString().trim();
|
||||
if (output.startsWith('http')) {
|
||||
registry = output.endsWith('/') ? output : `${output}/`;
|
||||
}
|
||||
} catch (err) {
|
||||
throw Object.defineProperty(new Error(`Failed to get registry from "${pkgManager}".`, {
|
||||
cause: err
|
||||
}), "__NEXT_ERROR_CODE", {
|
||||
value: "E508",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
return registry;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=get-registry.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/get-registry.ts"],"sourcesContent":["import { execSync } from 'child_process'\nimport { getPkgManager } from './get-pkg-manager'\nimport { getFormattedNodeOptionsWithoutInspect } from '../../server/lib/utils'\n\n/**\n * Returns the package registry using the user's package manager.\n * The URL will have a trailing slash.\n * @default https://registry.npmjs.org/\n */\nexport function getRegistry(baseDir: string = process.cwd()) {\n const pkgManager = getPkgManager(baseDir)\n // Since `npm config` command fails in npm workspace to prevent workspace config conflicts,\n // add `--no-workspaces` flag to run under the context of the root project only.\n // Safe for non-workspace projects as it's equivalent to default `--workspaces=false`.\n // x-ref: https://github.com/vercel/next.js/issues/47121#issuecomment-1499044345\n // x-ref: https://github.com/npm/statusboard/issues/371#issue-920669998\n const resolvedFlags = pkgManager === 'npm' ? '--no-workspaces' : ''\n let registry = `https://registry.npmjs.org/`\n\n try {\n const output = execSync(\n `${pkgManager} config get registry ${resolvedFlags}`,\n {\n env: {\n ...process.env,\n NODE_OPTIONS: getFormattedNodeOptionsWithoutInspect(),\n },\n }\n )\n .toString()\n .trim()\n\n if (output.startsWith('http')) {\n registry = output.endsWith('/') ? output : `${output}/`\n }\n } catch (err) {\n throw new Error(`Failed to get registry from \"${pkgManager}\".`, {\n cause: err,\n })\n }\n\n return registry\n}\n"],"names":["execSync","getPkgManager","getFormattedNodeOptionsWithoutInspect","getRegistry","baseDir","process","cwd","pkgManager","resolvedFlags","registry","output","env","NODE_OPTIONS","toString","trim","startsWith","endsWith","err","Error","cause"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAe;AACxC,SAASC,aAAa,QAAQ,oBAAmB;AACjD,SAASC,qCAAqC,QAAQ,yBAAwB;AAE9E;;;;CAIC,GACD,OAAO,SAASC,YAAYC,UAAkBC,QAAQC,GAAG,EAAE;IACzD,MAAMC,aAAaN,cAAcG;IACjC,2FAA2F;IAC3F,gFAAgF;IAChF,sFAAsF;IACtF,gFAAgF;IAChF,uEAAuE;IACvE,MAAMI,gBAAgBD,eAAe,QAAQ,oBAAoB;IACjE,IAAIE,WAAW,CAAC,2BAA2B,CAAC;IAE5C,IAAI;QACF,MAAMC,SAASV,SACb,GAAGO,WAAW,qBAAqB,EAAEC,eAAe,EACpD;YACEG,KAAK;gBACH,GAAGN,QAAQM,GAAG;gBACdC,cAAcV;YAChB;QACF,GAECW,QAAQ,GACRC,IAAI;QAEP,IAAIJ,OAAOK,UAAU,CAAC,SAAS;YAC7BN,WAAWC,OAAOM,QAAQ,CAAC,OAAON,SAAS,GAAGA,OAAO,CAAC,CAAC;QACzD;IACF,EAAE,OAAOO,KAAK;QACZ,MAAM,qBAEJ,CAFI,IAAIC,MAAM,CAAC,6BAA6B,EAAEX,WAAW,EAAE,CAAC,EAAE;YAC9DY,OAAOF;QACT,IAFM,qBAAA;mBAAA;wBAAA;0BAAA;QAEL;IACH;IAEA,OAAOR;AACT","ignoreList":[0]}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
/** https://fetch.spec.whatwg.org/#port-blocking */ export const KNOWN_RESERVED_PORTS = {
|
||||
1: 'tcpmux',
|
||||
7: 'echo',
|
||||
9: 'discard',
|
||||
11: 'systat',
|
||||
13: 'daytime',
|
||||
15: 'netstat',
|
||||
17: 'qotd',
|
||||
19: 'chargen',
|
||||
20: 'ftp-data',
|
||||
21: 'ftp',
|
||||
22: 'ssh',
|
||||
23: 'telnet',
|
||||
25: 'smtp',
|
||||
37: 'time',
|
||||
42: 'name',
|
||||
43: 'nicname',
|
||||
53: 'domain',
|
||||
69: 'tftp',
|
||||
77: 'rje',
|
||||
79: 'finger',
|
||||
87: 'link',
|
||||
95: 'supdup',
|
||||
101: 'hostname',
|
||||
102: 'iso-tsap',
|
||||
103: 'gppitnp',
|
||||
104: 'acr-nema',
|
||||
109: 'pop2',
|
||||
110: 'pop3',
|
||||
111: 'sunrpc',
|
||||
113: 'auth',
|
||||
115: 'sftp',
|
||||
117: 'uucp-path',
|
||||
119: 'nntp',
|
||||
123: 'ntp',
|
||||
135: 'epmap',
|
||||
137: 'netbios-ns',
|
||||
139: 'netbios-ssn',
|
||||
143: 'imap',
|
||||
161: 'snmp',
|
||||
179: 'bgp',
|
||||
389: 'ldap',
|
||||
427: 'svrloc',
|
||||
465: 'submissions',
|
||||
512: 'exec',
|
||||
513: 'login',
|
||||
514: 'shell',
|
||||
515: 'printer',
|
||||
526: 'tempo',
|
||||
530: 'courier',
|
||||
531: 'chat',
|
||||
532: 'netnews',
|
||||
540: 'uucp',
|
||||
548: 'afp',
|
||||
554: 'rtsp',
|
||||
556: 'remotefs',
|
||||
563: 'nntps',
|
||||
587: 'submission',
|
||||
601: 'syslog-conn',
|
||||
636: 'ldaps',
|
||||
989: 'ftps-data',
|
||||
990: 'ftps',
|
||||
993: 'imaps',
|
||||
995: 'pop3s',
|
||||
1719: 'h323gatestat',
|
||||
1720: 'h323hostcall',
|
||||
1723: 'pptp',
|
||||
2049: 'nfs',
|
||||
3659: 'apple-sasl',
|
||||
4045: 'npp',
|
||||
5060: 'sip',
|
||||
5061: 'sips',
|
||||
6000: 'x11',
|
||||
6566: 'sane-port',
|
||||
6665: 'ircu',
|
||||
6666: 'ircu',
|
||||
6667: 'ircu',
|
||||
6668: 'ircu',
|
||||
6669: 'ircu',
|
||||
6697: 'ircs-u',
|
||||
10080: 'amanda'
|
||||
};
|
||||
export function isPortIsReserved(port) {
|
||||
return port in KNOWN_RESERVED_PORTS;
|
||||
}
|
||||
export function getReservedPortExplanation(port) {
|
||||
return `Bad port: "${port}" is reserved for ${KNOWN_RESERVED_PORTS[port]}\n` + 'Read more: https://nextjs.org/docs/messages/reserved-port';
|
||||
}
|
||||
|
||||
//# sourceMappingURL=get-reserved-port.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/get-reserved-port.ts"],"sourcesContent":["/** https://fetch.spec.whatwg.org/#port-blocking */\nexport const KNOWN_RESERVED_PORTS = {\n 1: 'tcpmux',\n 7: 'echo',\n 9: 'discard',\n 11: 'systat',\n 13: 'daytime',\n 15: 'netstat',\n 17: 'qotd',\n 19: 'chargen',\n 20: 'ftp-data',\n 21: 'ftp',\n 22: 'ssh',\n 23: 'telnet',\n 25: 'smtp',\n 37: 'time',\n 42: 'name',\n 43: 'nicname',\n 53: 'domain',\n 69: 'tftp',\n 77: 'rje',\n 79: 'finger',\n 87: 'link',\n 95: 'supdup',\n 101: 'hostname',\n 102: 'iso-tsap',\n 103: 'gppitnp',\n 104: 'acr-nema',\n 109: 'pop2',\n 110: 'pop3',\n 111: 'sunrpc',\n 113: 'auth',\n 115: 'sftp',\n 117: 'uucp-path',\n 119: 'nntp',\n 123: 'ntp',\n 135: 'epmap',\n 137: 'netbios-ns',\n 139: 'netbios-ssn',\n 143: 'imap',\n 161: 'snmp',\n 179: 'bgp',\n 389: 'ldap',\n 427: 'svrloc',\n 465: 'submissions',\n 512: 'exec',\n 513: 'login',\n 514: 'shell',\n 515: 'printer',\n 526: 'tempo',\n 530: 'courier',\n 531: 'chat',\n 532: 'netnews',\n 540: 'uucp',\n 548: 'afp',\n 554: 'rtsp',\n 556: 'remotefs',\n 563: 'nntps',\n 587: 'submission',\n 601: 'syslog-conn',\n 636: 'ldaps',\n 989: 'ftps-data',\n 990: 'ftps',\n 993: 'imaps',\n 995: 'pop3s',\n 1719: 'h323gatestat',\n 1720: 'h323hostcall',\n 1723: 'pptp',\n 2049: 'nfs',\n 3659: 'apple-sasl',\n 4045: 'npp',\n 5060: 'sip',\n 5061: 'sips',\n 6000: 'x11',\n 6566: 'sane-port',\n 6665: 'ircu',\n 6666: 'ircu',\n 6667: 'ircu',\n 6668: 'ircu',\n 6669: 'ircu',\n 6697: 'ircs-u',\n 10080: 'amanda',\n} as const\n\ntype ReservedPort = keyof typeof KNOWN_RESERVED_PORTS\n\nexport function isPortIsReserved(port: number): port is ReservedPort {\n return port in KNOWN_RESERVED_PORTS\n}\n\nexport function getReservedPortExplanation(port: ReservedPort): string {\n return (\n `Bad port: \"${port}\" is reserved for ${KNOWN_RESERVED_PORTS[port]}\\n` +\n 'Read more: https://nextjs.org/docs/messages/reserved-port'\n )\n}\n"],"names":["KNOWN_RESERVED_PORTS","isPortIsReserved","port","getReservedPortExplanation"],"mappings":"AAAA,iDAAiD,GACjD,OAAO,MAAMA,uBAAuB;IAClC,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;AACT,EAAU;AAIV,OAAO,SAASC,iBAAiBC,IAAY;IAC3C,OAAOA,QAAQF;AACjB;AAEA,OAAO,SAASG,2BAA2BD,IAAkB;IAC3D,OACE,CAAC,WAAW,EAAEA,KAAK,kBAAkB,EAAEF,oBAAoB,CAACE,KAAK,CAAC,EAAE,CAAC,GACrE;AAEJ","ignoreList":[0]}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
import { yellow } from '../picocolors';
|
||||
import spawn from 'next/dist/compiled/cross-spawn';
|
||||
/**
|
||||
* Spawn a package manager installation with either npm, pnpm, or yarn.
|
||||
*
|
||||
* @returns A Promise that resolves once the installation is finished.
|
||||
*/ export function install(root, dependencies, { packageManager, isOnline, devDependencies }) {
|
||||
let args = [];
|
||||
if (dependencies.length > 0) {
|
||||
if (packageManager === 'yarn') {
|
||||
args = [
|
||||
'add',
|
||||
'--exact'
|
||||
];
|
||||
if (devDependencies) args.push('--dev');
|
||||
} else if (packageManager === 'pnpm') {
|
||||
args = [
|
||||
'add',
|
||||
'--save-exact'
|
||||
];
|
||||
args.push(devDependencies ? '--save-dev' : '--save-prod');
|
||||
} else {
|
||||
// npm
|
||||
args = [
|
||||
'install',
|
||||
'--save-exact'
|
||||
];
|
||||
args.push(devDependencies ? '--save-dev' : '--save');
|
||||
}
|
||||
args.push(...dependencies);
|
||||
} else {
|
||||
args = [
|
||||
'install'
|
||||
] // npm, pnpm, and yarn all support `install`
|
||||
;
|
||||
if (!isOnline) {
|
||||
args.push('--offline');
|
||||
console.log(yellow('You appear to be offline.'));
|
||||
if (packageManager !== 'npm') {
|
||||
console.log(yellow(`Falling back to the local ${packageManager} cache.`));
|
||||
}
|
||||
console.log();
|
||||
}
|
||||
}
|
||||
return new Promise((resolve, reject)=>{
|
||||
/**
|
||||
* Spawn the installation process.
|
||||
*/ const child = spawn(packageManager, args, {
|
||||
cwd: root,
|
||||
stdio: 'inherit',
|
||||
env: {
|
||||
...process.env,
|
||||
ADBLOCK: '1',
|
||||
// we set NODE_ENV to development as pnpm skips dev
|
||||
// dependencies when production
|
||||
NODE_ENV: 'development',
|
||||
DISABLE_OPENCOLLECTIVE: '1'
|
||||
}
|
||||
});
|
||||
child.on('close', (code)=>{
|
||||
if (code !== 0) {
|
||||
reject({
|
||||
command: `${packageManager} ${args.join(' ')}`
|
||||
});
|
||||
return;
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//# sourceMappingURL=install.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/lib/helpers/install.ts"],"sourcesContent":["import { yellow } from '../picocolors'\nimport spawn from 'next/dist/compiled/cross-spawn'\nimport type { PackageManager } from './get-pkg-manager'\n\ninterface InstallArgs {\n /**\n * Indicate whether to install packages using npm, pnpm, or yarn.\n */\n packageManager: PackageManager\n /**\n * Indicate whether there is an active internet connection.\n */\n isOnline: boolean\n /**\n * Indicate whether the given dependencies are devDependencies.\n */\n devDependencies?: boolean\n}\n\n/**\n * Spawn a package manager installation with either npm, pnpm, or yarn.\n *\n * @returns A Promise that resolves once the installation is finished.\n */\nexport function install(\n root: string,\n dependencies: string[],\n { packageManager, isOnline, devDependencies }: InstallArgs\n): Promise<void> {\n let args: string[] = []\n\n if (dependencies.length > 0) {\n if (packageManager === 'yarn') {\n args = ['add', '--exact']\n if (devDependencies) args.push('--dev')\n } else if (packageManager === 'pnpm') {\n args = ['add', '--save-exact']\n args.push(devDependencies ? '--save-dev' : '--save-prod')\n } else {\n // npm\n args = ['install', '--save-exact']\n args.push(devDependencies ? '--save-dev' : '--save')\n }\n\n args.push(...dependencies)\n } else {\n args = ['install'] // npm, pnpm, and yarn all support `install`\n\n if (!isOnline) {\n args.push('--offline')\n console.log(yellow('You appear to be offline.'))\n if (packageManager !== 'npm') {\n console.log(\n yellow(`Falling back to the local ${packageManager} cache.`)\n )\n }\n console.log()\n }\n }\n\n return new Promise((resolve, reject) => {\n /**\n * Spawn the installation process.\n */\n const child = spawn(packageManager, args, {\n cwd: root,\n stdio: 'inherit',\n env: {\n ...process.env,\n ADBLOCK: '1',\n // we set NODE_ENV to development as pnpm skips dev\n // dependencies when production\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n })\n child.on('close', (code) => {\n if (code !== 0) {\n reject({ command: `${packageManager} ${args.join(' ')}` })\n return\n }\n resolve()\n })\n })\n}\n"],"names":["yellow","spawn","install","root","dependencies","packageManager","isOnline","devDependencies","args","length","push","console","log","Promise","resolve","reject","child","cwd","stdio","env","process","ADBLOCK","NODE_ENV","DISABLE_OPENCOLLECTIVE","on","code","command","join"],"mappings":"AAAA,SAASA,MAAM,QAAQ,gBAAe;AACtC,OAAOC,WAAW,iCAAgC;AAkBlD;;;;CAIC,GACD,OAAO,SAASC,QACdC,IAAY,EACZC,YAAsB,EACtB,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,eAAe,EAAe;IAE1D,IAAIC,OAAiB,EAAE;IAEvB,IAAIJ,aAAaK,MAAM,GAAG,GAAG;QAC3B,IAAIJ,mBAAmB,QAAQ;YAC7BG,OAAO;gBAAC;gBAAO;aAAU;YACzB,IAAID,iBAAiBC,KAAKE,IAAI,CAAC;QACjC,OAAO,IAAIL,mBAAmB,QAAQ;YACpCG,OAAO;gBAAC;gBAAO;aAAe;YAC9BA,KAAKE,IAAI,CAACH,kBAAkB,eAAe;QAC7C,OAAO;YACL,MAAM;YACNC,OAAO;gBAAC;gBAAW;aAAe;YAClCA,KAAKE,IAAI,CAACH,kBAAkB,eAAe;QAC7C;QAEAC,KAAKE,IAAI,IAAIN;IACf,OAAO;QACLI,OAAO;YAAC;SAAU,CAAC,4CAA4C;;QAE/D,IAAI,CAACF,UAAU;YACbE,KAAKE,IAAI,CAAC;YACVC,QAAQC,GAAG,CAACZ,OAAO;YACnB,IAAIK,mBAAmB,OAAO;gBAC5BM,QAAQC,GAAG,CACTZ,OAAO,CAAC,0BAA0B,EAAEK,eAAe,OAAO,CAAC;YAE/D;YACAM,QAAQC,GAAG;QACb;IACF;IAEA,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3B;;KAEC,GACD,MAAMC,QAAQf,MAAMI,gBAAgBG,MAAM;YACxCS,KAAKd;YACLe,OAAO;YACPC,KAAK;gBACH,GAAGC,QAAQD,GAAG;gBACdE,SAAS;gBACT,mDAAmD;gBACnD,+BAA+B;gBAC/BC,UAAU;gBACVC,wBAAwB;YAC1B;QACF;QACAP,MAAMQ,EAAE,CAAC,SAAS,CAACC;YACjB,IAAIA,SAAS,GAAG;gBACdV,OAAO;oBAAEW,SAAS,GAAGrB,eAAe,CAAC,EAAEG,KAAKmB,IAAI,CAAC,MAAM;gBAAC;gBACxD;YACF;YACAb;QACF;IACF;AACF","ignoreList":[0]}
|
||||
Reference in New Issue
Block a user