| 'use strict' |
| |
| import { notStrictEqual, strictEqual } from 'assert' |
| import cliui from 'cliui' |
| import escalade from 'escalade/sync' |
| import { inspect } from 'util' |
| import { readFileSync } from 'fs' |
| import { fileURLToPath } from 'url'; |
| import Parser from 'yargs-parser' |
| import { basename, dirname, extname, relative, resolve } from 'path' |
| import { getProcessArgvBin } from '../../build/lib/utils/process-argv.js' |
| import { YError } from '../../build/lib/yerror.js' |
| import y18n from 'y18n' |
| |
| const REQUIRE_ERROR = 'require is not supported by ESM' |
| const REQUIRE_DIRECTORY_ERROR = 'loading a directory of commands is not supported yet for ESM' |
| |
| let __dirname; |
| try { |
| __dirname = fileURLToPath(import.meta.url); |
| } catch (e) { |
| __dirname = process.cwd(); |
| } |
| const mainFilename = __dirname.split('node_modules')[0] |
| |
| export default { |
| assert: { |
| notStrictEqual, |
| strictEqual |
| }, |
| cliui, |
| findUp: escalade, |
| getEnv: (key) => { |
| return process.env[key] |
| }, |
| inspect, |
| getCallerFile: () => { |
| throw new YError(REQUIRE_DIRECTORY_ERROR) |
| }, |
| getProcessArgvBin, |
| mainFilename: mainFilename || process.cwd(), |
| Parser, |
| path: { |
| basename, |
| dirname, |
| extname, |
| relative, |
| resolve |
| }, |
| process: { |
| argv: () => process.argv, |
| cwd: process.cwd, |
| emitWarning: (warning, type) => process.emitWarning(warning, type), |
| execPath: () => process.execPath, |
| exit: process.exit, |
| nextTick: process.nextTick, |
| stdColumns: typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null |
| }, |
| readFileSync, |
| require: () => { |
| throw new YError(REQUIRE_ERROR) |
| }, |
| requireDirectory: () => { |
| throw new YError(REQUIRE_DIRECTORY_ERROR) |
| }, |
| stringWidth: (str) => { |
| return [...str].length |
| }, |
| y18n: y18n({ |
| directory: resolve(__dirname, '../../../locales'), |
| updateFiles: false |
| }) |
| } |