UNPKG

9.45 kBSource Map (JSON)View Raw
1{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as childProcess from 'child_process';\nimport { commandJoin } from 'command-join';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { promisify } from 'util';\n\nimport crossSpawn = require('cross-spawn');\n\nconst readFileAsync = promisify(fs.readFile);\n\nexport interface PkgDataInterface {\n version: string;\n [index: string]: unknown;\n}\n\nexport function isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function relativePath(pathStr: string): string {\n const relativePathStr = path.relative(process.cwd(), pathStr);\n return path.isAbsolute(relativePathStr) || relativePathStr.startsWith('.')\n ? relativePathStr\n : `.${path.sep}${relativePathStr}`;\n}\n\nexport function isPkgData(value: unknown): value is PkgDataInterface {\n if (isObject(value)) {\n return typeof value.version === 'string';\n }\n return false;\n}\n\nexport async function readJSONFile(filepath: string): Promise<unknown> {\n try {\n const dataText = await readFileAsync(filepath, 'utf8');\n try {\n return JSON.parse(dataText);\n } catch (error) {\n throw new Error(`Invalid JSON: ${relativePath(filepath)}`);\n }\n } catch (error) {\n throw new Error(`Could not read file: ${relativePath(filepath)}`);\n }\n}\n\n/**\n * @see https://github.com/nodejs/node/blob/v12.13.0/lib/child_process.js#L250-L303\n */\nfunction execExithandler({\n command,\n args = [],\n stdoutList,\n stderrList,\n resolve,\n reject,\n}: {\n command: string;\n args: readonly string[];\n stdoutList: unknown[];\n stderrList: unknown[];\n resolve: (value: { stdout: string; stderr: string }) => void;\n reject: (reason: Error) => void;\n}): (code: number, signal: string) => void {\n return (code, signal) => {\n const stdout = stdoutList.join('');\n const stderr = stderrList.join('');\n\n if (code === 0 && signal === null) {\n resolve({ stdout, stderr });\n return;\n }\n\n let cmd = command;\n if (args.length > 0) {\n cmd += ` ${commandJoin(args)}`;\n }\n\n const error = new Error(`Command failed: ${cmd}\\n${stderr}`);\n reject(error);\n };\n}\n\n/**\n * @see https://github.com/nodejs/node/blob/v12.13.0/lib/child_process.js#L305-L315\n */\nfunction execErrorhandler({\n process,\n reject,\n}: {\n process: childProcess.ChildProcess;\n reject: (reason: Error) => void;\n}): (error: Error) => void {\n return (error) => {\n if (process.stdout) {\n process.stdout.destroy();\n }\n if (process.stderr) {\n process.stderr.destroy();\n }\n reject(error);\n };\n}\n\n/**\n * @see https://github.com/nodejs/node/blob/v12.13.0/lib/child_process.js#L178-L390\n */\nexport async function execFileAsync(\n ...args: [string, (readonly string[])?, childProcess.SpawnOptions?]\n): Promise<{ readonly stdout: string; readonly stderr: string }> {\n return new Promise((resolve, reject) => {\n const process = crossSpawn(...args);\n const stdoutList: unknown[] = [];\n const stderrList: unknown[] = [];\n\n if (process.stdout) {\n process.stdout.on('data', (data) => stdoutList.push(data));\n }\n if (process.stderr) {\n process.stderr.on('data', (data) => stderrList.push(data));\n }\n\n process.on(\n 'close',\n execExithandler({\n command: args[0],\n args: args[1] || [],\n stdoutList,\n stderrList,\n resolve,\n reject,\n }),\n );\n process.on('error', execErrorhandler({ process, reject }));\n });\n}\n\nlet isPrintedVerbose = false;\n\nexport function printVerbose(message: string): void {\n if (!isPrintedVerbose) {\n console.error(`\\n${message}`);\n isPrintedVerbose = true;\n } else {\n console.error(message);\n }\n}\n\nexport function endPrintVerbose(): void {\n if (isPrintedVerbose) {\n console.error();\n }\n}\n\n/**\n * @see https://github.com/mysticatea/npm-run-all/blob/v4.1.5/lib/run-task.js#L157-L174\n */\nexport function getNpmExecPath(): {\n execPath: string;\n spawnArgs: string[];\n isYarn: boolean;\n} {\n const npmPath = process.env.npm_execpath;\n const npmPathIsJs =\n typeof npmPath === 'string' && /^\\.m?js$/.test(path.extname(npmPath));\n const execPath = npmPathIsJs ? process.execPath : npmPath || 'npm';\n const isYarn = path.basename(npmPath || 'npm').startsWith('yarn');\n\n return {\n execPath,\n spawnArgs: typeof npmPath === 'string' && npmPathIsJs ? [npmPath] : [],\n isYarn,\n };\n}\n\nexport async function getConfig(keyMap: {\n npm: string;\n yarn?: string;\n}): Promise<string> {\n const { execPath, spawnArgs, isYarn } = getNpmExecPath();\n\n const { stdout } = await execFileAsync(execPath, [\n ...spawnArgs,\n 'config',\n 'get',\n (isYarn && keyMap.yarn) || keyMap.npm,\n ]);\n return stdout.replace(/\\n$/, '');\n}\n"]}
\No newline at end of file