/var/www/cobraambalaj/node_modules/yargs/build/lib
Edit: /var/www/cobraambalaj/node_modules/yargs/build/lib/yargs-factory.js (42229B)
import { command as Command, } from './command.js';
import { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js';
import { YError } from './yerror.js';
import { usage as Usage } from './usage.js';
import { argsert } from './argsert.js';
import { completion as Completion, } from './completion.js';
import { validation as Validation, } from './validation.js';
import { objFilter } from './utils/obj-filter.js';
import { applyExtends } from './utils/apply-extends.js';
import { globalMiddlewareFactory, } from './middleware.js';
import { isPromise } from './utils/is-promise.js';
import setBlocking from './utils/set-blocking.js';
let shim;
export function YargsWithShim(_shim) {
shim = _shim;
return Yargs;
}
function Yargs(processArgs = [], cwd = shim.process.cwd(), parentRequire) {
const self = {};
let command;
let completion = null;
let groups = {};
const globalMiddleware = [];
let output = '';
const preservedGroups = {};
let usage;
let validation;
let handlerFinishCommand = null;
const y18n = shim.y18n;
self.middleware = globalMiddlewareFactory(globalMiddleware, self);
self.scriptName = function (scriptName) {
self.customScriptName = true;
self.$0 = scriptName;
return self;
};
let default$0;
if (/\b(node|iojs|electron)(\.exe)?$/.test(shim.process.argv()[0])) {
default$0 = shim.process.argv().slice(1, 2);
}
else {
default$0 = shim.process.argv().slice(0, 1);
}
self.$0 = default$0
.map(x => {
const b = rebase(cwd, x);
return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x;
})
.join(' ')
.trim();
if (shim.getEnv('_') && shim.getProcessArgvBin() === shim.getEnv('_')) {
self.$0 = shim
.getEnv('_')
.replace(`${shim.path.dirname(shim.process.execPath())}/`, '');
}
const context = { resets: -1, commands: [], fullCommands: [], files: [] };
self.getContext = () => context;
let hasOutput = false;
let exitError = null;
self.exit = (code, err) => {
hasOutput = true;
exitError = err;
if (exitProcess)
shim.process.exit(code);
};
let completionCommand = null;
self.completion = function (cmd, desc, fn) {
argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length);
if (typeof desc === 'function') {
fn = desc;
desc = undefined;
}
completionCommand = cmd || completionCommand || 'completion';
if (!desc && desc !== false) {
desc = 'generate completion script';
}
self.command(completionCommand, desc);
if (fn)
completion.registerFunction(fn);
return self;
};
let options;
self.resetOptions = self.reset = function resetOptions(aliases = {}) {
context.resets++;
options = options || {};
const tmpOptions = {};
tmpOptions.local = options.local ? options.local : [];
tmpOptions.configObjects = options.configObjects
? options.configObjects
: [];
const localLookup = {};
tmpOptions.local.forEach(l => {
localLookup[l] = true;
(aliases[l] || []).forEach(a => {
localLookup[a] = true;
});
});
Object.assign(preservedGroups, Object.keys(groups).reduce((acc, groupName) => {
const keys = groups[groupName].filter(key => !(key in localLookup));
if (keys.length > 0) {
acc[groupName] = keys;
}
return acc;
}, {}));
groups = {};
const arrayOptions = [
'array',
'boolean',
'string',
'skipValidation',
'count',
'normalize',
'number',
'hiddenOptions',
];
const objectOptions = [
'narg',
'key',
'alias',
'default',
'defaultDescription',
'config',
'choices',
'demandedOptions',
'demandedCommands',
'coerce',
'deprecatedOptions',
];
arrayOptions.forEach(k => {
tmpOptions[k] = (options[k] || []).filter((k) => !localLookup[k]);
});
objectOptions.forEach((k) => {
tmpOptions[k] = objFilter(options[k], k => !localLookup[k]);
});
tmpOptions.envPrefix = options.envPrefix;
options = tmpOptions;
usage = usage ? usage.reset(localLookup) : Usage(self, y18n, shim);
validation = validation
? validation.reset(localLookup)
: Validation(self, usage, y18n, shim);
command = command
? command.reset()
: Command(self, usage, validation, globalMiddleware, shim);
if (!completion)
completion = Completion(self, usage, command, shim);
completionCommand = null;
output = '';
exitError = null;
hasOutput = false;
self.parsed = false;
return self;
};
self.resetOptions();
const frozens = [];
function freeze() {
frozens.push({
options,
configObjects: options.configObjects.slice(0),
exitProcess,
groups,
strict,
strictCommands,
strictOptions,
completionCommand,
output,
exitError,
hasOutput,
parsed: self.parsed,
parseFn,
parseContext,
handlerFinishCommand,
});
usage.freeze();
validation.freeze();
command.freeze();
}
function unfreeze() {
const frozen = frozens.pop();
assertNotStrictEqual(frozen, undefined, shim);
let configObjects;
({
options,
configObjects,
exitProcess,
groups,
output,
exitError,
hasOutput,
parsed: self.parsed,
strict,
strictCommands,
strictOptions,
completionCommand,
parseFn,
parseContext,
handlerFinishCommand,
} = frozen);
options.configObjects = configObjects;
usage.unfreeze();
validation.unfreeze();
command.unfreeze();
}
self.boolean = function (keys) {
argsert('
', [keys], arguments.length);
populateParserHintArray('boolean', keys);
return self;
};
self.array = function (keys) {
argsert('', [keys], arguments.length);
populateParserHintArray('array', keys);
return self;
};
self.number = function (keys) {
argsert('', [keys], arguments.length);
populateParserHintArray('number', keys);
return self;
};
self.normalize = function (keys) {
argsert('', [keys], arguments.length);
populateParserHintArray('normalize', keys);
return self;
};
self.count = function (keys) {
argsert('', [keys], arguments.length);
populateParserHintArray('count', keys);
return self;
};
self.string = function (keys) {
argsert('', [keys], arguments.length);
populateParserHintArray('string', keys);
return self;
};
self.requiresArg = function (keys) {
argsert(' [number]', [keys], arguments.length);
if (typeof keys === 'string' && options.narg[keys]) {
return self;
}
else {
populateParserHintSingleValueDictionary(self.requiresArg, 'narg', keys, NaN);
}
return self;
};
self.skipValidation = function (keys) {
argsert('', [keys], arguments.length);
populateParserHintArray('skipValidation', keys);
return self;
};
function populateParserHintArray(type, keys) {
keys = [].concat(keys);
keys.forEach(key => {
key = sanitizeKey(key);
options[type].push(key);
});
}
self.nargs = function (key, value) {
argsert(' [number]', [key, value], arguments.length);
populateParserHintSingleValueDictionary(self.nargs, 'narg', key, value);
return self;
};
self.choices = function (key, value) {
argsert('