mirror of
https://github.com/cachix/install-nix-action.git
synced 2024-11-22 08:30:51 +00:00
1 line
No EOL
19 KiB
Text
1 line
No EOL
19 KiB
Text
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { join, resolve } from 'path'\nimport { start, Recoverable } from 'repl'\nimport { inspect } from 'util'\nimport Module = require('module')\nimport arg = require('arg')\nimport { diffLines } from 'diff'\nimport { Script } from 'vm'\nimport { readFileSync, statSync } from 'fs'\nimport { register, VERSION, DEFAULTS, TSError, parse } from './index'\n\nconst args = arg({\n // Node.js-like options.\n '--eval': String,\n '--print': Boolean,\n '--require': [String],\n\n // CLI options.\n '--files': Boolean,\n '--help': Boolean,\n '--version': arg.COUNT,\n\n // Project options.\n '--compiler': String,\n '--compiler-options': parse,\n '--project': String,\n '--ignore-diagnostics': [String],\n '--ignore': [String],\n '--transpile-only': Boolean,\n '--type-check': Boolean,\n '--pretty': Boolean,\n '--skip-project': Boolean,\n '--skip-ignore': Boolean,\n '--prefer-ts-exts': Boolean,\n '--log-error': Boolean,\n\n // Aliases.\n '-e': '--eval',\n '-p': '--print',\n '-r': '--require',\n '-h': '--help',\n '-v': '--version',\n '-T': '--transpile-only',\n '-I': '--ignore',\n '-P': '--project',\n '-C': '--compiler',\n '-D': '--ignore-diagnostics',\n '-O': '--compiler-options'\n}, {\n stopAtPositional: true\n})\n\nconst {\n '--help': help = false,\n '--version': version = 0,\n '--files': files = DEFAULTS.files,\n '--compiler': compiler = DEFAULTS.compiler,\n '--compiler-options': compilerOptions = DEFAULTS.compilerOptions,\n '--project': project = DEFAULTS.project,\n '--ignore-diagnostics': ignoreDiagnostics = DEFAULTS.ignoreDiagnostics,\n '--ignore': ignore = DEFAULTS.ignore,\n '--transpile-only': transpileOnly = DEFAULTS.transpileOnly,\n '--type-check': typeCheck = DEFAULTS.typeCheck,\n '--pretty': pretty = DEFAULTS.pretty,\n '--skip-project': skipProject = DEFAULTS.skipProject,\n '--skip-ignore': skipIgnore = DEFAULTS.skipIgnore,\n '--prefer-ts-exts': preferTsExts = DEFAULTS.preferTsExts,\n '--log-error': logError = DEFAULTS.logError\n} = args\n\nif (help) {\n console.log(`\nUsage: ts-node [options] [ -e script | script.ts ] [arguments]\n\nOptions:\n\n -e, --eval [code] Evaluate code\n -p, --print Print result of \\`--eval\\`\n -r, --require [path] Require a node module before execution\n\n -h, --help Print CLI usage\n -v, --version Print module version information\n\n -T, --transpile-only Use TypeScript's faster \\`transpileModule\\`\n -I, --ignore [pattern] Override the path patterns to skip compilation\n -P, --project [path] Path to TypeScript JSON project file\n -C, --compiler [name] Specify a custom TypeScript compiler\n -D, --ignore-diagnostics [code] Ignore TypeScript warnings by diagnostic code\n -O, --compiler-options [opts] JSON object to merge with compiler options\n\n --files Load files from \\`tsconfig.json\\` on startup\n --pretty Use pretty diagnostic formatter\n --skip-project Skip reading \\`tsconfig.json\\`\n --skip-ignore Skip \\`--ignore\\` checks\n --prefer-ts-exts Prefer importing TypeScript files over JavaScript files\n`)\n\n process.exit(0)\n}\n\n// Output project information.\nif (version === 1) {\n console.log(`v${VERSION}`)\n process.exit(0)\n}\n\nconst cwd = process.cwd()\nconst code = args['--eval']\nconst isPrinted = args['--print'] !== undefined\n\n/**\n * Eval helpers.\n */\nconst EVAL_FILENAME = `[eval].ts`\nconst EVAL_PATH = join(cwd, EVAL_FILENAME)\nconst EVAL_INSTANCE = { input: '', output: '', version: 0, lines: 0 }\n\n// Register the TypeScript compiler instance.\nconst service = register({\n files,\n pretty,\n typeCheck,\n transpileOnly,\n ignore,\n project,\n skipIgnore,\n preferTsExts,\n logError,\n skipProject,\n compiler,\n ignoreDiagnostics,\n compilerOptions,\n readFile: code ? readFileEval : undefined,\n fileExists: code ? fileExistsEval : undefined\n})\n\n// Output project information.\nif (version >= 2) {\n console.log(`ts-node v${VERSION}`)\n console.log(`node ${process.version}`)\n console.log(`compiler v${service.ts.version}`)\n process.exit(0)\n}\n\n// Require specified modules before start-up.\nif (args['--require']) (Module as any)._preloadModules(args['--require'])\n\n// Prepend `ts-node` arguments to CLI for child processes.\nprocess.execArgv.unshift(__filename, ...process.argv.slice(2, process.argv.length - args._.length))\nprocess.argv = [process.argv[1]].concat(args._.length ? resolve(cwd, args._[0]) : []).concat(args._.slice(1))\n\n// Execute the main contents (either eval, script or piped).\nif (code) {\n evalAndExit(code, isPrinted)\n} else {\n if (args._.length) {\n Module.runMain()\n } else {\n // Piping of execution _only_ occurs when no other script is specified.\n if (process.stdin.isTTY) {\n startRepl()\n } else {\n let code = ''\n process.stdin.on('data', (chunk: Buffer) => code += chunk)\n process.stdin.on('end', () => evalAndExit(code, isPrinted))\n }\n }\n}\n\n/**\n * Evaluate a script.\n */\nfunction evalAndExit (code: string, isPrinted: boolean) {\n const module = new Module(EVAL_FILENAME)\n module.filename = EVAL_FILENAME\n module.paths = (Module as any)._nodeModulePaths(cwd)\n\n ;(global as any).__filename = EVAL_FILENAME\n ;(global as any).__dirname = cwd\n ;(global as any).exports = module.exports\n ;(global as any).module = module\n ;(global as any).require = module.require.bind(module)\n\n let result: any\n\n try {\n result = _eval(code)\n } catch (error) {\n if (error instanceof TSError) {\n console.error(error.diagnosticText)\n process.exit(1)\n }\n\n throw error\n }\n\n if (isPrinted) {\n console.log(typeof result === 'string' ? result : inspect(result))\n }\n}\n\n/**\n * Evaluate the code snippet.\n */\nfunction _eval (input: string) {\n const lines = EVAL_INSTANCE.lines\n const isCompletion = !/\\n$/.test(input)\n const undo = appendEval(input)\n let output: string\n\n try {\n output = service.compile(EVAL_INSTANCE.input, EVAL_PATH, -lines)\n } catch (err) {\n undo()\n throw err\n }\n\n // Use `diff` to check for new JavaScript to execute.\n const changes = diffLines(EVAL_INSTANCE.output, output)\n\n if (isCompletion) {\n undo()\n } else {\n EVAL_INSTANCE.output = output\n }\n\n return changes.reduce((result, change) => {\n return change.added ? exec(change.value, EVAL_FILENAME) : result\n }, undefined)\n}\n\n/**\n * Execute some code.\n */\nfunction exec (code: string, filename: string) {\n const script = new Script(code, { filename: filename })\n\n return script.runInThisContext()\n}\n\n/**\n * Start a CLI REPL.\n */\nfunction startRepl () {\n const repl = start({\n prompt: '> ',\n input: process.stdin,\n output: process.stdout,\n terminal: process.stdout.isTTY,\n eval: replEval,\n useGlobal: true\n })\n\n // Bookmark the point where we should reset the REPL state.\n const resetEval = appendEval('')\n\n function reset () {\n resetEval()\n\n // Hard fix for TypeScript forcing `Object.defineProperty(exports, ...)`.\n exec('exports = module.exports', EVAL_FILENAME)\n }\n\n reset()\n repl.on('reset', reset)\n\n repl.defineCommand('type', {\n help: 'Check the type of a TypeScript identifier',\n action: function (identifier: string) {\n if (!identifier) {\n repl.displayPrompt()\n return\n }\n\n const undo = appendEval(identifier)\n const { name, comment } = service.getTypeInfo(EVAL_INSTANCE.input, EVAL_PATH, EVAL_INSTANCE.input.length)\n\n undo()\n\n repl.outputStream.write(`${name}\\n${comment ? `${comment}\\n` : ''}`)\n repl.displayPrompt()\n }\n })\n}\n\n/**\n * Eval code from the REPL.\n */\nfunction replEval (code: string, _context: any, _filename: string, callback: (err: Error | null, result?: any) => any) {\n let err: Error | null = null\n let result: any\n\n // TODO: Figure out how to handle completion here.\n if (code === '.scope') {\n callback(err)\n return\n }\n\n try {\n result = _eval(code)\n } catch (error) {\n if (error instanceof TSError) {\n // Support recoverable compilations using >= node 6.\n if (Recoverable && isRecoverable(error)) {\n err = new Recoverable(error)\n } else {\n console.error(error.diagnosticText)\n }\n } else {\n err = error\n }\n }\n\n callback(err, result)\n}\n\n/**\n * Append to the eval instance and return an undo function.\n */\nfunction appendEval (input: string) {\n const undoInput = EVAL_INSTANCE.input\n const undoVersion = EVAL_INSTANCE.version\n const undoOutput = EVAL_INSTANCE.output\n const undoLines = EVAL_INSTANCE.lines\n\n // Handle ASI issues with TypeScript re-evaluation.\n if (undoInput.charAt(undoInput.length - 1) === '\\n' && /^\\s*[\\[\\(\\`]/.test(input) && !/;\\s*$/.test(undoInput)) {\n EVAL_INSTANCE.input = `${EVAL_INSTANCE.input.slice(0, -1)};\\n`\n }\n\n EVAL_INSTANCE.input += input\n EVAL_INSTANCE.lines += lineCount(input)\n EVAL_INSTANCE.version++\n\n return function () {\n EVAL_INSTANCE.input = undoInput\n EVAL_INSTANCE.output = undoOutput\n EVAL_INSTANCE.version = undoVersion\n EVAL_INSTANCE.lines = undoLines\n }\n}\n\n/**\n * Count the number of lines.\n */\nfunction lineCount (value: string) {\n let count = 0\n\n for (const char of value) {\n if (char === '\\n') {\n count++\n }\n }\n\n return count\n}\n\n/**\n * Get the file text, checking for eval first.\n */\nfunction readFileEval (path: string) {\n if (path === EVAL_PATH) return EVAL_INSTANCE.input\n\n try {\n return readFileSync(path, 'utf8')\n } catch (err) {/* Ignore. */}\n}\n\n/**\n * Get whether the file exists.\n */\nfunction fileExistsEval (path: string) {\n if (path === EVAL_PATH) return true\n\n try {\n const stats = statSync(path)\n return stats.isFile() || stats.isFIFO()\n } catch (err) {\n return false\n }\n}\n\nconst RECOVERY_CODES: Set<number> = new Set([\n 1003, // \"Identifier expected.\"\n 1005, // \"')' expected.\"\n 1109, // \"Expression expected.\"\n 1126, // \"Unexpected end of text.\"\n 1160, // \"Unterminated template literal.\"\n 1161, // \"Unterminated regular expression literal.\"\n 2355 // \"A function whose declared type is neither 'void' nor 'any' must return a value.\"\n])\n\n/**\n * Check if a function can recover gracefully.\n */\nfunction isRecoverable (error: TSError) {\n return error.diagnosticCodes.every(code => RECOVERY_CODES.has(code))\n}\n"]} |