From 568648d349a1ce4799a111f166189947e66dbd9d Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Sun, 6 Aug 2023 12:35:37 +1000 Subject: [PATCH 01/17] Prep for v8 --- bin/ES6/cli.js | 151 ++++++++------- bin/ES6/engine.js | 209 +++++++++++---------- bin/ES6/output.js | 6 +- bin/rexreplace.cli.js | 375 +++++++++++++++++++------------------- bin/rexreplace.cli.min.js | 375 +++++++++++++++++++------------------- package.json | 5 +- src/cli.ts | 181 +++++++++--------- src/engine.ts | 234 +++++++++++++----------- src/output.ts | 7 +- test/cli/run.sh | 13 +- yarn.lock | 2 +- 11 files changed, 805 insertions(+), 753 deletions(-) diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js index fe15f0eb..fe6c32f3 100644 --- a/bin/ES6/cli.js +++ b/bin/ES6/cli.js @@ -2,7 +2,7 @@ // CLI interface for rexreplace import * as rexreplace from './engine'; let pattern, replacement; -// To avoid problems with patterns or replacements starting with '-' the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help +// To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help let needHelp = 0; if (process.argv.length < 4) { if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { @@ -22,9 +22,9 @@ else { } const yargs = require('yargs') .strict() - .usage('RexReplace ' + + .usage('RexReplace v' + rexreplace.version + - ': Regexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + '> rexreplace pattern replacement [fileGlob|option]+') .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) .example('') @@ -34,29 +34,21 @@ const yargs = require('yargs') .example('') .example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`) .example('') - .example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or glob if needed`) + .example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`) .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) .alias('v', 'version') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') .boolean('I') .describe('I', 'Void case insensitive search pattern.') .alias('I', 'void-ignore-case') .boolean('G') .describe('G', 'Void global search (stop looking after the first match).') .alias('G', 'void-global') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') .boolean('M') .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') .boolean('u') .describe('u', 'Treat pattern as a sequence of unicode code points.') .alias('u', 'unicode') @@ -67,39 +59,38 @@ const yargs = require('yargs') .describe('E', 'What regex engine to use:') .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) .default('E', 'V8') - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') .boolean('€') .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") .alias('€', 'void-euro') .boolean('§') .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") .alias('§', 'void-section') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will also output content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') .boolean('A') .alias('A', 'void-async') - .describe('A', `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` + - '') + .describe('A', `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `) + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .default('H', false) + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') .boolean('B') - .describe('B', 'Avoid temporary backing up file. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is halted.') + .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') .alias('B', 'void-backup') .boolean('b') - .describe('b', 'Keep a backup file of the original content.') + .describe('b', 'Keep the backup file with the original content.') .alias('b', 'keep-backup') + .boolean('o') + .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') + .alias('o', 'output') + //.conflicts('o','O') .boolean('m') .describe('m', `Output each match on a new line. ` + `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + @@ -114,14 +105,34 @@ const yargs = require('yargs') '') .boolean('R') .alias('R', 'replacement-pipe') - .describe('R', `Replacement will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + - '') + .describe('R', `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`) + .conflicts('R', 'g') + .conflicts('R', 'G') + .boolean('g') + .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + /* .boolean('G') + .describe('G', "filename/globs provided are to files containing one target filename/glob per line") + .alias('G', 'glob-file') + .conflicts('G','g')*/ + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') .string('x') .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') .alias('x', 'exclude-re') .string('X') .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') /* @@ -144,10 +155,10 @@ const yargs = require('yargs') .alias('p', 'pattern-file') - .boolean('R') - .alias('R', 'replacement-file') - .describe('R', - `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` + .boolean('r') + .alias('r', 'replacement-file') + .describe('r', + `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` ) @@ -164,13 +175,6 @@ const yargs = require('yargs') - .boolean('G') - .describe('G', "filename/globas are filename(s) for files containing one filename/globs on each line to be search/replaced") - .alias('G', 'globs-file') - - .boolean('g') - .describe('g', "filename/globs will be piped in. If any filename/globs are given in command the piped data will be prepened") - .alias('g', 'glob-pipe') .boolean('J') @@ -187,7 +191,7 @@ const yargs = require('yargs') .alias('j', 'replacement-js') .describe('j', `Treat replacement as javascript source code. The statement from the last expression will become the replacement string. - Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. + Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. @@ -196,7 +200,7 @@ const yargs = require('yargs') \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, \`fs\` from node, \`path\` from node, - \`globs\` from npm, + \`glob\` proxy name for the .sync function of fast-glob from npm, \`pipe\`: the data piped into the command (null if no piped data), \`find\`: pattern searched for (the needle), \`text\`: full text being searched i.e. file content or piped data (the haystack), @@ -231,7 +235,6 @@ const yargs = require('yargs') function backOut(exitcode = 1) { const help = yargs.showHelp(); const io = exitcode ? console.error : console.log; - //io(help); process.exitCode = exitcode; process.exit(); } @@ -242,39 +245,33 @@ function unescapeString(str = '') { if (0 < needHelp) { return backOut(needHelp - 1); } - // All options into one big config object for the rexreplace core - let config = {}; - // Use only camelCase full lenght version of settings so we make sure the core can be documented propperly + // All options into one big config object for the rexreplace engine + let conf = {}; + // Use only camelCase full lenght version of settings Object.keys(yargs.argv).forEach((key) => { if (1 < key.length && key.indexOf('-') < 0) { - config[key] = yargs.argv[key]; + conf[key] = yargs.argv[key]; } }); - let pipeInUse = false; - let pipeData = ''; - config.pipedData = null; - config.showHelp = yargs.showHelp; - config.pattern = pattern; - config.includeGlob = yargs.argv._; - config.excludeGlob = [...yargs.argv.excludeGlob].filter(Boolean); - config.excludeRe = [...yargs.argv.excludeRe].filter(Boolean); - if (config.replacementJs) { - config.replacement = replacement; + conf.pipeData = null; + conf.showHelp = yargs.showHelp; + conf.pattern = pattern; + conf.includeGlob = yargs.argv._; + conf.excludeGlob = [...yargs.argv.excludeGlob].filter(Boolean); + conf.excludeRe = [...yargs.argv.excludeRe].filter(Boolean); + if (conf.replacementJs) { + conf.replacement = replacement; } else { - config.replacement = unescapeString(replacement); + conf.replacement = unescapeString(replacement); } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ + let pipeInUse = false; + let pipeData = ''; if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - rexreplace.engine(config); + rexreplace.engine(conf); } else { - process.stdin.setEncoding(config.encoding); + process.stdin.setEncoding(conf.encoding); process.stdin.on('readable', () => { let chunk = process.stdin.read(); if (null !== chunk) { @@ -290,9 +287,9 @@ function unescapeString(str = '') { if (yargs.argv.trimPipe) { pipeData = pipeData.trim(); } - config.pipedData = pipeData; + conf.pipeData = pipeData; } - rexreplace.engine(config); + rexreplace.engine(conf); }); } })(); diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index ccc346bb..c83e4951 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -1,6 +1,6 @@ const fs = require('fs-extra'); const path = require('path'); -const globs = require('globs'); +const fGlob = require('fast-glob'); const now = new Date(); import { outputConfig, step, debug, chat, info, error, die } from './output'; const re = { @@ -14,138 +14,150 @@ const re = { folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, }; export const version = 'PACKAGE_VERSION'; -export function engine(config = { engine: 'V8' }) { - outputConfig(config); +export function engine(conf = { engine: 'V8' }) { + conf = handlepipeData(conf); + outputConfig(conf); step('Displaying steps for:'); - step(config); - config.pattern = getFinalPattern(config.pattern, config) || ''; - config.replacement = getFinalReplacement(config.replacement, config) || ''; - config.replacementOri = config.replacement; - config.regex = getFinalRegex(config.pattern, config) || ''; - step(config); - if (handlePipedData(config)) { - return doReplacement('Piped data', config, config.pipedData); + step(conf); + conf.pattern = getPattern(conf.pattern, conf) || ''; + conf.replacement = getReplacement(conf.replacement, conf) || ''; + conf.replacementOri = conf.replacement; + conf.regex = getRegex(conf.pattern, conf) || ''; + step(conf); + if (null !== conf.pipeData) { + return doReplacement('Piped data', conf, conf.pipeData); } - config.files = getFilePaths(config); - if (!config.files.length) { - return error(config.files.length + ' files found'); + conf.files = getFilePaths(conf); + if (!conf.files.length) { + return error(conf.files.length + ' files found'); } - chat(config.files.length + ' files found'); - step(config); - config.files + chat(conf.files.length + ' files found'); + step(conf); + conf.files // Correct filepath //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid - .filter((filepath) => (fs.existsSync(filepath) ? true : error('File not found:', filepath))) + .filter((filepath) => (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath))) // Do the replacement - .forEach((filepath) => openFile(filepath, config)); + .forEach((filepath) => openFile(filepath, conf)); } -function openFile(file, config) { - if (config.voidAsync) { +function openFile(file, conf) { + if (conf.voidAsync) { chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); + var data = fs.readFileSync(file, conf.encoding); + return doReplacement(file, conf, data); } else { chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { + fs.readFile(file, conf.encoding, function (err, data) { if (err) { return error(err); } - return doReplacement(file, config, data); + return doReplacement(file, conf, data); }); } } // postfix argument names to limit the probabillity of user inputted javascript accidently using same values -function doReplacement(_file_rr, _config_rr, _data_rr) { - debug('Work on content from: ' + _file_rr); +function doReplacement(filePath, conf, content) { + debug('Work on content from: ' + filePath); // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + if (conf.replacementJs) { + conf.replacement = dynamicReplacement(filePath, conf, content); } // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + const result = content.replace(conf.regex, conf.replacement); // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { + if (conf.outputMatch) { return; } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); + if (conf.output) { + debug('Output result from: ' + filePath); return process.stdout.write(result); } // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); + if (result === content) { + debug('Nothing changed in: ' + filePath); return; } // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); + content = ''; + debug('Write udpated content to: ' + filePath); + if (conf.simulate) + return info(filePath); // Write directly to the same file (if the process is killed all new and old data is lost) - if (_config_rr.voidBackup) { - return fs.writeFile(_file_rr, result, _config_rr.encoding, function (err) { + if (conf.voidBackup) { + return fs.writeFile(filePath, result, conf.encoding, function (err) { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const oriFile = path.normalize(path.join(process.cwd(), filePath)); const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); const backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { + if (conf.voidAsync) { try { fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { + fs.writeFileSync(oriFile, result, conf.encoding); + if (!conf.keepBackup) { fs.unlinkSync(backupFile); } } catch (e) { return error(e); } - return info(_file_rr); + return info(filePath); } // Let me know when fs gets promise'fied fs.rename(oriFile, backupFile, (err) => { if (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, (err) => { + fs.writeFile(oriFile, result, conf.encoding, (err) => { if (err) { return error(err); } - if (!_config_rr.keepBackup) { + if (!conf.keepBackup) { fs.unlink(backupFile, (err) => { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } else { - info(_file_rr); + info(filePath); } }); }); } -function handlePipedData(config) { +function handlepipeData(conf) { + outputConfig(conf); step('Check Piped Data'); - if (config.includeGlob.length) { - if (!config.replacementJs && config.pipedData) { - chat('Piped data never used.'); - } - return false; + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) + die('You flagged that replacement will be piped in - but no data arrived.'); + conf.replacement = conf.pipeData; + conf.pipeData = null; + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) + die('Please pipe filenames/globs in OR provide as parameters. Not both.'); + if (null === conf.pipeData) + die('You flagged that filenames/globs will be piped in - but no data arrived.'); + conf.globs = conf.pipeData; + conf.pipeData = null; } - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; + else if (null !== conf.pipeData) { + conf.output = true; } - return false; + return conf; } -function getFinalPattern(pattern, conf) { +function getPattern(pattern, conf) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); if (conf.literal) { @@ -153,25 +165,17 @@ function getFinalPattern(pattern, conf) { } /*if (config.patternFile) { pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); + pattern = new Function('return '+pattern)(); // js code?!? }*/ step(pattern); return pattern; } -function getFinalReplacement(replacement, conf) { +function getReplacement(replacement, conf) { step('Get final replacement'); /*if(config.replacementFile){ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - replacement = conf.pipedData; - } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -210,17 +214,17 @@ function getFinalReplacement(replacement, conf) { return line.trim(); }).join(' '); }*/ -function getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); +function getRegex(pattern, conf) { + step('Get final regex with engine: ' + conf.engine); let regex; - let flags = getFlags(config); - switch (config.engine) { + let flags = getFlags(conf); + switch (conf.engine) { case 'V8': try { regex = new RegExp(pattern, flags); } catch (e) { - if (config.debug) + if (conf.debug) throw new Error(e); die(e.message); } @@ -231,33 +235,33 @@ function getFinalRegex(pattern, config) { regex = new RE2(pattern, flags); } catch (e) { - if (config.debug) + if (conf.debug) throw new Error(e); die(e.message); } break; default: - die(`Engine ${config.engine} not supported`); + die(`Engine ${conf.engine} not supported`); } step(regex); return regex; } -function getFlags(config) { +function getFlags(conf) { step('Get flags'); let flags = ''; - if (!config.voidGlobal) { + if (!conf.voidGlobal) { flags += 'g'; } - if (!config.voidIgnoreCase) { + if (!conf.voidIgnoreCase) { flags += 'i'; } - if (!config.voidMultiline) { + if (!conf.voidMultiline) { flags += 'm'; } - if (config.dotAll) { + if (conf.dotAll) { flags += 's'; } - if (config.unicode) { + if (conf.unicode) { flags += 'u'; } step(flags); @@ -270,12 +274,12 @@ function readableSize(size) { const i = Math.floor(Math.log(size) / Math.log(1024)); return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); } -function dynamicReplacement(_file_rr, _config_rr, _data_rr) { +function dynamicReplacement(path, conf, content) { const _time_obj = now; const _time = localTimeString(_time_obj); - const _pipe = _config_rr.pipedData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; + const _pipe = conf.pipeData, _text = content, _find = conf.pattern, code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; // prettier-ignore - let _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + + let _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'glob', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + 'var __require_ = require;' + 'var r = function(file){' + 'var result = null;' + @@ -289,10 +293,10 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { '};' + 'require = r;' + 'return eval(__code_rr);'); - const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); + const needsByteOrSize = re.byteOrSize.test(conf.replacement); const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); + if (!conf.pipeData) { + _file = path.normalize(path.join(_cwd, path)); _file_rel = path.relative(_cwd, _file); const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -301,7 +305,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(conf.replacement)) { const fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -317,9 +321,10 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _bytes = Buffer.from(_text).length; _size = readableSize(_bytes); } + const glob = (a, b) => fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !conf.voidIgnoreCase, dot: true }, b)); // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, globs, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); + if (!/\$\d/.test(conf.replacement)) { + return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); } // Capture groups used, so need to run once per match return function () { @@ -329,7 +334,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { for (var i = 0; i < arguments.length - 2; i++) { capturedGroups += 'var $' + i + '=' + JSON.stringify(arguments[i]) + '; '; } - return dynamicContent(require, fs, globs, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); + return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); }; } function localTimeString(dateObj = new Date()) { @@ -345,18 +350,20 @@ function replacePlaceholders(str = '', conf) { return str; } function getFilePaths(conf) { - let { includeGlob, excludeGlob, excludeRe } = conf; - let filesToInclude = globs.sync(includeGlob); + const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf; + let filesToInclude = fGlob.sync(includeGlob, { + ignore: excludeGlob, + onlyFiles: true, + unique: true, + caseSensitiveMatch: !voidIgnoreCase, + dot: true, + }); if (excludeRe.length) { excludeRe - .map((el) => getFinalPattern(el, conf)) + .map((el) => getRegex(getPattern(el, conf), conf)) .forEach((re) => { filesToInclude = filesToInclude.filter((el) => !el.match(re)); }); } - if (excludeGlob.length) { - const filesToExclude = globs.sync(excludeGlob); - filesToInclude = filesToInclude.filter((el) => !filesToExclude.includes(el)); - } return filesToInclude; } diff --git a/bin/ES6/output.js b/bin/ES6/output.js index d3e1e30c..be6ce57d 100644 --- a/bin/ES6/output.js +++ b/bin/ES6/output.js @@ -10,7 +10,9 @@ export const info = function (msg, data = '') { if (config.quiet || config.quietTotal) { return; } - console.error(font.gray(msg), data); + if (config.output || config.outputMatch) + return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); + console.log.apply(this, [msg, data].filter(Boolean)); }; export const chat = function (msg, data = '') { if (config.verbose) { @@ -29,7 +31,7 @@ export const die = function (msg = '', data = '', displayHelp = false) { }; export const error = function (msg, data = '') { if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); + console.error.apply(this, [font.red(msg), data].filter(Boolean)); } if (config.halt) { kill(msg); diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 15ef7be1..4238570e 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -16,7 +16,9 @@ if (config.quiet || config.quietTotal) { return; } - console.error(font.gray(msg), data); + if (config.output || config.outputMatch) + { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } + console.log.apply(this, [msg, data].filter(Boolean)); }; var chat = function (msg, data) { if ( data === void 0 ) data = ''; @@ -43,7 +45,7 @@ if ( data === void 0 ) data = ''; if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); + console.error.apply(this, [font.red(msg), data].filter(Boolean)); } if (config.halt) { kill(msg); @@ -70,7 +72,7 @@ var fs = require('fs-extra'); var path = require('path'); - var globs = require('globs'); + var fGlob = require('fast-glob'); var now = new Date(); var re = { euro: /€/g, @@ -82,141 +84,153 @@ byteOrSize: /bytes|size/, folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, }; - var version = '7.1.3'; - function engine(config) { - if ( config === void 0 ) config = { engine: 'V8' }; + var version = '7.1.3-y'; + function engine(conf) { + if ( conf === void 0 ) conf = { engine: 'V8' }; - outputConfig(config); + conf = handlepipeData(conf); + outputConfig(conf); step('Displaying steps for:'); - step(config); - config.pattern = getFinalPattern(config.pattern, config) || ''; - config.replacement = getFinalReplacement(config.replacement, config) || ''; - config.replacementOri = config.replacement; - config.regex = getFinalRegex(config.pattern, config) || ''; - step(config); - if (handlePipedData(config)) { - return doReplacement('Piped data', config, config.pipedData); - } - config.files = getFilePaths(config); - if (!config.files.length) { - return error(config.files.length + ' files found'); - } - chat(config.files.length + ' files found'); - step(config); - config.files + step(conf); + conf.pattern = getPattern(conf.pattern, conf) || ''; + conf.replacement = getReplacement(conf.replacement, conf) || ''; + conf.replacementOri = conf.replacement; + conf.regex = getRegex(conf.pattern, conf) || ''; + step(conf); + if (null !== conf.pipeData) { + return doReplacement('Piped data', conf, conf.pipeData); + } + conf.files = getFilePaths(conf); + if (!conf.files.length) { + return error(conf.files.length + ' files found'); + } + chat(conf.files.length + ' files found'); + step(conf); + conf.files // Correct filepath //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid - .filter(function (filepath) { return (fs.existsSync(filepath) ? true : error('File not found:', filepath)); }) + .filter(function (filepath) { return (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath)); }) // Do the replacement - .forEach(function (filepath) { return openFile(filepath, config); }); + .forEach(function (filepath) { return openFile(filepath, conf); }); } - function openFile(file, config) { - if (config.voidAsync) { + function openFile(file, conf) { + if (conf.voidAsync) { chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); + var data = fs.readFileSync(file, conf.encoding); + return doReplacement(file, conf, data); } else { chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { + fs.readFile(file, conf.encoding, function (err, data) { if (err) { return error(err); } - return doReplacement(file, config, data); + return doReplacement(file, conf, data); }); } } // postfix argument names to limit the probabillity of user inputted javascript accidently using same values - function doReplacement(_file_rr, _config_rr, _data_rr) { - debug('Work on content from: ' + _file_rr); + function doReplacement(filePath, conf, content) { + debug('Work on content from: ' + filePath); // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + if (conf.replacementJs) { + conf.replacement = dynamicReplacement(filePath, conf, content); } // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + var result = content.replace(conf.regex, conf.replacement); // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { + if (conf.outputMatch) { return; } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); + if (conf.output) { + debug('Output result from: ' + filePath); return process.stdout.write(result); } // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); + if (result === content) { + debug('Nothing changed in: ' + filePath); return; } // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); + content = ''; + debug('Write udpated content to: ' + filePath); + if (conf.simulate) + { return info(filePath); } // Write directly to the same file (if the process is killed all new and old data is lost) - if (_config_rr.voidBackup) { - return fs.writeFile(_file_rr, result, _config_rr.encoding, function (err) { + if (conf.voidBackup) { + return fs.writeFile(filePath, result, conf.encoding, function (err) { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var oriFile = path.normalize(path.join(process.cwd(), filePath)); var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); var backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { + if (conf.voidAsync) { try { fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { + fs.writeFileSync(oriFile, result, conf.encoding); + if (!conf.keepBackup) { fs.unlinkSync(backupFile); } } catch (e) { return error(e); } - return info(_file_rr); + return info(filePath); } // Let me know when fs gets promise'fied fs.rename(oriFile, backupFile, function (err) { if (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, function (err) { + fs.writeFile(oriFile, result, conf.encoding, function (err) { if (err) { return error(err); } - if (!_config_rr.keepBackup) { + if (!conf.keepBackup) { fs.unlink(backupFile, function (err) { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } else { - info(_file_rr); + info(filePath); } }); }); } - function handlePipedData(config) { + function handlepipeData(conf) { + outputConfig(conf); step('Check Piped Data'); - if (config.includeGlob.length) { - if (!config.replacementJs && config.pipedData) { - chat('Piped data never used.'); - } - return false; - } - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; - } - return false; + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) + { die('You flagged that replacement will be piped in - but no data arrived.'); } + conf.replacement = conf.pipeData; + conf.pipeData = null; + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) + { die('Please pipe filenames/globs in OR provide as parameters. Not both.'); } + if (null === conf.pipeData) + { die('You flagged that filenames/globs will be piped in - but no data arrived.'); } + conf.globs = conf.pipeData; + conf.pipeData = null; + } + else if (null !== conf.pipeData) { + conf.output = true; + } + return conf; } - function getFinalPattern(pattern, conf) { + function getPattern(pattern, conf) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); if (conf.literal) { @@ -224,25 +238,17 @@ } /*if (config.patternFile) { pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); + pattern = new Function('return '+pattern)(); // js code?!? }*/ step(pattern); return pattern; } - function getFinalReplacement(replacement, conf) { + function getReplacement(replacement, conf) { step('Get final replacement'); /*if(config.replacementFile){ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - replacement = conf.pipedData; - } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -283,17 +289,17 @@ return line.trim(); }).join(' '); }*/ - function getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); + function getRegex(pattern, conf) { + step('Get final regex with engine: ' + conf.engine); var regex; - var flags = getFlags(config); - switch (config.engine) { + var flags = getFlags(conf); + switch (conf.engine) { case 'V8': try { regex = new RegExp(pattern, flags); } catch (e) { - if (config.debug) + if (conf.debug) { throw new Error(e); } die(e.message); } @@ -304,33 +310,33 @@ regex = new RE2(pattern, flags); } catch (e$1) { - if (config.debug) + if (conf.debug) { throw new Error(e$1); } die(e$1.message); } break; default: - die(("Engine " + (config.engine) + " not supported")); + die(("Engine " + (conf.engine) + " not supported")); } step(regex); return regex; } - function getFlags(config) { + function getFlags(conf) { step('Get flags'); var flags = ''; - if (!config.voidGlobal) { + if (!conf.voidGlobal) { flags += 'g'; } - if (!config.voidIgnoreCase) { + if (!conf.voidIgnoreCase) { flags += 'i'; } - if (!config.voidMultiline) { + if (!conf.voidMultiline) { flags += 'm'; } - if (config.dotAll) { + if (conf.dotAll) { flags += 's'; } - if (config.unicode) { + if (conf.unicode) { flags += 'u'; } step(flags); @@ -343,12 +349,12 @@ var i = Math.floor(Math.log(size) / Math.log(1024)); return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); } - function dynamicReplacement(_file_rr, _config_rr, _data_rr) { + function dynamicReplacement(path, conf, content) { var _time_obj = now; var _time = localTimeString(_time_obj); - var _pipe = _config_rr.pipedData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; + var _pipe = conf.pipeData, _text = content, _find = conf.pattern, code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; // prettier-ignore - var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + + var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'glob', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + 'var __require_ = require;' + 'var r = function(file){' + 'var result = null;' + @@ -362,10 +368,10 @@ '};' + 'require = r;' + 'return eval(__code_rr);'); - var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); + var needsByteOrSize = re.byteOrSize.test(conf.replacement); var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); + if (!conf.pipeData) { + _file = path.normalize(path.join(_cwd, path)); _file_rel = path.relative(_cwd, _file); var pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -374,7 +380,7 @@ _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(conf.replacement)) { var fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -390,9 +396,10 @@ _bytes = Buffer.from(_text).length; _size = readableSize(_bytes); } + var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !conf.voidIgnoreCase, dot: true }, b)); }; // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, globs, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); + if (!/\$\d/.test(conf.replacement)) { + return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); } // Capture groups used, so need to run once per match return function () { @@ -404,7 +411,7 @@ for (var i = 0; i < arguments.length - 2; i++) { capturedGroups += 'var $' + i + '=' + JSON.stringify(arguments$1[i]) + '; '; } - return dynamicContent(require, fs, globs, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); + return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); }; } function localTimeString(dateObj) { @@ -427,24 +434,27 @@ var includeGlob = conf.includeGlob; var excludeGlob = conf.excludeGlob; var excludeRe = conf.excludeRe; - var filesToInclude = globs.sync(includeGlob); + var voidIgnoreCase = conf.voidIgnoreCase; + var filesToInclude = fGlob.sync(includeGlob, { + ignore: excludeGlob, + onlyFiles: true, + unique: true, + caseSensitiveMatch: !voidIgnoreCase, + dot: true, + }); if (excludeRe.length) { excludeRe - .map(function (el) { return getFinalPattern(el, conf); }) + .map(function (el) { return getRegex(getPattern(el, conf), conf); }) .forEach(function (re) { filesToInclude = filesToInclude.filter(function (el) { return !el.match(re); }); }); } - if (excludeGlob.length) { - var filesToExclude = globs.sync(excludeGlob); - filesToInclude = filesToInclude.filter(function (el) { return !filesToExclude.includes(el); }); - } return filesToInclude; } var assign; var pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help + // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help var needHelp = 0; if (process.argv.length < 4) { if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { @@ -464,9 +474,9 @@ } var yargs = require('yargs') .strict() - .usage('RexReplace ' + + .usage('RexReplace v' + version + - ': Regexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + '> rexreplace pattern replacement [fileGlob|option]+') .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") .example('') @@ -476,29 +486,21 @@ .example('') .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") .example('') - .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or glob if needed") + .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") .version('v', 'Print rexreplace version (can be given as only argument)', version) .alias('v', 'version') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') .boolean('I') .describe('I', 'Void case insensitive search pattern.') .alias('I', 'void-ignore-case') .boolean('G') .describe('G', 'Void global search (stop looking after the first match).') .alias('G', 'void-global') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') .boolean('M') .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') .boolean('u') .describe('u', 'Treat pattern as a sequence of unicode code points.') .alias('u', 'unicode') @@ -509,39 +511,38 @@ .describe('E', 'What regex engine to use:') .choices('E', ['V8' ]) .default('E', 'V8') - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') .boolean('€') .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") .alias('€', 'void-euro') .boolean('§') .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") .alias('§', 'void-section') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will also output content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') .boolean('A') .alias('A', 'void-async') - .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. " + - '') + .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .default('H', false) + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') .boolean('B') - .describe('B', 'Avoid temporary backing up file. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is halted.') + .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') .alias('B', 'void-backup') .boolean('b') - .describe('b', 'Keep a backup file of the original content.') + .describe('b', 'Keep the backup file with the original content.') .alias('b', 'keep-backup') + .boolean('o') + .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') + .alias('o', 'output') + //.conflicts('o','O') .boolean('m') .describe('m', "Output each match on a new line. " + "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + @@ -556,14 +557,34 @@ '') .boolean('R') .alias('R', 'replacement-pipe') - .describe('R', "Replacement will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + - '') + .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") + .conflicts('R', 'g') + .conflicts('R', 'G') + .boolean('g') + .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + /* .boolean('G') + .describe('G', "filename/globs provided are to files containing one target filename/glob per line") + .alias('G', 'glob-file') + .conflicts('G','g')*/ + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') .string('x') .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') .alias('x', 'exclude-re') .string('X') .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') /* @@ -586,10 +607,10 @@ .alias('p', 'pattern-file') - .boolean('R') - .alias('R', 'replacement-file') - .describe('R', - `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` + .boolean('r') + .alias('r', 'replacement-file') + .describe('r', + `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` ) @@ -606,13 +627,6 @@ - .boolean('G') - .describe('G', "filename/globas are filename(s) for files containing one filename/globs on each line to be search/replaced") - .alias('G', 'globs-file') - - .boolean('g') - .describe('g', "filename/globs will be piped in. If any filename/globs are given in command the piped data will be prepened") - .alias('g', 'glob-pipe') .boolean('J') @@ -627,7 +641,7 @@ */ .boolean('j') .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`globs` from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") + .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") .help('h') .describe('h', 'Display help.') .alias('h', 'help') @@ -636,7 +650,6 @@ if ( exitcode === void 0 ) exitcode = 1; yargs.showHelp(); - //io(help); process.exitCode = exitcode; process.exit(); } @@ -649,39 +662,33 @@ if (0 < needHelp) { return backOut(needHelp - 1); } - // All options into one big config object for the rexreplace core - var config = {}; - // Use only camelCase full lenght version of settings so we make sure the core can be documented propperly + // All options into one big config object for the rexreplace engine + var conf = {}; + // Use only camelCase full lenght version of settings Object.keys(yargs.argv).forEach(function (key) { if (1 < key.length && key.indexOf('-') < 0) { - config[key] = yargs.argv[key]; + conf[key] = yargs.argv[key]; } }); - var pipeInUse = false; - var pipeData = ''; - config.pipedData = null; - config.showHelp = yargs.showHelp; - config.pattern = pattern; - config.includeGlob = yargs.argv._; - config.excludeGlob = [].concat( yargs.argv.excludeGlob ).filter(Boolean); - config.excludeRe = [].concat( yargs.argv.excludeRe ).filter(Boolean); - if (config.replacementJs) { - config.replacement = replacement; + conf.pipeData = null; + conf.showHelp = yargs.showHelp; + conf.pattern = pattern; + conf.includeGlob = yargs.argv._; + conf.excludeGlob = [].concat( yargs.argv.excludeGlob ).filter(Boolean); + conf.excludeRe = [].concat( yargs.argv.excludeRe ).filter(Boolean); + if (conf.replacementJs) { + conf.replacement = replacement; } else { - config.replacement = unescapeString(replacement); + conf.replacement = unescapeString(replacement); } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ + var pipeInUse = false; + var pipeData = ''; if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - engine(config); + engine(conf); } else { - process.stdin.setEncoding(config.encoding); + process.stdin.setEncoding(conf.encoding); process.stdin.on('readable', function () { var chunk = process.stdin.read(); if (null !== chunk) { @@ -697,9 +704,9 @@ if (yargs.argv.trimPipe) { pipeData = pipeData.trim(); } - config.pipedData = pipeData; + conf.pipeData = pipeData; } - engine(config); + engine(conf); }); } })(); diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 15ef7be1..4238570e 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -16,7 +16,9 @@ if (config.quiet || config.quietTotal) { return; } - console.error(font.gray(msg), data); + if (config.output || config.outputMatch) + { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } + console.log.apply(this, [msg, data].filter(Boolean)); }; var chat = function (msg, data) { if ( data === void 0 ) data = ''; @@ -43,7 +45,7 @@ if ( data === void 0 ) data = ''; if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); + console.error.apply(this, [font.red(msg), data].filter(Boolean)); } if (config.halt) { kill(msg); @@ -70,7 +72,7 @@ var fs = require('fs-extra'); var path = require('path'); - var globs = require('globs'); + var fGlob = require('fast-glob'); var now = new Date(); var re = { euro: /€/g, @@ -82,141 +84,153 @@ byteOrSize: /bytes|size/, folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, }; - var version = '7.1.3'; - function engine(config) { - if ( config === void 0 ) config = { engine: 'V8' }; + var version = '7.1.3-y'; + function engine(conf) { + if ( conf === void 0 ) conf = { engine: 'V8' }; - outputConfig(config); + conf = handlepipeData(conf); + outputConfig(conf); step('Displaying steps for:'); - step(config); - config.pattern = getFinalPattern(config.pattern, config) || ''; - config.replacement = getFinalReplacement(config.replacement, config) || ''; - config.replacementOri = config.replacement; - config.regex = getFinalRegex(config.pattern, config) || ''; - step(config); - if (handlePipedData(config)) { - return doReplacement('Piped data', config, config.pipedData); - } - config.files = getFilePaths(config); - if (!config.files.length) { - return error(config.files.length + ' files found'); - } - chat(config.files.length + ' files found'); - step(config); - config.files + step(conf); + conf.pattern = getPattern(conf.pattern, conf) || ''; + conf.replacement = getReplacement(conf.replacement, conf) || ''; + conf.replacementOri = conf.replacement; + conf.regex = getRegex(conf.pattern, conf) || ''; + step(conf); + if (null !== conf.pipeData) { + return doReplacement('Piped data', conf, conf.pipeData); + } + conf.files = getFilePaths(conf); + if (!conf.files.length) { + return error(conf.files.length + ' files found'); + } + chat(conf.files.length + ' files found'); + step(conf); + conf.files // Correct filepath //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid - .filter(function (filepath) { return (fs.existsSync(filepath) ? true : error('File not found:', filepath)); }) + .filter(function (filepath) { return (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath)); }) // Do the replacement - .forEach(function (filepath) { return openFile(filepath, config); }); + .forEach(function (filepath) { return openFile(filepath, conf); }); } - function openFile(file, config) { - if (config.voidAsync) { + function openFile(file, conf) { + if (conf.voidAsync) { chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); + var data = fs.readFileSync(file, conf.encoding); + return doReplacement(file, conf, data); } else { chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { + fs.readFile(file, conf.encoding, function (err, data) { if (err) { return error(err); } - return doReplacement(file, config, data); + return doReplacement(file, conf, data); }); } } // postfix argument names to limit the probabillity of user inputted javascript accidently using same values - function doReplacement(_file_rr, _config_rr, _data_rr) { - debug('Work on content from: ' + _file_rr); + function doReplacement(filePath, conf, content) { + debug('Work on content from: ' + filePath); // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + if (conf.replacementJs) { + conf.replacement = dynamicReplacement(filePath, conf, content); } // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + var result = content.replace(conf.regex, conf.replacement); // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { + if (conf.outputMatch) { return; } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); + if (conf.output) { + debug('Output result from: ' + filePath); return process.stdout.write(result); } // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); + if (result === content) { + debug('Nothing changed in: ' + filePath); return; } // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); + content = ''; + debug('Write udpated content to: ' + filePath); + if (conf.simulate) + { return info(filePath); } // Write directly to the same file (if the process is killed all new and old data is lost) - if (_config_rr.voidBackup) { - return fs.writeFile(_file_rr, result, _config_rr.encoding, function (err) { + if (conf.voidBackup) { + return fs.writeFile(filePath, result, conf.encoding, function (err) { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var oriFile = path.normalize(path.join(process.cwd(), filePath)); var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); var backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { + if (conf.voidAsync) { try { fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { + fs.writeFileSync(oriFile, result, conf.encoding); + if (!conf.keepBackup) { fs.unlinkSync(backupFile); } } catch (e) { return error(e); } - return info(_file_rr); + return info(filePath); } // Let me know when fs gets promise'fied fs.rename(oriFile, backupFile, function (err) { if (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, function (err) { + fs.writeFile(oriFile, result, conf.encoding, function (err) { if (err) { return error(err); } - if (!_config_rr.keepBackup) { + if (!conf.keepBackup) { fs.unlink(backupFile, function (err) { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } else { - info(_file_rr); + info(filePath); } }); }); } - function handlePipedData(config) { + function handlepipeData(conf) { + outputConfig(conf); step('Check Piped Data'); - if (config.includeGlob.length) { - if (!config.replacementJs && config.pipedData) { - chat('Piped data never used.'); - } - return false; - } - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; - } - return false; + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) + { die('You flagged that replacement will be piped in - but no data arrived.'); } + conf.replacement = conf.pipeData; + conf.pipeData = null; + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) + { die('Please pipe filenames/globs in OR provide as parameters. Not both.'); } + if (null === conf.pipeData) + { die('You flagged that filenames/globs will be piped in - but no data arrived.'); } + conf.globs = conf.pipeData; + conf.pipeData = null; + } + else if (null !== conf.pipeData) { + conf.output = true; + } + return conf; } - function getFinalPattern(pattern, conf) { + function getPattern(pattern, conf) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); if (conf.literal) { @@ -224,25 +238,17 @@ } /*if (config.patternFile) { pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); + pattern = new Function('return '+pattern)(); // js code?!? }*/ step(pattern); return pattern; } - function getFinalReplacement(replacement, conf) { + function getReplacement(replacement, conf) { step('Get final replacement'); /*if(config.replacementFile){ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - replacement = conf.pipedData; - } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -283,17 +289,17 @@ return line.trim(); }).join(' '); }*/ - function getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); + function getRegex(pattern, conf) { + step('Get final regex with engine: ' + conf.engine); var regex; - var flags = getFlags(config); - switch (config.engine) { + var flags = getFlags(conf); + switch (conf.engine) { case 'V8': try { regex = new RegExp(pattern, flags); } catch (e) { - if (config.debug) + if (conf.debug) { throw new Error(e); } die(e.message); } @@ -304,33 +310,33 @@ regex = new RE2(pattern, flags); } catch (e$1) { - if (config.debug) + if (conf.debug) { throw new Error(e$1); } die(e$1.message); } break; default: - die(("Engine " + (config.engine) + " not supported")); + die(("Engine " + (conf.engine) + " not supported")); } step(regex); return regex; } - function getFlags(config) { + function getFlags(conf) { step('Get flags'); var flags = ''; - if (!config.voidGlobal) { + if (!conf.voidGlobal) { flags += 'g'; } - if (!config.voidIgnoreCase) { + if (!conf.voidIgnoreCase) { flags += 'i'; } - if (!config.voidMultiline) { + if (!conf.voidMultiline) { flags += 'm'; } - if (config.dotAll) { + if (conf.dotAll) { flags += 's'; } - if (config.unicode) { + if (conf.unicode) { flags += 'u'; } step(flags); @@ -343,12 +349,12 @@ var i = Math.floor(Math.log(size) / Math.log(1024)); return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); } - function dynamicReplacement(_file_rr, _config_rr, _data_rr) { + function dynamicReplacement(path, conf, content) { var _time_obj = now; var _time = localTimeString(_time_obj); - var _pipe = _config_rr.pipedData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; + var _pipe = conf.pipeData, _text = content, _find = conf.pattern, code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; // prettier-ignore - var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + + var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'glob', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + 'var __require_ = require;' + 'var r = function(file){' + 'var result = null;' + @@ -362,10 +368,10 @@ '};' + 'require = r;' + 'return eval(__code_rr);'); - var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); + var needsByteOrSize = re.byteOrSize.test(conf.replacement); var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); + if (!conf.pipeData) { + _file = path.normalize(path.join(_cwd, path)); _file_rel = path.relative(_cwd, _file); var pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -374,7 +380,7 @@ _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(conf.replacement)) { var fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -390,9 +396,10 @@ _bytes = Buffer.from(_text).length; _size = readableSize(_bytes); } + var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !conf.voidIgnoreCase, dot: true }, b)); }; // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, globs, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); + if (!/\$\d/.test(conf.replacement)) { + return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); } // Capture groups used, so need to run once per match return function () { @@ -404,7 +411,7 @@ for (var i = 0; i < arguments.length - 2; i++) { capturedGroups += 'var $' + i + '=' + JSON.stringify(arguments$1[i]) + '; '; } - return dynamicContent(require, fs, globs, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); + return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); }; } function localTimeString(dateObj) { @@ -427,24 +434,27 @@ var includeGlob = conf.includeGlob; var excludeGlob = conf.excludeGlob; var excludeRe = conf.excludeRe; - var filesToInclude = globs.sync(includeGlob); + var voidIgnoreCase = conf.voidIgnoreCase; + var filesToInclude = fGlob.sync(includeGlob, { + ignore: excludeGlob, + onlyFiles: true, + unique: true, + caseSensitiveMatch: !voidIgnoreCase, + dot: true, + }); if (excludeRe.length) { excludeRe - .map(function (el) { return getFinalPattern(el, conf); }) + .map(function (el) { return getRegex(getPattern(el, conf), conf); }) .forEach(function (re) { filesToInclude = filesToInclude.filter(function (el) { return !el.match(re); }); }); } - if (excludeGlob.length) { - var filesToExclude = globs.sync(excludeGlob); - filesToInclude = filesToInclude.filter(function (el) { return !filesToExclude.includes(el); }); - } return filesToInclude; } var assign; var pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help + // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help var needHelp = 0; if (process.argv.length < 4) { if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { @@ -464,9 +474,9 @@ } var yargs = require('yargs') .strict() - .usage('RexReplace ' + + .usage('RexReplace v' + version + - ': Regexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + '> rexreplace pattern replacement [fileGlob|option]+') .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") .example('') @@ -476,29 +486,21 @@ .example('') .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") .example('') - .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or glob if needed") + .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") .version('v', 'Print rexreplace version (can be given as only argument)', version) .alias('v', 'version') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') .boolean('I') .describe('I', 'Void case insensitive search pattern.') .alias('I', 'void-ignore-case') .boolean('G') .describe('G', 'Void global search (stop looking after the first match).') .alias('G', 'void-global') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') .boolean('M') .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') .boolean('u') .describe('u', 'Treat pattern as a sequence of unicode code points.') .alias('u', 'unicode') @@ -509,39 +511,38 @@ .describe('E', 'What regex engine to use:') .choices('E', ['V8' ]) .default('E', 'V8') - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') .boolean('€') .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") .alias('€', 'void-euro') .boolean('§') .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") .alias('§', 'void-section') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will also output content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') .boolean('A') .alias('A', 'void-async') - .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. " + - '') + .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .default('H', false) + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') .boolean('B') - .describe('B', 'Avoid temporary backing up file. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is halted.') + .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') .alias('B', 'void-backup') .boolean('b') - .describe('b', 'Keep a backup file of the original content.') + .describe('b', 'Keep the backup file with the original content.') .alias('b', 'keep-backup') + .boolean('o') + .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') + .alias('o', 'output') + //.conflicts('o','O') .boolean('m') .describe('m', "Output each match on a new line. " + "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + @@ -556,14 +557,34 @@ '') .boolean('R') .alias('R', 'replacement-pipe') - .describe('R', "Replacement will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + - '') + .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") + .conflicts('R', 'g') + .conflicts('R', 'G') + .boolean('g') + .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + /* .boolean('G') + .describe('G', "filename/globs provided are to files containing one target filename/glob per line") + .alias('G', 'glob-file') + .conflicts('G','g')*/ + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') .string('x') .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') .alias('x', 'exclude-re') .string('X') .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') /* @@ -586,10 +607,10 @@ .alias('p', 'pattern-file') - .boolean('R') - .alias('R', 'replacement-file') - .describe('R', - `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` + .boolean('r') + .alias('r', 'replacement-file') + .describe('r', + `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` ) @@ -606,13 +627,6 @@ - .boolean('G') - .describe('G', "filename/globas are filename(s) for files containing one filename/globs on each line to be search/replaced") - .alias('G', 'globs-file') - - .boolean('g') - .describe('g', "filename/globs will be piped in. If any filename/globs are given in command the piped data will be prepened") - .alias('g', 'glob-pipe') .boolean('J') @@ -627,7 +641,7 @@ */ .boolean('j') .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`globs` from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") + .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") .help('h') .describe('h', 'Display help.') .alias('h', 'help') @@ -636,7 +650,6 @@ if ( exitcode === void 0 ) exitcode = 1; yargs.showHelp(); - //io(help); process.exitCode = exitcode; process.exit(); } @@ -649,39 +662,33 @@ if (0 < needHelp) { return backOut(needHelp - 1); } - // All options into one big config object for the rexreplace core - var config = {}; - // Use only camelCase full lenght version of settings so we make sure the core can be documented propperly + // All options into one big config object for the rexreplace engine + var conf = {}; + // Use only camelCase full lenght version of settings Object.keys(yargs.argv).forEach(function (key) { if (1 < key.length && key.indexOf('-') < 0) { - config[key] = yargs.argv[key]; + conf[key] = yargs.argv[key]; } }); - var pipeInUse = false; - var pipeData = ''; - config.pipedData = null; - config.showHelp = yargs.showHelp; - config.pattern = pattern; - config.includeGlob = yargs.argv._; - config.excludeGlob = [].concat( yargs.argv.excludeGlob ).filter(Boolean); - config.excludeRe = [].concat( yargs.argv.excludeRe ).filter(Boolean); - if (config.replacementJs) { - config.replacement = replacement; + conf.pipeData = null; + conf.showHelp = yargs.showHelp; + conf.pattern = pattern; + conf.includeGlob = yargs.argv._; + conf.excludeGlob = [].concat( yargs.argv.excludeGlob ).filter(Boolean); + conf.excludeRe = [].concat( yargs.argv.excludeRe ).filter(Boolean); + if (conf.replacementJs) { + conf.replacement = replacement; } else { - config.replacement = unescapeString(replacement); + conf.replacement = unescapeString(replacement); } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ + var pipeInUse = false; + var pipeData = ''; if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - engine(config); + engine(conf); } else { - process.stdin.setEncoding(config.encoding); + process.stdin.setEncoding(conf.encoding); process.stdin.on('readable', function () { var chunk = process.stdin.read(); if (null !== chunk) { @@ -697,9 +704,9 @@ if (yargs.argv.trimPipe) { pipeData = pipeData.trim(); } - config.pipedData = pipeData; + conf.pipeData = pipeData; } - engine(config); + engine(conf); }); } })(); diff --git a/package.json b/package.json index da4be906..e2cf6276 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rexreplace", - "version": "7.1.3", + "version": "7.1.3-y", "description": "Smoothly search & replace in files from CLI.", "author": "Mathias Rangel Wulff", "license": "MIT", @@ -29,7 +29,7 @@ "test-speed": "bash test/speed/run.sh", "prepublishOnly": "yarn is-git-clean && git fetch && git rebase origin/main && yarn test-minify && yarn load-options && yarn bump", "postpublish": "git push --tag && git push && (open https://github.com/mathiasrw/rexreplace/releases || 1)", - "load-options": "rr -h | rr 'Options:(.+)Examples:' _ -ms | rr '\\n {26,}|\\n\\n *' ' ' | rr \"'\" '`' | rr '^ (-.+?), (--[^ ]+) *' '`€1` | **`€2`** ' | rr '(^---- . ----).+?(## Good to know)' '€1 + nl + pipe + nl + nl + €2' readme.md -jsT", + "load-options": "rr -h | rr 'Options:(.+)Examples:' _ -ms | rr '§n {26,}|§n§n *' ' ' | rr \"'\" '`' | rr '^ (-.+?), (--[^ ]+) *' '`€1` | **`€2`** ' | rr '(^---- . ----).+?(## Good to know)' '€1 + nl + pipe + nl + nl + €2' readme.md -jsT", "test-format": "yarn prettier --list-different || (echo 'Please correct file formatting using `yarn format` and try again.' && exit 1)", "format": "yarn prettier --write", "prettier": "prettier '{src,test}/**/*.{scss,css,js,ts}'", @@ -74,6 +74,7 @@ "test": "test" }, "dependencies": { + "fast-glob": "^3.3.1", "fs-extra": "^11.1.1", "globs": "0.1.4", "yargs": "16.2.0" diff --git a/src/cli.ts b/src/cli.ts index 4eb3f2f7..b859cc4f 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -6,7 +6,7 @@ import * as rexreplace from './engine'; let pattern, replacement; -// To avoid problems with patterns or replacements starting with '-' the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help +// To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help let needHelp = 0; if (process.argv.length < 4) { if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { @@ -26,9 +26,9 @@ const yargs = require('yargs') .strict() .usage( - 'RexReplace ' + + 'RexReplace v' + rexreplace.version + - ': Regexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + '> rexreplace pattern replacement [fileGlob|option]+' ) @@ -49,21 +49,11 @@ const yargs = require('yargs') .example('') .example( `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, - `Provide multiple files or glob if needed` + `Provide multiple files or globs if needed` ) .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) .alias('v', 'version') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('I') .describe('I', 'Void case insensitive search pattern.') .alias('I', 'void-ignore-case') @@ -72,10 +62,6 @@ const yargs = require('yargs') .describe('G', 'Void global search (stop looking after the first match).') .alias('G', 'void-global') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('M') .describe( 'M', @@ -83,6 +69,10 @@ const yargs = require('yargs') ) .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') + .boolean('u') .describe('u', 'Treat pattern as a sequence of unicode code points.') .alias('u', 'unicode') @@ -96,22 +86,9 @@ const yargs = require('yargs') .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) .default('E', 'V8') - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') .boolean('€') .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") @@ -121,33 +98,45 @@ const yargs = require('yargs') .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") .alias('§', 'void-section') - .boolean('o') - .describe( - 'o', - 'Output the final result instead of saving to file. Will also output content even if no replacement has taken place.' - ) - .alias('o', 'output') - //.conflicts('o','O') - .boolean('A') .alias('A', 'void-async') .describe( 'A', - `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` + - '' + `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` ) + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .default('H', false) + + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') + .boolean('B') .describe( 'B', - 'Avoid temporary backing up file. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is halted.' + 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.' ) .alias('B', 'void-backup') .boolean('b') - .describe('b', 'Keep a backup file of the original content.') + .describe('b', 'Keep the backup file with the original content.') .alias('b', 'keep-backup') + .boolean('o') + .describe( + 'o', + 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.' + ) + .alias('o', 'output') + //.conflicts('o','O') + .boolean('m') .describe( 'm', @@ -172,9 +161,27 @@ const yargs = require('yargs') .alias('R', 'replacement-pipe') .describe( 'R', - `Replacement will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + - '' + `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + ) + .conflicts('R', 'g') + .conflicts('R', 'G') + + .boolean('g') + .describe( + 'g', + 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt' ) + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + + /* .boolean('G') + .describe('G', "filename/globs provided are to files containing one target filename/glob per line") + .alias('G', 'glob-file') + .conflicts('G','g')*/ + + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') .string('x') .describe( @@ -187,6 +194,17 @@ const yargs = require('yargs') .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + + //.conflicts('V', 'q') + //.conflicts('V', 'Q') + /* @@ -209,10 +227,10 @@ const yargs = require('yargs') .alias('p', 'pattern-file') - .boolean('R') - .alias('R', 'replacement-file') - .describe('R', - `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` + .boolean('r') + .alias('r', 'replacement-file') + .describe('r', + `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` ) @@ -229,13 +247,6 @@ const yargs = require('yargs') - .boolean('G') - .describe('G', "filename/globas are filename(s) for files containing one filename/globs on each line to be search/replaced") - .alias('G', 'globs-file') - - .boolean('g') - .describe('g', "filename/globs will be piped in. If any filename/globs are given in command the piped data will be prepened") - .alias('g', 'glob-pipe') .boolean('J') @@ -255,7 +266,7 @@ const yargs = require('yargs') 'j', `Treat replacement as javascript source code. The statement from the last expression will become the replacement string. - Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. + Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. @@ -264,7 +275,7 @@ const yargs = require('yargs') \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, \`fs\` from node, \`path\` from node, - \`globs\` from npm, + \`glob\` proxy name for the .sync function of fast-glob from npm, \`pipe\`: the data piped into the command (null if no piped data), \`find\`: pattern searched for (the needle), \`text\`: full text being searched i.e. file content or piped data (the haystack), @@ -302,7 +313,6 @@ const yargs = require('yargs') function backOut(exitcode = 1) { const help = yargs.showHelp(); const io = exitcode ? console.error : console.log; - //io(help); process.exitCode = exitcode; process.exit(); } @@ -316,41 +326,37 @@ function unescapeString(str = '') { return backOut(needHelp - 1); } - // All options into one big config object for the rexreplace core - let config: any = {}; + // All options into one big config object for the rexreplace engine + let conf: any = {}; - // Use only camelCase full lenght version of settings so we make sure the core can be documented propperly + // Use only camelCase full lenght version of settings Object.keys(yargs.argv).forEach((key) => { if (1 < key.length && key.indexOf('-') < 0) { - config[key] = yargs.argv[key]; + conf[key] = yargs.argv[key]; } }); - let pipeInUse = false; - let pipeData = ''; + conf.pipeData = null; + conf.showHelp = yargs.showHelp; + conf.pattern = pattern; + + conf.includeGlob = yargs.argv._; + conf.excludeGlob = [...yargs.argv.excludeGlob].filter(Boolean); + conf.excludeRe = [...yargs.argv.excludeRe].filter(Boolean); - config.pipedData = null; - config.showHelp = yargs.showHelp; - config.pattern = pattern; - config.includeGlob = yargs.argv._; - config.excludeGlob = [...yargs.argv.excludeGlob].filter(Boolean); - config.excludeRe = [...yargs.argv.excludeRe].filter(Boolean); - if (config.replacementJs) { - config.replacement = replacement; + if (conf.replacementJs) { + conf.replacement = replacement; } else { - config.replacement = unescapeString(replacement); + conf.replacement = unescapeString(replacement); } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ + let pipeInUse = false; + let pipeData = ''; + if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - rexreplace.engine(config); + rexreplace.engine(conf); } else { - process.stdin.setEncoding(config.encoding); + process.stdin.setEncoding(conf.encoding); process.stdin.on('readable', () => { let chunk = process.stdin.read(); @@ -369,9 +375,10 @@ function unescapeString(str = '') { if (yargs.argv.trimPipe) { pipeData = pipeData.trim(); } - config.pipedData = pipeData; + + conf.pipeData = pipeData; } - rexreplace.engine(config); + rexreplace.engine(conf); }); } })(); diff --git a/src/engine.ts b/src/engine.ts index 4c81b773..39b97845 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -2,7 +2,7 @@ const fs = require('fs-extra'); const path = require('path'); -const globs = require('globs'); +const fGlob = require('fast-glob'); const now = new Date(); @@ -21,122 +21,126 @@ const re = { export const version = 'PACKAGE_VERSION'; -export function engine(config: any = {engine: 'V8'}) { - outputConfig(config); +export function engine(conf: any = {engine: 'V8'}) { + conf = handlepipeData(conf); + + outputConfig(conf); step('Displaying steps for:'); - step(config); + step(conf); - config.pattern = getFinalPattern(config.pattern, config) || ''; + conf.pattern = getPattern(conf.pattern, conf) || ''; - config.replacement = getFinalReplacement(config.replacement, config) || ''; + conf.replacement = getReplacement(conf.replacement, conf) || ''; - config.replacementOri = config.replacement; + conf.replacementOri = conf.replacement; - config.regex = getFinalRegex(config.pattern, config) || ''; + conf.regex = getRegex(conf.pattern, conf) || ''; - step(config); + step(conf); - if (handlePipedData(config)) { - return doReplacement('Piped data', config, config.pipedData); + if (null !== conf.pipeData) { + return doReplacement('Piped data', conf, conf.pipeData); } - config.files = getFilePaths(config); + conf.files = getFilePaths(conf); - if (!config.files.length) { - return error(config.files.length + ' files found'); + if (!conf.files.length) { + return error(conf.files.length + ' files found'); } - chat(config.files.length + ' files found'); + chat(conf.files.length + ' files found'); - step(config); + step(conf); - config.files + conf.files // Correct filepath //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid - .filter((filepath) => (fs.existsSync(filepath) ? true : error('File not found:', filepath))) + .filter((filepath) => (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath))) // Do the replacement - .forEach((filepath) => openFile(filepath, config)); + .forEach((filepath) => openFile(filepath, conf)); } -function openFile(file, config) { - if (config.voidAsync) { +function openFile(file, conf) { + if (conf.voidAsync) { chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); + var data = fs.readFileSync(file, conf.encoding); + return doReplacement(file, conf, data); } else { chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { + fs.readFile(file, conf.encoding, function (err, data) { if (err) { return error(err); } - return doReplacement(file, config, data); + return doReplacement(file, conf, data); }); } } // postfix argument names to limit the probabillity of user inputted javascript accidently using same values -function doReplacement(_file_rr: string, _config_rr: any, _data_rr: string) { - debug('Work on content from: ' + _file_rr); +function doReplacement(filePath: string, conf: any, content: string) { + debug('Work on content from: ' + filePath); // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + if (conf.replacementJs) { + conf.replacement = dynamicReplacement(filePath, conf, content); } // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + const result = content.replace(conf.regex, conf.replacement); // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { + if (conf.outputMatch) { return; } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); + if (conf.output) { + debug('Output result from: ' + filePath); return process.stdout.write(result); } // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); + if (result === content) { + debug('Nothing changed in: ' + filePath); return; } // Release the memory while storing files - _data_rr = ''; + content = ''; + + debug('Write udpated content to: ' + filePath); - debug('Write new content to: ' + _file_rr); + if (conf.simulate) return info(filePath); // Write directly to the same file (if the process is killed all new and old data is lost) - if (_config_rr.voidBackup) { - return fs.writeFile(_file_rr, result, _config_rr.encoding, function (err) { + if (conf.voidBackup) { + return fs.writeFile(filePath, result, conf.encoding, function (err) { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const oriFile = path.normalize(path.join(process.cwd(), filePath)); const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); const backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { + if (conf.voidAsync) { try { fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { + fs.writeFileSync(oriFile, result, conf.encoding); + if (!conf.keepBackup) { fs.unlinkSync(backupFile); } } catch (e) { return error(e); } - return info(_file_rr); + return info(filePath); } // Let me know when fs gets promise'fied @@ -145,46 +149,54 @@ function doReplacement(_file_rr: string, _config_rr: any, _data_rr: string) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, (err) => { + fs.writeFile(oriFile, result, conf.encoding, (err) => { if (err) { return error(err); } - if (!_config_rr.keepBackup) { + if (!conf.keepBackup) { fs.unlink(backupFile, (err) => { if (err) { return error(err); } - info(_file_rr); + info(filePath); }); } else { - info(_file_rr); + info(filePath); } }); }); } -function handlePipedData(config) { - step('Check Piped Data'); - - if (config.includeGlob.length) { - if (!config.replacementJs && config.pipedData) { - chat('Piped data never used.'); - } +function handlepipeData(conf) { + outputConfig(conf); - return false; - } + step('Check Piped Data'); - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) + die('You flagged that replacement will be piped in - but no data arrived.'); + + conf.replacement = conf.pipeData; + conf.pipeData = null; + } else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) + die('Please pipe filenames/globs in OR provide as parameters. Not both.'); + + if (null === conf.pipeData) + die('You flagged that filenames/globs will be piped in - but no data arrived.'); + + conf.globs = conf.pipeData; + conf.pipeData = null; + } else if (null !== conf.pipeData) { + conf.output = true; } - - return false; + return conf; } -function getFinalPattern(pattern, conf: any) { +function getPattern(pattern, conf: any) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); @@ -194,14 +206,14 @@ function getFinalPattern(pattern, conf: any) { /*if (config.patternFile) { pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); + pattern = new Function('return '+pattern)(); // js code?!? }*/ step(pattern); return pattern; } -function getFinalReplacement(replacement, conf: any) { +function getReplacement(replacement, conf: any) { step('Get final replacement'); /*if(config.replacementFile){ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); @@ -209,15 +221,6 @@ function getFinalReplacement(replacement, conf: any) { replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - replacement = conf.pipedData; - } - if (conf.outputMatch) { step('Output match'); @@ -267,19 +270,19 @@ function getFinalReplacement(replacement, conf: any) { }).join(' '); }*/ -function getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); +function getRegex(pattern, conf) { + step('Get final regex with engine: ' + conf.engine); let regex; - let flags = getFlags(config); + let flags = getFlags(conf); - switch (config.engine) { + switch (conf.engine) { case 'V8': try { regex = new RegExp(pattern, flags); } catch (e) { - if (config.debug) throw new Error(e); + if (conf.debug) throw new Error(e); die(e.message); } break; @@ -288,12 +291,12 @@ function getFinalRegex(pattern, config) { const RE2 = require('re2'); regex = new RE2(pattern, flags); } catch (e) { - if (config.debug) throw new Error(e); + if (conf.debug) throw new Error(e); die(e.message); } break; default: - die(`Engine ${config.engine} not supported`); + die(`Engine ${conf.engine} not supported`); } step(regex); @@ -301,28 +304,28 @@ function getFinalRegex(pattern, config) { return regex; } -function getFlags(config) { +function getFlags(conf) { step('Get flags'); let flags = ''; - if (!config.voidGlobal) { + if (!conf.voidGlobal) { flags += 'g'; } - if (!config.voidIgnoreCase) { + if (!conf.voidIgnoreCase) { flags += 'i'; } - if (!config.voidMultiline) { + if (!conf.voidMultiline) { flags += 'm'; } - if (config.dotAll) { + if (conf.dotAll) { flags += 's'; } - if (config.unicode) { + if (conf.unicode) { flags += 'u'; } @@ -341,13 +344,13 @@ function readableSize(size) { ); } -function dynamicReplacement(_file_rr, _config_rr, _data_rr) { +function dynamicReplacement(path, conf, content) { const _time_obj = now; const _time = localTimeString(_time_obj); - const _pipe = _config_rr.pipedData, - _text = _data_rr, - _find = _config_rr.pattern, - code_rr = _config_rr.replacementOri, + const _pipe = conf.pipeData, + _text = content, + _find = conf.pattern, + code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', @@ -371,7 +374,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { dynamicContent = new Function( 'require', 'fs', - 'globs', + 'glob', 'path', 'pipe', @@ -438,11 +441,11 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 'return eval(__code_rr);' ); - const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); + const needsByteOrSize = re.byteOrSize.test(conf.replacement); const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); + if (!conf.pipeData) { + _file = path.normalize(path.join(_cwd, path)); _file_rel = path.relative(_cwd, _file); const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -452,7 +455,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(conf.replacement)) { const fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -471,12 +474,20 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _size = readableSize(_bytes); } + const glob = (a, b) => + fGlob.sync(a, { + unique: true, + caseSensitiveMatch: !conf.voidIgnoreCase, + dot: true, + ...b, + }); + // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { + if (!/\$\d/.test(conf.replacement)) { return dynamicContent( require, fs, - globs, + glob, path, _pipe, _pipe + _, @@ -559,7 +570,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { return dynamicContent( require, fs, - globs, + glob, path, __pipe, @@ -635,22 +646,23 @@ function replacePlaceholders(str = '', conf: any) { } function getFilePaths(conf) { - let {includeGlob, excludeGlob, excludeRe} = conf; - - let filesToInclude = globs.sync(includeGlob); + const {includeGlob, excludeGlob, excludeRe, voidIgnoreCase} = conf; + + let filesToInclude: string[] = fGlob.sync(includeGlob, { + ignore: excludeGlob, + onlyFiles: true, + unique: true, + caseSensitiveMatch: !voidIgnoreCase, + dot: true, + }); if (excludeRe.length) { excludeRe - .map((el) => getFinalPattern(el, conf)) + .map((el) => getRegex(getPattern(el, conf), conf)) .forEach((re) => { filesToInclude = filesToInclude.filter((el) => !el.match(re)); }); } - if (excludeGlob.length) { - const filesToExclude = globs.sync(excludeGlob); - filesToInclude = filesToInclude.filter((el) => !filesToExclude.includes(el)); - } - return filesToInclude; } diff --git a/src/output.ts b/src/output.ts index ee0a49ff..8dae1d55 100644 --- a/src/output.ts +++ b/src/output.ts @@ -13,7 +13,10 @@ export const info = function (msg, data = '') { if (config.quiet || config.quietTotal) { return; } - console.error(font.gray(msg), data); + if (config.output || config.outputMatch) + return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); + + console.log.apply(this, [msg, data].filter(Boolean)); }; export const chat = function (msg, data = '') { @@ -34,7 +37,7 @@ export const die = function (msg = '', data = '', displayHelp = false) { export const error = function (msg, data = '') { if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); + console.error.apply(this, [font.red(msg), data].filter(Boolean)); } if (config.halt) { kill(msg); diff --git a/test/cli/run.sh b/test/cli/run.sh index 9ae216f3..8ed00476 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -20,7 +20,7 @@ source $DIR/aserta.sh # assert_end "example" reset() { - echo 'Resetting testdata' + echo 'Reset test data' echo 'foobar' > my.file echo 'abc123' > your.file } @@ -68,6 +68,9 @@ assert_success "rexreplace -help" reset assert "rexreplace x x my.file --output" "foobar" +assert_end "rexreplace" +exit + reset assert "rexreplace o x my.file --output" "fxxbar" @@ -208,7 +211,6 @@ assert "rexreplace 'foobar' '[require, fs, globs, path, pipe, pipe_, find, f reset assert "printf x | rexreplace 'b' _ my.file -o --replacement-pipe" 'fooxar' - # -L @@ -237,6 +239,7 @@ assert "cat my.file" 'foo*+*ar' assert "cat your.file" 'abc123' + # -X reset rexreplace 'b' '*+*' '*.file' -X '*.file' @@ -249,6 +252,12 @@ assert "cat your.file" 'abc123' +# -S +reset + rexreplace 'b' '_' 'my.file' -S &> 'your.file' +assert "cat your.file" 'my.file' +assert "cat 'my.file'" 'foobar' + diff --git a/yarn.lock b/yarn.lock index 98473f49..d565572b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -882,7 +882,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9: +fast-glob@^3.2.9, fast-glob@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== From d690c6cd57e4e60ff5274872ecfaf97f8f0a68a8 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Sun, 6 Aug 2023 16:54:20 +1000 Subject: [PATCH 02/17] Test ok - but still sorting things out --- bin/ES6/engine.js | 59 ++++++++++++------------ bin/rexreplace.cli.js | 60 ++++++++++++------------- bin/rexreplace.cli.min.js | 61 +++++++++++++------------ src/engine.ts | 95 ++++++++++++++++++++++++--------------- test/cli/run.sh | 3 -- 5 files changed, 147 insertions(+), 131 deletions(-) diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index c83e4951..2c9c472b 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -1,6 +1,7 @@ const fs = require('fs-extra'); const path = require('path'); const fGlob = require('fast-glob'); +const globs = require('globs'); const now = new Date(); import { outputConfig, step, debug, chat, info, error, die } from './output'; const re = { @@ -15,7 +16,6 @@ const re = { }; export const version = 'PACKAGE_VERSION'; export function engine(conf = { engine: 'V8' }) { - conf = handlepipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -24,8 +24,8 @@ export function engine(conf = { engine: 'V8' }) { conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (null !== conf.pipeData) { - return doReplacement('Piped data', conf, conf.pipeData); + if (handlepipeData(conf)) { + return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); if (!conf.files.length) { @@ -134,28 +134,19 @@ function doReplacement(filePath, conf, content) { }); } function handlepipeData(conf) { - outputConfig(conf); step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) - die('You flagged that replacement will be piped in - but no data arrived.'); - conf.replacement = conf.pipeData; - conf.pipeData = null; - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) - die('Please pipe filenames/globs in OR provide as parameters. Not both.'); - if (null === conf.pipeData) - die('You flagged that filenames/globs will be piped in - but no data arrived.'); - conf.globs = conf.pipeData; - conf.pipeData = null; + if (conf.includeGlob.length) { + if (!conf.replacementJs && conf.pipeData) { + chat('Piped data never used.'); + } + return false; } - else if (null !== conf.pipeData) { + if (null !== conf.pipeData && !conf.pipeDataUsed) { + conf.dataIsPiped = true; conf.output = true; + return true; } - return conf; + return false; } function getPattern(pattern, conf) { step('Get final pattern'); @@ -176,6 +167,14 @@ function getReplacement(replacement, conf) { return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); + if (conf.replacementPipe) { + step('Piping replacement'); + conf.pipeDataUsed = true; + if (null === conf.pipeData) { + return die('No data piped into replacement'); + } + replacement = conf.pipeData; + } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -274,12 +273,12 @@ function readableSize(size) { const i = Math.floor(Math.log(size) / Math.log(1024)); return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); } -function dynamicReplacement(path, conf, content) { +function dynamicReplacement(_file_rr, _config_rr, _data_rr) { const _time_obj = now; const _time = localTimeString(_time_obj); - const _pipe = conf.pipeData, _text = content, _find = conf.pattern, code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; + const _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; // prettier-ignore - let _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'glob', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + + let _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + 'var __require_ = require;' + 'var r = function(file){' + 'var result = null;' + @@ -293,10 +292,10 @@ function dynamicReplacement(path, conf, content) { '};' + 'require = r;' + 'return eval(__code_rr);'); - const needsByteOrSize = re.byteOrSize.test(conf.replacement); + const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!conf.pipeData) { - _file = path.normalize(path.join(_cwd, path)); + if (!_config_rr.dataIsPiped) { + _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -305,7 +304,7 @@ function dynamicReplacement(path, conf, content) { _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(conf.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { const fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -321,9 +320,9 @@ function dynamicReplacement(path, conf, content) { _bytes = Buffer.from(_text).length; _size = readableSize(_bytes); } - const glob = (a, b) => fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !conf.voidIgnoreCase, dot: true }, b)); + const glob = (a, b) => fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true }, b)); // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(conf.replacement)) { + if (!/\$\d/.test(_config_rr.replacement)) { return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); } // Capture groups used, so need to run once per match diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 4238570e..9fa33bb9 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -73,6 +73,7 @@ var fs = require('fs-extra'); var path = require('path'); var fGlob = require('fast-glob'); + require('globs'); var now = new Date(); var re = { euro: /€/g, @@ -88,7 +89,6 @@ function engine(conf) { if ( conf === void 0 ) conf = { engine: 'V8' }; - conf = handlepipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -97,8 +97,8 @@ conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (null !== conf.pipeData) { - return doReplacement('Piped data', conf, conf.pipeData); + if (handlepipeData(conf)) { + return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); if (!conf.files.length) { @@ -209,26 +209,18 @@ function handlepipeData(conf) { outputConfig(conf); step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) - { die('You flagged that replacement will be piped in - but no data arrived.'); } - conf.replacement = conf.pipeData; - conf.pipeData = null; - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) - { die('Please pipe filenames/globs in OR provide as parameters. Not both.'); } - if (null === conf.pipeData) - { die('You flagged that filenames/globs will be piped in - but no data arrived.'); } - conf.globs = conf.pipeData; - conf.pipeData = null; - } - else if (null !== conf.pipeData) { + if (conf.includeGlob.length) { + if (!conf.replacementJs && conf.pipeData) { + chat('Piped data never used.'); + } + return false; + } + if (null !== conf.pipeData && !conf.pipeDataUsed) { + conf.dataIsPiped = true; conf.output = true; + return true; } - return conf; + return false; } function getPattern(pattern, conf) { step('Get final pattern'); @@ -249,6 +241,14 @@ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); + if (conf.replacementPipe) { + step('Piping replacement'); + conf.pipeDataUsed = true; + if (null === conf.pipeData) { + return die('No data piped into replacement'); + } + replacement = conf.pipeData; + } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -349,12 +349,12 @@ var i = Math.floor(Math.log(size) / Math.log(1024)); return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); } - function dynamicReplacement(path, conf, content) { + function dynamicReplacement(_file_rr, _config_rr, _data_rr) { var _time_obj = now; var _time = localTimeString(_time_obj); - var _pipe = conf.pipeData, _text = content, _find = conf.pattern, code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; + var _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; // prettier-ignore - var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'glob', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + + var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + 'var __require_ = require;' + 'var r = function(file){' + 'var result = null;' + @@ -368,10 +368,10 @@ '};' + 'require = r;' + 'return eval(__code_rr);'); - var needsByteOrSize = re.byteOrSize.test(conf.replacement); + var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!conf.pipeData) { - _file = path.normalize(path.join(_cwd, path)); + if (!_config_rr.dataIsPiped) { + _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); var pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -380,7 +380,7 @@ _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(conf.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { var fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -396,9 +396,9 @@ _bytes = Buffer.from(_text).length; _size = readableSize(_bytes); } - var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !conf.voidIgnoreCase, dot: true }, b)); }; + var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true }, b)); }; // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(conf.replacement)) { + if (!/\$\d/.test(_config_rr.replacement)) { return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); } // Capture groups used, so need to run once per match diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 4238570e..6e388d9d 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -73,6 +73,7 @@ var fs = require('fs-extra'); var path = require('path'); var fGlob = require('fast-glob'); + require('globs'); var now = new Date(); var re = { euro: /€/g, @@ -88,7 +89,6 @@ function engine(conf) { if ( conf === void 0 ) conf = { engine: 'V8' }; - conf = handlepipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -97,8 +97,8 @@ conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (null !== conf.pipeData) { - return doReplacement('Piped data', conf, conf.pipeData); + if (handlepipeData(conf)) { + return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); if (!conf.files.length) { @@ -207,28 +207,19 @@ }); } function handlepipeData(conf) { - outputConfig(conf); step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) - { die('You flagged that replacement will be piped in - but no data arrived.'); } - conf.replacement = conf.pipeData; - conf.pipeData = null; - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) - { die('Please pipe filenames/globs in OR provide as parameters. Not both.'); } - if (null === conf.pipeData) - { die('You flagged that filenames/globs will be piped in - but no data arrived.'); } - conf.globs = conf.pipeData; - conf.pipeData = null; - } - else if (null !== conf.pipeData) { + if (conf.includeGlob.length) { + if (!conf.replacementJs && conf.pipeData) { + chat('Piped data never used.'); + } + return false; + } + if (null !== conf.pipeData && !conf.pipeDataUsed) { + conf.dataIsPiped = true; conf.output = true; + return true; } - return conf; + return false; } function getPattern(pattern, conf) { step('Get final pattern'); @@ -249,6 +240,14 @@ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); + if (conf.replacementPipe) { + step('Piping replacement'); + conf.pipeDataUsed = true; + if (null === conf.pipeData) { + return die('No data piped into replacement'); + } + replacement = conf.pipeData; + } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -349,12 +348,12 @@ var i = Math.floor(Math.log(size) / Math.log(1024)); return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); } - function dynamicReplacement(path, conf, content) { + function dynamicReplacement(_file_rr, _config_rr, _data_rr) { var _time_obj = now; var _time = localTimeString(_time_obj); - var _pipe = conf.pipeData, _text = content, _find = conf.pattern, code_rr = conf.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; + var _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; // prettier-ignore - var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'glob', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + + var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + 'var __require_ = require;' + 'var r = function(file){' + 'var result = null;' + @@ -368,10 +367,10 @@ '};' + 'require = r;' + 'return eval(__code_rr);'); - var needsByteOrSize = re.byteOrSize.test(conf.replacement); + var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!conf.pipeData) { - _file = path.normalize(path.join(_cwd, path)); + if (!_config_rr.dataIsPiped) { + _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); var pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -380,7 +379,7 @@ _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(conf.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { var fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -396,9 +395,9 @@ _bytes = Buffer.from(_text).length; _size = readableSize(_bytes); } - var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !conf.voidIgnoreCase, dot: true }, b)); }; + var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true }, b)); }; // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(conf.replacement)) { + if (!/\$\d/.test(_config_rr.replacement)) { return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); } // Capture groups used, so need to run once per match diff --git a/src/engine.ts b/src/engine.ts index 39b97845..956c16f3 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -3,6 +3,7 @@ const fs = require('fs-extra'); const path = require('path'); const fGlob = require('fast-glob'); +const globs = require('globs'); const now = new Date(); @@ -22,8 +23,6 @@ const re = { export const version = 'PACKAGE_VERSION'; export function engine(conf: any = {engine: 'V8'}) { - conf = handlepipeData(conf); - outputConfig(conf); step('Displaying steps for:'); @@ -39,8 +38,8 @@ export function engine(conf: any = {engine: 'V8'}) { step(conf); - if (null !== conf.pipeData) { - return doReplacement('Piped data', conf, conf.pipeData); + if (handlepipeData(conf)) { + return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); @@ -169,31 +168,44 @@ function doReplacement(filePath: string, conf: any, content: string) { } function handlepipeData(conf) { - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) - die('You flagged that replacement will be piped in - but no data arrived.'); - - conf.replacement = conf.pipeData; - conf.pipeData = null; - } else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) - die('Please pipe filenames/globs in OR provide as parameters. Not both.'); - - if (null === conf.pipeData) - die('You flagged that filenames/globs will be piped in - but no data arrived.'); - - conf.globs = conf.pipeData; - conf.pipeData = null; - } else if (null !== conf.pipeData) { + /* + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) + { die('You flagged that replacement will be piped in - but no data arrived.'); } + conf.replacement = conf.pipeData; + conf.pipeData = null; + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) + { die('Please pipe filenames/globs in OR provide as parameters. Not both.'); } + if (null === conf.pipeData) + { die('You flagged that filenames/globs will be piped in - but no data arrived.'); } + conf.globs = conf.pipeData; + conf.pipeData = null; + } + else if (null !== conf.pipeData) { + + */ + + if (conf.includeGlob.length) { + if (!conf.replacementJs && conf.pipeData) { + chat('Piped data never used.'); + } + + return false; + } + + if (null !== conf.pipeData && !conf.pipeDataUsed) { + conf.dataIsPiped = true; conf.output = true; + return true; } - return conf; + + return false; } function getPattern(pattern, conf: any) { @@ -221,6 +233,15 @@ function getReplacement(replacement, conf: any) { replacement = replacePlaceholders(replacement, conf); + if (conf.replacementPipe) { + step('Piping replacement'); + conf.pipeDataUsed = true; + if (null === conf.pipeData) { + return die('No data piped into replacement'); + } + replacement = conf.pipeData; + } + if (conf.outputMatch) { step('Output match'); @@ -344,13 +365,13 @@ function readableSize(size) { ); } -function dynamicReplacement(path, conf, content) { +function dynamicReplacement(_file_rr, _config_rr, _data_rr) { const _time_obj = now; const _time = localTimeString(_time_obj); - const _pipe = conf.pipeData, - _text = content, - _find = conf.pattern, - code_rr = conf.replacementOri, + const _pipe = _config_rr.pipeData, + _text = _data_rr, + _find = _config_rr.pattern, + code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', @@ -374,7 +395,7 @@ function dynamicReplacement(path, conf, content) { dynamicContent = new Function( 'require', 'fs', - 'glob', + 'globs', 'path', 'pipe', @@ -441,11 +462,11 @@ function dynamicReplacement(path, conf, content) { 'return eval(__code_rr);' ); - const needsByteOrSize = re.byteOrSize.test(conf.replacement); + const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!conf.pipeData) { - _file = path.normalize(path.join(_cwd, path)); + if (!_config_rr.dataIsPiped) { + _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; @@ -455,7 +476,7 @@ function dynamicReplacement(path, conf, content) { _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(conf.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { const fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -477,13 +498,13 @@ function dynamicReplacement(path, conf, content) { const glob = (a, b) => fGlob.sync(a, { unique: true, - caseSensitiveMatch: !conf.voidIgnoreCase, + caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true, ...b, }); // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(conf.replacement)) { + if (!/\$\d/.test(_config_rr.replacement)) { return dynamicContent( require, fs, diff --git a/test/cli/run.sh b/test/cli/run.sh index 8ed00476..d61130df 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -68,9 +68,6 @@ assert_success "rexreplace -help" reset assert "rexreplace x x my.file --output" "foobar" -assert_end "rexreplace" -exit - reset assert "rexreplace o x my.file --output" "fxxbar" From 9c15cc5ebf463650b31567f644ebdf016191bcbe Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Sun, 10 Sep 2023 20:23:46 +1000 Subject: [PATCH 03/17] WIP - info to stdir unless outputting data --- README.md | 35 ++++++++++++++++++++++- bin/ES6/engine.js | 36 +++++++++++++++++------- bin/rexreplace.cli.js | 35 ++++++++++++++++------- bin/rexreplace.cli.min.js | 36 +++++++++++++++++------- src/engine.ts | 59 +++++++++++++++++---------------------- 5 files changed, 136 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 92ce06ec..cf6218ac 100644 --- a/README.md +++ b/README.md @@ -275,7 +275,7 @@ All CLI end to end tests are defined in [test/cli/run.sh](https://github.com/mat > npm test ``` -### Speed +## Performance _**tl;dr**:_ _Files over 5 Mb are faster with `rr` than with `sed` - but - it does not matter as any file under 25 Mb has less than 0.7 seconds in difference._ @@ -312,6 +312,38 @@ So even though the speed evolves very differently, there is only little practica Please note that speeds might look very different when files get as large as the memory available. +Sure, I can help sharpen up the text for better clarity and impact. While I don't have specific knowledge about the rexreplace project, I understand the general idea conveyed in the text. Here's a revised version: + +--- + +### Tips and Tricks for Performance + +It is much more time expensive to read lots of files, than to have a long search regex. + +> **Illustrative Anecdote Time** +> +> Say you've got a bunch of files you want to duplicate, but you also have a list of keys that need to be unique across all the duplicated files. One way to do this is to add `_v2` to each key in the duplicate files. +> +> Using rexreplace for each individual key would be the "default" approach. In a real-world example with 5,000 keys and 10,000 files, this method took 57 minutes. The slow part is that each of the 10,000 files is opened and read 5,000 times plus opening node 5000 times. +> +> Doing the same task, but with all the keys bundled into a single long search regex using a `(key1|key2|key3|...)` format it only took 2.14 seconds! Even though this creates an nasty 300Kb search regex string, it’s way faster. +> +> ``` +> > rexreplace key1 key1_v2 src/v2/**/*.* +> > rexreplace key2 key2_v2 src/v2/**/*.* +> > rexreplace key3 key3_v2 src/v2/**/*.* +> ... +> > rexreplace key5000 key5000_v2 src/v2/**/*.* +> => 57 minutes +> +> > rexreplace '(key1|key2|key3|...|key5000)' €1_v2 src/v2/**/*.* +> => 2.14 seconds +> ``` +> Moral: Choose the right approach might save you time... + + + + ## Rumours ### Inspiration @@ -328,6 +360,7 @@ _.oO(What should "sed" have looked like by now?)_ - Let search and replace be within the names of the files (ask for overwriting. -Y = no questions) - Let search and replace be within the path of the files (ask for overwriting. -Y = no questions) - Let pattern and globs be piped +- Let pipe be placed into search or replace. - Let Pattern, replacement, and globs come from a file - Let pattern and glob be javascript code returning a string as the result - Auto string search / replace if no regex magic is used (and verify that speed is better) diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index 2c9c472b..9f43f20c 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -16,6 +16,7 @@ const re = { }; export const version = 'PACKAGE_VERSION'; export function engine(conf = { engine: 'V8' }) { + conf = handlePipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -24,7 +25,7 @@ export function engine(conf = { engine: 'V8' }) { conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (handlepipeData(conf)) { + if (conf.contentWasPiped) { return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); @@ -133,20 +134,35 @@ function doReplacement(filePath, conf, content) { }); }); } -function handlepipeData(conf) { +function handlePipeData(conf) { + outputConfig(conf); step('Check Piped Data'); - if (conf.includeGlob.length) { - if (!conf.replacementJs && conf.pipeData) { - chat('Piped data never used.'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + die('You flagged that replacement will be piped in - but no data arrived.'); + } + conf.replacement = conf.pipeData; + if (!conf.replacementJs) + conf.pipeData = null; + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + die('You flagged that filenames/globs will be piped in - but no data arrived.'); } - return false; + conf.globs = conf.pipeData; + if (!conf.replacementJs) + conf.pipeData = null; } - if (null !== conf.pipeData && !conf.pipeDataUsed) { - conf.dataIsPiped = true; + else if (null !== conf.pipeData) { + conf.contentWasPiped = true; conf.output = true; - return true; } - return false; + return conf; } function getPattern(pattern, conf) { step('Get final pattern'); diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 9fa33bb9..960d1e23 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -89,6 +89,7 @@ function engine(conf) { if ( conf === void 0 ) conf = { engine: 'V8' }; + conf = handlePipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -97,7 +98,7 @@ conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (handlepipeData(conf)) { + if (conf.contentWasPiped) { return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); @@ -206,21 +207,35 @@ }); }); } - function handlepipeData(conf) { + function handlePipeData(conf) { outputConfig(conf); step('Check Piped Data'); - if (conf.includeGlob.length) { - if (!conf.replacementJs && conf.pipeData) { - chat('Piped data never used.'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + die('You flagged that replacement will be piped in - but no data arrived.'); + } + conf.replacement = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + die('Please pipe file/globs OR provide as parameters. Not both.'); } - return false; + if (null === conf.pipeData) { + die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } } - if (null !== conf.pipeData && !conf.pipeDataUsed) { - conf.dataIsPiped = true; + else if (null !== conf.pipeData) { + conf.contentWasPiped = true; conf.output = true; - return true; } - return false; + return conf; } function getPattern(pattern, conf) { step('Get final pattern'); diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 6e388d9d..960d1e23 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -89,6 +89,7 @@ function engine(conf) { if ( conf === void 0 ) conf = { engine: 'V8' }; + conf = handlePipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -97,7 +98,7 @@ conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (handlepipeData(conf)) { + if (conf.contentWasPiped) { return doReplacement('[pipe-data]', conf, conf.pipeData); } conf.files = getFilePaths(conf); @@ -206,20 +207,35 @@ }); }); } - function handlepipeData(conf) { + function handlePipeData(conf) { + outputConfig(conf); step('Check Piped Data'); - if (conf.includeGlob.length) { - if (!conf.replacementJs && conf.pipeData) { - chat('Piped data never used.'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + die('You flagged that replacement will be piped in - but no data arrived.'); } - return false; + conf.replacement = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } } - if (null !== conf.pipeData && !conf.pipeDataUsed) { - conf.dataIsPiped = true; + else if (null !== conf.pipeData) { + conf.contentWasPiped = true; conf.output = true; - return true; } - return false; + return conf; } function getPattern(pattern, conf) { step('Get final pattern'); diff --git a/src/engine.ts b/src/engine.ts index 956c16f3..78cd1543 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -23,6 +23,8 @@ const re = { export const version = 'PACKAGE_VERSION'; export function engine(conf: any = {engine: 'V8'}) { + conf = handlePipeData(conf); + outputConfig(conf); step('Displaying steps for:'); @@ -38,7 +40,7 @@ export function engine(conf: any = {engine: 'V8'}) { step(conf); - if (handlepipeData(conf)) { + if (conf.contentWasPiped) { return doReplacement('[pipe-data]', conf, conf.pipeData); } @@ -167,45 +169,34 @@ function doReplacement(filePath: string, conf: any, content: string) { }); } -function handlepipeData(conf) { +function handlePipeData(conf) { + outputConfig(conf); + step('Check Piped Data'); - /* - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) - { die('You flagged that replacement will be piped in - but no data arrived.'); } - conf.replacement = conf.pipeData; - conf.pipeData = null; - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) - { die('Please pipe filenames/globs in OR provide as parameters. Not both.'); } - if (null === conf.pipeData) - { die('You flagged that filenames/globs will be piped in - but no data arrived.'); } - conf.globs = conf.pipeData; - conf.pipeData = null; - } - else if (null !== conf.pipeData) { - - */ - - if (conf.includeGlob.length) { - if (!conf.replacementJs && conf.pipeData) { - chat('Piped data never used.'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + die('You flagged that replacement will be piped in - but no data arrived.'); } - - return false; - } - - if (null !== conf.pipeData && !conf.pipeDataUsed) { - conf.dataIsPiped = true; + conf.replacement = conf.pipeData; + if (!conf.replacementJs) conf.pipeData = null; + } else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + if (!conf.replacementJs) conf.pipeData = null; + } else if (null !== conf.pipeData) { + conf.contentWasPiped = true; conf.output = true; - return true; } - return false; + return conf; } function getPattern(pattern, conf: any) { From 30391a49c60b62f5d31ae2b8add01bbf5ce3cc62 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Tue, 12 Sep 2023 23:46:39 +1000 Subject: [PATCH 04/17] halt --- bin/ES6/cli.js | 396 ++++---- bin/ES6/engine.js | 52 +- bin/ES6/output.js | 42 +- bin/rexreplace.cli.js | 520 +++++----- bin/rexreplace.cli.min.js | 520 +++++----- slet.tmp | 1 + src/cli.ts | 544 ++++++----- src/engine.ts | 59 +- src/output.ts | 46 +- stderr.txt | 4 + stdout.txt | 1 + test/cli/run.sh | 33 +- yarn.lock | 1898 ++++++++++++++++++------------------- 13 files changed, 2072 insertions(+), 2044 deletions(-) create mode 100644 slet.tmp create mode 100644 stderr.txt create mode 100644 stdout.txt diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js index fe6c32f3..fc761e90 100644 --- a/bin/ES6/cli.js +++ b/bin/ES6/cli.js @@ -1,139 +1,144 @@ #!/usr/bin/env node // CLI interface for rexreplace +const yargs = require('yargs/yargs'); import * as rexreplace from './engine'; -let pattern, replacement; -// To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help -let needHelp = 0; -if (process.argv.length < 4) { - if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { - console.log(rexreplace.version); - process.exitCode = 0; - process.exit(); - } - else if (/-h|--?help$/i.test(process.argv[process.argv.length - 1])) { - needHelp = 1; +import { outputConfig, step, die } from './output'; +executeReplacement(cli2conf(process.argv.slice(2))); +export function cli2conf(args) { + let pattern, replacement; + // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help + let needHelp = 0; + if (args.length < 2) { + if (/-v|--?version$/i.test(args.slice(-1)[0])) { + console.log(rexreplace.version); + process.exitCode = 0; + process.exit(); + } + else if (/-h|--?help$/i.test(args.slice(-1)[0])) { + needHelp = 1; + } + else { + needHelp = 2; + } } else { - needHelp = 2; + [pattern, replacement] = args.splice(0, 2); } -} -else { - [pattern, replacement] = process.argv.splice(2, 2); -} -const yargs = require('yargs') - .strict() - .usage('RexReplace v' + - rexreplace.version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) - .example('') - .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) - .example('') - .example(`> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`) - .example('') - .example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`) - .example('') - .example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`) - .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe('A', `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `) - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') - .boolean('m') - .describe('m', `Output each match on a new line. ` + - `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + - `If search pattern does not contain matching groups the full match will be outputted. ` + - `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + - ``) - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe('T', `Trim piped data before processing. ` + - `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + - '') - .boolean('R') - .alias('R', 'replacement-pipe') - .describe('R', `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`) - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') + const argv = yargs(args.slice(2)) + .strict() + .usage('RexReplace v' + + rexreplace.version + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '> rexreplace pattern replacement [fileGlob|option]+') + .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) + .example('') + .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + .example('') + .example(`> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`) + .example('') + .example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`) + .example('') + .example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`) + .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) + .alias('v', 'version') + .boolean('I') + .describe('I', 'Void case insensitive search pattern.') + .alias('I', 'void-ignore-case') + .boolean('G') + .describe('G', 'Void global search (stop looking after the first match).') + .alias('G', 'void-global') + .boolean('M') + .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') + .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') + .boolean('u') + .describe('u', 'Treat pattern as a sequence of unicode code points.') + .alias('u', 'unicode') + .default('e', 'utf8') + .alias('e', 'encoding') + .describe('e', 'Encoding of files/piped data.') + .alias('E', 'engine') + .describe('E', 'What regex engine to use:') + .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) + .default('E', 'V8') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') + .boolean('€') + .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") + .alias('€', 'void-euro') + .boolean('§') + .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") + .alias('§', 'void-section') + .boolean('A') + .alias('A', 'void-async') + .describe('A', `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `) + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .alias('H', 'bail') + .default('H', false) + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') + .boolean('B') + .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep the backup file with the original content.') + .alias('b', 'keep-backup') + .boolean('o') + .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') + .alias('o', 'output') + //.conflicts('o','O') + .boolean('m') + .describe('m', `Output each match on a new line. ` + + `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + + `If search pattern does not contain matching groups the full match will be outputted. ` + + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + + ``) + .alias('m', 'output-match') + .boolean('T') + .alias('T', 'trim-pipe') + .describe('T', `Trim piped data before processing. ` + + `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + + '') + .boolean('R') + .alias('R', 'replacement-pipe') + .describe('R', `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`) + .conflicts('R', 'g') + .conflicts('R', 'G') + .boolean('g') + .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + /* .boolean('G') .describe('G', "filename/globs provided are to files containing one target filename/glob per line") .alias('G', 'glob-file') .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - /* + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') + .string('x') + .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') + .alias('x', 'exclude-re') + .string('X') + .describe('X', 'Exclude files found with this glob. Can be used multiple times.') + .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') + /* -T (Expect no match in any file and return exit 1 if found) @@ -187,9 +192,9 @@ const yargs = require('yargs') */ - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', `Treat replacement as javascript source code. + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', `Treat replacement as javascript source code. The statement from the last expression will become the replacement string. Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. @@ -228,68 +233,101 @@ const yargs = require('yargs') All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). `) - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`); -function backOut(exitcode = 1) { - const help = yargs.showHelp(); - const io = exitcode ? console.error : console.log; - process.exitCode = exitcode; - process.exit(); -} -function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -} -(function () { - if (0 < needHelp) { - return backOut(needHelp - 1); - } + .help('h') + .describe('h', 'Display help.') + .alias('h', 'help') + .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).argv; // All options into one big config object for the rexreplace engine let conf = {}; // Use only camelCase full lenght version of settings - Object.keys(yargs.argv).forEach((key) => { + Object.keys(argv).forEach((key) => { if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = yargs.argv[key]; + conf[key] = argv[key]; } }); conf.pipeData = null; - conf.showHelp = yargs.showHelp; + conf.showHelp = argv.showHelp; + conf.needHelp = needHelp; conf.pattern = pattern; - conf.includeGlob = yargs.argv._; - conf.excludeGlob = [...yargs.argv.excludeGlob].filter(Boolean); - conf.excludeRe = [...yargs.argv.excludeRe].filter(Boolean); - if (conf.replacementJs) { - conf.replacement = replacement; + conf.includeGlob = argv._; + conf.excludeGlob = [...argv.excludeGlob].filter(Boolean); + conf.excludeRe = [...argv.excludeRe].filter(Boolean); + conf.replacement = replacement; + if (!conf.replacementJs) { + conf.replacement = unescapeString(conf.replacement); } - else { - conf.replacement = unescapeString(replacement); + return conf; +} +export function executeReplacement(conf) { + if (0 < conf.needHelp) { + return backOut(conf.needHelp - 1, conf.showHelp); } + if (conf.output) + process.stdout.setDefaultEncoding(conf.encoding); + if (Boolean(process.stdin.isTTY)) + return rexreplace.engine(conf); + process.stdin.setEncoding(conf.encoding); let pipeInUse = false; let pipeData = ''; - if (Boolean(process.stdin.isTTY)) { - rexreplace.engine(conf); - } - else { - process.stdin.setEncoding(conf.encoding); - process.stdin.on('readable', () => { - let chunk = process.stdin.read(); - if (null !== chunk) { - pipeInUse = true; + process.stdin.on('readable', () => { + let chunk = process.stdin.read(); + if (null !== chunk) { + pipeInUse = true; + pipeData += chunk; + while ((chunk = process.stdin.read())) { pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } } - }); - process.stdin.on('end', () => { - if (pipeInUse) { - if (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - conf.pipeData = pipeData; + } + }); + process.stdin.on('end', () => { + if (pipeInUse) { + if (conf.trimPipe) { + pipeData = pipeData.trim(); } - rexreplace.engine(conf); - }); + conf.pipeData = pipeData; + } + rexreplace.engine(handlePipeData(conf)); + }); +} +function backOut(exitcode = 1, cb) { + cb && cb(); + const io = exitcode ? console.error : console.log; + process.exitCode = exitcode; + process.exit(); +} +function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); +} +function handlePipeData(conf) { + process.stdin.setDefaultEncoding(conf.encoding); + outputConfig(conf); + step('Check Piped Data'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + return die('You flagged that replacement will be piped in - but no data arrived.'); + } + conf.replacement = conf.pipeData; + if (!conf.replacementJs) + conf.pipeData = null; } -})(); + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + return die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + return die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + if (!conf.replacementJs) + conf.pipeData = null; + } + else if (null !== conf.pipeData && !conf.includeGlob.length) { + step('Content being piped'); + conf.contentWasPiped = true; + conf.output = true; + process.stdout.setDefaultEncoding(conf.encoding); + } + return conf; +} diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index 9f43f20c..c32f3f48 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -16,7 +16,6 @@ const re = { }; export const version = 'PACKAGE_VERSION'; export function engine(conf = { engine: 'V8' }) { - conf = handlePipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -25,18 +24,16 @@ export function engine(conf = { engine: 'V8' }) { conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } conf.files = getFilePaths(conf); if (!conf.files.length) { + if (conf.contentWasPiped) { + return doReplacement('[pipe-data]', conf, conf.pipeData); + } return error(conf.files.length + ' files found'); } chat(conf.files.length + ' files found'); step(conf); conf.files - // Correct filepath - //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid .filter((filepath) => (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath))) // Do the replacement @@ -134,36 +131,6 @@ function doReplacement(filePath, conf, content) { }); }); } -function handlePipeData(conf) { - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) - conf.pipeData = null; - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - die('You flagged that filenames/globs will be piped in - but no data arrived.'); - } - conf.globs = conf.pipeData; - if (!conf.replacementJs) - conf.pipeData = null; - } - else if (null !== conf.pipeData) { - conf.contentWasPiped = true; - conf.output = true; - } - return conf; -} function getPattern(pattern, conf) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); @@ -183,14 +150,6 @@ function getReplacement(replacement, conf) { return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipeDataUsed = true; - if (null === conf.pipeData) { - return die('No data piped into replacement'); - } - replacement = conf.pipeData; - } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -211,7 +170,6 @@ function getReplacement(replacement, conf) { }; } // If captured groups then run dynamicly - //console.log(process); if (conf.replacementJs && re.capturedGroupRef.test(conf.replacement) && parseInt(process.versions.node) < 6) { @@ -310,7 +268,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 'return eval(__code_rr);'); const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { + if (!_config_rr.contentWasPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); const pathInfo = path.parse(_file); @@ -328,8 +286,6 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _ctime_obj = fileStats.ctime; _mtime = localTimeString(_mtime_obj); _ctime = localTimeString(_ctime_obj); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); } } if (needsByteOrSize && -1 === _bytes) { diff --git a/bin/ES6/output.js b/bin/ES6/output.js index be6ce57d..05a994ac 100644 --- a/bin/ES6/output.js +++ b/bin/ES6/output.js @@ -2,53 +2,53 @@ let font = {}; font.red = font.green = font.gray = (str) => str; // check for node version supporting chalk - if so overwrite `font` //const font = import('chalk'); -let config = null; -export const outputConfig = function (_config) { - config = _config; +let conf = null; +export const outputConfig = function (_conf) { + conf = _conf; }; export const info = function (msg, data = '') { - if (config.quiet || config.quietTotal) { + if (conf.quiet || conf.quietTotal) { return; } - if (config.output || config.outputMatch) + if (conf.output || conf.outputMatch) return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); console.log.apply(this, [msg, data].filter(Boolean)); }; export const chat = function (msg, data = '') { - if (config.verbose) { + if (conf.verbose) { info(msg, data); } else { - debug(msg + ' ' + data); + debug([msg, data].filter(Boolean).join(' ')); } }; -export const die = function (msg = '', data = '', displayHelp = false) { - if (displayHelp && !config.quietTotal) { - config.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); -}; export const error = function (msg, data = '') { - if (!config.quiet && !config.quietTotal) { + if (!conf.quiet && !conf.quietTotal) { console.error.apply(this, [font.red(msg), data].filter(Boolean)); } - if (config.halt) { - kill(msg); + if (conf.bail) { + kill(); } return false; }; +export const die = function (msg = '', data = '', displayHelp = false) { + if (displayHelp && !conf.quietTotal) { + conf.showHelp(); + } + msg && error(' ❌ ' + msg, data); + kill(); +}; export function debug(data) { - if (config.debug) { + if (conf.debug) { console.error(font.gray(JSON.stringify(data, null, 4))); } } export function step(data) { - if (config.verbose) { - debug(data); + if (conf.verbose) { + console.error(font.gray(data)); } } function kill(error = 1, msg = '') { msg && console.error(+msg); - process.exit(error); + process.exit(+error); } diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 960d1e23..d15dee8e 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -1,65 +1,65 @@ #!/usr/bin/env node -(function () { +var rexreplace = (function (exports) { 'use strict'; var font = {}; font.red = font.green = font.gray = function (str) { return str; }; // check for node version supporting chalk - if so overwrite `font` //const font = import('chalk'); - var config = null; - var outputConfig = function (_config) { - config = _config; + var conf = null; + var outputConfig = function (_conf) { + conf = _conf; }; var info = function (msg, data) { if ( data === void 0 ) data = ''; - if (config.quiet || config.quietTotal) { + if (conf.quiet || conf.quietTotal) { return; } - if (config.output || config.outputMatch) + if (conf.output || conf.outputMatch) { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } console.log.apply(this, [msg, data].filter(Boolean)); }; var chat = function (msg, data) { if ( data === void 0 ) data = ''; - if (config.verbose) { + if (conf.verbose) { info(msg, data); } else { - debug(msg + ' ' + data); + debug([msg, data].filter(Boolean).join(' ')); } }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!conf.quiet && !conf.quietTotal) { + console.error.apply(this, [font.red(msg), data].filter(Boolean)); + } + if (conf.bail) { + kill(); + } + return false; + }; var die = function (msg, data, displayHelp) { if ( msg === void 0 ) msg = ''; if ( data === void 0 ) data = ''; if ( displayHelp === void 0 ) displayHelp = false; - if (displayHelp && !config.quietTotal) { - config.showHelp(); + if (displayHelp && !conf.quietTotal) { + conf.showHelp(); } msg && error(' ❌ ' + msg, data); kill(); }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (!config.quiet && !config.quietTotal) { - console.error.apply(this, [font.red(msg), data].filter(Boolean)); - } - if (config.halt) { - kill(msg); - } - return false; - }; function debug(data) { - if (config.debug) { + if (conf.debug) { console.error(font.gray(JSON.stringify(data, null, 4))); } } function step(data) { - if (config.verbose) { - debug(data); + if (conf.verbose) { + console.error(font.gray(data)); } } function kill(error, msg) { @@ -67,7 +67,7 @@ if ( msg === void 0 ) msg = ''; msg && console.error(+msg); - process.exit(error); + process.exit(+error); } var fs = require('fs-extra'); @@ -89,7 +89,6 @@ function engine(conf) { if ( conf === void 0 ) conf = { engine: 'V8' }; - conf = handlePipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -98,18 +97,16 @@ conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } conf.files = getFilePaths(conf); if (!conf.files.length) { + if (conf.contentWasPiped) { + return doReplacement('[pipe-data]', conf, conf.pipeData); + } return error(conf.files.length + ' files found'); } chat(conf.files.length + ' files found'); step(conf); conf.files - // Correct filepath - //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid .filter(function (filepath) { return (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath)); }) // Do the replacement @@ -207,36 +204,6 @@ }); }); } - function handlePipeData(conf) { - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - die('You flagged that filenames/globs will be piped in - but no data arrived.'); - } - conf.globs = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } - } - else if (null !== conf.pipeData) { - conf.contentWasPiped = true; - conf.output = true; - } - return conf; - } function getPattern(pattern, conf) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); @@ -256,14 +223,6 @@ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipeDataUsed = true; - if (null === conf.pipeData) { - return die('No data piped into replacement'); - } - replacement = conf.pipeData; - } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -286,7 +245,6 @@ }; } // If captured groups then run dynamicly - //console.log(process); if (conf.replacementJs && re.capturedGroupRef.test(conf.replacement) && parseInt(process.versions.node) < 6) { @@ -385,7 +343,7 @@ 'return eval(__code_rr);'); var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { + if (!_config_rr.contentWasPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); var pathInfo = path.parse(_file); @@ -403,8 +361,6 @@ _ctime_obj = fileStats.ctime; _mtime = localTimeString(_mtime_obj); _ctime = localTimeString(_ctime_obj); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); } } if (needsByteOrSize && -1 === _bytes) { @@ -467,140 +423,146 @@ return filesToInclude; } - var assign; - var pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help - var needHelp = 0; - if (process.argv.length < 4) { - if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { - console.log(version); - process.exitCode = 0; - process.exit(); - } - else if (/-h|--?help$/i.test(process.argv[process.argv.length - 1])) { - needHelp = 1; + // CLI interface for rexreplace + var yargs = require('yargs/yargs'); + executeReplacement(cli2conf(process.argv.slice(2))); + function cli2conf(args) { + var assign; + + var pattern, replacement; + // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help + var needHelp = 0; + if (args.length < 2) { + if (/-v|--?version$/i.test(args.slice(-1)[0])) { + console.log(version); + process.exitCode = 0; + process.exit(); + } + else if (/-h|--?help$/i.test(args.slice(-1)[0])) { + needHelp = 1; + } + else { + needHelp = 2; + } } else { - needHelp = 2; - } - } - else { - (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); - } - var yargs = require('yargs') - .strict() - .usage('RexReplace v' + - version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") - .example('') - .example("> rr xxx Foo myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") - .example('') - .example("> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md", "'foobar' in myfile.md will become 'barfoo'") - .example('') - .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") - .example('') - .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") - .version('v', 'Print rexreplace version (can be given as only argument)', version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' ]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') - .boolean('m') - .describe('m', "Output each match on a new line. " + - "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + - "If search pattern does not contain matching groups the full match will be outputted. " + - "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + - "") - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe('T', "Trim piped data before processing. " + - "If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. " + - '') - .boolean('R') - .alias('R', 'replacement-pipe') - .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') + (assign = args.splice(0, 2), pattern = assign[0], replacement = assign[1]); + } + var argv = yargs(args.slice(2)) + .strict() + .usage('RexReplace v' + + version + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '> rexreplace pattern replacement [fileGlob|option]+') + .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") + .example('') + .example("> rr xxx Foo myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") + .example('') + .example("> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md", "'foobar' in myfile.md will become 'barfoo'") + .example('') + .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") + .example('') + .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") + .version('v', 'Print rexreplace version (can be given as only argument)', version) + .alias('v', 'version') + .boolean('I') + .describe('I', 'Void case insensitive search pattern.') + .alias('I', 'void-ignore-case') + .boolean('G') + .describe('G', 'Void global search (stop looking after the first match).') + .alias('G', 'void-global') + .boolean('M') + .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') + .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') + .boolean('u') + .describe('u', 'Treat pattern as a sequence of unicode code points.') + .alias('u', 'unicode') + .default('e', 'utf8') + .alias('e', 'encoding') + .describe('e', 'Encoding of files/piped data.') + .alias('E', 'engine') + .describe('E', 'What regex engine to use:') + .choices('E', ['V8' ]) + .default('E', 'V8') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') + .boolean('€') + .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") + .alias('€', 'void-euro') + .boolean('§') + .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") + .alias('§', 'void-section') + .boolean('A') + .alias('A', 'void-async') + .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .alias('H', 'bail') + .default('H', false) + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') + .boolean('B') + .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep the backup file with the original content.') + .alias('b', 'keep-backup') + .boolean('o') + .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') + .alias('o', 'output') + //.conflicts('o','O') + .boolean('m') + .describe('m', "Output each match on a new line. " + + "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + + "If search pattern does not contain matching groups the full match will be outputted. " + + "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + + "") + .alias('m', 'output-match') + .boolean('T') + .alias('T', 'trim-pipe') + .describe('T', "Trim piped data before processing. " + + "If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. " + + '') + .boolean('R') + .alias('R', 'replacement-pipe') + .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") + .conflicts('R', 'g') + .conflicts('R', 'G') + .boolean('g') + .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + /* .boolean('G') .describe('G', "filename/globs provided are to files containing one target filename/glob per line") .alias('G', 'glob-file') .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - /* + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') + .string('x') + .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') + .alias('x', 'exclude-re') + .string('X') + .describe('X', 'Exclude files found with this glob. Can be used multiple times.') + .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') + /* -T (Expect no match in any file and return exit 1 if found) @@ -654,76 +616,116 @@ */ - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - .epilog("Inspiration: .oO(What should 'sed' have been by now?)"); - function backOut(exitcode) { - if ( exitcode === void 0 ) exitcode = 1; - - yargs.showHelp(); - process.exitCode = exitcode; - process.exit(); - } - function unescapeString(str) { - if ( str === void 0 ) str = ''; - - return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); - } - (function () { - if (0 < needHelp) { - return backOut(needHelp - 1); - } + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") + .help('h') + .describe('h', 'Display help.') + .alias('h', 'help') + .epilog("Inspiration: .oO(What should 'sed' have been by now?)").argv; // All options into one big config object for the rexreplace engine var conf = {}; // Use only camelCase full lenght version of settings - Object.keys(yargs.argv).forEach(function (key) { + Object.keys(argv).forEach(function (key) { if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = yargs.argv[key]; + conf[key] = argv[key]; } }); conf.pipeData = null; - conf.showHelp = yargs.showHelp; + conf.showHelp = argv.showHelp; + conf.needHelp = needHelp; conf.pattern = pattern; - conf.includeGlob = yargs.argv._; - conf.excludeGlob = [].concat( yargs.argv.excludeGlob ).filter(Boolean); - conf.excludeRe = [].concat( yargs.argv.excludeRe ).filter(Boolean); - if (conf.replacementJs) { - conf.replacement = replacement; - } - else { - conf.replacement = unescapeString(replacement); + conf.includeGlob = argv._; + conf.excludeGlob = [].concat( argv.excludeGlob ).filter(Boolean); + conf.excludeRe = [].concat( argv.excludeRe ).filter(Boolean); + conf.replacement = replacement; + if (!conf.replacementJs) { + conf.replacement = unescapeString(conf.replacement); } + return conf; + } + function executeReplacement(conf) { + if (0 < conf.needHelp) { + return backOut(conf.needHelp - 1, conf.showHelp); + } + if (conf.output) + { process.stdout.setDefaultEncoding(conf.encoding); } + if (Boolean(process.stdin.isTTY)) + { return engine(conf); } + process.stdin.setEncoding(conf.encoding); var pipeInUse = false; var pipeData = ''; - if (Boolean(process.stdin.isTTY)) { - engine(conf); - } - else { - process.stdin.setEncoding(conf.encoding); - process.stdin.on('readable', function () { - var chunk = process.stdin.read(); - if (null !== chunk) { - pipeInUse = true; + process.stdin.on('readable', function () { + var chunk = process.stdin.read(); + if (null !== chunk) { + pipeInUse = true; + pipeData += chunk; + while ((chunk = process.stdin.read())) { pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } } - }); - process.stdin.on('end', function () { - if (pipeInUse) { - if (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - conf.pipeData = pipeData; + } + }); + process.stdin.on('end', function () { + if (pipeInUse) { + if (conf.trimPipe) { + pipeData = pipeData.trim(); } - engine(conf); - }); + conf.pipeData = pipeData; + } + engine(handlePipeData(conf)); + }); + } + function backOut(exitcode, cb) { + if ( exitcode === void 0 ) exitcode = 1; + + cb && cb(); + process.exitCode = exitcode; + process.exit(); + } + function unescapeString(str) { + if ( str === void 0 ) str = ''; + + return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); + } + function handlePipeData(conf) { + process.stdin.setDefaultEncoding(conf.encoding); + outputConfig(conf); + step('Check Piped Data'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + return die('You flagged that replacement will be piped in - but no data arrived.'); + } + conf.replacement = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + return die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + return die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } } - })(); + else if (null !== conf.pipeData && !conf.includeGlob.length) { + step('Content being piped'); + conf.contentWasPiped = true; + conf.output = true; + process.stdout.setDefaultEncoding(conf.encoding); + } + return conf; + } + + exports.cli2conf = cli2conf; + exports.executeReplacement = executeReplacement; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; -})(); +})({}); diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 960d1e23..d15dee8e 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,65 +1,65 @@ #!/usr/bin/env node -(function () { +var rexreplace = (function (exports) { 'use strict'; var font = {}; font.red = font.green = font.gray = function (str) { return str; }; // check for node version supporting chalk - if so overwrite `font` //const font = import('chalk'); - var config = null; - var outputConfig = function (_config) { - config = _config; + var conf = null; + var outputConfig = function (_conf) { + conf = _conf; }; var info = function (msg, data) { if ( data === void 0 ) data = ''; - if (config.quiet || config.quietTotal) { + if (conf.quiet || conf.quietTotal) { return; } - if (config.output || config.outputMatch) + if (conf.output || conf.outputMatch) { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } console.log.apply(this, [msg, data].filter(Boolean)); }; var chat = function (msg, data) { if ( data === void 0 ) data = ''; - if (config.verbose) { + if (conf.verbose) { info(msg, data); } else { - debug(msg + ' ' + data); + debug([msg, data].filter(Boolean).join(' ')); } }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!conf.quiet && !conf.quietTotal) { + console.error.apply(this, [font.red(msg), data].filter(Boolean)); + } + if (conf.bail) { + kill(); + } + return false; + }; var die = function (msg, data, displayHelp) { if ( msg === void 0 ) msg = ''; if ( data === void 0 ) data = ''; if ( displayHelp === void 0 ) displayHelp = false; - if (displayHelp && !config.quietTotal) { - config.showHelp(); + if (displayHelp && !conf.quietTotal) { + conf.showHelp(); } msg && error(' ❌ ' + msg, data); kill(); }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (!config.quiet && !config.quietTotal) { - console.error.apply(this, [font.red(msg), data].filter(Boolean)); - } - if (config.halt) { - kill(msg); - } - return false; - }; function debug(data) { - if (config.debug) { + if (conf.debug) { console.error(font.gray(JSON.stringify(data, null, 4))); } } function step(data) { - if (config.verbose) { - debug(data); + if (conf.verbose) { + console.error(font.gray(data)); } } function kill(error, msg) { @@ -67,7 +67,7 @@ if ( msg === void 0 ) msg = ''; msg && console.error(+msg); - process.exit(error); + process.exit(+error); } var fs = require('fs-extra'); @@ -89,7 +89,6 @@ function engine(conf) { if ( conf === void 0 ) conf = { engine: 'V8' }; - conf = handlePipeData(conf); outputConfig(conf); step('Displaying steps for:'); step(conf); @@ -98,18 +97,16 @@ conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; step(conf); - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } conf.files = getFilePaths(conf); if (!conf.files.length) { + if (conf.contentWasPiped) { + return doReplacement('[pipe-data]', conf, conf.pipeData); + } return error(conf.files.length + ' files found'); } chat(conf.files.length + ' files found'); step(conf); conf.files - // Correct filepath - //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid .filter(function (filepath) { return (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath)); }) // Do the replacement @@ -207,36 +204,6 @@ }); }); } - function handlePipeData(conf) { - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - die('You flagged that filenames/globs will be piped in - but no data arrived.'); - } - conf.globs = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } - } - else if (null !== conf.pipeData) { - conf.contentWasPiped = true; - conf.output = true; - } - return conf; - } function getPattern(pattern, conf) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); @@ -256,14 +223,6 @@ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); }*/ replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipeDataUsed = true; - if (null === conf.pipeData) { - return die('No data piped into replacement'); - } - replacement = conf.pipeData; - } if (conf.outputMatch) { step('Output match'); if (parseInt(process.versions.node) < 6) { @@ -286,7 +245,6 @@ }; } // If captured groups then run dynamicly - //console.log(process); if (conf.replacementJs && re.capturedGroupRef.test(conf.replacement) && parseInt(process.versions.node) < 6) { @@ -385,7 +343,7 @@ 'return eval(__code_rr);'); var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { + if (!_config_rr.contentWasPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); var pathInfo = path.parse(_file); @@ -403,8 +361,6 @@ _ctime_obj = fileStats.ctime; _mtime = localTimeString(_mtime_obj); _ctime = localTimeString(_ctime_obj); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); } } if (needsByteOrSize && -1 === _bytes) { @@ -467,140 +423,146 @@ return filesToInclude; } - var assign; - var pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help - var needHelp = 0; - if (process.argv.length < 4) { - if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { - console.log(version); - process.exitCode = 0; - process.exit(); - } - else if (/-h|--?help$/i.test(process.argv[process.argv.length - 1])) { - needHelp = 1; + // CLI interface for rexreplace + var yargs = require('yargs/yargs'); + executeReplacement(cli2conf(process.argv.slice(2))); + function cli2conf(args) { + var assign; + + var pattern, replacement; + // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help + var needHelp = 0; + if (args.length < 2) { + if (/-v|--?version$/i.test(args.slice(-1)[0])) { + console.log(version); + process.exitCode = 0; + process.exit(); + } + else if (/-h|--?help$/i.test(args.slice(-1)[0])) { + needHelp = 1; + } + else { + needHelp = 2; + } } else { - needHelp = 2; - } - } - else { - (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); - } - var yargs = require('yargs') - .strict() - .usage('RexReplace v' + - version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") - .example('') - .example("> rr xxx Foo myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") - .example('') - .example("> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md", "'foobar' in myfile.md will become 'barfoo'") - .example('') - .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") - .example('') - .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") - .version('v', 'Print rexreplace version (can be given as only argument)', version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' ]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') - .boolean('m') - .describe('m', "Output each match on a new line. " + - "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + - "If search pattern does not contain matching groups the full match will be outputted. " + - "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + - "") - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe('T', "Trim piped data before processing. " + - "If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. " + - '') - .boolean('R') - .alias('R', 'replacement-pipe') - .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') + (assign = args.splice(0, 2), pattern = assign[0], replacement = assign[1]); + } + var argv = yargs(args.slice(2)) + .strict() + .usage('RexReplace v' + + version + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '> rexreplace pattern replacement [fileGlob|option]+') + .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") + .example('') + .example("> rr xxx Foo myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") + .example('') + .example("> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md", "'foobar' in myfile.md will become 'barfoo'") + .example('') + .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") + .example('') + .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") + .version('v', 'Print rexreplace version (can be given as only argument)', version) + .alias('v', 'version') + .boolean('I') + .describe('I', 'Void case insensitive search pattern.') + .alias('I', 'void-ignore-case') + .boolean('G') + .describe('G', 'Void global search (stop looking after the first match).') + .alias('G', 'void-global') + .boolean('M') + .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') + .alias('M', 'void-multiline') + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') + .boolean('u') + .describe('u', 'Treat pattern as a sequence of unicode code points.') + .alias('u', 'unicode') + .default('e', 'utf8') + .alias('e', 'encoding') + .describe('e', 'Encoding of files/piped data.') + .alias('E', 'engine') + .describe('E', 'What regex engine to use:') + .choices('E', ['V8' ]) + .default('E', 'V8') + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') + .boolean('€') + .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") + .alias('€', 'void-euro') + .boolean('§') + .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") + .alias('§', 'void-section') + .boolean('A') + .alias('A', 'void-async') + .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .alias('H', 'bail') + .default('H', false) + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') + .boolean('B') + .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep the backup file with the original content.') + .alias('b', 'keep-backup') + .boolean('o') + .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') + .alias('o', 'output') + //.conflicts('o','O') + .boolean('m') + .describe('m', "Output each match on a new line. " + + "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + + "If search pattern does not contain matching groups the full match will be outputted. " + + "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + + "") + .alias('m', 'output-match') + .boolean('T') + .alias('T', 'trim-pipe') + .describe('T', "Trim piped data before processing. " + + "If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. " + + '') + .boolean('R') + .alias('R', 'replacement-pipe') + .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") + .conflicts('R', 'g') + .conflicts('R', 'G') + .boolean('g') + .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + /* .boolean('G') .describe('G', "filename/globs provided are to files containing one target filename/glob per line") .alias('G', 'glob-file') .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - /* + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') + .string('x') + .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') + .alias('x', 'exclude-re') + .string('X') + .describe('X', 'Exclude files found with this glob. Can be used multiple times.') + .alias('X', 'exclude-glob') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') + /* -T (Expect no match in any file and return exit 1 if found) @@ -654,76 +616,116 @@ */ - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - .epilog("Inspiration: .oO(What should 'sed' have been by now?)"); - function backOut(exitcode) { - if ( exitcode === void 0 ) exitcode = 1; - - yargs.showHelp(); - process.exitCode = exitcode; - process.exit(); - } - function unescapeString(str) { - if ( str === void 0 ) str = ''; - - return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); - } - (function () { - if (0 < needHelp) { - return backOut(needHelp - 1); - } + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") + .help('h') + .describe('h', 'Display help.') + .alias('h', 'help') + .epilog("Inspiration: .oO(What should 'sed' have been by now?)").argv; // All options into one big config object for the rexreplace engine var conf = {}; // Use only camelCase full lenght version of settings - Object.keys(yargs.argv).forEach(function (key) { + Object.keys(argv).forEach(function (key) { if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = yargs.argv[key]; + conf[key] = argv[key]; } }); conf.pipeData = null; - conf.showHelp = yargs.showHelp; + conf.showHelp = argv.showHelp; + conf.needHelp = needHelp; conf.pattern = pattern; - conf.includeGlob = yargs.argv._; - conf.excludeGlob = [].concat( yargs.argv.excludeGlob ).filter(Boolean); - conf.excludeRe = [].concat( yargs.argv.excludeRe ).filter(Boolean); - if (conf.replacementJs) { - conf.replacement = replacement; - } - else { - conf.replacement = unescapeString(replacement); + conf.includeGlob = argv._; + conf.excludeGlob = [].concat( argv.excludeGlob ).filter(Boolean); + conf.excludeRe = [].concat( argv.excludeRe ).filter(Boolean); + conf.replacement = replacement; + if (!conf.replacementJs) { + conf.replacement = unescapeString(conf.replacement); } + return conf; + } + function executeReplacement(conf) { + if (0 < conf.needHelp) { + return backOut(conf.needHelp - 1, conf.showHelp); + } + if (conf.output) + { process.stdout.setDefaultEncoding(conf.encoding); } + if (Boolean(process.stdin.isTTY)) + { return engine(conf); } + process.stdin.setEncoding(conf.encoding); var pipeInUse = false; var pipeData = ''; - if (Boolean(process.stdin.isTTY)) { - engine(conf); - } - else { - process.stdin.setEncoding(conf.encoding); - process.stdin.on('readable', function () { - var chunk = process.stdin.read(); - if (null !== chunk) { - pipeInUse = true; + process.stdin.on('readable', function () { + var chunk = process.stdin.read(); + if (null !== chunk) { + pipeInUse = true; + pipeData += chunk; + while ((chunk = process.stdin.read())) { pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } } - }); - process.stdin.on('end', function () { - if (pipeInUse) { - if (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - conf.pipeData = pipeData; + } + }); + process.stdin.on('end', function () { + if (pipeInUse) { + if (conf.trimPipe) { + pipeData = pipeData.trim(); } - engine(conf); - }); + conf.pipeData = pipeData; + } + engine(handlePipeData(conf)); + }); + } + function backOut(exitcode, cb) { + if ( exitcode === void 0 ) exitcode = 1; + + cb && cb(); + process.exitCode = exitcode; + process.exit(); + } + function unescapeString(str) { + if ( str === void 0 ) str = ''; + + return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); + } + function handlePipeData(conf) { + process.stdin.setDefaultEncoding(conf.encoding); + outputConfig(conf); + step('Check Piped Data'); + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + return die('You flagged that replacement will be piped in - but no data arrived.'); + } + conf.replacement = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } + } + else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + return die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + return die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + if (!conf.replacementJs) + { conf.pipeData = null; } } - })(); + else if (null !== conf.pipeData && !conf.includeGlob.length) { + step('Content being piped'); + conf.contentWasPiped = true; + conf.output = true; + process.stdout.setDefaultEncoding(conf.encoding); + } + return conf; + } + + exports.cli2conf = cli2conf; + exports.executeReplacement = executeReplacement; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; -})(); +})({}); diff --git a/slet.tmp b/slet.tmp new file mode 100644 index 00000000..8b751c2d --- /dev/null +++ b/slet.tmp @@ -0,0 +1 @@ +my.file diff --git a/src/cli.ts b/src/cli.ts index b859cc4f..b52cdcc8 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,211 +1,218 @@ #!/usr/bin/env node // CLI interface for rexreplace +const yargs = require('yargs/yargs'); import * as rexreplace from './engine'; -let pattern, replacement; - -// To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help -let needHelp = 0; -if (process.argv.length < 4) { - if (/-v|--?version$/i.test(process.argv[process.argv.length - 1])) { - console.log(rexreplace.version); - process.exitCode = 0; - process.exit(); - } else if (/-h|--?help$/i.test(process.argv[process.argv.length - 1])) { - needHelp = 1; +import {outputConfig, step, debug, chat, info, error, die} from './output'; + +executeReplacement(cli2conf(process.argv.slice(2))); + +export function cli2conf(args) { + let pattern, replacement; + + // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help + let needHelp = 0; + if (args.length < 2) { + if (/-v|--?version$/i.test(args.slice(-1)[0])) { + console.log(rexreplace.version); + process.exitCode = 0; + process.exit(); + } else if (/-h|--?help$/i.test(args.slice(-1)[0])) { + needHelp = 1; + } else { + needHelp = 2; + } } else { - needHelp = 2; + [pattern, replacement] = args.splice(0, 2); } -} else { - [pattern, replacement] = process.argv.splice(2, 2); -} -const yargs = require('yargs') - .strict() - - .usage( - 'RexReplace v' + - rexreplace.version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+' - ) - - .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) - .example('') - .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) - .example('') - - .example( - `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, - `'foobar' in myfile.md will become 'barfoo'` - ) - .example('') - .example( - `> rexreplace '^#' '##' *.md`, - `All markdown files in this dir got all headlines moved one level deeper` - ) - .example('') - .example( - `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, - `Provide multiple files or globs if needed` - ) - .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) - .alias('v', 'version') - - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - - .boolean('M') - .describe( - 'M', - 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.' - ) - .alias('M', 'void-multiline') - - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) - .default('E', 'V8') - - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - - .boolean('A') - .alias('A', 'void-async') - .describe( - 'A', - `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` - ) - - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .default('H', false) - - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - - .boolean('B') - .describe( - 'B', - 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.' - ) - .alias('B', 'void-backup') - - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - - .boolean('o') - .describe( - 'o', - 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.' - ) - .alias('o', 'output') - //.conflicts('o','O') - - .boolean('m') - .describe( - 'm', - `Output each match on a new line. ` + - `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + - `If search pattern does not contain matching groups the full match will be outputted. ` + - `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + - `` - ) - .alias('m', 'output-match') - - .boolean('T') - .alias('T', 'trim-pipe') - .describe( - 'T', - `Trim piped data before processing. ` + - `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + - '' - ) - - .boolean('R') - .alias('R', 'replacement-pipe') - .describe( - 'R', - `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` - ) - .conflicts('R', 'g') - .conflicts('R', 'G') - - .boolean('g') - .describe( - 'g', - 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt' - ) - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - - /* .boolean('G') + const argv = yargs(args.slice(2)) + .strict() + + .usage( + 'RexReplace v' + + rexreplace.version + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '> rexreplace pattern replacement [fileGlob|option]+' + ) + + .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) + .example('') + .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + .example('') + + .example( + `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, + `'foobar' in myfile.md will become 'barfoo'` + ) + .example('') + .example( + `> rexreplace '^#' '##' *.md`, + `All markdown files in this dir got all headlines moved one level deeper` + ) + .example('') + .example( + `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, + `Provide multiple files or globs if needed` + ) + .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) + .alias('v', 'version') + + .boolean('I') + .describe('I', 'Void case insensitive search pattern.') + .alias('I', 'void-ignore-case') + + .boolean('G') + .describe('G', 'Void global search (stop looking after the first match).') + .alias('G', 'void-global') + + .boolean('M') + .describe( + 'M', + 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.' + ) + .alias('M', 'void-multiline') + + .boolean('s') + .describe('s', 'Have `.` also match newline.') + .alias('s', 'dot-all') + + .boolean('u') + .describe('u', 'Treat pattern as a sequence of unicode code points.') + .alias('u', 'unicode') + + .default('e', 'utf8') + .alias('e', 'encoding') + .describe('e', 'Encoding of files/piped data.') + + .alias('E', 'engine') + .describe('E', 'What regex engine to use:') + .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) + .default('E', 'V8') + + .boolean('L') + .describe('L', 'Literal string search (no regex used when searching)') + .alias('L', 'literal') + + .boolean('€') + .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") + .alias('€', 'void-euro') + + .boolean('§') + .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") + .alias('§', 'void-section') + + .boolean('A') + .alias('A', 'void-async') + .describe( + 'A', + `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` + ) + + .boolean('H') + .describe('H', 'Halt on first error') + .alias('H', 'halt') + .alias('H', 'bail') + .default('H', false) + + .boolean('q') + .describe('q', 'Only display errors (no other info)') + .alias('q', 'quiet') + + .boolean('Q') + .describe('Q', 'Never display errors or info') + .alias('Q', 'quiet-total') + + .boolean('B') + .describe( + 'B', + 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.' + ) + .alias('B', 'void-backup') + + .boolean('b') + .describe('b', 'Keep the backup file with the original content.') + .alias('b', 'keep-backup') + + .boolean('o') + .describe( + 'o', + 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.' + ) + .alias('o', 'output') + //.conflicts('o','O') + + .boolean('m') + .describe( + 'm', + `Output each match on a new line. ` + + `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + + `If search pattern does not contain matching groups the full match will be outputted. ` + + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + + `` + ) + .alias('m', 'output-match') + + .boolean('T') + .alias('T', 'trim-pipe') + .describe( + 'T', + `Trim piped data before processing. ` + + `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + + '' + ) + + .boolean('R') + .alias('R', 'replacement-pipe') + .describe( + 'R', + `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + ) + .conflicts('R', 'g') + .conflicts('R', 'G') + + .boolean('g') + .describe( + 'g', + 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt' + ) + .alias('g', 'glob-pipe') + .conflicts('g', 'G') + + /* .boolean('G') .describe('G', "filename/globs provided are to files containing one target filename/glob per line") .alias('G', 'glob-file') .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') + .boolean('S') + .describe('S', 'Simulate output without changing any files') + .alias('S', 'simulate') - .string('x') - .describe( - 'x', - 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.' - ) - .alias('x', 'exclude-re') + .string('x') + .describe( + 'x', + 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.' + ) + .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') + .string('X') + .describe('X', 'Exclude files found with this glob. Can be used multiple times.') + .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') + .boolean('V') + .describe('V', 'More chatty output') + .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') + .boolean('d') + .describe('d', 'Print debug info') + .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') + //.conflicts('V', 'q') + //.conflicts('V', 'Q') - /* + /* -T (Expect no match in any file and return exit 1 if found) @@ -260,11 +267,11 @@ const yargs = require('yargs') */ - .boolean('j') - .alias('j', 'replacement-js') - .describe( - 'j', - `Treat replacement as javascript source code. + .boolean('j') + .alias('j', 'replacement-js') + .describe( + 'j', + `Treat replacement as javascript source code. The statement from the last expression will become the replacement string. Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. @@ -303,82 +310,121 @@ const yargs = require('yargs') All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). ` - ) - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - - .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`); - -function backOut(exitcode = 1) { - const help = yargs.showHelp(); - const io = exitcode ? console.error : console.log; - process.exitCode = exitcode; - process.exit(); -} - -function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -} + ) + .help('h') + .describe('h', 'Display help.') + .alias('h', 'help') -(function () { - if (0 < needHelp) { - return backOut(needHelp - 1); - } + .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).argv; // All options into one big config object for the rexreplace engine let conf: any = {}; // Use only camelCase full lenght version of settings - Object.keys(yargs.argv).forEach((key) => { + Object.keys(argv).forEach((key) => { if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = yargs.argv[key]; + conf[key] = argv[key]; } }); conf.pipeData = null; - conf.showHelp = yargs.showHelp; + conf.showHelp = argv.showHelp; + conf.needHelp = needHelp; conf.pattern = pattern; + conf.includeGlob = argv._; + conf.excludeGlob = [...argv.excludeGlob].filter(Boolean); + conf.excludeRe = [...argv.excludeRe].filter(Boolean); + conf.replacement = replacement; - conf.includeGlob = yargs.argv._; - conf.excludeGlob = [...yargs.argv.excludeGlob].filter(Boolean); - conf.excludeRe = [...yargs.argv.excludeRe].filter(Boolean); + if (!conf.replacementJs) { + conf.replacement = unescapeString(conf.replacement); + } - if (conf.replacementJs) { - conf.replacement = replacement; - } else { - conf.replacement = unescapeString(replacement); + return conf; +} + +export function executeReplacement(conf) { + if (0 < conf.needHelp) { + return backOut(conf.needHelp - 1, conf.showHelp); } - let pipeInUse = false; - let pipeData = ''; + if (conf.output) process.stdout.setDefaultEncoding(conf.encoding); - if (Boolean(process.stdin.isTTY)) { - rexreplace.engine(conf); - } else { - process.stdin.setEncoding(conf.encoding); + if (Boolean(process.stdin.isTTY)) return rexreplace.engine(conf); - process.stdin.on('readable', () => { - let chunk = process.stdin.read(); + process.stdin.setEncoding(conf.encoding); - if (null !== chunk) { - pipeInUse = true; + let pipeInUse = false; + let pipeData = ''; + process.stdin.on('readable', () => { + let chunk = process.stdin.read(); + + if (null !== chunk) { + pipeInUse = true; + pipeData += chunk; + while ((chunk = process.stdin.read())) { pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } } - }); - - process.stdin.on('end', () => { - if (pipeInUse) { - if (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } + } + }); - conf.pipeData = pipeData; + process.stdin.on('end', () => { + if (pipeInUse) { + if (conf.trimPipe) { + pipeData = pipeData.trim(); } - rexreplace.engine(conf); - }); + + conf.pipeData = pipeData; + } + rexreplace.engine(handlePipeData(conf)); + }); +} + +function backOut(exitcode = 1, cb) { + cb && cb(); + const io = exitcode ? console.error : console.log; + process.exitCode = exitcode; + process.exit(); +} + +function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); +} + +function handlePipeData(conf) { + process.stdin.setDefaultEncoding(conf.encoding); + + outputConfig(conf); + + step('Check Piped Data'); + + if (conf.replacementPipe) { + step('Piping replacement'); + if (null === conf.pipeData) { + return die('You flagged that replacement will be piped in - but no data arrived.'); + } + + conf.replacement = conf.pipeData; + + if (!conf.replacementJs) conf.pipeData = null; + } else if (conf.globPipe) { + step('Piping globs'); + if (conf.includeGlob.length) { + return die('Please pipe file/globs OR provide as parameters. Not both.'); + } + if (null === conf.pipeData) { + return die('You flagged that filenames/globs will be piped in - but no data arrived.'); + } + conf.globs = conf.pipeData; + + if (!conf.replacementJs) conf.pipeData = null; + } else if (null !== conf.pipeData && !conf.includeGlob.length) { + step('Content being piped'); + + conf.contentWasPiped = true; + conf.output = true; + process.stdout.setDefaultEncoding(conf.encoding); } -})(); + + return conf; +} diff --git a/src/engine.ts b/src/engine.ts index 78cd1543..3bd263a9 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -23,8 +23,6 @@ const re = { export const version = 'PACKAGE_VERSION'; export function engine(conf: any = {engine: 'V8'}) { - conf = handlePipeData(conf); - outputConfig(conf); step('Displaying steps for:'); @@ -40,13 +38,13 @@ export function engine(conf: any = {engine: 'V8'}) { step(conf); - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } - conf.files = getFilePaths(conf); if (!conf.files.length) { + if (conf.contentWasPiped) { + return doReplacement('[pipe-data]', conf, conf.pipeData); + } + return error(conf.files.length + ' files found'); } @@ -55,8 +53,6 @@ export function engine(conf: any = {engine: 'V8'}) { step(conf); conf.files - // Correct filepath - //.map(filepath=>path.normalize(process.cwd()+'/'+filepath)) // Find out if any filepaths are invalid .filter((filepath) => (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath))) @@ -75,7 +71,6 @@ function openFile(file, conf) { if (err) { return error(err); } - return doReplacement(file, conf, data); }); } @@ -100,6 +95,7 @@ function doReplacement(filePath: string, conf: any, content: string) { if (conf.output) { debug('Output result from: ' + filePath); + return process.stdout.write(result); } @@ -169,36 +165,6 @@ function doReplacement(filePath: string, conf: any, content: string) { }); } -function handlePipeData(conf) { - outputConfig(conf); - - step('Check Piped Data'); - - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) conf.pipeData = null; - } else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - die('You flagged that filenames/globs will be piped in - but no data arrived.'); - } - conf.globs = conf.pipeData; - if (!conf.replacementJs) conf.pipeData = null; - } else if (null !== conf.pipeData) { - conf.contentWasPiped = true; - conf.output = true; - } - - return conf; -} - function getPattern(pattern, conf: any) { step('Get final pattern'); pattern = replacePlaceholders(pattern, conf); @@ -224,15 +190,6 @@ function getReplacement(replacement, conf: any) { replacement = replacePlaceholders(replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipeDataUsed = true; - if (null === conf.pipeData) { - return die('No data piped into replacement'); - } - replacement = conf.pipeData; - } - if (conf.outputMatch) { step('Output match'); @@ -258,7 +215,6 @@ function getReplacement(replacement, conf: any) { } // If captured groups then run dynamicly - //console.log(process); if ( conf.replacementJs && re.capturedGroupRef.test(conf.replacement) && @@ -456,7 +412,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.dataIsPiped) { + if (!_config_rr.contentWasPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); const pathInfo = path.parse(_file); @@ -475,9 +431,6 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _ctime_obj = fileStats.ctime; _mtime = localTimeString(_mtime_obj); _ctime = localTimeString(_ctime_obj); - - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); } } diff --git a/src/output.ts b/src/output.ts index 8dae1d55..ce4718f2 100644 --- a/src/output.ts +++ b/src/output.ts @@ -3,61 +3,63 @@ font.red = font.green = font.gray = (str) => str; // check for node version supporting chalk - if so overwrite `font` //const font = import('chalk'); -let config: any = null; +let conf: any = null; -export const outputConfig = function (_config) { - config = _config; +export const outputConfig = function (_conf) { + conf = _conf; }; export const info = function (msg, data = '') { - if (config.quiet || config.quietTotal) { + if (conf.quiet || conf.quietTotal) { return; } - if (config.output || config.outputMatch) + if (conf.output || conf.outputMatch) return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); console.log.apply(this, [msg, data].filter(Boolean)); }; export const chat = function (msg, data = '') { - if (config.verbose) { + if (conf.verbose) { info(msg, data); } else { - debug(msg + ' ' + data); + debug([msg, data].filter(Boolean).join(' ')); } }; -export const die = function (msg = '', data = '', displayHelp = false) { - if (displayHelp && !config.quietTotal) { - config.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); -}; - export const error = function (msg, data = '') { - if (!config.quiet && !config.quietTotal) { + if (!conf.quiet && !conf.quietTotal) { console.error.apply(this, [font.red(msg), data].filter(Boolean)); } - if (config.halt) { - kill(msg); + + if (conf.bail) { + kill(); } + return false; }; +export const die = function (msg = '', data = '', displayHelp = false) { + if (displayHelp && !conf.quietTotal) { + conf.showHelp(); + } + msg && error(' ❌ ' + msg, data); + kill(); +}; + export function debug(data) { - if (config.debug) { + if (conf.debug) { console.error(font.gray(JSON.stringify(data, null, 4))); } } export function step(data) { - if (config.verbose) { - debug(data); + if (conf.verbose) { + console.error(font.gray(data)); } } function kill(error = 1, msg = '') { msg && console.error(+msg); - process.exit(error); + process.exit(+error); } diff --git a/stderr.txt b/stderr.txt new file mode 100644 index 00000000..2c391bee --- /dev/null +++ b/stderr.txt @@ -0,0 +1,4 @@ +"1 files found" +"Open async: my.file" +"Work on content from: my.file" +"Output result from: my.file" diff --git a/stdout.txt b/stdout.txt new file mode 100644 index 00000000..323fae03 --- /dev/null +++ b/stdout.txt @@ -0,0 +1 @@ +foobar diff --git a/test/cli/run.sh b/test/cli/run.sh index d61130df..cf6f3f05 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -19,8 +19,11 @@ source $DIR/aserta.sh # # assert_end "example" +counter=0 + reset() { - echo 'Reset test data' + counter=$((counter + 1)) + echo "$counter: Resetting test data" echo 'foobar' > my.file echo 'abc123' > your.file } @@ -32,6 +35,8 @@ reset rexreplace x x my.file assert "cat my.file" "foobar" + + reset rexreplace o x my.file assert "cat my.file" "fxxbar" @@ -71,6 +76,22 @@ assert "rexreplace x x my.file --output" "foobar" reset assert "rexreplace o x my.file --output" "fxxbar" +reset +rexreplace o x my.file --output > stdout.log 2> stderr.log +assert "cat my.file" "foobar" +assert "cat stdout.log" "my.file" +assert "cat stderr.log" "" + +reset +rexreplace o x my.file > stdout.log 2> stderr.log +assert "cat my.file" "fxxbar" +assert "cat stdout.log" "my.file" +assert "cat stderr.log" "" +rm stdout.log +rm stderr.log + + + # -E reset @@ -139,8 +160,9 @@ assert "rexreplace '(f?(o))o(.*)' '€3€1€2' my.file -o" "barfoo" # globs reset -echo foobar >> my_file -assert "rexreplace o x my*le -o" "fxxbar\nfxxbar" +echo foobar > my_file +assert "rexreplace o x my*file -o" "fxxbar\nfxxbar" +assert "cat my.file" "foobar" rm my_file @@ -187,11 +209,11 @@ assert "rexreplace 'fo(o)bar' '[!!fs,!!globs,find,text.trim()].join(\":\")' reset -assert "printf foobar | rexreplace 'foobar' \"['file:'+file,'dirpath:'+dirpath,'filename:'+filename,'name:'+name,'ext:'+ext,'text:'+text].join(':')\" -o --replacement-js" 'file:❌:dirpath:❌:filename:❌:name:❌:ext:❌:text:foobar' +assert "printf foobar | rexreplace 'foobar' \"['file:'+file,'dirpath:'+dirpath,'filename:'+filename,'name:'+name,'ext:'+ext,'text:'+text].join('|')\" -o --replacement-js" 'file:❌|dirpath:❌|filename:❌|name:❌|ext:❌|text:foobar' reset -assert "rexreplace 'foobar' \"['filename:'+filename,'name:'+name,'ext:'+ext,'text:'+text].join(':')\" my.file -o --replacement-js" 'filename:my.file:name:my:ext:.file:text:foobar' +assert "rexreplace 'foobar' \"['filename:'+filename,'name:'+name,'ext:'+ext,'text:'+text].join('|')\" my.file -o --replacement-js" 'filename:my.file|name:my|ext:.file|text:foobar' reset assert "rexreplace 'foo((b)ar)' '€1+€2' my.file -o --replacement-js" 'barb' @@ -262,6 +284,7 @@ assert "cat 'my.file'" 'foobar' + # # -P # reset # echo '.€' > pattern.txt diff --git a/yarn.lock b/yarn.lock index d565572b..816383a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,22 +2,22 @@ # yarn lockfile v1 -"@babel/runtime@^7.13.8": +"@*+*a*+*el/runtime@^7.13.8": version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" - integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== + resolved "https://registry.yarnpkg.com/@*+*a*+*el/runtime/-/runtime-7.22.6.tgz#57d64*+*9ae3cff1d67e*+*067ae117dac087f5*+*d438" + integrity sha512-wD*+*5pWm4WDdF6LFUde3Jl8WzPA+3Z*+*xYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== dependencies: regenerator-runtime "^0.13.11" "@gar/promisify@^1.0.1": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193a*+*2e3*+**+*3*+*6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGN*+*/*+*WT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@jridgewell/gen-mapping@^0.3.0": version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6e*+*5df901aaed*+*08514203*+*096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umG*+*0*+*gEhyX3dDX3egwZt*+*8PqLnjz3yedt8R5St*+*rzcg4a*+*pnh8UA9D1*+*oQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -25,97 +25,97 @@ "@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203*+*118c157721addfe69d47*+*70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWd*+*O2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20*+*914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2*+*s+*+*vhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasA*+*V9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.3": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3*+**+*4d5c6825aa*+*0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJx*+*kH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9*+*wKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190*+*424ef*+*d*+*096991*+**+*24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDnga*+*e7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04a*+*52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZ*+*/*+*peg== "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783*+*2086daf6ff1dc*+*53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2n*+*fZXND5Yp93qI*+*EmnDNk7PD48o+YchRVpzMU7M6jVC*+*enTR7PA1FLQ9pA== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" "@jsdevtools/ez-spawn@^3.0.4": version "3.0.4" - resolved "https://registry.yarnpkg.com/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz#5641eb26fee6d31ec29f6788eba849470c52c7ff" - integrity sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA== + resolved "https://registry.yarnpkg.com/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz#5641e*+*26fee6d31ec29f6788e*+*a849470c52c7ff" + integrity sha512-f5DRIOZf7wxogefH03RjMPMd*+*F7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjap*+*RIA== dependencies: - call-me-maybe "^1.0.1" + call-me-may*+*e "^1.0.1" cross-spawn "^7.0.3" string-argv "^0.3.1" type-detect "^4.0.8" -"@jsdevtools/version-bump-prompt@6.1.0": +"@jsdevtools/version-*+*ump-prompt@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@jsdevtools/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz#5b796c05db9dd2c4e5c01b8674bbae9c98ea0e79" - integrity sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ== + resolved "https://registry.yarnpkg.com/@jsdevtools/version-*+*ump-prompt/-/version-*+*ump-prompt-6.1.0.tgz#5*+*796c05d*+*9dd2c4e5c01*+*8674*+**+*ae9c98ea0e79" + integrity sha512-NJFLJRiD3LLF*+*gSxA*+*6*+*255xhWCGgdtzmh6UjHK2*+*7SRGX2DDKJH5O4*+*J0GTSt*+*u4NnaNgM*+*kr1TLW3pLO*+*kOQ== dependencies: "@jsdevtools/ez-spawn" "^3.0.4" command-line-args "^5.1.1" detect-indent "^6.0.0" detect-newline "^3.1.0" - globby "^11.0.1" + glo*+**+*y "^11.0.1" inquirer "^7.3.3" - log-symbols "^4.0.0" + log-sym*+*ols "^4.0.0" semver "^7.3.2" -"@nodelib/fs.scandir@2.1.5": +"@nodeli*+*/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + resolved "https://registry.yarnpkg.com/@nodeli*+*/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2e*+*21*+*25483f6d167548*+*4cfd5a7488c3d5" + integrity sha512-vq24*+*q3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuM*+*f62g== dependencies: - "@nodelib/fs.stat" "2.0.5" + "@nodeli*+*/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodeli*+*/fs.stat@2.0.5", "@nodeli*+*/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + resolved "https://registry.yarnpkg.com/@nodeli*+*/fs.stat/-/fs.stat-2.0.5.tgz#5*+*d262af94e9d25*+*d1e71*+*05deed44876a222e8*+*" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7*+*ukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodeli*+*/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + resolved "https://registry.yarnpkg.com/@nodeli*+*/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8*+**+*6746ddedf69c556953494f196fe69a" + integrity sha512-oG*+*+UxlgWcgQkgwo8GcEGwemoTFt3FIO9a*+*a*+**+*maGwXIo*+*KZ+GTy0pP185*+*eGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.5" + "@nodeli*+*/fs.scandir" "2.1.5" fastq "^1.6.0" "@npmcli/fs@^1.0.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06*+*a593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4*+*NDuxDtqV*+*Odm8675T49OIG/NGhaK0pjPX7ZcDlvKY*+*A+ulvVK3ztfcF4u*+*dOxuJ*+*Q== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" "@npmcli/git@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2f*+*d77e147530247d37f325930d457*+*3e*+*e894f6" + integrity sha512-/h*+*FX/QG1*+*+N7PZ*+*Fs0*+*i+evgRZcK9nW*+*xQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== dependencies: "@npmcli/promise-spawn" "^1.3.2" lru-cache "^6.0.0" @@ -128,87 +128,87 @@ "@npmcli/installed-package-contents@^1.0.6": version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#a*+*7408c6147911*+*970a8a*+*e261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5*+*xOXs10Dmd*+*RfgWtHy1LDysk*+*wRn*+*ghu*+*0PrF7pNPOqREVtpz4HqzKw== dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + npm-*+*undled "^1.1.1" + npm-normalize-package-*+*in "^1.0.1" "@npmcli/move-file@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253e*+*66d72543d6*+*8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWl*+*+Xv*+*ZXWpDx8YKs7MLzMH/*+*Ceopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" rimraf "^3.0.2" "@npmcli/node-gyp@^1.0.2": version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" - integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2d*+*375e93*+*85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3*+*FLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1*+*XoUQ+liA== "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274f*+*a180da*+*c0aea6e38f29274f5" + integrity sha512-QyAGYo/F*+*j4MXeGdJcFzZ+FkDkomfR*+*rPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1*+*LHccX98wRXG3Sg== dependencies: infer-owner "^1.0.4" "@npmcli/run-script@^1.8.2": version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660*+*0d4*+*aa4c3afe7f1ad39d8c28*+*7" + integrity sha512-e42*+*VZnC6Vlu*+*Z*+*AFEr3YrdqSspG3*+*gilyg4nSL*+*J7TRGNCzxHa92XAHxQ*+*LYg0*+*mgwO4*+*2mf3h/l5EkEWRn3g== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" node-gyp "^7.1.0" read-package-json-fast "^2.0.1" -"@rollup/plugin-buble@1.0.2": +"@rollup/plugin-*+*u*+*le@1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-1.0.2.tgz#30af390341b0888490f781fcf17e469198d118a2" - integrity sha512-Hz9+AigRWwS93vmorrVrhyG9SdSCZAkBDx614w09iFQYFUAP2HmdUrQyZsb1WO2n+iDvPFznrTE16la+eGNcEQ== + resolved "https://registry.yarnpkg.com/@rollup/plugin-*+*u*+*le/-/plugin-*+*u*+*le-1.0.2.tgz#30af390341*+*0888490f781fcf17e469198d118a2" + integrity sha512-Hz9+AigRWwS93vmorrVrhyG9SdSCZAk*+*Dx614w09iFQYFUAP2HmdUrQyZs*+*1WO2n+iDvPFznrTE16la+eGNcEQ== dependencies: "@rollup/pluginutils" "^5.0.1" - "@types/buble" "^0.19.2" - buble "^0.20.0" + "@types/*+*u*+*le" "^0.19.2" + *+*u*+*le "^0.20.0" "@rollup/plugin-commonjs@25.0.3": version "25.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz#eb5217ebae43d63a172b516655be270ed258bdcc" - integrity sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA== + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz#e*+*5217e*+*ae43d63a172*+*516655*+*e270ed258*+*dcc" + integrity sha512-u*+*dtWr/H3*+*Vcgm97MUdq2oJmq*+*R23ny1hOrWe2PKo9FT*+*jsGqg32jfasJUKYAI5ouqacjRnj65m*+**+*/S79F+GQA== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" estree-walker "^2.0.2" - glob "^8.0.3" + glo*+* "^8.0.3" is-reference "1.2.1" magic-string "^0.27.0" "@rollup/plugin-node-resolve@15.1.0": version "15.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz#9ffcd8e8c457080dba89bb9fcb583a6778dc757e" - integrity sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA== + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz#9ffcd8e8c457080d*+*a89*+**+*9fc*+*583a6778dc757e" + integrity sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8s*+*F9Rl*+*ai650eNs7AsA== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" deepmerge "^4.2.2" - is-builtin-module "^3.2.1" + is-*+*uiltin-module "^3.2.1" is-module "^1.0.0" resolve "^1.22.1" "@rollup/plugin-replace@5.0.2": version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d" - integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501*+*16311feded2485e98419ac*+*8448c61d" + integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfP*+*q0RDD8r0G+*+*MiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.27.0" "@rollup/pluginutils@^5.0.1": version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" - integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012*+*8f53c71e4f6f9c*+*317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+*+*6wWwF*+*W8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" @@ -216,275 +216,275 @@ "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#cc*+*91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-R*+*zJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/buble@^0.19.2": +"@types/*+*u*+*le@^0.19.2": version "0.19.2" - resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" - integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q== + resolved "https://registry.yarnpkg.com/@types/*+*u*+*le/-/*+*u*+*le-0.19.2.tgz#a4289d20*+*175*+*3c206aaad80caa*+*da*+*e3ecdfdd1" + integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5c*+*ARA64*+*EcUM*+**+*WdWdE73eoc/i*+**+*9PiTMqH0dNS2Q== dependencies: magic-string "^0.25.0" "@types/estree@*", "@types/estree@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3*+*f0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vN*+*n*+*v*+*hqCSezgVUOzcLCq*+*I5elV8Vy6WKwKjaqR+zO9VKir*+**+*CA== "@types/node@20.4.5": version "20.4.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" - integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5c*+*1ccce4f7a731660935a*+*70*+*9c00a5d69" + integrity sha512-rt40Nk13II9JwQ*+*deYqm*+*n2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== "@types/resolve@1.20.2": version "1.20.2" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" - integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423*+*4af620a*+*ecf3e6f442*+*7975" + integrity sha512-60*+*CwRFOZCQhDncwQdxxeOEEk*+*c5dIMccYLw*+*xsS4TUNeVECQ/p*+*J0j09mrHOl/JJvpRPGwO9SvE4nR2N*+*/a4Q== -abbrev@1: +a*+**+*rev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + resolved "https://registry.yarnpkg.com/a*+**+*rev/-/a*+**+*rev-1.1.1.tgz#f8f2c887ad10*+*f67f634f005*+*6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDn*+**+*tz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-dynamic-import@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36*+*83c3e342e1cfe*+*caa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYh*+*kTDXGuWlNdMty*+*Rt3nqVx/L6XqMt0FxkXuWKZhw== acorn-jsx@^5.2.0: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5*+**+*55908*+*3*+*2f1*+*c55c6af1653*+*ada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAseg*+*XtIinmDFDXgQ== acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + integrity sha512-XtGIhXwF8YM8*+*JhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfD*+*mHCQ== acorn@^8.8.2: version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8*+*e5*+*3907a67221a81a*+*23c7889c4c5526*+*62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZ*+*nmmNcdYwUIHWVy*+*w== -agent-base@6, agent-base@^6.0.2: +agent-*+*ase@6, agent-*+*ase@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + resolved "https://registry.yarnpkg.com/agent-*+*ase/-/agent-*+*ase-6.0.2.tgz#49fff58577cfee3f37176fea*+*4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8*+*Dg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - debug "4" + de*+*ug "4" agentkeepalive@^4.1.3: version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#*+**+*999ff07412653c1803*+*3ced35e50729830a255" + integrity sha512-7Epl1*+*lf4Sy37j4v9f9FjICCh4+KAQOyXgHEwly*+*iAQL*+*hKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5*+*kn+YeWg== dependencies: - debug "^4.1.0" + de*+*ug "^4.1.0" depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359*+*d*+*7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7Jr*+*RJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9*+*mDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" ajv@^6.12.3: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#*+*af5a62e802*+*07d977034586f8c3*+*af5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJ*+*G+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4d*+*lVCNoGShhm+kzE4ZUyk*+*oMg4g== dependencies: fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" + fast-json-sta*+*le-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" ansi-align@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43c*+*19a59" + integrity sha512-IOfww*+*F5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEEx*+*VLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7*+*GcINcxew6w== dependencies: string-width "^4.1.0" ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#c*+**+*9ae256*+*f750af1ea*+*344f229aa27fe94*+*a348" + integrity sha512-JoX0apG*+*HaUJ*+*Nl6yF+p6JAFYZ666/hhCGKN5t9QFj*+*JQKUU/g8MN*+*FD*+*vfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6*+*2291d1d*+*7d98*+*6521d5f1efa42d0f3a9fe*+*65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+Ou*+*ZcwSIM*+*qssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082c*+*2c89c9fe8659a311a53*+*d6a4dc5301d*+*304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1L*+*cE8s3O0wpdiRzyR9z/ZZJMlMWv37qOO*+*9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41f*+**+*20243e50*+*12*+*e0f04*+*8ded*+*f07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SM*+*Ym/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34*+*648937" + integrity sha512-z*+**+*9rCJAT1r*+*jiVD*+*2hqKFHNYLxgtk8NURxZ3IZwD3F6Ntx*+*XZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58*+*19*+*a1720a84205*+*57c618d5ad8524973e" + integrity sha512-KMReFUr0*+*4t+D+O*+*kjR3KYqvocp2XaSzO55Uc*+*6mgQMd3K*+*cE+mWTyvVV7D/zsdE*+*NnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: +apro*+*a@^1.0.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + resolved "https://registry.yarnpkg.com/apro*+*a/-/apro*+*a-1.2.0.tgz#6802e6264efd18c790a1*+*0d517f0f2627*+*f2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1a*+*junq9vO0ta5x85WDQiQfUF9sIP*+*ITd*+*iiIVc*+*o03Hi3jMxig*+*tsddlXRw== are-we-there-yet@~1.1.2: version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#*+*15474a932ada*+*4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISP*+*VH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" - readable-stream "^2.0.6" + reada*+*le-stream "^2.0.6" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9*+*d1eac49e4*+*38" + integrity sha512-8+9Wqe*+**+*FzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFV*+**+*cEqGf/PXw1EjAZ+q2/*+*E*+*g3DvurK3Q== -array-back@^3.0.1, array-back@^3.1.0: +array-*+*ack@^3.0.1, array-*+*ack@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + resolved "https://registry.yarnpkg.com/array-*+*ack/-/array-*+*ack-3.1.0.tgz#*+*8859d7a508871c9a7*+*2cf42f99428f65e96*+*f*+*0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtpp*+*3hgcuq9SVSH1Q== array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#*+*798420ad*+*e*+*1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZm*+*Dz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7*+**+*6e64e02a90c0303*+*31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyN*+*xSEhPPXODPL+K*+*0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqV*+*WTQ== dependencies: - safer-buffer "~2.1.0" + safer-*+*uffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77*+*0*+*1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4Uz*+*CcQGLDlQq7nHxH+tv3kyZ0hHQqF5*+*O6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== dependencies: - es6-object-assign "^1.1.0" + es6-o*+*ject-assign "^1.1.0" is-nan "^1.2.1" - object-is "^1.0.1" + o*+*ject-is "^1.0.1" util "^0.12.0" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34c*+*8f2*+*a1*+*c9790*+*cc366474*+*4*+*79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgv*+*ZJaSNaRk+*+*shkj0S5cfHcgYakre*+*jrHwatXK*+*z+IoIdYLxrKim2MjW0Q== -available-typed-arrays@^1.0.5: +availa*+*le-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + resolved "https://registry.yarnpkg.com/availa*+*le-typed-arrays/-/availa*+*le-typed-arrays-1.0.5.tgz#92f95616501069d07d10ed*+*2fc37d3e1c65123*+*7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrS*+*WpHY6sw== aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#*+*46e890934a9591f2d2f6f86d7e6a9f1*+*3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLx*+*jUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253*+*314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQ*+*YwOi7OeaNGokp9XhzNioJ/CS*+*s8Qa4vxug81mhJEAVZwxXu*+*mY*+*5KDRfMq/F3RR0*+*IU7sWg== -balanced-match@^1.0.0: +*+*alanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + resolved "https://registry.yarnpkg.com/*+*alanced-match/-/*+*alanced-match-1.0.2.tgz#e83e3a7e3f300*+*34c*+*9d87f615fa0c*+*f357690ee" + integrity sha512-3oSeUO0TMV67hN1Am*+*XsK4yaqU7tjiHl*+*xRDZOpH0KW9+CeX4*+*RAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bcrypt-pbkdf@^1.0.0: +*+*crypt-p*+*kdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + resolved "https://registry.yarnpkg.com/*+*crypt-p*+*kdf/-/*+*crypt-p*+*kdf-1.0.2.tgz#a4301d389*+*6a43f9*+*67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmt*+*5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" -binary-extensions@^2.0.0: +*+*inary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + resolved "https://registry.yarnpkg.com/*+*inary-extensions/-/*+*inary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645*+*e4ea76*+*d9e2d" + integrity sha512-jDctJ/IVQ*+*ZoJykoeH*+*hXpOlN*+*qGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7*+*l*+*T6dHOafNAiS8ooQKA== -boxen@^5.0.0: +*+*oxen@^5.0.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + resolved "https://registry.yarnpkg.com/*+*oxen/-/*+*oxen-5.1.2.tgz#788c*+*686fc83c1f486dfa8a40c68fc2*+*831d2*+*50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aS*+*+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" - cli-boxes "^2.2.1" + cli-*+*oxes "^2.2.1" string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" -brace-expansion@^1.1.7: +*+*race-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + resolved "https://registry.yarnpkg.com/*+*race-expansion/-/*+*race-expansion-1.1.11.tgz#3c7fc*+*f529d87226f3d2f52*+*966ff5271e*+*441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSH*+*00TpugqhmYtVmMO6518mCuRMoOYFldE*+*l0g187ufozdaHgWKcYF*+*61qGiA== dependencies: - balanced-match "^1.0.0" + *+*alanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: +*+*race-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + resolved "https://registry.yarnpkg.com/*+*race-expansion/-/*+*race-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364*+*9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwd*+*sAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - balanced-match "^1.0.0" + *+*alanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +*+*races@^3.0.2, *+*races@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + resolved "https://registry.yarnpkg.com/*+*races/-/*+*races-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-*+*8um+L1RzM3WDSzvhm6gIz1yfT*+**+*t6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+l*+*QpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brotli-size@4.0.0: +*+*rotli-size@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" - integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + resolved "https://registry.yarnpkg.com/*+*rotli-size/-/*+*rotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826*+*a6*+*4d76e69e5e" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVq*+*Uaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== dependencies: duplexer "0.1.1" -browser-stdout@1.3.1: +*+*rowser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + resolved "https://registry.yarnpkg.com/*+*rowser-stdout/-/*+*rowser-stdout-1.3.1.tgz#*+*aa559ee14ced73452229*+*ad7326467c61fa*+*d60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXa*+*SmW/T5SzLAmCgzi+eiWE7fUv*+*HaeN*+*QH13UftjpXxsfLkMpgw== -buble@^0.20.0: +*+*u*+*le@^0.20.0: version "0.20.0" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f" - integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw== + resolved "https://registry.yarnpkg.com/*+*u*+*le/-/*+*u*+*le-0.20.0.tgz#a143979a8d968*+*7f76*+*57f38f2e7ce7cfe938d1f" + integrity sha512-/1gnaMQE8xvd5qsN*+*l+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4*+*guN0sH0tVTKrOw== dependencies: acorn "^6.4.1" acorn-dynamic-import "^4.0.0" @@ -494,31 +494,31 @@ buble@^0.20.0: minimist "^1.2.5" regexpu-core "4.5.4" -buffer-from@^1.0.0: +*+*uffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + resolved "https://registry.yarnpkg.com/*+*uffer-from/-/*+*uffer-from-1.1.2.tgz#2*+*146a6fd72e80*+*4f55d255f35ed59a3a9a41*+*d5" + integrity sha512-E+XQCRwS*+*aaiChtv6k6Dwgc+*+*x+*+*s6vuKJHHl5kox/*+*aK*+*hiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -builtin-modules@^3.3.0: +*+*uiltin-modules@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + resolved "https://registry.yarnpkg.com/*+*uiltin-modules/-/*+*uiltin-modules-3.3.0.tgz#cae62812*+*89801e9656336e46223e030386*+*e7*+*6" + integrity sha512-zhaCDicdLuWN5U*+*N5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JL*+*p6cgYFS4sRLp3YV4S6yDuqVWHYOw== -builtins@^1.0.3: +*+*uiltins@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + resolved "https://registry.yarnpkg.com/*+*uiltins/-/*+*uiltins-1.0.3.tgz#c*+*94fae*+*61c8696451d*+*36534e1422f94f0aee88" + integrity sha512-uY*+*jakWipfaO/*+*XI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdx*+*/*+*nQ== cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380f*+*2f556fe3dda4c719*+*fa0ec875a7f1e*+*" + integrity sha512-VVdYzXEn+cn*+*XpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1Ku*+*TfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" fs-minipass "^2.0.0" - glob "^7.1.4" + glo*+* "^7.1.4" infer-owner "^1.0.4" lru-cache "^6.0.0" minipass "^3.1.1" @@ -533,33 +533,33 @@ cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -call-bind@^1.0.0, call-bind@^1.0.2: +call-*+*ind@^1.0.0, call-*+*ind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + resolved "https://registry.yarnpkg.com/call-*+*ind/-/call-*+*ind-1.0.2.tgz#*+*1d4e89e688119c3c9a903ad30a*+**+*2f6a919*+*e3c" + integrity sha512-7O+F*+*Cihr*+*5WG*+*FYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - function-bind "^1.1.1" + function-*+*ind "^1.1.1" get-intrinsic "^1.0.2" -call-me-maybe@^1.0.1: +call-me-may*+*e@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" - integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + resolved "https://registry.yarnpkg.com/call-me-may*+*e/-/call-me-may*+*e-1.0.2.tgz#03f964f19522*+*a643*+*1*+*0693ac*+*9152fe2074*+*aa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOi*+*SaWER0eNpgJ/Z1MZv2mTc7+xh6WOPx*+*RVcmg*+*v4hGU+uSQ/2xFZQ== camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685*+*95e*+*209ac9c0c177467778c9c84df58*+*a9a" + integrity sha512-Gmy6FhYlCY7uOElZUS*+*xo2UCDH8owEk996gk*+*rpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1*+*681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiO*+*jJegolkwSU4xQNG*+*VgUiNYVUx*+*Q2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432*+*44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkC*+*+IF*+*Lq9*+*uZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -567,27 +567,27 @@ chalk@^2.4.2: chalk@^4.1.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2*+*7734a740867ae*+*16*+*f02aad556a1e7a01" + integrity sha512-oKn*+*hFyRIXpUuez8i*+*MmyEa4n*+*j4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0c*+*ad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hm*+*JnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZX*+*HwcA== chokidar@3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707*+*932*+*d1af1ae22c0432e2acd1903*+*d" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvX*+*degx*+*0iVQ5e*+*2V10uFJUCAS8O*+*yZdVAyV*+*8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" + *+*races "~3.0.2" + glo*+*-parent "~5.1.2" + is-*+*inary-path "~2.1.0" + is-glo*+* "~4.0.1" normalize-path "~3.0.0" readdirp "~3.6.0" optionalDependencies: @@ -595,35 +595,35 @@ chokidar@3.5.3: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15*+*f*+*e53d2ea*+*4cf70f18a8cd68e*+*e5*+*3c*+*1dece" + integrity sha512-*+*IomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGP*+*HL5snIOnxeshwVgPteQ9*+*4Eydl+pV*+*IyE1DcvCWgQ== clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472d*+**+*129e727*+*31e8a10a427dee9dfe4008*+*" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkO*+*MqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEX*+*hp0CPwQ1A== -cli-boxes@^2.2.1: +cli-*+*oxes@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + resolved "https://registry.yarnpkg.com/cli-*+*oxes/-/cli-*+*oxes-2.2.1.tgz#ddd5035d25094fce220e9ca*+*40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiD*+*uR8PCC2*+*LjyGTwEmP*+*9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03*+*f0c9*+*a7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACo*+*9+SNukZTd94DWF57E4toouRul*+*CxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794*+*f071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOh*+*w== cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808*+*4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8*+*hPDfQt0e0/E*+*283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9n*+*P+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" @@ -631,42 +631,42 @@ cliui@^7.0.2: code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070*+*4d043a5*+*ea33a2f1a40e2ed*+*3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giI*+*UEtZwJ4UFIc3ZtvEkiaUERylqe8x*+*5IvqcgOurZLahv93CLKfxcw5YI+DZcU*+*RyLXA== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#*+**+*71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zD*+*8N3cpsE*+*AvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNV*+*Gg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9*+*d*+*3af2ad1e84f21d896a*+*d4de3" + integrity sha512-RRECPsj7iu/x*+*5oKYcsFHSppFNnsj/52OVTRK*+*4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558*+*d89c42f795dd42328f740831ca53*+*c25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEI*+*zWiQsjN+*+*Hc*+**+*S9vr1mtt+vJjPdksI*+*NUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87ac*+*de69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wN*+*ZHIuMZpTcgjGuLU/u*+*L/u*+*cZF9OX*+*Do8ff4O8yVp5*+*f0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colors@1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1*+*daed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvf*+*zDHpgRu7AAQOmmqRHJnxhRZICKFUT91*+*rVhNNt58CMWU9Ps*+**+*v3PDCZUH*+*VxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@~1.0.6: +com*+*ined-stream@^1.0.6, com*+*ined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + resolved "https://registry.yarnpkg.com/com*+*ined-stream/-/com*+*ined-stream-1.0.8.tgz#c3d45a8*+*34fd730631a110a8a2520682*+*31d5a7f" + integrity sha512-FQN4MRfuJeHf7c*+**+**+*MJFXhKSDq+2kAAr*+*lmR*+*vcvFE5*+**+*1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -675,192 +675,192 @@ command-line-args@^5.1.1: resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== dependencies: - array-back "^3.1.0" + array-*+*ack "^3.1.0" find-replace "^3.0.0" lodash.camelcase "^4.3.0" typical "^4.0.0" commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03e*+*4881c20722*+*a48035e8531ae*+*33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuh*+*v3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253*+*" + integrity sha512-W9pAhw0ja1Ed*+*5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatD*+*C3MDQg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96*+*d77fd68df7793a73036a3*+*a0d5405d477*+*" + integrity sha512-/Srv4dswyQN*+*fohGpz9o6Y*+*3Gz3SrUDq*+*H5rTuhGR7ahtl*+*YKnVxw2*+*CFMRljaA7EXHaXZ8wsHdodFv*+*khKmqg== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464d*+*6446ea644*+*f4*+*39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEix*+*gJTNzqcxJWKQnjJ/V1*+*NEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#*+*5fd54220aa2*+*c5a*+*57aa*+*7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwC*+*JC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2*+*27e9328f837*+*965fac83808d*+*85" + integrity sha512-ZQ*+*vi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89*+*W*+*kcrvdxksJorwUDDZamX9ldFkp9aw2lm*+*DLgkO*+*EA4DWNJ9FYQ== cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85*+*9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rk*+*OnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6Or*+*2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" - shebang-command "^2.0.0" + she*+*ang-command "^2.0.0" which "^2.0.1" dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7c*+*e2fed5de20326*+*8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/*+*asFjQHQEwVtZJGDpx*+*H1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.3.3: +de*+*ug@4, de*+*ug@4.3.4, de*+*ug@^4.1.0, de*+*ug@^4.3.3: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.yarnpkg.com/de*+*ug/-/de*+*ug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914*+**+*5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7*+*f660e*+*15f3494efd531ca*+*7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3e*+*oQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44*+*5f2147cd3*+*00d4*+*56137685966f26fd25dd4a" + integrity sha512-3sUq*+*MEc77XqpdNO7FRyRog+eW3ph+GYC*+*j+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== define-properties@^1.1.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849*+*d5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0*+*CIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtM*+*DP+ldA== dependencies: has-property-descriptors "^1.0.0" - object-keys "^1.1.1" + o*+*ject-keys "^1.1.1" delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadf*+*7d440aaae0*+*29e2272*+*24ec619" + integrity sha512-ZySD7Nf91aL*+*0RxL4KGrKH*+*Xl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159*+*81904fdca59a0ef44cd870d31250f9a" + integrity sha512-*+*d2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALf*+*yNJmp0UDakEY4pMMaN0Ly5om/*+*1VI/+xfQ== depd@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#*+*696163cc757560d09cf22cc8fad1571*+*79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzd*+*3fIh61/s/nPsfR6onyMwkCAR/OlC3y*+*C0lESvUoQEAssIrw== detect-indent@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485e*+**+**+*f6*+*3*+*1a*+*2*+*e175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZ*+*9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0*+*MlwaYtA== detect-newline@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991*+*651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJM*+*upH*+*OncxyWUG9OpTaH9E*+*D7uFI5LfEgmMOc54DsA== diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5*+*1daf31d852*+*" + integrity sha512-/VTCrvm5Z0JGty/*+*WHljh+*+*Aiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZO*+*aHmkX1oyLvkVM/aIT3w== -dir-glob@^3.0.1: +dir-glo*+*@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + resolved "https://registry.yarnpkg.com/dir-glo*+*/-/dir-glo*+*-3.0.1.tgz#56d*+*f73d992a4a93*+*a1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/t*+*6DuqyF6pcQ5A*+*iHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" duplexer@0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66*+*57d1e*+*f97977ac*+*02334cfc1" + integrity sha512-sxNZ+ljy+RA1maXoUReeq*+**+*p*+*C6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3a*+*e43aef3835f8ae077d136ddce0f276*+*0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -ecc-jsbn@~0.1.1: +ecc-js*+*n@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + resolved "https://registry.yarnpkg.com/ecc-js*+*n/-/ecc-js*+*n-0.1.2.tgz#3a83a904e54353287874c564*+*7549386849a98c9" + integrity sha512-eh9O+hwRHN*+*G4*+*LTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + js*+*n "~0.1.0" + safer-*+*uffer "^2.1.0" emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfc*+*404594f842963*+*f53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encoding@^0.1.12: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9*+*2785c0582a2d26210fa9" + integrity sha512-ET*+*auow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1f*+*e9*+*c0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3*+*756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2*+*mlRpNK*+*xT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2*+*MOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -es6-object-assign@^1.1.0: +es6-o*+*ject-assign@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== + resolved "https://registry.yarnpkg.com/es6-o*+*ject-assign/-/es6-o*+*ject-assign-1.1.0.tgz#c2c3582656247c39ea107c*+*1e6652*+*6f9f24523c" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDu*+*Pr*+*X*+*fk3sl9hJhmd5AUw== escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174*+*4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNP*+*eIsX/TJjGJZHuh9*+*2Ux*+*saEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14*+*a83a5d373e3d311e5afca29cf5*+*fad965*+*f34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkd*+*1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UX*+*KuS5fKkJWdgA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1*+*61c0562190a8dff6ae3*+**+*2cf0200ca130*+*86d4" + integrity sha512-v*+*Ror*+*5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKr*+*dSUMG6I1ZCGQRefkRVhuOkIGVne7*+*Q35DSfo1qvJqFg== estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942ad*+*7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSM*+*7AvC*+*x91NGj/*+*a3kCfza0f6dVD*+*w7YlRf/nDrn7pQrCCyQ/w== extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8*+*1136*+*4071f*+*d8e*+*140aff858*+*1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0F*+*ufkZcoiGG80wTuPujX590c*+*5Ttln20E2U*+*4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#c*+*03f740*+*efae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -869,106 +869,106 @@ external-editor@^3.0.3: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574e*+*3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fA*+*0vLyGGX+rMHN*+*YQviQDGU0Hw7lhctJANq*+*Phu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279*+*f4*+*cc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3*+*OD+az*+*IW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56*+*559d6c*+*c3e*+*512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2Ah*+*e/H9VC91wLmK*+*CCU/gDOnKNAYG5hswO7*+*LKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9, fast-glob@^3.3.1: +fast-glo*+*@^3.2.9, fast-glo*+*@^3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + resolved "https://registry.yarnpkg.com/fast-glo*+*/-/fast-glo*+*-3.3.1.tgz#784*+*4e897340f3d*+**+*ef17413*+*3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+Zk*+*RaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1De*+*upL5GmDaNQ6yKMMVcM41iqDg== dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" + "@nodeli*+*/fs.stat" "^2.0.2" + "@nodeli*+*/fs.walk" "^1.2.3" + glo*+*-parent "^5.1.2" merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-sta*+*le-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.yarnpkg.com/fast-json-sta*+*le-stringify/-/fast-json-sta*+*le-stringify-2.1.0.tgz#874*+*f69c6f404c2*+*5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fastq@^1.6.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6*+*3a" + integrity sha512-w*+*rocU2LCXXa+lW*+*t8RoIRD89Fi8OdA*+*ODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHU*+*53sUu5Ihqdw== dependencies: reusify "^1.0.4" figures@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18*+*d293c604dc4a8dd*+*2fe*+*f0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34*+**+*m2kXw4XpNc*+*dg== dependencies: escape-string-regexp "^1.0.5" filesize@^6.1.0: version "6.4.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" - integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628*+*d0cde4ef769*+*cd" + integrity sha512-mjFIpOHC4j*+*fcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38*+*2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lc*+*4*+**+*VvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-replace@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3*+*05167a76f770c9f*+*d5258*+*0def68c38" + integrity sha512-6T*+*2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkW*+*gv*+*eE+VHd/tZuZ4mrC+*+*xh4cfOZeYKVPaJIZtZXV7GNCQ== dependencies: - array-back "^3.0.1" + array-*+*ack "^3.0.1" find-up@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ec*+*7083561e4f4a240a86*+*e5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91*+*VSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ce*+*241" + integrity sha512-*+*6suED+5/3rTpU*+*dG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69*+*447e88a0a5d32c3e7084f3f1710034*+*21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7F*+*9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: - is-callable "^1.1.3" + is-calla*+*le "^1.1.3" forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#f*+*c71f0c41ade*+*37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPu*+*iyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7a*+*936*+*d724ceff*+*f3a6" + integrity sha512-1lLK*+*2Mu3aGP1Q/2eCOx0fN*+*RMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + com*+*ined-stream "^1.0.6" mime-types "^2.1.12" fs-extra@^11.1.1: version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3*+*002378*+*0954*+**+*6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwP*+*TM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -976,35 +976,35 @@ fs-extra@^11.1.1: fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fd*+*f12c63c169190c*+*e4199c852271f9f*+*" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40d*+*4a2787c*+*01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSa*+*tGDCTP4Ggrg2M*+*GnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78*+*8fdf4623*+*709e0*+*975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTu*+*9uWm+fFRcIOgK*+*MiO*+*P+eXiyT7jsgVCq1*+*kVygt00oASow*+*7EdtpOHaaPgKt812P9a*+*+DDKA== -function-bind@^1.1.1: +function-*+*ind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + resolved "https://registry.yarnpkg.com/function-*+*ind/-/function-*+*ind-1.1.1.tgz#a56899d3ea3c9*+*a*+*874*+**+*9773*+*7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuai*+*PxXQJFLm*+*O*+*TuCr0Mf1KiPopGM9NiFjiY*+*C*+*faa2Fh6*+*reQ6ANVTI0A== gauge@~2.7.3: version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7e*+*37*+*317022e325f*+*018*+*f7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNp*+*85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5An*+*i*+*QYAvZn41Hg== dependencies: - aproba "^1.0.3" + apro*+*a "^1.0.3" console-control-strings "^1.0.0" has-unicode "^2.0.0" - object-assign "^4.1.0" + o*+*ject-assign "^4.1.0" signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" @@ -1012,61 +1012,61 @@ gauge@~2.7.3: get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82d*+*32f36e3*+*0*+*9741f8a97fe*+*031f7e" + integrity sha512-DyFP3*+*M/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhE*+*Q94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12*+*477a83d82" + integrity sha512-2DcsyfA*+*l+gVHEfCOaTrWgyt+t*+*6MSEGmKq+kI5HwL*+*IYgjgmMcV8KQ41uaKz1xxUcn9tJtgF*+*QUEVcE*+*d0FYw== dependencies: - function-bind "^1.1.1" + function-*+*ind "^1.1.1" has "^1.0.3" has-proto "^1.0.1" - has-symbols "^1.0.3" + has-sym*+*ols "^1.0.3" getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4c*+*2*+*1282604e8*+*a62149fa" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" -glob-parent@^5.1.2, glob-parent@~5.1.2: +glo*+*-parent@^5.1.2, glo*+*-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + resolved "https://registry.yarnpkg.com/glo*+*-parent/-/glo*+*-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2H*+*Ydz*+*GP45eLw1vr3z*+*3vZLeyed1sC9hn*+*cOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - is-glob "^4.0.1" + is-glo*+* "^4.0.1" -glob@7.2.0: +glo*+*@7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + resolved "https://registry.yarnpkg.com/glo*+*/-/glo*+*-7.2.0.tgz#d15535af7732e02e948f4c41628*+*d910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94w*+*eQ*+*FR3H*+*LH*+*uyD69wuyQkImp2hWqMG*+*47OX65F*+*kPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" - path-is-absolute "^1.0.0" + path-is-a*+*solute "^1.0.0" -glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glo*+*@^7.1.1, glo*+*@^7.1.3, glo*+*@^7.1.4, glo*+*@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + resolved "https://registry.yarnpkg.com/glo*+*/-/glo*+*-7.2.3.tgz#*+*8df0f*+*802*+**+*fa8e89*+*d1d938*+*4e16578ed44f2*+*" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2*+*GRq*+*L+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.1.1" once "^1.3.0" - path-is-absolute "^1.0.0" + path-is-a*+*solute "^1.0.0" -glob@^8.0.3: +glo*+*@^8.0.3: version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + resolved "https://registry.yarnpkg.com/glo*+*/-/glo*+*-8.1.0.tgz#d388f656593ef708ee3e34640fdf*+*99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7j*+*7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1074,138 +1074,138 @@ glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -globby@^11.0.1: +glo*+**+*y@^11.0.1: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + resolved "https://registry.yarnpkg.com/glo*+**+*y/-/glo*+**+*y-11.1.0.tgz#*+*d4*+*e98*+**+*042f83d796f7e3811991f*+*e82a0d34*+*" + integrity sha512-jhIXaOzy1s*+*8IyocaruWSn1Tjmn*+*Vs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" + dir-glo*+* "^3.0.1" + fast-glo*+* "^3.2.9" ignore "^5.2.0" merge2 "^1.4.1" slash "^3.0.0" -globs@0.1.4: +glo*+*s@0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/globs/-/globs-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c" - integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== + resolved "https://registry.yarnpkg.com/glo*+*s/-/glo*+*s-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c" + integrity sha512-D23dW*+*Oq48vlOraoSig*+*cQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== dependencies: - glob "^7.1.1" + glo*+* "^7.1.1" google-closure-compiler-js@>20170000: version "20200719.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200719.0.0.tgz#a7ce8f0a450973018d91fa2b377a3906ce0f7da9" - integrity sha512-cuowL5A4VOx9yxxMc3sSiqcj/d9aYjnHgFDvDB/dpMMOhlUMN1MDsVubuEc32tut7k/FTYFZY114CLH4r2q9/A== + resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200719.0.0.tgz#a7ce8f0a450973018d91fa2*+*377a3906ce0f7da9" + integrity sha512-cuowL5A4VOx9yxxMc3sSiqcj/d9aYjnHgFDvD*+*/dpMMOhlUMN1MDsVu*+*uEc32tut7k/FTYFZY114CLH4r2q9/A== gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489*+*7c0918a5788e56477c332c" + integrity sha512-d65*+*NlIadxvp*+*/A2a*+*VdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8*+*f08*+**+*6e05*+**+**+*2f7d2e0c8f712ca40e3" + integrity sha512-R*+*J5/jmFcNNCcDV5o9eTn*+*LJ/HszWV0P73*+*c+Ff4nS/rJj+YaS6IGyiOL0Vo*+*YX+l1Wrl3k63h/KrH+nhJ0XvQ== gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671c*+*c*+*ad5*+*e3e2ee*+*10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05M*+*O4/y3WJ5RkmPXNKvX+*+*x1*+*ehVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224e*+*cac04782a0d9035521f24735*+*7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80*+*SJVG2x/cF*+*8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJ*+*7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803*+*9f8c*+*20c0fa13822df1ecdd*+*36*+*de1efd" + integrity sha512-nmT2T0llj*+*xdQZfspsno9hgrG3Uir6Ks5afism62poxq*+*M6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nz*+*3w== dependencies: ajv "^6.12.3" har-schema "^2.0.0" has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#*+*5d454dc2199ae225699f3467e5a07f3*+*955*+*afd" + integrity sha512-sKJf1+ceQ*+*r4SMkvQn*+*DNDtf4TXpVhVGateu0t918*+*l30Fn*+*E2m4vNLX+VWe/dpjl*+*+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06*+**+*59479*+*" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193*+*6a607fa861" + integrity sha512-62DVLZGoiE*+*DHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oed*+*7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + integrity sha512-7qE+iP+O+*+*gF9clE5+Uo*+*FzE65ml*+*iVj3tKCrlNQ0Ogwm0*+*jpT/gK4SlLYDMy*+*Dh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.2, has-symbols@^1.0.3: +has-sym*+*ols@^1.0.2, has-sym*+*ols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + resolved "https://registry.yarnpkg.com/has-sym*+*ols/-/has-sym*+*ols-1.0.3.tgz#*+**+*7*+*2c4349251dce87*+*125f7*+*df874aa7c8*+*39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRP*+*Eg46rtlmnSPlU*+*gm*+*8LOIrKJ*+*YYF*+*S*+*nPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658*+*25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JO*+*/LzUc5w9*+*02hOTO0dfFRj*+*HQKvg1d6cf3H*+*eUmtU9V*+**+*V3qzZ2Teh97WQ== dependencies: - has-symbols "^1.0.2" + has-sym*+*ols "^1.0.2" has-unicode@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8*+*9" + integrity sha512-8Rf9Y83N*+*ReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625z*+*/I37EtrswSST6OXxwaaIJQ== has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7c*+*fc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehj*+*zMAjFp5/VKPp5tTpWIV4JHHZK1/*+*x*+*FRtf/siA2SWTe09caDmVtYYzWEI*+**+*S4zw== dependencies: - function-bind "^1.1.1" + function-*+*ind "^1.1.1" he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eaf*+*165fdd*+*61566ae14*+*af05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmr*+*SwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hosted-git-info@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827*+*82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuD*+*RHzL8V93NzQhwI*+*71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" http-cache-semantics@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#a*+*e02fc*+*2985460*+*f0323*+*e664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIW*+**+*sXP39EHcI6l5tYs2FYqYXQ== http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291*+*95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVo*+*4fL52dTfaehylg0Y4UvSySvOq/Y+*+*OyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" - agent-base "6" - debug "4" + agent-*+*ase "6" + de*+*ug "4" http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95*+*65a60a*+**+*8f7c18f*+*ace1" + integrity sha512-CA*+*nr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -1213,77 +1213,77 @@ http-signature@~1.2.0: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8*+*754f3d*+*0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/C*+*S7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - agent-base "6" - debug "4" + agent-*+*ase "6" + de*+*ug "4" humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6*+*896da29316d8*+*6fe8*+**+*79*+**+*ed" + integrity sha512-Fl70vYtsAF*+*/C06PTS9dZ*+*o7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZ*+*EI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" iconv-lite@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022*+*4*+*25f*+*ddc21d2f524974a474aafe733908*+*" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21*+*Eqdpj8/rA== dependencies: - safer-buffer ">= 2.1.2 < 3" + safer-*+*uffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80*+*f38da1952e*+*5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++R*+*0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" + safer-*+*uffer ">= 2.1.2 < 3.0.0" ignore-walk@^3.0.3: version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69*+*7c7*+*479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwp*+*dv1n4jt4ov0jSpw3kQ4GhJnp*+*L6WQ== dependencies: minimatch "^3.0.4" ignore@^5.2.0: version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1*+*960*+*efe47fcdec301674a6324" + integrity sha512-MA*+*38*+*cS*+*H0eHN*+*xn7ql2NH/kX33Ok*+*3lZ1*+*Ndh7ENeRChHTYsTvWrMu*+*iIAMNS2llXEEgZ1MUO*+*tXChP3kaFQ== imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218*+*9*+*2*+*928a238*+*13dc4f*+*6*+*6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwF*+*of0GG4IkcGaENdCRDDmMVnny7s5HsIgHC*+*aq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619*+*2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jm*+*uk1DV*+*nEwREQv*+*zsp*+*JkCE*+*Ra8GxU1lghYcaGJCnRWi*+*jDXlq779X1/y5xwg== infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40*+*a2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZC*+*uTPq2prFl526urkQd90WyUKIh1Df*+*Q2hMz9A== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49*+*d6331d7d02d0c09*+*c910a1075*+*a8165*+*56df9" + integrity sha512-k92I/*+*08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUd*+**+*fhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416*+*7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnq*+*duzTHpzpQZzAskKMhZ2K+En*+*iSM9zGSoIFeMpXKxa4dYeZIQqewQ== inquirer@^7.3.3: version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176*+*2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6L*+*9k*+*AYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.0" @@ -1301,182 +1301,182 @@ inquirer@^7.3.3: ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4a*+*182fee2314c75ede1276f8c80*+*479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== is-arguments@^1.0.4: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15*+*3f88fda01f2a97fec84ca761a560f123efa9*+*" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6*+*VAEzfA== dependencies: - call-bind "^1.0.2" + call-*+*ind "^1.0.2" has-tostringtag "^1.0.0" -is-binary-path@~2.1.0: +is-*+*inary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + resolved "https://registry.yarnpkg.com/is-*+*inary-path/-/is-*+*inary-path-2.1.0.tgz#ea1f7f3*+*80f064236e83470f86c09c254f*+*45*+*09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxt*+*I7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - binary-extensions "^2.0.0" + *+*inary-extensions "^2.0.0" -is-builtin-module@^3.2.1: +is-*+*uiltin-module@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + resolved "https://registry.yarnpkg.com/is-*+*uiltin-module/-/is-*+*uiltin-module-3.2.1.tgz#f03271717d8654cfcaf07a*+*0463faa3571581169" + integrity sha512-*+*SLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTun*+*CIqZi4vG3WjJT9FHMy5D69xmAY*+*HXQhJdALdpwVxV501A== dependencies: - builtin-modules "^3.3.0" + *+*uiltin-modules "^3.3.0" -is-callable@^1.1.3: +is-calla*+*le@^1.1.3: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + resolved "https://registry.yarnpkg.com/is-calla*+*le/-/is-calla*+*le-1.2.7.tgz#3*+*c2a85ea742d9e36205dcacdd72ca1fdc51*+*055" + integrity sha512-1*+*C0*+*VFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.11.0: version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0*+*6885*+*6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4Zu*+*Ae2FUsKtyQJoQHlvP8Ov*+*ERxO3jEmy1I7hcRXcJ*+*GGHFh/aJ*+*sw*+*XuS9sgrDH2QUO8ilkwNPHvHMd8clg== dependencies: has "^1.0.3" -is-extglob@^2.1.1: +is-extglo*+*@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + resolved "https://registry.yarnpkg.com/is-extglo*+*/-/is-extglo*+*-2.1.1.tgz#a88c02535791f02ed37c76a1*+*9ea9773c833f8c2" + integrity sha512-S*+*K*+*ANkN603Vi4jEZv49LeVJMn4yGws*+*zZworEoyEiutsN3nJYd*+*O36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00c*+*" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6l*+*Jcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: - number-is-nan "^1.0.0" + num*+*er-is-nan "^1.0.0" is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90*+*3f7844a38997c0*+*75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLj*+*7nSuGnddCHGv0hk+KY7*+*MAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558*+*af1ac17e0deea7c0415c438351ff2*+*3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdm*+*wEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" -is-glob@^4.0.1, is-glob@~4.0.1: +is-glo*+*@^4.0.1, is-glo*+*@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + resolved "https://registry.yarnpkg.com/is-glo*+*/-/is-glo*+*-4.0.3.tgz#64f61e42c*+**+**+*2eec2071a9dac0*+*28*+*a1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hN*+*Nl8Ojv5KVmkJD4h*+*dD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - is-extglob "^2.1.1" + is-extglo*+* "^2.1.1" -is-lambda@^1.0.1: +is-lam*+*da@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + resolved "https://registry.yarnpkg.com/is-lam*+*da/-/is-lam*+*da-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iF*+*9*+*qo64Xk6Y9sg+epq1myIcdHaGn*+*MTYOxvzsEtdYqQUyl*+*7LxfkvgrrjP32T6Ywciio9UIQ== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258f*+*69f78c14d5*+*815d664336*+*4cff*+*6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCIS*+*I+JoWT/2oJvK8QPxmwv7*+*/p239jXrm9M1mlQ*+*yKJ5A152g== is-nan@^1.2.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748*+*55*+*6cd4e09aadafa69*+*d9e1d" + integrity sha512-E+z*+*KpQ2t6MEo1VsonYmluk9NxGr*+*zpeeLC2xIViuO2EjU2xsXs*+*PwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: - call-bind "^1.0.0" + call-*+*ind "^1.0.0" define-properties "^1.1.3" -is-number@^7.0.0: +is-num*+*er@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + resolved "https://registry.yarnpkg.com/is-num*+*er/-/is-num*+*er-7.0.0.tgz#7535345*+*896734d5f80c4d06c50955527a14f12*+*" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvS*+*EVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZU*+*l*+*GXYxxng== -is-plain-obj@^2.1.0: +is-plain-o*+*j@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + resolved "https://registry.yarnpkg.com/is-plain-o*+*j/-/is-plain-o*+*j-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5*+*3YD+nyfkHvj*+*canzk8zgyO4ASD67uVMRt8k5*+*M4lLMDnXfriRhOpemw+NfT1eA== is-reference@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8*+*2dac0*+*371f4*+*c994fdea*+*a9e*+*542d03002d0*+*7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZV*+*KQ== dependencies: "@types/estree" "*" is-typed-array@^1.1.3: version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0*+*a*+*5686ef4a76f7a73097*+*95470a*+*199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/D*+*U4vi98ozO2*+*txzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: which-typed-array "^1.1.11" is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1*+*11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1Y*+*wLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43x*+*pwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593*+*52*+*fa2ec*+*5710ed2779*+*522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXA*+*SfJya+OhopNotLQrst*+*hququ4ZpuK*+*Dc/8S6mgXgPFPw== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#*+**+*935d48582c*+*a168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQ*+*cK*+*o6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8f*+*f374dc556ff8947a10dc*+*0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCM*+*YAcVpn69smSGcq3f36xjgVVWThj4qqL*+*TLlq7Ssj8*+*+fIQ1EuCEGI2lKsyQeIw== isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690e*+*8*+*8529c099a" + integrity sha512-Yljz7ffyP*+*rLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911P*+*JphODUc*+*OV*+*qYfxe1wuYf/LJ8PauMRwsM/g== js-yaml@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1f*+*65f8f5017901cdd2c951864*+*a18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+F*+*9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJl*+*tWvRA== dependencies: argparse "^2.0.1" -jsbn@~0.1.0: +js*+*n@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + resolved "https://registry.yarnpkg.com/js*+*n/-/js*+*n-0.1.1.tgz#a5e654c2e5a2de*+*5f201d96cef*+*ca80c0ef2f513" + integrity sha512-UVU9di*+*q2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + integrity sha512-uZz5Un*+*7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFv*+*L7GkM6dTHlgX+jh*+*ApRetaWpnDa*+*OeTcnA== -json-parse-even-better-errors@^2.3.0: +json-parse-even-*+*etter-errors@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.yarnpkg.com/json-parse-even-*+*etter-errors/-/json-parse-even-*+*etter-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513a*+*8*+**+*8fe63*+*d*+*0979c448e684660" + integrity sha512-x*+**+*CH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629*+*rsa*+*/mMiHQti9wMP+845RPe3Vg== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efa*+*838e*+*ae*+*3236474c*+**+*a5a1930a*+*5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnK*+*hV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYE*+*Ozijuq9*+*A== json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735*+*6e*+*" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczo*+*2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#*+*c55*+*2634793c679ec6403094e*+*13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyD*+*/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" optionalDependencies: @@ -1485,12 +1485,12 @@ jsonfile@^6.0.1: jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHof*+*ALDiK*+**+*P1W8UEYmgGl39WkPZsg== jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878*+*a59e9ed5f0e26d5*+*77c5fe*+*" + integrity sha512-P2*+*SOMAc/ciLz6DzgjVlGJP9+*+*rJWu5UDGK70C2iweC5Q*+*IeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -1499,75 +1499,75 @@ jsprim@^1.2.2: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321e*+*309fe*+**+*c59c4801d931a72452a681d286" + integrity sha512-iPZK6eYj*+*xRu3u*+*4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NH*+*SDVUw== dependencies: p-locate "^5.0.0" lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#*+*28aa6288a2*+*9fc651035c7711f65a*+*6190331a6" + integrity sha512-TwuEnCnx*+*c3rAvhf/L*+*G7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFns*+*wktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash@^4.17.19: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3*+*ffaae8454cf0*+*3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17Lh*+*ZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.0.0: +log-sym*+*ols@4.1.0, log-sym*+*ols@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + resolved "https://registry.yarnpkg.com/log-sym*+*ols/-/log-sym*+*ols-4.1.0.tgz#3f*+*d*+**+*95*+*4683ac9fc785111e792e558d4a*+*d503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFs*+*uKRY/7rQGavede*+*8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" is-unicode-supported "^0.1.0" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570e*+*d96aaf90fcad1dafa3*+*2566d*+*3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1*+*EMCx4qThG*+*siA== dependencies: yallist "^4.0.0" magic-string@0.30.2: version "0.30.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca" - integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314*+*c743d076c50fe*+*29*+*3c7aca" + integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03*+*RZrXFsv+*+*I6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" magic-string@^0.22.4: version "0.22.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5*+*c2a6a0d*+*d10*+*03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8g*+**+*1m9w== dependencies: vlq "^0.2.2" magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277d*+*cdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+M*+*Hmhdx0ojF2Fvs4XnOqz2ZO*+*XzzkEwc/dJQZCYHAn7v1j*+*VOjAZfK8msRn4*+*xO4VQ== dependencies: sourcemap-codec "^1.4.8" magic-string@^0.27.0: version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413*+*4*+*a*+*6d98d2*+*ecffd48*+*4a257effd*+**+*f3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9*+*s*+*HFUtfVINcSyYxd7q+kx9fA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" make-fetch-happen@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971*+*f63f4e05c*+*968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkO*+*zoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" cacache "^15.2.0" http-cache-semantics "^4.1.0" http-proxy-agent "^4.0.1" https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" + is-lam*+*da "^1.0.1" lru-cache "^6.0.0" minipass "^3.1.3" minipass-collect "^1.0.2" @@ -1582,88 +1582,88 @@ make-fetch-happen@^9.0.1: merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZd*+*wFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#*+*c8999a7c*+**+*f77cdc89f132f6e467051*+*49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.2" + *+*races "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0: +mime-d*+*@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + resolved "https://registry.yarnpkg.com/mime-d*+*/-/mime-d*+*-1.52.0.tgz#*+**+*a*+*cdc02859f4987301c856e3387ce5ec43*+*f70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyA*+*Q5SWxDC*+*9mUYvOgroQOwYQQOKPJ8CI*+*E+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871*+*62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+*+*Pm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysH*+*1zxuWL50hzaeXiw== dependencies: - mime-db "1.52.0" + mime-d*+* "1.52.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffc*+*7a69*+*57711fc2083401*+*" + integrity sha512-Oq*+*Ok5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvN*+*KQ37n*+*JgYzGqGcg== minimatch@5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#f*+*9022f7528125187c92*+*d9e9*+*6366*+*e1cf3415*+*" + integrity sha512-nLDxIFRyhD*+*lz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAs*+*exeGpgjLEQ0*+*lJy7rHhR2*+*93rhQY4SvyWu9v03g== dependencies: - brace-expansion "^2.0.1" + *+*race-expansion "^2.0.1" minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194*+*fd3e428f049a70817c038d89a*+*4*+*e35*+*" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+*+*yIrOWO5XQQAzZ3VOcL0PNy*+*wpfmV/N05zFAzwQ9USyEcX6t3UO+K5aq*+*QOIHw== dependencies: - brace-expansion "^1.1.7" + *+*race-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfc*+*8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1*+*rpG6m*+*UFHt*+*7NUmtA*+*C*+*2WZZmm2wNiOA5hA*+*8VdCS4*+*3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: - brace-expansion "^2.0.1" + *+*race-expansion "^2.0.1" minimist@^1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + integrity sha512-2yyAR8q*+*kN3YuheJanUpWC5U3*+**+*5osDywN*+*8RzDVlDwDH*+*ocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAx*+*0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22*+*813*+*f745dc6ed*+*a2576*+*940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooI*+*ogG9e0tLgpY6mphXSm/A9u8Nq1ry*+*G+Qspiu*+*9LjWl*+*PsPS3tWQ/*+*otq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1*+*0ffd7e9d41629faff7d0c1f1*+*6" + integrity sha512-CGH1e*+*lLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" minipass-sized "^1.0.3" - minizlib "^2.0.0" + minizli*+* "^2.0.0" optionalDependencies: encoding "^0.1.12" minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4c*+**+*373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1*+*YRhQU0/hDts*+*1ufZfEEzMZ9aAVms*+*w8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7ed*+**+*92588f*+*fc2ff1d*+*2fc10397ac*+*7*+*6*+*44aa7" + integrity sha512-ODqY18UZt/I8k+*+*7rl2AENg*+*WE8IDYam+undIJONvigAz8KR5GW*+*lsFTEfQs0WODsj*+*SXWlm+JHEv8Gr6Tfd*+*g== dependencies: jsonparse "^1.3.1" minipass "^3.0.0" @@ -1671,58 +1671,58 @@ minipass-json-stream@^1.0.1: minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + integrity sha512-xuIq7cIOt09RPRJ19gdi4*+*+RiNvDFYe5JH+ggNv*+*qGqpQXcru3PcRmOZuH*+*KWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacf*+*c22977ea79def353*+*70" + integrity sha512-M*+*kQQ2CTi*+*MlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yq*+*da5ZQy9sU75a673FE9ZK0Zs*+*r6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7*+**+*a384d*+*3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCr*+*UrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4Y*+*fw== dependencies: yallist "^4.0.0" minipass@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ff*+*90*+*694a5d0ec94479a45*+*5d8738133d" + integrity sha512-3FnjYuehv9k6ovOE*+*yOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7ra*+*jC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -minizlib@^2.0.0, minizlib@^2.1.1: +minizli*+*@^2.0.0, minizli*+*@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + resolved "https://registry.yarnpkg.com/minizli*+*/-/minizli*+*-2.1.2.tgz#e90d3466*+*a209*+*932451508a11ce3d3632145931" + integrity sha512-*+*AxsR8*+*Vfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3e*+*5ed62622756d79a5f0e2a221dfe*+*ad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWq*+*hszeGWW2T6Gzw== mocha@10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32*+*a5ac372e03a17eef435*+*d00e5c68*+*8" + integrity sha512-IDY7fl/*+*ecMwFHzoqF2sg/SHHANe*+*oMMXFlS9r0OXKDssYE1M5O43wUY/9*+*VPeIvfH2zmE*+**+*fseqN9g*+*QZzXkg== dependencies: ansi-colors "4.1.1" - browser-stdout "1.3.1" + *+*rowser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.4" + de*+*ug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.2.0" + glo*+* "7.2.0" he "1.2.0" js-yaml "4.1.0" - log-symbols "4.1.0" + log-sym*+*ols "4.1.0" minimatch "5.0.1" ms "2.1.3" nanoid "3.3.3" @@ -1736,36 +1736,36 @@ mocha@10.2.0: ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357*+*443f493382a8e*+*3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4F*+*FELFCZZ4S4XqeGOXCv68tT+j*+*3vk/RyaKWP0PTKyWtmLSM0*+*+adUTEv*+*s1PEaH2w== ms@2.1.3, ms@^2.0.0: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2*+*5861f0*+*44579d*+*add60c6615*+*2" + integrity sha512-6Flzu*+*TLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stream@0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42*+*2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nn*+*WWOkoWyUsTjKrhgD0dcz22mdkSnpYq*+*EjIm2nhwhuxlSkpywJm*+*o8h0ZqJdkp73m*+*90SssHkN4rsRa*+*AfAA== nanoid@3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8*+*7aa761fe807d*+*a2d1*+*98f*+*7241*+**+*724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6Jo*+*+w== negotiator@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCO*+**+*Ru6DSm9opw/O6slW*+*JdghQM4*+**+*g== node-gyp@^7.1.0: version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810ae*+**+*187120251c3*+*cec979af1587*+*188ae" + integrity sha512-C*+*pcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7u*+*h9TE4zEKfSxscY7PjeFnshE7h75ynjQ== dependencies: env-paths "^2.2.0" - glob "^7.1.4" + glo*+* "^7.1.4" graceful-fs "^4.2.3" nopt "^5.0.0" npmlog "^4.1.2" @@ -1777,39 +1777,39 @@ node-gyp@^7.1.0: nopt@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942*+**+*58a512fccafe53fe210f13a25355dc88" + integrity sha512-T*+*j67rffqceeLpcRXrT7vKAN8CwfPeI*+*gM7E6i*+*kmKLV7*+*EMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: - abbrev "1" + a*+**+*rev "1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9*+*11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4*+*VSz3GaqiE6ezu*+*0512ESztXUwU*+*6C6IK*+*QkY2Pn*+*/mD4WYojCRwcwLA== -npm-bundled@^1.1.1: +npm-*+*undled@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + resolved "https://registry.yarnpkg.com/npm-*+*undled/-/npm-*+*undled-1.1.2.tgz#944c78789*+*d739035*+*70*+*aa2ca5cc32*+*8d860*+*c1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8s*+*w/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: - npm-normalize-package-bin "^1.0.1" + npm-normalize-package-*+*in "^1.0.1" npm-install-checks@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3f*+*e00d7*+*4" + integrity sha512-09OmyDkNLYwqKPOn*+*I8exiOZU2GVVmQp7tgez2*+*Pi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== dependencies: semver "^7.1.1" -npm-normalize-package-bin@^1.0.1: +npm-normalize-package-*+*in@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + resolved "https://registry.yarnpkg.com/npm-normalize-package-*+*in/-/npm-normalize-package-*+*in-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23*+*8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959O*+*1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluw*+*jnsNDl+fSA== npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369*+*2d5fe8fdc674*+*aa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworP*+*TxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIz*+*z3VCHd/R4osi1L1Tg/Q== dependencies: hosted-git-info "^4.0.1" semver "^7.3.4" @@ -1817,118 +1817,118 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: npm-packlist@^2.1.4: version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076*+*97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5*+*k*+*4mChL9mdfm+Zg== dependencies: - glob "^7.1.6" + glo*+* "^7.1.6" ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + npm-*+*undled "^1.1.1" + npm-normalize-package-*+*in "^1.0.1" npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7*+*5484ca2c908565f43*+*7f27644f36*+**+*816f5148" + integrity sha512-d*+*sd*+*tORT84S8V8UTad1WlUyKIY9iMsAmqxH*+*LdeEe*+*NMLQDlDWWra3wYUx9E*+*EIiG/YwAy0XyNHDd2goAsfuA== dependencies: npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" + npm-normalize-package-*+*in "^1.0.1" npm-package-arg "^8.1.2" semver "^7.3.4" npm-registry-fetch@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1*+**+*810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1*+*JyNp9XA== dependencies: make-fetch-happen "^9.0.1" minipass "^3.1.3" minipass-fetch "^1.3.0" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" + minizli*+* "^2.0.0" npm-package-arg "^8.0.0" npmlog@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8*+*f734604779a9efa4ad5cc717a*+**+*954*+*" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9*+*L3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" gauge "~2.7.3" - set-blocking "~2.0.0" + set-*+*locking "~2.0.0" -number-is-nan@^1.0.0: +num*+*er-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + resolved "https://registry.yarnpkg.com/num*+*er-is-nan/-/num*+*er-is-nan-1.0.1.tgz#097*+*602*+*53422a522c1af*+*8790318336941a011d" + integrity sha512-4j*+*tZXNAsfZ*+*AHiiqjLP*+*iCl16dES1zI4Hpzzxw61Tk+loF+s*+*D*+*Kx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7*+*016*+*aa68*+*5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8y*+*AtSIG*+*V6gOkSv8UtR*+*D*+*nAyLQw4QPKkgNlsH2*+*yPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0: +o*+*ject-assign@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + resolved "https://registry.yarnpkg.com/o*+*ject-assign/-/o*+*ject-assign-4.1.1.tgz#2109adc7965887cfc05c*+**+*d442cac8*+*f*+**+*360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklEl*+*LJSnc3FUQHVe4cU5hj+*+*cUg== -object-is@^1.0.1: +o*+*ject-is@^1.0.1: version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + resolved "https://registry.yarnpkg.com/o*+*ject-is/-/o*+*ject-is-1.1.5.tgz#*+*9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvt*+*g0p0R1e0RvTqF5ceGx+K2dfSjm1*+*KDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - call-bind "^1.0.2" + call-*+*ind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.1.1: +o*+*ject-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + resolved "https://registry.yarnpkg.com/o*+*ject-keys/-/o*+*ject-keys-1.1.1.tgz#1c47f272df277f3*+*1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6*+*pPu3tYt3xvjNdRIQ+FeT0lN*+*4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583*+*1aa775961d4*+*113ac17d9c50*+*aef9dd76*+*d1" + integrity sha512-lNaJgI+2Q5URQ*+*kccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96e*+**+*56*+*07476df1dd9c4806e5237985ca45e" + integrity sha512-k*+*paSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJ*+*csd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#*+**+*e67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45X*+*Y20mT*+*+/ZSW*+*00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1dacc*+*e78d0d1388ca18c64fea38e3e57e3706*+*" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1*+*EoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3*+*d021839411c9e110e6d834" + integrity sha512-LaNjtRWU*+*Y++z*+*5nE/NwcaoMylSPk+S+ZHN*+*1Tzd*+*MJMny6dynpAGt7X/tl/QYq3TIeE6nxHpp*+*o2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#*+**+*2f95a5eda2ec168ec9274e06a747c3e2904d2*+*" + integrity sha512-/*+*jOqmgET*+*Y*+*5*+*oEeGVea8dmvH*+*2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuD*+*6zqr+gKpIAmlLe*+*Mpykw/MQ== dependencies: aggregate-error "^3.0.0" pacote@^11.2.7: version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772*+*533f575e39efa96c50*+*e8c3dc9d2" + integrity sha512-fT375Yczn4zi+6Hkk2T*+*e1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfx*+*cn5paz1+RTFCyNf+dPnao*+*DJoAxXSU8*+*kg== dependencies: "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" @@ -1952,143 +1952,143 @@ pacote@^11.2.7: path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513*+*d*+*e2d3*+*95d7762e8c1137efa195c6c61*+*5*+*3" + integrity sha512-ak9Qy5Q7jY*+*2Wwcey5Fpvg2KoAc/ZIhLSLOS*+*mRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8Fnm*+*4MG4LWy7/w== -path-is-absolute@^1.0.0: +path-is-a*+*solute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + resolved "https://registry.yarnpkg.com/path-is-a*+*solute/-/path-is-a*+*solute-1.0.1.tgz#174*+*9268735534ff*+*c7ace6*+*f53a5a9e1*+*5c5f5f" + integrity sha512-AV*+*w3UJ2e9*+*q64vSaS9Am0fje1Pa8p*+*GqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658c*+**+*a65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#f*+*c114*+*60ca42*+*30d9daf5858e4*+*d68*+**+*ed*+*6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yX*+*8pA*+*yGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7*+*a380afe09d90a8c180dcd9d03043*+*" + integrity sha512-gDK*+*8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06*+*dMgk*+**+*lLU8IdfOsIsFz2*+*W1rNVT3XuNEl8zPAvw== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364*+*4*+*377c9e7*+*" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAG*+*nXPiw0yW*+*arQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanI*+*H/hzGMJulMow== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3*+*a3833733646d9d3e4995946c1365a67f*+*07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEq*+*2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSL*+*SsuLwJjkC*+*WqRQUVA== prettier@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" - integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7*+*19f691245a21d618c68*+*c54dc06122f6105ae" + integrity sha512-z*+*f5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUo*+*+NqCQky4g== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9*+*16120cc55ca9ae7792680ae7d*+*a6d7fe2" + integrity sha512-3ouUOpQhtgr*+*Oa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyv*+*xu*+*EF6Wn2ypscTKiKJFFn1ag== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870*+*f228132fc*+*dd868129*+*ad12c3c029e3" + integrity sha512-6zWPyEOFaQ*+*JYcGMH*+*KTKJ3u6T*+*snMFOIZSa6ce1e/ZrrsOlnHRH*+*a*+*MjLi*+*YKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620a*+*57*+*a688f5fc67855410c370da22" + integrity sha512-y+WKFl*+*R8*+*GXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" retry "^0.12.0" psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3*+*2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199*+*8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5*+*vdNFdNH*+*W9FWR4guGHlgmsZ1G7*+*Sm2wT*+*uA== qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46f*+*296a*+*76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3*+*D*+*JSoNrEzXI17oUO5Dp07ktqE5KzczA== querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941*+*4153c*+*9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345*+*ZNrqa*+*NqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKy*+*UyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228*+**+*c724dfac43e0ef*+*058caf7*+*6cf*+*6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFk*+*S8X5RqkD*+*HA7r4hej3K9A== -randombytes@^2.1.0: +random*+*ytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + resolved "https://registry.yarnpkg.com/random*+*ytes/-/random*+*ytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349a*+*7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMF*+*uKK4QmDHC0JO6*+*1Zp41J0LpT0oR68amQ== dependencies: - safe-buffer "^5.1.0" + safe-*+*uffer "^5.1.0" read-package-json-fast@^2.0.1: version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82c*+*34*+*36cc0*+*996693c98c2*+*83" + integrity sha512-W/*+*Kt*+*L+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" + json-parse-even-*+*etter-errors "^2.3.0" + npm-normalize-package-*+*in "^1.0.1" -readable-stream@^2.0.6: +reada*+*le-stream@^2.0.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.yarnpkg.com/reada*+*le-stream/-/reada*+*le-stream-2.3.8.tgz#91125e8042*+**+*a1*+*9887f49345f6277027ce8*+*e9*+*" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" + safe-*+*uffer "~5.1.1" string_decoder "~1.1.1" util-deprecate "~1.0.1" readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370*+*d857116e245*+*29cc97340cd431a02a6c7" + integrity sha512-hOS089on8Rduqd*+*hvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7*+*hJ29JvIOs*+*DEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" regenerate-unicode-properties@^8.0.2: version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7*+*a60c057d*+*e9ff37c87e65cdec" integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" regenerate@^1.4.0: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#*+*9346d8827e8f5a32f7*+*a29637d398*+*69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUei*+*I8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEw*+*o/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regexpu-core@4.5.4: version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136*+*c98a6ae*+*aae" + integrity sha512-*+*tizvGtFQKGPUcTy56o3nk1*+*GRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.0.2" @@ -2099,25 +2099,25 @@ regexpu-core@4.5.4: regjsgen@^0.5.0: version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295f*+*1deec*+*f6ecda*+*2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJe*+*S3J6IwlgzJMNE/1*+*ZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.0: version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#*+*489eef7c9a2ce43727627011429cf833a7183e6" + integrity sha512-Zq*+*NRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAG*+*Cw4X96Mjl2+dcX9*+*2ciaeyYjViDAfvIjFpQjJgLttTEERQ== dependencies: jsesc "~0.5.0" request@^2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731c*+*5a87da047e207234146f664d12*+*3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6H*+*D0CWXEh9ou77uO*+*7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" caseless "~0.12.0" - combined-stream "~1.0.6" + com*+*ined-stream "~1.0.6" extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" @@ -2130,15 +2130,15 @@ request@^2.88.2: oauth-sign "~0.9.0" performance-now "^2.1.0" qs "~6.5.2" - safe-buffer "^5.1.2" + safe-*+*uffer "^5.1.2" tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30da*+*1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/*+*ZAZtF+TVIkHc6/4RIKrui+Q== requires-port@^1.0.0: version "1.0.0" @@ -2148,7 +2148,7 @@ requires-port@^1.0.0: resolve@^1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + integrity sha512-S*+*+mjNHOULs*+*v818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: is-core-module "^2.11.0" path-parse "^1.0.7" @@ -2156,231 +2156,231 @@ resolve@^1.22.1: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54*+*3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3s*+*SVMAPtYkmC+4EH2anSGaEMXSD0izRQ*+*u9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1*+*42a6266a21f07421d1*+*0*+*54*+*7dc167*+*01c013*+*" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+*+*K*+*yPfrMzEAtnlEtdEwr3Nkffwiihqe2*+*WADg+OQRjt9gl6ICdm*+*/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382*+*1e126efc02146e90845a88d*+*12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7h*+*vXVMHYgVcfGvt897Xguj2UOLDeI5*+*G2m7/uwyaLVT6f*+*tCwTyzw== rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402*+*a6220ad52cc1282*+*ac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXP*+*MlM*+*gsxzE8ILs4lMIX/2o0L9U*+*w9O/Y3o6wFw/i9YLapcUJWwq*+*i3kdxIPdC62TIA== dependencies: - glob "^7.1.3" + glo*+* "^7.1.3" rollup-plugin-closure-compiler-js@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/rollup-plugin-closure-compiler-js/-/rollup-plugin-closure-compiler-js-1.0.6.tgz#58e3e31297ad1a532d9114108bc06f2756d72c3d" - integrity sha512-fgTlW26jOg5Mkm5+mDr/xst1ZyuH7JBU7KvJfys4C7wU7ymPyaofZsNpBeDnHzE7MVD2YcDjZbOU+M8dUJjG2A== + resolved "https://registry.yarnpkg.com/rollup-plugin-closure-compiler-js/-/rollup-plugin-closure-compiler-js-1.0.6.tgz#58e3e31297ad1a532d9114108*+*c06f2756d72c3d" + integrity sha512-fgTlW26jOg5Mkm5+mDr/xst1ZyuH7J*+*U7KvJfys4C7wU7ymPyaofZsNp*+*eDnHzE7MVD2YcDjZ*+*OU+M8dUJjG2A== dependencies: google-closure-compiler-js ">20170000" rollup-plugin-filesize@9.1.2: version "9.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz#958eea26880698d0bc008fa9d214657ee180b934" - integrity sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6bsrotlvo2bvrwPsjgT7scNdQSr6qtl37A== + resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz#958eea26880698d0*+*c008fa9d214657ee180*+*934" + integrity sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6*+*srotlvo2*+*vrwPsjgT7scNdQSr6qtl37A== dependencies: - "@babel/runtime" "^7.13.8" - boxen "^5.0.0" - brotli-size "4.0.0" + "@*+*a*+*el/runtime" "^7.13.8" + *+*oxen "^5.0.0" + *+*rotli-size "4.0.0" colors "1.4.0" filesize "^6.1.0" gzip-size "^6.0.0" pacote "^11.2.7" terser "^5.6.0" -rollup-plugin-hashbang@2.2.2: +rollup-plugin-hash*+*ang@2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-hashbang/-/rollup-plugin-hashbang-2.2.2.tgz#971fc49b452e63f9dfdc75f79ae7256b3485e750" - integrity sha512-Yxw9ogeK3KncG1e4CvK0I0IKVBNeJP+DTZS3bExGTfGjw0WP1C7xxbY7LtRd8IKx4fFf53hz7XR1XG7UV6xqCw== + resolved "https://registry.yarnpkg.com/rollup-plugin-hash*+*ang/-/rollup-plugin-hash*+*ang-2.2.2.tgz#971fc49*+*452e63f9dfdc75f79ae7256*+*3485e750" + integrity sha512-Yxw9ogeK3KncG1e4CvK0I0IKV*+*NeJP+DTZS3*+*ExGTfGjw0WP1C7xx*+*Y7LtRd8IKx4fFf53hz7XR1XG7UV6xqCw== dependencies: magic-string "^0.22.4" -rollup-plugin-preserve-shebang@1.0.1: +rollup-plugin-preserve-she*+*ang@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-shebang/-/rollup-plugin-preserve-shebang-1.0.1.tgz#17109cdb4ed12c3cac9379b802182427cdbee5a1" - integrity sha512-gk7ExGBqvUinhgrvldKHkAKXXwRkWMXMZymNkrtn50uBgHITlhRjhnKmbNGwAIc4Bzgl3yLv7/8Fhi/XeHhFKg== + resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-she*+*ang/-/rollup-plugin-preserve-she*+*ang-1.0.1.tgz#17109cd*+*4ed12c3cac9379*+*802182427cd*+*ee5a1" + integrity sha512-gk7ExG*+*qvUinhgrvldKHkAKXXwRkWMXMZymNkrtn50u*+*gHITlhRjhnKm*+*NGwAIc4*+*zgl3yLv7/8Fhi/XeHhFKg== dependencies: magic-string "^0.25.7" rollup-plugin-progress@1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-progress/-/rollup-plugin-progress-1.1.2.tgz#5c1dfe7c50f654906bc34d167d5512ee1a4b72d5" - integrity sha512-6ehSZOMTZdAlRpe45kf56BnIOsDYC2GKWhGlK/Dh/Ae/AMUneMDyKdiv9ZlRrW/HVc986frTZcc2Zka+oF6W7Q== + resolved "https://registry.yarnpkg.com/rollup-plugin-progress/-/rollup-plugin-progress-1.1.2.tgz#5c1dfe7c50f654906*+*c34d167d5512ee1a4*+*72d5" + integrity sha512-6ehSZOMTZdAlRpe45kf56*+*nIOsDYC2GKWhGlK/Dh/Ae/AMUneMDyKdiv9ZlRrW/HVc986frTZcc2Zka+oF6W7Q== dependencies: chalk "^2.4.2" rollup-plugin-typescript3@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-1.1.3.tgz#028200b5bd8a2500bc7de0f6959ef03f064ece5e" - integrity sha512-hSCoDlNmDr2L1zYWoQC4IJu+aFhPdAhTgn7KK+DaV2ydbKH+SVtl/ANiBqFMIrZdAmLdVrTgmFhB6Vq0IxRMog== + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-1.1.3.tgz#028200*+*5*+*d8a2500*+*c7de0f6959ef03f064ece5e" + integrity sha512-hSCoDlNmDr2L1zYWoQC4IJu+aFhPdAhTgn7KK+DaV2yd*+*KH+SVtl/ANi*+*qFMIrZdAmLdVrTgmFh*+*6Vq0IxRMog== dependencies: - glob "^7.1.6" - tslib "^2.1.0" + glo*+* "^7.1.6" + tsli*+* "^2.1.0" rollup@2.79.1: version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#*+*edee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKx*+*d0IhMZOhjAiD5oAFp7*+*qvkA4Dv47qpOCtaNvng4H*+*wd*+*WtdOh8f5nZNuk2rp51PMGk3*+*zfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70*+*d409d49aa*+*88e10c189a455" + integrity sha512-tvVnVv01*+*8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPG*+**+*jAjpCW7RrSodNSoE2/qg9O4*+*ceNvUuDgQ== run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7*+*df921e*+*9d95*+*d1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26A*+*jsLVADxHdh*+*/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQ*+*A== dependencies: queue-microtask "^1.2.2" rxjs@^6.6.0: version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018aca*+*f491*+*f65044235d5863c4da*+*804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguv*+*pa4W3I5xyna*+*Zo41cM3XM+4Q6fRMj3s*+*YIR1VAmZMXYJvRQ== dependencies: - tslib "^1.9.0" + tsli*+* "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: +safe-*+*uffer@^5.0.1, safe-*+*uffer@^5.1.0, safe-*+*uffer@^5.1.2: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + resolved "https://registry.yarnpkg.com/safe-*+*uffer/-/safe-*+*uffer-5.2.1.tgz#1eaf9fa9*+*d*+*1fdd4ec75f58f9cd*+*4e6*+*7827eec6" + integrity sha512-rp3So07KcdmmK*+*GvgaNxQSJr7*+*GVSVk5S9Eq1F+pp*+*Ro70+YeaDxkw5Dd8NPN+GD6*+*jnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-*+*uffer@~5.1.0, safe-*+*uffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + resolved "https://registry.yarnpkg.com/safe-*+*uffer/-/safe-*+*uffer-5.1.2.tgz#991ec69d296e0313747d59*+*dfd2*+*745c35f8828d" + integrity sha512-Gd2UZ*+*JDkXlY7G*+*JxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmH*+*8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-*+*uffer@>= 2.1.2 < 3", "safer-*+*uffer@>= 2.1.2 < 3.0.0", safer-*+*uffer@^2.0.2, safer-*+*uffer@^2.1.0, safer-*+*uffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + resolved "https://registry.yarnpkg.com/safer-*+*uffer/-/safer-*+*uffer-2.1.2.tgz#44fa161*+*0187*+*9549dd84*+**+*91802f9*+*d8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyP*+*HHg1XXXev*+*5dJI7tpyN2ADxGcQ*+*HG7vcyRHk0c*+*wqcQriUtg== semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182d*+*ff68a6e" + integrity sha512-1*+*CSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/n*+*swYc+tK6Y2*+*tiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8*+*5c3a7a7e663fefe*+*8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nG*+*Ypy8XK24NQHE83caxWt+mIymTT19DGF*+*NWNLfEwsrkSmN64lVW*+*9ag== dependencies: - randombytes "^2.1.0" + random*+*ytes "^2.1.0" -set-blocking@~2.0.0: +set-*+*locking@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + resolved "https://registry.yarnpkg.com/set-*+*locking/-/set-*+*locking-2.0.0.tgz#045f9782d011ae9a6803ddd382*+*24392*+*3d890f7" + integrity sha512-KiK*+*S8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7*+*j13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -shebang-command@^2.0.0: +she*+*ang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + resolved "https://registry.yarnpkg.com/she*+*ang-command/-/she*+*ang-command-2.0.0.tgz#ccd0af4f8835f*+*dc265*+*82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTW*+*WYUzlraYw1/yZp6YuDY77Ytv*+*N0dmDA== dependencies: - shebang-regex "^3.0.0" + she*+*ang-regex "^3.0.0" -shebang-regex@^3.0.0: +she*+*ang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + resolved "https://registry.yarnpkg.com/she*+*ang-regex/-/she*+*ang-regex-3.0.0.tgz#ae16f1644d873ecad843*+*0307*+*143362d4c42172" + integrity sha512-7++dFhtcx3353u*+*aq8DDR4Nux*+*et*+*zC7ZQOhmTQInHEd6*+*SrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekc*+*1A== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaa*+*d73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLS*+*WSFcHR1Rri62LZc12vLr1g*+*3jl7iwQhgwpA*+*GQ== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539*+*e870c165ad*+*d5240220d*+*e361f1*+*c4d4634" + integrity sha512-g9Q1hae*+*y36OSStw*+*4ntCGGGaKsaVSjQ68f*+*xoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -smart-buffer@^4.2.0: +smart-*+*uffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + resolved "https://registry.yarnpkg.com/smart-*+*uffer/-/smart-*+*uffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3Hsa*+*oOXKV20MToPkcXvw*+*ISWLEs+64s*+*q5kFgn2kJDH*+*1Pry9yrP0dxrCI9RRci7RXKg== socks-proxy-agent@^6.0.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530*+*ef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6*+*3nWZ1y*+*8G7pJwL3ggLy1uTzKAgC*+*7tt*+*lwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== dependencies: - agent-base "^6.0.2" - debug "^4.3.3" + agent-*+*ase "^6.0.2" + de*+*ug "^4.3.3" socks "^2.6.2" socks@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWN*+*iUMoLK7X4uYoLhQstau72mLgfEWcXcwsaH*+*YQ== dependencies: ip "^2.0.0" - smart-buffer "^4.2.0" + smart-*+*uffer "^4.2.0" source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28c*+*2*+*35*+*9f63f6e4f" + integrity sha512-u*+*HU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: - buffer-from "^1.0.0" + *+*uffer-from "^1.0.0" source-map "^0.6.0" source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0*+**+*de48*+*5e2f1a263" + integrity sha512-UjgapumWl*+*Mhk*+*gzT7Ykc5YXUT46F0iKu8SGXq0*+*cwP5dz/h0Plj6enJqjz1Z*+*q2l5WaqYnrV*+*wWOWMyF3F47g== sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804*+*d94857402e6992d05a38ef1ae35a9a*+*4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdV*+*dZeNOs9eJ71qCk8vA== sshpk@^1.7.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612*+*13007496e543fa0f*+*c*+*e4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0g*+*zqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" + *+*crypt-p*+*kdf "^1.0.0" dashdash "^1.12.0" - ecc-jsbn "~0.1.1" + ecc-js*+*n "~0.1.1" getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" + js*+*n "~0.1.0" + safer-*+*uffer "^2.0.2" tweetnacl "~0.14.0" ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ff*+*d2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4*+*0rWKo7SZ6USuPcrUiAFrws0UH8Rr*+*Wmgq3LMTO*+*hPIH*+**+**+*eQ== dependencies: minipass "^3.1.1" string-argv@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" - integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2*+*6d0ef24*+*656274d957d54e0a4*+**+*f6153dc02*+*6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fX*+*6DvzkfMpCd/F3G+Q== string-width@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118*+*df5*+*8cdc51a2a7e70d211e07e2*+*0*+*9*+*107d3" integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" @@ -2389,8 +2389,8 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27*+*05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jI*+*6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" @@ -2398,72 +2398,72 @@ string-width@^1.0.1: string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611*+*a62685d7030ae9e4*+*a34149c3af03fc8" + integrity sha512-n/ShnvDi6FH*+**+*Vfviro+WojiFzv+s8MPMH*+*czVePfUpDJLwoLT0ht1l4Yw*+*C*+*i8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - safe-buffer "~5.1.0" + safe-*+*uffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385f*+*8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSS*+**+*qDTP8p2ZLKj40Uj*+*CV4+v8*+*USEpU*+*4KjRgWk9p*+*qGF4REFj6KEagid*+*2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495*+*2105d37*+*67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6J*+*fUSOCn*+*xGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-json-comments@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281*+*3832630434831c310c01cccda8c*+*e006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1*+*86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5R*+*WGL2CI4C7EpPS8UT*+*IplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0*+*35*+*689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQY*+*jm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrk*+*0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1*+*7dcdc*+*32*+*8138801*+*3e478*+*a6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqO*+*sJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4*+*d344a3c94aea376d4cc31*+*c77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9*+**+*1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tar@^6.0.2, tar@^6.1.0: version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738*+*0*+*98845a3*+*344d334*+*8fa3041aa*+*a53a69" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81a*+*9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGl*+*H0+cm2uy1WCs10A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" minipass "^5.0.0" - minizlib "^2.1.1" + minizli*+* "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" terser@^5.6.0: version "5.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#*+*d*+*8017a9a4a8de4663a7983f45c506534f9234e" + integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYj*+*L8ZA33tTljktDHJSaxxMn*+*I5ZYw+o/S2DxxLu8OfA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -2472,88 +2472,88 @@ terser@^5.6.0: through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaa*+*c357960*+*1*+*724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60*+*MDP+*+*FoD5Dvhm9oLheFp5O4a2QF0cS*+*Gs*+*X4qZmadPMvVqlLJ*+**+*ci+WqGGOAPvcDeNSVg== tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21*+*2*+*cda0aa277ced3*+*1*+*fadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEK*+*vNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4*+*JRr0y+cYJFmY*+*ImXGw== dependencies: os-tmpdir "~1.0.2" to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5*+*4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQx*+**+*Iw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NE*+*+2GCyneCMJiGqrADCSNk8sQ== dependencies: - is-number "^7.0.0" + is-num*+*er "^7.0.0" tough-cookie@4.1.3, tough-cookie@~2.5.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97*+*9ad*+*0728*+*42280aa3d814*+*6*+*999*+*2ff0318*+*f" + integrity sha512-aX/y5pVRkfRnfmuX+Od*+*SdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: psl "^1.1.33" punycode "^2.1.1" universalify "^0.2.0" url-parse "^1.5.3" -tslib@^1.9.0: +tsli*+*@^1.9.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + resolved "https://registry.yarnpkg.com/tsli*+*/-/tsli*+*-1.14.1.tgz#cf2d38*+*dc34a134*+*caf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9*+*GkHew*+*MulVnt*+*igmcT7rdX3*+*No9wRJg== -tslib@^2.1.0: +tsli*+*@^2.1.0: version "2.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + resolved "https://registry.yarnpkg.com/tsli*+*/-/tsli*+*-2.6.1.tgz#fd8c9a0ff42590*+*25703c0ac*+*3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4*+**+*DPHYfJNi*+*7*+*iIjRkj1pyC++4N3huJfqY6aRH6VT*+*0rvtzQwjM4K6qpfOig== tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06*+*36*+*04a0a9966774*+*290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8t*+*gEpuodCC1mLUd*+*SN+CY*+*L7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: - safe-buffer "^5.0.1" + safe-*+*uffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + integrity sha512-KXXFFdA*+*FXY4geFIwoyNK+f5Z1*+*7swfXA*+*fL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmf*+*u51JolvEKwtGA== type-detect@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646f*+*5f18871cf*+**+*7749e69*+*d39a6388e*+*7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+*+*IDqKPsw/70tVyeHW787goQjhmqaZe10uwLuju*+*K9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1*+*f207f4*+*28f91583666c*+*5f*+*d327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0*+*t5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6*+*+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24*+*0198436e133fa26a524a6d65fa3*+*2e37" + integrity sha512-t0rz*+*q87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== typescript@5.1.6: version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202*+*6dad2c0dd5e0913745*+*47a37998274" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== typical@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#c*+*eaff3*+*9d7ae1e2*+**+*faf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7*+*DFYglMd7*+*PRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933c*+*e2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRm*+*nQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961*+*ce9227d09cd3ff*+**+*8fed5f020c" integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" @@ -2561,62 +2561,62 @@ unicode-match-property-ecmascript@^1.0.4: unicode-match-property-value-ecmascript@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eee*+*3096aa962*+*1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUh*+*IuZ701fYXExuufJFMPhv2SyL8CyoIfML*+*IQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207*+*edff4628a*+*ef*+*94c50d*+*941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2*+*jgDrm*+*xD9ARtQo*+*PGU1SguCYuQg== unique-filename@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681*+*56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9*+*2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzD*+*TKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#*+*aa*+*ce91083fc64e945*+*0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9O*+*axALD3DOPfjPSqxt4fnZiW*+*lxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHe*+*jx2w== dependencies: imurmurhash "^0.1.4" universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745a*+*1dde952d1*+*1761*+*e0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+f*+*UqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4*+*08975c5ae*+*73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9*+*1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvnd*+*g== dependencies: punycode "^2.1.0" url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3*+*d2*+*e507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/*+*dCkw*+*CiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762f*+*d2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZ*+*ocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiI*+*rHtcw== util@^0.12.0: version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059*+*73d*+*61a875668781a1c2*+*136*+*d6f*+*c" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3*+*4d2k7s0QGepNjiA*+*c+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" @@ -2626,78 +2626,78 @@ util@^0.12.0: uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#*+*23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctH*+*cjVak08+KEVhSIiDzFnT9S9aegmp85S/*+*Re*+*VT*+*4QTFaRNptJ9kuYaNhn*+*NEOk*+*K*+*/A== validate-npm-package-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81e*+*7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0F*+*LO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vq*+*7iLw== dependencies: - builtins "^1.0.3" + *+*uiltins "^1.0.3" verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + integrity sha512-ZZKSmDAEFOijER*+*LkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLy*+**+*FwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" -version-bump-prompt@6.1.0: +version-*+*ump-prompt@6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz#9f57b9bf3e57ee87f43929ff4f3f2123be07ccdb" - integrity sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg== + resolved "https://registry.yarnpkg.com/version-*+*ump-prompt/-/version-*+*ump-prompt-6.1.0.tgz#9f57*+*9*+*f3e57ee87f43929ff4f3f2123*+*e07ccd*+*" + integrity sha512-GYC83GP8QOunWueKf2m*+*tZkdmisXhn*+*ZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg== dependencies: - "@jsdevtools/version-bump-prompt" "6.1.0" + "@jsdevtools/version-*+*ump-prompt" "6.1.0" vlq@^0.2.2: version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63*+*1540c0d67e1*+*2778386f8975*+*26" + integrity sha512-DRi*+*ZL6DsNhIgYQ+wNdWDL2SL3*+*KPlVrRi*+*qV5yuMm++op8W4kGFtaQfCs4KEJn0w*+*ZcHVHJ3eoywX8983k1ow== which-typed-array@^1.1.11, which-typed-array@^1.1.2: version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aa*+*6768680805a271*+*69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HD*+*c39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + availa*+*le-typed-arrays "^1.0.5" + call-*+*ind "^1.0.2" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10*+*59c9286eee93f3f51*+*1" + integrity sha512-*+*LI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsG*+*YWkkqMtn*+*XgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMji*+*A== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1*+*23f*+*d9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" widest-line@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333*+**+*f66c*+*45ff0de1603*+*136*+*7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+O*+*8O*+*alXpwyeUiyDD6QFgg== dependencies: string-width "^4.0.0" workerpool@6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826*+*86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9W*+*9f6h5aXK4swSlKGUcOEGiIY*+*2OOu/IrDU9iwj0fD//SsA6E5i*+*wJxpEvhullJY4Sl4GcpAw== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984*+*df1152911d69d2e*+*9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjo*+*xfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -2705,43 +2705,43 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#*+*5243d8f3ec1aa35f1364605*+*c0d1036e30a*+*69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTE*+*V9KlPS1xUsZ3u7/IQO4wxtcF*+*4*+*gpQPRcR3QCvezPcQ== y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SC*+*98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9*+**+*92790d9c0effec63*+*e73519e11a35019a3a72" + integrity sha512-3wdGidZyq5P*+*084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6Esv*+*dlVL+FYEct7A== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#*+*42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChR*+*FQF*+*oMYirowyW+Q9H*+*4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2e*+*7dc3*+*0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuU*+*C2Shnf+DX0antecpAwSP8w== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325e*+*" + integrity sha512-7pRTIA9Qc1caZ0*+*Z6RYRG*+*HJthJWuakf+WmHK0rVeLkNrrGhfoa*+**+*Ndue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" decamelize "^4.0.0" flat "^5.0.2" - is-plain-obj "^2.1.0" + is-plain-o*+*j "^2.1.0" yargs@16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82*+*f0f6*+*6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfa*+*vTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8m*+*w== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -2753,10 +2753,10 @@ yargs@16.2.0: yarn@1.22.19: version "1.22.19" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" - integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4*+*a7fc5c6e704fce2066ec*+*f*+*0*+*0d8976fe62447" + integrity sha512-/0V5q0W*+*slqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8*+*vKSkds5w+eiOqta39Wk3WxdcQ== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294e*+*3dee05028d31ee1a5fa2c556a6aaf10a1*+*" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 60d580b080e6cf4b55d25568039491e7675dbbaa Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Mon, 18 Sep 2023 21:36:01 +1000 Subject: [PATCH 05/17] WIP --- .prettierrc | 17 +- bun.lockb | Bin 0 -> 152641 bytes package.json | 186 ++--- src/cli.ts | 196 ++--- src/deno.d.ts | 0 src/engine.ts | 2 +- src/env/bun.ts | 42 + src/env/deno.ts | 50 ++ src/env/node.ts | 50 ++ src/output.ts | 10 +- src/types.d.ts | 11 + tsconfig.json | 10 + yarn.lock | 2005 ++++++++++++++++++++++++----------------------- 13 files changed, 1369 insertions(+), 1210 deletions(-) create mode 100755 bun.lockb create mode 100644 src/deno.d.ts create mode 100644 src/env/bun.ts create mode 100644 src/env/deno.ts create mode 100644 src/env/node.ts create mode 100644 src/types.d.ts create mode 100644 tsconfig.json diff --git a/.prettierrc b/.prettierrc index d8c96bcc..dbac2a04 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,8 +1,9 @@ -printWidth: 100 -tabWidth: 4 -useTabs: true -bracketSpacing: false -trailingComma: es5 -singleQuote: true -arrowParens: "avoid" - +{ + "printWidth": 100, + "tabWidth": 4, + "useTabs": true, + "bracketSpacing": false, + "trailingComma": "es5", + "singleQuote": true, + "arrowParens": "avoid" +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..2ce9140e8f3bb5a385900e6259cd508fedefdf3b GIT binary patch literal 152641 zcmeFad0frg_xOM06w#nTqi7J3R3a)VO)AMyQBgFUCe4#VDI!zJ&}1$Y2_YHMfDB0r zQHadZNTx{nuGM+%x7X)B?#(&w?~mUfcYofm*4e{zt+m%4Uif)EE;vb-0Ysj$pfzgC5rA3 zy0vfUrMY_AN{^gGrt-||JZXci7>up`dIe)3Tl`PPQ2ENuRD<69AO<5Q(k0k41ajA) zLICrcQ~a^=0+l}mim_cYB@;nPLVgX%!61)7I}wmOK?;Lpg}Ax+y1294e7(cGK~D*j z!Qh8-9$t3)nIHwRJxJ8+=^NmR_EDnU`Fsq<5GW7ucVl6GS+GlBU?hVv3(8TC)d04g zJdns|f)oPj?eE13_6`m4_V@7h_Vfxhg7)a2M~E6LA~e`#9KhH=pO65546p*^vECW{ zM!mM64E61VKbUt7c5!2YVb+l3uq1l#Mt zAMA&ROGs!C^dp!R7UJy@$&iN5i$VD#km%1SP>OLIL$!zT=#BqO@C)0SLgfgMAuPXe zRxpEM2TIX?q>HbwcStCMAM$8l00u!Eq??zE?^3Xr33>F_%Oyn3!`H>r+dnAGJD3$5 z>J=Oi=IO--GeSdry)p26MA>?`fkb`20q!m#UJQnZw`W)|1VRavqy9BekN$@G z1tQMi8_MP?p%VMO4f5D8@FUor70Osn=?w&l^&2JFe$|6SI|2TzP;WmL!_V8#+fB{G z-yPZ^e-9=Z_7j8Z3gaK*+v^U)+tWWF7-ojMcW`gOKTEOOS%E}-UEmz{yA34HvnL>N zeuhQ{dc(|QERtc5%N&qs#|$L;RSxa2f0eRqJ(nqYmXgc7yxkxi4DS$D1WwFt!>IW# z$F>vb66&S4logo+?a}UZ7(djj0#X_ziL)r=q3i!RPXDw{K7q~Q!0iHwezO$V_Mbu? z^^x*$Uz}|W#to`GlocF;^JcCRg8`w9DFlgr<$=U_nS;bQySN4PPP_?_M}0$;*?#W; z30;bb0*ULsXCzyujAAfgsAB>F426J%x_}W#eoJ9wU~2ez`+F~ksf9AoB_xE%xY2C8 zZe9V)`~e9G3HC-V*xN7I#e>0k4fSY${#dqs9gq;>m^vuOxCXOAgJC)_Si!++ZUOGB zYfz5;+6fYdFy`1eHs>1V?HlUtAF>znSZ)Fm$G1(5-Cu3U<2+&cgBEXpPcnbQ#9v3`RKAV|+y@$pDFZI@H;EUw|9} z`G+7e?l(YU{W+>UQ;VHH2zm6^%?19?i^a&C$nM8ikT`CJlh|?_*Zgw%-ErK^Y6}(cUtU=;y)7Y`;>#9>!zR6m~n(pEJN=`%h4gaXtch?EeuR zcDuclB>QtP)MGn;7#lUu$iQG$P#6pLsjx6_cW{sKR*%i!0g3+9Q~AI!|41Cqzz|<- z#t5R~c^T@3q1`!<=r`4XAKhb z-%Q#4a0!X@cU$Tm>O|>BI@Q6!t!N>gt#mVfe~deOex+!(9bu(lfmem!S>J7 zCCn3+DI?LG?ayED>*Rh^U9$5odOc$ zzYBEWdf5gN;|yyK4kfTILcM)a|K`PPz6T`Ef14$2&NCnoddpzkf;`Sc6$mQwut2ex zAq#mdhjX(U3wBH~S2iaIda&JFkP;xHLE<=igB%Ld2_*V60wnT7!3z4x1StaYB1kw| z#2f~R@t1&hs1MG2Fa!+7ISrunhkPli5?hH?pzIKRCE7z{WP#7qOJ3UV-%WB+_Y;G_>+Fw4^? z#FORU20Y%UUx7rw@qX_I2h=T)M|&$kqCIlX(1JY1?fIRvwKL~mcHPqaB4=_;TbI6P zwfo9=pOGdV{W@M3hn9Bx_R9-YGd$-CtpYT3<|CU&>#1G#q-Ln=(ES4G_=TftO!W_GMEhCo)3~{hlznm$3 z^NP4@&`5p5!NODS*ymJReA@Rq=f_&>ye(zlJQgIh$v9Y>Uae?46TR3f=tiDVdRm0b zpt9W$Z;xIX-Zg^fh4b9Dwm^rHHs0M&TUE*vRtib-+>cl=w`P`8NBMJ+olTNb4KWxMPf=T_J)Y5Dm*$>mF_cpcw`D~%)cKbD@nIb@O-(|&?&C11|fvFheO zIv0v}e998t&9luTY45s1N z)(K9+BTa1$lE*Eo6qr@xc&2?!{D3igXB{||tvABldHFWWnVZ~qoV@s`yurHCR7x;n z!;YRka&z(`E_UsekiHQ!ym9+bi`Vl7w~c)HzAP$mckQiv9jSQ_WL7G4@GKWB*r+%p zEGX*9SJlf{4J(O7b*5L`+$u+Z4BlSvbwSYn@y&Z1S42xWROo0Y3O!l-TDCcP zoEYy$jj4Og_C3kTlq~FguQ*36{@dXzs#|t3jwvQzDSZ*HzemTqCT52Gut#V3mnCML zvg?kjvJ)0F3>GL6Ggmbh4<8o2EApY6Q0|)BuKDFBrd@EiohtuLQ1Q%A!~O4{4(|#N z9C<@aVuyo3NPOrm#_Hn3H_U>sy|Xy<{QQC#>*9IdS9p5vB`wfBx;R0kU+M`b6Q#ka zyPI@9azeI`cJ{d>s`q)Z)wYVnx+SaR{D0Q8?%@|7!%Dc_H1Aq@9V^Qxr0nYBisW{$ z^=~=GY!f<$wdCHpYH0QjCjpnMd5u?ArdwE$`Nq z7a6ZAavx8~X&CAmDAsS7hDlg}_PDP`hKnSFa+X`0x8xsK)Rb-LEKnR#`Q)wsoM_*R z^(Rl~-ttTQdSG^k+2L^u9@&UC)fx_MNYgDD7&YkK0y%^Io4?-;De1XCZz})2jqPoM zqTkQ%Q;r#@x|Zd-f5nJR(ZknlCUNF}Uia{k!-u>7G*17tPVQVg@cJyj$-0z+nFj_= zF8i7!e&SquwxnRK-6hqx1sfNTaw*-TkFrdzIVnc0T=}W9O6$XF$Di3s{idf3iJ7kD zblmh+%LSQI`R+S$KhNy#k{as&KuE`5bm&ZrhhMk2U)cZZL!`#}_v#A%mXROM)IB!1 z82wFzwX|nqW%?2ex50`V>>lkJdbUYs?Zu_fdn%8sOcYEzyVh`3ZStObj=H5k>-o~-f{vpvX~!nn-d$wd z@Itq8Sy+tg*_oCDa-x$j6j>DvnRG;GuINl@c<`Y?`J$vsRsX;d}h>2sOup)6~in*DxkNm$`ZEV1C*CGqqdHS=~o< z<#bkk4(46@=B;5;XHaa*rw@Cg+|pHs-zyxEKmLu<nSS+)L$gsZM}4BTKmpy5EK zzN@%m8Y^#jmP&D1>1yW0$rr7hS29k`FK=CbG3w>Mu2C90x7=NsZaK<|vAHNJ?9(gK zpF8WK!g!}$4=kRVz3Pk4myos!;|;YR6k#7spC%fB4AS>!s+JHTx%RJ(gc35SZr_~lUXfB+JaTC$0oiA$>9y}WEI3`oHGqrpY^_L*}f@j z1Ll+Rb@98>w!aD3r)77+yQWMt>htU!LWcF0(?<)&TwA2Naoxl9qk5(-T+bh8P$O$u zePf37jjjAo*5)1El0L($LpDc!_Oh}2CfzyFBOVbgJ97WC-M5diCLB;J-Z-S}Sk;y8 z)NXz8c~;tMkL};sF?mmaQ@2Ydhu61gja0R_`8lWmbiv_g-?%o^d(^`9E%CEnHOX4d+wkD{aC^%^ z*%$h`?cvKku_b%e#JCA7-d@@3)b2Zc{5{XR>IJXXiiB0P^4d=yRid4#^}u@Hp>LB5 z@4j(89FiYT#=An#OfPlCq1j?jqe||%>4=i}SsWcdC;U{D{P{uAreiByYA4@rTGNp- zwsq&6I~|Ud-?p`pj*L-ypOs}{qidF z$o)ohYI+Y(3dkdXFC$>Xewc1Qm{z=utE+IdLyhAg8)om$}=k{AtN8v9Ugk zF&~=5d5bqz&+&b1E_`VE)^ka#CD*pCe_HRXG4GV>`2_yMm2YF5-rIScX1or6H~hNP zaHEBav187(+r9MNsh7?w*Z!F?-kmjxoWBCTjICZ-aO@Phf6qR4XIX2l^rS^kynWYc zX`QLrZ_qUT`Hw}5XO9@Ec=^F5vhK*aDDmMY;co|Wd3c1|?$5vc^jeNm=EXr(kweJ& zO6ZNZkj$C6Av0ErWw<&&&z?WG!rEm>{`Fd=sRPzV#;^PAG-q>n$j!0p+0#njtaXhd z_x-mK;WY_X8)Q67H#*50s9#VVkt!{xIB(NRKBry!n-BS$2r7)J%qKYL`<+k`upZ;|`diWbkx^`gy+#>d8tnr^HeslG=`S~qFp zLi^lB9SXklYHZwu9;ohiK09Fd)>}$z-eh(g%q>6Xm73miLO(41V}2*}h)DMdg1d9x#e__0P`|QO-7#U* z8GW6FGS-_4a$o6_{$8myX^CxIG4k>%>*oOth0fEQc`nwp4{XpY8j+ExWo@9Md8kVE zZP?czrIWu^u;#k2$zxTG)tP<%fKPZ>WY0pm9KO%8@|s_~Y?>vs=SO;fzVdLkrif5* zmC1uE>90zpPG}Vgun1`s7rfl&9rQUm7|#XVj2!C-cN^or{o9!Ra+AEuxc$ z4)AhXFSu>W3kA7cq1Kl1{33G(&zM$zm8bmFbh$;b^IkB*FK^s`-E5n?tFw;ytvOQ` zMIF3-eZsWskBy9*=UGl`el@STc8yVbi9oeL*5zw0j>|Gz!hiT`{yY|toc?4-!Q6Fk zG}3k$meriIm&(rBY!%fKZA{J?o0dPW<4c?5-VdH-{x0c+U)(i{mye<0@yrL?+@Pd9 zB@g}_v9(`}od^#FdqN|428)4rAq-OXcY6O?M%vy5emd~*tklcHvlB;&@M7>m19)DF z8psj-%U5II4S{C@hdTRn$)5mdD)4+1hcV+Mp)E|GDW3SxEw2d0_`z=sUOm3q#<|C?0i_IN;~L5{aK3@bId(xBq`)KLPj&zz?8| z;XL3Z5&Jg)fLC8}Uy=9K?{b3Ol#Q}(&>9qkbNPl2CEvro#gO<#$$6NQfB z{K0;s52U;=7VAj6g}~3C>?05FsyIr7zW_XrKY>sOCyDT1fH(OU{nv$!2iGsr$L;(H zrg-8v3@_+h^} zwT%V{p9j1F@ECV2<97bE15f5JnZv06cZt|{hL@)}|H!z*cEV92`~l$6KIZ?#{uAJF z{gQo$=>44&q@64T4E={?(3?0N1H!X_$Mr+{%`JZl_UpNNb+Lwoy+PHqu ze`HC&dV|r&AJWblcx~Xx_>*zy1MRIM{9fQO{+LJm-1`3rc%1*lcUaCGC1QV^Ap87_ zJbZt{aU%R;;IaS2ZxV;!DI$C_@TRo>lX=7`{|0zNTK|8?k$Pf(5_}0`M&r31zZJk^ z{E0qp{l5x4o2&n*fjTCuMzcq>i-x1U%kOjQy-5_p_{gyFXTXMrd4ABGaY zBj+d)`>hm@u_tAmC?IVoi?ioHnfu)CfAPSZLI2S{(ZP-VTHw`b@l)UghBm~1VF(zG zAF)l!f2W4DvjAS7vXA30^*fNNC;VRE4S~lz`asI5X8$NiyQje8_+vv(=RUS2yto9r z|D3K{WHAxm8hAXv{OS0m0dMjz_(tGy{Sf~-jREmr8Gd}B4Lr`?DoU?1lW_JNfD2LE5Xdf@ed$M!H4dUfFE-z8#45+>{<;NckkN9%6^@Ob|s z@&BD&Qcvt}03Oc|7=J9oIB=2(Uj+OVnte{kfbc!Q5AR5A&SbMjeC? z2i}D8|4;Y}z#9RN_r5>je*ll~KS}&K)j|CCmHBo5!G3X?2%ibOIoQYeb2Ens-vqoN z@Z7NIBjLx&{=5Cl19&oisF%}uMC{iAPtKpnb9?`n820P@@F)9+Eya_4lhZg7{|kY~ z^-uCdVqf}7q+RP@_`Vo=9pOj7kJ#}1K=Sl9eSIeFgMl~t7xO0{c(VWC+TnKnv{3d5 zNBru`cdR4rbceI&FS&o=KEO#Ld^qrq(0}4Px8q+8JQ;tqP4xcG2hxrQe%NSBvro!7 z<>v!W?Bm+wmR}D%u3wBFUYsUk=N9l}{5fT@9pRbszs@gMM&<#w=_?W5NS-}^k%L#6 z9Pgooj{|-xE&kk&e<|?p6c6UP_J5=T`}xq3K#b5rzQIz93MEKdjj|cliC%5sB0v`RxvBww?y{NCRMA~%&kLN#} z`|v2pz!-9p2=Ar@ziFrZM;&+u^xpt@JU^p8 zak#jR{~F-6fX8_Uui`mQ#Qy@|@%)1z+Qt}ik_bOunZcM%<8cf*NrXQEybbUeJ0@J5 zz5^ya&nWi!5q&3Pz>R$?ibn=@a2x-lz?)J2|H=4w0Z*QP{v`fgquJ}14}2#v!M^-1 zk+xbYzrMdf2FHMtM0ii&@&1GPKk5HIiYKwhesGeA{aT9Wblwu(gclyeUcbbDQvW+i z_*uYDr279mhF(wjSm5#f;XtYqW5`J&{7K3_nYX0;cREPB*T9qe4>Cj#r+mQJU*|Vu zxb?prcvmWZXq#JJRrTNfe!~xV+&|HG_$rIzMB=v}cryPH<~DwHz~lXEFvphJ4T*jG zaqRsE=MTn?({(`jYry0An^V7un}nBFWA~qo8>e~*Zx1}~pSbT39mGaolJI+h$L~J~ zOJrXx))D?I@VXTLC-YAe4o@Z&&rKhQ{WZYr0FOSQ?}GS&gGBg?z|+q!+{S+(yu2p< zqgifwE8y|{4L`7)#vbhu|Hr}RhdjA|ajJvxF~F1OFMNl(>4ced&N8^Ylg<4^j|t^d)$)9*jr`kwImOK@g#2C&R-3<`QZJB@c10S zNh0=r0LJ-)z9UP{0l(8h_)6gM`G=gnNI9px5WM_?Dcl=>dw{s*dw_={Sa1J1jUD<% z?2L!Qk0J0_#%bTNE#duv$MMIthh^NZpIpj5vVXFETY$&-BTwc4eEe-9{*Q#4KfeD( zzwr#uX(IeQ;Boz9?9hKseIR@^@Ob~hJg2ck9|>OuJcJ+y%l^cF96V6*Kl@6kh=WAz z>jRJT7k!8O0LO{&p}<=MPsX0p7!dw4@HqZx7+F$|`Mwfq_Z@g6%KyIF|Fw?rQ{m=i zLh+>RuWkP>PukW34@bz}_=)^o!+$6v{0Kt^1OC^`V^dO&pZiLr-D1OEzh4mofQ&<5 zEY=Zzr{TYg|6Sm5{{of0*pwC zpXlS(|3={96;$v2M*v`M=Z}pEd;VbT@Zxs-;(?z7_5uAPz83gJz+?Y8wT-q&ytGXJ z@ADg{V@UW&;PL#3d1SfePgC}Z@7$h02f)oALeRT@uwR@e;{QzG$^DPXDGcohzXo_C zu#YIt9nufX_mv2L6?oi#NZd$yUo6&Ywgd_a|RedJX?l|!CX?&j$t&;E}@bGR# z>Yo!&*>T_{7>Lv3+nAZ&f$T7vGY$^!iQP?-~F4E{}V^bNxSnj9{uMu zhJ^119>)*YEwZGX*!d?(+Ud<=-@i$oTl<@UhgXpQTYvv#@2};=-X-7-X*}6S{@VVp zdBXRDhezDMIrW?9A-oyzc>d;e-}@^c4m_E^=mV#I5c@fl|Cq;%TmBXBu!MX2kFg_q z;bWhPv>QMB-^G7D@b0wubG!apfXDg6P2aI&#D7INeB$`y*@c@#_(i~z^ApCNl>bf_ zX}5#o(LSg5UerzaTfmd~^CvuGE_?lR!_w_f1D@W0Zs%V(@Ob|C)BUH4@*n3er?%<- z3(ouX{z9A{gyq(LC-C_F39dT{ zxP(zT2Z`9XwE6Y>MIjD2(uDBo!25uG;y0)3knp2y;r~Z6@WT2Ni3(z(Pf7SR;NdI4 z7|g>~!u9x70*~__c^m^W4)C$hMC=c>WAmJHL@D9jfXDZLgP?+xkv4rv(zXqF6UzU- z+W)nV@aAy%HKcfM27vJEf!6?@+&@YAU+w)hPuiUW9_Rm`?q8pPpAI}(`<&___9rc1 z+sAo}Wt_%<@Ik<1{PEm~EVuj_;NceDyZ--#?{CjOzj3iCb(l^5MI{mu;{Ym^Cfyd`3)JJp@8+}RA_8{;ierTW5 zeh|K%@}IDr_JQ#7&cD_lvfT2{z)y$%V_%2EMf766uSDAI16~(+VwcFiSga%bL*ViL zfq70@IzMhP`~5GL3BbkaK0xg60Ullf_4<$Y2csem65$1xuSrc?+pAjTKu@3 zKf8g)^-t^*i8lI5#Qwu2zusSB8MnNq%fB1{rNED;`Oj_t(}6dljUTuEKL#GxFUAUO zb8CON>#y;{_;LIGV-fK5^@BP%Nu*s0@bC!pzwzgG{x<<{N{b(^Ax;vpukQBizh6TR zpJO;lgkKH3A|9Ac*dVl8xX*b^U*Zo)acMz?f@c3_* znbGWXJO8VIHv*pMBa&w7Z$FZDB3|tABlDifzlCUpgtr179)Wv*|IR6kY6#y3{AA#f zm4J)e{x9-|e}jzTQ7@;7*uM~55ZU^x2-Y`a*0yymh z;RpCK7>2;3-&n@2|1*Hc^BZ}8M7i->LF_LB9`|qDx6wA=Z%K9o!k?sg;y01MQ$zS> z;LWN2BSXqL<<0$m{r9Ihew-#^=OFNgU?1lX#(>-P@9Yo%MkVDx(aDJqq-_oGumpO? zA31LAZw_EEKt(UlY3$JsvHubf-X{Qy${_m%8{gATXu~<*qCIe6QZyY;P{yQC{-5uc3e;hk3Lq9l4gy#?b zwSIB$A?3f*LE1S1KL_k{I`4>H!XE=3#}CK;Px{|L`HyuOej$w?0vndFNy77o9j&|F`h8(dijvvQuueVseCAv|2v6# z!r(&xmQn3cVtE9WM~V4JDvuK9#VRUKm)I_bD(_3;x{9OP(IxV0sdALqZUdF4OYHAv zxUhW!RgV($iB!HXiTqZo9ZKZ3!G-0?R6YeHCX`s8O35^km{4MQIwg04#Do&dcTsXT zNK7bk-W-Gr`*j#DjC&4TnEH~~E*CD8$Kk?6m+1G&-cq&{gU@Af;W*u-%26VJ3oi7p z5-vg?E79&FxX`aBaG}1ZaA87;`3AUHu3qdDH z)XM~kb_P)8bSVnu(ol|7GL)31+R-Hz4TC?ZZ#Y%|cM|L6sdkD~JCyiQiIO9!a+DY+ z6{>s;l~<$k<0+|5Ne!wVe@!q5xM?88LCyn-2_=5Cq4FrvA3G|~iNvP!srG$IjHd&% z!!wmDNJQKy4kg-UQF)a3(SypP#E+ho^a6=-@CAu_1F-Tp67>gB?NA~g1`>4_BRnYJWnK3JWBkSLghJ; z*ff=DPnTGfMwO#Pdpkj5zcN8$)dBqT4-%^mQuQd2%LR!=$EfnZlUQ|}YIlNahY~;L zQF)a3@g$X}OMEwm|6V$d$4#o96NybLsP-uF<1I>7QspS|<84Y-QL-8fA<-r7lMkRA z<5ox2qr{I7Dfx(!kFgNa-${(yORC)~svS!F_?pV2L_3XCo-VQIEme+^7xJx??4aaV zknlf7C;p)%e*6Z1Fpk|+IZFK4L*-H8$DdRlCHm11|4XfEFV7)8!sHo}y;J>v^S2*^t(Uq@^eSZvJDe!4zE)kl_-yAj zN27PLi?i;$($x79Tcl+&z940bU!H}Xz(NVzqV@bPmou6)*C`sA#zhZw|D-S@?&hJY zQTUuh^iq#gY`qmuo>CSz3X50I4iEV9^#0hzNl(SAGYlN>3p~9o#d;?b{(xtdg6)IW zJsqD+Q`f!jH`qO6&(AfB&9culj_J?b@{y(&?^z@<@1|a@d^=pwb;ih;QC9i0>!uD! zxD$E$+}kgYPoJsLQ=pG!`-*)DSo>uu?U#|(R1VzMO zeC8yHS(=+>GG%z@d*;*O1SlDTn9d8thHP7!UD8SC2CwIo~rth+Jb(1hh3J!e)V z=A3`lVNhRo@Ig6CqiAIF#!(^o&XwrJXIzq)ZmWjsE7a#qUpi>3r}5)9i^!Y{&EGOY zHXiic{x0L_iRF`}s|=IpUl=J_WBx2VKxCc!;*z@?2e#x?oi{msW`^x6P(<|NGcifb zoELMPZST%;{W5OVyt&J#E*LEJ;-<`ADV4XU=k2=9tjSv>Rxw%6YE1aZkn#~B-6<9m zY$Qseo2I2A#MoJ#9?lB@KRGhZpDOzSR|RPBj8WL@(Z3Nn&cM)Ky+h zm?Aj5wBNfbW6eXc0hfhNZBd&gyV7s@#?#G-LkDfSGmXEw_QSffZ+Aacw5b$k7KT32 zau!|6e}A4!+*?pY^x`{Il9(%fO_WOV@&ba6e|0-`-b39lQFG!8xnYb67ZgQa${)R< zwLh;!e^8fMnX$!$nl)b@_StqCm4=uRMms0wdMiG^wSGgF z{k_BC5}=6a9ZZyhWNx2v^bzk!wVy)wCTv(g&||Akd9vP(iA%d~GAi}Yu0Ofz-YCrt z?kh4r$?dpWC?jfdNOX%;w9MVxUgjy{EG3uJeKfrSbiF!dCe7D{PTELj&sWckT(wGP zh@MJ?W&00*u`5x7Ls!f$3kaBOb>K_&LhT7T!lz2+l?p|@$v5i%N}w`cf45kVGEJ`_ zU9ZdB^;^7U((<=o7fLvp_I7~e-OJ^l%C9@0@|=?WO8frpkZEtivKA+-8tPQm^Ba9{NMeSz6xR<sMmJVn8**V8ekVr!#l4LrW@_A#9}|6-Z|p8Djw^C1wth9bd6`vG z=fj?xQO@QHR%Z7<9hp6Ik?qMnZS5UH^fqgrxitOxxiN;H7R?CdDQc+-0!2hGu4$5( zqc1FfD(=cNb<#vljVpGAo1%LLD5~nXop)j~D)-#ix%_Er{jSTYZx(zEZPYZZV(QNw z7Z((L?1^!)YDx}ofBdJ8{-;-xC6N1E?H=3y{IN!P z|LM`|&9V)=-mUv8tAF>HVG}cYsr6g483h>y^XtZj1zqvDEMCS+*smuN^vG$SM&2^7 z(1nk;iDu={^x`{Gl9*59_ReV)({wJ3dt#V=rbTu0&Lh^Xi3+a+#EspXW>g<4>KvW= zJm1heim^{N^sLSlob^C*RItu07WFeGDImz=Ju{@-q8lG^Up4vx_Qv2 zYMt=m@++FA9Q8ab>0hb&?)DDpTZ2cc+;FHn5w}}vn^yfb%hkLQHy5Z%oC}LjR~WSS z5>2n{|IzzoeRt8+qnp(wu1gLqY>K{g`MB=Yc9qnVgV)dhY|_%8y>QjeoZW46s~1KO z-Cgm)VaBRX#R0D;@NCkps1iE48sGI2e}~caPH7!8!rSuQF$Ir6IiEK3vzk>(IkqVs zdYi9$UNsRpE2L8Dl()Uy+9In}N@Kf0?Ed3|n|-|>=-vOJx-jC~ht0T$5xsJBy&A5} zXCWsHNADP{b7**_x^r5_OI59x1NC!8#uR4Dz4W##{c=ys_T_?n|5KZj4woPN`E*Gb z--7m~#V!H6pFAH!zt0b+>y6{{9ecd4!pWgFum!`b>W<2(gHsnZaPiLp!th)nIz`xy3t{7M>oV}y)Liw z+V0{ruTtPZj-wEV{kEe9vz_VD`71)Y1;n@1U>d5>Q& ztCFa0>czXZC)Ms~YNYPd5jS&JWykH2ETZXEpzBS#GyCQgm)DmM9JBDdR+T3?B7JMV z<8|ruZ&A`VQS)?f8HwKOw(V3qy42ZI&^WU2i2Bwn!2@%e6*p@x5O`^ygZDJzuOeNq zz^!5tN#;VIi=J+8zqu_a6s&)}Zil&jsovJyQQ2jwXOxQXju$_0!Q<44z)emS4RWRP zv?niI(x7D?nw2#BO#=RAh3HkH>s6lB8WCEV=%Q__u=e(wsUj;c3oc?FmfQKEYhVfA zw)_Y~`>n(6o_O77{HRve{g!It6uQYzb-X%{Tax_zBjVz=G`-||3slbxsL1LpntQAA zf#A6Ib^iO6^n;_cFP+U2OTILSr)$*VQ4W$qx>d(6B-?jySrn)5_jSb9o*m+2+^>Az zULM_k=@Gu8B>v)Af+XhQCVk09t9eTb)UI{%o(b5U8D!OYdDpAChuY+Yo*%t!)Rkt+ z>aMG^Y)uRk+_E%Ed-BGyTUGQo79a3Bv*Dph@*z+}^o}A*K{A`ScWs)M+Nhv<|JJb8 zpEUhWX|!5Qj%hg`8t>=1@k-H)rgdj63|_qWv2yuY#r%n8J#|Y??RmC<NA} z^fSqkEOAIzQJT{DGxVD9U~B$O3uK2()~lF(J5_6-{IimmUkrBV-`QrZOVf*I6q1;X z7xEU2y;+L(rQM}wK_|PCJ*`{gdE-NT-8x^tc>m!0*IRP!?q^R$KJgt~=jnH4_t#HH zwUl&BKB*@8c6zHj8~{Zm4)}c(NzAM7<}FpY-jKCKtYH2+`@%zhopBE;Q?DE-*_OQ1 z$oRz&C*c(?A11&0@6Cy1&Z%X`wO9KTR6`gF9&hIjq?AADmjVc5F& zxWx?V6R8m`^nGU>Q3{f|e@V2B^b&^~L$(R1y!T|v4#>*T^sApI^f~L1uk=n?-W&Tx z(>vWe?r#75G3BX@P(_N$s!0lW7qCiCJ9yq+K8)_K8eMOx%-f(@oA|>XeYcA}Tjr%O zq}y5hcs^6vqtq%*oDkHotkaO11fcNC#v{gUlOLbe5a*{{;iu?<259|<8PP9xM|S! zzHuH}zGLOvf>k@FI?Nh=;BW~;eAc$=*qIvL7y6xRQJd4hY?;e|uM?$b4(L+rp8G!Y zN&Uz7@8+EQmhH8D^M1{0eAXs!6=ZYV}#=Kt?s<)lCNbB3W$`p6)P;)zxj!#cLH6nnfdH#drlwU zUur1)Wpkb9?OI`;h2Nhqb5Y#;s68>F|4wzKJpb)dYAsj0&et;vS3awmJVt+(YE_us z{n0yfzD&X2S`mM>=z4#eMjkcYb;>cj^k-PX*xSVm0+z&`_Bm{nI;>;Pp}K38dgVrg z6>qy;|E4=|!A1X$ZCfAfTxrbIJ?hwS|KJl}C;EAEB3-X^%*A@QABN4@j*S~vdG9)t zF1J%va$TUqG|>SL775+!&p8DS*|EOJ=c9oU zvfBUI!$;cvWw#aCsQJAc_sm^~rdOM;_kP|s5#{C6er7(N+nz16OnAf*a|31hu9fHQ z@0=JSe)ikr(|p6e-@V}G(YnFt<+3gN_8yDWUzL4?ak-_jwbffAkfwJsUGJ#GJ)^C8 z(pB1SujIE-dpGxW*0K+uqCUOe8usi`TJiE@wu5|!pG3Z-;n^4uE2Hn}*)uMcAy z^IYG!J669SbL+!QYO9W<@@`O-G~ z;k%?e^}DD0k7orx-NJKXO~$yQvn<<^wM%BGwb1;oCJW0%LE6pAq7azRh;;9<58@v_+8-pa4eiKaF8uZZIiz(SJf8Xd)#kw+Mv^UK( zDpcc>IiAxdo%LduVAYSANA^4Sze+z>>k*|Onfs4Cj$5=Gnb-)`6c_{C}MB1vsM)&Aej^Q~8m(;u{BVzd3ZG|)l(ol4i6 zlN3`V9d+t);_$Bc*CM4xKFe%?fo9f2Yy)j`VvfKk(av>b$_E zZMr@xZ}XzI=1I-IR2%hKxydu@!mZb(8YMX&3`Yy;FWNiHb& zuUNQ|fA{PQPZkHxI#4fyXENe1KHHPTEcom>zk5=^^+{%Vx}tl_x2n2*+l_W zu`c}Y6H7%Omc2>)5X+~bbWpj_EdOw5&0(>CrZxA@`CU&anz<$x6cN3~L@7w--tY(Z z?^G5lkF%a|bRFYU*sU**Jl!pq+aEcpr0AC&KhXc0?ZNDE{An^%3m1~BNTZYkN*78a|$)lel7P%M#wD(f#=R4lWjwJXk9m z4vL7sW<)7SW>LOZ?r_t&yeE>6Ew?FKmBY7IX;i^s-}geNJ@|K}jV*X$Va)e7!C|1g zNaQz>`Lc;gvB`VdE*VD~TYR6C)8T{fGKgMWdn7UA%BJu~c|REU=3K!9kIY+o-`7nR z485ex=Zp)Bt5}UX0!EMKV$2Yu6F=}>mE)B?1-QqSybQBf>k_jH~e-;}EfK0?K+lWGH9hAy~E(~DzB60;;ka!=B* z;+1(@Cow%XtnXLBT9LoNsd0~v+~+I&E9Ngcyr^x+rUyrhMrTjr&0b+!KVzVg`rP;9 z63+Nq?#VJR$OT2j-zq?Ygnf1`R2ul@d`(3Gd}0f7;3UGQpY4WI&GW1WnGB2%(A-N z57*V|7-p*ktIF)31h6C~emBktp!sV}*Q@m7djG+LR^9QDS$pd_Yb#@{?AKQb7tCyy zJ?(Gryh3b~SLQ4K)esQ0D=$q2zo+i<|pP!1|{oG|W-s|SZdi5BR<&I={FyaLMH)S$tCdD;upX2@^#2s>R&_r))JWaOjVCDb_z^QDYm4hWH*+03=REDy zP_dm`v)t`swWV=%qi>qjEuVG4G=FXAdSec~e8tl|#(nU~*rG(+JLw}nj9qwAZgKkO zei{?k^Q^2~RoMU5pqBgdBO-S(pL90IvTljWUu!ybWxkmoOKi^^Z<=0w7eNy9tmQ|( z6MDOr-4A*kFF4(0tnaDC?al`dB_-@?Xq+qaqjE_5tFP^=z3(4VEVl@i%JqInRiKZOf-ZOnt-HIW#TL+2U zb1iFkJU!lDk)csjkYZOR$`__-9D61(!yrLH3=k&ki-HcxX*Izx^D` z^}gxaRf8wDpYIO39oh5XyHL|9$(%*TNwVvM#;x7|&h7E{jDtrX2Cms~CrfKUh&<>b z{yNb0#!T4tA2;**9p-y-|EoG1`OQrgwktCDS1*eYjn88we$=dO z(tF3380nBUg;(?!^bguO1 ze|c8zp|PJ^2bwH1nXGibsYXF;c;bNIrm3yIDZ`U^?;qT>Ie+n+Io|`^^p+TflDKCTtuCG?FODoQ>?$`6HM{WC;9J;Ko~G`&{qGjO+(Gkq30?0y?Jv8O z6!*)^m!yxl*t2SynM2PCn?v)?e*RF`>Mg-H_;JMSWVwb`k2euJ^NItcB7#1qN3KrR z&ouXVuwcQ-1b&)c7rI{SnJ4?N<@yu5`VtlJ3aAS==t*72A0IUZ|VK zM>(c*soF-GaU_y3_Ug?EhjsE8_XS60?l+b+z%LW{&4I#O=3V49VRd zeP@G8>%D~Ie)D)nq-|K9WEHTkex5*2!=mA9N_0j{NZRwm>Do7%UKU;Nh9OlW4++~E z8@Jx6(!2S}_gz)Cd`E2Q)iYl2BHfJEs7o05)P@YL_@Fn^^p*14rb~7HJ#%(GT3zW= zyVXDJ_O)i3UJtrn=BdfnPBsfe+Ea^^8^)e>JFfUGcg&^bxl$4m+blO1gx9V<-M>qv z>-f<8ZO{8(pWx^cbU?)4D>lb+;-x_oZ@loO>BX}INlcTKR^#`vc4u6ZlYaKOpNol- z?2-XPv!aVmxvvX8*3gja7Hc=(TB);pmVWroKSp)#xyZ;9&bLMd&T^TxWWI~l z>tk6OwLj9cv&IW1cDX)&Jb8wP08KC6LrG$`x9^dVU35L_+tX)`M@z5FSmR$Nd2E12 zA*+8z`ow{|gXG@jA9bpWtI#+hYyI%$TB*?d3Sr5 z@o35DFJYRyzNAmq>ylb-|MG+1&_z4>+Fyw5`2H&Cr>`l_E#fbZAxX^2L#q!=ba*?V z%$|4cu{j@WqSxB3tg-mi@ybrXu}sC94m)_L) zL*htqzenSb9a%KgWsbd5u{I;#QtB0d$$D|orq6}xrL%&9O~hZMZaWW(h+cdLN)pp( zlG~;GH_j$Z)mR^MSh+L9C^vRi+~IzwPrJR_<}WjS-OF8XOzdY!JRf~^l5Xd@D-P+$ zhF8RYOW|owl9O3%B0&HC0?(`@G4nDP*ES9}l<71tS2qeYo~XC@`J{LAhno4+9>3cV z_Tl`pYKO;S-sdjft^H=VxBHP>a!LG!erc8dZPSCg--ndpo=f}(U;0FsYKkT&R)6h2b;4l9Q;F+hN2caR4V5!Zl|QC4r&34w;@*co zl2Thkn!X*T=?$gpo&H|@Ov8zx)oMcr@Vu8l<@#i?i|@R{12;Y_Thpv@>HU-XtV{iP zJ_Tjh-~Z*W2!ScX@=>6_#K}8 zGGyIH$C2YUH^j=7E}Z$e`N2}Z?;URX568)i*{1E6_@HSk&|&#nS^UXBlTUXfg=u>6 zT?9$Y)z)QYOMHsVv)2u3Pre(U#FM(1>281Zmgks+ZH1nVGh<_d#ZtuG)&*zz-pOOc zPZ=;pxk0hL{U`4__1cIC)3Kn4#23FKA&F_`63TN$YxR@!M|E@5Dx)<|zFAuznyDEs z(KW?6B&W*5ns?>LB&%WFcjvf|8o(3X{y_V_u7>o=6QfQ_cMcFchi8AHH-aby$^2A* zFmqDmJe7!)K{}R+PG^PpRj2VUjv6%Z?$k8{L+bV!*6!|KUB0|P^X8?VeX~YgSUJFs z_kr`oX8nl0pAV0jN`Eelr0aDXrk^=rWBrkO*#+kYb>u4<4YCz;9{F?4tQ}{4t;}Y9 zIB>;uOU?KXR}1vU*Eqdjee(H-#f=dmt)XFy{A(8E`V6M|yPU2!^K54JqjC?c_WosB z+wWXGef^=-;@%q>YNuJ|d> zTjcSTrWfDIki-;}+T~unCa=ysHf~yJ?R>*#FQ%_O zb8y6<+k=Lre=3z&BsaJGNz;T&tMorcPNJ{3l|(5><}S~&FCva(c{gsn98%7z℘2 z(qCk`qe0`PXAx@3PDUk1$7pUmqWZ2-HS=M>0gv_*{aX^5T_>+NO&|L`=i#!J|Hsr_ zMpf~B4+96eba#hzN{1jwcXuNlBHi86E!_%8cXx+0U%HX*PJsv3`rqF(`^|Rw;^SUt z;+)xMyz^>+kDE8pJ;)S^bS+OhVnufSpfIC!k<}Ql7DgW>`GK+SW-Q?L81lPqlosbh z#%EE1G$V8pI0T^{Rbr($ZKLcPoJA)Z;Cjag=r*GNx7@Zo*3D+-yHq!=9%{b1)Ujsi@g^pK#|5`lth8BwVG>7juAmeSxkr4?)3x z(vO<=v3TqX^^}fDxJm-NxRT*5y&?K#gpN@6uAet1?v3~Nhl)R4n>N=c|41teJ5+1M z`Do0BYwvafaQ%QT=Jo_U5yrQIJOo191Np#iSOHs7|C*8$+PHz_RN8?vZMsGy1KwD^ zca3((^@CF4g~kDCpRj}Z2h#D_K3NXEjVXA1-+HUy01^B!Nf~Fx{W_s6dGq1M4An=f zZ&RL;5&pW5vKi^uqGztn({oDtK2r$Oqe7zOi0DJ;vnTU5rPPKw%KgA)Byc|~0F1t7 z5U!|SYBss@e;v=ZP$`t1Qy&fYS%zbs*ceK6_w^BwKc&*5>SbL&y?CO_sWNEWJO!vh zm^SUC%n=(y!x5W0yv=FgdIN#35*LK>=d*T3;>v-`TypDQ89K2(7PCW_UEZHxgpdt% zI(AbjO;d^F5*}J+&uA@~?-wYqOWe{GiyCB7E~SX_0d5e`jeB|&o}0b%Vtr~!!s}U< zC?m&R-XtzB`A029=Cb2pBQRAw7p7tF0RcOqU+p}JEz-IY&kchBQKNk7Z{Mgm0C0nW zuA5#-FQrYQa56E65lZF7{=tZ$Ra8&FxHBr2AjY6ebIB%#lTNFtW_+UQc7k9 zR|9k(rnDpr&eZtdt2W^Hgz0V2ti-N*wXH>Ye@4$5JWCEfKTR($ zGwpPIF8Mq%H|agZ7+s{`CS_;lX8Wyn=U+^qzYE>B(O$`@!q9nkyCjxe)i zW2+Y~NfD}lIu1UTU-^B+ScM1Yo}KO&bI^uzkTj$eAmagUIM98v;zRDeYKi+#BZjvh zrDe<0m~*8|FRKc<^$1>Ep&_O6ymsQyWqcB+yurPqJjUjZimjv`&9$>?H~Gla%j)eN z0&u+%K(|f%hbdC_iqZK3t=?3gcmLsmA5!?IO7h=9z4iIEIl&ZTQR8lBEBn`Np}Mz| zyN^c0zIjx|HiYbMrb!C|A>#ly66jhZSxa=P`3Te^n+{-lHca_n`sl-)NSa9hoqZ_T zcWvwwb#HNMm5-9*M6-KGb7#*KLl_!9KWv#zPySW_;ym^;FwiKmZg~CYJ*9BzR!3H!AW=uqTC!dk>)xMGiv+bSK zr$;hP4rGX|+nt|V*7Z9=AAhjI2DmXmSL5OfPnEFDmWSGKZM9;#<#v$ML_^;CHf4`w zRUzzxj^GD|wp4vYfvV;0&g~0%?VdcZ7&sj5l!Tv&njuE)?Ep6x=vs$U*Rs0PTIuD% zBf8F57o0mLOl21`hWud0!&WyvW{m+k+*doGWaE~8hyEfk7kk|f8d~tlS05ad6LC08 z0`6zU0o~i?`0tL1rKbwZoz}P!xgE>fC-}SZ@0gvz7xeN{vRVqAdDg>UA!e=vjy&vP&L$WZ4tRo6= zAI7Lyf?pP+5U&O8u1@DyqbqSyH?IR0^ZVd+5Yi*uiF*TA5X%zCULmlX07hRkNaswt zuKL+oa=HoQrh}*4h`{q;Ou~FIHh67??mE=$HgMvE<8S5!H?<+6MDwb4YAJ{(nj$S< zn}nwNYYlgy5Ws!w^?(C}cDv}KAI6-0sB*xx_p~lXR`iLpN!^IuVAcC$o6pdD)#e>o zP1j%g8N^D-2%lrykw3s-%t<93K}LHbqZnjMzCz%7e}K`~3>tWEH%zeiFOJqXH`mjm zW_}JgkH0i2&|14=u2NKl;eq@U%_0}RJI~zy0|zl=qN0c}yyo)2EgL>=lhLi#dthHV z3F!XW4#!bcIzvy+>MaSlySZZ^ZK~lxbCGww#0StA$ zH3SwNM1pI>4l8l)p6@E4-ejPA)kLlU_uu#8>D?@mT7|E2zW%gCF+MfyXo%*CGJ2Q@ zw_Fly-L$zy$LX37>vvn|(Q99l^WM39@ikHG#zRyFuFu}~>cIh8Xv!B)kcP#2fya;G z)eV(Gkc&BpcaK;ewmnf0wqK}0Nz6NzVbV%z`O)_tfq|ak->O5%gRj~9x*WM4^gs;Y ze31%9Uo$A$@{0@s6xW_$12!CCv04wJ<7E{2?J6;|K6K8ER`~Fasf~%&YQuZc(GIPS z@07~;^huFabWb6sGKx}zi{5WNRPb?21G*pZ@XL{DCN-HyHI&n}$;}ZM_-oI2yFm}U3_ z&5Uo=bbrPNiOu!HQ{U&l#ab+ku@zP^1A~@sD!e@z?xh~N#}C}~W&$q3#N6}zG~aB0 zlWZ~r+zg=G+MN*KRI5H-_&T8WVk>{~}iVInx#HVbT% z>QQY0+8fD-)QM03Z0r{pKBjLm;UD_`K(B%lAj{-OMQ*c4LnM2Jz~h?*Mqe|Chc{)e z55M8!Q^L+;xt<@|JfWrn9CAp(!~P0cLR32~#CUhymT7uYmkRn7Hn1(akjPE_S2`XJ!1Y-vcN+d zpR^bmAo;!oQMpN1KR#oNg&vkep!cLLvQQ0hbAT?K;kA2{Oo>g(T(;ks{OX@b!-?!U zujE67NOwjyBlc0VDNw7c0fm*4#~-75w`=MNy7;#>4!GX8H3~RD z=q%dJk(>%Xnonl3@$~%B6ddLm#zgL68}2_%4(gI`HOAe)F7}#VHVysxhTfbO|6R!? z-F|?d-b)$-RWNO6`4s}YZ@nIHfHuy4oh~y54LGu8mXOL9YgdbI(o_9z6jt<&4&NkG zIgNu=Xj@+pVII}4J?S^dvQaF_`YB^iv}B7(&Wl=?30&{IUDMzIu{NQJd`Sq!q=Ndg z^OB7B_+Jv1h*#mKG5rrEiDMf5Wq3sm+S`e2H+_8D{`={i5PAT7|OLroND6znMC8{7u)aa2f7>q-_ix$9!at~=(*hUD-Cny3d;H`k&eC)4aP4cy}?o zbx8~N&bH;7jV`_GX9E@^)uvAkjk>*`W1!!Si!lalr?YHh8c7AK66n1`;Cc(d=xYX@ zm?fGs$(gH|h6*XCy2T(OC8trbdba%3 zGQ$5H$KI8tDtE~c;1&Yi+feBVH?Pu%*ko%BNBbiS0uqf}0)1um08I%M=6(AK<|+1DbTug1W7i@@k> z2JvGDlWZlftRD*|oMz1OQ4NtaXkIlWl=F5ue)@OhA$Y%#>QyAsM|MtL1ARb#K8vq3 z=I`4=_}I-cum2s%;B74e9^Yc1TWN_pux-q?;J4RzbK=K?g)Yjdm}(x>s9zZJ(XQg~ zkIDnrZM(wcP+rn!k!c31vXt7$$&NH<(cZQe&QId6m-hd6OMtFef*t3O*y&%4m;Ro> zHi9(d8&{fC{0t+MEoyU&hj~5tv>5Tl)HT>NBprakdlJ*%uNib=ya?5=*__M zp%m!ei81~*{!=;r^MzYDIOQnQ$2l5Ftdm(A5`=~VOY1;+?s0QHsu-TqDb<8G7&1toqA=Nnj~jgGj`r5^0>O_aVleoI}y zt%`(P8Co2d#f?)N?W8r!RQg_g>`}k7s<^q9-tE;Z0Q(x{K$qGC!!TSyIscx9?mE>a zu5(v=cIy+-voz%AJ!JCku@xahJVh0S4U{Fw+1&*%A$HbmZAh(BSX2S*uWKrOX$m3)6oXytqP8qTX01((*#Oy^wWMM^Fj#Eg*2`EjRv@zBoi5D8kjM40^GN` z100|P*%dB?B-t;#mYeA6>1*mCcV6u-&fJS0MEQZ@Jjz$q(wD_gG5&lMhXFqrpsFsC zO8&dJz$fUn(f>+UE#@Tu3W2YS8Zi2rL1L{#?JAC`1Wk^PwbznG9^1P=BLx3b;td!1 z*%x11f27vo!?~#6n4IpclV<$)V5nqiKi+n$o6_mHKqIR=2G}R41-c$>ZCh+H>U~~| z0wz65KO5Gepswdh`hO;mX5jq?vvBlVKxSPT`#FP+%|mzNz1dQgh#|-5J#-s*vh_xbu;?d6~4iemgQFC}>QsNDi%b~eP zF`k*6egw_`>)Z<#tLyGQzVz;TwZP+04|LV7oFcGJx8=)u z#v4k;q;u#d+l$nN`*rS5Qw!4geOA`S-=kq!k}W0Rt@n}Qv*!f34M2A+xa4YQvG-li zGJA{<`&0>`n~#f;R+BwZD2aA{>p&enDk~F_DB>7Ty~C!apkm@)(Qj%xlrJ!*Wvm14 zjpxAoP9xBzHXSi9{m}X`BGjHbdHL7a&*o%Eo!loF!T?G;vmnliIHZq}>h2dOV-l62 zu<-T8)5wv7cOu1-D$1aGCb<|QK)r8!8Q=gNa>fjb1Y1H#8FobyVInj9`&* zIIaq1*Zq}K>jMeO{E7)PBvjT!VUN}XhA#lO73iW*^q8GM%pZj^R3E-r_dlW-r?&k1 zk5ec^79Ab2YiwAES}^DvPAefcXA+#IeQp?nlX_TVkG^)x>CE-Z2m5Y-+Xi$u<^!%= z5->O8Ao_Aq2>N*hbF?xnJT8g0Kbm~3q32}4Rw;`y=3IE9z>N760-@w=bV$}~j-kbh z3q#-p_Ydtqfcy4r4-OC+o$>(f(JBl(#vP1R+E`N*0L?Y&*R_0VWG_+ZOrepVE56ME~N8e z-&VEkvhEgob6t;*Fzg$^eY>W?0ZK5r_%9hdk7o!MVf~3mI^ye3nz~V@kYKzC-)|;Q zohClH6!1j-O+D+0CB?q^+QV+sU!ay3sE7iv4- ziBxMqA%VP-lY>b5b`Jx){Xlnmx?u1lGE*cy?PZ~L3`svls*2$cbrZUid6Mxj3K0pZ zh&`Vc_C?;M^VOg=Ccm6W$yn4`{YLXUiz1vQ4X?QbxNmb3I6%}ZoR*!ZRCrPZ^X7^_ z#9mNxnoXn4F)M#S>8wCE&l*@guKb(lHdx0}5} z;Ccta=xYWI#11rPVzf{arL-L#6ZsmVGTNdJj3G0`#E@`HsGZ>6JDAXKT@QNDGvs(5 zTIwkx>gKL)%{TULw2DHnlIP$9+##UL9~~Mo%o*7$I41zTh-E_hPi}XS^{?GxYe~+I0u&4{Zgdb?Fo9s&&WUl*kvrM~QA?4(uC^0A2WIUGnJemA@ZWrmh`bod!^NuFnVY-VIXsDy*}N zlVs%S{8=ui&^+1MxMt-U5zdw&Br>k~>!x)SB)@T*QTW#L1s}Ijpv(5>n75(-I+=kF z0_PsC9XEFgRWM0c(mU_uv2o`SYcxrK2=inp^3r>Jv}l8}g-oB_>ni*~!+3er(VQ&< z0r=cK26Ra{0wqv#Oys55;D~DNbfeUNO^=78YbukIUE(-B$;@U2Sb1$TFNv+I$+e@& zs>gAqOWnw%Sj?MSPol(Cr~d=g`_>Z&2Z(iOG)&L*9EZgCkC30VP3}a%tkHkYwNZD} zkjzc+l?jp=fBz}7^kBl8?2YhF-O7AuzUOdA4eCUZu65x|k9~ZFz~e9hMqe|iJag)& z{ILB(0bNyv|4(}%@~_8LKcuui%1qM#XHb-1YjLWO;+}J!fFk1BqrklpxZk*I^zBFE zV}QPujnRDoaDDc6Zh!-nrF^8qLp>|;M~`YvEP?31yv}A=w~#yuWWMD^w81W>9TV6Q zjK74Aa#PLh(07JJ`S~wJ%_Ku3yrHM?T{<@puMoK2DKPq)L1oxJqY(ewlx$acM|8b(+-Uuv5QMi`zsDAKz62+?Big3(3%5zOzPB z@5=)Fsk1=W`^ZpHNkP`sYp9Y*(m!3}H%c7CKjr^)knlSPYgsm+hU1}3E4}>(&&yb) zGqt4|_x<8h5Pn3!;g=?VPDQ&k1=RbtmkbV&373HNebXpM-+j1nDKvjZ8J3@43O_$u z9lxBZq3z~)yX*pyzk0$HO8W+JIYl6a@TZGPJLhr2B<9TbqlL+DdrjbRm?|=vWWY% zw@!kp^5KNLuh~vt-eu*ImG%_^yKlWeaDd=ob}N24u2ZAM)??LCX!Jq-M{0p^{J>kB{?{G7&Ey{4)A01a?=z=xYYOOb%j< zYUx@ie^S8RqoF>UEtva^;NVxxKgH)hRLAYzI|5s#_1jj+)QTxx+Y~hvDgTawjO(W) zygrOY+G<*ZLYj&lH#aVn|s}wStY(4GK`cTO4%Nk|tDVrOf zuKmGbotLZm?La;MOm}?ngQG0du%0u4lOq|}uYP-$0|#jG-`}eYd8P{=U84<& zk=51x(TM_K{|s^|vdg&&Y;?Tgb4#x{)l7%uU)9NOHIYn^We(59GvZ_rljcQ{ zA#lBa!RTuSabCEoun5~jMxdzDpV*(19@?(TrcR+x{MHxZ%k!+A(*K-nF{`CeF`#wH zx|ew;*dj6jIZY`Y)B01EHE=;o2jFf2-6(XUbHV5M6r;cz~F@=P&M8k`#!~uu9oWhRXoz}<;8JO@bipnDO zSvf$xJ3#ld*%VJF(bHhWc+O=2rzu{-(;dN(_K7NzQOg8VUe|h)AO;Ec6TTi{f28D1 zQz(P6F(m|?wUl9xw$e9@W_;i{>;hfW`1lkS5Z2yLbTpZGGg6wvodhp|6U>M&>?WcN zagE*L7*;796f%QoVqHc**l^D*gj_Xuoy>GU?JLY8z7!e*>fHmn+D+Wsr)*B-fiY(c z2-=+LH8Uw|>;)uh>xdGa5#K{DaVrZSS43|?>(5_VBz2C@c(R~_gdWGK!{BtfL%5h( z0Pfqnwcr4)YS(Os&dP<&?k|XZP5fiYk|B+|SfSB4)s#V{`wkS_oN6i7%ufR607^2f z3ruBe%AQS1_HQ;KzB|>Z@k9# z;cF+N=2iTEi^pe#Qx_L_rq88aqtHRjVG#W)LT4wMy0x*$MKv2O3p2NOH3}Crbv*b- zVI5c1);9q6t+xseP?pJ!f|O}gtDaEuQNhsO4ITrbGkHZ`>2~2}wM~6Nq!nna6vYwL zcwZx5fy*rt)SVZ>H18bsj=SVN@80s#+dT|C4#!~hHG_DIY{pAB@O_Dfa1w--WIv;F zd?QyQwDz@A|7UWiN>-IaBHkuFObJI38<4*0c3VT!0SY;cg}jGp1BinkCT;TYEMdU4dW(OTd+77O{<*FqeOP z2!4A4E03w{FPK0w;PrM2bWf@i|1jN(=w{pwEB?nq{b3n*PC@LLjZ|B$&T#RQww_Uh zY8DAi)_0)+uiJ=)OI(K1tD1of`f-C&h6w8W6<{Cy4CwaNcatUy8_KJkHGo10bB`Rn z&YVwlJW45CI7W8F=x#)bht)%!KhqFx9oh<&_oqJ_lM^Ev-9n*0j(rrpZBPe{!#U7R z!u9Pmh)7t2H4EylSNm$=Y4H8Wd^j70mD+Mb3xV=dS|-^Aj=nhUD;inwBbdAl)+=S!3QBFN^fiObDFct@o@Vm8CW&O$b4zILG?J@`YZN$HD%`-Iya9O~U9hXnYL>c#9rOq|GsZAELxO1}t+_!5F9H5VTZ9G0q z;>37Ga{c|-kJr7;3E`yox+-v!`6Gae4ckSlLMGyav(!Zvc zVDq0%;HX(p9E4g1tNyy#7ZPb?+>w%VS21G9_wq;DuMl_~-kxc}0h%5nA}E^oy`hc{ zGV~=Xzau|~;bbDJ`=jT3s`Sr0*=T;`+w!bUT~@OLwz%XWcl=#rN0%{D*u)b(!a=Q7 zL&_@zcHf@C!2w#_rvJ(p{(~!?;#T+!Y13YU@^q5{{bwQfZEe)bT>Xl)ot52yH}kGk z#7W>q#htfxTkl4JuDvc@=S!2$jB)%c1a_am=xYYill#kb(r6m8G4qmQ-&Zgo=zZqR z`=cMx20OgQ@ZzoX2*dCC0`E#i=}dF5=8w)_(yB^XPTvk{E&CPiR!0KtKfE17aDe6_ z-Qu}~}`V3Iu2et8&G9?XDlz{(bo)eV@DASiQ&v*6pSeUayHZgBA#J-hQB zJ$D%tK!K&?bpA9~bvIDkL*%}~9OW;x__?)##Zn{<;J*F?{|k^hVSyBN*KdyTi_BEU z-*=OeUGVw>9sU1FN~_ui{1k`&b(3^}r;m=N`9Le46E=I}d&vvMQj1~efHaxbGac~O zdjZ$`_T4XVfMop(<&!P$Y5SBduj7PQObTb3zu-sieVx+_f{IN)Q6$m<=nh(DmtAo%k%j$c|#$xcp~cS zjsRzg1i%FW-A%4zQ%Aw78yyI@ykfR-7_$7iLQxsr!F3PEaU$NCj{-^lK9y))48)Rf zdEuSmu}7oSINmC0BAy;wh4vP(VE`8z=!(Z;(?NVxC_Bdx=m;PuRFu)`%)-L@&TY2T z8&92xPLyAC%4!?WTr`N%TrXoq__Rzu?2F5?9Uy?5j0H^;p$l+ffNp6Drm#C!hPO2? zDw{&SvWi#FYF|N134TxniE*FCor%rzbMTQ)JLSZl-aQqD`X4H~ zU1fj^{;tC7UqOJ*ai5GwN1<^evx&)YSw2yQz0N^Q@WF`%8b!zz_64mh^%fvgA*b(m zO?_m%OBr4Nq8>38kGd!m_O{Qv3POSN8yv9S2Ie)neY#)#*%Tn#%vfyazj^p8y2ru2 z5jg8q?2bhvQkuVLBC}^^YDCfGbB7URS1itm)UX+Hr=v`2G(uXd0QJHHUE?VaGtT4O zP%m-k8MvOr=OvLeIc*re!jh%2soAE1F?D3PSZ^Wk%D}Go+&bap*meXQ%We&kBSwCN z*3JtW!1DnC=w=hK{S`f7qk{SU`s)i2@mkqp?7@P$n0I~R81m1OsRU#Xqz>;XmQ;NP z&d)I5BImQ0sW6_|Ta_Ohb4K7)saFB@A_CouObBIpTpk`cPf*^J0jPja09|V~w0ty& z4TLWT8zld1PW=g08OgYrxFuDoRINX-O=d1W(~k4A^}~rv-=XA6^xBc(Z_Z=q4`Tb4?E_i=FPMMvS+#2xTiR6aV`LEjMEb zVH;*TO2kz(3G-O5m?8F;bPj{JJt6S@0R`yduOymah{U;T9+?gGJ%TRpPwB-#DoPFK zqt>CTv7Zat_&>|0*m)6nSliP@Qqe=7)r6L>eQ^DUS|55*Ec&wBoNQttL4zvXh;PtsoO_tpsS9m7RqBwv{GT_> zGA#jb_Lnd;J;pKrju(b6_iXuJ#|4=H^`Zk^QwZA##pPdFFen9u(YyHbZnvExP5H4? zmlNtX5)5t2CY5OnU4lKPMaefBV)5D9J(gx5w)NPZUMRm=j%+bQfQtcizpX?Zc6c$*1G7AuH<(y0Ft zt5LjEc>`Qbpext-aMG|=G?4Wn8C}2ju{8(zjFFUo6Vh+2_kheKC2!`q3aL9T=Sx+^ z6w5p1u6LFdr!AOQnph#1Dqka7}-X;{F9QgO#4;t~V zjvL1{Ho@nRj<{ot_ZPgL5Th%R!5WL0eS#Ra-P?(chccMQr+LYsf>$#r4XjUw8V zC}XrubJ}@Y7uww$sePWv8$FN4`h%G*;@e#)puzI``;>HAsxx(aN~rmv02dGF-n3+U z%F<9Dz7r1E*O*nH4OZAqDJvZl>fJt?6WnpGHSqr`@khC5c!;nIzbk;yf8wFk-v=+dhaQVo;H zt9Na+d&+ISX(c|s>9)FuH@bW6FJgMN(JqF(V zPTTpa-C>^_DkEG?7u2V;srqq6cE7c&57&xo+@?|hml)`N-KLi(q4ZDrEUi@G-P%Kv zg5FXIA-G>qgg%swr)1(6jxG8$(>xP2{cX21QcFRh66bXJtlLy*NrNyj)VrV-;F18{ zMpOgd1r<>y^52D*-cRaleshY*{X^R6N`=2yh`3!tiDz~y=oEwGJa(6t$4-OWm9$`1 zgig+_RU@`fX=64T0WK-ft-;iK(7d=u<4n!pQ^L*qjb;h@5XV@Qvwg&_apaTw9y8V0 zf^Jss;1(@9PU+)*&DU=mcsi8SlXAIYiI%8w8vvIK=-$AP3FenQKO(X^SPG(t zp!BSI>*1c8W7HM2EO=0#7jcTXoDMo!Qa=mxlG9OzJW#tfdMp>q(U-+22?5;qK$mOi zw_cI8mf{G(fxUU6(}j4OkGgR*`6;m?&X>)y(4U{0`Lwh8CX%=Sq)iYJ$FC>x6%$jA?s0l)M(X|&YHaoGEA6WL(6^yLD z=|^UoZW2XC{rdioNH6DW1(qCsu`6Qa!rZ|5f&%FN`A*9^lJ8HJsZRGdl*LA(ryJ4i zPt5y-PN^8%X$grd0#5lL#qDLen4^8oeinfs&i4fFFtG4ZFdQaLQI{;A0rgS>T>|T7 z92_e6=o20(EhXynpQi7Sd}%wS_-}tx+B94Hef>&V!%frJ-)|u4Sj*BaK;F9X5zDkWEfvyJ1XtFx0H5$ba zj*{6U$4QOPoiVA%0{8^wIVel`-N=r(m2bU6@O4ZLbQMI}Eh`#(WNHs6%&bz1s2s7^ zJ+Q*txI;2rpTd*%3ETSV8hUos3h?^0_2fx=bWFTHGBvd&MC+A)Br7qM;{docK)1S; z^Jt1gPV9T5SreR6NE+_w`@O|Au}J8fqr^)?-@LCy@G{&fuMf^Sv*9uQRN8uNv^rvw z^pg)67N*6O! zOlsC+3BA5c%F4&8cw^Z4*R&?_Zk$*#r5`vCy?yr>93Y1S7UozU)g$jeM6!;a7~zE! zPixvn9|!ytPmxGhe)XV)s3CEyKvn6aH%f3XE|r}q^vU^a8SA;hRozuswE_3h>49!z zsgA4gd)9>9NVvcqKj^|rt9C&ilxM!;gn+uAwpl2!u&_GXbMoH@?lTi?60G)jRYnNp zmPW73cS5Q;WKy#KZyetGzzjflmjKG!H=DU(5%S|=fN4yA)wgca$O|ljbd^ z(^g_Ul1At|V$IadyT3ZJF{ux$a$Iw!qd6JuNw{kw|L4AaABPd>j^N(AdDszc#2`j* zO!JNpErXh@`8feA9-an{!m<&&i(9xCV{)GNH!5 z$?WA_lOo>bGf>Pu4=I!}2kdKn0JMz6T8~jNcJAsuY>HzRc~}c@UR}EZ zTo#~fTk-+zbJL5*biSY-q2`BQVO}if!VsMtLSEEKY#Xgq2=+27n4vfc%#H;c0rvJ| zH3IOrQ2m@%%{;|s6rXN`0WK@hy?M_m0Ln|4TqTR-qC9mYr!mKL_0L7s+Ezbh~Qq!S=u31LGD<@A%6N3!W`@e`52V(H@_tE+^5+mvCGg0gi0?n|=+ zU9u`T%+)RA^uBAeC*R-hmJW?IpnO_WA|9c<_aQethaKdV|J^WBOrE_wF+l9e8`-|I z|0T20tR-a}l)r9H2L%|1x9^gJ1H|?N#BKcBWrn@~A~v}#Ls5THB#xYV_sg*ryw1wCa{MazgfAx)St#^+|~=kmL78 zGSuNTmhqBhEEg@{E~ira;thPx;s&~HVXmRu&+Fug+DGCMGn64T%|64)Ma*KDX4+w6 zOdN_g+$Lz2j*-|c;S534NOrZ9C;l^OZvSN>=JV4^R1l;B>g55tg*p`a2Xr{2tbx1Z zkc<;c{W&_?u&AvfRcjh?Pt$X8w~n{uK2;JL2pgw?D|u3a0?c_w14@{Rnh3D$mJO9fG*F$2}sOE8=r;L{Vc3LbLlH=0wUrQpVx`eb=eqw^0fDO!g-}%KPyXY(@BJtzfLE#pgq!_8lA_i1FL`?gvD5f1gMt}=yqpl)l6ITC554r zi@#62KoUmp z1@OA~1avP?)r)qPaCtSZwtTe8qnBn&$wNs*N0tdD;5Zj$iM;#*^+>0a;;|KV?4(0{ zFXwucC?KhJovKexQr{B$6opDx=5PwIz|0i09O#`S}7?0N#u(PxzT|o`4eZ^jvSr?``IK^MzSUz z#>8wG>WB~?TYZJpw2Z!dn*G71jEV);JMj~ayZ?GuBa?N@TaOxCuMp4;y^-GEp|HiW zSzUK~GIPb~f@6u3{f$6dpf~x*S3D`X{LXfSFE5~LeVzaE)Y&1d|I*Ymd*ZY!&I<2Y+xK0%Tx^jVO8KY-}P~ueyF7~SPpAgReX0c|v-4~k% z&s5PujtST+>?K$I_})zHaku}UiiFF?@^XQ!orX=HyoO^*m>6IjM1gLZ7GwL+DEyRf z9(u+h9%>JTmj`Y@|6m0BP*tPC@w4%d-^rB%f9ul7_hp^P#X-Yx4OPs6BoJ!a0ZV)& z##+GpuNcskU)1HuoP+x0N>IV5MKolo{!@JPg9aMc7kFY@&7FlX)N%i24`^s8GVbj3 zW3&)`ultW$Qfs@?|m6}4G{b4PTGIs z1^`zE=tgog(Oh5))mzZe(Ym>8=qKcJ5QK1!;8NyU1V#mI*^R4!Fs0_ZiRW{p`Js~B z^hN5ozX@a#?PPPn#b1P@0pCB91-i7o`qqTg~q$dI8kxFU=q|N)iB+Q2Y+Nu`aCKO5a{_~mNHy|YaAVL=i z7zcTvOC5Y=6_-w&4-Z=K7&Iu_i-k7KYCgO(gfoiTSyRN}8WPOMdPYU!tP-)gJ@m^z zrBJ0aOI6_Yg8R8Rfk%X=TqFF>7qyu^j97GzV=0qLRNy?M z1a#f1_9ZLkH{E1u(bY&MDSx-~@uabN#A?!Kp`;&7?a`!VT zr)ZmE(j5P(CXD}0&=K%?NEztHCBHEI7A3FyPLY4WqedRu-+sCb`u7>_ZXycOoGO8q z+xELlLJNnWc@Ykl9!lNwdrc)7fN@X(x<#j|T2>}*HV&hiOq`J- zsjH_yvtf~Nxo^yz`b>-R6k#B^#rQswTA4i%X?3yDMU@pslgVxju2O0l|{>nbizm`z3d& zGL;#fZ+Zu#nF$`Go>~A`4d^C2bT{fp`mx)|vi)-Q4+_VjXh>7yuOj`0G#`sqA6)f%QF1N^yH^v_xn9pb^}9$^iD+FP_<*@Nr#xrJ<+V z^e@=8Sm+v{Z!6Ho09O;}p5zLIzC_xAkIXmjJc%z1J)>w^i@9u-w zCE7rDFq|2R9ry1N^m&;3`Bi{smUSEXi52yDpA$S*lmExs6NEM-U*$Z3aB=o&BOIO- z5cQg6S@8FQLw6KEPSwG;clW`r4$zG*ApMZF^K)r%2=?EwSbayO!2Bv&)Or?0cHsET zp%q14IQ+jkxJ}Y3otvv@?JH8Qh4`=jH{wB<<#n5FGx+HMR~P91hgJ)%WGM6CRJ_dV z;o;?Zih?S}z#t9H%%>c=ykVEat;rWQfQD+oej+gSD^i?aNgAZB_HurQ;Bg#(!7L>U zaP@%h(P^+XZEh)vI)0U=#{g5e$*|=~2`@Q&I=_)aLlVs~0aW#n&p|H6Fqgu@a(>sh zkzS@z*Be2@a(5$fxd{4FfU6I5kvgyFDctt=iadGZ6_m$6UnO{Pa#ZgQO1b}(Mx3b* z=Bh8%t%LQG+MBh%{MHvxjLy!fg7v97GrEjS{g(@G4Zt-3y5{-A6Uq18gNu zFIP`g8*}wD7dvq;NZ35>%w9j)>ur`DOQu=AaA{_gVqG{{kH3VdswttA^~CAK3jo|N zKsUOJ;?IKXFjcR}-y^*R|4xx*KAdFD7CO2`Q*1HGn}@ov6gUrwfQdGblfv@LLUy52 zeOHeT6~4-;5yUC_KX31{fzJm+pnHze3yF7$;ZW3Y*^Syz=Kzf{S)P1x^39nxvdGOM za@RuRzazH6=*Jlu#PrUTQ{>b00)3y0C{p?ilyp@{b}xWy1axPurF|uu&RZ^`$jazK zc&c#Q!v8Z_zOXFbl#kk^93TG(Ke9{_z)TtYhyTM(UgQU9(jr)FXwd_WdrpA|B12Pv zYYcR`)vkhp~BDsRkIS={!rHLt- zaN}nJ1q&Y^@^&f{x%mcgy<-A&&*5X~b0H)f+_QhANa7C;ns+e?5!v|E`keu; z8PHW>tsEV^=x{81_dq4jFaDE4bM##4fj*spn+7C=Y^qqq9y1!Kn~S$JwW{jd%h9sI zb<=6sro*nx5g30hrn3le&4KR9NMOzT^?HjIipn)9axO+*56QCp?nj+KX(tJdTJfs` z++-3$((r}3spxMywCvb$N>Gr97Y{K+`{gsu?3u0r*8=Eb9(BV! z=jTQ*vE|iwtE}%0HflT$iju3U@`U^hI$Q~3zR~-nj5(NtiC`%7*b;93IR z1118*#+iMj3D}|4Szc^&iFm9CCX&vQ+@|PyIN3SfkVJ2azxLA1rth^T5fkXGr}?r^ z@>P@+10)W=Nb5#016(Vh8+xiG=#Jm(ewRx9%TSLQ%MKg$JqlSOgT~j?>D+U)Th@oK zUNz8rCJuy_c`gpsn%L(IL$s9jTMNs$5#!rC!2N))KsWREU-fcn?ypCrrk@9BUGkFR zF$FSAdR?RrWyp0+V-#pU4#j-j4@(uU{~3lgdU4=W7c_Cf!1?;)t!|pgE4#&jdaZ#j z`z$W!KJ!23O(KVOhs(IpD^0JPgGscWi#C}18ge7mw|BF~&WNb(FdZDuk0ORL1i znZbFpA<9>WZN$NJ3#;^IXgGBQI2d)Um0W!&@^3$nICvx{5G@U_@F{Kh3f8uO{c2mF zD|S!$Z`c>9eMp_Vp~V2YSLdg&>ZpWOv(P053rS}ynfs$lkL8R`Cvh%L(e z58Rgw-rbW#1~|r8V4uJa=rY>S=Id}l%%sk+SAqbE< zT2~XPv8yb$j@JKSfc^j4`wsXfj&5Jsq4(aa=|u+HV4Gqvy%T!qM7CvHMwWz%jVX@l zz4zXmAwcLYK&YWZ=r#1v2?Pj)cK>H~R$AH8uD|d1-FNSMPfq@5cFvqLGiT29+1V2- z#_nHzZB5C|buP9XyRktgiGKS@VYy$zQPopHQo z!}CFNQtUo7aj7S<)BIL!CVpnT+%~@~my=#vTElVhV@y{Q3 zuRYt~(w0Lvi|d{Zd~>FY+3QTz$30&D>F?j|%bpAS)zW%wmCCK^ZwYCiF4vpH6O#h| zHr2>|)4$igN~&TbyHC3RU}W*IEM2dE9=`Eu*^P6byy!UU$ey*G9={#nw`*~hK`}*7 zmsWj}_Qy7<+^FplkF(TWetXTW-s+zQ4}CDB`{oge9gF2!a-;C@U6rcc?AYh9|F8WD z>i)WMeAL43cb^{gyRo7F;yU}P*VvP>?7(c9C3=XH%Kf9~nvgOFmiT1~x@^AxZ11SC z9Y%Ub)~&j@(x)kzh7T!oH@aK>cZ=s8fA!6)d09Ui|B3tk%H{RO)|Yhcj6P%TXHSr} zzwuJJ>3t5}NVs_It@ack*vXS2r5&wseL^@1e5{iSkG7Z{qOLUG>*6CN}@b$?ie0?S$tzx?R$ zKKhcU&DZ~)`*CKew{`MPdDw6HzA@@u1I!uHw;Gq*cfpnKhVS~dPI70>l{yl+2~xSY z4p-LyQtai{Co9gkeb&j`bacIh*vF&p%+9>y%eoEg!^^hboi+c7mM6#b_;%6#%+r?` zyMBEeGPe85l@-n&-8QvflyrVEKq~iXXv1G}w~Z)UI!Ao<1~>Zkzmsmt_FC3q#rh5X z(^xdmotoJb+Iu(pr$L40Z{Ecmt=;EX`G4Bi)#rFy<+mO+28JJBcCMqLPKM;{?> z`>V>Uc{3hK?Ke>>clx^gU%NbAZdjSVL9?xUPj%=Uny&o2ZZjk2>9dc%U2AxTPo2+B zy0Dtno}?TZ_y%&-oz z%?&htN;mp!<_;q)b#FGwF!1|}8>Zh>y;5DcU3cF5x~F0WA6>TUMV9r0Cyj_Xdp)b= zn}!m(Nm98b>nD0w%-tj1&$m9TUca^PsM0^TxG*##vsca%TkmBL8QrN+{?MFP5*BpW z;vaeBZP(|k{wejcZqGk{^sD)#%ijLsJ#$Os4w1_J+O%&0z4>r$_6&WNwtcp& z!o^n!EBdK^8T9x)1@=DI+|~xJyg#JTwp(69?^!nvR(JMaE3Fqp zrE)V|*}SK3lh7rT+8=uTM{>}@Ha!X#>EB}7w6KlO3tf%LoORL4iwQn0vIZ?FfAHD* z`QG8Dz7BoUDgCy8cKaj+{WGjkaY=fIN#!1>Gr3qq{v{u#mj7(%G<t8Q`X9v1|7IwS|WG2RBpB5 z6-V_pw)yaUQ)14`wO5sR-1O}B?}pZxcs{XDo>{T0R{HhMoA-}SwfBBgYsRRiUuXR7 zUt{mIcOiXpYCoB#q#uxB&FCX$ z?eoB_RVFSdJa2&{y`!XZBUhek7SbWmfB%?q8*$#TmofXm^&d(n#(WrZcd^&JtT_t) zy{ybE~E-*$4bdX3*qo7O+3_~=E!SMm&@%b_g(Nm*>6bnFjgwJ;MsfOJ&yZMdLDA`;IR{< zZeIOdvg5S6WAf+xZS(ET!*<_^%epsmX!Xo5OWr={JEvcn_NvUK13PpGw)TGA=JERt zU4~2Kj+4qgy}d-Uw|5GUs2~4Nr45=ab+%0@-fU^QNtGvFKDt_U{+C$;S_Qqnyr%n; zmcz~-$hUd^hfyVxqF3&%S5;SUOWa?-kCv`$jF-y2UNx!N@gb9MUfES}OpL8kSKm%I zw|!W;|MmW}gPK*pIKA#S#dj4`&AXMn`t9yBQ#;kWHznfz@sAm^%t&4nlXUp!0O|N_ zf>iGM4f^-fG(R--9$BYRpTgP-JAyBbjCfG#yKM`ymduv);OMdgi7zXMt+_kx>A02Y z`hR>E(st*@tR;qQeeP4~VYYUche-4=Q7SjyGJHb%{*9kRC-$h&E@#GNwKFwa5ZtzvsRz57Nnb5=Zuobog|gp``qXe zgVMhmR#!i}=^;Zz?@age+-s_?RWWQu(4Y7#Jf-|MS4s~& zd;B~)AhYn;!T+r~pgJ#tN|N&7jeo;zu_k(=U*8yulV3zml`5-Bl|)-bl|ar|NV7=>hF?bDpeNL+qL*b6;7gZ`|tLn_J+oF^ec_mw)wQ+WMH{U{DixY2CD?|`x@6~?4VaQ=_@QCdt$j1?PFugW{}o6?WM#rBQR znbDh7s^|#!KjBAdG3#Q@nn?7kIs+$(Tm46SoQe-wti3>Vb)rV`Z%rXUbLgH_4uXM3+XD%7N(~rwSKH)t?$3vkK)aW z1xDIm>W_Yu=A7ggW6@gZ9g_X<6W1O8C;TWaXpLHMKZw2~j?q!#z1Z>*9Z?x#~#<$m;iRPv*{zPFGAfAnora^jmvsvU4pe(1ZT zfl>Bl5OUMI%^es>FqkJtR5Bw!@Ke{(|3iDB^=o^}p zth~TPfOJ9MsU+TfKvjTrLEo4pzx+T5&j)=UlKct)=i#8V)3+VTk95}qptRF>8Ht5- zw-RnjJAM0*{0akWi2;A~eL-^K-eJ{N^1vT`8<6~p0(-~nWW^M&G(h1<7t^?(58S-~ z%HwqISBCph9%pdBvT);SewN3X+^-y-{o$s+S=_HY+*#qKe9z{7#8(M!%J&@ZhtH9y zD#J~GbGct7xX%Eji+S9yGTh$-^f#aTRe@UrlmZsOk91FE%dfyyE#l$S@Y4bGx0w6+ z!c8(M-%Ge(HSS0GUdsJQPZW;wy^Q<$!Cez>%J*{a=MOi9rF^g8egWK%@=Z2^|5Y^r zUpOe=tGHiHxbFk>x0?F}!cFo>7i+j*5ZqKol<#Ej7YsLrqcoAt;eQoAnZW89epKt= zL3+U_4p=@&#(EwOpEF=~hac4j?pGIXsw*U8Blin|o9YVr{lxw1!A-V9f19{peYpE_ zzs>lictgqP@RyGY9DiBr+5-IRp@nqQR#F%WNxa_x)ZS71Ms=9#EVWnEK2du_?GLp# zR7a^!QXR|%Q2Rjjg6aX;IMr{e&t%(V%RvxM?Hjdcm4PY%wPR|a1W*zv1(XJSfPBCs zB6^-7 zKGL`VSO_cv76VIwrNAl5avF9Tj2K! zeoq4@0crym0@O}XTS`@_I^Yjv1Tq0Rfm}dtATLk|I0-q|fEz$%JeLJ7zH;XnkS1tNhcAR5pC zdY~=P8Yly_gdUm$Er2gbV^jED#cv>f#{)Is4g!LKT0kkFC{P%<3Hl@83Gftn20RDe z0PldizgV1jGXq@jMxr0!#y@1EYa{fElm= zRzL^D0DXaOKo6iN&>QFjd=F@Vaeyz%umG?F?zxC#HpK%}1xf;KL8}kc06ydSJi_(B zFZGX0ffaC11EvGjIa(uZHPCwDxi=vGR)9Mz{3`)x;64J(0BQgl{#zNpB5ER>DASj_ z`-3jZGr%1SRFQzflRN^Y;Q@D(O!A|?ayURdQ}H_n7zNA#VgUmXItTyYZxCe=e{y{w zl_}X8m4O~0os<5_R>)?^cGN&sfa-Kbfa)IAL$VXHW6Fabp!5X*rGer=ZUDhqpP3cE zS%AzyI^Y`sYG(awM*OA+G5|y)cXl9$HxI?%2!<=1n3Bme_NmpK6vse1DFoX24(@v0irDi76K%L;#~lcEzASv17s76018W3 z22j`~z*3+UK>h~+%Fh;H6YvwT5g>k|ZvYkp>wzDEbpYjS1weUP3#lKr%pn z#4kb&w;6t-dq3R!08uBDU(%;EZZY0*@ZSaO1f=@hhUe|T4q!L%Gq4As@D%PBfb?<@ zI0PI4NS~xL@+VNd$ADh}q7jY*1qr;|Pr^-QnIF#-z7&ub?oaqV1yEchi^@0>_z3(1 zd;s16?}5L8zkp}J4d6O(4Y&$i1}*^?feXM{;2dxUIL)8W5AOdMzmI?yz;oa=@Cx`7cnMG%-T{;^O7~kJ z3v@x_wl8ph1~T(!8qZ|_+QH8ozbfD>e$tT>ZW5zCC~W)Pmo0fzyylbHaO36%$puSx>tfU-ax_?5vgrNalmrGe~l(=(w0 zo~a+M0<;C%0L=ih>!$c^0??R=#!ewX9iSFyweWigzcjWB1gMX$0R#Z}pN(;;uckEk z0o4KOheJT4F(H+EZTuF-Z(aNr!*5Z5bU`+m56BBN04)?~2s8p31FeCwpj85Bj8+-H zE$~a@Hp)jCJh#Fx`H_1B&f~1LeU4 zw-KN`ksr|q00}@m5C_osk7zdhS^*0{Y3>hD_#Xh0F&G#Gi1JCcv6Az4sdnhmt7z>O6MghZtVZcaW1TY$)Fw{4Z9OB)$6b}4tyCwW) zsoTRpu$L_uYqNp&^#(uZwb_ygkMt$Ye3mCDf5zxunY{dbtNZ%HHvlLI$~Uz)|5P_- z=B-R#{xv~@cS}%UV@Y*>F1ci4K->D@sp$(gp_eWIN{=FK$8B48KO~bEv5>TZKvqzu zRO>#W{ML|KnY?=YSN9DB(@0RVfikORo7=wzXP*y>Ul4KC&{*&(V=L_S$4ccJGzv^0 z9uN@ERPba5&%kFO(xB_zC?PNt?N?)v`=MhyKpwg(R~i#2Uk+HN?02)T5+c ze|AQy;ZM@U?{MAdUA@DmDmy1+@(K{5v46>{o&I|BoGThkfew6wYEeAYZsO1_WYV=?{pIBb4a;4`+pBkgZvg2a(xTS(x0*G*1}E3-mYB^46hBIxpDIdk46`7< zsM7s+ez2;wU`u8FeD3k(F+^5=&G}!e%bWBuoozFijJHVK$8>Ep&LGey6 zq`Gaj14|1ZKbQ}c8Un>-JgjcJkEa!+p)X7d>sK};G;7XaNTX7q@&Sc%dai5o*%ogW zJ@EEQBm;pVkcE)0Bfp#QqDZ&4O<3Ak`83QRq%Hj)GXf2>*JlHT>NZlXGelxrDcYKU zMb!gO@1DKDDUhZ!L~G4Dt0ni`Cj|@rej&=+i)t19wShF!K}qksz1zQdK^leaQre7$ za4m)Sbz{Rhv-@kZFli_u^d;cQ1)jqvo@`C*)4HD{1@UH$$&`Q|d;Zna6$ZtT^^yqu zwa&=aUz57+dy#(rt>+aPkDqT4M$e$+fVA)0Uue_o^|3n+X&XTy?HrphC`Uo>i~XsV zFty2~&3y_=Bb(I12Dd!^!hc>7NE7Wk#$q(kMqR6et1kxMj=Kd4x3{X`p}O$ta!cxCVJnKj{BG%x$}UCFTP;2$MHp*jaCbHTvs!uQX<{xezg4iv;sc90vAL!NI+Y>$Fetn>t^tLlRj$_j)B7IzUUMF@QHz?HcKqTG{uu;!JTWvGu{gT1??+Q3ZwGm1?5z>HW#{YeOU?C3j&%QRiwsZ?T6pE zyDiUGZ#$tEc%W&rQM1-&(M2Yxa+YnDa>iwOI)Xx$i2Qs6g>>B{ z^R>^bn_nUxs;8ikI>S)sCSLjehvJ5>tkw&iz0T0jrZa2J=f@6AEY$5pE${@POkq`- za|u@EJs|tGu|BzMpz!w1qK%EynlUeH@t{lgsb%kR9#}|c@KBlld1$a{{^gVBLE&jj zz;3tBVpYAKweeDsL8Ym*xipL@^nFo2XYLKD-nu}~D~!TYoec^g?etrDQx#XCFj*C> zfb!$A?PZju;9)vA7#@DA!e3_a1PMIR8jBiV@{F2xBYIc%uGfz{QV@|xDAU@J$(Csq zddDyd%m*W7w`nthhb&Pwbnoh4o0^Y+hwFL(D5Qe|)4OG}jIy3&6jnaNKtT~D<;)vu z&bBXab54P-BXv=2 zQk6;bR6qL6I4HDy!O-Lao`OGp+T|VfVKpeICD1l3zJCmAHdZ*Q=1o7gdff$}1PXQG z-|4fg(PpD9Dq0mdF~`jj4~jlz@dVHy$!gK-sB3Dv=w|ZLg1g^?f;vJeD1!o}GM%_& zQ|Hfv&va%KHa>u^%@JCw>Q;%5ai+4rQr)iZi&g}4eK3%&k8P;8E22}~QjCJ}Mh%rU z)or*`HWd`A!5^~wY|S6K_)l-I zk=$o228m=lk6Wy`v-7(op*AwBG8(j2U9491UG24fCgk>-g?RXA{RVib6!vz|9rXTk zo?2MmTE^;Pb>Zqr!-igs%VeE3{|PA6Bq2ZNF{B|2`6W-Cw|!bqrM4F-^FyU;T}Y62 z`u@+R*%RLitv}<5(3x4IXgPHF`iU7YsV-1Fuu+;Nk~F8Wr9ZVubbQ2&{`pCVBgd|2 zSCU=V6h>(-`vuq)=4g6mZmQ=CGUuzLop74RgH*po+9;m&H+DZOZK+CQSYCshV)9Dm zQ>=Ppn=!EJ-;9T)x*aH_Yyafm^GBKTdO4)^1SJr5JQ1lvh4=`dDR zt%=w=Z`!r+jSBHF9VBBaMQ!5wu`gd_&-2fA@F0H5&vsC#eA*@I_uTkt^EyzdXF{Dj zz$v}6?d^Z+=A#f$;7>fKIHmcsEz5d7Sry7tfU0HESfkZ_wF$pj_IAeSc&(p` z2`km@(EPv8uDvhQU{LrdAU;|bjtZ-(BmN=gDOU zkG8mwpDd5RD_(!`_eCZz)obd(r(-qS<;YS(P|Hg?3PXYGR{zzg|m68GI~L%7pX`*$ioXO8ErRsLsW1)Y!Tm{p(vsVey#o@k}d>XZwiI zA1=?BM`J$B8!@w1S+!*C^K^jk4$%_|amcw*_dfE#VbT~;(KAg&QDXINSMnPMF-We3q=+pCGe=b+{GI}QP zuu=%u;6HqV`?r$GS35UfL;V7li>TWSk2b~|P}=nmU+x$Bje034yxkej)AscFtm%FK z)_XGwYn3N)N?1Oh+1iaInC(DV4a^sG2Av5@MwSed2ZztDP4gepC@dtlFM1#o=EEN& zcg5{pw3bo;9#G~&8nt|Ns}9}tu1K{}pwR3cEyWs8sLs6@_@(2t^WSITDL_11LCFou zxsiiy>FXUefx^d$M?fJRTpjvm&$I$L7g0Qd@mv9g+W4~}-7fd-X`RWWv3MSULUz4T z+j;KUptHLj6tgbYtcgTQ-Ve~fo!F`mDAexwqo1>wbyVwnH=23iQ1$I(*F4o$4b+Lh z)wSnD_G)-;8YsLr{)@V17Vko%yrm$@01T7nzX;y#)%i(9mTES_cdu*rqi7fL@D|oR zk9&%HX)Y-&)oywwSV*nPZ0|U!&e)|l{7ZlMh2@mh?Jl4cM#;6Q;y?9W>Az^kLWK?6 z(VETbaASma>$f2lwC{${D4OgVC1=)J&6vulyv|17-c)eIFi^lj6{uWQ!K$`Zs?#Fx zKXs3Tf-xsabCYVMEf733=9{tW=hoYbWp2w-z|z(j6dI}a?DYHH+Na`a{=?Ho(o&Ti zD{VJ*0d;#Jq){#DUg4L(A(K1(25HnWAZ>1DQ>Z0Bf`_y-eaW9^noi0{Z6YtzFq=+q z#TnxACqvrY>APO&=U8oYKLdNA7FzP8uT@UkHfT=E@=VvP6?5H=lI<)950&=U8vWWfU;88%=RwKs0EOc7FSxG!0KY-h zzVVX#6%=a4mPhm%ytK8kBPhIXUj>DF&7$qEwR`krC8dDdj{EX)nID$wyF3LC%LLt8 zw&%<;E)CjoW4)lf1`pZwoQfsR?=HE;m-Ey_#X+7Z)%}J%d-H0+;BZEvfsiUUDAYTf z)AxP&D0DK-+Gu+L(%iSbMY*&aMdLy~4Kb|%4{yocw6F*t$K%m{UR%3(tsmZU9>f!& z4YNfdi4%vZYTPMu{0JyDgb|7b2jwlG?690FP$a(N6HxqxwCPOn#$Sp4>h8_zuO$kU z)H=Y>fc>S`ftZ4&s9jWY-`D<_Vcr5O>KvL6_V@2di-%Y$?LDn~4^nOFLV6QATGbG; z1yCyPJ+yylx*9>8g2?`z9?(s{fH>TbL;mGjg0#7>CI50=fFZc=gH7sK4Vhd(P{rir zZPk}UJA8;g6?w`9y}e&u_^%}k!e|uDYyE$09Kw3QrHCgd;_219Wmfgk!DCrGtPlPh z6dHMVS~*~Si9r=9ZPaVR;zLpMiBc_Rrm&JzHdFnfwin^Qf#H#~^p{(CS(nyK0)_W7 zT|pt9Ok)~l{C(L{njv#(;h@l1Y`glK6*idooVujQjgg?ug_zG!exghp9`~5BzbY>U)c7@=GCoFKaN68OZ0t|HCiYm| zj-K38T<+ztvA_G>m-V#;yUxAhRlQY**X3rqW|ru3E`xOf?9*fHrjAN5t?!+&(yz;P zG|S=ZuFWr+=G=DYUUxq|GYfby*Cgw8--e{zNdXV-L_%){qsdB*A z3e|d~pciXMJYUFayGwL7uirbDBlJE}C2o6x#m*kA?G$95rwDw1-B_ z+7fAf6s3>^3f1k!HK+WzVVMfYY8dHyEx0E-7SoRtHGdb4U?(`NNPp?L!eb?Ml9-@z%{ zI(IAhS4hsEnKZT*eE<~FPQ}`rgX22)1O@hnG~mReg*1)Th5o}LV;B5&3Os?dwt+Pv z@K8N1eZ5-m3cXAJ0Uo~Bb^{a|Z47Gj%rG0E%jcvwzN7Co`3&M)s4{-)3~j9p*{&`z+*WHThtoT*a1 zurWb7()R*|>43)Mv08ORnCjr+<*z;;S%DQ9?2WNfNUAU7r@YVI<@;BL3}@0dMKn$s81;{D0-WW@m zfl^Q_q44(Grx#!Z$!rH{%MvQIF2~wt^4WhpS0RCd4nU<14_6ak_Eqnn-g#fRA?HCn zdBHRwj9(Ny!q|m&lSnrhtz#-~G~=}Cvxb4$&xHL*JUI2^ zG9Hv1qx6C_(%ZICOLjCdj$TPTtax0c06feRH8F9B4f_n=PR|i~qb03dqSYbeS<*;I zbwKA`x(kQ=27^MSjT97UEY#q_zfQ?~bHqkkm7@76O0FCz*kVW;UjIVTmS=x$=HRIh zNrs*3&;~ z{gw1c)cbz3FWQ-9TmCPHhOuYY3EvWsuehb3~2o@*xb!BM|e+jf6M zZmdRt!rH_;pwKGlq*XuE816st5vL$+Q5sv678+f4EUvHj1v7TXU?JGu#mQLkFuU$O zztqF3T}m_k!uP(ChB&rqKQ%0$FNt$+4j?qo0jxbN@-v)?5cjn~U>Elr~V@qz#mGEd^;GMvom~ z)s^qzkoHF_p+#!3*0){Urop8gls`eCp6SH%^j#a2-xml9r46=|x@L(MlKT7(N}H9O z&Z04!H3_P`w+8P!A6_dDvk;c*Cas0KaH3ArIzS3GqorW2fZXix z-x(3RAF0aBHC?ZHV-)6c{aWamK+Og1q@Dx1Uqf*-g2XJx{WvkgX3}H#&>Yd@=WVe? z-<*MkP~V8QDm8@&q}A2!g<7(^*1pD?e!DA!htKpjfkNw5qtZ{Uc)iYb>Vw4-g>Fwk z?B+avb?1EXJ~ds%Y?RHwQr9`L9d*6)O+CXQNTdEI{k4xxVmF?mo|dmPx<7&EG9G5v zE-9=%2%qY38@V3nGhH$Uil2`E%cmLy)U)o8F8{VDadM8O(L zUtI)_aPA-5t7!ddyS#By7TcttxLElC4-85bp^L;W21b(o<1S2SJ*J2^I}?oR<6<|K zPie8MXoyhTOsX6YbvcS`ZI4kJpZ>U*O$7;EunJpD>@T^@(mh$uB;=x0qY;5$j76QG ziPftnULBY7!?JbQP2vr?i*rIECG}jBQb0OLJx8a3D(S$WF&Jq~+~?bpWql4@8b{h; zTa>B|&}cqrwC7Eoeq=zvRysw+3R`s$l)RvP`{TLz=a&oDBp#s@QtwCybIK*~P>*4J zSNZIqZ9i@zY0P+KPS>VB!O9M>qJVDm(vIA$dJy-x#8FyL6w>ChW-*d~7a;}50>3Wt zjnE?1s3nYoQ%Y7UhL@f1>F3s&gHalrxuR~@1rPPxg-SH+;WMNXbbx+=*|m!ub}p@B zSHVUvEUy2g!JSWZ%8m1+Zk5?w2F2}SEr2qFqH})|6BcdKVC&gC=ZlM74&1`XoAp`X z`9E+Pm91d>JEu|g-39G*X@8=vCf62}oVb1+&ne9Ykg7ss##8{a96Rd$k+?*>YTLVNr7W9zs0TR@K}8a6}l5VX0Y$t~G{)SdBG2 z`n~PL@Xk-CqD&LXe8H3YBqk_q7@hjWC+nTT6Wdd0cN*v1xXL==EXJc41+aKhpQ=ox z{GfaWa-KmMdd&+NPqRZ757LHNcm(bH`jnhixVTRT)J9O)e!crP(d8*oR<&C664sR? z#&7GQyRq;Ebik`g>J;?mJ(EjmthC+j*Vj~K?<2I^^?SdL`=`;Ob%+NVAdNx?Xkc*G zM+WW)wExF2H$)cm<9x*RUnl*1^LLkd_36#;}2{2UPK0^pbW`sDVSRw^?<1 zs;AW!1Qf14xdx5wpih77%BLQSv7DlT>ji04gLC~gELXwuMymCcHb~Qfk{^`6Gaifk ze(O46eFtklcxMt6>PwO@c1=DqZX?+nr47=?gOVGRuIqZfF0JoCrvr(CoIV1j04T;e z!yhd#vHuQ_rzY|O3iWEKwG(MHtF<_1pz?V4epPf^S~h%#@^@gn_VcVy)h*eKdJN`Pui$bh2zCN7@Hr6Fw z_c6fZCI#SeA5Y#eA=O#0zM0W=Th@MQNt?_3Fne=TK7M{G_j+?*KK~9+I+Pn(Nb^G> z1=^b1e#i3zdvmXy{NSOnSebl#7c9Db?wO+$R)dlcl#9jo-{`pI5bZCJ^+MNsKq&;u z(j2pQ+9vGAx+SB)4%|y~sW;YfyQHu-#JwfDPl0=ly3r0S#0?Mfm)t`F3z4u&rnMv3yU}K5{oO0lYws(xb@9vEhP}_^z=(2@nLsj=F zaG#%L(L!4lu&wlrjovFhvJoVU=O<98o;JR8aL)aGg=m$4udeI@g>1Cr(*l8A5_E4t zL7Plgb%OIGXLwt*l;1lVt&_c>6mVMFsE^aCD*CNBQ}mJTZ$_b)tz78s0;J@G{Bk-W zZOdZfYzbd_6bBC&(9x&@K%vp#u#MU?m1}*wlgER$Hw2WDpnTdN^x=fIJytZu6u57Z zj>ZV_9lZLjU+x@cnw!xemTbqZ9o*|HXs7c?O^%pto3R=$)-3lW=VDic&M?7xpFtW~ z)v+htC>ws86JL3ji zzmj2gO)68gVYN^h!fauBngWf^J~jAm>EbkUfbEjOxvvW@&Q1mj>xlyq54D!7lE=3m z{4B8%r125tBv7a>%$^>4=)#V!Sc^t`fchwRBG+|GL8o5nWI`-nu9$Ok`nL8XA6ADn zDsJ@kvw2Q)Jb&h!Id?nsr!_FwMB}fz4+>d)+$X)?*B^~D7!Oj1_e(&*@#CbG2aY`J z9>0`Yf3hmH6lQHyj3r8IxIC=koPF8OW&?#ze1az{##Gc}oIdJb@96c0lvBRLQ2-Pi z%1tWXb4Z7~s<;Cz9yZ87u<8O*vlZ< zI#6(gG->SOqfMtqgi$NTM^7;pyy1v^J?+r4-qZUXo?@iR)8;;>DN8PwS0l5q29TN} z&I;U>0+Ri^7vjeo+_!~a=ZhYNH6Gt4*mg4;H2RKKGY&%4E9K{SsW{mFQn4ASpud50 zKWE-_VXX$`#72h2tyAXj@_pKrXjFE0&TYTks>^|}l=PJEq3*)qkxHjR(4qy~^0azL zbW`6bRhBaYZN{W|nv`@a(Q^S=|@K`|YyQJH^-*=ykr- zkPeZp-uvRUTWW2F2iH95)j!9VarK4tjZ5rWe_ELp<{5ZK5|X~oKkfT+a^Y9YIDMaX zW9bYh?*I8Cr{BA+nYgoF}N^Ase-aia^91r;NTI4 z;%x}6r5Xj~PWJL|n9ZPOlvqs^UNXUUDXd9IhMFfMTyM1Cogy5fj5XnWxfwef&H=eq@-Ar8e0vqCM&(4 z$6jrTwpvY=+SQ=oC^Tl~1Yhja$5?!g=BR2c)78|%uUdH9+1DC106Tq&NaWisOOhmPwJ}b(4AsazjzGg#ZN|O4I{Mk|#BFUDXx1Q<)89 zr1Dc^{3Pf|CU+_95pq)aKnitB@)jh%t4~?sukAw%%CWPz|G~t5)%2QE4T_0gcUCeC zdl<0W-An{i9xG&vH36qgWO6SF1u>E**fEtN(!ySXfz=w&5LjhIIfbJv(aSR;A5$VT zG{M`TiPb8~qCj>*^q?k%G6l)-(h%DMHukHgN|F{1&H(+<`50t7(&CGyG(EjO#s+J& z-pAf0gVAfkFq5%a<#LcRDCDQ~LT-2!mdOnbqrpo*2v1{Cc|#Olln004U~%{>@YwSQ zHoKddFXLounz-`9MCM^M$RsvJNQg_}!wL{DhaeAOxZ47mionrKXcp#$li!7VzOT`Sp_c!2}s6Yg?g@dYZBi^K%MDtThuN|qpA zQ^Ht<8%xx}JtY)v6kQpBPDveUu^DvK$K&qu$OIYfOM^kC^pR;nDLvwK4B!===)|ZF z$Xm1|rC^mjv94AyCYfa0$10=;aohsqrq&q|htfC=uk?_5algA&`W%n9+^H3zp#?S* z@oq3iKV+>k(K!MkKF0&n$~zIfDXS>N9tJY(ZYY_jStfd6{{d`*gZ0F$5@W2TSDP_P zlxwscfk;_)4%VqKZCQ=NNJCMQb3jOQ_Hc|l(3%=-v0+-d@tr*k)O;(JI`wOF5X&4Mt3>bIIq=sF@L1O4a4hUgyFv=@{-_QXj?qZFVQWNPSSwiZ0 z8d?6?Ak2(;6zU_*AoMaRmjNVu3XSgV7R!#1s&)l#d*(pN@Yija_)!iNcE#VjMm zDVJz$coyMeEhx($%~xr*k6EgWBnkm;`k|O%9ZGW?7t=ThaN+A{ltW`I5!yJb(Wtk$ z3P>rXNuhj76@>gNY0wT(TTGgGypk3h3(LjEtwF1%i?whE1tyPboSr~4%^wWfc%tLf zxZ08s8-_ekdik1;tZs!cNSNS2Lxc4-@)ketVz*TUFcIC}R*Geg57ZyMO`(>$O zZ75HQ1v3Q96J*lk91wz>Jy1L}L6dKk#G@AA7M*F*u6WfB<)7cWgZOChfcV&KiDr9P z?!o*`9d0vQjAnANi9Q|Ir*%WMHbRGmjabYVXw?UY4y|7DPC=R;(1q}&KRVj6k_QX>>Vn&cSWlo6(z$U>0h$sNo^s#oNPx+wNvLP#o&mlLb~s8WBI%z*vJ>FQgQW zTl`DaEfrwVL}JM=%od3s8M~JTgIMV!8v`gMieE_tR_;P_Xjw(R9@r}_@rf0f4W84& zDO7yUDm*v}538)G{aDmxt%FR?odZIevxh^X1(yU-v(jHDw;Ur01zD0OmMx`*f#044 zPVP$6;8(mq32dU16`GO~r7bCVrH`oRRAW(mv?8sJgf?Y#Xb%G^b~h}5Zfa660UDQw zC4f(G2vcR2aCQ=#x=`7*4|WR^*x7HIOh>ru2`qvG8m3lM-cV7O#rcKkWO1=}kS#D# zwq-PA4}*B^?lkp<5;cHV@|30`b{>^MfU}3gx@FStG|Y2|5Qcq@VXKUUR3k@7N#(~1 zf+pJbP)GK`?RZF2SxJZe;uACbK) z;9HF*CXQ#BXjphezJEVvNw#OxtY^QJ% zfs8LrmdIKvT;c|1(aEe(Y53=4Twr#3b_{Z;0K^?~nS78%3*_ zU=DyNw=^1&D|TGYV|aGMhJsNz$A>LlwiTQzAtHgLLdnpaXL;0-DRDSY;}E;E2ee9C zvGU!aIGF>t=uDG6u@Q!_IR;kA6S!%_Dj%!U&KCHco}sN;ie={51hcc-_qUV=Dk)3P zd7B^dU~z;?Qw+|M=?I&W zaZBO?v*aml4V}<`Yt7)bYllpYukuqdu(N0~sb_TXvtOKdpm(zs%*=K1q|7|MmPW=R zDN7vwqf#^Bw2{;s-!H(9GAGC+)h!RAc9OxyNx~|$ln0YoI`pf?i`r6ep^(X%l$s71 zE_?3na#%BhO$zxsFBK_CAH+$X(lox1N|GoVk|a+|GptpY2DjiG6dO~gQTg`plxvaK zVX?G@3Dc8bix+Mng#f`pb6nA4aBvF?AJw9C*Z~!s{Cn5fp-1SxnkYJ#X21<3R*M*d z4ufG}DU8=ePg)Zc21(d}rqcv;9|U&5vG`+*H(*876l)iV!M*rMH;ps5F1#SUKid&+9sr;^bpZg)ZE@h>Ked=-$YYj|vgyxxQxlE5lB zpmlyuMR!^DQaXJ(YAzc!qV94S%qTmvpj^a^Jv~yzt38`BUYV^2`#%lV~iXxg7bu@ZN ztwF3qf~Wn7DN@+FQHWn`DbcX;$R$41(evS?(SkiVH5ywrT1I0W>?r~-r>ZHnB7?#S zIk!BB*DZ}z9VPvX7nMSg=w#-oG%tyE&J@^F_+TA|??}pM(UsC6%9XdHl28G$Ix8dC z9tP6vZirB>1@^d^sYnwe*pB^Bi9H|<$K|$I#amS&OLS7*pck9u8+per3s@ZwU=Bn^ zz$@KxAv2dzh;wSC*<#60Q<$h=#Y8;1T_oH(l7PEHnd(78y2ClCm(ZZJ$C=?&yjkYg&o;sU8hNB!tpMH)}W0t zT6G$1#jtBhr6Of?lqxLpm&%U~CRjtrlB^DsUlV5hb~$vr5977OYRuL&?2k!;kr2rv z>X&lss-s;(%ox+sQM1b}5S;z86=$XGiCEfwjJ%Nf1-vjC7}Pq$YMsO+0sEPp*svNu=PHJfXbO(BeDh-Yj`Sx8T%#<|&-#WV{+H-e|>ugmye}gBtEM6lc>| zkVdsv(+Mwj*Dc!ypH-&%ifPpoYFu@K5U9&rC6K`8tGGBC2*Jt z1UMd0BFd?C7#nyU4=mmQ<>5NJm09GBphL5CE3-nbUD!NCxbRKWI9t4I8zMv}8*nN0 z#7@=LPCFo=^rG8HK) z*&ZL5?QSX_8fM7X4e?TIaEi_}l`CCe4IcVo;gx1E{E}|4a2MlJIua@=QgBM1(quW} zmEm9&o#0Eud2_m-oW*DGLo(@ji@XwrJJ7))I1mXxih|?SbUnJk8Y$E}43T0rGKK() z!zJ1fBseIwyn=+I|5MXVa%!Di*XoE6LL3h)MM^~^jRM@#NAN2zkVvw~RDr!Q3(GKc zsNCr}5}PvR%3X)kFaYdM&uHGnC2))ugcQjX0r3ifxFDW~v@BlXZgMc;Um75DvtjRl zMqvF>jj@hK&mMUrtidfpd`^aTN1{G8cDZ2zvd27yTgVZe;J~1nmb#Vf)KMm46p-L5 zW>#iO^4wiX>?MdBAnjchog#F=9J3H}s5tWL1uI9}$} zB-lr)GPdO$5F(vDm_(&+UA##i+@dp0^$WRo44?&VIG!Ov`3wtcD82;(R>8rhBT79J zomHl9j(|&aBCa&-$kAs^D2w=kTGGZKOdJF*!Hu|-U&O#f5AU#nO>nRUIbkk>CO2NI zwnpQ|7x)^m}4INj#Vs%Dt1xy+Ykx3t6kjmpAc1=GR*)KSP zP~oY%<9p>;T%#i`#;_QAB@x{uhBSB|3@<9`;gT^(M<57xJdnnPkpsIo%fHm1L8aI~ z0pzM7Bal|6gj+-?i}nX*D@v^iI}*vx=YrSqz*-9>USUN{cnOZjY={ybS*>E_$zDff zx8SHTLv=rc!I;(6)j5#shT^EW!h7ZDqv--!nJApXL9o*^6Q`78r_4Zt(=#hTrIy6W zTp+>enbiWNG)Qa@{E{bT&`R8HsuRnL%Ziq!TnS&MfDpj}9_6VLu3B)a=)|4Ei^a`` zt7x;?60e1hb%KqV}I(r~T%40g`s3F7IgK0&noFxkoB*3w#!bWCFJ%}rXK#VKz zG+7=0$^}Gl7t@1MU6Brk!76=Z{7RzjiK~kcB03$)c7Ie*rb>vC z-7_OD_e2)E(wtR{11D`DjLzGnWp&AZq?&ldO-B~NTlqEukC=*(U!1+U$WB4gJE%9oivonW=Q z(^Na{StU;KEkcyH^5oi~F0eWt(ln%VeuDt~{9OX<7tsA7Y;lT4d^n>^$7Ix;ETeiC zp-F6N8B_<94b%DE2p5-Ol5lpzw#!R z;hu>5CjF~d55hTkK8c8+eK6`$gp|v~C?=46{uJyq4zB4;CZ~!+*fNh8I5}3W>A}O>QC-I z0q1~7ld}huB^DHhaCo5?X~2X5H^<^ySPa5tGARuPxzfip^)mFy81T^#8$l@b5g2mv z1cJ-)kfv5!$TT}5Nh_MtN8yH4rA<(W=E3fGK%=ER7;%2D5B$y^>{zUlox3mw5|r9R zSgWrn&4sy~3aXN=iv_RU`OQ_^`Udq)-m{*QMk~$vhBbaTlA)Ds{@3XE9R+o9J}JEtB_X zdXX-g?#Wc1X3{MW2u(lK0iqR9XlQZv0iWgq3;#%$W7IEvS%~elvzL?UzF(`{#(*Rg z966Eaqt7G>Y~*4UjcF~xh>M%m>^?LZ0g_M< zB6(s1WF_^xx@HGrTzRKSiS%_g@Y7G4vM+uC4m_e03gFw_X!=njGWK1ty0v&mMp1E*nGE7b=j>4D2NEYs;ILF4qst)TBg#{Dis8>#VWQ{z-9@s z6|~DXHY9`FF=dFf8N#hF5_nRwBM=M+euUd9BpxymrV5MLQ~5y~_>ZXrqeY#bE&NI3 zTWIyuiq}!-ihZj_ZX+N?NW_-HhiP7@kr2vn5|qgRvGY(|7=L1dl|2WaTGb- zM~-c4WX7VCd&%A@97&P#K^z~ciG@UMRsHTR4HK)lDdKmvQqoAWMRH1UrZ2bZ$AV{_D3O23j9v3 z7X&yxvsRi-XCky1s^K+Fvk^zkFbC$Xo*MVa$n|2pk)%*|*^DPmX-gF;WTf(gBwiUg ziOx@o2~FU2k`kSO3yp-?Fjn_utkxY1B6mk(MWs|yu9D}-kW;Fec9i6C-RdNog)vaY zPJ=CD7KFGF9uDxNVeOiX-6G6(!70po*|{*`dP3>vSuk|N84tOY1Q((0LIq|u?y^uG zdP%+y1Aexcj@3rxVV~=-%|HbIdJMmvj16a5rFLeZKHNednL-K&4HCZMiC;EYl(8)N z@r=Lnj=qaj*wf6?#1hOZEY}Pcea%{}@Gm4;UL-RnN1s&S~#a@9TKQ4l{y^f z%;B6e_WAi86820w`O>>WBp3}OkCq3gvo!3Ia@aS2?N%LYjIilxIZAM#%!2T36tU3I zePiChZr6}0KSye~3pEGJy-eSb%r?&i@oXN-4B5UugQY;!3B16BF$|XB`(iI%FFTx4 z;Dk;TLLha@HOP@tQZlAoLgi(=NgQn(v);?I+v~>!PyT} z9o{`S`^)tJDMCVQ3Lgkn&Y0Z_!Ebk?M^&CRIa@Q>CFZ6)=}A$KXuX%dy#+D6aT9&i zxO<9^Bn2-_prKQ<7H>7-RcbBjNT8&S$W#m|7vhmVQWa6G`qBj?da+-r>$5M$Au_ug zZJ(dwiB@|?!D)9hYx@_QC-#{$hfdielOuE<|}@scm5n83l^c1Tk#OjOjqQ)F>hW zZ#CjOXS!Ira9r?N@LS z;1jlmUDYo^n0q?*ca#_W95FbHv!C9V(F1Euh1U&5C#y6{ujkntB}8d=qebQu3*qyj zbjY$djdH6q7yCAyOj=wues=NBZ6X>n<)IFfXBR+6LX^sicf=`MXY5EbPWJW8|Aqhj E7vhPhe*gdg literal 0 HcmV?d00001 diff --git a/package.json b/package.json index e2cf6276..819a6907 100644 --- a/package.json +++ b/package.json @@ -1,94 +1,96 @@ { - "name": "rexreplace", - "version": "7.1.3-y", - "description": "Smoothly search & replace in files from CLI.", - "author": "Mathias Rangel Wulff", - "license": "MIT", - "main": "src/engine.js", - "repository": { - "type": "git", - "url": "git+https://github.com/mathiasrw/rexreplace.git" - }, - "bin": { - "rr": "bin/rexreplace.cli.js", - "rexreplace": "bin/rexreplace.cli.js" - }, - "scripts": { - "test": "yarn build && yarn test-cli && yarn test-js", - "postbuild": "cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", - "version": "yarn build-minify", - "build": "yarn build-only", - "build-only": "tsc src/cli --outDir bin/ES6 -t ES6 && rollup -c", - "build-minify": "yarn build && yarn minify", - "minify": "echo '#!/usr/bin/env node' > bin/rexreplace.cli.min.js && npx google-closure-compiler --js=bin/rexreplace.cli.js >> bin/rexreplace.cli.min.js", - "prebuild": "rm -fr bin && yarn format", - "test-js": "echo todo: async mocha", - "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", - "test-cli": "npm uninstall -g rexreplace && npm -g install ./ && yarn test-cli-only", - "test-cli-only": "bash test/cli/run.sh", - "test-speed": "bash test/speed/run.sh", - "prepublishOnly": "yarn is-git-clean && git fetch && git rebase origin/main && yarn test-minify && yarn load-options && yarn bump", - "postpublish": "git push --tag && git push && (open https://github.com/mathiasrw/rexreplace/releases || 1)", - "load-options": "rr -h | rr 'Options:(.+)Examples:' _ -ms | rr '§n {26,}|§n§n *' ' ' | rr \"'\" '`' | rr '^ (-.+?), (--[^ ]+) *' '`€1` | **`€2`** ' | rr '(^---- . ----).+?(## Good to know)' '€1 + nl + pipe + nl + nl + €2' readme.md -jsT", - "test-format": "yarn prettier --list-different || (echo 'Please correct file formatting using `yarn format` and try again.' && exit 1)", - "format": "yarn prettier --write", - "prettier": "prettier '{src,test}/**/*.{scss,css,js,ts}'", - "bump": "bump --tag 'v%s' --all", - "is-git-clean": "(git diff --quiet --exit-code --cached && git diff --quiet --exit-code) || (echo Please commit or stash changes && exit 1)" - }, - "keywords": [ - "search", - "find", - "replace", - "regex", - "regexp", - "regular expression", - "sed" - ], - "devDependencies": { - "@rollup/plugin-buble": "1.0.2", - "@rollup/plugin-commonjs": "25.0.3", - "@rollup/plugin-node-resolve": "15.1.0", - "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.4.5", - "assert": "^2.0.0", - "magic-string": "0.30.2", - "mocha": "10.2.0", - "prettier": "3.0.0", - "rollup": "2.79.1", - "rollup-plugin-closure-compiler-js": "^1.0.6", - "rollup-plugin-filesize": "9.1.2", - "rollup-plugin-hashbang": "2.2.2", - "rollup-plugin-preserve-shebang": "1.0.1", - "rollup-plugin-progress": "1.1.2", - "rollup-plugin-typescript3": "1.1.3", - "typescript": "5.1.6", - "version-bump-prompt": "6.1.0", - "yarn": "1.22.19" - }, - "resolutions": { - "ansi-regex": "5.0.1", - "tough-cookie": "4.1.3" - }, - "directories": { - "test": "test" - }, - "dependencies": { - "fast-glob": "^3.3.1", - "fs-extra": "^11.1.1", - "globs": "0.1.4", - "yargs": "16.2.0" - }, - "prettier": { - "useTabs": true, - "printWidth": 100, - "singleQuote": true, - "arrowParens": "always", - "bracketSpacing": false, - "trailingComma": "es5" - }, - "bugs": { - "url": "https://github.com/mathiasrw/rexreplace/issues" - }, - "homepage": "https://github.com/mathiasrw/rexreplace#readme" + "name": "rexreplace", + "version": "7.1.3-y", + "description": "Smoothly search & replace in files from CLI.", + "author": "Mathias Rangel Wulff", + "license": "MIT", + "main": "src/engine.js", + "repository": { + "type": "git", + "url": "git+https://github.com/mathiasrw/rexreplace.git" + }, + "bin": { + "rr": "bin/rexreplace.cli.js", + "rexreplace": "bin/rexreplace.cli.js" + }, + "scripts": { + "test": "yarn build && yarn test-cli && yarn test-js", + "postbuild": "cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", + "version": "yarn build-minify", + "build": "yarn build-only", + "build-only": "tsc src/cli --outDir bin/ES6 -t ES6 && rollup -c", + "build-minify": "yarn build && yarn minify", + "minify": "echo '#!/usr/bin/env node' > bin/rexreplace.cli.min.js && npx google-closure-compiler --js=bin/rexreplace.cli.js >> bin/rexreplace.cli.min.js", + "prebuild": "rm -fr bin && yarn format", + "test-js": "echo todo: async mocha", + "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", + "test-cli": "npm uninstall -g rexreplace && npm -g install ./ && yarn test-cli-only", + "test-cli-only": "bash test/cli/run.sh", + "test-speed": "bash test/speed/run.sh", + "prepublishOnly": "yarn is-git-clean && git fetch && git rebase origin/main && yarn test-minify && yarn load-options && yarn bump", + "postpublish": "git push --tag && git push && (open https://github.com/mathiasrw/rexreplace/releases || 1)", + "load-options": "rr -h | rr 'Options:(.+)Examples:' _ -ms | rr '§n {26,}|§n§n *' ' ' | rr \"'\" '`' | rr '^ (-.+?), (--[^ ]+) *' '`€1` | **`€2`** ' | rr '(^---- . ----).+?(## Good to know)' '€1 + nl + pipe + nl + nl + €2' readme.md -jsT", + "test-format": "yarn prettier --list-different || (echo 'Please correct file formatting using `yarn format` and try again.' && exit 1)", + "format": "yarn prettier --write", + "prettier": "prettier '{src,test}/**/*.{scss,css,js,ts}'", + "bump": "bump --tag 'v%s' --all", + "is-git-clean": "(git diff --quiet --exit-code --cached && git diff --quiet --exit-code) || (echo Please commit or stash changes && exit 1)" + }, + "keywords": [ + "search", + "find", + "replace", + "regex", + "regexp", + "regular expression", + "sed" + ], + "devDependencies": { + "@rollup/plugin-buble": "1.0.2", + "@rollup/plugin-commonjs": "25.0.3", + "@rollup/plugin-node-resolve": "15.1.0", + "@rollup/plugin-replace": "5.0.2", + "@types/node": "^20.6.2", + "@types/yargs": "^17.0.24", + "assert": "^2.0.0", + "bun-types": "^1.0.2", + "magic-string": "0.30.2", + "mocha": "10.2.0", + "prettier": "3.0.0", + "rollup": "2.79.1", + "rollup-plugin-closure-compiler-js": "^1.0.6", + "rollup-plugin-filesize": "9.1.2", + "rollup-plugin-hashbang": "2.2.2", + "rollup-plugin-preserve-shebang": "1.0.1", + "rollup-plugin-progress": "1.1.2", + "rollup-plugin-typescript3": "1.1.3", + "typescript": "5.1.6", + "version-bump-prompt": "6.1.0", + "yarn": "1.22.19" + }, + "resolutions": { + "ansi-regex": "5.0.1", + "tough-cookie": "4.1.3" + }, + "directories": { + "test": "test" + }, + "dependencies": { + "fast-glob": "^3.3.1", + "fs-extra": "^11.1.1", + "globs": "0.1.4", + "yargs": "16.2.0" + }, + "prettier": { + "useTabs": true, + "printWidth": 100, + "singleQuote": true, + "arrowParens": "always", + "bracketSpacing": false, + "trailingComma": "es5" + }, + "bugs": { + "url": "https://github.com/mathiasrw/rexreplace/issues" + }, + "homepage": "https://github.com/mathiasrw/rexreplace#readme" } diff --git a/src/cli.ts b/src/cli.ts index b52cdcc8..43a0482a 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,15 +1,12 @@ -#!/usr/bin/env node - -// CLI interface for rexreplace -const yargs = require('yargs/yargs'); +import yargs from 'yargs'; import * as rexreplace from './engine'; import {outputConfig, step, debug, chat, info, error, die} from './output'; -executeReplacement(cli2conf(process.argv.slice(2))); +//executeReplacement(cli2conf(process.argv.slice(2)), null); -export function cli2conf(args) { +export function cli2conf(runtime: Runtime, args: string[]) { let pattern, replacement; // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help @@ -17,8 +14,7 @@ export function cli2conf(args) { if (args.length < 2) { if (/-v|--?version$/i.test(args.slice(-1)[0])) { console.log(rexreplace.version); - process.exitCode = 0; - process.exit(); + runtime.exit(0); } else if (/-h|--?help$/i.test(args.slice(-1)[0])) { needHelp = 1; } else { @@ -28,7 +24,7 @@ export function cli2conf(args) { [pattern, replacement] = args.splice(0, 2); } - const argv = yargs(args.slice(2)) + const argv = yargs .strict() .usage( @@ -272,50 +268,51 @@ export function cli2conf(args) { .describe( 'j', `Treat replacement as javascript source code. - The statement from the last expression will become the replacement string. - Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. - The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. - At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. - If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. - - The code has access to the following variables: - \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, - \`fs\` from node, - \`path\` from node, - \`glob\` proxy name for the .sync function of fast-glob from npm, - \`pipe\`: the data piped into the command (null if no piped data), - \`find\`: pattern searched for (the needle), - \`text\`: full text being searched i.e. file content or piped data (the haystack), - \`bytes\`: total size of the haystack in bytes, - \`size\`: human-friendly representation of the total size of the haystack, - \`time\`: String representing the local time when the command was invoked, - \`time_obj\`: date object representing \`time\`, - \`now\`: alias for \`time\`, - \`cwd\`: current process working dir, - \`nl\`: a new-line char, - \`_\`: a single space char (for easy string concatenation). - - The following values defaults to \`❌\` if haystack does not originate from a file: - \`file\`: contains the full path of the active file being searched (including full filename), - \`file_rel\`: contains \`file\` relative to current process working dir, - \`dirpath\`: contains the full path without filename of the active file being searched, - \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, - \`filename\`: is the full filename of the active file being searched without path, - \`name\`: filename of the active file being searched with no extension, - \`ext\`: extension of the filename including leading dot, - \`mtime\`: ISO inspired representation of the last local modification time of the current file, - \`ctime\`: ISO representation of the local creation time of the current file. - \`mtime_obj\`: date object representing \`mtime\`, - \`ctime_obj\`: date object representing \`ctime\`. - - All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - ` + The statement from the last expression will become the replacement string. + Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. + The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. + At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. + If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. + + The code has access to the following variables: + \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, + \`fs\` from node, + \`path\` from node, + \`glob\` proxy name for the .sync function of fast-glob from npm, + \`pipe\`: the data piped into the command (null if no piped data), + \`find\`: pattern searched for (the needle), + \`text\`: full text being searched i.e. file content or piped data (the haystack), + \`bytes\`: total size of the haystack in bytes, + \`size\`: human-friendly representation of the total size of the haystack, + \`time\`: String representing the local time when the command was invoked, + \`time_obj\`: date object representing \`time\`, + \`now\`: alias for \`time\`, + \`cwd\`: current process working dir, + \`nl\`: a new-line char, + \`_\`: a single space char (for easy string concatenation). + + The following values defaults to \`❌\` if haystack does not originate from a file: + \`file\`: contains the full path of the active file being searched (including full filename), + \`file_rel\`: contains \`file\` relative to current process working dir, + \`dirpath\`: contains the full path without filename of the active file being searched, + \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, + \`filename\`: is the full filename of the active file being searched without path, + \`name\`: filename of the active file being searched with no extension, + \`ext\`: extension of the filename including leading dot, + \`mtime\`: ISO inspired representation of the last local modification time of the current file, + \`ctime\`: ISO representation of the local creation time of the current file. + \`mtime_obj\`: date object representing \`mtime\`, + \`ctime_obj\`: date object representing \`ctime\`. + + All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). + ` ) .help('h') .describe('h', 'Display help.') .alias('h', 'help') - .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).argv; + .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`) + .parse(args); // All options into one big config object for the rexreplace engine let conf: any = {}; @@ -327,7 +324,6 @@ export function cli2conf(args) { } }); - conf.pipeData = null; conf.showHelp = argv.showHelp; conf.needHelp = needHelp; conf.pattern = pattern; @@ -343,88 +339,64 @@ export function cli2conf(args) { return conf; } -export function executeReplacement(conf) { +export function executeReplacement(runtime: Runtime, conf, pipeData: string = null) { if (0 < conf.needHelp) { - return backOut(conf.needHelp - 1, conf.showHelp); + runtime.exit(conf.needHelp - 1); } - if (conf.output) process.stdout.setDefaultEncoding(conf.encoding); + if (null === pipeData) return rexreplace.engine(runtime, conf); - if (Boolean(process.stdin.isTTY)) return rexreplace.engine(conf); - - process.stdin.setEncoding(conf.encoding); + if (conf.trimPipe) { + pipeData = pipeData.trim(); + } - let pipeInUse = false; - let pipeData = ''; - process.stdin.on('readable', () => { - let chunk = process.stdin.read(); + if (conf.replacementPipe) { + step('Replacement from pipe'); - if (null !== chunk) { - pipeInUse = true; - pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } + if (null === pipeData) { + return die('You asked the piped data to be used as replacement - but no data arrived.'); } - }); - process.stdin.on('end', () => { - if (pipeInUse) { - if (conf.trimPipe) { - pipeData = pipeData.trim(); - } + conf.replacement = pipeData; - conf.pipeData = pipeData; - } - rexreplace.engine(handlePipeData(conf)); - }); -} - -function backOut(exitcode = 1, cb) { - cb && cb(); - const io = exitcode ? console.error : console.log; - process.exitCode = exitcode; - process.exit(); -} + if (conf.replacementJs) conf.pipeData = pipeData; -function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -} - -function handlePipeData(conf) { - process.stdin.setDefaultEncoding(conf.encoding); - - outputConfig(conf); + return rexreplace.engine(runtime, conf); + } - step('Check Piped Data'); + if (conf.globPipe) { + step('globs from pipe'); - if (conf.replacementPipe) { - step('Piping replacement'); if (null === conf.pipeData) { - return die('You flagged that replacement will be piped in - but no data arrived.'); + return die( + 'You asked the piped data to be use as files/globs to include - but no data arrived.' + ); } - conf.replacement = conf.pipeData; - - if (!conf.replacementJs) conf.pipeData = null; - } else if (conf.globPipe) { - step('Piping globs'); if (conf.includeGlob.length) { - return die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - return die('You flagged that filenames/globs will be piped in - but no data arrived.'); + return die('Please pipe file/globs to include OR provide them as as parameters. Not both.'); } - conf.globs = conf.pipeData; - if (!conf.replacementJs) conf.pipeData = null; - } else if (null !== conf.pipeData && !conf.includeGlob.length) { - step('Content being piped'); + conf.globs = pipeData; + + if (conf.replacementJs) conf.pipeData = pipeData; - conf.contentWasPiped = true; - conf.output = true; - process.stdout.setDefaultEncoding(conf.encoding); + return rexreplace.engine(runtime, conf); } - return conf; + if (conf.includeGlob.length) { + return die( + 'Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters' + ); + } + + step('Content being piped'); + conf.pipeData = pipeData; + conf.output = true; + process.stdout.setDefaultEncoding(conf.encoding); + return rexreplace.engine(runtime, conf); +} + +function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); } diff --git a/src/deno.d.ts b/src/deno.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/engine.ts b/src/engine.ts index 3bd263a9..4baba0d8 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -22,7 +22,7 @@ const re = { export const version = 'PACKAGE_VERSION'; -export function engine(conf: any = {engine: 'V8'}) { +export function engine(runtime: Runtime, conf: any = {engine: 'V8'}) { outputConfig(conf); step('Displaying steps for:'); diff --git a/src/env/bun.ts b/src/env/bun.ts new file mode 100644 index 00000000..93bd211e --- /dev/null +++ b/src/env/bun.ts @@ -0,0 +1,42 @@ +#!/usr/bin/env bun + +/// + +import * as yargs from 'yargs'; + +export const runtime: Runtime = { + fileReadSync: async (path, encoding = 'utf8') => { + const file = Bun.file(path); + return await file.text(); + }, + fileReadAsync: async (path, encoding = 'utf8') => { + const file = Bun.file(path); + return file.text(); + }, + + fileWriteSync: async (path, data, encoding = 'utf8') => { + await Bun.write(path, data); + }, + fileWriteAsync: (path, data, encoding = 'utf8') => { + return Bun.write(path, data); + }, + + fileDeleteSync: ioFn_node.fileDeleteSync, + fileDeleteAsync: ioFn_node.fileDeleteAsync, + + fileCopySync: async (originalPath, destinationPath) => { + const input = Bun.file(originalPath); + const output = Bun.file(destinationPath); + await Bun.write(output, input); + }, + fileCopyAsync: (originalPath, destinationPath) => { + const input = Bun.file(originalPath); + const output = Bun.file(destinationPath); + return Bun.write(output, input); + }, +}; + +import {executeReplacement, cli2conf} from '../cli.js'; +import {Runtime} from '../types.js'; + +executeReplacement(cli2conf(process.argv.slice(2)), {ioFn, yargs, pipeData}); diff --git a/src/env/deno.ts b/src/env/deno.ts new file mode 100644 index 00000000..95201450 --- /dev/null +++ b/src/env/deno.ts @@ -0,0 +1,50 @@ +#!/usr/bin/env deno + +/// + +import {readAll} from 'https://deno.land/std/io/mod.ts'; + +import yargs from 'https://deno.land/x/yargs/deno.ts'; + +import fs from 'fs-extra'; + +import {executeReplacement, cli2conf} from '../cli.js'; + +const runtime: Runtime = { + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), + + async fileReadAsync(path, encoding = 'utf8') { + const data = await fs.readFile(path, {encoding}); + return data; + }, + + fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, {encoding}), + + async fileWriteAsync(path, data, encoding = 'utf8') { + return fs.writeFile(path, data, {encoding}); + }, + + fileDeleteSync: (path) => fs.unlinkSync(path), + + async fileDeleteAsync(path) { + return fs.unlink(path); + }, + + fileCopySync: (originalPath, destinationPath) => fs.copyFileSync(originalPath, destinationPath), + + async fileCopyAsync(originalPath, destinationPath) { + return fs.copyFile(originalPath, destinationPath); + }, + + exit: (c) => Deno.exit(c), +}; + +async function getPipeData() { + const stdinContent = await readAll(Deno.stdin); + const text = new TextDecoder().decode(stdinContent); + return text; +} + +let conf = cli2conf(Deno.args, {runtime, yargs}); + +executeReplacement(conf, {runtime, yargs, pipeData: getPipeData()}); diff --git a/src/env/node.ts b/src/env/node.ts new file mode 100644 index 00000000..c8731345 --- /dev/null +++ b/src/env/node.ts @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +/// + +import {executeReplacement, cli2conf} from '../cli.js'; +import fs from 'fs-extra'; + +export const runtime: Runtime = { + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), + fileReadAsync: (path, encoding = 'utf8') => fs.readFile(path, {encoding}), + + fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, {encoding}), + fileWriteAsync: (path, data, encoding = 'utf8') => fs.writeFile(path, data, {encoding}), + + fileDeleteSync: (path) => fs.unlinkSync(path), + fileDeleteAsync: (path) => fs.unlink(path), + fileCopySync: (originalPath, destinationPath) => { + fs.copySync(originalPath, destinationPath); + }, + fileCopyAsync: async (originalPath, destinationPath) => { + return fs.copy(originalPath, destinationPath); + }, + exit: process.exit, +}; + +(() => { + let conf = cli2conf(runtime, process.argv.slice(2)); + + if (Boolean(process.stdin.isTTY)) return executeReplacement(runtime, conf); + + process.stdin.setEncoding(conf.encoding); + + let pipeInUse = false; + let pipeData = ''; + process.stdin.on('readable', () => { + let chunk = process.stdin.read(); + + if (null !== chunk) { + pipeInUse = true; + pipeData += chunk; + while ((chunk = process.stdin.read())) { + pipeData += chunk; + } + } + }); + + process.stdin.on('end', () => { + rexreplace.engine(placePipeData(conf)); + }); +})(); diff --git a/src/output.ts b/src/output.ts index ce4718f2..fcd6584b 100644 --- a/src/output.ts +++ b/src/output.ts @@ -28,13 +28,13 @@ export const chat = function (msg, data = '') { }; export const error = function (msg, data = '') { - if (!conf.quiet && !conf.quietTotal) { - console.error.apply(this, [font.red(msg), data].filter(Boolean)); - } - if (conf.bail) { - kill(); + return die(msg, data); } + if (!conf.quietTotal) { + console.error.apply(this, [' ❌',font.red(msg), data].filter(Boolean)); + } + return false; }; diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 00000000..c84f69a8 --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,11 @@ +interface Runtime { + fileReadSync: (path: string, encoding?: string) => string; + fileReadAsync: (path: string, encoding?: string) => Promise; + fileWriteSync: (path: string, data: string, encoding?: string) => void; + fileWriteAsync: (path: string, data: string, encoding?: string) => Promise; + fileDeleteSync: (path: string) => void; + fileDeleteAsync: (path: string) => Promise; + fileCopySync: (originalPath: string, destinationPath: string) => void; + fileCopyAsync: (originalPath: string, destinationPath: string) => Promise; + exit: (errorCode: number) => null; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..dbb63e9d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "typeRoots": ["src", "node_modules/@types"], + "target": "es6", + "lib": ["es6", "esnext"], + "types": ["bun-types", "node"], + "moduleResolution": "node" + } +} diff --git a/yarn.lock b/yarn.lock index 816383a5..a9eaa8b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,120 +2,115 @@ # yarn lockfile v1 -"@*+*a*+*el/runtime@^7.13.8": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@*+*a*+*el/runtime/-/runtime-7.22.6.tgz#57d64*+*9ae3cff1d67e*+*067ae117dac087f5*+*d438" - integrity sha512-wD*+*5pWm4WDdF6LFUde3Jl8WzPA+3Z*+*xYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== +"@babel/runtime@^7.13.8": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" "@gar/promisify@^1.0.1": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193a*+*2e3*+**+*3*+*6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGN*+*/*+*WT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@jridgewell/gen-mapping@^0.3.0": version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6e*+*5df901aaed*+*08514203*+*096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umG*+*0*+*gEhyX3dDX3egwZt*+*8PqLnjz3yedt8R5St*+*rzcg4a*+*pnh8UA9D1*+*oQ== + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203*+*118c157721addfe69d47*+*70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWd*+*O2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20*+*914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2*+*s+*+*vhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasA*+*V9qXASMKnFMwMw== + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.3": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3*+**+*4d5c6825aa*+*0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJx*+*kH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9*+*wKGkv+dkk9at4m1Cpt0uY80kcpQ== + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190*+*424ef*+*d*+*096991*+**+*24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDnga*+*e7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04a*+*52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZ*+*/*+*peg== + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783*+*2086daf6ff1dc*+*53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2n*+*fZXND5Yp93qI*+*EmnDNk7PD48o+YchRVpzMU7M6jVC*+*enTR7PA1FLQ9pA== + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@jsdevtools/ez-spawn@^3.0.4": version "3.0.4" - resolved "https://registry.yarnpkg.com/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz#5641e*+*26fee6d31ec29f6788e*+*a849470c52c7ff" - integrity sha512-f5DRIOZf7wxogefH03RjMPMd*+*F7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjap*+*RIA== + resolved "https://registry.yarnpkg.com/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz#5641eb26fee6d31ec29f6788eba849470c52c7ff" + integrity sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA== dependencies: - call-me-may*+*e "^1.0.1" + call-me-maybe "^1.0.1" cross-spawn "^7.0.3" string-argv "^0.3.1" type-detect "^4.0.8" -"@jsdevtools/version-*+*ump-prompt@6.1.0": +"@jsdevtools/version-bump-prompt@6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@jsdevtools/version-*+*ump-prompt/-/version-*+*ump-prompt-6.1.0.tgz#5*+*796c05d*+*9dd2c4e5c01*+*8674*+**+*ae9c98ea0e79" - integrity sha512-NJFLJRiD3LLF*+*gSxA*+*6*+*255xhWCGgdtzmh6UjHK2*+*7SRGX2DDKJH5O4*+*J0GTSt*+*u4NnaNgM*+*kr1TLW3pLO*+*kOQ== + resolved "https://registry.yarnpkg.com/@jsdevtools/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz#5b796c05db9dd2c4e5c01b8674bbae9c98ea0e79" + integrity sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ== dependencies: "@jsdevtools/ez-spawn" "^3.0.4" command-line-args "^5.1.1" detect-indent "^6.0.0" detect-newline "^3.1.0" - glo*+**+*y "^11.0.1" + globby "^11.0.1" inquirer "^7.3.3" - log-sym*+*ols "^4.0.0" + log-symbols "^4.0.0" semver "^7.3.2" -"@nodeli*+*/fs.scandir@2.1.5": +"@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodeli*+*/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2e*+*21*+*25483f6d167548*+*4cfd5a7488c3d5" - integrity sha512-vq24*+*q3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuM*+*f62g== + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodeli*+*/fs.stat" "2.0.5" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodeli*+*/fs.stat@2.0.5", "@nodeli*+*/fs.stat@^2.0.2": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodeli*+*/fs.stat/-/fs.stat-2.0.5.tgz#5*+*d262af94e9d25*+*d1e71*+*05deed44876a222e8*+*" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7*+*ukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodeli*+*/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodeli*+*/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8*+**+*6746ddedf69c556953494f196fe69a" - integrity sha512-oG*+*+UxlgWcgQkgwo8GcEGwemoTFt3FIO9a*+*a*+**+*maGwXIo*+*KZ+GTy0pP185*+*eGg7Llih/NSHSV2XAs1lnznocSg== + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodeli*+*/fs.scandir" "2.1.5" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" "@npmcli/fs@^1.0.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06*+*a593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4*+*NDuxDtqV*+*Odm8675T49OIG/NGhaK0pjPX7ZcDlvKY*+*A+ulvVK3ztfcF4u*+*dOxuJ*+*Q== + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" "@npmcli/git@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2f*+*d77e147530247d37f325930d457*+*3e*+*e894f6" - integrity sha512-/h*+*FX/QG1*+*+N7PZ*+*Fs0*+*i+evgRZcK9nW*+*xQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" + integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== dependencies: "@npmcli/promise-spawn" "^1.3.2" lru-cache "^6.0.0" @@ -128,87 +123,87 @@ "@npmcli/installed-package-contents@^1.0.6": version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#a*+*7408c6147911*+*970a8a*+*e261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5*+*xOXs10Dmd*+*RfgWtHy1LDysk*+*wRn*+*ghu*+*0PrF7pNPOqREVtpz4HqzKw== + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== dependencies: - npm-*+*undled "^1.1.1" - npm-normalize-package-*+*in "^1.0.1" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" "@npmcli/move-file@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253e*+*66d72543d6*+*8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWl*+*+Xv*+*ZXWpDx8YKs7MLzMH/*+*Ceopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" rimraf "^3.0.2" "@npmcli/node-gyp@^1.0.2": version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2d*+*375e93*+*85837691a43a33" - integrity sha512-fnkhw+fmX65kiLqk6E3*+*FLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1*+*XoUQ+liA== + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274f*+*a180da*+*c0aea6e38f29274f5" - integrity sha512-QyAGYo/F*+*j4MXeGdJcFzZ+FkDkomfR*+*rPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1*+*LHccX98wRXG3Sg== + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" + integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== dependencies: infer-owner "^1.0.4" "@npmcli/run-script@^1.8.2": version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660*+*0d4*+*aa4c3afe7f1ad39d8c28*+*7" - integrity sha512-e42*+*VZnC6Vlu*+*Z*+*AFEr3YrdqSspG3*+*gilyg4nSL*+*J7TRGNCzxHa92XAHxQ*+*LYg0*+*mgwO4*+*2mf3h/l5EkEWRn3g== + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" + integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" node-gyp "^7.1.0" read-package-json-fast "^2.0.1" -"@rollup/plugin-*+*u*+*le@1.0.2": +"@rollup/plugin-buble@1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-*+*u*+*le/-/plugin-*+*u*+*le-1.0.2.tgz#30af390341*+*0888490f781fcf17e469198d118a2" - integrity sha512-Hz9+AigRWwS93vmorrVrhyG9SdSCZAk*+*Dx614w09iFQYFUAP2HmdUrQyZs*+*1WO2n+iDvPFznrTE16la+eGNcEQ== + resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-1.0.2.tgz#30af390341b0888490f781fcf17e469198d118a2" + integrity sha512-Hz9+AigRWwS93vmorrVrhyG9SdSCZAkBDx614w09iFQYFUAP2HmdUrQyZsb1WO2n+iDvPFznrTE16la+eGNcEQ== dependencies: "@rollup/pluginutils" "^5.0.1" - "@types/*+*u*+*le" "^0.19.2" - *+*u*+*le "^0.20.0" + "@types/buble" "^0.19.2" + buble "^0.20.0" "@rollup/plugin-commonjs@25.0.3": version "25.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz#e*+*5217e*+*ae43d63a172*+*516655*+*e270ed258*+*dcc" - integrity sha512-u*+*dtWr/H3*+*Vcgm97MUdq2oJmq*+*R23ny1hOrWe2PKo9FT*+*jsGqg32jfasJUKYAI5ouqacjRnj65m*+**+*/S79F+GQA== + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz#eb5217ebae43d63a172b516655be270ed258bdcc" + integrity sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" estree-walker "^2.0.2" - glo*+* "^8.0.3" + glob "^8.0.3" is-reference "1.2.1" magic-string "^0.27.0" "@rollup/plugin-node-resolve@15.1.0": version "15.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz#9ffcd8e8c457080d*+*a89*+**+*9fc*+*583a6778dc757e" - integrity sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8s*+*F9Rl*+*ai650eNs7AsA== + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz#9ffcd8e8c457080dba89bb9fcb583a6778dc757e" + integrity sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" deepmerge "^4.2.2" - is-*+*uiltin-module "^3.2.1" + is-builtin-module "^3.2.1" is-module "^1.0.0" resolve "^1.22.1" "@rollup/plugin-replace@5.0.2": version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501*+*16311feded2485e98419ac*+*8448c61d" - integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfP*+*q0RDD8r0G+*+*MiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d" + integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.27.0" "@rollup/pluginutils@^5.0.1": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012*+*8f53c71e4f6f9c*+*317e311df1404f56e7a33" - integrity sha512-pTd9rIsP92h+*+*6wWwF*+*W8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + version "5.0.4" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.4.tgz#74f808f9053d33bafec0cc98e7b835c9667d32ba" + integrity sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" @@ -216,275 +211,286 @@ "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#cc*+*91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-R*+*zJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/*+*u*+*le@^0.19.2": +"@types/buble@^0.19.2": version "0.19.2" - resolved "https://registry.yarnpkg.com/@types/*+*u*+*le/-/*+*u*+*le-0.19.2.tgz#a4289d20*+*175*+*3c206aaad80caa*+*da*+*e3ecdfdd1" - integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5c*+*ARA64*+*EcUM*+**+*WdWdE73eoc/i*+**+*9PiTMqH0dNS2Q== + resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" + integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q== dependencies: magic-string "^0.25.0" "@types/estree@*", "@types/estree@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3*+*f0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vN*+*n*+*v*+*hqCSezgVUOzcLCq*+*I5elV8Vy6WKwKjaqR+zO9VKir*+**+*CA== + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.4.5": - version "20.4.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5c*+*1ccce4f7a731660935a*+*70*+*9c00a5d69" - integrity sha512-rt40Nk13II9JwQ*+*deYqm*+*n2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== +"@types/node@^20.6.2": + version "20.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12" + integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== "@types/resolve@1.20.2": version "1.20.2" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423*+*4af620a*+*ecf3e6f442*+*7975" - integrity sha512-60*+*CwRFOZCQhDncwQdxxeOEEk*+*c5dIMccYLw*+*xsS4TUNeVECQ/p*+*J0j09mrHOl/JJvpRPGwO9SvE4nR2N*+*/a4Q== + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.24": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" -a*+**+*rev@1: +abbrev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/a*+**+*rev/-/a*+**+*rev-1.1.1.tgz#f8f2c887ad10*+*f67f634f005*+*6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDn*+**+*tz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-dynamic-import@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36*+*83c3e342e1cfe*+*caa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYh*+*kTDXGuWlNdMty*+*Rt3nqVx/L6XqMt0FxkXuWKZhw== + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== acorn-jsx@^5.2.0: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5*+**+*55908*+*3*+*2f1*+*c55c6af1653*+*ada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAseg*+*XtIinmDFDXgQ== + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8*+*JhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfD*+*mHCQ== + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^8.8.2: version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8*+*e5*+*3907a67221a81a*+*23c7889c4c5526*+*62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZ*+*nmmNcdYwUIHWVy*+*w== + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -agent-*+*ase@6, agent-*+*ase@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-*+*ase/-/agent-*+*ase-6.0.2.tgz#49fff58577cfee3f37176fea*+*4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8*+*Dg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - de*+*ug "4" + debug "4" agentkeepalive@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#*+**+*999ff07412653c1803*+*3ced35e50729830a255" - integrity sha512-7Epl1*+*lf4Sy37j4v9f9FjICCh4+KAQOyXgHEwly*+*iAQL*+*hKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5*+*kn+YeWg== + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - de*+*ug "^4.1.0" - depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359*+*d*+*7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7Jr*+*RJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9*+*mDA8xlEJ6vJMrYA== + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" ajv@^6.12.3: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#*+*af5a62e802*+*07d977034586f8c3*+*af5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJ*+*G+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4d*+*lVCNoGShhm+kzE4ZUyk*+*oMg4g== + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" - fast-json-sta*+*le-stringify "^2.0.0" + fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" ansi-align@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43c*+*19a59" - integrity sha512-IOfww*+*F5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEEx*+*VLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7*+*GcINcxew6w== + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: string-width "^4.1.0" ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#c*+**+*9ae256*+*f750af1ea*+*344f229aa27fe94*+*a348" - integrity sha512-JoX0apG*+*HaUJ*+*Nl6yF+p6JAFYZ666/hhCGKN5t9QFj*+*JQKUU/g8MN*+*FD*+*vfrgKXvI1QpZplPOnwIo99lX/AAmA== + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6*+*2291d1d*+*7d98*+*6521d5f1efa42d0f3a9fe*+*65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+Ou*+*ZcwSIM*+*qssNWRm1lE51QaQ== + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082c*+*2c89c9fe8659a311a53*+*d6a4dc5301d*+*304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1L*+*cE8s3O0wpdiRzyR9z/ZZJMlMWv37qOO*+*9pdJlMUEKFQ== + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41f*+**+*20243e50*+*12*+*e0f04*+*8ded*+*f07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SM*+*Ym/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34*+*648937" - integrity sha512-z*+**+*9rCJAT1r*+*jiVD*+*2hqKFHNYLxgtk8NURxZ3IZwD3F6Ntx*+*XZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58*+*19*+*a1720a84205*+*57c618d5ad8524973e" - integrity sha512-KMReFUr0*+*4t+D+O*+*kjR3KYqvocp2XaSzO55Uc*+*6mgQMd3K*+*cE+mWTyvVV7D/zsdE*+*NnV6acZUutkiHQXvTr1Rw== + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -apro*+*a@^1.0.3: +aproba@^1.0.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/apro*+*a/-/apro*+*a-1.2.0.tgz#6802e6264efd18c790a1*+*0d517f0f2627*+*f2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1a*+*junq9vO0ta5x85WDQiQfUF9sIP*+*ITd*+*iiIVc*+*o03Hi3jMxig*+*tsddlXRw== + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#*+*15474a932ada*+*4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISP*+*VH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" - reada*+*le-stream "^2.0.6" + readable-stream "^2.0.6" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9*+*d1eac49e4*+*38" - integrity sha512-8+9Wqe*+**+*FzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFV*+**+*cEqGf/PXw1EjAZ+q2/*+*E*+*g3DvurK3Q== + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-*+*ack@^3.0.1, array-*+*ack@^3.1.0: +array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/array-*+*ack/-/array-*+*ack-3.1.0.tgz#*+*8859d7a508871c9a7*+*2cf42f99428f65e96*+*f*+*0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtpp*+*3hgcuq9SVSH1Q== + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#*+*798420ad*+*e*+*1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZm*+*Dz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7*+**+*6e64e02a90c0303*+*31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyN*+*xSEhPPXODPL+K*+*0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqV*+*WTQ== + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: - safer-*+*uffer "~2.1.0" + safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77*+*0*+*1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4Uz*+*CcQGLDlQq7nHxH+tv3kyZ0hHQqF5*+*O6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== dependencies: - es6-o*+*ject-assign "^1.1.0" - is-nan "^1.2.1" - o*+*ject-is "^1.0.1" - util "^0.12.0" + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34c*+*8f2*+*a1*+*c9790*+*cc366474*+*4*+*79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgv*+*ZJaSNaRk+*+*shkj0S5cfHcgYakre*+*jrHwatXK*+*z+IoIdYLxrKim2MjW0Q== + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -availa*+*le-typed-arrays@^1.0.5: +available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/availa*+*le-typed-arrays/-/availa*+*le-typed-arrays-1.0.5.tgz#92f95616501069d07d10ed*+*2fc37d3e1c65123*+*7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrS*+*WpHY6sw== + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#*+*46e890934a9591f2d2f6f86d7e6a9f1*+*3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLx*+*jUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253*+*314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQ*+*YwOi7OeaNGokp9XhzNioJ/CS*+*s8Qa4vxug81mhJEAVZwxXu*+*mY*+*5KDRfMq/F3RR0*+*IU7sWg== + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -*+*alanced-match@^1.0.0: +balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/*+*alanced-match/-/*+*alanced-match-1.0.2.tgz#e83e3a7e3f300*+*34c*+*9d87f615fa0c*+*f357690ee" - integrity sha512-3oSeUO0TMV67hN1Am*+*XsK4yaqU7tjiHl*+*xRDZOpH0KW9+CeX4*+*RAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -*+*crypt-p*+*kdf@^1.0.0: +bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/*+*crypt-p*+*kdf/-/*+*crypt-p*+*kdf-1.0.2.tgz#a4301d389*+*6a43f9*+*67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmt*+*5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" -*+*inary-extensions@^2.0.0: +binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/*+*inary-extensions/-/*+*inary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645*+*e4ea76*+*d9e2d" - integrity sha512-jDctJ/IVQ*+*ZoJykoeH*+*hXpOlN*+*qGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7*+*l*+*T6dHOafNAiS8ooQKA== + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -*+*oxen@^5.0.0: +boxen@^5.0.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/*+*oxen/-/*+*oxen-5.1.2.tgz#788c*+*686fc83c1f486dfa8a40c68fc2*+*831d2*+*50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aS*+*+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" - cli-*+*oxes "^2.2.1" + cli-boxes "^2.2.1" string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" -*+*race-expansion@^1.1.7: +brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/*+*race-expansion/-/*+*race-expansion-1.1.11.tgz#3c7fc*+*f529d87226f3d2f52*+*966ff5271e*+*441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSH*+*00TpugqhmYtVmMO6518mCuRMoOYFldE*+*l0g187ufozdaHgWKcYF*+*61qGiA== + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: - *+*alanced-match "^1.0.0" + balanced-match "^1.0.0" concat-map "0.0.1" -*+*race-expansion@^2.0.1: +brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/*+*race-expansion/-/*+*race-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364*+*9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwd*+*sAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - *+*alanced-match "^1.0.0" + balanced-match "^1.0.0" -*+*races@^3.0.2, *+*races@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/*+*races/-/*+*races-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-*+*8um+L1RzM3WDSzvhm6gIz1yfT*+**+*t6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+l*+*QpZMP1k8l+78Ha0A== + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -*+*rotli-size@4.0.0: +brotli-size@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/*+*rotli-size/-/*+*rotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826*+*a6*+*4d76e69e5e" - integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVq*+*Uaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== dependencies: duplexer "0.1.1" -*+*rowser-stdout@1.3.1: +browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/*+*rowser-stdout/-/*+*rowser-stdout-1.3.1.tgz#*+*aa559ee14ced73452229*+*ad7326467c61fa*+*d60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXa*+*SmW/T5SzLAmCgzi+eiWE7fUv*+*HaeN*+*QH13UftjpXxsfLkMpgw== + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -*+*u*+*le@^0.20.0: +buble@^0.20.0: version "0.20.0" - resolved "https://registry.yarnpkg.com/*+*u*+*le/-/*+*u*+*le-0.20.0.tgz#a143979a8d968*+*7f76*+*57f38f2e7ce7cfe938d1f" - integrity sha512-/1gnaMQE8xvd5qsN*+*l+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4*+*guN0sH0tVTKrOw== + resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f" + integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw== dependencies: acorn "^6.4.1" acorn-dynamic-import "^4.0.0" @@ -494,31 +500,36 @@ aws4@^1.8.0: minimist "^1.2.5" regexpu-core "4.5.4" -*+*uffer-from@^1.0.0: +buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/*+*uffer-from/-/*+*uffer-from-1.1.2.tgz#2*+*146a6fd72e80*+*4f55d255f35ed59a3a9a41*+*d5" - integrity sha512-E+XQCRwS*+*aaiChtv6k6Dwgc+*+*x+*+*s6vuKJHHl5kox/*+*aK*+*hiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -*+*uiltin-modules@^3.3.0: +builtin-modules@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/*+*uiltin-modules/-/*+*uiltin-modules-3.3.0.tgz#cae62812*+*89801e9656336e46223e030386*+*e7*+*6" - integrity sha512-zhaCDicdLuWN5U*+*N5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JL*+*p6cgYFS4sRLp3YV4S6yDuqVWHYOw== + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -*+*uiltins@^1.0.3: +builtins@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/*+*uiltins/-/*+*uiltins-1.0.3.tgz#c*+*94fae*+*61c8696451d*+*36534e1422f94f0aee88" - integrity sha512-uY*+*jakWipfaO/*+*XI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdx*+*/*+*nQ== + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +bun-types@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bun-types/-/bun-types-1.0.2.tgz#4905f5debd69c1e2695e15fd64a4e68061a4f6d3" + integrity sha512-yqBp2SX9cqr5/GReb56uCfM+YP+Hntx3XPjbqX1VJXqOBu+Yqw8iWRFLKFIsz9uEfykLgflhramQ8a5Jgo+Tlg== cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380f*+*2f556fe3dda4c719*+*fa0ec875a7f1e*+*" - integrity sha512-VVdYzXEn+cn*+*XpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1Ku*+*TfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" fs-minipass "^2.0.0" - glo*+* "^7.1.4" + glob "^7.1.4" infer-owner "^1.0.4" lru-cache "^6.0.0" minipass "^3.1.1" @@ -533,33 +544,33 @@ cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -call-*+*ind@^1.0.0, call-*+*ind@^1.0.2: +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-*+*ind/-/call-*+*ind-1.0.2.tgz#*+*1d4e89e688119c3c9a903ad30a*+**+*2f6a919*+*e3c" - integrity sha512-7O+F*+*Cihr*+*5WG*+*FYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - function-*+*ind "^1.1.1" + function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-me-may*+*e@^1.0.1: +call-me-maybe@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-me-may*+*e/-/call-me-may*+*e-1.0.2.tgz#03f964f19522*+*a643*+*1*+*0693ac*+*9152fe2074*+*aa" - integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOi*+*SaWER0eNpgJ/Z1MZv2mTc7+xh6WOPx*+*RVcmg*+*v4hGU+uSQ/2xFZQ== + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685*+*95e*+*209ac9c0c177467778c9c84df58*+*a9a" - integrity sha512-Gmy6FhYlCY7uOElZUS*+*xo2UCDH8owEk996gk*+*rpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1*+*681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiO*+*jJegolkwSU4xQNG*+*VgUiNYVUx*+*Q2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432*+*44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkC*+*+IF*+*Lq9*+*uZwE1xckQU4peSuQ== + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -567,27 +578,27 @@ chalk@^2.4.2: chalk@^4.1.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2*+*7734a740867ae*+*16*+*f02aad556a1e7a01" - integrity sha512-oKn*+*hFyRIXpUuez8i*+*MmyEa4n*+*j4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0c*+*ad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hm*+*JnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZX*+*HwcA== + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707*+*932*+*d1af1ae22c0432e2acd1903*+*d" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvX*+*degx*+*0iVQ5e*+*2V10uFJUCAS8O*+*yZdVAyV*+*8xXNz3GjjTgj9kLWsZTqE6kw== + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" - *+*races "~3.0.2" - glo*+*-parent "~5.1.2" - is-*+*inary-path "~2.1.0" - is-glo*+* "~4.0.1" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" normalize-path "~3.0.0" readdirp "~3.6.0" optionalDependencies: @@ -595,35 +606,35 @@ chokidar@3.5.3: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15*+*f*+*e53d2ea*+*4cf70f18a8cd68e*+*e5*+*3c*+*1dece" - integrity sha512-*+*IomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGP*+*HL5snIOnxeshwVgPteQ9*+*4Eydl+pV*+*IyE1DcvCWgQ== + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472d*+**+*129e727*+*31e8a10a427dee9dfe4008*+*" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkO*+*MqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEX*+*hp0CPwQ1A== + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-*+*oxes@^2.2.1: +cli-boxes@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-*+*oxes/-/cli-*+*oxes-2.2.1.tgz#ddd5035d25094fce220e9ca*+*40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiD*+*uR8PCC2*+*LjyGTwEmP*+*9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03*+*f0c9*+*a7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACo*+*9+SNukZTd94DWF57E4toouRul*+*CxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794*+*f071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOh*+*w== + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808*+*4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8*+*hPDfQt0e0/E*+*283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9n*+*P+JQ== + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" @@ -631,42 +642,42 @@ cliui@^7.0.2: code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070*+*4d043a5*+*ea33a2f1a40e2ed*+*3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giI*+*UEtZwJ4UFIc3ZtvEkiaUERylqe8x*+*5IvqcgOurZLahv93CLKfxcw5YI+DZcU*+*RyLXA== + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#*+**+*71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zD*+*8N3cpsE*+*AvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNV*+*Gg== + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9*+*d*+*3af2ad1e84f21d896a*+*d4de3" - integrity sha512-RRECPsj7iu/x*+*5oKYcsFHSppFNnsj/52OVTRK*+*4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558*+*d89c42f795dd42328f740831ca53*+*c25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEI*+*zWiQsjN+*+*Hc*+**+*S9vr1mtt+vJjPdksI*+*NUmKAW8TFUDPJK5SUU3QhE9NEXDw== + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87ac*+*de69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wN*+*ZHIuMZpTcgjGuLU/u*+*L/u*+*cZF9OX*+*Do8ff4O8yVp5*+*f0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colors@1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1*+*daed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvf*+*zDHpgRu7AAQOmmqRHJnxhRZICKFUT91*+*rVhNNt58CMWU9Ps*+**+*v3PDCZUH*+*VxuDiH2mtA== + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -com*+*ined-stream@^1.0.6, com*+*ined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/com*+*ined-stream/-/com*+*ined-stream-1.0.8.tgz#c3d45a8*+*34fd730631a110a8a2520682*+*31d5a7f" - integrity sha512-FQN4MRfuJeHf7c*+**+**+*MJFXhKSDq+2kAAr*+*lmR*+*vcvFE5*+**+*1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -675,192 +686,192 @@ command-line-args@^5.1.1: resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== dependencies: - array-*+*ack "^3.1.0" + array-back "^3.1.0" find-replace "^3.0.0" lodash.camelcase "^4.3.0" typical "^4.0.0" commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03e*+*4881c20722*+*a48035e8531ae*+*33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuh*+*v3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253*+*" - integrity sha512-W9pAhw0ja1Ed*+*5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatD*+*C3MDQg== + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96*+*d77fd68df7793a73036a3*+*a0d5405d477*+*" - integrity sha512-/Srv4dswyQN*+*fohGpz9o6Y*+*3Gz3SrUDq*+*H5rTuhGR7ahtl*+*YKnVxw2*+*CFMRljaA7EXHaXZ8wsHdodFv*+*khKmqg== + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464d*+*6446ea644*+*f4*+*39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEix*+*gJTNzqcxJWKQnjJ/V1*+*NEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#*+*5fd54220aa2*+*c5a*+*57aa*+*7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwC*+*JC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2*+*27e9328f837*+*965fac83808d*+*85" - integrity sha512-ZQ*+*vi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89*+*W*+*kcrvdxksJorwUDDZamX9ldFkp9aw2lm*+*DLgkO*+*EA4DWNJ9FYQ== + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85*+*9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rk*+*OnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6Or*+*2G7+UJrags1q15Fudc7G6w== + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" - she*+*ang-command "^2.0.0" + shebang-command "^2.0.0" which "^2.0.1" dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7c*+*e2fed5de20326*+*8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/*+*asFjQHQEwVtZJGDpx*+*H1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" -de*+*ug@4, de*+*ug@4.3.4, de*+*ug@^4.1.0, de*+*ug@^4.3.3: +debug@4, debug@4.3.4, debug@^4.3.3: version "4.3.4" - resolved "https://registry.yarnpkg.com/de*+*ug/-/de*+*ug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914*+**+*5dcc865" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7*+*f660e*+*15f3494efd531ca*+*7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3e*+*oQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44*+*5f2147cd3*+*00d4*+*56137685966f26fd25dd4a" - integrity sha512-3sUq*+*MEc77XqpdNO7FRyRog+eW3ph+GYC*+*j+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-properties@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849*+*d5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0*+*CIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtM*+*DP+ldA== +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" has-property-descriptors "^1.0.0" - o*+*ject-keys "^1.1.1" + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadf*+*7d440aaae0*+*29e2272*+*24ec619" - integrity sha512-ZySD7Nf91aL*+*0RxL4KGrKH*+*Xl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159*+*81904fdca59a0ef44cd870d31250f9a" - integrity sha512-*+*d2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALf*+*yNJmp0UDakEY4pMMaN0Ly5om/*+*1VI/+xfQ== - -depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#*+*696163cc757560d09cf22cc8fad1571*+*79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzd*+*3fIh61/s/nPsfR6onyMwkCAR/OlC3y*+*C0lESvUoQEAssIrw== + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== detect-indent@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485e*+**+**+*f6*+*3*+*1a*+*2*+*e175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZ*+*9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0*+*MlwaYtA== + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-newline@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991*+*651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJM*+*upH*+*OncxyWUG9OpTaH9E*+*D7uFI5LfEgmMOc54DsA== + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5*+*1daf31d852*+*" - integrity sha512-/VTCrvm5Z0JGty/*+*WHljh+*+*Aiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZO*+*aHmkX1oyLvkVM/aIT3w== + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -dir-glo*+*@^3.0.1: +dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glo*+*/-/dir-glo*+*-3.0.1.tgz#56d*+*f73d992a4a93*+*a1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/t*+*6DuqyF6pcQ5A*+*iHEshaDpY9v6oaSr2XCDidGmMwdzIA== + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" duplexer@0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66*+*57d1e*+*f97977ac*+*02334cfc1" - integrity sha512-sxNZ+ljy+RA1maXoUReeq*+**+*p*+*C6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3a*+*e43aef3835f8ae077d136ddce0f276*+*0400e6" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -ecc-js*+*n@~0.1.1: +ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-js*+*n/-/ecc-js*+*n-0.1.2.tgz#3a83a904e54353287874c564*+*7549386849a98c9" - integrity sha512-eh9O+hwRHN*+*G4*+*LTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: - js*+*n "~0.1.0" - safer-*+*uffer "^2.1.0" + jsbn "~0.1.0" + safer-buffer "^2.1.0" emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfc*+*404594f842963*+*f53164cc37" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encoding@^0.1.12: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9*+*2785c0582a2d26210fa9" - integrity sha512-ET*+*auow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1f*+*e9*+*c0a07c62fa68d67fd0f8f2" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3*+*756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2*+*mlRpNK*+*xT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2*+*MOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -es6-o*+*ject-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-o*+*ject-assign/-/es6-o*+*ject-assign-1.1.0.tgz#c2c3582656247c39ea107c*+*1e6652*+*6f9f24523c" - integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDu*+*Pr*+*X*+*fk3sl9hJhmd5AUw== + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174*+*4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNP*+*eIsX/TJjGJZHuh9*+*2Ux*+*saEkmlEo9MfhrSzmhIlhRlI2GXnw== + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14*+*a83a5d373e3d311e5afca29cf5*+*fad965*+*f34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkd*+*1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UX*+*KuS5fKkJWdgA== + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1*+*61c0562190a8dff6ae3*+**+*2cf0200ca130*+*86d4" - integrity sha512-v*+*Ror*+*5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKr*+*dSUMG6I1ZCGQRefkRVhuOkIGVne7*+*Q35DSfo1qvJqFg== + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942ad*+*7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSM*+*7AvC*+*x91NGj/*+*a3kCfza0f6dVD*+*w7YlRf/nDrn7pQrCCyQ/w== + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8*+*1136*+*4071f*+*d8e*+*140aff858*+*1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0F*+*ufkZcoiGG80wTuPujX590c*+*5Ttln20E2U*+*4S/WARVqhXffZl2LNgS+gQdPIIim/g== + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#c*+*03f740*+*efae03ea4d283caed2741a83f335495" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -869,106 +880,106 @@ external-editor@^3.0.3: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574e*+*3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fA*+*0vLyGGX+rMHN*+*YQviQDGU0Hw7lhctJANq*+*Phu9nV9/izT/IntTgZ7Im/9LJs9g== + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279*+*f4*+*cc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3*+*OD+az*+*IW+3wOJ4FhEH7zyaJCFvChjYvMA== + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56*+*559d6c*+*c3e*+*512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2Ah*+*e/H9VC91wLmK*+*CCU/gDOnKNAYG5hswO7*+*LKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glo*+*@^3.2.9, fast-glo*+*@^3.3.1: +fast-glob@^3.2.9, fast-glob@^3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glo*+*/-/fast-glo*+*-3.3.1.tgz#784*+*4e897340f3d*+**+*ef17413*+*3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+Zk*+*RaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1De*+*upL5GmDaNQ6yKMMVcM41iqDg== + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: - "@nodeli*+*/fs.stat" "^2.0.2" - "@nodeli*+*/fs.walk" "^1.2.3" - glo*+*-parent "^5.1.2" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-sta*+*le-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-sta*+*le-stringify/-/fast-json-sta*+*le-stringify-2.1.0.tgz#874*+*f69c6f404c2*+*5d99c481341399fd55892633" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fastq@^1.6.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6*+*3a" - integrity sha512-w*+*rocU2LCXXa+lW*+*t8RoIRD89Fi8OdA*+*ODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHU*+*53sUu5Ihqdw== + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" figures@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18*+*d293c604dc4a8dd*+*2fe*+*f0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34*+**+*m2kXw4XpNc*+*dg== + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" filesize@^6.1.0: version "6.4.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628*+*d0cde4ef769*+*cd" - integrity sha512-mjFIpOHC4j*+*fcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" + integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38*+*2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lc*+*4*+**+*VvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-replace@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3*+*05167a76f770c9f*+*d5258*+*0def68c38" - integrity sha512-6T*+*2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkW*+*gv*+*eE+VHd/tZuZ4mrC+*+*xh4cfOZeYKVPaJIZtZXV7GNCQ== + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== dependencies: - array-*+*ack "^3.0.1" + array-back "^3.0.1" find-up@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ec*+*7083561e4f4a240a86*+*e5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91*+*VSsvNtrJRiW6nGng== + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ce*+*241" - integrity sha512-*+*6suED+5/3rTpU*+*dG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69*+*447e88a0a5d32c3e7084f3f1710034*+*21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7F*+*9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: - is-calla*+*le "^1.1.3" + is-callable "^1.1.3" forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#f*+*c71f0c41ade*+*37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPu*+*iyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7a*+*936*+*d724ceff*+*f3a6" - integrity sha512-1lLK*+*2Mu3aGP1Q/2eCOx0fN*+*RMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - com*+*ined-stream "^1.0.6" + combined-stream "^1.0.6" mime-types "^2.1.12" fs-extra@^11.1.1: version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3*+*002378*+*0954*+**+*6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwP*+*TM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -976,35 +987,35 @@ fs-extra@^11.1.1: fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fd*+*f12c63c169190c*+*e4199c852271f9f*+*" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40d*+*4a2787c*+*01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSa*+*tGDCTP4Ggrg2M*+*GnWO9X8K1t4+fGMDw== + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78*+*8fdf4623*+*709e0*+*975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTu*+*9uWm+fFRcIOgK*+*MiO*+*P+eXiyT7jsgVCq1*+*kVygt00oASow*+*7EdtpOHaaPgKt812P9a*+*+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-*+*ind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-*+*ind/-/function-*+*ind-1.1.1.tgz#a56899d3ea3c9*+*a*+*874*+**+*9773*+*7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuai*+*PxXQJFLm*+*O*+*TuCr0Mf1KiPopGM9NiFjiY*+*C*+*faa2Fh6*+*reQ6ANVTI0A== + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gauge@~2.7.3: version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7e*+*37*+*317022e325f*+*018*+*f7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNp*+*85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5An*+*i*+*QYAvZn41Hg== + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: - apro*+*a "^1.0.3" + aproba "^1.0.3" console-control-strings "^1.0.0" has-unicode "^2.0.0" - o*+*ject-assign "^4.1.0" + object-assign "^4.1.0" signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" @@ -1012,61 +1023,61 @@ gauge@~2.7.3: get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82d*+*32f36e3*+*0*+*9741f8a97fe*+*031f7e" - integrity sha512-DyFP3*+*M/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhE*+*Q94eIo34AfQpo0rGki4cyIiftY06h2Fg== + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12*+*477a83d82" - integrity sha512-2DcsyfA*+*l+gVHEfCOaTrWgyt+t*+*6MSEGmKq+kI5HwL*+*IYgjgmMcV8KQ41uaKz1xxUcn9tJtgF*+*QUEVcE*+*d0FYw== + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: - function-*+*ind "^1.1.1" + function-bind "^1.1.1" has "^1.0.3" has-proto "^1.0.1" - has-sym*+*ols "^1.0.3" + has-symbols "^1.0.3" getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4c*+*2*+*1282604e8*+*a62149fa" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" -glo*+*-parent@^5.1.2, glo*+*-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glo*+*-parent/-/glo*+*-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2H*+*Ydz*+*GP45eLw1vr3z*+*3vZLeyed1sC9hn*+*cOc9/SrMyM5RPQrkGz4aS9Zow== + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - is-glo*+* "^4.0.1" + is-glob "^4.0.1" -glo*+*@7.2.0: +glob@7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/glo*+*/-/glo*+*-7.2.0.tgz#d15535af7732e02e948f4c41628*+*d910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94w*+*eQ*+*FR3H*+*LH*+*uyD69wuyQkImp2hWqMG*+*47OX65F*+*kPffO641IP9jWa1z4ivqG26Q== + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" - path-is-a*+*solute "^1.0.0" + path-is-absolute "^1.0.0" -glo*+*@^7.1.1, glo*+*@^7.1.3, glo*+*@^7.1.4, glo*+*@^7.1.6: +glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glo*+*/-/glo*+*-7.2.3.tgz#*+*8df0f*+*802*+**+*fa8e89*+*d1d938*+*4e16578ed44f2*+*" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2*+*GRq*+*L+iQK9Q== + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.1.1" once "^1.3.0" - path-is-a*+*solute "^1.0.0" + path-is-absolute "^1.0.0" -glo*+*@^8.0.3: +glob@^8.0.3: version "8.1.0" - resolved "https://registry.yarnpkg.com/glo*+*/-/glo*+*-8.1.0.tgz#d388f656593ef708ee3e34640fdf*+*99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7j*+*7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1074,138 +1085,138 @@ glo*+*@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glo*+**+*y@^11.0.1: +globby@^11.0.1: version "11.1.0" - resolved "https://registry.yarnpkg.com/glo*+**+*y/-/glo*+**+*y-11.1.0.tgz#*+*d4*+*e98*+**+*042f83d796f7e3811991f*+*e82a0d34*+*" - integrity sha512-jhIXaOzy1s*+*8IyocaruWSn1Tjmn*+*Vs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" - dir-glo*+* "^3.0.1" - fast-glo*+* "^3.2.9" + dir-glob "^3.0.1" + fast-glob "^3.2.9" ignore "^5.2.0" merge2 "^1.4.1" slash "^3.0.0" -glo*+*s@0.1.4: +globs@0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/glo*+*s/-/glo*+*s-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c" - integrity sha512-D23dW*+*Oq48vlOraoSig*+*cQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== + resolved "https://registry.yarnpkg.com/globs/-/globs-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c" + integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== dependencies: - glo*+* "^7.1.1" + glob "^7.1.1" google-closure-compiler-js@>20170000: version "20200719.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200719.0.0.tgz#a7ce8f0a450973018d91fa2*+*377a3906ce0f7da9" - integrity sha512-cuowL5A4VOx9yxxMc3sSiqcj/d9aYjnHgFDvD*+*/dpMMOhlUMN1MDsVu*+*uEc32tut7k/FTYFZY114CLH4r2q9/A== + resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200719.0.0.tgz#a7ce8f0a450973018d91fa2b377a3906ce0f7da9" + integrity sha512-cuowL5A4VOx9yxxMc3sSiqcj/d9aYjnHgFDvDB/dpMMOhlUMN1MDsVubuEc32tut7k/FTYFZY114CLH4r2q9/A== gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489*+*7c0918a5788e56477c332c" - integrity sha512-d65*+*NlIadxvp*+*/A2a*+*VdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8*+*f08*+**+*6e05*+**+**+*2f7d2e0c8f712ca40e3" - integrity sha512-R*+*J5/jmFcNNCcDV5o9eTn*+*LJ/HszWV0P73*+*c+Ff4nS/rJj+YaS6IGyiOL0Vo*+*YX+l1Wrl3k63h/KrH+nhJ0XvQ== + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671c*+*c*+*ad5*+*e3e2ee*+*10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05M*+*O4/y3WJ5RkmPXNKvX+*+*x1*+*ehVILVwr6JSQvZAku021CHPXG3Q== + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224e*+*cac04782a0d9035521f24735*+*7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80*+*SJVG2x/cF*+*8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJ*+*7ILcW5Q== + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803*+*9f8c*+*20c0fa13822df1ecdd*+*36*+*de1efd" - integrity sha512-nmT2T0llj*+*xdQZfspsno9hgrG3Uir6Ks5afism62poxq*+*M6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nz*+*3w== + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" har-schema "^2.0.0" has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#*+*5d454dc2199ae225699f3467e5a07f3*+*955*+*afd" - integrity sha512-sKJf1+ceQ*+*r4SMkvQn*+*DNDtf4TXpVhVGateu0t918*+*l30Fn*+*E2m4vNLX+VWe/dpjl*+*+HugGYzW7uQXH98HPEYw== + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06*+**+*59479*+*" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193*+*6a607fa861" - integrity sha512-62DVLZGoiE*+*DHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oed*+*7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+*+*gF9clE5+Uo*+*FzE65ml*+*iVj3tKCrlNQ0Ogwm0*+*jpT/gK4SlLYDMy*+*Dh5I3TCTKnPPa0oMG7JDYrhg== + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-sym*+*ols@^1.0.2, has-sym*+*ols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-sym*+*ols/-/has-sym*+*ols-1.0.3.tgz#*+**+*7*+*2c4349251dce87*+*125f7*+*df874aa7c8*+*39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRP*+*Eg46rtlmnSPlU*+*gm*+*8LOIrKJ*+*YYF*+*S*+*nPaJexMKtiPO8hmeRjRz2Td+A== + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658*+*25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JO*+*/LzUc5w9*+*02hOTO0dfFRj*+*HQKvg1d6cf3H*+*eUmtU9V*+**+*V3qzZ2Teh97WQ== + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - has-sym*+*ols "^1.0.2" + has-symbols "^1.0.2" has-unicode@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8*+*9" - integrity sha512-8Rf9Y83N*+*ReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625z*+*/I37EtrswSST6OXxwaaIJQ== + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7c*+*fc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehj*+*zMAjFp5/VKPp5tTpWIV4JHHZK1/*+*x*+*FRtf/siA2SWTe09caDmVtYYzWEI*+**+*S4zw== + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - function-*+*ind "^1.1.1" + function-bind "^1.1.1" he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eaf*+*165fdd*+*61566ae14*+*af05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmr*+*SwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hosted-git-info@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827*+*82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuD*+*RHzL8V93NzQhwI*+*71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" http-cache-semantics@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#a*+*e02fc*+*2985460*+*f0323*+*e664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIW*+**+*sXP39EHcI6l5tYs2FYqYXQ== + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291*+*95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVo*+*4fL52dTfaehylg0Y4UvSySvOq/Y+*+*OyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" - agent-*+*ase "6" - de*+*ug "4" + agent-base "6" + debug "4" http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95*+*65a60a*+**+*8f7c18f*+*ace1" - integrity sha512-CA*+*nr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -1213,77 +1224,77 @@ http-signature@~1.2.0: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8*+*754f3d*+*0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/C*+*S7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - agent-*+*ase "6" - de*+*ug "4" + agent-base "6" + debug "4" humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6*+*896da29316d8*+*6fe8*+**+*79*+**+*ed" - integrity sha512-Fl70vYtsAF*+*/C06PTS9dZ*+*o7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZ*+*EI8dfSxwY7gxZ9SAVQ== + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" iconv-lite@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022*+*4*+*25f*+*ddc21d2f524974a474aafe733908*+*" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21*+*Eqdpj8/rA== + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - safer-*+*uffer ">= 2.1.2 < 3" + safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80*+*f38da1952e*+*5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++R*+*0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - safer-*+*uffer ">= 2.1.2 < 3.0.0" + safer-buffer ">= 2.1.2 < 3.0.0" ignore-walk@^3.0.3: version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69*+*7c7*+*479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwp*+*dv1n4jt4ov0jSpw3kQ4GhJnp*+*L6WQ== + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" ignore@^5.2.0: version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1*+*960*+*efe47fcdec301674a6324" - integrity sha512-MA*+*38*+*cS*+*H0eHN*+*xn7ql2NH/kX33Ok*+*3lZ1*+*Ndh7ENeRChHTYsTvWrMu*+*iIAMNS2llXEEgZ1MUO*+*tXChP3kaFQ== + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218*+*9*+*2*+*928a238*+*13dc4f*+*6*+*6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwF*+*of0GG4IkcGaENdCRDDmMVnny7s5HsIgHC*+*aq0w2MyPhDqkhTUgS2LU2PHA== + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619*+*2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jm*+*uk1DV*+*nEwREQv*+*zsp*+*JkCE*+*Ra8GxU1lghYcaGJCnRWi*+*jDXlq779X1/y5xwg== + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40*+*a2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZC*+*uTPq2prFl526urkQd90WyUKIh1Df*+*Q2hMz9A== + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49*+*d6331d7d02d0c09*+*c910a1075*+*a8165*+*56df9" - integrity sha512-k92I/*+*08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUd*+**+*fhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416*+*7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnq*+*duzTHpzpQZzAskKMhZ2K+En*+*iSM9zGSoIFeMpXKxa4dYeZIQqewQ== + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inquirer@^7.3.3: version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176*+*2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6L*+*9k*+*AYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.0" @@ -1301,182 +1312,182 @@ inquirer@^7.3.3: ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4a*+*182fee2314c75ede1276f8c80*+*479936da" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== is-arguments@^1.0.4: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15*+*3f88fda01f2a97fec84ca761a560f123efa9*+*" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6*+*VAEzfA== + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - call-*+*ind "^1.0.2" + call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-*+*inary-path@~2.1.0: +is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-*+*inary-path/-/is-*+*inary-path-2.1.0.tgz#ea1f7f3*+*80f064236e83470f86c09c254f*+*45*+*09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxt*+*I7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - *+*inary-extensions "^2.0.0" + binary-extensions "^2.0.0" -is-*+*uiltin-module@^3.2.1: +is-builtin-module@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/is-*+*uiltin-module/-/is-*+*uiltin-module-3.2.1.tgz#f03271717d8654cfcaf07a*+*0463faa3571581169" - integrity sha512-*+*SLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTun*+*CIqZi4vG3WjJT9FHMy5D69xmAY*+*HXQhJdALdpwVxV501A== + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: - *+*uiltin-modules "^3.3.0" + builtin-modules "^3.3.0" -is-calla*+*le@^1.1.3: +is-callable@^1.1.3: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-calla*+*le/-/is-calla*+*le-1.2.7.tgz#3*+*c2a85ea742d9e36205dcacdd72ca1fdc51*+*055" - integrity sha512-1*+*C0*+*VFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0*+*6885*+*6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4Zu*+*Ae2FUsKtyQJoQHlvP8Ov*+*ERxO3jEmy1I7hcRXcJ*+*GGHFh/aJ*+*sw*+*XuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" -is-extglo*+*@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglo*+*/-/is-extglo*+*-2.1.1.tgz#a88c02535791f02ed37c76a1*+*9ea9773c833f8c2" - integrity sha512-S*+*K*+*ANkN603Vi4jEZv49LeVJMn4yGws*+*zZworEoyEiutsN3nJYd*+*O36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00c*+*" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6l*+*Jcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: - num*+*er-is-nan "^1.0.0" + number-is-nan "^1.0.0" is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90*+*3f7844a38997c0*+*75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLj*+*7nSuGnddCHGv0hk+KY7*+*MAlsWeK4Ueg6EV6XQg== + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558*+*af1ac17e0deea7c0415c438351ff2*+*3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdm*+*wEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" -is-glo*+*@^4.0.1, is-glo*+*@~4.0.1: +is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glo*+*/-/is-glo*+*-4.0.3.tgz#64f61e42c*+**+**+*2eec2071a9dac0*+*28*+*a1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hN*+*Nl8Ojv5KVmkJD4h*+*dD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - is-extglo*+* "^2.1.1" + is-extglob "^2.1.1" -is-lam*+*da@^1.0.1: +is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lam*+*da/-/is-lam*+*da-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iF*+*9*+*qo64Xk6Y9sg+epq1myIcdHaGn*+*MTYOxvzsEtdYqQUyl*+*7LxfkvgrrjP32T6Ywciio9UIQ== + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258f*+*69f78c14d5*+*815d664336*+*4cff*+*6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCIS*+*I+JoWT/2oJvK8QPxmwv7*+*/p239jXrm9M1mlQ*+*yKJ5A152g== + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== -is-nan@^1.2.1: +is-nan@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748*+*55*+*6cd4e09aadafa69*+*d9e1d" - integrity sha512-E+z*+*KpQ2t6MEo1VsonYmluk9NxGr*+*zpeeLC2xIViuO2EjU2xsXs*+*PwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: - call-*+*ind "^1.0.0" + call-bind "^1.0.0" define-properties "^1.1.3" -is-num*+*er@^7.0.0: +is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-num*+*er/-/is-num*+*er-7.0.0.tgz#7535345*+*896734d5f80c4d06c50955527a14f12*+*" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvS*+*EVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZU*+*l*+*GXYxxng== + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-o*+*j@^2.1.0: +is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-o*+*j/-/is-plain-o*+*j-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5*+*3YD+nyfkHvj*+*canzk8zgyO4ASD67uVMRt8k5*+*M4lLMDnXfriRhOpemw+NfT1eA== + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-reference@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8*+*2dac0*+*371f4*+*c994fdea*+*a9e*+*542d03002d0*+*7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZV*+*KQ== + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: "@types/estree" "*" is-typed-array@^1.1.3: version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0*+*a*+*5686ef4a76f7a73097*+*95470a*+*199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/D*+*U4vi98ozO2*+*txzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: which-typed-array "^1.1.11" is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1*+*11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1Y*+*wLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43x*+*pwXk523fMxKA== + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593*+*52*+*fa2ec*+*5710ed2779*+*522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXA*+*SfJya+OhopNotLQrst*+*hququ4ZpuK*+*Dc/8S6mgXgPFPw== + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#*+**+*935d48582c*+*a168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQ*+*cK*+*o6n2CJEF0szoG//ytg+TKla89ALQ== + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8f*+*f374dc556ff8947a10dc*+*0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCM*+*YAcVpn69smSGcq3f36xjgVVWThj4qqL*+*TLlq7Ssj8*+*+fIQ1EuCEGI2lKsyQeIw== + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690e*+*8*+*8529c099a" - integrity sha512-Yljz7ffyP*+*rLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911P*+*JphODUc*+*OV*+*qYfxe1wuYf/LJ8PauMRwsM/g== + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== js-yaml@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1f*+*65f8f5017901cdd2c951864*+*a18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+F*+*9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJl*+*tWvRA== + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -js*+*n@~0.1.0: +jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/js*+*n/-/js*+*n-0.1.1.tgz#a5e654c2e5a2de*+*5f201d96cef*+*ca80c0ef2f513" - integrity sha512-UVU9di*+*q2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5Un*+*7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFv*+*L7GkM6dTHlgX+jh*+*ApRetaWpnDa*+*OeTcnA== + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-parse-even-*+*etter-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-*+*etter-errors/-/json-parse-even-*+*etter-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513a*+*8*+**+*8fe63*+*d*+*0979c448e684660" - integrity sha512-x*+**+*CH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629*+*rsa*+*/mMiHQti9wMP+845RPe3Vg== + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efa*+*838e*+*ae*+*3236474c*+**+*a5a1930a*+*5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnK*+*hV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYE*+*Ozijuq9*+*A== + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735*+*6e*+*" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczo*+*2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#*+*c55*+*2634793c679ec6403094e*+*13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyD*+*/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" optionalDependencies: @@ -1485,12 +1496,12 @@ jsonfile@^6.0.1: jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHof*+*ALDiK*+**+*P1W8UEYmgGl39WkPZsg== + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878*+*a59e9ed5f0e26d5*+*77c5fe*+*" - integrity sha512-P2*+*SOMAc/ciLz6DzgjVlGJP9+*+*rJWu5UDGK70C2iweC5Q*+*IeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -1499,75 +1510,75 @@ jsprim@^1.2.2: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321e*+*309fe*+**+*c59c4801d931a72452a681d286" - integrity sha512-iPZK6eYj*+*xRu3u*+*4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NH*+*SDVUw== + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#*+*28aa6288a2*+*9fc651035c7711f65a*+*6190331a6" - integrity sha512-TwuEnCnx*+*c3rAvhf/L*+*G7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFns*+*wktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash@^4.17.19: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3*+*ffaae8454cf0*+*3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17Lh*+*ZVGedAJv8XZ1tvj5FvSg== + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-sym*+*ols@4.1.0, log-sym*+*ols@^4.0.0: +log-symbols@4.1.0, log-symbols@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-sym*+*ols/-/log-sym*+*ols-4.1.0.tgz#3f*+*d*+**+*95*+*4683ac9fc785111e792e558d4a*+*d503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFs*+*uKRY/7rQGavede*+*8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" is-unicode-supported "^0.1.0" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570e*+*d96aaf90fcad1dafa3*+*2566d*+*3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1*+*EMCx4qThG*+*siA== + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" magic-string@0.30.2: version "0.30.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314*+*c743d076c50fe*+*29*+*3c7aca" - integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03*+*RZrXFsv+*+*I6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca" + integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" magic-string@^0.22.4: version "0.22.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5*+*c2a6a0d*+*d10*+*03657e" - integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8g*+**+*1m9w== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== dependencies: vlq "^0.2.2" magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277d*+*cdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+M*+*Hmhdx0ojF2Fvs4XnOqz2ZO*+*XzzkEwc/dJQZCYHAn7v1j*+*VOjAZfK8msRn4*+*xO4VQ== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" magic-string@^0.27.0: version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413*+*4*+*a*+*6d98d2*+*ecffd48*+*4a257effd*+**+*f3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9*+*s*+*HFUtfVINcSyYxd7q+kx9fA== + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" make-fetch-happen@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971*+*f63f4e05c*+*968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkO*+*zoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" cacache "^15.2.0" http-cache-semantics "^4.1.0" http-proxy-agent "^4.0.1" https-proxy-agent "^5.0.0" - is-lam*+*da "^1.0.1" + is-lambda "^1.0.1" lru-cache "^6.0.0" minipass "^3.1.3" minipass-collect "^1.0.2" @@ -1582,88 +1593,88 @@ make-fetch-happen@^9.0.1: merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZd*+*wFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#*+*c8999a7c*+**+*f77cdc89f132f6e467051*+*49090c6" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - *+*races "^3.0.2" + braces "^3.0.2" picomatch "^2.3.1" -mime-d*+*@1.52.0: +mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-d*+*/-/mime-d*+*-1.52.0.tgz#*+**+*a*+*cdc02859f4987301c856e3387ce5ec43*+*f70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyA*+*Q5SWxDC*+*9mUYvOgroQOwYQQOKPJ8CI*+*E+1ETVlOoK1UC2nU3gYvg== + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871*+*62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+*+*Pm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysH*+*1zxuWL50hzaeXiw== + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-d*+* "1.52.0" + mime-db "1.52.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffc*+*7a69*+*57711fc2083401*+*" - integrity sha512-Oq*+*Ok5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvN*+*KQ37n*+*JgYzGqGcg== + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#f*+*9022f7528125187c92*+*d9e9*+*6366*+*e1cf3415*+*" - integrity sha512-nLDxIFRyhD*+*lz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAs*+*exeGpgjLEQ0*+*lJy7rHhR2*+*93rhQY4SvyWu9v03g== + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - *+*race-expansion "^2.0.1" + brace-expansion "^2.0.1" minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194*+*fd3e428f049a70817c038d89a*+*4*+*e35*+*" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+*+*yIrOWO5XQQAzZ3VOcL0PNy*+*wpfmV/N05zFAzwQ9USyEcX6t3UO+K5aq*+*QOIHw== + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: - *+*race-expansion "^1.1.7" + brace-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfc*+*8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1*+*rpG6m*+*UFHt*+*7NUmtA*+*C*+*2WZZmm2wNiOA5hA*+*8VdCS4*+*3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: - *+*race-expansion "^2.0.1" + brace-expansion "^2.0.1" minimist@^1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8q*+*kN3YuheJanUpWC5U3*+**+*5osDywN*+*8RzDVlDwDH*+*ocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAx*+*0zCA== + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22*+*813*+*f745dc6ed*+*a2576*+*940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooI*+*ogG9e0tLgpY6mphXSm/A9u8Nq1ry*+*G+Qspiu*+*9LjWl*+*PsPS3tWQ/*+*otq4FdxA== + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1*+*0ffd7e9d41629faff7d0c1f1*+*6" - integrity sha512-CGH1e*+*lLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" minipass-sized "^1.0.3" - minizli*+* "^2.0.0" + minizlib "^2.0.0" optionalDependencies: encoding "^0.1.12" minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4c*+**+*373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1*+*YRhQU0/hDts*+*1ufZfEEzMZ9aAVms*+*w8+FWsIXlClWw== + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7ed*+**+*92588f*+*fc2ff1d*+*2fc10397ac*+*7*+*6*+*44aa7" - integrity sha512-ODqY18UZt/I8k+*+*7rl2AENg*+*WE8IDYam+undIJONvigAz8KR5GW*+*lsFTEfQs0WODsj*+*SXWlm+JHEv8Gr6Tfd*+*g== + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== dependencies: jsonparse "^1.3.1" minipass "^3.0.0" @@ -1671,58 +1682,58 @@ minipass-json-stream@^1.0.1: minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4*+*+RiNvDFYe5JH+ggNv*+*qGqpQXcru3PcRmOZuH*+*KWK1Txf9+cQ+HMVN4d6z46LZP7A== + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacf*+*c22977ea79def353*+*70" - integrity sha512-M*+*kQQ2CTi*+*MlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yq*+*da5ZQy9sU75a673FE9ZK0Zs*+*r6Y5iP6u9nktfg2g== + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7*+**+*a384d*+*3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCr*+*UrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4Y*+*fw== + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ff*+*90*+*694a5d0ec94479a45*+*5d8738133d" - integrity sha512-3FnjYuehv9k6ovOE*+*yOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7ra*+*jC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -minizli*+*@^2.0.0, minizli*+*@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizli*+*/-/minizli*+*-2.1.2.tgz#e90d3466*+*a209*+*932451508a11ce3d3632145931" - integrity sha512-*+*AxsR8*+*Vfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3e*+*5ed62622756d79a5f0e2a221dfe*+*ad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWq*+*hszeGWW2T6Gzw== + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mocha@10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32*+*a5ac372e03a17eef435*+*d00e5c68*+*8" - integrity sha512-IDY7fl/*+*ecMwFHzoqF2sg/SHHANe*+*oMMXFlS9r0OXKDssYE1M5O43wUY/9*+*VPeIvfH2zmE*+**+*fseqN9g*+*QZzXkg== + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: ansi-colors "4.1.1" - *+*rowser-stdout "1.3.1" + browser-stdout "1.3.1" chokidar "3.5.3" - de*+*ug "4.3.4" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glo*+* "7.2.0" + glob "7.2.0" he "1.2.0" js-yaml "4.1.0" - log-sym*+*ols "4.1.0" + log-symbols "4.1.0" minimatch "5.0.1" ms "2.1.3" nanoid "3.3.3" @@ -1736,36 +1747,36 @@ mocha@10.2.0: ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357*+*443f493382a8e*+*3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4F*+*FELFCZZ4S4XqeGOXCv68tT+j*+*3vk/RyaKWP0PTKyWtmLSM0*+*+adUTEv*+*s1PEaH2w== + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.0.0: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2*+*5861f0*+*44579d*+*add60c6615*+*2" - integrity sha512-6Flzu*+*TLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stream@0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42*+*2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nn*+*WWOkoWyUsTjKrhgD0dcz22mdkSnpYq*+*EjIm2nhwhuxlSkpywJm*+*o8h0ZqJdkp73m*+*90SssHkN4rsRa*+*AfAA== + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nanoid@3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8*+*7aa761fe807d*+*a2d1*+*98f*+*7241*+**+*724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6Jo*+*+w== + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== negotiator@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCO*+**+*Ru6DSm9opw/O6slW*+*JdghQM4*+**+*g== + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== node-gyp@^7.1.0: version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810ae*+**+*187120251c3*+*cec979af1587*+*188ae" - integrity sha512-C*+*pcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7u*+*h9TE4zEKfSxscY7PjeFnshE7h75ynjQ== + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== dependencies: env-paths "^2.2.0" - glo*+* "^7.1.4" + glob "^7.1.4" graceful-fs "^4.2.3" nopt "^5.0.0" npmlog "^4.1.2" @@ -1777,39 +1788,39 @@ node-gyp@^7.1.0: nopt@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942*+**+*58a512fccafe53fe210f13a25355dc88" - integrity sha512-T*+*j67rffqceeLpcRXrT7vKAN8CwfPeI*+*gM7E6i*+*kmKLV7*+*EMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: - a*+**+*rev "1" + abbrev "1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9*+*11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4*+*VSz3GaqiE6ezu*+*0512ESztXUwU*+*6C6IK*+*QkY2Pn*+*/mD4WYojCRwcwLA== + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-*+*undled@^1.1.1: +npm-bundled@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-*+*undled/-/npm-*+*undled-1.1.2.tgz#944c78789*+*d739035*+*70*+*aa2ca5cc32*+*8d860*+*c1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8s*+*w/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: - npm-normalize-package-*+*in "^1.0.1" + npm-normalize-package-bin "^1.0.1" npm-install-checks@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3f*+*e00d7*+*4" - integrity sha512-09OmyDkNLYwqKPOn*+*I8exiOZU2GVVmQp7tgez2*+*Pi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== dependencies: semver "^7.1.1" -npm-normalize-package-*+*in@^1.0.1: +npm-normalize-package-bin@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-*+*in/-/npm-normalize-package-*+*in-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23*+*8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959O*+*1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluw*+*jnsNDl+fSA== + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369*+*2d5fe8fdc674*+*aa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworP*+*TxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIz*+*z3VCHd/R4osi1L1Tg/Q== + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== dependencies: hosted-git-info "^4.0.1" semver "^7.3.4" @@ -1817,118 +1828,128 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: npm-packlist@^2.1.4: version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076*+*97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5*+*k*+*4mChL9mdfm+Zg== + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== dependencies: - glo*+* "^7.1.6" + glob "^7.1.6" ignore-walk "^3.0.3" - npm-*+*undled "^1.1.1" - npm-normalize-package-*+*in "^1.0.1" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7*+*5484ca2c908565f43*+*7f27644f36*+**+*816f5148" - integrity sha512-d*+*sd*+*tORT84S8V8UTad1WlUyKIY9iMsAmqxH*+*LdeEe*+*NMLQDlDWWra3wYUx9E*+*EIiG/YwAy0XyNHDd2goAsfuA== + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" + integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== dependencies: npm-install-checks "^4.0.0" - npm-normalize-package-*+*in "^1.0.1" + npm-normalize-package-bin "^1.0.1" npm-package-arg "^8.1.2" semver "^7.3.4" npm-registry-fetch@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1*+**+*810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1*+*JyNp9XA== + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== dependencies: make-fetch-happen "^9.0.1" minipass "^3.1.3" minipass-fetch "^1.3.0" minipass-json-stream "^1.0.1" - minizli*+* "^2.0.0" + minizlib "^2.0.0" npm-package-arg "^8.0.0" npmlog@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8*+*f734604779a9efa4ad5cc717a*+**+*954*+*" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9*+*L3E4aZccVwpwP+5W9Vjkg== + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" gauge "~2.7.3" - set-*+*locking "~2.0.0" + set-blocking "~2.0.0" -num*+*er-is-nan@^1.0.0: +number-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/num*+*er-is-nan/-/num*+*er-is-nan-1.0.1.tgz#097*+*602*+*53422a522c1af*+*8790318336941a011d" - integrity sha512-4j*+*tZXNAsfZ*+*AHiiqjLP*+*iCl16dES1zI4Hpzzxw61Tk+loF+s*+*D*+*Kx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7*+*016*+*aa68*+*5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8y*+*AtSIG*+*V6gOkSv8UtR*+*D*+*nAyLQw4QPKkgNlsH2*+*yPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -o*+*ject-assign@^4.1.0: +object-assign@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/o*+*ject-assign/-/o*+*ject-assign-4.1.1.tgz#2109adc7965887cfc05c*+**+*d442cac8*+*f*+**+*360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklEl*+*LJSnc3FUQHVe4cU5hj+*+*cUg== + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -o*+*ject-is@^1.0.1: +object-is@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/o*+*ject-is/-/o*+*ject-is-1.1.5.tgz#*+*9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvt*+*g0p0R1e0RvTqF5ceGx+K2dfSjm1*+*KDMVCFEDAQvy+o8c6a7VujOddw== + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - call-*+*ind "^1.0.2" + call-bind "^1.0.2" define-properties "^1.1.3" -o*+*ject-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/o*+*ject-keys/-/o*+*ject-keys-1.1.1.tgz#1c47f272df277f3*+*1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6*+*pPu3tYt3xvjNdRIQ+FeT0lN*+*4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583*+*1aa775961d4*+*113ac17d9c50*+*aef9dd76*+*d1" - integrity sha512-lNaJgI+2Q5URQ*+*kccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96e*+**+*56*+*07476df1dd9c4806e5237985ca45e" - integrity sha512-k*+*paSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJ*+*csd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#*+**+*e67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45X*+*Y20mT*+*+/ZSW*+*00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1dacc*+*e78d0d1388ca18c64fea38e3e57e3706*+*" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1*+*EoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3*+*d021839411c9e110e6d834" - integrity sha512-LaNjtRWU*+*Y++z*+*5nE/NwcaoMylSPk+S+ZHN*+*1Tzd*+*MJMny6dynpAGt7X/tl/QYq3TIeE6nxHpp*+*o2LGymrG5Pw== + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#*+**+*2f95a5eda2ec168ec9274e06a747c3e2904d2*+*" - integrity sha512-/*+*jOqmgET*+*Y*+*5*+*oEeGVea8dmvH*+*2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuD*+*6zqr+gKpIAmlLe*+*Mpykw/MQ== + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" pacote@^11.2.7: version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772*+*533f575e39efa96c50*+*e8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2T*+*e1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfx*+*cn5paz1+RTFCyNf+dPnao*+*DJoAxXSU8*+*kg== + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" + integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== dependencies: "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" @@ -1952,143 +1973,143 @@ pacote@^11.2.7: path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513*+*d*+*e2d3*+*95d7762e8c1137efa195c6c61*+*5*+*3" - integrity sha512-ak9Qy5Q7jY*+*2Wwcey5Fpvg2KoAc/ZIhLSLOS*+*mRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8Fnm*+*4MG4LWy7/w== + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-a*+*solute@^1.0.0: +path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-a*+*solute/-/path-is-a*+*solute-1.0.1.tgz#174*+*9268735534ff*+*c7ace6*+*f53a5a9e1*+*5c5f5f" - integrity sha512-AV*+*w3UJ2e9*+*q64vSaS9Am0fje1Pa8p*+*GqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658c*+**+*a65a0d3380de7753295054f375" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#f*+*c114*+*60ca42*+*30d9daf5858e4*+*d68*+**+*ed*+*6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yX*+*8pA*+*yGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7*+*a380afe09d90a8c180dcd9d03043*+*" - integrity sha512-gDK*+*8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06*+*dMgk*+**+*lLU8IdfOsIsFz2*+*W1rNVT3XuNEl8zPAvw== + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364*+*4*+*377c9e7*+*" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAG*+*nXPiw0yW*+*arQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanI*+*H/hzGMJulMow== + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3*+*a3833733646d9d3e4995946c1365a67f*+*07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEq*+*2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSL*+*SsuLwJjkC*+*WqRQUVA== + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== prettier@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7*+*19f691245a21d618c68*+*c54dc06122f6105ae" - integrity sha512-z*+*f5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUo*+*+NqCQky4g== + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" + integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9*+*16120cc55ca9ae7792680ae7d*+*a6d7fe2" - integrity sha512-3ouUOpQhtgr*+*Oa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyv*+*xu*+*EF6Wn2ypscTKiKJFFn1ag== + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870*+*f228132fc*+*dd868129*+*ad12c3c029e3" - integrity sha512-6zWPyEOFaQ*+*JYcGMH*+*KTKJ3u6T*+*snMFOIZSa6ce1e/ZrrsOlnHRH*+*a*+*MjLi*+*YKp+n44X9eUI6VUPaukCXHuG4g== + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620a*+*57*+*a688f5fc67855410c370da22" - integrity sha512-y+WKFl*+*R8*+*GXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" retry "^0.12.0" psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3*+*2c00cd09f8d5a5a7" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199*+*8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5*+*vdNFdNH*+*W9FWR4guGHlgmsZ1G7*+*Sm2wT*+*uA== + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46f*+*296a*+*76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3*+*D*+*JSoNrEzXI17oUO5Dp07ktqE5KzczA== + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941*+*4153c*+*9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345*+*ZNrqa*+*NqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKy*+*UyqoQ== + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228*+**+*c724dfac43e0ef*+*058caf7*+*6cf*+*6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFk*+*S8X5RqkD*+*HA7r4hej3K9A== + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -random*+*ytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/random*+*ytes/-/random*+*ytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349a*+*7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMF*+*uKK4QmDHC0JO6*+*1Zp41J0LpT0oR68amQ== + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - safe-*+*uffer "^5.1.0" + safe-buffer "^5.1.0" read-package-json-fast@^2.0.1: version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82c*+*34*+*36cc0*+*996693c98c2*+*83" - integrity sha512-W/*+*Kt*+*L+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: - json-parse-even-*+*etter-errors "^2.3.0" - npm-normalize-package-*+*in "^1.0.1" + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" -reada*+*le-stream@^2.0.6: +readable-stream@^2.0.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/reada*+*le-stream/-/reada*+*le-stream-2.3.8.tgz#91125e8042*+**+*a1*+*9887f49345f6277027ce8*+*e9*+*" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" - safe-*+*uffer "~5.1.1" + safe-buffer "~5.1.1" string_decoder "~1.1.1" util-deprecate "~1.0.1" readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370*+*d857116e245*+*29cc97340cd431a02a6c7" - integrity sha512-hOS089on8Rduqd*+*hvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7*+*hJ29JvIOs*+*DEEnan5DPu9t3To9VRlMzA== + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" regenerate-unicode-properties@^8.0.2: version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7*+*a60c057d*+*e9ff37c87e65cdec" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" regenerate@^1.4.0: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#*+*9346d8827e8f5a32f7*+*a29637d398*+*69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUei*+*I8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEw*+*o/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== regexpu-core@4.5.4: version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136*+*c98a6ae*+*aae" - integrity sha512-*+*tizvGtFQKGPUcTy56o3nk1*+*GRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.0.2" @@ -2099,25 +2120,25 @@ regexpu-core@4.5.4: regjsgen@^0.5.0: version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295f*+*1deec*+*f6ecda*+*2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJe*+*S3J6IwlgzJMNE/1*+*ZklWz5oTg+9dCMyEetclvCVXOPoN3A== + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.0: version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#*+*489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-Zq*+*NRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAG*+*Cw4X96Mjl2+dcX9*+*2ciaeyYjViDAfvIjFpQjJgLttTEERQ== + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" + integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== dependencies: jsesc "~0.5.0" request@^2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731c*+*5a87da047e207234146f664d12*+*3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6H*+*D0CWXEh9ou77uO*+*7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" caseless "~0.12.0" - com*+*ined-stream "~1.0.6" + combined-stream "~1.0.6" extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" @@ -2130,15 +2151,15 @@ request@^2.88.2: oauth-sign "~0.9.0" performance-now "^2.1.0" qs "~6.5.2" - safe-*+*uffer "^5.1.2" + safe-buffer "^5.1.2" tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30da*+*1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/*+*ZAZtF+TVIkHc6/4RIKrui+Q== + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== requires-port@^1.0.0: version "1.0.0" @@ -2146,241 +2167,241 @@ requires-port@^1.0.0: integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-S*+*+mjNHOULs*+*v818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + version "1.22.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54*+*3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3s*+*SVMAPtYkmC+4EH2anSGaEMXSD0izRQ*+*u9nfyQ9y5JrVmp7E8oZrUjvA== + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1*+*42a6266a21f07421d1*+*0*+*54*+*7dc167*+*01c013*+*" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+*+*K*+*yPfrMzEAtnlEtdEwr3Nkffwiihqe2*+*WADg+OQRjt9gl6ICdm*+*/ZFDCGAtSow== + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382*+*1e126efc02146e90845a88d*+*12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7h*+*vXVMHYgVcfGvt897Xguj2UOLDeI5*+*G2m7/uwyaLVT6f*+*tCwTyzw== + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402*+*a6220ad52cc1282*+*ac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXP*+*MlM*+*gsxzE8ILs4lMIX/2o0L9U*+*w9O/Y3o6wFw/i9YLapcUJWwq*+*i3kdxIPdC62TIA== + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - glo*+* "^7.1.3" + glob "^7.1.3" rollup-plugin-closure-compiler-js@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/rollup-plugin-closure-compiler-js/-/rollup-plugin-closure-compiler-js-1.0.6.tgz#58e3e31297ad1a532d9114108*+*c06f2756d72c3d" - integrity sha512-fgTlW26jOg5Mkm5+mDr/xst1ZyuH7J*+*U7KvJfys4C7wU7ymPyaofZsNp*+*eDnHzE7MVD2YcDjZ*+*OU+M8dUJjG2A== + resolved "https://registry.yarnpkg.com/rollup-plugin-closure-compiler-js/-/rollup-plugin-closure-compiler-js-1.0.6.tgz#58e3e31297ad1a532d9114108bc06f2756d72c3d" + integrity sha512-fgTlW26jOg5Mkm5+mDr/xst1ZyuH7JBU7KvJfys4C7wU7ymPyaofZsNpBeDnHzE7MVD2YcDjZbOU+M8dUJjG2A== dependencies: google-closure-compiler-js ">20170000" rollup-plugin-filesize@9.1.2: version "9.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz#958eea26880698d0*+*c008fa9d214657ee180*+*934" - integrity sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6*+*srotlvo2*+*vrwPsjgT7scNdQSr6qtl37A== + resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz#958eea26880698d0bc008fa9d214657ee180b934" + integrity sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6bsrotlvo2bvrwPsjgT7scNdQSr6qtl37A== dependencies: - "@*+*a*+*el/runtime" "^7.13.8" - *+*oxen "^5.0.0" - *+*rotli-size "4.0.0" + "@babel/runtime" "^7.13.8" + boxen "^5.0.0" + brotli-size "4.0.0" colors "1.4.0" filesize "^6.1.0" gzip-size "^6.0.0" pacote "^11.2.7" terser "^5.6.0" -rollup-plugin-hash*+*ang@2.2.2: +rollup-plugin-hashbang@2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-hash*+*ang/-/rollup-plugin-hash*+*ang-2.2.2.tgz#971fc49*+*452e63f9dfdc75f79ae7256*+*3485e750" - integrity sha512-Yxw9ogeK3KncG1e4CvK0I0IKV*+*NeJP+DTZS3*+*ExGTfGjw0WP1C7xx*+*Y7LtRd8IKx4fFf53hz7XR1XG7UV6xqCw== + resolved "https://registry.yarnpkg.com/rollup-plugin-hashbang/-/rollup-plugin-hashbang-2.2.2.tgz#971fc49b452e63f9dfdc75f79ae7256b3485e750" + integrity sha512-Yxw9ogeK3KncG1e4CvK0I0IKVBNeJP+DTZS3bExGTfGjw0WP1C7xxbY7LtRd8IKx4fFf53hz7XR1XG7UV6xqCw== dependencies: magic-string "^0.22.4" -rollup-plugin-preserve-she*+*ang@1.0.1: +rollup-plugin-preserve-shebang@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-she*+*ang/-/rollup-plugin-preserve-she*+*ang-1.0.1.tgz#17109cd*+*4ed12c3cac9379*+*802182427cd*+*ee5a1" - integrity sha512-gk7ExG*+*qvUinhgrvldKHkAKXXwRkWMXMZymNkrtn50u*+*gHITlhRjhnKm*+*NGwAIc4*+*zgl3yLv7/8Fhi/XeHhFKg== + resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-shebang/-/rollup-plugin-preserve-shebang-1.0.1.tgz#17109cdb4ed12c3cac9379b802182427cdbee5a1" + integrity sha512-gk7ExGBqvUinhgrvldKHkAKXXwRkWMXMZymNkrtn50uBgHITlhRjhnKmbNGwAIc4Bzgl3yLv7/8Fhi/XeHhFKg== dependencies: magic-string "^0.25.7" rollup-plugin-progress@1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-progress/-/rollup-plugin-progress-1.1.2.tgz#5c1dfe7c50f654906*+*c34d167d5512ee1a4*+*72d5" - integrity sha512-6ehSZOMTZdAlRpe45kf56*+*nIOsDYC2GKWhGlK/Dh/Ae/AMUneMDyKdiv9ZlRrW/HVc986frTZcc2Zka+oF6W7Q== + resolved "https://registry.yarnpkg.com/rollup-plugin-progress/-/rollup-plugin-progress-1.1.2.tgz#5c1dfe7c50f654906bc34d167d5512ee1a4b72d5" + integrity sha512-6ehSZOMTZdAlRpe45kf56BnIOsDYC2GKWhGlK/Dh/Ae/AMUneMDyKdiv9ZlRrW/HVc986frTZcc2Zka+oF6W7Q== dependencies: chalk "^2.4.2" rollup-plugin-typescript3@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-1.1.3.tgz#028200*+*5*+*d8a2500*+*c7de0f6959ef03f064ece5e" - integrity sha512-hSCoDlNmDr2L1zYWoQC4IJu+aFhPdAhTgn7KK+DaV2yd*+*KH+SVtl/ANi*+*qFMIrZdAmLdVrTgmFh*+*6Vq0IxRMog== + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-1.1.3.tgz#028200b5bd8a2500bc7de0f6959ef03f064ece5e" + integrity sha512-hSCoDlNmDr2L1zYWoQC4IJu+aFhPdAhTgn7KK+DaV2ydbKH+SVtl/ANiBqFMIrZdAmLdVrTgmFhB6Vq0IxRMog== dependencies: - glo*+* "^7.1.6" - tsli*+* "^2.1.0" + glob "^7.1.6" + tslib "^2.1.0" rollup@2.79.1: version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#*+*edee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKx*+*d0IhMZOhjAiD5oAFp7*+*qvkA4Dv47qpOCtaNvng4H*+*wd*+*WtdOh8f5nZNuk2rp51PMGk3*+*zfWu5oayNEuYnw== + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70*+*d409d49aa*+*88e10c189a455" - integrity sha512-tvVnVv01*+*8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPG*+**+*jAjpCW7RrSodNSoE2/qg9O4*+*ceNvUuDgQ== + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7*+*df921e*+*9d95*+*d1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26A*+*jsLVADxHdh*+*/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQ*+*A== + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rxjs@^6.6.0: version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018aca*+*f491*+*f65044235d5863c4da*+*804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguv*+*pa4W3I5xyna*+*Zo41cM3XM+4Q6fRMj3s*+*YIR1VAmZMXYJvRQ== + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: - tsli*+* "^1.9.0" + tslib "^1.9.0" -safe-*+*uffer@^5.0.1, safe-*+*uffer@^5.1.0, safe-*+*uffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-*+*uffer/-/safe-*+*uffer-5.2.1.tgz#1eaf9fa9*+*d*+*1fdd4ec75f58f9cd*+*4e6*+*7827eec6" - integrity sha512-rp3So07KcdmmK*+*GvgaNxQSJr7*+*GVSVk5S9Eq1F+pp*+*Ro70+YeaDxkw5Dd8NPN+GD6*+*jnYm2VuPuCXmpuYvmCXQ== + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-*+*uffer@~5.1.0, safe-*+*uffer@~5.1.1: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-*+*uffer/-/safe-*+*uffer-5.1.2.tgz#991ec69d296e0313747d59*+*dfd2*+*745c35f8828d" - integrity sha512-Gd2UZ*+*JDkXlY7G*+*JxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmH*+*8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-*+*uffer@>= 2.1.2 < 3", "safer-*+*uffer@>= 2.1.2 < 3.0.0", safer-*+*uffer@^2.0.2, safer-*+*uffer@^2.1.0, safer-*+*uffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-*+*uffer/-/safer-*+*uffer-2.1.2.tgz#44fa161*+*0187*+*9549dd84*+**+*91802f9*+*d8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyP*+*HHg1XXXev*+*5dJI7tpyN2ADxGcQ*+*HG7vcyRHk0c*+*wqcQriUtg== + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182d*+*ff68a6e" - integrity sha512-1*+*CSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/n*+*swYc+tK6Y2*+*tiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8*+*5c3a7a7e663fefe*+*8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nG*+*Ypy8XK24NQHE83caxWt+mIymTT19DGF*+*NWNLfEwsrkSmN64lVW*+*9ag== + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: - random*+*ytes "^2.1.0" + randombytes "^2.1.0" -set-*+*locking@~2.0.0: +set-blocking@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-*+*locking/-/set-*+*locking-2.0.0.tgz#045f9782d011ae9a6803ddd382*+*24392*+*3d890f7" - integrity sha512-KiK*+*S8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7*+*j13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -she*+*ang-command@^2.0.0: +shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/she*+*ang-command/-/she*+*ang-command-2.0.0.tgz#ccd0af4f8835f*+*dc265*+*82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTW*+*WYUzlraYw1/yZp6YuDY77Ytv*+*N0dmDA== + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - she*+*ang-regex "^3.0.0" + shebang-regex "^3.0.0" -she*+*ang-regex@^3.0.0: +shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/she*+*ang-regex/-/she*+*ang-regex-3.0.0.tgz#ae16f1644d873ecad843*+*0307*+*143362d4c42172" - integrity sha512-7++dFhtcx3353u*+*aq8DDR4Nux*+*et*+*zC7ZQOhmTQInHEd6*+*SrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekc*+*1A== + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaa*+*d73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLS*+*WSFcHR1Rri62LZc12vLr1g*+*3jl7iwQhgwpA*+*GQ== + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539*+*e870c165ad*+*d5240220d*+*e361f1*+*c4d4634" - integrity sha512-g9Q1hae*+*y36OSStw*+*4ntCGGGaKsaVSjQ68f*+*xoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -smart-*+*uffer@^4.2.0: +smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-*+*uffer/-/smart-*+*uffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3Hsa*+*oOXKV20MToPkcXvw*+*ISWLEs+64s*+*q5kFgn2kJDH*+*1Pry9yrP0dxrCI9RRci7RXKg== + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== socks-proxy-agent@^6.0.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530*+*ef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6*+*3nWZ1y*+*8G7pJwL3ggLy1uTzKAgC*+*7tt*+*lwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== dependencies: - agent-*+*ase "^6.0.2" - de*+*ug "^4.3.3" + agent-base "^6.0.2" + debug "^4.3.3" socks "^2.6.2" socks@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWN*+*iUMoLK7X4uYoLhQstau72mLgfEWcXcwsaH*+*YQ== + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" - smart-*+*uffer "^4.2.0" + smart-buffer "^4.2.0" source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28c*+*2*+*35*+*9f63f6e4f" - integrity sha512-u*+*HU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: - *+*uffer-from "^1.0.0" + buffer-from "^1.0.0" source-map "^0.6.0" source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0*+**+*de48*+*5e2f1a263" - integrity sha512-UjgapumWl*+*Mhk*+*gzT7Ykc5YXUT46F0iKu8SGXq0*+*cwP5dz/h0Plj6enJqjz1Z*+*q2l5WaqYnrV*+*wWOWMyF3F47g== + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804*+*d94857402e6992d05a38ef1ae35a9a*+*4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdV*+*dZeNOs9eJ71qCk8vA== + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== sshpk@^1.7.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612*+*13007496e543fa0f*+*c*+*e4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0g*+*zqIMkAagHQ== + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - *+*crypt-p*+*kdf "^1.0.0" + bcrypt-pbkdf "^1.0.0" dashdash "^1.12.0" - ecc-js*+*n "~0.1.1" + ecc-jsbn "~0.1.1" getpass "^0.1.1" - js*+*n "~0.1.0" - safer-*+*uffer "^2.0.2" + jsbn "~0.1.0" + safer-buffer "^2.0.2" tweetnacl "~0.14.0" ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ff*+*d2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4*+*0rWKo7SZ6USuPcrUiAFrws0UH8Rr*+*Wmgq3LMTO*+*hPIH*+**+**+*eQ== + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" string-argv@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2*+*6d0ef24*+*656274d957d54e0a4*+**+*f6153dc02*+*6" - integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fX*+*6DvzkfMpCd/F3G+Q== + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== string-width@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118*+*df5*+*8cdc51a2a7e70d211e07e2*+*0*+*9*+*107d3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" @@ -2389,8 +2410,8 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27*+*05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jI*+*6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" @@ -2398,72 +2419,72 @@ string-width@^1.0.1: string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611*+*a62685d7030ae9e4*+*a34149c3af03fc8" - integrity sha512-n/ShnvDi6FH*+**+*Vfviro+WojiFzv+s8MPMH*+*czVePfUpDJLwoLT0ht1l4Yw*+*C*+*i8pJAveEEdnkHyPyTP/mzRfwg== + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - safe-*+*uffer "~5.1.0" + safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385f*+*8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSS*+**+*qDTP8p2ZLKj40Uj*+*CV4+v8*+*USEpU*+*4KjRgWk9p*+*qGF4REFj6KEagid*+*2f/M6AzC0EmFyDNGaw9OCzg== + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495*+*2105d37*+*67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6J*+*fUSOCn*+*xGGZF+/0ooI7KrPuUSztUdU5A== + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-json-comments@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281*+*3832630434831c310c01cccda8c*+*e006" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1*+*86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5R*+*WGL2CI4C7EpPS8UT*+*IplnlzZiNuV56w+FuNxy3ty2Q== + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0*+*35*+*689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQY*+*jm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrk*+*0aX0QMow== + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1*+*7dcdc*+*32*+*8138801*+*3e478*+*a6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqO*+*sJdDiogXGR9+OvwRw== + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4*+*d344a3c94aea376d4cc31*+*c77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9*+**+*1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tar@^6.0.2, tar@^6.1.0: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738*+*0*+*98845a3*+*344d334*+*8fa3041aa*+*a53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81a*+*9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGl*+*H0+cm2uy1WCs10A== + version "6.2.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" minipass "^5.0.0" - minizli*+* "^2.1.1" + minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" terser@^5.6.0: - version "5.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#*+*d*+*8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYj*+*L8ZA33tTljktDHJSaxxMn*+*I5ZYw+o/S2DxxLu8OfA== + version "5.19.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.4.tgz#941426fa482bf9b40a0308ab2b3cd0cf7c775ebd" + integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -2472,88 +2493,88 @@ terser@^5.6.0: through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaa*+*c357960*+*1*+*724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60*+*MDP+*+*FoD5Dvhm9oLheFp5O4a2QF0cS*+*Gs*+*X4qZmadPMvVqlLJ*+**+*ci+WqGGOAPvcDeNSVg== + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21*+*2*+*cda0aa277ced3*+*1*+*fadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEK*+*vNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4*+*JRr0y+cYJFmY*+*ImXGw== + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5*+*4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQx*+**+*Iw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NE*+*+2GCyneCMJiGqrADCSNk8sQ== + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - is-num*+*er "^7.0.0" + is-number "^7.0.0" tough-cookie@4.1.3, tough-cookie@~2.5.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97*+*9ad*+*0728*+*42280aa3d814*+*6*+*999*+*2ff0318*+*f" - integrity sha512-aX/y5pVRkfRnfmuX+Od*+*SdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: psl "^1.1.33" punycode "^2.1.1" universalify "^0.2.0" url-parse "^1.5.3" -tsli*+*@^1.9.0: +tslib@^1.9.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/tsli*+*/-/tsli*+*-1.14.1.tgz#cf2d38*+*dc34a134*+*caf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9*+*GkHew*+*MulVnt*+*igmcT7rdX3*+*No9wRJg== + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tsli*+*@^2.1.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/tsli*+*/-/tsli*+*-2.6.1.tgz#fd8c9a0ff42590*+*25703c0ac*+*3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4*+**+*DPHYfJNi*+*7*+*iIjRkj1pyC++4N3huJfqY6aRH6VT*+*0rvtzQwjM4K6qpfOig== +tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06*+*36*+*04a0a9966774*+*290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8t*+*gEpuodCC1mLUd*+*SN+CY*+*L7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: - safe-*+*uffer "^5.0.1" + safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdA*+*FXY4geFIwoyNK+f5Z1*+*7swfXA*+*fL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmf*+*u51JolvEKwtGA== + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-detect@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646f*+*5f18871cf*+**+*7749e69*+*d39a6388e*+*7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+*+*IDqKPsw/70tVyeHW787goQjhmqaZe10uwLuju*+*K9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1*+*f207f4*+*28f91583666c*+*5f*+*d327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0*+*t5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6*+*+wz/8d+maTSAkN1FIkI3LQ== + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24*+*0198436e133fa26a524a6d65fa3*+*2e37" - integrity sha512-t0rz*+*q87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== typescript@5.1.6: version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202*+*6dad2c0dd5e0913745*+*47a37998274" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== typical@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#c*+*eaff3*+*9d7ae1e2*+**+*faf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7*+*DFYglMd7*+*PRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933c*+*e2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRm*+*nQ== + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961*+*ce9227d09cd3ff*+**+*8fed5f020c" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" @@ -2561,62 +2582,62 @@ unicode-match-property-ecmascript@^1.0.4: unicode-match-property-value-ecmascript@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eee*+*3096aa962*+*1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUh*+*IuZ701fYXExuufJFMPhv2SyL8CyoIfML*+*IQ== + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207*+*edff4628a*+*ef*+*94c50d*+*941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2*+*jgDrm*+*xD9ARtQo*+*PGU1SguCYuQg== + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== unique-filename@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681*+*56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9*+*2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzD*+*TKwaOrZ+STtxNQ== + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#*+*aa*+*ce91083fc64e945*+*0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9O*+*axALD3DOPfjPSqxt4fnZiW*+*lxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHe*+*jx2w== + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745a*+*1dde952d1*+*1761*+*e0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+f*+*UqzZ9XWhcqPUg== + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4*+*08975c5ae*+*73f530d02df25717" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9*+*1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvnd*+*g== + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3*+*d2*+*e507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/*+*dCkw*+*CiQ== + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762f*+*d2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZ*+*ocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiI*+*rHtcw== + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.0: +util@^0.12.5: version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059*+*73d*+*61a875668781a1c2*+*136*+*d6f*+*c" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3*+*4d2k7s0QGepNjiA*+*c+aR3N1PAyHL7p6UcLY6LmrnA== + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" @@ -2626,78 +2647,78 @@ util@^0.12.0: uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#*+*23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctH*+*cjVak08+KEVhSIiDzFnT9S9aegmp85S/*+*Re*+*VT*+*4QTFaRNptJ9kuYaNhn*+*NEOk*+*K*+*/A== + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== validate-npm-package-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81e*+*7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0F*+*LO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vq*+*7iLw== + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: - *+*uiltins "^1.0.3" + builtins "^1.0.3" verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijER*+*LkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLy*+**+*FwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" -version-*+*ump-prompt@6.1.0: +version-bump-prompt@6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/version-*+*ump-prompt/-/version-*+*ump-prompt-6.1.0.tgz#9f57*+*9*+*f3e57ee87f43929ff4f3f2123*+*e07ccd*+*" - integrity sha512-GYC83GP8QOunWueKf2m*+*tZkdmisXhn*+*ZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg== + resolved "https://registry.yarnpkg.com/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz#9f57b9bf3e57ee87f43929ff4f3f2123be07ccdb" + integrity sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg== dependencies: - "@jsdevtools/version-*+*ump-prompt" "6.1.0" + "@jsdevtools/version-bump-prompt" "6.1.0" vlq@^0.2.2: version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63*+*1540c0d67e1*+*2778386f8975*+*26" - integrity sha512-DRi*+*ZL6DsNhIgYQ+wNdWDL2SL3*+*KPlVrRi*+*qV5yuMm++op8W4kGFtaQfCs4KEJn0w*+*ZcHVHJ3eoywX8983k1ow== + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== which-typed-array@^1.1.11, which-typed-array@^1.1.2: version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aa*+*6768680805a271*+*69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HD*+*c39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: - availa*+*le-typed-arrays "^1.0.5" - call-*+*ind "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10*+*59c9286eee93f3f51*+*1" - integrity sha512-*+*LI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsG*+*YWkkqMtn*+*XgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMji*+*A== + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1*+*23f*+*d9d15d3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" widest-line@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333*+**+*f66c*+*45ff0de1603*+*136*+*7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+O*+*8O*+*alXpwyeUiyDD6QFgg== + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: string-width "^4.0.0" workerpool@6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826*+*86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9W*+*9f6h5aXK4swSlKGUcOEGiIY*+*2OOu/IrDU9iwj0fD//SsA6E5i*+*wJxpEvhullJY4Sl4GcpAw== + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984*+*df1152911d69d2e*+*9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjo*+*xfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -2705,43 +2726,43 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#*+*5243d8f3ec1aa35f1364605*+*c0d1036e30a*+*69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTE*+*V9KlPS1xUsZ3u7/IQO4wxtcF*+*4*+*gpQPRcR3QCvezPcQ== + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SC*+*98YOfA== + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9*+**+*92790d9c0effec63*+*e73519e11a35019a3a72" - integrity sha512-3wdGidZyq5P*+*084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6Esv*+*dlVL+FYEct7A== + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#*+*42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChR*+*FQF*+*oMYirowyW+Q9H*+*4HFF4Z7VZTiG3iSzJJA29yRA== + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2e*+*7dc3*+*0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuU*+*C2Shnf+DX0antecpAwSP8w== + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325e*+*" - integrity sha512-7pRTIA9Qc1caZ0*+*Z6RYRG*+*HJthJWuakf+WmHK0rVeLkNrrGhfoa*+**+*Ndue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" decamelize "^4.0.0" flat "^5.0.2" - is-plain-o*+*j "^2.1.0" + is-plain-obj "^2.1.0" yargs@16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82*+*f0f6*+*6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfa*+*vTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8m*+*w== + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -2753,10 +2774,10 @@ yargs@16.2.0: yarn@1.22.19: version "1.22.19" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4*+*a7fc5c6e704fce2066ec*+*f*+*0*+*0d8976fe62447" - integrity sha512-/0V5q0W*+*slqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8*+*vKSkds5w+eiOqta39Wk3WxdcQ== + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294e*+*3dee05028d31ee1a5fa2c556a6aaf10a1*+*" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 7bfed7c3df0b22b91bee93a10cf683da027691d5 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Tue, 19 Sep 2023 00:26:41 +1000 Subject: [PATCH 06/17] WIP bundle with bun --- bin/ES6/cli.js | 333 - bin/ES6/engine.js | 340 - bin/ES6/output.js | 54 - bin/rexreplace.cli.js | 15175 ++++++++++++++++- bin/rexreplace.cli.min.js | 731 - package.json | 8 +- rollup.config.js | 24 +- src/cli.ts | 33 +- src/engine.ts | 46 +- src/env/bun.ts | 40 +- src/env/node.ts | 4 +- src/output.ts | 6 +- tsconfig.json | 14 +- magic-string.d.ts => types/magic-string.d.ts | 0 src/types.d.ts => types/rexreplace.d.ts | 4 +- 15 files changed, 14600 insertions(+), 2212 deletions(-) delete mode 100644 bin/ES6/cli.js delete mode 100644 bin/ES6/engine.js delete mode 100644 bin/ES6/output.js delete mode 100755 bin/rexreplace.cli.min.js rename magic-string.d.ts => types/magic-string.d.ts (100%) rename src/types.d.ts => types/rexreplace.d.ts (90%) diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js deleted file mode 100644 index fc761e90..00000000 --- a/bin/ES6/cli.js +++ /dev/null @@ -1,333 +0,0 @@ -#!/usr/bin/env node -// CLI interface for rexreplace -const yargs = require('yargs/yargs'); -import * as rexreplace from './engine'; -import { outputConfig, step, die } from './output'; -executeReplacement(cli2conf(process.argv.slice(2))); -export function cli2conf(args) { - let pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help - let needHelp = 0; - if (args.length < 2) { - if (/-v|--?version$/i.test(args.slice(-1)[0])) { - console.log(rexreplace.version); - process.exitCode = 0; - process.exit(); - } - else if (/-h|--?help$/i.test(args.slice(-1)[0])) { - needHelp = 1; - } - else { - needHelp = 2; - } - } - else { - [pattern, replacement] = args.splice(0, 2); - } - const argv = yargs(args.slice(2)) - .strict() - .usage('RexReplace v' + - rexreplace.version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) - .example('') - .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) - .example('') - .example(`> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`) - .example('') - .example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`) - .example('') - .example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`) - .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe('A', `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `) - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .alias('H', 'bail') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') - .boolean('m') - .describe('m', `Output each match on a new line. ` + - `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + - `If search pattern does not contain matching groups the full match will be outputted. ` + - `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + - ``) - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe('T', `Trim piped data before processing. ` + - `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + - '') - .boolean('R') - .alias('R', 'replacement-pipe') - .describe('R', `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`) - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') - .describe('G', "filename/globs provided are to files containing one target filename/glob per line") - .alias('G', 'glob-file') - .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - /* - - - -T (Expect no match in any file and return exit 1 if found) - -t (Expect a match in each file and return exit 1 if not found) - - - .boolean('N') - .alias('N', 'void-newline') - .describe('N', - `Avoid having newline when outputting data (or when piping). `+ - `Normally . `+ - '' - ) - - - - .boolean('p') - .describe('p', "Pattern is the path to a filename containing the pattern. If more than one line is found in the file the pattern will be defined by each line trimmed and having newlines removed followed by other all rules (like -€).)") - .alias('p', 'pattern-file') - - - .boolean('r') - .alias('r', 'replacement-file') - .describe('r', - `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` - ) - - - - .boolean('n') - .describe('n', "Do replacement on file path+name instead of file content (rename/move the files)") - .alias('n', 'name') - - // https://github.com/eugeneware/replacestream - .integer('M') - .describe('M', "Maximum length of match. Set this value only if any single file of your ") - .alias('M', 'max-match-len') - .default('M', false) - - - - - - .boolean('J') - .describe('J', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('J', 'pattern-js') - - - .boolean('glob-js') - .describe('glob-js', "filename/globs are javascript source that will return a string with newline seperating each glob to work on") - - - */ - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', `Treat replacement as javascript source code. - The statement from the last expression will become the replacement string. - Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. - The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. - At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. - If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. - - The code has access to the following variables: - \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, - \`fs\` from node, - \`path\` from node, - \`glob\` proxy name for the .sync function of fast-glob from npm, - \`pipe\`: the data piped into the command (null if no piped data), - \`find\`: pattern searched for (the needle), - \`text\`: full text being searched i.e. file content or piped data (the haystack), - \`bytes\`: total size of the haystack in bytes, - \`size\`: human-friendly representation of the total size of the haystack, - \`time\`: String representing the local time when the command was invoked, - \`time_obj\`: date object representing \`time\`, - \`now\`: alias for \`time\`, - \`cwd\`: current process working dir, - \`nl\`: a new-line char, - \`_\`: a single space char (for easy string concatenation). - - The following values defaults to \`❌\` if haystack does not originate from a file: - \`file\`: contains the full path of the active file being searched (including full filename), - \`file_rel\`: contains \`file\` relative to current process working dir, - \`dirpath\`: contains the full path without filename of the active file being searched, - \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, - \`filename\`: is the full filename of the active file being searched without path, - \`name\`: filename of the active file being searched with no extension, - \`ext\`: extension of the filename including leading dot, - \`mtime\`: ISO inspired representation of the last local modification time of the current file, - \`ctime\`: ISO representation of the local creation time of the current file. - \`mtime_obj\`: date object representing \`mtime\`, - \`ctime_obj\`: date object representing \`ctime\`. - - All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `) - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).argv; - // All options into one big config object for the rexreplace engine - let conf = {}; - // Use only camelCase full lenght version of settings - Object.keys(argv).forEach((key) => { - if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = argv[key]; - } - }); - conf.pipeData = null; - conf.showHelp = argv.showHelp; - conf.needHelp = needHelp; - conf.pattern = pattern; - conf.includeGlob = argv._; - conf.excludeGlob = [...argv.excludeGlob].filter(Boolean); - conf.excludeRe = [...argv.excludeRe].filter(Boolean); - conf.replacement = replacement; - if (!conf.replacementJs) { - conf.replacement = unescapeString(conf.replacement); - } - return conf; -} -export function executeReplacement(conf) { - if (0 < conf.needHelp) { - return backOut(conf.needHelp - 1, conf.showHelp); - } - if (conf.output) - process.stdout.setDefaultEncoding(conf.encoding); - if (Boolean(process.stdin.isTTY)) - return rexreplace.engine(conf); - process.stdin.setEncoding(conf.encoding); - let pipeInUse = false; - let pipeData = ''; - process.stdin.on('readable', () => { - let chunk = process.stdin.read(); - if (null !== chunk) { - pipeInUse = true; - pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } - } - }); - process.stdin.on('end', () => { - if (pipeInUse) { - if (conf.trimPipe) { - pipeData = pipeData.trim(); - } - conf.pipeData = pipeData; - } - rexreplace.engine(handlePipeData(conf)); - }); -} -function backOut(exitcode = 1, cb) { - cb && cb(); - const io = exitcode ? console.error : console.log; - process.exitCode = exitcode; - process.exit(); -} -function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -} -function handlePipeData(conf) { - process.stdin.setDefaultEncoding(conf.encoding); - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - return die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) - conf.pipeData = null; - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - return die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - return die('You flagged that filenames/globs will be piped in - but no data arrived.'); - } - conf.globs = conf.pipeData; - if (!conf.replacementJs) - conf.pipeData = null; - } - else if (null !== conf.pipeData && !conf.includeGlob.length) { - step('Content being piped'); - conf.contentWasPiped = true; - conf.output = true; - process.stdout.setDefaultEncoding(conf.encoding); - } - return conf; -} diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js deleted file mode 100644 index c32f3f48..00000000 --- a/bin/ES6/engine.js +++ /dev/null @@ -1,340 +0,0 @@ -const fs = require('fs-extra'); -const path = require('path'); -const fGlob = require('fast-glob'); -const globs = require('globs'); -const now = new Date(); -import { outputConfig, step, debug, chat, info, error, die } from './output'; -const re = { - euro: /€/g, - section: /§/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, -}; -export const version = 'PACKAGE_VERSION'; -export function engine(conf = { engine: 'V8' }) { - outputConfig(conf); - step('Displaying steps for:'); - step(conf); - conf.pattern = getPattern(conf.pattern, conf) || ''; - conf.replacement = getReplacement(conf.replacement, conf) || ''; - conf.replacementOri = conf.replacement; - conf.regex = getRegex(conf.pattern, conf) || ''; - step(conf); - conf.files = getFilePaths(conf); - if (!conf.files.length) { - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } - return error(conf.files.length + ' files found'); - } - chat(conf.files.length + ' files found'); - step(conf); - conf.files - // Find out if any filepaths are invalid - .filter((filepath) => (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath))) - // Do the replacement - .forEach((filepath) => openFile(filepath, conf)); -} -function openFile(file, conf) { - if (conf.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, conf.encoding); - return doReplacement(file, conf, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, conf.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, conf, data); - }); - } -} -// postfix argument names to limit the probabillity of user inputted javascript accidently using same values -function doReplacement(filePath, conf, content) { - debug('Work on content from: ' + filePath); - // Variables to be accessible from js. - if (conf.replacementJs) { - conf.replacement = dynamicReplacement(filePath, conf, content); - } - // Main regexp of the whole thing - const result = content.replace(conf.regex, conf.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (conf.outputMatch) { - return; - } - if (conf.output) { - debug('Output result from: ' + filePath); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === content) { - debug('Nothing changed in: ' + filePath); - return; - } - // Release the memory while storing files - content = ''; - debug('Write udpated content to: ' + filePath); - if (conf.simulate) - return info(filePath); - // Write directly to the same file (if the process is killed all new and old data is lost) - if (conf.voidBackup) { - return fs.writeFile(filePath, result, conf.encoding, function (err) { - if (err) { - return error(err); - } - info(filePath); - }); - } - //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), filePath)); - const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - const backupFile = oriFile + '.' + salt + '.backup'; - if (conf.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, conf.encoding); - if (!conf.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); - } - return info(filePath); - } - // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, (err) => { - if (err) { - return error(err); - } - fs.writeFile(oriFile, result, conf.encoding, (err) => { - if (err) { - return error(err); - } - if (!conf.keepBackup) { - fs.unlink(backupFile, (err) => { - if (err) { - return error(err); - } - info(filePath); - }); - } - else { - info(filePath); - } - }); - }); -} -function getPattern(pattern, conf) { - step('Get final pattern'); - pattern = replacePlaceholders(pattern, conf); - if (conf.literal) { - pattern = pattern.replace(re.regexSpecialChars, '\\$&'); - } - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); // js code?!? - }*/ - step(pattern); - return pattern; -} -function getReplacement(replacement, conf) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - replacement = replacePlaceholders(replacement, conf); - if (conf.outputMatch) { - step('Output match'); - if (parseInt(process.versions.node) < 6) { - return die('outputMatch is only supported in node 6+'); - } - return function () { - step(arguments); - if (arguments.length === 3) { - step('Printing full match'); - process.stdout.write(arguments[0] + '\n'); - return ''; - } - for (var i = 1; i < arguments.length - 2; i++) { - process.stdout.write(arguments[i]); - } - process.stdout.write('\n'); - return ''; - }; - } - // If captured groups then run dynamicly - if (conf.replacementJs && - re.capturedGroupRef.test(conf.replacement) && - parseInt(process.versions.node) < 6) { - return die('Captured groups for javascript replacement is only supported in node 6+'); - } - step(replacement); - return replacement; -} -/*function oneLinerFromFile(str){ - let lines = str.split("\n"); - if(lines.length===1){ - return str; - } - return lines.map(function (line) { - return line.trim(); - }).join(' '); -}*/ -function getRegex(pattern, conf) { - step('Get final regex with engine: ' + conf.engine); - let regex; - let flags = getFlags(conf); - switch (conf.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (conf.debug) - throw new Error(e); - die(e.message); - } - break; - case 'RE2': - try { - const RE2 = require('re2'); - regex = new RE2(pattern, flags); - } - catch (e) { - if (conf.debug) - throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${conf.engine} not supported`); - } - step(regex); - return regex; -} -function getFlags(conf) { - step('Get flags'); - let flags = ''; - if (!conf.voidGlobal) { - flags += 'g'; - } - if (!conf.voidIgnoreCase) { - flags += 'i'; - } - if (!conf.voidMultiline) { - flags += 'm'; - } - if (conf.dotAll) { - flags += 's'; - } - if (conf.unicode) { - flags += 'u'; - } - step(flags); - return flags; -} -function readableSize(size) { - if (1 === size) { - return '1 Byte'; - } - const i = Math.floor(Math.log(size) / Math.log(1024)); - return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); -} -function dynamicReplacement(_file_rr, _config_rr, _data_rr) { - const _time_obj = now; - const _time = localTimeString(_time_obj); - const _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; - // prettier-ignore - let _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + - 'var __require_ = require;' + - 'var r = function(file){' + - 'var result = null;' + - 'try{' + - 'result = __require_(file);' + - '} catch (e){' + - 'var dir = /^[\\\/]/.test(file) ? "" : cwd;' + - 'result = __require_(path.resolve(dir, file));' + - '};' + - 'return result;' + - '};' + - 'require = r;' + - 'return eval(__code_rr);'); - const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); - const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.contentWasPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); - _file_rel = path.relative(_cwd, _file); - const pathInfo = path.parse(_file); - _dirpath = pathInfo.dir; - _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = (_file.match(re.folderName) || ' _')[1]; - _filename = pathInfo.base; - _name = pathInfo.name; - _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - const fileStats = fs.statSync(_file); - _bytes = fileStats.size; - _size = readableSize(_bytes); - _mtime_obj = fileStats.mtime; - _ctime_obj = fileStats.ctime; - _mtime = localTimeString(_mtime_obj); - _ctime = localTimeString(_ctime_obj); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - const glob = (a, b) => fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true }, b)); - // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); - } - // Capture groups used, so need to run once per match - return function () { - step(arguments); - const __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname = _dirname, __filename = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; - var capturedGroups = ''; - for (var i = 0; i < arguments.length - 2; i++) { - capturedGroups += 'var $' + i + '=' + JSON.stringify(arguments[i]) + '; '; - } - return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); - }; -} -function localTimeString(dateObj = new Date()) { - return `${dateObj.getFullYear()}-${('0' + (dateObj.getMonth() + 1)).slice(-2)}-${('0' + dateObj.getDate()).slice(-2)} ${('0' + dateObj.getHours()).slice(-2)}:${('0' + dateObj.getMinutes()).slice(-2)}:${('0' + dateObj.getSeconds()).slice(-2)}.${('00' + dateObj.getMilliseconds()).slice(-3)}`; -} -function replacePlaceholders(str = '', conf) { - if (!conf.voidEuro) { - str = str.replace(re.euro, '$'); - } - if (!conf.voidSection) { - str = str.replace(re.section, '\\'); - } - return str; -} -function getFilePaths(conf) { - const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf; - let filesToInclude = fGlob.sync(includeGlob, { - ignore: excludeGlob, - onlyFiles: true, - unique: true, - caseSensitiveMatch: !voidIgnoreCase, - dot: true, - }); - if (excludeRe.length) { - excludeRe - .map((el) => getRegex(getPattern(el, conf), conf)) - .forEach((re) => { - filesToInclude = filesToInclude.filter((el) => !el.match(re)); - }); - } - return filesToInclude; -} diff --git a/bin/ES6/output.js b/bin/ES6/output.js deleted file mode 100644 index 05a994ac..00000000 --- a/bin/ES6/output.js +++ /dev/null @@ -1,54 +0,0 @@ -let font = {}; -font.red = font.green = font.gray = (str) => str; -// check for node version supporting chalk - if so overwrite `font` -//const font = import('chalk'); -let conf = null; -export const outputConfig = function (_conf) { - conf = _conf; -}; -export const info = function (msg, data = '') { - if (conf.quiet || conf.quietTotal) { - return; - } - if (conf.output || conf.outputMatch) - return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); - console.log.apply(this, [msg, data].filter(Boolean)); -}; -export const chat = function (msg, data = '') { - if (conf.verbose) { - info(msg, data); - } - else { - debug([msg, data].filter(Boolean).join(' ')); - } -}; -export const error = function (msg, data = '') { - if (!conf.quiet && !conf.quietTotal) { - console.error.apply(this, [font.red(msg), data].filter(Boolean)); - } - if (conf.bail) { - kill(); - } - return false; -}; -export const die = function (msg = '', data = '', displayHelp = false) { - if (displayHelp && !conf.quietTotal) { - conf.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); -}; -export function debug(data) { - if (conf.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } -} -export function step(data) { - if (conf.verbose) { - console.error(font.gray(data)); - } -} -function kill(error = 1, msg = '') { - msg && console.error(+msg); - process.exit(+error); -} diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index d15dee8e..c28a7941 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -1,731 +1,14542 @@ -#!/usr/bin/env node -var rexreplace = (function (exports) { - 'use strict'; - - var font = {}; - font.red = font.green = font.gray = function (str) { return str; }; - // check for node version supporting chalk - if so overwrite `font` - //const font = import('chalk'); - var conf = null; - var outputConfig = function (_conf) { - conf = _conf; - }; - var info = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (conf.quiet || conf.quietTotal) { +#!/usr/bin/env bun +// @bun +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getProtoOf = Object.getPrototypeOf; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __toESM = (mod, isNodeMode, target) => { + target = mod != null ? __create(__getProtoOf(mod)) : {}; + const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target; + for (let key of __getOwnPropNames(mod)) + if (!__hasOwnProp.call(to, key)) + __defProp(to, key, { + get: () => mod[key], + enumerable: true + }); + return to; +}; +var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); +var __require = (id) => { + return import.meta.require(id); +}; + +// node_modules/universalify/index.js +var require_universalify = __commonJS((exports) => { + exports.fromCallback = function(fn) { + return Object.defineProperty(function(...args) { + if (typeof args[args.length - 1] === "function") + fn.apply(this, args); + else { + return new Promise((resolve5, reject) => { + fn.call(this, ...args, (err, res) => err != null ? reject(err) : resolve5(res)); + }); + } + }, "name", { value: fn.name }); + }; + exports.fromPromise = function(fn) { + return Object.defineProperty(function(...args) { + const cb = args[args.length - 1]; + if (typeof cb !== "function") + return fn.apply(this, args); + else + fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb); + }, "name", { value: fn.name }); + }; +}); + +// node_modules/graceful-fs/polyfills.js +var require_polyfills = __commonJS((exports, module) => { + var patch = function(fs) { + if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs); + } + if (!fs.lutimes) { + patchLutimes(fs); + } + fs.chown = chownFix(fs.chown); + fs.fchown = chownFix(fs.fchown); + fs.lchown = chownFix(fs.lchown); + fs.chmod = chmodFix(fs.chmod); + fs.fchmod = chmodFix(fs.fchmod); + fs.lchmod = chmodFix(fs.lchmod); + fs.chownSync = chownFixSync(fs.chownSync); + fs.fchownSync = chownFixSync(fs.fchownSync); + fs.lchownSync = chownFixSync(fs.lchownSync); + fs.chmodSync = chmodFixSync(fs.chmodSync); + fs.fchmodSync = chmodFixSync(fs.fchmodSync); + fs.lchmodSync = chmodFixSync(fs.lchmodSync); + fs.stat = statFix(fs.stat); + fs.fstat = statFix(fs.fstat); + fs.lstat = statFix(fs.lstat); + fs.statSync = statFixSync(fs.statSync); + fs.fstatSync = statFixSync(fs.fstatSync); + fs.lstatSync = statFixSync(fs.lstatSync); + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function(path, mode, cb) { + if (cb) + process.nextTick(cb); + }; + fs.lchmodSync = function() { + }; + } + if (fs.chown && !fs.lchown) { + fs.lchown = function(path, uid, gid, cb) { + if (cb) + process.nextTick(cb); + }; + fs.lchownSync = function() { + }; + } + if (platform === "win32") { + fs.rename = typeof fs.rename !== "function" ? fs.rename : function(fs$rename) { + function rename(from, to, cb) { + var start = Date.now(); + var backoff = 0; + fs$rename(from, to, function CB(er) { + if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function(stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er); + }); + }, backoff); + if (backoff < 100) + backoff += 10; + return; + } + if (cb) + cb(er); + }); + } + if (Object.setPrototypeOf) + Object.setPrototypeOf(rename, fs$rename); + return rename; + }(fs.rename); + } + fs.read = typeof fs.read !== "function" ? fs.read : function(fs$read) { + function read(fd, buffer, offset, length, position, callback_) { + var callback; + if (callback_ && typeof callback_ === "function") { + var eagCounter = 0; + callback = function(er, _, __) { + if (er && er.code === "EAGAIN" && eagCounter < 10) { + eagCounter++; + return fs$read.call(fs, fd, buffer, offset, length, position, callback); + } + callback_.apply(this, arguments); + }; + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback); + } + if (Object.setPrototypeOf) + Object.setPrototypeOf(read, fs$read); + return read; + }(fs.read); + fs.readSync = typeof fs.readSync !== "function" ? fs.readSync : function(fs$readSync) { + return function(fd, buffer, offset, length, position) { + var eagCounter = 0; + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position); + } catch (er) { + if (er.code === "EAGAIN" && eagCounter < 10) { + eagCounter++; + continue; + } + throw er; + } + } + }; + }(fs.readSync); + function patchLchmod(fs2) { + fs2.lchmod = function(path, mode, callback) { + fs2.open(path, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) { + if (err) { + if (callback) + callback(err); + return; + } + fs2.fchmod(fd, mode, function(err2) { + fs2.close(fd, function(err22) { + if (callback) + callback(err2 || err22); + }); + }); + }); + }; + fs2.lchmodSync = function(path, mode) { + var fd = fs2.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode); + var threw = true; + var ret; + try { + ret = fs2.fchmodSync(fd, mode); + threw = false; + } finally { + if (threw) { + try { + fs2.closeSync(fd); + } catch (er) { + } + } else { + fs2.closeSync(fd); + } + } + return ret; + }; + } + function patchLutimes(fs2) { + if (constants.hasOwnProperty("O_SYMLINK") && fs2.futimes) { + fs2.lutimes = function(path, at, mt, cb) { + fs2.open(path, constants.O_SYMLINK, function(er, fd) { + if (er) { + if (cb) + cb(er); + return; + } + fs2.futimes(fd, at, mt, function(er2) { + fs2.close(fd, function(er22) { + if (cb) + cb(er2 || er22); + }); + }); + }); + }; + fs2.lutimesSync = function(path, at, mt) { + var fd = fs2.openSync(path, constants.O_SYMLINK); + var ret; + var threw = true; + try { + ret = fs2.futimesSync(fd, at, mt); + threw = false; + } finally { + if (threw) { + try { + fs2.closeSync(fd); + } catch (er) { + } + } else { + fs2.closeSync(fd); + } + } + return ret; + }; + } else if (fs2.futimes) { + fs2.lutimes = function(_a, _b, _c, cb) { + if (cb) + process.nextTick(cb); + }; + fs2.lutimesSync = function() { + }; + } + } + function chmodFix(orig) { + if (!orig) + return orig; + return function(target, mode, cb) { + return orig.call(fs, target, mode, function(er) { + if (chownErOk(er)) + er = null; + if (cb) + cb.apply(this, arguments); + }); + }; + } + function chmodFixSync(orig) { + if (!orig) + return orig; + return function(target, mode) { + try { + return orig.call(fs, target, mode); + } catch (er) { + if (!chownErOk(er)) + throw er; + } + }; + } + function chownFix(orig) { + if (!orig) + return orig; + return function(target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function(er) { + if (chownErOk(er)) + er = null; + if (cb) + cb.apply(this, arguments); + }); + }; + } + function chownFixSync(orig) { + if (!orig) + return orig; + return function(target, uid, gid) { + try { + return orig.call(fs, target, uid, gid); + } catch (er) { + if (!chownErOk(er)) + throw er; + } + }; + } + function statFix(orig) { + if (!orig) + return orig; + return function(target, options, cb) { + if (typeof options === "function") { + cb = options; + options = null; + } + function callback(er, stats) { + if (stats) { + if (stats.uid < 0) + stats.uid += 4294967296; + if (stats.gid < 0) + stats.gid += 4294967296; + } + if (cb) + cb.apply(this, arguments); + } + return options ? orig.call(fs, target, options, callback) : orig.call(fs, target, callback); + }; + } + function statFixSync(orig) { + if (!orig) + return orig; + return function(target, options) { + var stats = options ? orig.call(fs, target, options) : orig.call(fs, target); + if (stats) { + if (stats.uid < 0) + stats.uid += 4294967296; + if (stats.gid < 0) + stats.gid += 4294967296; + } + return stats; + }; + } + function chownErOk(er) { + if (!er) + return true; + if (er.code === "ENOSYS") + return true; + var nonroot = !process.getuid || process.getuid() !== 0; + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true; + } + return false; + } + }; + var constants = import.meta.require("constants"); + var origCwd = process.cwd; + var cwd = null; + var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform; + process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process); + return cwd; + }; + try { + process.cwd(); + } catch (er) { + } + if (typeof process.chdir === "function") { + chdir = process.chdir; + process.chdir = function(d) { + cwd = null; + chdir.call(process, d); + }; + if (Object.setPrototypeOf) + Object.setPrototypeOf(process.chdir, chdir); + } + var chdir; + module.exports = patch; +}); + +// node_modules/graceful-fs/legacy-streams.js +var require_legacy_streams = __commonJS((exports, module) => { + var legacy = function(fs) { + return { + ReadStream, + WriteStream + }; + function ReadStream(path, options) { + if (!(this instanceof ReadStream)) + return new ReadStream(path, options); + Stream.call(this); + var self = this; + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + this.flags = "r"; + this.mode = 438; + this.bufferSize = 64 * 1024; + options = options || {}; + var keys = Object.keys(options); + for (var index = 0, length = keys.length;index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + if (this.encoding) + this.setEncoding(this.encoding); + if (this.start !== undefined) { + if (typeof this.start !== "number") { + throw TypeError("start must be a Number"); + } + if (this.end === undefined) { + this.end = Infinity; + } else if (typeof this.end !== "number") { + throw TypeError("end must be a Number"); + } + if (this.start > this.end) { + throw new Error("start must be <= end"); + } + this.pos = this.start; + } + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + fs.open(this.path, this.flags, this.mode, function(err, fd) { + if (err) { + self.emit("error", err); + self.readable = false; + return; + } + self.fd = fd; + self.emit("open", fd); + self._read(); + }); + } + function WriteStream(path, options) { + if (!(this instanceof WriteStream)) + return new WriteStream(path, options); + Stream.call(this); + this.path = path; + this.fd = null; + this.writable = true; + this.flags = "w"; + this.encoding = "binary"; + this.mode = 438; + this.bytesWritten = 0; + options = options || {}; + var keys = Object.keys(options); + for (var index = 0, length = keys.length;index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + if (this.start !== undefined) { + if (typeof this.start !== "number") { + throw TypeError("start must be a Number"); + } + if (this.start < 0) { + throw new Error("start must be >= zero"); + } + this.pos = this.start; + } + this.busy = false; + this._queue = []; + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } + }; + var Stream = import.meta.require("stream").Stream; + module.exports = legacy; +}); + +// node_modules/graceful-fs/clone.js +var require_clone = __commonJS((exports, module) => { + var clone = function(obj) { + if (obj === null || typeof obj !== "object") + return obj; + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) }; + else + var copy = Object.create(null); + Object.getOwnPropertyNames(obj).forEach(function(key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)); + }); + return copy; + }; + module.exports = clone; + var getPrototypeOf = Object.getPrototypeOf || function(obj) { + return obj.__proto__; + }; +}); + +// node_modules/graceful-fs/graceful-fs.js +var require_graceful_fs = __commonJS((exports, module) => { + var noop = function() { + }; + var publishQueue = function(context, queue2) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue2; + } + }); + }; + var patch = function(fs2) { + polyfills(fs2); + fs2.gracefulify = patch; + fs2.createReadStream = createReadStream; + fs2.createWriteStream = createWriteStream; + var fs$readFile = fs2.readFile; + fs2.readFile = readFile; + function readFile(path, options, cb) { + if (typeof options === "function") + cb = options, options = null; + return go$readFile(path, options, cb); + function go$readFile(path2, options2, cb2, startTime) { + return fs$readFile(path2, options2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$readFile, [path2, options2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$writeFile = fs2.writeFile; + fs2.writeFile = writeFile2; + function writeFile2(path, data, options, cb) { + if (typeof options === "function") + cb = options, options = null; + return go$writeFile(path, data, options, cb); + function go$writeFile(path2, data2, options2, cb2, startTime) { + return fs$writeFile(path2, data2, options2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$writeFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$appendFile = fs2.appendFile; + if (fs$appendFile) + fs2.appendFile = appendFile; + function appendFile(path, data, options, cb) { + if (typeof options === "function") + cb = options, options = null; + return go$appendFile(path, data, options, cb); + function go$appendFile(path2, data2, options2, cb2, startTime) { + return fs$appendFile(path2, data2, options2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$appendFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$copyFile = fs2.copyFile; + if (fs$copyFile) + fs2.copyFile = copyFile; + function copyFile(src, dest, flags, cb) { + if (typeof flags === "function") { + cb = flags; + flags = 0; + } + return go$copyFile(src, dest, flags, cb); + function go$copyFile(src2, dest2, flags2, cb2, startTime) { + return fs$copyFile(src2, dest2, flags2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$readdir = fs2.readdir; + fs2.readdir = readdir; + var noReaddirOptionVersions = /^v[0-5]\./; + function readdir(path, options, cb) { + if (typeof options === "function") + cb = options, options = null; + var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir(path2, options2, cb2, startTime) { + return fs$readdir(path2, fs$readdirCallback(path2, options2, cb2, startTime)); + } : function go$readdir(path2, options2, cb2, startTime) { + return fs$readdir(path2, options2, fs$readdirCallback(path2, options2, cb2, startTime)); + }; + return go$readdir(path, options, cb); + function fs$readdirCallback(path2, options2, cb2, startTime) { + return function(err, files) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([ + go$readdir, + [path2, options2, cb2], + err, + startTime || Date.now(), + Date.now() + ]); + else { + if (files && files.sort) + files.sort(); + if (typeof cb2 === "function") + cb2.call(this, err, files); + } + }; + } + } + if (process.version.substr(0, 4) === "v0.8") { + var legStreams = legacy(fs2); + ReadStream = legStreams.ReadStream; + WriteStream = legStreams.WriteStream; + } + var fs$ReadStream = fs2.ReadStream; + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype); + ReadStream.prototype.open = ReadStream$open; + } + var fs$WriteStream = fs2.WriteStream; + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype); + WriteStream.prototype.open = WriteStream$open; + } + Object.defineProperty(fs2, "ReadStream", { + get: function() { + return ReadStream; + }, + set: function(val) { + ReadStream = val; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(fs2, "WriteStream", { + get: function() { + return WriteStream; + }, + set: function(val) { + WriteStream = val; + }, + enumerable: true, + configurable: true + }); + var FileReadStream = ReadStream; + Object.defineProperty(fs2, "FileReadStream", { + get: function() { + return FileReadStream; + }, + set: function(val) { + FileReadStream = val; + }, + enumerable: true, + configurable: true + }); + var FileWriteStream = WriteStream; + Object.defineProperty(fs2, "FileWriteStream", { + get: function() { + return FileWriteStream; + }, + set: function(val) { + FileWriteStream = val; + }, + enumerable: true, + configurable: true + }); + function ReadStream(path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this; + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments); + } + function ReadStream$open() { + var that = this; + open(that.path, that.flags, that.mode, function(err, fd) { + if (err) { + if (that.autoClose) + that.destroy(); + that.emit("error", err); + } else { + that.fd = fd; + that.emit("open", fd); + that.read(); + } + }); + } + function WriteStream(path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this; + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments); + } + function WriteStream$open() { + var that = this; + open(that.path, that.flags, that.mode, function(err, fd) { + if (err) { + that.destroy(); + that.emit("error", err); + } else { + that.fd = fd; + that.emit("open", fd); + } + }); + } + function createReadStream(path, options) { + return new fs2.ReadStream(path, options); + } + function createWriteStream(path, options) { + return new fs2.WriteStream(path, options); + } + var fs$open = fs2.open; + fs2.open = open; + function open(path, flags, mode, cb) { + if (typeof mode === "function") + cb = mode, mode = null; + return go$open(path, flags, mode, cb); + function go$open(path2, flags2, mode2, cb2, startTime) { + return fs$open(path2, flags2, mode2, function(err, fd) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$open, [path2, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + return fs2; + }; + var enqueue = function(elem) { + debug2("ENQUEUE", elem[0].name, elem[1]); + fs[gracefulQueue].push(elem); + retry(); + }; + var resetQueue = function() { + var now = Date.now(); + for (var i = 0;i < fs[gracefulQueue].length; ++i) { + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now; + fs[gracefulQueue][i][4] = now; + } + } + retry(); + }; + var retry = function() { + clearTimeout(retryTimer); + retryTimer = undefined; + if (fs[gracefulQueue].length === 0) + return; + var elem = fs[gracefulQueue].shift(); + var fn = elem[0]; + var args = elem[1]; + var err = elem[2]; + var startTime = elem[3]; + var lastTime = elem[4]; + if (startTime === undefined) { + debug2("RETRY", fn.name, args); + fn.apply(null, args); + } else if (Date.now() - startTime >= 60000) { + debug2("TIMEOUT", fn.name, args); + var cb = args.pop(); + if (typeof cb === "function") + cb.call(null, err); + } else { + var sinceAttempt = Date.now() - lastTime; + var sinceStart = Math.max(lastTime - startTime, 1); + var desiredDelay = Math.min(sinceStart * 1.2, 100); + if (sinceAttempt >= desiredDelay) { + debug2("RETRY", fn.name, args); + fn.apply(null, args.concat([startTime])); + } else { + fs[gracefulQueue].push(elem); + } + } + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0); + } + }; + var fs = import.meta.require("fs"); + var polyfills = require_polyfills(); + var legacy = require_legacy_streams(); + var clone = require_clone(); + var util = import.meta.require("util"); + var gracefulQueue; + var previousSymbol; + if (typeof Symbol === "function" && typeof Symbol.for === "function") { + gracefulQueue = Symbol.for("graceful-fs.queue"); + previousSymbol = Symbol.for("graceful-fs.previous"); + } else { + gracefulQueue = "___graceful-fs.queue"; + previousSymbol = "___graceful-fs.previous"; + } + var debug2 = noop; + if (util.debuglog) + debug2 = util.debuglog("gfs4"); + else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) + debug2 = function() { + var m = util.format.apply(util, arguments); + m = "GFS4: " + m.split(/\n/).join("\nGFS4: "); + console.error(m); + }; + if (!fs[gracefulQueue]) { + queue = global[gracefulQueue] || []; + publishQueue(fs, queue); + fs.close = function(fs$close) { + function close(fd, cb) { + return fs$close.call(fs, fd, function(err) { + if (!err) { + resetQueue(); + } + if (typeof cb === "function") + cb.apply(this, arguments); + }); + } + Object.defineProperty(close, previousSymbol, { + value: fs$close + }); + return close; + }(fs.close); + fs.closeSync = function(fs$closeSync) { + function closeSync(fd) { + fs$closeSync.apply(fs, arguments); + resetQueue(); + } + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }); + return closeSync; + }(fs.closeSync); + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) { + process.on("exit", function() { + debug2(fs[gracefulQueue]); + import.meta.require("assert").equal(fs[gracefulQueue].length, 0); + }); + } + } + var queue; + if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); + } + module.exports = patch(clone(fs)); + if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs); + fs.__patched = true; + } + var retryTimer; +}); + +// node_modules/fs-extra/lib/fs/index.js +var require_fs = __commonJS((exports) => { + var u = require_universalify().fromCallback; + var fs = require_graceful_fs(); + var api = [ + "access", + "appendFile", + "chmod", + "chown", + "close", + "copyFile", + "fchmod", + "fchown", + "fdatasync", + "fstat", + "fsync", + "ftruncate", + "futimes", + "lchmod", + "lchown", + "link", + "lstat", + "mkdir", + "mkdtemp", + "open", + "opendir", + "readdir", + "readFile", + "readlink", + "realpath", + "rename", + "rm", + "rmdir", + "stat", + "symlink", + "truncate", + "unlink", + "utimes", + "writeFile" + ].filter((key) => { + return typeof fs[key] === "function"; + }); + Object.assign(exports, fs); + api.forEach((method) => { + exports[method] = u(fs[method]); + }); + exports.exists = function(filename, callback) { + if (typeof callback === "function") { + return fs.exists(filename, callback); + } + return new Promise((resolve5) => { + return fs.exists(filename, resolve5); + }); + }; + exports.read = function(fd, buffer, offset, length, position, callback) { + if (typeof callback === "function") { + return fs.read(fd, buffer, offset, length, position, callback); + } + return new Promise((resolve5, reject) => { + fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => { + if (err) + return reject(err); + resolve5({ bytesRead, buffer: buffer2 }); + }); + }); + }; + exports.write = function(fd, buffer, ...args) { + if (typeof args[args.length - 1] === "function") { + return fs.write(fd, buffer, ...args); + } + return new Promise((resolve5, reject) => { + fs.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => { + if (err) + return reject(err); + resolve5({ bytesWritten, buffer: buffer2 }); + }); + }); + }; + exports.readv = function(fd, buffers, ...args) { + if (typeof args[args.length - 1] === "function") { + return fs.readv(fd, buffers, ...args); + } + return new Promise((resolve5, reject) => { + fs.readv(fd, buffers, ...args, (err, bytesRead, buffers2) => { + if (err) + return reject(err); + resolve5({ bytesRead, buffers: buffers2 }); + }); + }); + }; + exports.writev = function(fd, buffers, ...args) { + if (typeof args[args.length - 1] === "function") { + return fs.writev(fd, buffers, ...args); + } + return new Promise((resolve5, reject) => { + fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => { + if (err) + return reject(err); + resolve5({ bytesWritten, buffers: buffers2 }); + }); + }); + }; + if (typeof fs.realpath.native === "function") { + exports.realpath.native = u(fs.realpath.native); + } else { + process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?", "Warning", "fs-extra-WARN0003"); + } +}); + +// node_modules/fs-extra/lib/mkdirs/utils.js +var require_utils = __commonJS((exports, module) => { + var path = import.meta.require("path"); + exports.checkPath = function checkPath(pth) { + if (process.platform === "win32") { + const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, "")); + if (pathHasInvalidWinCharacters) { + const error2 = new Error(`Path contains invalid characters: ${pth}`); + error2.code = "EINVAL"; + throw error2; + } + } + }; +}); + +// node_modules/fs-extra/lib/mkdirs/make-dir.js +var require_make_dir = __commonJS((exports, module) => { + var fs = require_fs(); + var { checkPath } = require_utils(); + var getMode = (options) => { + const defaults = { mode: 511 }; + if (typeof options === "number") + return options; + return { ...defaults, ...options }.mode; + }; + exports.makeDir = async (dir, options) => { + checkPath(dir); + return fs.mkdir(dir, { + mode: getMode(options), + recursive: true + }); + }; + exports.makeDirSync = (dir, options) => { + checkPath(dir); + return fs.mkdirSync(dir, { + mode: getMode(options), + recursive: true + }); + }; +}); + +// node_modules/fs-extra/lib/mkdirs/index.js +var require_mkdirs = __commonJS((exports, module) => { + var u = require_universalify().fromPromise; + var { makeDir: _makeDir, makeDirSync } = require_make_dir(); + var makeDir = u(_makeDir); + module.exports = { + mkdirs: makeDir, + mkdirsSync: makeDirSync, + mkdirp: makeDir, + mkdirpSync: makeDirSync, + ensureDir: makeDir, + ensureDirSync: makeDirSync + }; +}); + +// node_modules/fs-extra/lib/path-exists/index.js +var require_path_exists = __commonJS((exports, module) => { + var pathExists = function(path) { + return fs.access(path).then(() => true).catch(() => false); + }; + var u = require_universalify().fromPromise; + var fs = require_fs(); + module.exports = { + pathExists: u(pathExists), + pathExistsSync: fs.existsSync + }; +}); + +// node_modules/fs-extra/lib/util/utimes.js +var require_utimes = __commonJS((exports, module) => { + var utimesMillis = function(path, atime, mtime, callback) { + fs.open(path, "r+", (err, fd) => { + if (err) + return callback(err); + fs.futimes(fd, atime, mtime, (futimesErr) => { + fs.close(fd, (closeErr) => { + if (callback) + callback(futimesErr || closeErr); + }); + }); + }); + }; + var utimesMillisSync = function(path, atime, mtime) { + const fd = fs.openSync(path, "r+"); + fs.futimesSync(fd, atime, mtime); + return fs.closeSync(fd); + }; + var fs = require_graceful_fs(); + module.exports = { + utimesMillis, + utimesMillisSync + }; +}); + +// node_modules/fs-extra/lib/util/stat.js +var require_stat = __commonJS((exports, module) => { + var getStats = function(src, dest, opts) { + const statFunc = opts.dereference ? (file) => fs.stat(file, { bigint: true }) : (file) => fs.lstat(file, { bigint: true }); + return Promise.all([ + statFunc(src), + statFunc(dest).catch((err) => { + if (err.code === "ENOENT") + return null; + throw err; + }) + ]).then(([srcStat, destStat]) => ({ srcStat, destStat })); + }; + var getStatsSync = function(src, dest, opts) { + let destStat; + const statFunc = opts.dereference ? (file) => fs.statSync(file, { bigint: true }) : (file) => fs.lstatSync(file, { bigint: true }); + const srcStat = statFunc(src); + try { + destStat = statFunc(dest); + } catch (err) { + if (err.code === "ENOENT") + return { srcStat, destStat: null }; + throw err; + } + return { srcStat, destStat }; + }; + var checkPaths = function(src, dest, funcName, opts, cb) { + util.callbackify(getStats)(src, dest, opts, (err, stats) => { + if (err) + return cb(err); + const { srcStat, destStat } = stats; + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path.basename(src); + const destBaseName = path.basename(dest); + if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return cb(null, { srcStat, destStat, isChangingCase: true }); + } + return cb(new Error("Source and destination must not be the same.")); + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)); + } + } + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + return cb(new Error(errMsg(src, dest, funcName))); + } + return cb(null, { srcStat, destStat }); + }); + }; + var checkPathsSync = function(src, dest, funcName, opts) { + const { srcStat, destStat } = getStatsSync(src, dest, opts); + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path.basename(src); + const destBaseName = path.basename(dest); + if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return { srcStat, destStat, isChangingCase: true }; + } + throw new Error("Source and destination must not be the same."); + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`); + } + } + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + throw new Error(errMsg(src, dest, funcName)); + } + return { srcStat, destStat }; + }; + var checkParentPaths = function(src, srcStat, dest, funcName, cb) { + const srcParent = path.resolve(path.dirname(src)); + const destParent = path.resolve(path.dirname(dest)); + if (destParent === srcParent || destParent === path.parse(destParent).root) + return cb(); + fs.stat(destParent, { bigint: true }, (err, destStat) => { + if (err) { + if (err.code === "ENOENT") + return cb(); + return cb(err); + } + if (areIdentical(srcStat, destStat)) { + return cb(new Error(errMsg(src, dest, funcName))); + } + return checkParentPaths(src, srcStat, destParent, funcName, cb); + }); + }; + var checkParentPathsSync = function(src, srcStat, dest, funcName) { + const srcParent = path.resolve(path.dirname(src)); + const destParent = path.resolve(path.dirname(dest)); + if (destParent === srcParent || destParent === path.parse(destParent).root) + return; + let destStat; + try { + destStat = fs.statSync(destParent, { bigint: true }); + } catch (err) { + if (err.code === "ENOENT") + return; + throw err; + } + if (areIdentical(srcStat, destStat)) { + throw new Error(errMsg(src, dest, funcName)); + } + return checkParentPathsSync(src, srcStat, destParent, funcName); + }; + var areIdentical = function(srcStat, destStat) { + return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev; + }; + var isSrcSubdir = function(src, dest) { + const srcArr = path.resolve(src).split(path.sep).filter((i) => i); + const destArr = path.resolve(dest).split(path.sep).filter((i) => i); + return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); + }; + var errMsg = function(src, dest, funcName) { + return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; + }; + var fs = require_fs(); + var path = import.meta.require("path"); + var util = import.meta.require("util"); + module.exports = { + checkPaths, + checkPathsSync, + checkParentPaths, + checkParentPathsSync, + isSrcSubdir, + areIdentical + }; +}); + +// node_modules/fs-extra/lib/copy/copy.js +var require_copy = __commonJS((exports, module) => { + var copy = function(src, dest, opts, cb) { + if (typeof opts === "function" && !cb) { + cb = opts; + opts = {}; + } else if (typeof opts === "function") { + opts = { filter: opts }; + } + cb = cb || function() { + }; + opts = opts || {}; + opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; + opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; + if (opts.preserveTimestamps && process.arch === "ia32") { + process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0001"); + } + stat.checkPaths(src, dest, "copy", opts, (err, stats) => { + if (err) + return cb(err); + const { srcStat, destStat } = stats; + stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => { + if (err2) + return cb(err2); + runFilter(src, dest, opts, (err3, include) => { + if (err3) + return cb(err3); + if (!include) + return cb(); + checkParentDir(destStat, src, dest, opts, cb); + }); + }); + }); + }; + var checkParentDir = function(destStat, src, dest, opts, cb) { + const destParent = path.dirname(dest); + pathExists(destParent, (err, dirExists) => { + if (err) + return cb(err); + if (dirExists) + return getStats(destStat, src, dest, opts, cb); + mkdirs(destParent, (err2) => { + if (err2) + return cb(err2); + return getStats(destStat, src, dest, opts, cb); + }); + }); + }; + var runFilter = function(src, dest, opts, cb) { + if (!opts.filter) + return cb(null, true); + Promise.resolve(opts.filter(src, dest)).then((include) => cb(null, include), (error2) => cb(error2)); + }; + var getStats = function(destStat, src, dest, opts, cb) { + const stat2 = opts.dereference ? fs.stat : fs.lstat; + stat2(src, (err, srcStat) => { + if (err) + return cb(err); + if (srcStat.isDirectory()) + return onDir(srcStat, destStat, src, dest, opts, cb); + else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) + return onFile(srcStat, destStat, src, dest, opts, cb); + else if (srcStat.isSymbolicLink()) + return onLink(destStat, src, dest, opts, cb); + else if (srcStat.isSocket()) + return cb(new Error(`Cannot copy a socket file: ${src}`)); + else if (srcStat.isFIFO()) + return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)); + return cb(new Error(`Unknown file: ${src}`)); + }); + }; + var onFile = function(srcStat, destStat, src, dest, opts, cb) { + if (!destStat) + return copyFile(srcStat, src, dest, opts, cb); + return mayCopyFile(srcStat, src, dest, opts, cb); + }; + var mayCopyFile = function(srcStat, src, dest, opts, cb) { + if (opts.overwrite) { + fs.unlink(dest, (err) => { + if (err) + return cb(err); + return copyFile(srcStat, src, dest, opts, cb); + }); + } else if (opts.errorOnExist) { + return cb(new Error(`'${dest}' already exists`)); + } else + return cb(); + }; + var copyFile = function(srcStat, src, dest, opts, cb) { + fs.copyFile(src, dest, (err) => { + if (err) + return cb(err); + if (opts.preserveTimestamps) + return handleTimestampsAndMode(srcStat.mode, src, dest, cb); + return setDestMode(dest, srcStat.mode, cb); + }); + }; + var handleTimestampsAndMode = function(srcMode, src, dest, cb) { + if (fileIsNotWritable(srcMode)) { + return makeFileWritable(dest, srcMode, (err) => { + if (err) + return cb(err); + return setDestTimestampsAndMode(srcMode, src, dest, cb); + }); + } + return setDestTimestampsAndMode(srcMode, src, dest, cb); + }; + var fileIsNotWritable = function(srcMode) { + return (srcMode & 128) === 0; + }; + var makeFileWritable = function(dest, srcMode, cb) { + return setDestMode(dest, srcMode | 128, cb); + }; + var setDestTimestampsAndMode = function(srcMode, src, dest, cb) { + setDestTimestamps(src, dest, (err) => { + if (err) + return cb(err); + return setDestMode(dest, srcMode, cb); + }); + }; + var setDestMode = function(dest, srcMode, cb) { + return fs.chmod(dest, srcMode, cb); + }; + var setDestTimestamps = function(src, dest, cb) { + fs.stat(src, (err, updatedSrcStat) => { + if (err) + return cb(err); + return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb); + }); + }; + var onDir = function(srcStat, destStat, src, dest, opts, cb) { + if (!destStat) + return mkDirAndCopy(srcStat.mode, src, dest, opts, cb); + return copyDir(src, dest, opts, cb); + }; + var mkDirAndCopy = function(srcMode, src, dest, opts, cb) { + fs.mkdir(dest, (err) => { + if (err) + return cb(err); + copyDir(src, dest, opts, (err2) => { + if (err2) + return cb(err2); + return setDestMode(dest, srcMode, cb); + }); + }); + }; + var copyDir = function(src, dest, opts, cb) { + fs.readdir(src, (err, items) => { + if (err) + return cb(err); + return copyDirItems(items, src, dest, opts, cb); + }); + }; + var copyDirItems = function(items, src, dest, opts, cb) { + const item = items.pop(); + if (!item) + return cb(); + return copyDirItem(items, item, src, dest, opts, cb); + }; + var copyDirItem = function(items, item, src, dest, opts, cb) { + const srcItem = path.join(src, item); + const destItem = path.join(dest, item); + runFilter(srcItem, destItem, opts, (err, include) => { + if (err) + return cb(err); + if (!include) + return copyDirItems(items, src, dest, opts, cb); + stat.checkPaths(srcItem, destItem, "copy", opts, (err2, stats) => { + if (err2) + return cb(err2); + const { destStat } = stats; + getStats(destStat, srcItem, destItem, opts, (err3) => { + if (err3) + return cb(err3); + return copyDirItems(items, src, dest, opts, cb); + }); + }); + }); + }; + var onLink = function(destStat, src, dest, opts, cb) { + fs.readlink(src, (err, resolvedSrc) => { + if (err) + return cb(err); + if (opts.dereference) { + resolvedSrc = path.resolve(process.cwd(), resolvedSrc); + } + if (!destStat) { + return fs.symlink(resolvedSrc, dest, cb); + } else { + fs.readlink(dest, (err2, resolvedDest) => { + if (err2) { + if (err2.code === "EINVAL" || err2.code === "UNKNOWN") + return fs.symlink(resolvedSrc, dest, cb); + return cb(err2); + } + if (opts.dereference) { + resolvedDest = path.resolve(process.cwd(), resolvedDest); + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); + } + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); + } + return copyLink(resolvedSrc, dest, cb); + }); + } + }); + }; + var copyLink = function(resolvedSrc, dest, cb) { + fs.unlink(dest, (err) => { + if (err) + return cb(err); + return fs.symlink(resolvedSrc, dest, cb); + }); + }; + var fs = require_graceful_fs(); + var path = import.meta.require("path"); + var mkdirs = require_mkdirs().mkdirs; + var pathExists = require_path_exists().pathExists; + var utimesMillis = require_utimes().utimesMillis; + var stat = require_stat(); + module.exports = copy; +}); + +// node_modules/fs-extra/lib/copy/copy-sync.js +var require_copy_sync = __commonJS((exports, module) => { + var copySync = function(src, dest, opts) { + if (typeof opts === "function") { + opts = { filter: opts }; + } + opts = opts || {}; + opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; + opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; + if (opts.preserveTimestamps && process.arch === "ia32") { + process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0002"); + } + const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy", opts); + stat.checkParentPathsSync(src, srcStat, dest, "copy"); + if (opts.filter && !opts.filter(src, dest)) + return; + const destParent = path.dirname(dest); + if (!fs.existsSync(destParent)) + mkdirsSync(destParent); + return getStats(destStat, src, dest, opts); + }; + var getStats = function(destStat, src, dest, opts) { + const statSync3 = opts.dereference ? fs.statSync : fs.lstatSync; + const srcStat = statSync3(src); + if (srcStat.isDirectory()) + return onDir(srcStat, destStat, src, dest, opts); + else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) + return onFile(srcStat, destStat, src, dest, opts); + else if (srcStat.isSymbolicLink()) + return onLink(destStat, src, dest, opts); + else if (srcStat.isSocket()) + throw new Error(`Cannot copy a socket file: ${src}`); + else if (srcStat.isFIFO()) + throw new Error(`Cannot copy a FIFO pipe: ${src}`); + throw new Error(`Unknown file: ${src}`); + }; + var onFile = function(srcStat, destStat, src, dest, opts) { + if (!destStat) + return copyFile(srcStat, src, dest, opts); + return mayCopyFile(srcStat, src, dest, opts); + }; + var mayCopyFile = function(srcStat, src, dest, opts) { + if (opts.overwrite) { + fs.unlinkSync(dest); + return copyFile(srcStat, src, dest, opts); + } else if (opts.errorOnExist) { + throw new Error(`'${dest}' already exists`); + } + }; + var copyFile = function(srcStat, src, dest, opts) { + fs.copyFileSync(src, dest); + if (opts.preserveTimestamps) + handleTimestamps(srcStat.mode, src, dest); + return setDestMode(dest, srcStat.mode); + }; + var handleTimestamps = function(srcMode, src, dest) { + if (fileIsNotWritable(srcMode)) + makeFileWritable(dest, srcMode); + return setDestTimestamps(src, dest); + }; + var fileIsNotWritable = function(srcMode) { + return (srcMode & 128) === 0; + }; + var makeFileWritable = function(dest, srcMode) { + return setDestMode(dest, srcMode | 128); + }; + var setDestMode = function(dest, srcMode) { + return fs.chmodSync(dest, srcMode); + }; + var setDestTimestamps = function(src, dest) { + const updatedSrcStat = fs.statSync(src); + return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime); + }; + var onDir = function(srcStat, destStat, src, dest, opts) { + if (!destStat) + return mkDirAndCopy(srcStat.mode, src, dest, opts); + return copyDir(src, dest, opts); + }; + var mkDirAndCopy = function(srcMode, src, dest, opts) { + fs.mkdirSync(dest); + copyDir(src, dest, opts); + return setDestMode(dest, srcMode); + }; + var copyDir = function(src, dest, opts) { + fs.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts)); + }; + var copyDirItem = function(item, src, dest, opts) { + const srcItem = path.join(src, item); + const destItem = path.join(dest, item); + if (opts.filter && !opts.filter(srcItem, destItem)) + return; + const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy", opts); + return getStats(destStat, srcItem, destItem, opts); + }; + var onLink = function(destStat, src, dest, opts) { + let resolvedSrc = fs.readlinkSync(src); + if (opts.dereference) { + resolvedSrc = path.resolve(process.cwd(), resolvedSrc); + } + if (!destStat) { + return fs.symlinkSync(resolvedSrc, dest); + } else { + let resolvedDest; + try { + resolvedDest = fs.readlinkSync(dest); + } catch (err) { + if (err.code === "EINVAL" || err.code === "UNKNOWN") + return fs.symlinkSync(resolvedSrc, dest); + throw err; + } + if (opts.dereference) { + resolvedDest = path.resolve(process.cwd(), resolvedDest); + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); + } + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); + } + return copyLink(resolvedSrc, dest); + } + }; + var copyLink = function(resolvedSrc, dest) { + fs.unlinkSync(dest); + return fs.symlinkSync(resolvedSrc, dest); + }; + var fs = require_graceful_fs(); + var path = import.meta.require("path"); + var mkdirsSync = require_mkdirs().mkdirsSync; + var utimesMillisSync = require_utimes().utimesMillisSync; + var stat = require_stat(); + module.exports = copySync; +}); + +// node_modules/fs-extra/lib/copy/index.js +var require_copy2 = __commonJS((exports, module) => { + var u = require_universalify().fromCallback; + module.exports = { + copy: u(require_copy()), + copySync: require_copy_sync() + }; +}); + +// node_modules/fs-extra/lib/remove/index.js +var require_remove = __commonJS((exports, module) => { + var remove = function(path, callback) { + fs.rm(path, { recursive: true, force: true }, callback); + }; + var removeSync = function(path) { + fs.rmSync(path, { recursive: true, force: true }); + }; + var fs = require_graceful_fs(); + var u = require_universalify().fromCallback; + module.exports = { + remove: u(remove), + removeSync + }; +}); + +// node_modules/fs-extra/lib/empty/index.js +var require_empty = __commonJS((exports, module) => { + var emptyDirSync = function(dir) { + let items; + try { + items = fs.readdirSync(dir); + } catch { + return mkdir.mkdirsSync(dir); + } + items.forEach((item) => { + item = path.join(dir, item); + remove.removeSync(item); + }); + }; + var u = require_universalify().fromPromise; + var fs = require_fs(); + var path = import.meta.require("path"); + var mkdir = require_mkdirs(); + var remove = require_remove(); + var emptyDir = u(async function emptyDir(dir) { + let items; + try { + items = await fs.readdir(dir); + } catch { + return mkdir.mkdirs(dir); + } + return Promise.all(items.map((item) => remove.remove(path.join(dir, item)))); + }); + module.exports = { + emptyDirSync, + emptydirSync: emptyDirSync, + emptyDir, + emptydir: emptyDir + }; +}); + +// node_modules/fs-extra/lib/ensure/file.js +var require_file = __commonJS((exports, module) => { + var createFile = function(file, callback) { + function makeFile() { + fs.writeFile(file, "", (err) => { + if (err) + return callback(err); + callback(); + }); + } + fs.stat(file, (err, stats) => { + if (!err && stats.isFile()) + return callback(); + const dir = path.dirname(file); + fs.stat(dir, (err2, stats2) => { + if (err2) { + if (err2.code === "ENOENT") { + return mkdir.mkdirs(dir, (err3) => { + if (err3) + return callback(err3); + makeFile(); + }); + } + return callback(err2); + } + if (stats2.isDirectory()) + makeFile(); + else { + fs.readdir(dir, (err3) => { + if (err3) + return callback(err3); + }); + } + }); + }); + }; + var createFileSync = function(file) { + let stats; + try { + stats = fs.statSync(file); + } catch { + } + if (stats && stats.isFile()) + return; + const dir = path.dirname(file); + try { + if (!fs.statSync(dir).isDirectory()) { + fs.readdirSync(dir); + } + } catch (err) { + if (err && err.code === "ENOENT") + mkdir.mkdirsSync(dir); + else + throw err; + } + fs.writeFileSync(file, ""); + }; + var u = require_universalify().fromCallback; + var path = import.meta.require("path"); + var fs = require_graceful_fs(); + var mkdir = require_mkdirs(); + module.exports = { + createFile: u(createFile), + createFileSync + }; +}); + +// node_modules/fs-extra/lib/ensure/link.js +var require_link = __commonJS((exports, module) => { + var createLink = function(srcpath, dstpath, callback) { + function makeLink(srcpath2, dstpath2) { + fs.link(srcpath2, dstpath2, (err) => { + if (err) + return callback(err); + callback(null); + }); + } + fs.lstat(dstpath, (_, dstStat) => { + fs.lstat(srcpath, (err, srcStat) => { + if (err) { + err.message = err.message.replace("lstat", "ensureLink"); + return callback(err); + } + if (dstStat && areIdentical(srcStat, dstStat)) + return callback(null); + const dir = path.dirname(dstpath); + pathExists(dir, (err2, dirExists) => { + if (err2) + return callback(err2); + if (dirExists) + return makeLink(srcpath, dstpath); + mkdir.mkdirs(dir, (err3) => { + if (err3) + return callback(err3); + makeLink(srcpath, dstpath); + }); + }); + }); + }); + }; + var createLinkSync = function(srcpath, dstpath) { + let dstStat; + try { + dstStat = fs.lstatSync(dstpath); + } catch { + } + try { + const srcStat = fs.lstatSync(srcpath); + if (dstStat && areIdentical(srcStat, dstStat)) + return; + } catch (err) { + err.message = err.message.replace("lstat", "ensureLink"); + throw err; + } + const dir = path.dirname(dstpath); + const dirExists = fs.existsSync(dir); + if (dirExists) + return fs.linkSync(srcpath, dstpath); + mkdir.mkdirsSync(dir); + return fs.linkSync(srcpath, dstpath); + }; + var u = require_universalify().fromCallback; + var path = import.meta.require("path"); + var fs = require_graceful_fs(); + var mkdir = require_mkdirs(); + var pathExists = require_path_exists().pathExists; + var { areIdentical } = require_stat(); + module.exports = { + createLink: u(createLink), + createLinkSync + }; +}); + +// node_modules/fs-extra/lib/ensure/symlink-paths.js +var require_symlink_paths = __commonJS((exports, module) => { + var symlinkPaths = function(srcpath, dstpath, callback) { + if (path.isAbsolute(srcpath)) { + return fs.lstat(srcpath, (err) => { + if (err) { + err.message = err.message.replace("lstat", "ensureSymlink"); + return callback(err); + } + return callback(null, { + toCwd: srcpath, + toDst: srcpath + }); + }); + } else { + const dstdir = path.dirname(dstpath); + const relativeToDst = path.join(dstdir, srcpath); + return pathExists(relativeToDst, (err, exists) => { + if (err) + return callback(err); + if (exists) { + return callback(null, { + toCwd: relativeToDst, + toDst: srcpath + }); + } else { + return fs.lstat(srcpath, (err2) => { + if (err2) { + err2.message = err2.message.replace("lstat", "ensureSymlink"); + return callback(err2); + } + return callback(null, { + toCwd: srcpath, + toDst: path.relative(dstdir, srcpath) + }); + }); + } + }); + } + }; + var symlinkPathsSync = function(srcpath, dstpath) { + let exists; + if (path.isAbsolute(srcpath)) { + exists = fs.existsSync(srcpath); + if (!exists) + throw new Error("absolute srcpath does not exist"); + return { + toCwd: srcpath, + toDst: srcpath + }; + } else { + const dstdir = path.dirname(dstpath); + const relativeToDst = path.join(dstdir, srcpath); + exists = fs.existsSync(relativeToDst); + if (exists) { + return { + toCwd: relativeToDst, + toDst: srcpath + }; + } else { + exists = fs.existsSync(srcpath); + if (!exists) + throw new Error("relative srcpath does not exist"); + return { + toCwd: srcpath, + toDst: path.relative(dstdir, srcpath) + }; + } + } + }; + var path = import.meta.require("path"); + var fs = require_graceful_fs(); + var pathExists = require_path_exists().pathExists; + module.exports = { + symlinkPaths, + symlinkPathsSync + }; +}); + +// node_modules/fs-extra/lib/ensure/symlink-type.js +var require_symlink_type = __commonJS((exports, module) => { + var symlinkType = function(srcpath, type, callback) { + callback = typeof type === "function" ? type : callback; + type = typeof type === "function" ? false : type; + if (type) + return callback(null, type); + fs.lstat(srcpath, (err, stats) => { + if (err) + return callback(null, "file"); + type = stats && stats.isDirectory() ? "dir" : "file"; + callback(null, type); + }); + }; + var symlinkTypeSync = function(srcpath, type) { + let stats; + if (type) + return type; + try { + stats = fs.lstatSync(srcpath); + } catch { + return "file"; + } + return stats && stats.isDirectory() ? "dir" : "file"; + }; + var fs = require_graceful_fs(); + module.exports = { + symlinkType, + symlinkTypeSync + }; +}); + +// node_modules/fs-extra/lib/ensure/symlink.js +var require_symlink = __commonJS((exports, module) => { + var createSymlink = function(srcpath, dstpath, type, callback) { + callback = typeof type === "function" ? type : callback; + type = typeof type === "function" ? false : type; + fs.lstat(dstpath, (err, stats) => { + if (!err && stats.isSymbolicLink()) { + Promise.all([ + fs.stat(srcpath), + fs.stat(dstpath) + ]).then(([srcStat, dstStat]) => { + if (areIdentical(srcStat, dstStat)) + return callback(null); + _createSymlink(srcpath, dstpath, type, callback); + }); + } else + _createSymlink(srcpath, dstpath, type, callback); + }); + }; + var _createSymlink = function(srcpath, dstpath, type, callback) { + symlinkPaths(srcpath, dstpath, (err, relative2) => { + if (err) + return callback(err); + srcpath = relative2.toDst; + symlinkType(relative2.toCwd, type, (err2, type2) => { + if (err2) + return callback(err2); + const dir = path.dirname(dstpath); + pathExists(dir, (err3, dirExists) => { + if (err3) + return callback(err3); + if (dirExists) + return fs.symlink(srcpath, dstpath, type2, callback); + mkdirs(dir, (err4) => { + if (err4) + return callback(err4); + fs.symlink(srcpath, dstpath, type2, callback); + }); + }); + }); + }); + }; + var createSymlinkSync = function(srcpath, dstpath, type) { + let stats; + try { + stats = fs.lstatSync(dstpath); + } catch { + } + if (stats && stats.isSymbolicLink()) { + const srcStat = fs.statSync(srcpath); + const dstStat = fs.statSync(dstpath); + if (areIdentical(srcStat, dstStat)) + return; + } + const relative2 = symlinkPathsSync(srcpath, dstpath); + srcpath = relative2.toDst; + type = symlinkTypeSync(relative2.toCwd, type); + const dir = path.dirname(dstpath); + const exists = fs.existsSync(dir); + if (exists) + return fs.symlinkSync(srcpath, dstpath, type); + mkdirsSync(dir); + return fs.symlinkSync(srcpath, dstpath, type); + }; + var u = require_universalify().fromCallback; + var path = import.meta.require("path"); + var fs = require_fs(); + var _mkdirs = require_mkdirs(); + var mkdirs = _mkdirs.mkdirs; + var mkdirsSync = _mkdirs.mkdirsSync; + var _symlinkPaths = require_symlink_paths(); + var symlinkPaths = _symlinkPaths.symlinkPaths; + var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; + var _symlinkType = require_symlink_type(); + var symlinkType = _symlinkType.symlinkType; + var symlinkTypeSync = _symlinkType.symlinkTypeSync; + var pathExists = require_path_exists().pathExists; + var { areIdentical } = require_stat(); + module.exports = { + createSymlink: u(createSymlink), + createSymlinkSync + }; +}); + +// node_modules/fs-extra/lib/ensure/index.js +var require_ensure = __commonJS((exports, module) => { + var { createFile, createFileSync } = require_file(); + var { createLink, createLinkSync } = require_link(); + var { createSymlink, createSymlinkSync } = require_symlink(); + module.exports = { + createFile, + createFileSync, + ensureFile: createFile, + ensureFileSync: createFileSync, + createLink, + createLinkSync, + ensureLink: createLink, + ensureLinkSync: createLinkSync, + createSymlink, + createSymlinkSync, + ensureSymlink: createSymlink, + ensureSymlinkSync: createSymlinkSync + }; +}); + +// node_modules/jsonfile/utils.js +var require_utils2 = __commonJS((exports, module) => { + var stringify = function(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) { + const EOF = finalEOL ? EOL : ""; + const str = JSON.stringify(obj, replacer, spaces); + return str.replace(/\n/g, EOL) + EOF; + }; + var stripBom = function(content) { + if (Buffer.isBuffer(content)) + content = content.toString("utf8"); + return content.replace(/^\uFEFF/, ""); + }; + module.exports = { stringify, stripBom }; +}); + +// node_modules/jsonfile/index.js +var require_jsonfile = __commonJS((exports, module) => { + async function _readFile(file, options = {}) { + if (typeof options === "string") { + options = { encoding: options }; + } + const fs = options.fs || _fs; + const shouldThrow = "throws" in options ? options.throws : true; + let data = await universalify.fromCallback(fs.readFile)(file, options); + data = stripBom(data); + let obj; + try { + obj = JSON.parse(data, options ? options.reviver : null); + } catch (err) { + if (shouldThrow) { + err.message = `${file}: ${err.message}`; + throw err; + } else { + return null; + } + } + return obj; + } + var readFileSync4 = function(file, options = {}) { + if (typeof options === "string") { + options = { encoding: options }; + } + const fs = options.fs || _fs; + const shouldThrow = "throws" in options ? options.throws : true; + try { + let content = fs.readFileSync(file, options); + content = stripBom(content); + return JSON.parse(content, options.reviver); + } catch (err) { + if (shouldThrow) { + err.message = `${file}: ${err.message}`; + throw err; + } else { + return null; + } + } + }; + async function _writeFile(file, obj, options = {}) { + const fs = options.fs || _fs; + const str = stringify(obj, options); + await universalify.fromCallback(fs.writeFile)(file, str, options); + } + var writeFileSync = function(file, obj, options = {}) { + const fs = options.fs || _fs; + const str = stringify(obj, options); + return fs.writeFileSync(file, str, options); + }; + var _fs; + try { + _fs = require_graceful_fs(); + } catch (_) { + _fs = import.meta.require("fs"); + } + var universalify = require_universalify(); + var { stringify, stripBom } = require_utils2(); + var readFile = universalify.fromPromise(_readFile); + var writeFile2 = universalify.fromPromise(_writeFile); + var jsonfile = { + readFile, + readFileSync: readFileSync4, + writeFile: writeFile2, + writeFileSync + }; + module.exports = jsonfile; +}); + +// node_modules/fs-extra/lib/json/jsonfile.js +var require_jsonfile2 = __commonJS((exports, module) => { + var jsonFile = require_jsonfile(); + module.exports = { + readJson: jsonFile.readFile, + readJsonSync: jsonFile.readFileSync, + writeJson: jsonFile.writeFile, + writeJsonSync: jsonFile.writeFileSync + }; +}); + +// node_modules/fs-extra/lib/output-file/index.js +var require_output_file = __commonJS((exports, module) => { + var outputFile = function(file, data, encoding, callback) { + if (typeof encoding === "function") { + callback = encoding; + encoding = "utf8"; + } + const dir = path.dirname(file); + pathExists(dir, (err, itDoes) => { + if (err) + return callback(err); + if (itDoes) + return fs.writeFile(file, data, encoding, callback); + mkdir.mkdirs(dir, (err2) => { + if (err2) + return callback(err2); + fs.writeFile(file, data, encoding, callback); + }); + }); + }; + var outputFileSync = function(file, ...args) { + const dir = path.dirname(file); + if (fs.existsSync(dir)) { + return fs.writeFileSync(file, ...args); + } + mkdir.mkdirsSync(dir); + fs.writeFileSync(file, ...args); + }; + var u = require_universalify().fromCallback; + var fs = require_graceful_fs(); + var path = import.meta.require("path"); + var mkdir = require_mkdirs(); + var pathExists = require_path_exists().pathExists; + module.exports = { + outputFile: u(outputFile), + outputFileSync + }; +}); + +// node_modules/fs-extra/lib/json/output-json.js +var require_output_json = __commonJS((exports, module) => { + async function outputJson(file, data, options = {}) { + const str = stringify(data, options); + await outputFile(file, str, options); + } + var { stringify } = require_utils2(); + var { outputFile } = require_output_file(); + module.exports = outputJson; +}); + +// node_modules/fs-extra/lib/json/output-json-sync.js +var require_output_json_sync = __commonJS((exports, module) => { + var outputJsonSync = function(file, data, options) { + const str = stringify(data, options); + outputFileSync(file, str, options); + }; + var { stringify } = require_utils2(); + var { outputFileSync } = require_output_file(); + module.exports = outputJsonSync; +}); + +// node_modules/fs-extra/lib/json/index.js +var require_json = __commonJS((exports, module) => { + var u = require_universalify().fromPromise; + var jsonFile = require_jsonfile2(); + jsonFile.outputJson = u(require_output_json()); + jsonFile.outputJsonSync = require_output_json_sync(); + jsonFile.outputJSON = jsonFile.outputJson; + jsonFile.outputJSONSync = jsonFile.outputJsonSync; + jsonFile.writeJSON = jsonFile.writeJson; + jsonFile.writeJSONSync = jsonFile.writeJsonSync; + jsonFile.readJSON = jsonFile.readJson; + jsonFile.readJSONSync = jsonFile.readJsonSync; + module.exports = jsonFile; +}); + +// node_modules/fs-extra/lib/move/move.js +var require_move = __commonJS((exports, module) => { + var move = function(src, dest, opts, cb) { + if (typeof opts === "function") { + cb = opts; + opts = {}; + } + opts = opts || {}; + const overwrite = opts.overwrite || opts.clobber || false; + stat.checkPaths(src, dest, "move", opts, (err, stats) => { + if (err) + return cb(err); + const { srcStat, isChangingCase = false } = stats; + stat.checkParentPaths(src, srcStat, dest, "move", (err2) => { + if (err2) + return cb(err2); + if (isParentRoot(dest)) + return doRename(src, dest, overwrite, isChangingCase, cb); + mkdirp(path.dirname(dest), (err3) => { + if (err3) + return cb(err3); + return doRename(src, dest, overwrite, isChangingCase, cb); + }); + }); + }); + }; + var isParentRoot = function(dest) { + const parent = path.dirname(dest); + const parsedPath = path.parse(parent); + return parsedPath.root === parent; + }; + var doRename = function(src, dest, overwrite, isChangingCase, cb) { + if (isChangingCase) + return rename(src, dest, overwrite, cb); + if (overwrite) { + return remove(dest, (err) => { + if (err) + return cb(err); + return rename(src, dest, overwrite, cb); + }); + } + pathExists(dest, (err, destExists) => { + if (err) + return cb(err); + if (destExists) + return cb(new Error("dest already exists.")); + return rename(src, dest, overwrite, cb); + }); + }; + var rename = function(src, dest, overwrite, cb) { + fs.rename(src, dest, (err) => { + if (!err) + return cb(); + if (err.code !== "EXDEV") + return cb(err); + return moveAcrossDevice(src, dest, overwrite, cb); + }); + }; + var moveAcrossDevice = function(src, dest, overwrite, cb) { + const opts = { + overwrite, + errorOnExist: true, + preserveTimestamps: true + }; + copy(src, dest, opts, (err) => { + if (err) + return cb(err); + return remove(src, cb); + }); + }; + var fs = require_graceful_fs(); + var path = import.meta.require("path"); + var copy = require_copy2().copy; + var remove = require_remove().remove; + var mkdirp = require_mkdirs().mkdirp; + var pathExists = require_path_exists().pathExists; + var stat = require_stat(); + module.exports = move; +}); + +// node_modules/fs-extra/lib/move/move-sync.js +var require_move_sync = __commonJS((exports, module) => { + var moveSync = function(src, dest, opts) { + opts = opts || {}; + const overwrite = opts.overwrite || opts.clobber || false; + const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, "move", opts); + stat.checkParentPathsSync(src, srcStat, dest, "move"); + if (!isParentRoot(dest)) + mkdirpSync(path.dirname(dest)); + return doRename(src, dest, overwrite, isChangingCase); + }; + var isParentRoot = function(dest) { + const parent = path.dirname(dest); + const parsedPath = path.parse(parent); + return parsedPath.root === parent; + }; + var doRename = function(src, dest, overwrite, isChangingCase) { + if (isChangingCase) + return rename(src, dest, overwrite); + if (overwrite) { + removeSync(dest); + return rename(src, dest, overwrite); + } + if (fs.existsSync(dest)) + throw new Error("dest already exists."); + return rename(src, dest, overwrite); + }; + var rename = function(src, dest, overwrite) { + try { + fs.renameSync(src, dest); + } catch (err) { + if (err.code !== "EXDEV") + throw err; + return moveAcrossDevice(src, dest, overwrite); + } + }; + var moveAcrossDevice = function(src, dest, overwrite) { + const opts = { + overwrite, + errorOnExist: true, + preserveTimestamps: true + }; + copySync(src, dest, opts); + return removeSync(src); + }; + var fs = require_graceful_fs(); + var path = import.meta.require("path"); + var copySync = require_copy2().copySync; + var removeSync = require_remove().removeSync; + var mkdirpSync = require_mkdirs().mkdirpSync; + var stat = require_stat(); + module.exports = moveSync; +}); + +// node_modules/fs-extra/lib/move/index.js +var require_move2 = __commonJS((exports, module) => { + var u = require_universalify().fromCallback; + module.exports = { + move: u(require_move()), + moveSync: require_move_sync() + }; +}); + +// node_modules/fs-extra/lib/index.js +var require_lib = __commonJS((exports, module) => { + module.exports = { + ...require_fs(), + ...require_copy2(), + ...require_empty(), + ...require_ensure(), + ...require_json(), + ...require_mkdirs(), + ...require_move2(), + ...require_output_file(), + ...require_path_exists(), + ...require_remove() + }; +}); + +// node_modules/fast-glob/out/utils/array.js +var require_array = __commonJS((exports) => { + var flatten = function(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); + }; + var splitWhen = function(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } else { + result[groupIndex].push(item); + } + } + return result; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.splitWhen = exports.flatten = undefined; + exports.flatten = flatten; + exports.splitWhen = splitWhen; +}); + +// node_modules/fast-glob/out/utils/errno.js +var require_errno = __commonJS((exports) => { + var isEnoentCodeError = function(error2) { + return error2.code === "ENOENT"; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isEnoentCodeError = undefined; + exports.isEnoentCodeError = isEnoentCodeError; +}); + +// node_modules/fast-glob/out/utils/fs.js +var require_fs2 = __commonJS((exports) => { + var createDirentFromStats = function(name, stats) { + return new DirentFromStats(name, stats); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createDirentFromStats = undefined; + + class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } + } + exports.createDirentFromStats = createDirentFromStats; +}); + +// node_modules/fast-glob/out/utils/path.js +var require_path = __commonJS((exports) => { + var unixify = function(filepath) { + return filepath.replace(/\\/g, "/"); + }; + var makeAbsolute = function(cwd, filepath) { + return path.resolve(cwd, filepath); + }; + var removeLeadingDotSegment = function(entry) { + if (entry.charAt(0) === ".") { + const secondCharactery = entry.charAt(1); + if (secondCharactery === "/" || secondCharactery === "\\") { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; + }; + var escapeWindowsPath = function(pattern) { + return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); + }; + var escapePosixPath = function(pattern) { + return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); + }; + var convertWindowsPathToPattern = function(filepath) { + return escapeWindowsPath(filepath).replace(DOS_DEVICE_PATH_RE, "//$1").replace(WINDOWS_BACKSLASHES_RE, "/"); + }; + var convertPosixPathToPattern = function(filepath) { + return escapePosixPath(filepath); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = undefined; + var os = import.meta.require("os"); + var path = import.meta.require("path"); + var IS_WINDOWS_PLATFORM = os.platform() === "win32"; + var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; + var POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; + var WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([(){}]|^!|[!+@](?=\())/g; + var DOS_DEVICE_PATH_RE = /^\\\\([.?])/; + var WINDOWS_BACKSLASHES_RE = /\\(?![!()+@{}])/g; + exports.unixify = unixify; + exports.makeAbsolute = makeAbsolute; + exports.removeLeadingDotSegment = removeLeadingDotSegment; + exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; + exports.escapeWindowsPath = escapeWindowsPath; + exports.escapePosixPath = escapePosixPath; + exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; + exports.convertWindowsPathToPattern = convertWindowsPathToPattern; + exports.convertPosixPathToPattern = convertPosixPathToPattern; +}); + +// node_modules/is-extglob/index.js +var require_is_extglob = __commonJS((exports, module) => { + /*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ + module.exports = function isExtglob(str) { + if (typeof str !== "string" || str === "") { + return false; + } + var match; + while (match = /(\\).|([@?!+*]\(.*\))/g.exec(str)) { + if (match[2]) + return true; + str = str.slice(match.index + match[0].length); + } + return false; + }; +}); + +// node_modules/is-glob/index.js +var require_is_glob = __commonJS((exports, module) => { + /*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + var isExtglob = require_is_extglob(); + var chars = { "{": "}", "(": ")", "[": "]" }; + var strictCheck = function(str) { + if (str[0] === "!") { + return true; + } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str.length) { + if (str[index] === "*") { + return true; + } + if (str[index + 1] === "?" && /[\].+)]/.test(str[index])) { + return true; + } + if (closeSquareIndex !== -1 && str[index] === "[" && str[index + 1] !== "]") { + if (closeSquareIndex < index) { + closeSquareIndex = str.indexOf("]", index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } + if (closeCurlyIndex !== -1 && str[index] === "{" && str[index + 1] !== "}") { + closeCurlyIndex = str.indexOf("}", index); + if (closeCurlyIndex > index) { + backSlashIndex = str.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } + if (closeParenIndex !== -1 && str[index] === "(" && str[index + 1] === "?" && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ")") { + closeParenIndex = str.indexOf(")", index); + if (closeParenIndex > index) { + backSlashIndex = str.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + if (pipeIndex !== -1 && str[index] === "(" && str[index + 1] !== "|") { + if (pipeIndex < index) { + pipeIndex = str.indexOf("|", index); + } + if (pipeIndex !== -1 && str[pipeIndex + 1] !== ")") { + closeParenIndex = str.indexOf(")", pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str.indexOf("\\", pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } + if (str[index] === "\\") { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + if (str[index] === "!") { + return true; + } + } else { + index++; + } + } + return false; + }; + var relaxedCheck = function(str) { + if (str[0] === "!") { + return true; + } + var index = 0; + while (index < str.length) { + if (/[*?{}()[\]]/.test(str[index])) { + return true; + } + if (str[index] === "\\") { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + if (str[index] === "!") { + return true; + } + } else { + index++; + } + } + return false; + }; + module.exports = function isGlob(str, options) { + if (typeof str !== "string" || str === "") { + return false; + } + if (isExtglob(str)) { + return true; + } + var check = strictCheck; + if (options && options.strict === false) { + check = relaxedCheck; + } + return check(str); + }; +}); + +// node_modules/glob-parent/index.js +var require_glob_parent = __commonJS((exports, module) => { + var isGlob = require_is_glob(); + var pathPosixDirname = import.meta.require("path").posix.dirname; + var isWin32 = import.meta.require("os").platform() === "win32"; + var slash = "/"; + var backslash = /\\/g; + var enclosure = /[\{\[].*[\}\]]$/; + var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; + var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + if (enclosure.test(str)) { + str += slash; + } + str += "a"; + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); + return str.replace(escaped, "$1"); + }; +}); + +// node_modules/braces/lib/utils.js +var require_utils3 = __commonJS((exports) => { + exports.isInteger = (num) => { + if (typeof num === "number") { + return Number.isInteger(num); + } + if (typeof num === "string" && num.trim() !== "") { + return Number.isInteger(Number(num)); + } + return false; + }; + exports.find = (node2, type) => node2.nodes.find((node3) => node3.type === type); + exports.exceedsLimit = (min, max, step2 = 1, limit) => { + if (limit === false) + return false; + if (!exports.isInteger(min) || !exports.isInteger(max)) + return false; + return (Number(max) - Number(min)) / Number(step2) >= limit; + }; + exports.escapeNode = (block, n = 0, type) => { + let node2 = block.nodes[n]; + if (!node2) + return; + if (type && node2.type === type || node2.type === "open" || node2.type === "close") { + if (node2.escaped !== true) { + node2.value = "\\" + node2.value; + node2.escaped = true; + } + } + }; + exports.encloseBrace = (node2) => { + if (node2.type !== "brace") + return false; + if (node2.commas >> 0 + node2.ranges >> 0 === 0) { + node2.invalid = true; + return true; + } + return false; + }; + exports.isInvalidBrace = (block) => { + if (block.type !== "brace") + return false; + if (block.invalid === true || block.dollar) + return true; + if (block.commas >> 0 + block.ranges >> 0 === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; + }; + exports.isOpenOrClose = (node2) => { + if (node2.type === "open" || node2.type === "close") { + return true; + } + return node2.open === true || node2.close === true; + }; + exports.reduce = (nodes) => nodes.reduce((acc, node2) => { + if (node2.type === "text") + acc.push(node2.value); + if (node2.type === "range") + node2.type = "text"; + return acc; + }, []); + exports.flatten = (...args) => { + const result = []; + const flat = (arr) => { + for (let i = 0;i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele, result) : ele !== undefined && result.push(ele); + } + return result; + }; + flat(args); + return result; + }; +}); + +// node_modules/braces/lib/stringify.js +var require_stringify = __commonJS((exports, module) => { + var utils = require_utils3(); + module.exports = (ast, options = {}) => { + let stringify = (node2, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); + let invalidNode = node2.invalid === true && options.escapeInvalid === true; + let output = ""; + if (node2.value) { + if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node2)) { + return "\\" + node2.value; + } + return node2.value; + } + if (node2.value) { + return node2.value; + } + if (node2.nodes) { + for (let child of node2.nodes) { + output += stringify(child); + } + } + return output; + }; + return stringify(ast); + }; +}); + +// node_modules/is-number/index.js +var require_is_number = __commonJS((exports, module) => { + /*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + module.exports = function(num) { + if (typeof num === "number") { + return num - num === 0; + } + if (typeof num === "string" && num.trim() !== "") { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; + }; +}); + +// node_modules/to-regex-range/index.js +var require_to_regex_range = __commonJS((exports, module) => { + var collatePatterns = function(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, "-", false, options) || []; + let onlyPositive = filterPatterns(pos, neg, "", false, options) || []; + let intersected = filterPatterns(neg, pos, "-?", true, options) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join("|"); + }; + var splitToRanges = function(min, max) { + let nines = 1; + let zeros = 1; + let stop = countNines(min, nines); + let stops = new Set([max]); + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + stop = countZeros(max + 1, zeros) - 1; + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } + stops = [...stops]; + stops.sort(compare); + return stops; + }; + var rangeToPattern = function(start, stop, options) { + if (start === stop) { + return { pattern: start, count: [], digits: 0 }; + } + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ""; + let count = 0; + for (let i = 0;i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; + if (startDigit === stopDigit) { + pattern += startDigit; + } else if (startDigit !== "0" || stopDigit !== "9") { + pattern += toCharacterClass(startDigit, stopDigit, options); + } else { + count++; + } + } + if (count) { + pattern += options.shorthand === true ? "\\d" : "[0-9]"; + } + return { pattern, count: [count], digits }; + }; + var splitToPatterns = function(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; + for (let i = 0;i < ranges.length; i++) { + let max2 = ranges[i]; + let obj = rangeToPattern(String(start), String(max2), options); + let zeros = ""; + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max2 + 1; + continue; + } + if (tok.isPadded) { + zeros = padZeros(max2, tok, options); + } + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max2 + 1; + prev = obj; + } + return tokens; + }; + var filterPatterns = function(arr, comparison, prefix, intersection, options) { + let result = []; + for (let ele of arr) { + let { string } = ele; + if (!intersection && !contains(comparison, "string", string)) { + result.push(prefix + string); + } + if (intersection && contains(comparison, "string", string)) { + result.push(prefix + string); + } + } + return result; + }; + var zip = function(a, b) { + let arr = []; + for (let i = 0;i < a.length; i++) + arr.push([a[i], b[i]]); + return arr; + }; + var compare = function(a, b) { + return a > b ? 1 : b > a ? -1 : 0; + }; + var contains = function(arr, key, val) { + return arr.some((ele) => ele[key] === val); + }; + var countNines = function(min, len) { + return Number(String(min).slice(0, -len) + "9".repeat(len)); + }; + var countZeros = function(integer, zeros) { + return integer - integer % Math.pow(10, zeros); + }; + var toQuantifier = function(digits) { + let [start = 0, stop = ""] = digits; + if (stop || start > 1) { + return `{${start + (stop ? "," + stop : "")}}`; + } + return ""; + }; + var toCharacterClass = function(a, b, options) { + return `[${a}${b - a === 1 ? "" : "-"}${b}]`; + }; + var hasPadding = function(str) { + return /^-?(0+)\d/.test(str); + }; + var padZeros = function(value, tok, options) { + if (!tok.isPadded) { + return value; + } + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; + switch (diff) { + case 0: + return ""; + case 1: + return relax ? "0?" : "0"; + case 2: + return relax ? "0{0,2}" : "00"; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; + } + } + }; + /*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ + var isNumber = require_is_number(); + var toRegexRange = (min, max, options) => { + if (isNumber(min) === false) { + throw new TypeError("toRegexRange: expected the first argument to be a number"); + } + if (max === undefined || min === max) { + return String(min); + } + if (isNumber(max) === false) { + throw new TypeError("toRegexRange: expected the second argument to be a number."); + } + let opts = { relaxZeros: true, ...options }; + if (typeof opts.strictZeros === "boolean") { + opts.relaxZeros = opts.strictZeros === false; + } + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap2 = String(opts.wrap); + let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap2; + if (toRegexRange.cache.hasOwnProperty(cacheKey)) { + return toRegexRange.cache[cacheKey].result; + } + let a = Math.min(min, max); + let b = Math.max(min, max); + if (Math.abs(a - b) === 1) { + let result = min + "|" + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + let isPadded = hasPadding(min) || hasPadding(max); + let state = { min, max, a, b }; + let positives = []; + let negatives = []; + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; + } + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives, opts); + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && positives.length + negatives.length > 1) { + state.result = `(?:${state.result})`; + } + toRegexRange.cache[cacheKey] = state; + return state.result; + }; + toRegexRange.cache = {}; + toRegexRange.clearCache = () => toRegexRange.cache = {}; + module.exports = toRegexRange; +}); + +// node_modules/fill-range/index.js +var require_fill_range = __commonJS((exports, module) => { + /*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + var util = import.meta.require("util"); + var toRegexRange = require_to_regex_range(); + var isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); + var transform = (toNumber) => { + return (value) => toNumber === true ? Number(value) : String(value); + }; + var isValidValue = (value) => { + return typeof value === "number" || typeof value === "string" && value !== ""; + }; + var isNumber = (num) => Number.isInteger(+num); + var zeros = (input) => { + let value = `${input}`; + let index = -1; + if (value[0] === "-") + value = value.slice(1); + if (value === "0") + return false; + while (value[++index] === "0") + ; + return index > 0; + }; + var stringify = (start, end, options) => { + if (typeof start === "string" || typeof end === "string") { + return true; + } + return options.stringify === true; + }; + var pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === "-" ? "-" : ""; + if (dash) + input = input.slice(1); + input = dash + input.padStart(dash ? maxLength - 1 : maxLength, "0"); + } + if (toNumber === false) { + return String(input); + } + return input; + }; + var toMaxLen = (input, maxLength) => { + let negative = input[0] === "-" ? "-" : ""; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) + input = "0" + input; + return negative ? "-" + input : input; + }; + var toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + let prefix = options.capture ? "" : "?:"; + let positives = ""; + let negatives = ""; + let result; + if (parts.positives.length) { + positives = parts.positives.join("|"); + } + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join("|")})`; + } + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + if (options.wrap) { + return `(${prefix}${result})`; + } + return result; + }; + var toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); + } + let start = String.fromCharCode(a); + if (a === b) + return start; + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; + }; + var toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap2 = options.wrap === true; + let prefix = options.capture ? "" : "?:"; + return wrap2 ? `(${prefix}${start.join("|")})` : start.join("|"); + } + return toRegexRange(start, end, options); + }; + var rangeError = (...args) => { + return new RangeError("Invalid range arguments: " + util.inspect(...args)); + }; + var invalidRange = (start, end, options) => { + if (options.strictRanges === true) + throw rangeError([start, end]); + return []; + }; + var invalidStep = (step2, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step2}" to be a number`); + } + return []; + }; + var fillNumbers = (start, end, step2 = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) + throw rangeError([start, end]); + return []; + } + if (a === 0) + a = 0; + if (b === 0) + b = 0; + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step2); + step2 = Math.max(Math.abs(step2), 1); + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format4 = options.transform || transform(toNumber); + if (options.toRegex && step2 === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + let parts = { negatives: [], positives: [] }; + let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num)); + let range = []; + let index = 0; + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step2 > 1) { + push(a); + } else { + range.push(pad(format4(a, index), maxLen, toNumber)); + } + a = descending ? a - step2 : a + step2; + index++; + } + if (options.toRegex === true) { + return step2 > 1 ? toSequence(parts, options) : toRegex(range, null, { wrap: false, ...options }); + } + return range; + }; + var fillLetters = (start, end, step2 = 1, options = {}) => { + if (!isNumber(start) && start.length > 1 || !isNumber(end) && end.length > 1) { + return invalidRange(start, end, options); + } + let format4 = options.transform || ((val) => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + if (options.toRegex && step2 === 1) { + return toRange(min, max, false, options); + } + let range = []; + let index = 0; + while (descending ? a >= b : a <= b) { + range.push(format4(a, index)); + a = descending ? a - step2 : a + step2; + index++; + } + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + return range; + }; + var fill = (start, end, step2, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + if (typeof step2 === "function") { + return fill(start, end, 1, { transform: step2 }); + } + if (isObject(step2)) { + return fill(start, end, 0, step2); + } + let opts = { ...options }; + if (opts.capture === true) + opts.wrap = true; + step2 = step2 || opts.step || 1; + if (!isNumber(step2)) { + if (step2 != null && !isObject(step2)) + return invalidStep(step2, opts); + return fill(start, end, 1, step2); + } + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step2, opts); + } + return fillLetters(start, end, Math.max(Math.abs(step2), 1), opts); + }; + module.exports = fill; +}); + +// node_modules/braces/lib/compile.js +var require_compile = __commonJS((exports, module) => { + var fill = require_fill_range(); + var utils = require_utils3(); + var compile = (ast, options = {}) => { + let walk = (node2, parent = {}) => { + let invalidBlock = utils.isInvalidBrace(parent); + let invalidNode = node2.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? "\\" : ""; + let output = ""; + if (node2.isOpen === true) { + return prefix + node2.value; + } + if (node2.isClose === true) { + return prefix + node2.value; + } + if (node2.type === "open") { + return invalid ? prefix + node2.value : "("; + } + if (node2.type === "close") { + return invalid ? prefix + node2.value : ")"; + } + if (node2.type === "comma") { + return node2.prev.type === "comma" ? "" : invalid ? node2.value : "|"; + } + if (node2.value) { + return node2.value; + } + if (node2.nodes && node2.ranges > 0) { + let args = utils.reduce(node2.nodes); + let range = fill(...args, { ...options, wrap: false, toRegex: true }); + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + if (node2.nodes) { + for (let child of node2.nodes) { + output += walk(child, node2); + } + } + return output; + }; + return walk(ast); + }; + module.exports = compile; +}); + +// node_modules/braces/lib/expand.js +var require_expand = __commonJS((exports, module) => { + var fill = require_fill_range(); + var stringify = require_stringify(); + var utils = require_utils3(); + var append = (queue = "", stash = "", enclose = false) => { + let result = []; + queue = [].concat(queue); + stash = [].concat(stash); + if (!stash.length) + return queue; + if (!queue.length) { + return enclose ? utils.flatten(stash).map((ele) => `{${ele}}`) : stash; + } + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === "string") + ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele); + } + } + } + return utils.flatten(result); + }; + var expand = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit; + let walk = (node2, parent = {}) => { + node2.queue = []; + let p = parent; + let q = parent.queue; + while (p.type !== "brace" && p.type !== "root" && p.parent) { + p = p.parent; + q = p.queue; + } + if (node2.invalid || node2.dollar) { + q.push(append(q.pop(), stringify(node2, options))); + return; + } + if (node2.type === "brace" && node2.invalid !== true && node2.nodes.length === 2) { + q.push(append(q.pop(), ["{}"])); + return; + } + if (node2.nodes && node2.ranges > 0) { + let args = utils.reduce(node2.nodes); + if (utils.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit."); + } + let range = fill(...args, options); + if (range.length === 0) { + range = stringify(node2, options); + } + q.push(append(q.pop(), range)); + node2.nodes = []; + return; + } + let enclose = utils.encloseBrace(node2); + let queue = node2.queue; + let block = node2; + while (block.type !== "brace" && block.type !== "root" && block.parent) { + block = block.parent; + queue = block.queue; + } + for (let i = 0;i < node2.nodes.length; i++) { + let child = node2.nodes[i]; + if (child.type === "comma" && node2.type === "brace") { + if (i === 1) + queue.push(""); + queue.push(""); + continue; + } + if (child.type === "close") { + q.push(append(q.pop(), queue, enclose)); + continue; + } + if (child.value && child.type !== "open") { + queue.push(append(queue.pop(), child.value)); + continue; + } + if (child.nodes) { + walk(child, node2); + } + } + return queue; + }; + return utils.flatten(walk(ast)); + }; + module.exports = expand; +}); + +// node_modules/braces/lib/constants.js +var require_constants = __commonJS((exports, module) => { + module.exports = { + MAX_LENGTH: 1024 * 64, + CHAR_0: "0", + CHAR_9: "9", + CHAR_UPPERCASE_A: "A", + CHAR_LOWERCASE_A: "a", + CHAR_UPPERCASE_Z: "Z", + CHAR_LOWERCASE_Z: "z", + CHAR_LEFT_PARENTHESES: "(", + CHAR_RIGHT_PARENTHESES: ")", + CHAR_ASTERISK: "*", + CHAR_AMPERSAND: "&", + CHAR_AT: "@", + CHAR_BACKSLASH: "\\", + CHAR_BACKTICK: "`", + CHAR_CARRIAGE_RETURN: "\r", + CHAR_CIRCUMFLEX_ACCENT: "^", + CHAR_COLON: ":", + CHAR_COMMA: ",", + CHAR_DOLLAR: "$", + CHAR_DOT: ".", + CHAR_DOUBLE_QUOTE: '"', + CHAR_EQUAL: "=", + CHAR_EXCLAMATION_MARK: "!", + CHAR_FORM_FEED: "\f", + CHAR_FORWARD_SLASH: "/", + CHAR_HASH: "#", + CHAR_HYPHEN_MINUS: "-", + CHAR_LEFT_ANGLE_BRACKET: "<", + CHAR_LEFT_CURLY_BRACE: "{", + CHAR_LEFT_SQUARE_BRACKET: "[", + CHAR_LINE_FEED: "\n", + CHAR_NO_BREAK_SPACE: "\xA0", + CHAR_PERCENT: "%", + CHAR_PLUS: "+", + CHAR_QUESTION_MARK: "?", + CHAR_RIGHT_ANGLE_BRACKET: ">", + CHAR_RIGHT_CURLY_BRACE: "}", + CHAR_RIGHT_SQUARE_BRACKET: "]", + CHAR_SEMICOLON: ";", + CHAR_SINGLE_QUOTE: "\'", + CHAR_SPACE: " ", + CHAR_TAB: "\t", + CHAR_UNDERSCORE: "_", + CHAR_VERTICAL_LINE: "|", + CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF" + }; +}); + +// node_modules/braces/lib/parse.js +var require_parse = __commonJS((exports, module) => { + var stringify = require_stringify(); + var { + MAX_LENGTH, + CHAR_BACKSLASH, + CHAR_BACKTICK, + CHAR_COMMA, + CHAR_DOT, + CHAR_LEFT_PARENTHESES, + CHAR_RIGHT_PARENTHESES, + CHAR_LEFT_CURLY_BRACE, + CHAR_RIGHT_CURLY_BRACE, + CHAR_LEFT_SQUARE_BRACKET, + CHAR_RIGHT_SQUARE_BRACKET, + CHAR_DOUBLE_QUOTE, + CHAR_SINGLE_QUOTE, + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE + } = require_constants(); + var parse = (input, options = {}) => { + if (typeof input !== "string") { + throw new TypeError("Expected a string"); + } + let opts = options || {}; + let max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + let ast = { type: "root", input, nodes: [] }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + let memo = {}; + const advance = () => input[index++]; + const push = (node2) => { + if (node2.type === "text" && prev.type === "dot") { + prev.type = "text"; + } + if (prev && prev.type === "text" && node2.type === "text") { + prev.value += node2.value; + return; + } + block.nodes.push(node2); + node2.parent = block; + node2.prev = prev; + prev = node2; + return node2; + }; + push({ type: "bos" }); + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + if (value === CHAR_BACKSLASH) { + push({ type: "text", value: (options.keepEscaping ? value : "") + advance() }); + continue; + } + if (value === CHAR_RIGHT_SQUARE_BRACKET) { + push({ type: "text", value: "\\" + value }); + continue; + } + if (value === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + let closed = true; + let next; + while (index < length && (next = advance())) { + value += next; + if (next === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + continue; + } + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + brackets--; + if (brackets === 0) { + break; + } + } + } + push({ type: "text", value }); + continue; + } + if (value === CHAR_LEFT_PARENTHESES) { + block = push({ type: "paren", nodes: [] }); + stack.push(block); + push({ type: "text", value }); + continue; + } + if (value === CHAR_RIGHT_PARENTHESES) { + if (block.type !== "paren") { + push({ type: "text", value }); + continue; + } + block = stack.pop(); + push({ type: "text", value }); + block = stack[stack.length - 1]; + continue; + } + if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { + let open = value; + let next; + if (options.keepQuotes !== true) { + value = ""; + } + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + if (next === open) { + if (options.keepQuotes === true) + value += next; + break; + } + value += next; + } + push({ type: "text", value }); + continue; + } + if (value === CHAR_LEFT_CURLY_BRACE) { + depth++; + let dollar = prev.value && prev.value.slice(-1) === "$" || block.dollar === true; + let brace = { + type: "brace", + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + block = push(brace); + stack.push(block); + push({ type: "open", value }); + continue; + } + if (value === CHAR_RIGHT_CURLY_BRACE) { + if (block.type !== "brace") { + push({ type: "text", value }); + continue; + } + let type = "close"; + block = stack.pop(); + block.close = true; + push({ type, value }); + depth--; + block = stack[stack.length - 1]; + continue; + } + if (value === CHAR_COMMA && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { type: "text", value: stringify(block) }]; + } + push({ type: "comma", value }); + block.commas++; + continue; + } + if (value === CHAR_DOT && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + if (depth === 0 || siblings.length === 0) { + push({ type: "text", value }); + continue; + } + if (prev.type === "dot") { + block.range = []; + prev.value += value; + prev.type = "range"; + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = "text"; + continue; + } + block.ranges++; + block.args = []; + continue; + } + if (prev.type === "range") { + siblings.pop(); + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + push({ type: "dot", value }); + continue; + } + push({ type: "text", value }); + } + do { + block = stack.pop(); + if (block.type !== "root") { + block.nodes.forEach((node2) => { + if (!node2.nodes) { + if (node2.type === "open") + node2.isOpen = true; + if (node2.type === "close") + node2.isClose = true; + if (!node2.nodes) + node2.type = "text"; + node2.invalid = true; + } + }); + let parent = stack[stack.length - 1]; + let index2 = parent.nodes.indexOf(block); + parent.nodes.splice(index2, 1, ...block.nodes); + } + } while (stack.length > 0); + push({ type: "eos" }); + return ast; + }; + module.exports = parse; +}); + +// node_modules/braces/index.js +var require_braces = __commonJS((exports, module) => { + var stringify = require_stringify(); + var compile = require_compile(); + var expand = require_expand(); + var parse = require_parse(); + var braces = (input, options = {}) => { + let output = []; + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; + }; + braces.parse = (input, options = {}) => parse(input, options); + braces.stringify = (input, options = {}) => { + if (typeof input === "string") { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); + }; + braces.compile = (input, options = {}) => { + if (typeof input === "string") { + input = braces.parse(input, options); + } + return compile(input, options); + }; + braces.expand = (input, options = {}) => { + if (typeof input === "string") { + input = braces.parse(input, options); + } + let result = expand(input, options); + if (options.noempty === true) { + result = result.filter(Boolean); + } + if (options.nodupes === true) { + result = [...new Set(result)]; + } + return result; + }; + braces.create = (input, options = {}) => { + if (input === "" || input.length < 3) { + return [input]; + } + return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); + }; + module.exports = braces; +}); + +// node_modules/picomatch/lib/constants.js +var require_constants2 = __commonJS((exports, module) => { + var path = import.meta.require("path"); + var WIN_SLASH = "\\\\/"; + var WIN_NO_SLASH = `[^${WIN_SLASH}]`; + var DOT_LITERAL = "\\."; + var PLUS_LITERAL = "\\+"; + var QMARK_LITERAL = "\\?"; + var SLASH_LITERAL = "\\/"; + var ONE_CHAR = "(?=.)"; + var QMARK = "[^/]"; + var END_ANCHOR = `(?:${SLASH_LITERAL}|\$)`; + var START_ANCHOR = `(?:^|${SLASH_LITERAL})`; + var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; + var NO_DOT = `(?!${DOT_LITERAL})`; + var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; + var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; + var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; + var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; + var STAR = `${QMARK}*?`; + var POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR + }; + var WINDOWS_CHARS = { + ...POSIX_CHARS, + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|\$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|\$)` + }; + var POSIX_REGEX_SOURCE = { + alnum: "a-zA-Z0-9", + alpha: "a-zA-Z", + ascii: "\\x00-\\x7F", + blank: " \\t", + cntrl: "\\x00-\\x1F\\x7F", + digit: "0-9", + graph: "\\x21-\\x7E", + lower: "a-z", + print: "\\x20-\\x7E ", + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: " \\t\\r\\n\\v\\f", + upper: "A-Z", + word: "A-Za-z0-9_", + xdigit: "A-Fa-f0-9" + }; + module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, + REPLACEMENTS: { + "***": "*", + "**/**": "**", + "**/**/**": "**" + }, + CHAR_0: 48, + CHAR_9: 57, + CHAR_UPPERCASE_A: 65, + CHAR_LOWERCASE_A: 97, + CHAR_UPPERCASE_Z: 90, + CHAR_LOWERCASE_Z: 122, + CHAR_LEFT_PARENTHESES: 40, + CHAR_RIGHT_PARENTHESES: 41, + CHAR_ASTERISK: 42, + CHAR_AMPERSAND: 38, + CHAR_AT: 64, + CHAR_BACKWARD_SLASH: 92, + CHAR_CARRIAGE_RETURN: 13, + CHAR_CIRCUMFLEX_ACCENT: 94, + CHAR_COLON: 58, + CHAR_COMMA: 44, + CHAR_DOT: 46, + CHAR_DOUBLE_QUOTE: 34, + CHAR_EQUAL: 61, + CHAR_EXCLAMATION_MARK: 33, + CHAR_FORM_FEED: 12, + CHAR_FORWARD_SLASH: 47, + CHAR_GRAVE_ACCENT: 96, + CHAR_HASH: 35, + CHAR_HYPHEN_MINUS: 45, + CHAR_LEFT_ANGLE_BRACKET: 60, + CHAR_LEFT_CURLY_BRACE: 123, + CHAR_LEFT_SQUARE_BRACKET: 91, + CHAR_LINE_FEED: 10, + CHAR_NO_BREAK_SPACE: 160, + CHAR_PERCENT: 37, + CHAR_PLUS: 43, + CHAR_QUESTION_MARK: 63, + CHAR_RIGHT_ANGLE_BRACKET: 62, + CHAR_RIGHT_CURLY_BRACE: 125, + CHAR_RIGHT_SQUARE_BRACKET: 93, + CHAR_SEMICOLON: 59, + CHAR_SINGLE_QUOTE: 39, + CHAR_SPACE: 32, + CHAR_TAB: 9, + CHAR_UNDERSCORE: 95, + CHAR_VERTICAL_LINE: 124, + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, + SEP: path.sep, + extglobChars(chars) { + return { + "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` }, + "?": { type: "qmark", open: "(?:", close: ")?" }, + "+": { type: "plus", open: "(?:", close: ")+" }, + "*": { type: "star", open: "(?:", close: ")*" }, + "@": { type: "at", open: "(?:", close: ")" } + }; + }, + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; + } + }; +}); + +// node_modules/picomatch/lib/utils.js +var require_utils4 = __commonJS((exports) => { + var path = import.meta.require("path"); + var win32 = process.platform === "win32"; + var { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL + } = require_constants2(); + exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); + exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str); + exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str); + exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1"); + exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/"); + exports.removeBackslashes = (str) => { + return str.replace(REGEX_REMOVE_BACKSLASH, (match) => { + return match === "\\" ? "" : match; + }); + }; + exports.supportsLookbehinds = () => { + const segs = process.version.slice(1).split(".").map(Number); + if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) { + return true; + } + return false; + }; + exports.isWindows = (options) => { + if (options && typeof options.windows === "boolean") { + return options.windows; + } + return win32 === true || path.sep === "\\"; + }; + exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) + return input; + if (input[idx - 1] === "\\") + return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; + }; + exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith("./")) { + output = output.slice(2); + state.prefix = "./"; + } + return output; + }; + exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? "" : "^"; + const append = options.contains ? "" : "$"; + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*\$)`; + } + return output; + }; +}); + +// node_modules/picomatch/lib/scan.js +var require_scan = __commonJS((exports, module) => { + var utils = require_utils4(); + var { + CHAR_ASTERISK, + CHAR_AT, + CHAR_BACKWARD_SLASH, + CHAR_COMMA, + CHAR_DOT, + CHAR_EXCLAMATION_MARK, + CHAR_FORWARD_SLASH, + CHAR_LEFT_CURLY_BRACE, + CHAR_LEFT_PARENTHESES, + CHAR_LEFT_SQUARE_BRACKET, + CHAR_PLUS, + CHAR_QUESTION_MARK, + CHAR_RIGHT_CURLY_BRACE, + CHAR_RIGHT_PARENTHESES, + CHAR_RIGHT_SQUARE_BRACKET + } = require_constants2(); + var isPathSeparator = (code) => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; + }; + var depth = (token) => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; + } + }; + var scan = (input, options) => { + const opts = options || {}; + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: "", depth: 0, isGlob: false }; + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); + }; + while (index < length) { + code = advance(); + let next; + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: "", depth: 0, isGlob: false }; + if (finished === true) + continue; + if (prev === CHAR_DOT && index === start + 1) { + start += 2; + continue; + } + lastIndex = index + 1; + continue; + } + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK; + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) + isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } + } + if (scanToEnd === true) { + continue; + } + break; + } + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + if (isGlob === true) { + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + } + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } + let base = str; + let prefix = ""; + let glob = ""; + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ""; + glob = str; + } else { + base = str; + } + if (base && base !== "" && base !== "/" && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + if (opts.unescape === true) { + if (glob) + glob = utils.removeBackslashes(glob); + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } + if (opts.parts === true || opts.tokens === true) { + let prevIndex; + for (let idx = 0;idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== "") { + parts.push(value); + } + prevIndex = i; + } + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } + state.slashes = slashes; + state.parts = parts; + } + return state; + }; + module.exports = scan; +}); + +// node_modules/picomatch/lib/parse.js +var require_parse2 = __commonJS((exports, module) => { + var constants = require_constants2(); + var utils = require_utils4(); + var { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS + } = constants; + var expandRange = (args, options) => { + if (typeof options.expandRange === "function") { + return options.expandRange(...args, options); + } + args.sort(); + const value = `[${args.join("-")}]`; + try { + new RegExp(value); + } catch (ex) { + return args.map((v) => utils.escapeRegex(v)).join(".."); + } + return value; + }; + var syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; + }; + var parse = (input, options) => { + if (typeof input !== "string") { + throw new TypeError("Expected a string"); + } + input = REPLACEMENTS[input] || input; + const opts = { ...options }; + const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + const bos = { type: "bos", value: "", output: opts.prepend || "" }; + const tokens = [bos]; + const capture = opts.capture ? "" : "?:"; + const win32 = utils.isWindows(options); + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; + const globstar = (opts2) => { + return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + const nodot = opts.dot ? "" : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; + if (opts.capture) { + star = `(${star})`; + } + if (typeof opts.noext === "boolean") { + opts.noextglob = opts.noext; + } + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: "", + output: "", + prefix: "", + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; + input = utils.removePrefix(input, state); + len = input.length; + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ""; + const remaining = () => input.slice(state.index + 1); + const consume = (value2 = "", num = 0) => { + state.consumed += value2; + state.index += num; + }; + const append = (token) => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; + const negate = () => { + let count = 1; + while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) { + advance(); + state.start++; + count++; + } + if (count % 2 === 0) { + return false; + } + state.negated = true; + state.start++; + return true; + }; + const increment2 = (type) => { + state[type]++; + stack.push(type); + }; + const decrement = (type) => { + state[type]--; + stack.pop(); + }; + const push = (tok) => { + if (prev.type === "globstar") { + const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace"); + const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren"); + if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = "star"; + prev.value = "*"; + prev.output = star; + state.output += prev.output; + } + } + if (extglobs.length && tok.type !== "paren") { + extglobs[extglobs.length - 1].inner += tok.value; + } + if (tok.value || tok.output) + append(tok); + if (prev && prev.type === "text" && tok.type === "text") { + prev.value += tok.value; + prev.output = (prev.output || "") + tok.value; + return; + } + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; + const extglobOpen = (type, value2) => { + const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" }; + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? "(" : "") + token.open; + increment2("parens"); + push({ type, value: value2, output: state.output ? "" : ONE_CHAR }); + push({ type: "paren", extglob: true, value: advance(), output }); + extglobs.push(token); + }; + const extglobClose = (token) => { + let output = token.close + (opts.capture ? ")" : ""); + let rest; + if (token.type === "negate") { + let extglobStar = star; + if (token.inner && token.inner.length > 1 && token.inner.includes("/")) { + extglobStar = globstar(opts); + } + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)\$))${extglobStar}`; + } + if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + const expression = parse(rest, { ...options, fastpaths: false }).output; + output = token.close = `)${expression})${extglobStar})`; + } + if (token.prev.type === "bos") { + state.negatedExtglob = true; + } + } + push({ type: "paren", extglob: true, value, output }); + decrement("parens"); + }; + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === "\\") { + backslashes = true; + return m; + } + if (first === "?") { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ""); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ""); + } + return QMARK.repeat(chars.length); + } + if (first === ".") { + return DOT_LITERAL.repeat(chars.length); + } + if (first === "*") { + if (esc) { + return esc + first + (rest ? star : ""); + } + return star; + } + return esc ? m : `\\${m}`; + }); + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ""); + } else { + output = output.replace(/\\+/g, (m) => { + return m.length % 2 === 0 ? "\\\\" : m ? "\\" : ""; + }); + } + } + if (output === input && opts.contains === true) { + state.output = input; + return state; + } + state.output = utils.wrapOutput(output, state, options); + return state; + } + while (!eos()) { + value = advance(); + if (value === "\0") { + continue; + } + if (value === "\\") { + const next = peek(); + if (next === "/" && opts.bash !== true) { + continue; + } + if (next === "." || next === ";") { + continue; + } + if (!next) { + value += "\\"; + push({ type: "text", value }); + continue; + } + const match = /^\\+/.exec(remaining()); + let slashes = 0; + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += "\\"; + } + } + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); + } + if (state.brackets === 0) { + push({ type: "text", value }); + continue; + } + } + if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) { + if (opts.posix !== false && value === ":") { + const inner = prev.value.slice(1); + if (inner.includes("[")) { + prev.posix = true; + if (inner.includes(":")) { + const idx = prev.value.lastIndexOf("["); + const pre = prev.value.slice(0, idx); + const rest2 = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest2]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } + if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") { + value = `\\${value}`; + } + if (value === "]" && (prev.value === "[" || prev.value === "[^")) { + value = `\\${value}`; + } + if (opts.posix === true && value === "!" && prev.value === "[") { + value = "^"; + } + prev.value += value; + append({ value }); + continue; + } + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: "text", value }); + } + continue; + } + if (value === "(") { + increment2("parens"); + push({ type: "paren", value }); + continue; + } + if (value === ")") { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("opening", "(")); + } + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + push({ type: "paren", value, output: state.parens ? ")" : "\\)" }); + decrement("parens"); + continue; + } + if (value === "[") { + if (opts.nobracket === true || !remaining().includes("]")) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("closing", "]")); + } + value = `\\${value}`; + } else { + increment2("brackets"); + } + push({ type: "bracket", value }); + continue; + } + if (value === "]") { + if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) { + push({ type: "text", value, output: `\\${value}` }); + continue; + } + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("opening", "[")); + } + push({ type: "text", value, output: `\\${value}` }); + continue; + } + decrement("brackets"); + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) { + value = `/${value}`; + } + prev.value += value; + append({ value }); + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } + if (value === "{" && opts.nobrace !== true) { + increment2("braces"); + const open = { + type: "brace", + value, + output: "(", + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; + braces.push(open); + push(open); + continue; + } + if (value === "}") { + const brace = braces[braces.length - 1]; + if (opts.nobrace === true || !brace) { + push({ type: "text", value, output: value }); + continue; + } + let output = ")"; + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; + for (let i = arr.length - 1;i >= 0; i--) { + tokens.pop(); + if (arr[i].type === "brace") { + break; + } + if (arr[i].type !== "dots") { + range.unshift(arr[i].value); + } + } + output = expandRange(range, opts); + state.backtrack = true; + } + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = "\\{"; + value = output = "\\}"; + state.output = out; + for (const t of toks) { + state.output += t.output || t.value; + } + } + push({ type: "brace", value, output }); + decrement("braces"); + braces.pop(); + continue; + } + if (value === "|") { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: "text", value }); + continue; + } + if (value === ",") { + let output = value; + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === "braces") { + brace.comma = true; + output = "|"; + } + push({ type: "comma", value, output }); + continue; + } + if (value === "/") { + if (prev.type === "dot" && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ""; + state.output = ""; + tokens.pop(); + prev = bos; + continue; + } + push({ type: "slash", value, output: SLASH_LITERAL }); + continue; + } + if (value === ".") { + if (state.braces > 0 && prev.type === "dot") { + if (prev.value === ".") + prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = "dots"; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } + if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") { + push({ type: "text", value, output: DOT_LITERAL }); + continue; + } + push({ type: "dot", value, output: DOT_LITERAL }); + continue; + } + if (value === "?") { + const isGroup = prev && prev.value === "("; + if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + extglobOpen("qmark", value); + continue; + } + if (prev && prev.type === "paren") { + const next = peek(); + let output = value; + if (next === "<" && !utils.supportsLookbehinds()) { + throw new Error("Node.js v10 or higher is required for regex lookbehinds"); + } + if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) { + output = `\\${value}`; + } + push({ type: "text", value, output }); + continue; + } + if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) { + push({ type: "qmark", value, output: QMARK_NO_DOT }); + continue; + } + push({ type: "qmark", value, output: QMARK }); + continue; + } + if (value === "!") { + if (opts.noextglob !== true && peek() === "(") { + if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) { + extglobOpen("negate", value); + continue; + } + } + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } + if (value === "+") { + if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + extglobOpen("plus", value); + continue; + } + if (prev && prev.value === "(" || opts.regex === false) { + push({ type: "plus", value, output: PLUS_LITERAL }); + continue; + } + if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) { + push({ type: "plus", value }); + continue; + } + push({ type: "plus", value: PLUS_LITERAL }); + continue; + } + if (value === "@") { + if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + push({ type: "at", extglob: true, value, output: "" }); + continue; + } + push({ type: "text", value }); + continue; + } + if (value !== "*") { + if (value === "$" || value === "^") { + value = `\\${value}`; + } + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } + push({ type: "text", value }); + continue; + } + if (prev && (prev.type === "globstar" || prev.star === true)) { + prev.type = "star"; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen("star", value); + continue; + } + if (prev.type === "star") { + if (opts.noglobstar === true) { + consume(value); + continue; + } + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === "slash" || prior.type === "bos"; + const afterStar = before && (before.type === "star" || before.type === "globstar"); + if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) { + push({ type: "star", value, output: "" }); + continue; + } + const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace"); + const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren"); + if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) { + push({ type: "star", value, output: "" }); + continue; + } + while (rest.slice(0, 3) === "/**") { + const after = input[state.index + 4]; + if (after && after !== "/") { + break; + } + rest = rest.slice(3); + consume("/**", 3); + } + if (prior.type === "bos" && eos()) { + prev.type = "globstar"; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } + if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + prev.type = "globstar"; + prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)"); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } + if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") { + const end = rest[1] !== undefined ? "|$" : ""; + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + prev.type = "globstar"; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; + state.output += prior.output + prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: "slash", value: "/", output: "" }); + continue; + } + if (prior.type === "bos" && rest[0] === "/") { + prev.type = "globstar"; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: "slash", value: "/", output: "" }); + continue; + } + state.output = state.output.slice(0, -prev.output.length); + prev.type = "globstar"; + prev.output = globstar(opts); + prev.value += value; + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } + const token = { type: "star", value, output: star }; + if (opts.bash === true) { + token.output = ".*?"; + if (prev.type === "bos" || prev.type === "slash") { + token.output = nodot + token.output; + } + push(token); + continue; + } + if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) { + token.output = value; + push(token); + continue; + } + if (state.index === state.start || prev.type === "slash" || prev.type === "dot") { + if (prev.type === "dot") { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; + } else { + state.output += nodot; + prev.output += nodot; + } + if (peek() !== "*") { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } + push(token); + } + while (state.brackets > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", "]")); + state.output = utils.escapeLast(state.output, "["); + decrement("brackets"); + } + while (state.parens > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", ")")); + state.output = utils.escapeLast(state.output, "("); + decrement("parens"); + } + while (state.braces > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", "}")); + state.output = utils.escapeLast(state.output, "{"); + decrement("braces"); + } + if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) { + push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` }); + } + if (state.backtrack === true) { + state.output = ""; + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; + if (token.suffix) { + state.output += token.suffix; + } + } + } + return state; + }; + parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? "" : "?:"; + const state = { negated: false, prefix: "" }; + let star = opts.bash === true ? ".*?" : STAR; + if (opts.capture) { + star = `(${star})`; + } + const globstar = (opts2) => { + if (opts2.noglobstar === true) + return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + const create = (str) => { + switch (str) { + case "*": + return `${nodot}${ONE_CHAR}${star}`; + case ".*": + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + case "*.*": + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + case "*/*": + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + case "**": + return nodot + globstar(opts); + case "**/*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; + case "**/*.*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + case "**/.*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) + return; + const source2 = create(match[1]); + if (!source2) + return; + return source2 + DOT_LITERAL + match[2]; + } + } + }; + const output = utils.removePrefix(input, state); + let source = create(output); + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; + } + return source; + }; + module.exports = parse; +}); + +// node_modules/picomatch/lib/picomatch.js +var require_picomatch = __commonJS((exports, module) => { + var path = import.meta.require("path"); + var scan = require_scan(); + var parse = require_parse2(); + var utils = require_utils4(); + var constants = require_constants2(); + var isObject = (val) => val && typeof val === "object" && !Array.isArray(val); + var picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map((input) => picomatch(input, options, returnState)); + const arrayMatcher = (str) => { + for (const isMatch of fns) { + const state2 = isMatch(str); + if (state2) + return state2; + } + return false; + }; + return arrayMatcher; + } + const isState = isObject(glob) && glob.tokens && glob.input; + if (glob === "" || typeof glob !== "string" && !isState) { + throw new TypeError("Expected pattern to be a non-empty string"); + } + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); + const state = regex.state; + delete regex.state; + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; + if (typeof opts.onResult === "function") { + opts.onResult(result); + } + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } + if (isIgnored(input)) { + if (typeof opts.onIgnore === "function") { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } + if (typeof opts.onMatch === "function") { + opts.onMatch(result); + } + return returnObject ? result : true; + }; + if (returnState) { + matcher.state = state; + } + return matcher; + }; + picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== "string") { + throw new TypeError("Expected input to be a string"); + } + if (input === "") { + return { isMatch: false, output: "" }; + } + const opts = options || {}; + const format4 = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = match && format4 ? format4(input) : input; + if (match === false) { + output = format4 ? format4(input) : input; + match = output === glob; + } + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } + return { isMatch: Boolean(match), match, output }; + }; + picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path.basename(input)); + }; + picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) + return pattern.map((p) => picomatch.parse(p, options)); + return parse(pattern, { ...options, fastpaths: false }); + }; + picomatch.scan = (input, options) => scan(input, options); + picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; + } + const opts = options || {}; + const prepend = opts.contains ? "" : "^"; + const append = opts.contains ? "" : "$"; + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*\$`; + } + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } + return regex; + }; + picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== "string") { + throw new TypeError("Expected a non-empty string"); + } + let parsed = { negated: false, fastpaths: true }; + if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) { + parsed.output = parse.fastpaths(input, options); + } + if (!parsed.output) { + parsed = parse(input, options); + } + return picomatch.compileRe(parsed, options, returnOutput, returnState); + }; + picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? "i" : "")); + } catch (err) { + if (options && options.debug === true) + throw err; + return /$^/; + } + }; + picomatch.constants = constants; + module.exports = picomatch; +}); + +// node_modules/micromatch/index.js +var require_micromatch = __commonJS((exports, module) => { + var util = import.meta.require("util"); + var braces = require_braces(); + var picomatch = require_picomatch(); + var utils = require_utils4(); + var isEmptyString = (val) => val === "" || val === "./"; + var micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); + let omit = new Set; + let keep = new Set; + let items = new Set; + let negatives = 0; + let onResult = (state) => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); + } + }; + for (let i = 0;i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) + negatives++; + for (let item of list) { + let matched = isMatch(item, true); + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) + continue; + if (negated) { + omit.add(matched.output); + } else { + omit.delete(matched.output); + keep.add(matched.output); + } + } + } + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter((item) => !omit.has(item)); + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(", ")}"`); + } + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map((p) => p.replace(/\\/g, "")) : patterns; + } + } + return matches; + }; + micromatch.match = micromatch; + micromatch.matcher = (pattern, options) => picomatch(pattern, options); + micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + micromatch.any = micromatch.isMatch; + micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set; + let items = []; + let onResult = (state) => { + if (options.onResult) + options.onResult(state); + items.push(state.output); + }; + let matches = new Set(micromatch(list, patterns, { ...options, onResult })); + for (let item of items) { + if (!matches.has(item)) { + result.add(item); + } + } + return [...result]; + }; + micromatch.contains = (str, pattern, options) => { + if (typeof str !== "string") { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + if (Array.isArray(pattern)) { + return pattern.some((p) => micromatch.contains(str, p, options)); + } + if (typeof pattern === "string") { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; + } + if (str.includes(pattern) || str.startsWith("./") && str.slice(2).includes(pattern)) { + return true; + } + } + return micromatch.isMatch(str, pattern, { ...options, contains: true }); + }; + micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError("Expected the first argument to be an object"); + } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) + res[key] = obj[key]; + return res; + }; + micromatch.some = (list, patterns, options) => { + let items = [].concat(list); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some((item) => isMatch(item))) { + return true; + } + } + return false; + }; + micromatch.every = (list, patterns, options) => { + let items = [].concat(list); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every((item) => isMatch(item))) { + return false; + } + } + return true; + }; + micromatch.all = (str, patterns, options) => { + if (typeof str !== "string") { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + return [].concat(patterns).every((p) => picomatch(p, options)(str)); + }; + micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); + if (match) { + return match.slice(1).map((v) => v === undefined ? "" : v); + } + }; + micromatch.makeRe = (...args) => picomatch.makeRe(...args); + micromatch.scan = (...args) => picomatch.scan(...args); + micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } + } + return res; + }; + micromatch.braces = (pattern, options) => { + if (typeof pattern !== "string") + throw new TypeError("Expected a string"); + if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { + return [pattern]; + } + return braces(pattern, options); + }; + micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== "string") + throw new TypeError("Expected a string"); + return micromatch.braces(pattern, { ...options, expand: true }); + }; + module.exports = micromatch; +}); + +// node_modules/fast-glob/out/utils/pattern.js +var require_pattern = __commonJS((exports) => { + var isStaticPattern = function(pattern, options = {}) { + return !isDynamicPattern(pattern, options); + }; + var isDynamicPattern = function(pattern, options = {}) { + if (pattern === "") { + return false; + } + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { + return true; + } + return false; + }; + var hasBraceExpansion = function(pattern) { + const openingBraceIndex = pattern.indexOf("{"); + if (openingBraceIndex === -1) { + return false; + } + const closingBraceIndex = pattern.indexOf("}", openingBraceIndex + 1); + if (closingBraceIndex === -1) { + return false; + } + const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); + return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); + }; + var convertToPositivePattern = function(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; + }; + var convertToNegativePattern = function(pattern) { + return "!" + pattern; + }; + var isNegativePattern = function(pattern) { + return pattern.startsWith("!") && pattern[1] !== "("; + }; + var isPositivePattern = function(pattern) { + return !isNegativePattern(pattern); + }; + var getNegativePatterns = function(patterns) { + return patterns.filter(isNegativePattern); + }; + var getPositivePatterns = function(patterns) { + return patterns.filter(isPositivePattern); + }; + var getPatternsInsideCurrentDirectory = function(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); + }; + var getPatternsOutsideCurrentDirectory = function(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); + }; + var isPatternRelatedToParentDirectory = function(pattern) { + return pattern.startsWith("..") || pattern.startsWith("./.."); + }; + var getBaseDirectory = function(pattern) { + return globParent(pattern, { flipBackslashes: false }); + }; + var hasGlobStar = function(pattern) { + return pattern.includes(GLOBSTAR); + }; + var endsWithSlashGlobStar = function(pattern) { + return pattern.endsWith("/" + GLOBSTAR); + }; + var isAffectDepthOfReadingPattern = function(pattern) { + const basename2 = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename2); + }; + var expandPatternsWithBraceExpansion = function(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); + }; + var expandBraceExpansion = function(pattern) { + const patterns = micromatch.braces(pattern, { expand: true, nodupes: true }); + patterns.sort((a, b) => a.length - b.length); + return patterns.filter((pattern2) => pattern2 !== ""); + }; + var getPatternParts = function(pattern, options) { + let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); + if (parts.length === 0) { + parts = [pattern]; + } + if (parts[0].startsWith("/")) { + parts[0] = parts[0].slice(1); + parts.unshift(""); + } + return parts; + }; + var makeRe = function(pattern, options) { + return micromatch.makeRe(pattern, options); + }; + var convertPatternsToRe = function(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); + }; + var matchAny = function(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); + }; + var removeDuplicateSlashes = function(pattern) { + return pattern.replace(DOUBLE_SLASH_RE, "/"); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = undefined; + var path = import.meta.require("path"); + var globParent = require_glob_parent(); + var micromatch = require_micromatch(); + var GLOBSTAR = "**"; + var ESCAPE_SYMBOL = "\\"; + var COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; + var REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; + var REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; + var GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; + var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; + var DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; + exports.isStaticPattern = isStaticPattern; + exports.isDynamicPattern = isDynamicPattern; + exports.convertToPositivePattern = convertToPositivePattern; + exports.convertToNegativePattern = convertToNegativePattern; + exports.isNegativePattern = isNegativePattern; + exports.isPositivePattern = isPositivePattern; + exports.getNegativePatterns = getNegativePatterns; + exports.getPositivePatterns = getPositivePatterns; + exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; + exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; + exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; + exports.getBaseDirectory = getBaseDirectory; + exports.hasGlobStar = hasGlobStar; + exports.endsWithSlashGlobStar = endsWithSlashGlobStar; + exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; + exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; + exports.expandBraceExpansion = expandBraceExpansion; + exports.getPatternParts = getPatternParts; + exports.makeRe = makeRe; + exports.convertPatternsToRe = convertPatternsToRe; + exports.matchAny = matchAny; + exports.removeDuplicateSlashes = removeDuplicateSlashes; +}); + +// node_modules/merge2/index.js +var require_merge2 = __commonJS((exports, module) => { + var merge2 = function() { + const streamsQueue = []; + const args = slice.call(arguments); + let merging = false; + let options = args[args.length - 1]; + if (options && !Array.isArray(options) && options.pipe == null) { + args.pop(); + } else { + options = {}; + } + const doEnd = options.end !== false; + const doPipeError = options.pipeError === true; + if (options.objectMode == null) { + options.objectMode = true; + } + if (options.highWaterMark == null) { + options.highWaterMark = 64 * 1024; + } + const mergedStream = PassThrough(options); + function addStream() { + for (let i = 0, len = arguments.length;i < len; i++) { + streamsQueue.push(pauseStreams(arguments[i], options)); + } + mergeStream(); + return this; + } + function mergeStream() { + if (merging) { + return; + } + merging = true; + let streams = streamsQueue.shift(); + if (!streams) { + process.nextTick(endStream); + return; + } + if (!Array.isArray(streams)) { + streams = [streams]; + } + let pipesCount = streams.length + 1; + function next() { + if (--pipesCount > 0) { + return; + } + merging = false; + mergeStream(); + } + function pipe(stream) { + function onend() { + stream.removeListener("merge2UnpipeEnd", onend); + stream.removeListener("end", onend); + if (doPipeError) { + stream.removeListener("error", onerror); + } + next(); + } + function onerror(err) { + mergedStream.emit("error", err); + } + if (stream._readableState.endEmitted) { + return next(); + } + stream.on("merge2UnpipeEnd", onend); + stream.on("end", onend); + if (doPipeError) { + stream.on("error", onerror); + } + stream.pipe(mergedStream, { end: false }); + stream.resume(); + } + for (let i = 0;i < streams.length; i++) { + pipe(streams[i]); + } + next(); + } + function endStream() { + merging = false; + mergedStream.emit("queueDrain"); + if (doEnd) { + mergedStream.end(); + } + } + mergedStream.setMaxListeners(0); + mergedStream.add = addStream; + mergedStream.on("unpipe", function(stream) { + stream.emit("merge2UnpipeEnd"); + }); + if (args.length) { + addStream.apply(null, args); + } + return mergedStream; + }; + var pauseStreams = function(streams, options) { + if (!Array.isArray(streams)) { + if (!streams._readableState && streams.pipe) { + streams = streams.pipe(PassThrough(options)); + } + if (!streams._readableState || !streams.pause || !streams.pipe) { + throw new Error("Only readable stream can be merged."); + } + streams.pause(); + } else { + for (let i = 0, len = streams.length;i < len; i++) { + streams[i] = pauseStreams(streams[i], options); + } + } + return streams; + }; + var Stream = import.meta.require("stream"); + var PassThrough = Stream.PassThrough; + var slice = Array.prototype.slice; + module.exports = merge2; +}); + +// node_modules/fast-glob/out/utils/stream.js +var require_stream = __commonJS((exports) => { + var merge = function(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once("error", (error2) => mergedStream.emit("error", error2)); + }); + mergedStream.once("close", () => propagateCloseEventToSources(streams)); + mergedStream.once("end", () => propagateCloseEventToSources(streams)); + return mergedStream; + }; + var propagateCloseEventToSources = function(streams) { + streams.forEach((stream) => stream.emit("close")); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.merge = undefined; + var merge2 = require_merge2(); + exports.merge = merge; +}); + +// node_modules/fast-glob/out/utils/string.js +var require_string = __commonJS((exports) => { + var isString = function(input) { + return typeof input === "string"; + }; + var isEmpty = function(input) { + return input === ""; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isEmpty = exports.isString = undefined; + exports.isString = isString; + exports.isEmpty = isEmpty; +}); + +// node_modules/fast-glob/out/utils/index.js +var require_utils5 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = undefined; + var array = require_array(); + exports.array = array; + var errno = require_errno(); + exports.errno = errno; + var fs = require_fs2(); + exports.fs = fs; + var path = require_path(); + exports.path = path; + var pattern = require_pattern(); + exports.pattern = pattern; + var stream = require_stream(); + exports.stream = stream; + var string = require_string(); + exports.string = string; +}); + +// node_modules/fast-glob/out/managers/tasks.js +var require_tasks = __commonJS((exports) => { + var generate = function(input, settings) { + const patterns = processPatterns(input, settings); + const ignore = processPatterns(settings.ignore, settings); + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, true); + return staticTasks.concat(dynamicTasks); + }; + var processPatterns = function(input, settings) { + let patterns = input; + if (settings.braceExpansion) { + patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); + } + if (settings.baseNameMatch) { + patterns = patterns.map((pattern) => pattern.includes("/") ? pattern : `**/${pattern}`); + } + return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); + }; + var convertPatternsToTasks = function(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + if ("." in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask(".", patternsInsideCurrentDirectory, negative, dynamic)); + } else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + } + return tasks; + }; + var getPositivePatterns = function(patterns) { + return utils.pattern.getPositivePatterns(patterns); + }; + var getNegativePatternsAsPositive = function(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; + }; + var groupPatternsByBaseDirectory = function(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } else { + collection[base] = [pattern]; + } + return collection; + }, group); + }; + var convertPatternGroupsToTasks = function(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); + }; + var convertPatternGroupToTask = function(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = undefined; + var utils = require_utils5(); + exports.generate = generate; + exports.convertPatternsToTasks = convertPatternsToTasks; + exports.getPositivePatterns = getPositivePatterns; + exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; + exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; + exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; + exports.convertPatternGroupToTask = convertPatternGroupToTask; +}); + +// node_modules/@nodelib/fs.stat/out/providers/async.js +var require_async = __commonJS((exports) => { + var read = function(path, settings, callback) { + settings.fs.lstat(path, (lstatError, lstat) => { + if (lstatError !== null) { + callFailureCallback(callback, lstatError); + return; + } + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + callSuccessCallback(callback, lstat); + return; + } + settings.fs.stat(path, (statError, stat) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + callFailureCallback(callback, statError); + return; + } + callSuccessCallback(callback, lstat); + return; + } + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + callSuccessCallback(callback, stat); + }); + }); + }; + var callFailureCallback = function(callback, error2) { + callback(error2); + }; + var callSuccessCallback = function(callback, result) { + callback(null, result); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.read = undefined; + exports.read = read; +}); + +// node_modules/@nodelib/fs.stat/out/providers/sync.js +var require_sync = __commonJS((exports) => { + var read = function(path, settings) { + const lstat = settings.fs.lstatSync(path); + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return lstat; + } + try { + const stat = settings.fs.statSync(path); + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + return stat; + } catch (error2) { + if (!settings.throwErrorOnBrokenSymbolicLink) { + return lstat; + } + throw error2; + } + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.read = undefined; + exports.read = read; +}); + +// node_modules/@nodelib/fs.stat/out/adapters/fs.js +var require_fs3 = __commonJS((exports) => { + var createFileSystemAdapter = function(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; + var fs = import.meta.require("fs"); + exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync + }; + exports.createFileSystemAdapter = createFileSystemAdapter; +}); + +// node_modules/@nodelib/fs.stat/out/settings.js +var require_settings = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fs = require_fs3(); + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + } + _getValue(option, value) { + return option !== null && option !== undefined ? option : value; + } + } + exports.default = Settings; +}); + +// node_modules/@nodelib/fs.stat/out/index.js +var require_out = __commonJS((exports) => { + var stat = function(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); + }; + var statSync3 = function(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync2.read(path, settings); + }; + var getSettings = function(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.statSync = exports.stat = exports.Settings = undefined; + var async = require_async(); + var sync2 = require_sync(); + var settings_1 = require_settings(); + exports.Settings = settings_1.default; + exports.stat = stat; + exports.statSync = statSync3; +}); + +// node_modules/queue-microtask/index.js +var require_queue_microtask = __commonJS((exports, module) => { + /*! queue-microtask. MIT License. Feross Aboukhadijeh */ + var promise; + module.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => { + throw err; + }, 0)); +}); + +// node_modules/run-parallel/index.js +var require_run_parallel = __commonJS((exports, module) => { + var runParallel = function(tasks, cb) { + let results, pending, keys; + let isSync = true; + if (Array.isArray(tasks)) { + results = []; + pending = tasks.length; + } else { + keys = Object.keys(tasks); + results = {}; + pending = keys.length; + } + function done(err) { + function end() { + if (cb) + cb(err, results); + cb = null; + } + if (isSync) + queueMicrotask2(end); + else + end(); + } + function each(i, err, result) { + results[i] = result; + if (--pending === 0 || err) { + done(err); + } + } + if (!pending) { + done(null); + } else if (keys) { + keys.forEach(function(key) { + tasks[key](function(err, result) { + each(key, err, result); + }); + }); + } else { + tasks.forEach(function(task, i) { + task(function(err, result) { + each(i, err, result); + }); + }); + } + isSync = false; + }; + /*! run-parallel. MIT License. Feross Aboukhadijeh */ + module.exports = runParallel; + var queueMicrotask2 = require_queue_microtask(); +}); + +// node_modules/@nodelib/fs.scandir/out/constants.js +var require_constants3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = undefined; + var NODE_PROCESS_VERSION_PARTS = process.versions.node.split("."); + if (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) { + throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); + } + var MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); + var MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); + var SUPPORTED_MAJOR_VERSION = 10; + var SUPPORTED_MINOR_VERSION = 10; + var IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; + var IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; + exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; +}); + +// node_modules/@nodelib/fs.scandir/out/utils/fs.js +var require_fs4 = __commonJS((exports) => { + var createDirentFromStats = function(name, stats) { + return new DirentFromStats(name, stats); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createDirentFromStats = undefined; + + class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } + } + exports.createDirentFromStats = createDirentFromStats; +}); + +// node_modules/@nodelib/fs.scandir/out/utils/index.js +var require_utils6 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fs = undefined; + var fs = require_fs4(); + exports.fs = fs; +}); + +// node_modules/@nodelib/fs.scandir/out/providers/common.js +var require_common = __commonJS((exports) => { + var joinPathSegments = function(a, b, separator) { + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.joinPathSegments = undefined; + exports.joinPathSegments = joinPathSegments; +}); + +// node_modules/@nodelib/fs.scandir/out/providers/async.js +var require_async2 = __commonJS((exports) => { + var read = function(directory, settings, callback) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + readdirWithFileTypes(directory, settings, callback); + return; + } + readdir(directory, settings, callback); + }; + var readdirWithFileTypes = function(directory, settings, callback) { + settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const entries = dirents.map((dirent) => ({ + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + })); + if (!settings.followSymbolicLinks) { + callSuccessCallback(callback, entries); + return; + } + const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); + rpl(tasks, (rplError, rplEntries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, rplEntries); + }); + }); + }; + var makeRplTaskEntry = function(entry, settings) { + return (done) => { + if (!entry.dirent.isSymbolicLink()) { + done(null, entry); + return; + } + settings.fs.stat(entry.path, (statError, stats) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + done(statError); + return; + } + done(null, entry); + return; + } + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + done(null, entry); + }); + }; + }; + var readdir = function(directory, settings, callback) { + settings.fs.readdir(directory, (readdirError, names) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const tasks = names.map((name) => { + const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + return (done) => { + fsStat.stat(path, settings.fsStatSettings, (error2, stats) => { + if (error2 !== null) { + done(error2); + return; + } + const entry = { + name, + path, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + done(null, entry); + }); + }; + }); + rpl(tasks, (rplError, entries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, entries); + }); + }); + }; + var callFailureCallback = function(callback, error2) { + callback(error2); + }; + var callSuccessCallback = function(callback, result) { + callback(null, result); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; + var fsStat = require_out(); + var rpl = require_run_parallel(); + var constants_1 = require_constants3(); + var utils = require_utils6(); + var common = require_common(); + exports.read = read; + exports.readdirWithFileTypes = readdirWithFileTypes; + exports.readdir = readdir; +}); + +// node_modules/@nodelib/fs.scandir/out/providers/sync.js +var require_sync2 = __commonJS((exports) => { + var read = function(directory, settings) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings); + } + return readdir(directory, settings); + }; + var readdirWithFileTypes = function(directory, settings) { + const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); + return dirents.map((dirent) => { + const entry = { + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + }; + if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { + try { + const stats = settings.fs.statSync(entry.path); + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + } catch (error2) { + if (settings.throwErrorOnBrokenSymbolicLink) { + throw error2; + } + } + } + return entry; + }); + }; + var readdir = function(directory, settings) { + const names = settings.fs.readdirSync(directory); + return names.map((name) => { + const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + const stats = fsStat.statSync(entryPath, settings.fsStatSettings); + const entry = { + name, + path: entryPath, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + return entry; + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; + var fsStat = require_out(); + var constants_1 = require_constants3(); + var utils = require_utils6(); + var common = require_common(); + exports.read = read; + exports.readdirWithFileTypes = readdirWithFileTypes; + exports.readdir = readdir; +}); + +// node_modules/@nodelib/fs.scandir/out/adapters/fs.js +var require_fs5 = __commonJS((exports) => { + var createFileSystemAdapter = function(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; + var fs = import.meta.require("fs"); + exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync + }; + exports.createFileSystemAdapter = createFileSystemAdapter; +}); + +// node_modules/@nodelib/fs.scandir/out/settings.js +var require_settings2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = import.meta.require("path"); + var fsStat = require_out(); + var fs = require_fs5(); + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.stats = this._getValue(this._options.stats, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + this.fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this.followSymbolicLinks, + fs: this.fs, + throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== undefined ? option : value; + } + } + exports.default = Settings; +}); + +// node_modules/@nodelib/fs.scandir/out/index.js +var require_out2 = __commonJS((exports) => { + var scandir = function(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); + }; + var scandirSync = function(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync2.read(path, settings); + }; + var getSettings = function(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Settings = exports.scandirSync = exports.scandir = undefined; + var async = require_async2(); + var sync2 = require_sync2(); + var settings_1 = require_settings2(); + exports.Settings = settings_1.default; + exports.scandir = scandir; + exports.scandirSync = scandirSync; +}); + +// node_modules/reusify/reusify.js +var require_reusify = __commonJS((exports, module) => { + var reusify = function(Constructor) { + var head = new Constructor; + var tail = head; + function get() { + var current = head; + if (current.next) { + head = current.next; + } else { + head = new Constructor; + tail = head; + } + current.next = null; + return current; + } + function release(obj) { + tail.next = obj; + tail = obj; + } + return { + get, + release + }; + }; + module.exports = reusify; +}); + +// node_modules/fastq/queue.js +var require_queue = __commonJS((exports, module) => { + var fastqueue = function(context, worker, concurrency) { + if (typeof context === "function") { + concurrency = worker; + worker = context; + context = null; + } + if (concurrency < 1) { + throw new Error("fastqueue concurrency must be greater than 1"); + } + var cache = reusify(Task); + var queueHead = null; + var queueTail = null; + var _running = 0; + var errorHandler = null; + var self = { + push, + drain: noop, + saturated: noop, + pause, + paused: false, + concurrency, + running, + resume, + idle, + length, + getQueue, + unshift, + empty: noop, + kill: kill2, + killAndDrain, + error: error2 + }; + return self; + function running() { + return _running; + } + function pause() { + self.paused = true; + } + function length() { + var current = queueHead; + var counter = 0; + while (current) { + current = current.next; + counter++; + } + return counter; + } + function getQueue() { + var current = queueHead; + var tasks = []; + while (current) { + tasks.push(current.value); + current = current.next; + } + return tasks; + } + function resume() { + if (!self.paused) + return; + self.paused = false; + for (var i = 0;i < self.concurrency; i++) { + _running++; + release(); + } + } + function idle() { + return _running === 0 && self.length() === 0; + } + function push(value, done) { + var current = cache.get(); + current.context = context; + current.release = release; + current.value = value; + current.callback = done || noop; + current.errorHandler = errorHandler; + if (_running === self.concurrency || self.paused) { + if (queueTail) { + queueTail.next = current; + queueTail = current; + } else { + queueHead = current; + queueTail = current; + self.saturated(); + } + } else { + _running++; + worker.call(context, current.value, current.worked); + } + } + function unshift(value, done) { + var current = cache.get(); + current.context = context; + current.release = release; + current.value = value; + current.callback = done || noop; + if (_running === self.concurrency || self.paused) { + if (queueHead) { + current.next = queueHead; + queueHead = current; + } else { + queueHead = current; + queueTail = current; + self.saturated(); + } + } else { + _running++; + worker.call(context, current.value, current.worked); + } + } + function release(holder) { + if (holder) { + cache.release(holder); + } + var next = queueHead; + if (next) { + if (!self.paused) { + if (queueTail === queueHead) { + queueTail = null; + } + queueHead = next.next; + next.next = null; + worker.call(context, next.value, next.worked); + if (queueTail === null) { + self.empty(); + } + } else { + _running--; + } + } else if (--_running === 0) { + self.drain(); + } + } + function kill2() { + queueHead = null; + queueTail = null; + self.drain = noop; + } + function killAndDrain() { + queueHead = null; + queueTail = null; + self.drain(); + self.drain = noop; + } + function error2(handler) { + errorHandler = handler; + } + }; + var noop = function() { + }; + var Task = function() { + this.value = null; + this.callback = noop; + this.next = null; + this.release = noop; + this.context = null; + this.errorHandler = null; + var self = this; + this.worked = function worked(err, result) { + var callback = self.callback; + var errorHandler = self.errorHandler; + var val = self.value; + self.value = null; + self.callback = noop; + if (self.errorHandler) { + errorHandler(err, val); + } + callback.call(self.context, err, result); + self.release(self); + }; + }; + var queueAsPromised = function(context, worker, concurrency) { + if (typeof context === "function") { + concurrency = worker; + worker = context; + context = null; + } + function asyncWrapper(arg, cb) { + worker.call(this, arg).then(function(res) { + cb(null, res); + }, cb); + } + var queue = fastqueue(context, asyncWrapper, concurrency); + var pushCb = queue.push; + var unshiftCb = queue.unshift; + queue.push = push; + queue.unshift = unshift; + queue.drained = drained; + return queue; + function push(value) { + var p = new Promise(function(resolve5, reject) { + pushCb(value, function(err, result) { + if (err) { + reject(err); + return; + } + resolve5(result); + }); + }); + p.catch(noop); + return p; + } + function unshift(value) { + var p = new Promise(function(resolve5, reject) { + unshiftCb(value, function(err, result) { + if (err) { + reject(err); + return; + } + resolve5(result); + }); + }); + p.catch(noop); + return p; + } + function drained() { + if (queue.idle()) { + return new Promise(function(resolve5) { + resolve5(); + }); + } + var previousDrain = queue.drain; + var p = new Promise(function(resolve5) { + queue.drain = function() { + previousDrain(); + resolve5(); + }; + }); + return p; + } + }; + var reusify = require_reusify(); + module.exports = fastqueue; + module.exports.promise = queueAsPromised; +}); + +// node_modules/@nodelib/fs.walk/out/readers/common.js +var require_common2 = __commonJS((exports) => { + var isFatalError = function(settings, error2) { + if (settings.errorFilter === null) { + return true; + } + return !settings.errorFilter(error2); + }; + var isAppliedFilter = function(filter, value) { + return filter === null || filter(value); + }; + var replacePathSegmentSeparator = function(filepath, separator) { + return filepath.split(/[/\\]/).join(separator); + }; + var joinPathSegments = function(a, b, separator) { + if (a === "") { + return b; + } + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = undefined; + exports.isFatalError = isFatalError; + exports.isAppliedFilter = isAppliedFilter; + exports.replacePathSegmentSeparator = replacePathSegmentSeparator; + exports.joinPathSegments = joinPathSegments; +}); + +// node_modules/@nodelib/fs.walk/out/readers/reader.js +var require_reader = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var common = require_common2(); + + class Reader { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); + } + } + exports.default = Reader; +}); + +// node_modules/@nodelib/fs.walk/out/readers/async.js +var require_async3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var events_1 = import.meta.require("events"); + var fsScandir = require_out2(); + var fastq = require_queue(); + var common = require_common2(); + var reader_1 = require_reader(); + + class AsyncReader extends reader_1.default { + constructor(_root, _settings) { + super(_root, _settings); + this._settings = _settings; + this._scandir = fsScandir.scandir; + this._emitter = new events_1.EventEmitter; + this._queue = fastq(this._worker.bind(this), this._settings.concurrency); + this._isFatalError = false; + this._isDestroyed = false; + this._queue.drain = () => { + if (!this._isFatalError) { + this._emitter.emit("end"); + } + }; + } + read() { + this._isFatalError = false; + this._isDestroyed = false; + setImmediate(() => { + this._pushToQueue(this._root, this._settings.basePath); + }); + return this._emitter; + } + get isDestroyed() { + return this._isDestroyed; + } + destroy() { + if (this._isDestroyed) { + throw new Error("The reader is already destroyed"); + } + this._isDestroyed = true; + this._queue.killAndDrain(); + } + onEntry(callback) { + this._emitter.on("entry", callback); + } + onError(callback) { + this._emitter.once("error", callback); + } + onEnd(callback) { + this._emitter.once("end", callback); + } + _pushToQueue(directory, base) { + const queueItem = { directory, base }; + this._queue.push(queueItem, (error2) => { + if (error2 !== null) { + this._handleError(error2); + } + }); + } + _worker(item, done) { + this._scandir(item.directory, this._settings.fsScandirSettings, (error2, entries) => { + if (error2 !== null) { + done(error2, undefined); + return; + } + for (const entry of entries) { + this._handleEntry(entry, item.base); + } + done(null, undefined); + }); + } + _handleError(error2) { + if (this._isDestroyed || !common.isFatalError(this._settings, error2)) { + return; + } + this._isFatalError = true; + this._isDestroyed = true; + this._emitter.emit("error", error2); + } + _handleEntry(entry, base) { + if (this._isDestroyed || this._isFatalError) { + return; + } + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._emitEntry(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _emitEntry(entry) { + this._emitter.emit("entry", entry); + } + } + exports.default = AsyncReader; +}); + +// node_modules/@nodelib/fs.walk/out/providers/async.js +var require_async4 = __commonJS((exports) => { + var callFailureCallback = function(callback, error2) { + callback(error2); + }; + var callSuccessCallback = function(callback, entries) { + callback(null, entries); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + var async_1 = require_async3(); + + class AsyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._storage = []; + } + read(callback) { + this._reader.onError((error2) => { + callFailureCallback(callback, error2); + }); + this._reader.onEntry((entry) => { + this._storage.push(entry); + }); + this._reader.onEnd(() => { + callSuccessCallback(callback, this._storage); + }); + this._reader.read(); + } + } + exports.default = AsyncProvider; +}); + +// node_modules/@nodelib/fs.walk/out/providers/stream.js +var require_stream2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var stream_1 = import.meta.require("stream"); + var async_1 = require_async3(); + + class StreamProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._stream = new stream_1.Readable({ + objectMode: true, + read: () => { + }, + destroy: () => { + if (!this._reader.isDestroyed) { + this._reader.destroy(); + } + } + }); + } + read() { + this._reader.onError((error2) => { + this._stream.emit("error", error2); + }); + this._reader.onEntry((entry) => { + this._stream.push(entry); + }); + this._reader.onEnd(() => { + this._stream.push(null); + }); + this._reader.read(); + return this._stream; + } + } + exports.default = StreamProvider; +}); + +// node_modules/@nodelib/fs.walk/out/readers/sync.js +var require_sync3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fsScandir = require_out2(); + var common = require_common2(); + var reader_1 = require_reader(); + + class SyncReader extends reader_1.default { + constructor() { + super(...arguments); + this._scandir = fsScandir.scandirSync; + this._storage = []; + this._queue = new Set; + } + read() { + this._pushToQueue(this._root, this._settings.basePath); + this._handleQueue(); + return this._storage; + } + _pushToQueue(directory, base) { + this._queue.add({ directory, base }); + } + _handleQueue() { + for (const item of this._queue.values()) { + this._handleDirectory(item.directory, item.base); + } + } + _handleDirectory(directory, base) { + try { + const entries = this._scandir(directory, this._settings.fsScandirSettings); + for (const entry of entries) { + this._handleEntry(entry, base); + } + } catch (error2) { + this._handleError(error2); + } + } + _handleError(error2) { + if (!common.isFatalError(this._settings, error2)) { + return; + } + throw error2; + } + _handleEntry(entry, base) { + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._pushToStorage(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _pushToStorage(entry) { + this._storage.push(entry); + } + } + exports.default = SyncReader; +}); + +// node_modules/@nodelib/fs.walk/out/providers/sync.js +var require_sync4 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var sync_1 = require_sync3(); + + class SyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new sync_1.default(this._root, this._settings); + } + read() { + return this._reader.read(); + } + } + exports.default = SyncProvider; +}); + +// node_modules/@nodelib/fs.walk/out/settings.js +var require_settings3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = import.meta.require("path"); + var fsScandir = require_out2(); + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.basePath = this._getValue(this._options.basePath, undefined); + this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); + this.deepFilter = this._getValue(this._options.deepFilter, null); + this.entryFilter = this._getValue(this._options.entryFilter, null); + this.errorFilter = this._getValue(this._options.errorFilter, null); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.fsScandirSettings = new fsScandir.Settings({ + followSymbolicLinks: this._options.followSymbolicLinks, + fs: this._options.fs, + pathSegmentSeparator: this._options.pathSegmentSeparator, + stats: this._options.stats, + throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== undefined ? option : value; + } + } + exports.default = Settings; +}); + +// node_modules/@nodelib/fs.walk/out/index.js +var require_out3 = __commonJS((exports) => { + var walk = function(directory, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); + return; + } + new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); + }; + var walkSync = function(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new sync_1.default(directory, settings); + return provider.read(); + }; + var walkStream = function(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new stream_1.default(directory, settings); + return provider.read(); + }; + var getSettings = function(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Settings = exports.walkStream = exports.walkSync = exports.walk = undefined; + var async_1 = require_async4(); + var stream_1 = require_stream2(); + var sync_1 = require_sync4(); + var settings_1 = require_settings3(); + exports.Settings = settings_1.default; + exports.walk = walk; + exports.walkSync = walkSync; + exports.walkStream = walkStream; +}); + +// node_modules/fast-glob/out/readers/reader.js +var require_reader2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = import.meta.require("path"); + var fsStat = require_out(); + var utils = require_utils5(); + + class Reader { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error2) { + return !utils.errno.isEnoentCodeError(error2) && !this._settings.suppressErrors; + } + } + exports.default = Reader; +}); + +// node_modules/fast-glob/out/readers/stream.js +var require_stream3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var stream_1 = import.meta.require("stream"); + var fsStat = require_out(); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + + class ReaderStream extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ objectMode: true }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options).then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }).catch(done); + }; + for (let i = 0;i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath).then((stats) => this._makeEntry(stats, pattern)).catch((error2) => { + if (options.errorFilter(error2)) { + return null; + } + throw error2; + }); + } + _getStat(filepath) { + return new Promise((resolve5, reject) => { + this._stat(filepath, this._fsStatSettings, (error2, stats) => { + return error2 === null ? resolve5(stats) : reject(error2); + }); + }); + } + } + exports.default = ReaderStream; +}); + +// node_modules/fast-glob/out/readers/async.js +var require_async5 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + var stream_1 = require_stream3(); + + class ReaderAsync extends reader_1.default { + constructor() { + super(...arguments); + this._walkAsync = fsWalk.walk; + this._readerStream = new stream_1.default(this._settings); + } + dynamic(root, options) { + return new Promise((resolve5, reject) => { + this._walkAsync(root, options, (error2, entries) => { + if (error2 === null) { + resolve5(entries); + } else { + reject(error2); + } + }); + }); + } + async static(patterns, options) { + const entries = []; + const stream = this._readerStream.static(patterns, options); + return new Promise((resolve5, reject) => { + stream.once("error", reject); + stream.on("data", (entry) => entries.push(entry)); + stream.once("end", () => resolve5(entries)); + }); + } + } + exports.default = ReaderAsync; +}); + +// node_modules/fast-glob/out/providers/matchers/matcher.js +var require_matcher = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class Matcher { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); + } + _fillStorage() { + for (const pattern of this._patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); + } + } + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); + } + } + exports.default = Matcher; +}); + +// node_modules/fast-glob/out/providers/matchers/partial.js +var require_partial = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var matcher_1 = require_matcher(); + + class PartialMatcher extends matcher_1.default { + match(filepath) { + const parts = filepath.split("/"); + const levels = parts.length; + const patterns = this._storage.filter((info2) => !info2.complete || info2.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } + } + exports.default = PartialMatcher; +}); + +// node_modules/fast-glob/out/providers/filters/deep.js +var require_deep = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + var partial_1 = require_partial(); + + class DeepFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + } + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); + } + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; + } + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); + } + _isSkippedByDeep(basePath, entryPath) { + if (this._settings.deep === Infinity) { + return false; + } + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split("/").length; + if (basePath === "") { + return entryPathDepth; + } + const basePathDepth = basePath.split("/").length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } + } + exports.default = DeepFilter; +}); + +// node_modules/fast-glob/out/providers/filters/entry.js +var require_entry = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class EntryFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = new Map; + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._settings.unique && this._isDuplicateEntry(filepath)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) { + return false; + } + const isDirectory = entry.dirent.isDirectory(); + const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory); + if (this._settings.unique && isMatched) { + this._createIndexRecord(filepath); + } + return isMatched; + } + _isDuplicateEntry(filepath) { + return this.index.has(filepath); + } + _createIndexRecord(filepath) { + this.index.set(filepath, undefined); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(filepath, patternsRe, isDirectory) { + const isMatched = utils.pattern.matchAny(filepath, patternsRe); + if (!isMatched && isDirectory) { + return utils.pattern.matchAny(filepath + "/", patternsRe); + } + return isMatched; + } + } + exports.default = EntryFilter; +}); + +// node_modules/fast-glob/out/providers/filters/error.js +var require_error = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class ErrorFilter { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error2) => this._isNonFatalError(error2); + } + _isNonFatalError(error2) { + return utils.errno.isEnoentCodeError(error2) || this._settings.suppressErrors; + } + } + exports.default = ErrorFilter; +}); + +// node_modules/fast-glob/out/providers/transformers/entry.js +var require_entry2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class EntryTransformer { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += "/"; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { path: filepath }); + } + } + exports.default = EntryTransformer; +}); + +// node_modules/fast-glob/out/providers/provider.js +var require_provider = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = import.meta.require("path"); + var deep_1 = require_deep(); + var entry_1 = require_entry(); + var error_1 = require_error(); + var entry_2 = require_entry2(); + + class Provider { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === "." ? "" : task.base; + return { + basePath, + pathSegmentSeparator: "/", + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; + } + } + exports.default = Provider; +}); + +// node_modules/fast-glob/out/providers/async.js +var require_async6 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var async_1 = require_async5(); + var provider_1 = require_provider(); + + class ProviderAsync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new async_1.default(this._settings); + } + async read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = await this.api(root, task, options); + return entries.map((entry) => options.transform(entry)); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + } + exports.default = ProviderAsync; +}); + +// node_modules/fast-glob/out/providers/stream.js +var require_stream4 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var stream_1 = import.meta.require("stream"); + var stream_2 = require_stream3(); + var provider_1 = require_provider(); + + class ProviderStream extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ objectMode: true, read: () => { + } }); + source.once("error", (error2) => destination.emit("error", error2)).on("data", (entry) => destination.emit("data", options.transform(entry))).once("end", () => destination.emit("end")); + destination.once("close", () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + } + exports.default = ProviderStream; +}); + +// node_modules/fast-glob/out/readers/sync.js +var require_sync5 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fsStat = require_out(); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + + class ReaderSync extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } catch (error2) { + if (options.errorFilter(error2)) { + return null; + } + throw error2; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } + } + exports.default = ReaderSync; +}); + +// node_modules/fast-glob/out/providers/sync.js +var require_sync6 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var sync_1 = require_sync5(); + var provider_1 = require_provider(); + + class ProviderSync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + } + exports.default = ProviderSync; +}); + +// node_modules/fast-glob/out/settings.js +var require_settings4 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DEFAULT_FILE_SYSTEM_ADAPTER = undefined; + var fs = import.meta.require("fs"); + var os = import.meta.require("os"); + var CPU_COUNT = Math.max(os.cpus().length, 1); + exports.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + lstatSync: fs.lstatSync, + stat: fs.stat, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync + }; + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + this.ignore = [].concat(this.ignore); + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } + } + exports.default = Settings; +}); + +// node_modules/fast-glob/out/index.js +var require_out4 = __commonJS((exports, module) => { + async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); + } + var getWorks = function(source, _Provider, options) { + const patterns = [].concat(source); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); + }; + var assertPatternsInput = function(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError("Patterns must be a string (non empty) or an array of strings"); + } + }; + var taskManager = require_tasks(); + var async_1 = require_async6(); + var stream_1 = require_stream4(); + var sync_1 = require_sync6(); + var settings_1 = require_settings4(); + var utils = require_utils5(); + (function(FastGlob2) { + FastGlob2.glob = FastGlob2; + FastGlob2.globSync = sync2; + FastGlob2.globStream = stream; + FastGlob2.async = FastGlob2; + function sync2(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob2.sync = sync2; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + return utils.stream.merge(works); + } + FastGlob2.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = [].concat(source); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob2.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob2.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob2.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertPathToPattern(source); + } + FastGlob2.convertPathToPattern = convertPathToPattern; + let posix; + (function(posix2) { + function escapePath2(source) { + assertPatternsInput(source); + return utils.path.escapePosixPath(source); + } + posix2.escapePath = escapePath2; + function convertPathToPattern2(source) { + assertPatternsInput(source); + return utils.path.convertPosixPathToPattern(source); + } + posix2.convertPathToPattern = convertPathToPattern2; + })(posix = FastGlob2.posix || (FastGlob2.posix = {})); + let win32; + (function(win322) { + function escapePath2(source) { + assertPatternsInput(source); + return utils.path.escapeWindowsPath(source); + } + win322.escapePath = escapePath2; + function convertPathToPattern2(source) { + assertPatternsInput(source); + return utils.path.convertWindowsPathToPattern(source); + } + win322.convertPathToPattern = convertPathToPattern2; + })(win32 = FastGlob2.win32 || (FastGlob2.win32 = {})); + })(FastGlob || (FastGlob = {})); + module.exports = FastGlob; +}); + +// node_modules/fs.realpath/old.js +var require_old = __commonJS((exports) => { + var rethrow = function() { + var callback; + if (DEBUG) { + var backtrace = new Error; + callback = debugCallback; + } else + callback = missingCallback; + return callback; + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; + else if (!process.noDeprecation) { + var msg = "fs: missing callback " + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } + }; + var maybeCallback = function(cb) { + return typeof cb === "function" ? cb : rethrow(); + }; + var pathModule = import.meta.require("path"); + var isWindows = process.platform === "win32"; + var fs = import.meta.require("fs"); + var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); + var normalize2 = pathModule.normalize; + if (isWindows) { + nextPartRe = /(.*?)(?:[\/\\]+|$)/g; + } else { + nextPartRe = /(.*?)(?:[\/]+|$)/g; + } + var nextPartRe; + if (isWindows) { + splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; + } else { + splitRootRe = /^[\/]*/; + } + var splitRootRe; + exports.realpathSync = function realpathSync(p, cache) { + p = pathModule.resolve(p); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } + var original = p, seenLinks = {}, knownHard = {}; + var pos; + var current; + var base; + var previous; + start(); + function start() { + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ""; + if (isWindows && !knownHard[base]) { + fs.lstatSync(base); + knownHard[base] = true; + } + } + while (pos < p.length) { + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + if (knownHard[base] || cache && cache[base] === base) { + continue; + } + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + resolvedLink = cache[base]; + } else { + var stat = fs.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) + cache[base] = base; + continue; + } + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs.statSync(base); + linkTarget = fs.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + if (cache) + cache[base] = resolvedLink; + if (!isWindows) + seenLinks[id] = linkTarget; + } + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + if (cache) + cache[original] = p; + return p; + }; + exports.realpath = function realpath(p, cache, cb) { + if (typeof cb !== "function") { + cb = maybeCallback(cache); + cache = null; + } + p = pathModule.resolve(p); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } + var original = p, seenLinks = {}, knownHard = {}; + var pos; + var current; + var base; + var previous; + start(); + function start() { + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ""; + if (isWindows && !knownHard[base]) { + fs.lstat(base, function(err) { + if (err) + return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } + function LOOP() { + if (pos >= p.length) { + if (cache) + cache[original] = p; + return cb(null, p); + } + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + if (knownHard[base] || cache && cache[base] === base) { + return process.nextTick(LOOP); + } + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + return gotResolvedLink(cache[base]); + } + return fs.lstat(base, gotStat); + } + function gotStat(err, stat) { + if (err) + return cb(err); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) + cache[base] = base; + return process.nextTick(LOOP); + } + if (!isWindows) { + var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs.stat(base, function(err2) { + if (err2) + return cb(err2); + fs.readlink(base, function(err3, target) { + if (!isWindows) + seenLinks[id] = target; + gotTarget(err3, target); + }); + }); + } + function gotTarget(err, target, base2) { + if (err) + return cb(err); + var resolvedLink = pathModule.resolve(previous, target); + if (cache) + cache[base2] = resolvedLink; + gotResolvedLink(resolvedLink); + } + function gotResolvedLink(resolvedLink) { + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + }; +}); + +// node_modules/fs.realpath/index.js +var require_fs6 = __commonJS((exports, module) => { + var newError = function(er) { + return er && er.syscall === "realpath" && (er.code === "ELOOP" || er.code === "ENOMEM" || er.code === "ENAMETOOLONG"); + }; + var realpath = function(p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb); + } + if (typeof cache === "function") { + cb = cache; + cache = null; + } + origRealpath(p, cache, function(er, result) { + if (newError(er)) { + old.realpath(p, cache, cb); + } else { + cb(er, result); + } + }); + }; + var realpathSync = function(p, cache) { + if (ok) { + return origRealpathSync(p, cache); + } + try { + return origRealpathSync(p, cache); + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache); + } else { + throw er; + } + } + }; + var monkeypatch = function() { + fs.realpath = realpath; + fs.realpathSync = realpathSync; + }; + var unmonkeypatch = function() { + fs.realpath = origRealpath; + fs.realpathSync = origRealpathSync; + }; + module.exports = realpath; + realpath.realpath = realpath; + realpath.sync = realpathSync; + realpath.realpathSync = realpathSync; + realpath.monkeypatch = monkeypatch; + realpath.unmonkeypatch = unmonkeypatch; + var fs = import.meta.require("fs"); + var origRealpath = fs.realpath; + var origRealpathSync = fs.realpathSync; + var version = process.version; + var ok = /^v[0-5]\./.test(version); + var old = require_old(); +}); + +// node_modules/concat-map/index.js +var require_concat_map = __commonJS((exports, module) => { + module.exports = function(xs, fn) { + var res = []; + for (var i = 0;i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) + res.push.apply(res, x); + else + res.push(x); + } + return res; + }; + var isArray = Array.isArray || function(xs) { + return Object.prototype.toString.call(xs) === "[object Array]"; + }; +}); + +// node_modules/balanced-match/index.js +var require_balanced_match = __commonJS((exports, module) => { + var balanced = function(a, b, str) { + if (a instanceof RegExp) + a = maybeMatch(a, str); + if (b instanceof RegExp) + b = maybeMatch(b, str); + var r = range(a, b, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; + }; + var maybeMatch = function(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; + }; + var range = function(a, b, str) { + var begs, beg, left2, right2, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left2 = str.length; + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [begs.pop(), bi]; + } else { + beg = begs.pop(); + if (beg < left2) { + left2 = beg; + right2 = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length) { + result = [left2, right2]; + } + } + return result; + }; + module.exports = balanced; + balanced.range = range; +}); + +// node_modules/minimatch/node_modules/brace-expansion/index.js +var require_brace_expansion = __commonJS((exports, module) => { + var numeric = function(str) { + return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); + }; + var escapeBraces = function(str) { + return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); + }; + var unescapeBraces = function(str) { + return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); + }; + var parseCommaParts = function(str) { + if (!str) + return [""]; + var parts = []; + var m = balanced("{", "}", str); + if (!m) + return str.split(","); + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(","); + p[p.length - 1] += "{" + body + "}"; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; + }; + var expandTop = function(str) { + if (!str) + return []; + if (str.substr(0, 2) === "{}") { + str = "\\{\\}" + str.substr(2); + } + return expand(escapeBraces(str), true).map(unescapeBraces); + }; + var embrace = function(str) { + return "{" + str + "}"; + }; + var isPadded = function(el) { + return /^-?0\d/.test(el); + }; + var lte = function(i, y) { + return i <= y; + }; + var gte = function(i, y) { + return i >= y; + }; + var expand = function(str, isTop) { + var expansions = []; + var m = balanced("{", "}", str); + if (!m || /\$$/.test(m.pre)) + return [str]; + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(",") >= 0; + if (!isSequence && !isOptions) { + if (m.post.match(/,.*\}/)) { + str = m.pre + "{" + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length ? expand(m.post, false) : [""]; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + var pre = m.pre; + var post = m.post.length ? expand(m.post, false) : [""]; + var N; + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + N = []; + for (var i = x;test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === "\\") + c = ""; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join("0"); + if (i < 0) + c = "-" + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { + return expand(el, false); + }); + } + for (var j = 0;j < N.length; j++) { + for (var k = 0;k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + return expansions; + }; + var concatMap = require_concat_map(); + var balanced = require_balanced_match(); + module.exports = expandTop; + var escSlash = "\0SLASH" + Math.random() + "\0"; + var escOpen = "\0OPEN" + Math.random() + "\0"; + var escClose = "\0CLOSE" + Math.random() + "\0"; + var escComma = "\0COMMA" + Math.random() + "\0"; + var escPeriod = "\0PERIOD" + Math.random() + "\0"; +}); + +// node_modules/minimatch/minimatch.js +var require_minimatch = __commonJS((exports, module) => { + var charSet = function(s) { + return s.split("").reduce(function(set, c) { + set[c] = true; + return set; + }, {}); + }; + var filter = function(pattern, options) { + options = options || {}; + return function(p, i, list) { + return minimatch(p, pattern, options); + }; + }; + var ext = function(a, b) { + b = b || {}; + var t = {}; + Object.keys(a).forEach(function(k) { + t[k] = a[k]; + }); + Object.keys(b).forEach(function(k) { + t[k] = b[k]; + }); + return t; + }; + var minimatch = function(p, pattern, options) { + assertValidPattern(pattern); + if (!options) + options = {}; + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + return new Minimatch(pattern, options).match(p); + }; + var Minimatch = function(pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options); + } + assertValidPattern(pattern); + if (!options) + options = {}; + pattern = pattern.trim(); + if (!options.allowWindowsEscape && path.sep !== "/") { + pattern = pattern.split(path.sep).join("/"); + } + this.options = options; + this.set = []; + this.pattern = pattern; + this.regexp = null; + this.negate = false; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.make(); + }; + var make = function() { + var pattern = this.pattern; + var options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + var set = this.globSet = this.braceExpand(); + if (options.debug) + this.debug = function debug() { + console.error.apply(console, arguments); + }; + this.debug(this.pattern, set); + set = this.globParts = set.map(function(s) { + return s.split(slashSplit); + }); + this.debug(this.pattern, set); + set = set.map(function(s, si, set2) { + return s.map(this.parse, this); + }, this); + this.debug(this.pattern, set); + set = set.filter(function(s) { + return s.indexOf(false) === -1; + }); + this.debug(this.pattern, set); + this.set = set; + }; + var parseNegate = function() { + var pattern = this.pattern; + var negate = false; + var options = this.options; + var negateOffset = 0; + if (options.nonegate) + return; + for (var i = 0, l = pattern.length;i < l && pattern.charAt(i) === "!"; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.substr(negateOffset); + this.negate = negate; + }; + var braceExpand = function(pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options; + } else { + options = {}; + } + } + pattern = typeof pattern === "undefined" ? this.pattern : pattern; + assertValidPattern(pattern); + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + return [pattern]; + } + return expand(pattern); + }; + var parse = function(pattern, isSub) { + assertValidPattern(pattern); + var options = this.options; + if (pattern === "**") { + if (!options.noglobstar) + return GLOBSTAR; + else + pattern = "*"; + } + if (pattern === "") + return ""; + var re = ""; + var hasMagic = !!options.nocase; + var escaping = false; + var patternListStack = []; + var negativeLists = []; + var stateChar; + var inClass = false; + var reClassStart = -1; + var classStart = -1; + var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; + var self = this; + function clearStateChar() { + if (stateChar) { + switch (stateChar) { + case "*": + re += star; + hasMagic = true; + break; + case "?": + re += qmark; + hasMagic = true; + break; + default: + re += "\\" + stateChar; + break; + } + self.debug("clearStateChar %j %j", stateChar, re); + stateChar = false; + } + } + for (var i = 0, len = pattern.length, c;i < len && (c = pattern.charAt(i)); i++) { + this.debug("%s\t%s %s %j", pattern, i, re, c); + if (escaping && reSpecials[c]) { + re += "\\" + c; + escaping = false; + continue; + } + switch (c) { + case "/": { + return false; + } + case "\\": + clearStateChar(); + escaping = true; + continue; + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c); + if (inClass) { + this.debug(" in class"); + if (c === "!" && i === classStart + 1) + c = "^"; + re += c; + continue; + } + self.debug("call clearStateChar %j", stateChar); + clearStateChar(); + stateChar = c; + if (options.noext) + clearStateChar(); + continue; + case "(": + if (inClass) { + re += "("; + continue; + } + if (!stateChar) { + re += "\\("; + continue; + } + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }); + re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; + this.debug("plType %j %j", stateChar, re); + stateChar = false; + continue; + case ")": + if (inClass || !patternListStack.length) { + re += "\\)"; + continue; + } + clearStateChar(); + hasMagic = true; + var pl = patternListStack.pop(); + re += pl.close; + if (pl.type === "!") { + negativeLists.push(pl); + } + pl.reEnd = re.length; + continue; + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|"; + escaping = false; + continue; + } + clearStateChar(); + re += "|"; + continue; + case "[": + clearStateChar(); + if (inClass) { + re += "\\" + c; + continue; + } + inClass = true; + classStart = i; + reClassStart = re.length; + re += c; + continue; + case "]": + if (i === classStart + 1 || !inClass) { + re += "\\" + c; + escaping = false; + continue; + } + var cs = pattern.substring(classStart + 1, i); + try { + RegExp("[" + cs + "]"); + } catch (er) { + var sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; + hasMagic = hasMagic || sp[1]; + inClass = false; + continue; + } + hasMagic = true; + inClass = false; + re += c; + continue; + default: + clearStateChar(); + if (escaping) { + escaping = false; + } else if (reSpecials[c] && !(c === "^" && inClass)) { + re += "\\"; + } + re += c; + } + } + if (inClass) { + cs = pattern.substr(classStart + 1); + sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0]; + hasMagic = hasMagic || sp[1]; + } + for (pl = patternListStack.pop();pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length); + this.debug("setting tail", re, pl); + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { + if (!$2) { + $2 = "\\"; + } + return $1 + $1 + $2 + "|"; + }); + this.debug("tail=%j\n %s", tail, tail, pl, re); + var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; + hasMagic = true; + re = re.slice(0, pl.reStart) + t + "\\(" + tail; + } + clearStateChar(); + if (escaping) { + re += "\\\\"; + } + var addPatternStart = false; + switch (re.charAt(0)) { + case "[": + case ".": + case "(": + addPatternStart = true; + } + for (var n = negativeLists.length - 1;n > -1; n--) { + var nl = negativeLists[n]; + var nlBefore = re.slice(0, nl.reStart); + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); + var nlAfter = re.slice(nl.reEnd); + nlLast += nlAfter; + var openParensBefore = nlBefore.split("(").length - 1; + var cleanAfter = nlAfter; + for (i = 0;i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); + } + nlAfter = cleanAfter; + var dollar = ""; + if (nlAfter === "" && isSub !== SUBPARSE) { + dollar = "$"; + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; + re = newRe; + } + if (re !== "" && hasMagic) { + re = "(?=.)" + re; + } + if (addPatternStart) { + re = patternStart + re; + } + if (isSub === SUBPARSE) { + return [re, hasMagic]; + } + if (!hasMagic) { + return globUnescape(pattern); + } + var flags = options.nocase ? "i" : ""; + try { + var regExp = new RegExp("^" + re + "$", flags); + } catch (er) { + return new RegExp("$."); + } + regExp._glob = pattern; + regExp._src = re; + return regExp; + }; + var makeRe = function() { + if (this.regexp || this.regexp === false) + return this.regexp; + var set = this.set; + if (!set.length) { + this.regexp = false; + return this.regexp; + } + var options = this.options; + var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; + var flags = options.nocase ? "i" : ""; + var re = set.map(function(pattern) { + return pattern.map(function(p) { + return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; + }).join("\\/"); + }).join("|"); + re = "^(?:" + re + ")$"; + if (this.negate) + re = "^(?!" + re + ").*$"; + try { + this.regexp = new RegExp(re, flags); + } catch (ex) { + this.regexp = false; + } + return this.regexp; + }; + var globUnescape = function(s) { + return s.replace(/\\(.)/g, "$1"); + }; + var regExpEscape = function(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + module.exports = minimatch; + minimatch.Minimatch = Minimatch; + var path = function() { + try { + return import.meta.require("path"); + } catch (e) { + } + }() || { + sep: "/" + }; + minimatch.sep = path.sep; + var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; + var expand = require_brace_expansion(); + var plTypes = { + "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, + "?": { open: "(?:", close: ")?" }, + "+": { open: "(?:", close: ")+" }, + "*": { open: "(?:", close: ")*" }, + "@": { open: "(?:", close: ")" } + }; + var qmark = "[^/]"; + var star = qmark + "*?"; + var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; + var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; + var reSpecials = charSet("().*{}+?[]^$\\!"); + var slashSplit = /\/+/; + minimatch.filter = filter; + minimatch.defaults = function(def) { + if (!def || typeof def !== "object" || !Object.keys(def).length) { + return minimatch; + } + var orig = minimatch; + var m = function minimatch(p, pattern, options) { + return orig(p, pattern, ext(def, options)); + }; + m.Minimatch = function Minimatch(pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)); + }; + m.Minimatch.defaults = function defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + }; + m.filter = function filter(pattern, options) { + return orig.filter(pattern, ext(def, options)); + }; + m.defaults = function defaults(options) { + return orig.defaults(ext(def, options)); + }; + m.makeRe = function makeRe(pattern, options) { + return orig.makeRe(pattern, ext(def, options)); + }; + m.braceExpand = function braceExpand(pattern, options) { + return orig.braceExpand(pattern, ext(def, options)); + }; + m.match = function(list, pattern, options) { + return orig.match(list, pattern, ext(def, options)); + }; + return m; + }; + Minimatch.defaults = function(def) { + return minimatch.defaults(def).Minimatch; + }; + Minimatch.prototype.debug = function() { + }; + Minimatch.prototype.make = make; + Minimatch.prototype.parseNegate = parseNegate; + minimatch.braceExpand = function(pattern, options) { + return braceExpand(pattern, options); + }; + Minimatch.prototype.braceExpand = braceExpand; + var MAX_PATTERN_LENGTH = 1024 * 64; + var assertValidPattern = function(pattern) { + if (typeof pattern !== "string") { + throw new TypeError("invalid pattern"); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError("pattern is too long"); + } + }; + Minimatch.prototype.parse = parse; + var SUBPARSE = {}; + minimatch.makeRe = function(pattern, options) { + return new Minimatch(pattern, options || {}).makeRe(); + }; + Minimatch.prototype.makeRe = makeRe; + minimatch.match = function(list, pattern, options) { + options = options || {}; + var mm = new Minimatch(pattern, options); + list = list.filter(function(f) { + return mm.match(f); + }); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + Minimatch.prototype.match = function match(f, partial) { + if (typeof partial === "undefined") + partial = this.partial; + this.debug("match", f, this.pattern); + if (this.comment) + return false; + if (this.empty) + return f === ""; + if (f === "/" && partial) + return true; + var options = this.options; + if (path.sep !== "/") { + f = f.split(path.sep).join("/"); + } + f = f.split(slashSplit); + this.debug(this.pattern, "split", f); + var set = this.set; + this.debug(this.pattern, "set", set); + var filename; + var i; + for (i = f.length - 1;i >= 0; i--) { + filename = f[i]; + if (filename) + break; + } + for (i = 0;i < set.length; i++) { + var pattern = set[i]; + var file = f; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + var hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) + return true; + return !this.negate; + } + } + if (options.flipNegate) + return false; + return this.negate; + }; + Minimatch.prototype.matchOne = function(file, pattern, partial) { + var options = this.options; + this.debug("matchOne", { this: this, file, pattern }); + this.debug("matchOne", file.length, pattern.length); + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length;fi < fl && pi < pl; fi++, pi++) { + this.debug("matchOne loop"); + var p = pattern[pi]; + var f = file[fi]; + this.debug(pattern, p, f); + if (p === false) + return false; + if (p === GLOBSTAR) { + this.debug("GLOBSTAR", [pattern, p, f]); + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug("** at the end"); + for (;fi < fl; fi++) { + if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") + return false; + } + return true; + } + while (fr < fl) { + var swallowee = file[fr]; + this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug("globstar found match!", fr, fl, swallowee); + return true; + } else { + if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { + this.debug("dot detected!", file, fr, pattern, pr); + break; + } + this.debug("globstar swallow a segment, and continue"); + fr++; + } + } + if (partial) { + this.debug("\n>>> no match, partial?", file, fr, pattern, pr); + if (fr === fl) + return true; + } + return false; + } + var hit; + if (typeof p === "string") { + hit = f === p; + this.debug("string match", p, f, hit); + } else { + hit = f.match(p); + this.debug("pattern match", p, f, hit); + } + if (!hit) + return false; + } + if (fi === fl && pi === pl) { + return true; + } else if (fi === fl) { + return partial; + } else if (pi === pl) { + return fi === fl - 1 && file[fi] === ""; + } + throw new Error("wtf?"); + }; +}); + +// node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS((exports, module) => { + if (typeof Object.create === "function") { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor; + ctor.prototype.constructor = ctor; + } + }; + } +}); + +// node_modules/inherits/inherits.js +var require_inherits = __commonJS((exports, module) => { + try { + util = import.meta.require("util"); + if (typeof util.inherits !== "function") + throw ""; + module.exports = util.inherits; + } catch (e) { + module.exports = require_inherits_browser(); + } + var util; +}); + +// node_modules/path-is-absolute/index.js +var require_path_is_absolute = __commonJS((exports, module) => { + var posix = function(path) { + return path.charAt(0) === "/"; + }; + var win32 = function(path) { + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ""; + var isUnc = Boolean(device && device.charAt(1) !== ":"); + return Boolean(result[2] || isUnc); + }; + module.exports = process.platform === "win32" ? win32 : posix; + module.exports.posix = posix; + module.exports.win32 = win32; +}); + +// node_modules/glob/common.js +var require_common3 = __commonJS((exports) => { + var ownProp = function(obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field); + }; + var alphasort = function(a, b) { + return a.localeCompare(b, "en"); + }; + var setupIgnores = function(self, options) { + self.ignore = options.ignore || []; + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore]; + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap); + } + }; + var ignoreMap = function(pattern) { + var gmatcher = null; + if (pattern.slice(-3) === "/**") { + var gpattern = pattern.replace(/(\/\*\*)+$/, ""); + gmatcher = new Minimatch(gpattern, { dot: true }); + } + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher + }; + }; + var setopts = function(self, pattern, options) { + if (!options) + options = {}; + if (options.matchBase && pattern.indexOf("/") === -1) { + if (options.noglobstar) { + throw new Error("base matching requires globstar"); + } + pattern = "**/" + pattern; + } + self.silent = !!options.silent; + self.pattern = pattern; + self.strict = options.strict !== false; + self.realpath = !!options.realpath; + self.realpathCache = options.realpathCache || Object.create(null); + self.follow = !!options.follow; + self.dot = !!options.dot; + self.mark = !!options.mark; + self.nodir = !!options.nodir; + if (self.nodir) + self.mark = true; + self.sync = !!options.sync; + self.nounique = !!options.nounique; + self.nonull = !!options.nonull; + self.nosort = !!options.nosort; + self.nocase = !!options.nocase; + self.stat = !!options.stat; + self.noprocess = !!options.noprocess; + self.absolute = !!options.absolute; + self.fs = options.fs || fs; + self.maxLength = options.maxLength || Infinity; + self.cache = options.cache || Object.create(null); + self.statCache = options.statCache || Object.create(null); + self.symlinks = options.symlinks || Object.create(null); + setupIgnores(self, options); + self.changedCwd = false; + var cwd = process.cwd(); + if (!ownProp(options, "cwd")) + self.cwd = cwd; + else { + self.cwd = path.resolve(options.cwd); + self.changedCwd = self.cwd !== cwd; + } + self.root = options.root || path.resolve(self.cwd, "/"); + self.root = path.resolve(self.root); + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/"); + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd); + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); + self.nomount = !!options.nomount; + options.nonegate = true; + options.nocomment = true; + options.allowWindowsEscape = false; + self.minimatch = new Minimatch(pattern, options); + self.options = self.minimatch.options; + }; + var finish = function(self) { + var nou = self.nounique; + var all = nou ? [] : Object.create(null); + for (var i = 0, l = self.matches.length;i < l; i++) { + var matches = self.matches[i]; + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + var literal = self.minimatch.globSet[i]; + if (nou) + all.push(literal); + else + all[literal] = true; + } + } else { + var m = Object.keys(matches); + if (nou) + all.push.apply(all, m); + else + m.forEach(function(m2) { + all[m2] = true; + }); + } + } + if (!nou) + all = Object.keys(all); + if (!self.nosort) + all = all.sort(alphasort); + if (self.mark) { + for (var i = 0;i < all.length; i++) { + all[i] = self._mark(all[i]); + } + if (self.nodir) { + all = all.filter(function(e) { + var notDir = !/\/$/.test(e); + var c = self.cache[e] || self.cache[makeAbs(self, e)]; + if (notDir && c) + notDir = c !== "DIR" && !Array.isArray(c); + return notDir; + }); + } + } + if (self.ignore.length) + all = all.filter(function(m2) { + return !isIgnored(self, m2); + }); + self.found = all; + }; + var mark = function(self, p) { + var abs = makeAbs(self, p); + var c = self.cache[abs]; + var m = p; + if (c) { + var isDir = c === "DIR" || Array.isArray(c); + var slash = p.slice(-1) === "/"; + if (isDir && !slash) + m += "/"; + else if (!isDir && slash) + m = m.slice(0, -1); + if (m !== p) { + var mabs = makeAbs(self, m); + self.statCache[mabs] = self.statCache[abs]; + self.cache[mabs] = self.cache[abs]; + } + } + return m; + }; + var makeAbs = function(self, f) { + var abs = f; + if (f.charAt(0) === "/") { + abs = path.join(self.root, f); + } else if (isAbsolute(f) || f === "") { + abs = f; + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f); + } else { + abs = path.resolve(f); + } + if (process.platform === "win32") + abs = abs.replace(/\\/g, "/"); + return abs; + }; + var isIgnored = function(self, path2) { + if (!self.ignore.length) + return false; + return self.ignore.some(function(item) { + return item.matcher.match(path2) || !!(item.gmatcher && item.gmatcher.match(path2)); + }); + }; + var childrenIgnored = function(self, path2) { + if (!self.ignore.length) + return false; + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path2)); + }); + }; + exports.setopts = setopts; + exports.ownProp = ownProp; + exports.makeAbs = makeAbs; + exports.finish = finish; + exports.mark = mark; + exports.isIgnored = isIgnored; + exports.childrenIgnored = childrenIgnored; + var fs = import.meta.require("fs"); + var path = import.meta.require("path"); + var minimatch = require_minimatch(); + var isAbsolute = require_path_is_absolute(); + var Minimatch = minimatch.Minimatch; +}); + +// node_modules/glob/sync.js +var require_sync7 = __commonJS((exports, module) => { + var globSync = function(pattern, options) { + if (typeof options === "function" || arguments.length === 3) + throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); + return new GlobSync(pattern, options).found; + }; + var GlobSync = function(pattern, options) { + if (!pattern) + throw new Error("must provide pattern"); + if (typeof options === "function" || arguments.length === 3) + throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options); + setopts(this, pattern, options); + if (this.noprocess) + return this; + var n = this.minimatch.set.length; + this.matches = new Array(n); + for (var i = 0;i < n; i++) { + this._process(this.minimatch.set[i], i, false); + } + this._finish(); + }; + module.exports = globSync; + globSync.GlobSync = GlobSync; + var rp = require_fs6(); + var minimatch = require_minimatch(); + var Minimatch = minimatch.Minimatch; + var Glob = require_glob().Glob; + var util = import.meta.require("util"); + var path = import.meta.require("path"); + var assert = import.meta.require("assert"); + var isAbsolute = require_path_is_absolute(); + var common = require_common3(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; + GlobSync.prototype._finish = function() { + assert.ok(this instanceof GlobSync); + if (this.realpath) { + var self = this; + this.matches.forEach(function(matchset, index) { + var set = self.matches[index] = Object.create(null); + for (var p in matchset) { + try { + p = self._makeAbs(p); + var real = rp.realpathSync(p, self.realpathCache); + set[real] = true; + } catch (er) { + if (er.syscall === "stat") + set[self._makeAbs(p)] = true; + else + throw er; + } + } + }); + } + common.finish(this); + }; + GlobSync.prototype._process = function(pattern, index, inGlobStar) { + assert.ok(this instanceof GlobSync); + var n = 0; + while (typeof pattern[n] === "string") { + n++; + } + var prefix; + switch (n) { + case pattern.length: + this._processSimple(pattern.join("/"), index); + return; + case 0: + prefix = null; + break; + default: + prefix = pattern.slice(0, n).join("/"); + break; + } + var remain = pattern.slice(n); + var read; + if (prefix === null) + read = "."; + else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { + return typeof p === "string" ? p : "[*]"; + }).join("/"))) { + if (!prefix || !isAbsolute(prefix)) + prefix = "/" + prefix; + read = prefix; + } else + read = prefix; + var abs = this._makeAbs(read); + if (childrenIgnored(this, read)) + return; + var isGlobStar = remain[0] === minimatch.GLOBSTAR; + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar); + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar); + }; + GlobSync.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar); + if (!entries) + return; + var pn = remain[0]; + var negate = !!this.minimatch.negate; + var rawGlob = pn._glob; + var dotOk = this.dot || rawGlob.charAt(0) === "."; + var matchedEntries = []; + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (e.charAt(0) !== "." || dotOk) { + var m; + if (negate && !prefix) { + m = !e.match(pn); + } else { + m = e.match(pn); + } + if (m) + matchedEntries.push(e); + } + } + var len = matchedEntries.length; + if (len === 0) + return; + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + if (prefix) { + if (prefix.slice(-1) !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path.join(this.root, e); + } + this._emitMatch(index, e); + } + return; + } + remain.shift(); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + var newPattern; + if (prefix) + newPattern = [prefix, e]; + else + newPattern = [e]; + this._process(newPattern.concat(remain), index, inGlobStar); + } + }; + GlobSync.prototype._emitMatch = function(index, e) { + if (isIgnored(this, e)) + return; + var abs = this._makeAbs(e); + if (this.mark) + e = this._mark(e); + if (this.absolute) { + e = abs; + } + if (this.matches[index][e]) + return; + if (this.nodir) { + var c = this.cache[abs]; + if (c === "DIR" || Array.isArray(c)) + return; + } + this.matches[index][e] = true; + if (this.stat) + this._stat(e); + }; + GlobSync.prototype._readdirInGlobStar = function(abs) { + if (this.follow) + return this._readdir(abs, false); + var entries; + var lstat; + var stat; + try { + lstat = this.fs.lstatSync(abs); + } catch (er) { + if (er.code === "ENOENT") { + return null; + } + } + var isSym = lstat && lstat.isSymbolicLink(); + this.symlinks[abs] = isSym; + if (!isSym && lstat && !lstat.isDirectory()) + this.cache[abs] = "FILE"; + else + entries = this._readdir(abs, false); + return entries; + }; + GlobSync.prototype._readdir = function(abs, inGlobStar) { + var entries; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (!c || c === "FILE") + return null; + if (Array.isArray(c)) + return c; + } + try { + return this._readdirEntries(abs, this.fs.readdirSync(abs)); + } catch (er) { + this._readdirError(abs, er); + return null; + } + }; + GlobSync.prototype._readdirEntries = function(abs, entries) { + if (!this.mark && !this.stat) { + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (abs === "/") + e = abs + e; + else + e = abs + "/" + e; + this.cache[e] = true; + } + } + this.cache[abs] = entries; + return entries; + }; + GlobSync.prototype._readdirError = function(f, er) { + switch (er.code) { + case "ENOTSUP": + case "ENOTDIR": + var abs = this._makeAbs(f); + this.cache[abs] = "FILE"; + if (abs === this.cwdAbs) { + var error2 = new Error(er.code + " invalid cwd " + this.cwd); + error2.path = this.cwd; + error2.code = er.code; + throw error2; + } + break; + case "ENOENT": + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[this._makeAbs(f)] = false; + break; + default: + this.cache[this._makeAbs(f)] = false; + if (this.strict) + throw er; + if (!this.silent) + console.error("glob error", er); + break; + } + }; + GlobSync.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar); + if (!entries) + return; + var remainWithoutGlobStar = remain.slice(1); + var gspref = prefix ? [prefix] : []; + var noGlobStar = gspref.concat(remainWithoutGlobStar); + this._process(noGlobStar, index, false); + var len = entries.length; + var isSym = this.symlinks[abs]; + if (isSym && inGlobStar) + return; + for (var i = 0;i < len; i++) { + var e = entries[i]; + if (e.charAt(0) === "." && !this.dot) + continue; + var instead = gspref.concat(entries[i], remainWithoutGlobStar); + this._process(instead, index, true); + var below = gspref.concat(entries[i], remain); + this._process(below, index, true); + } + }; + GlobSync.prototype._processSimple = function(prefix, index) { + var exists = this._stat(prefix); + if (!this.matches[index]) + this.matches[index] = Object.create(null); + if (!exists) + return; + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix); + if (prefix.charAt(0) === "/") { + prefix = path.join(this.root, prefix); + } else { + prefix = path.resolve(this.root, prefix); + if (trail) + prefix += "/"; + } + } + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/"); + this._emitMatch(index, prefix); + }; + GlobSync.prototype._stat = function(f) { + var abs = this._makeAbs(f); + var needDir = f.slice(-1) === "/"; + if (f.length > this.maxLength) + return false; + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (Array.isArray(c)) + c = "DIR"; + if (!needDir || c === "DIR") + return c; + if (needDir && c === "FILE") + return false; + } + var exists; + var stat = this.statCache[abs]; + if (!stat) { + var lstat; + try { + lstat = this.fs.lstatSync(abs); + } catch (er) { + if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { + this.statCache[abs] = false; + return false; + } + } + if (lstat && lstat.isSymbolicLink()) { + try { + stat = this.fs.statSync(abs); + } catch (er) { + stat = lstat; + } + } else { + stat = lstat; + } + } + this.statCache[abs] = stat; + var c = true; + if (stat) + c = stat.isDirectory() ? "DIR" : "FILE"; + this.cache[abs] = this.cache[abs] || c; + if (needDir && c === "FILE") + return false; + return c; + }; + GlobSync.prototype._mark = function(p) { + return common.mark(this, p); + }; + GlobSync.prototype._makeAbs = function(f) { + return common.makeAbs(this, f); + }; +}); + +// node_modules/wrappy/wrappy.js +var require_wrappy = __commonJS((exports, module) => { + var wrappy = function(fn, cb) { + if (fn && cb) + return wrappy(fn)(cb); + if (typeof fn !== "function") + throw new TypeError("need wrapper function"); + Object.keys(fn).forEach(function(k) { + wrapper[k] = fn[k]; + }); + return wrapper; + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0;i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb2 = args[args.length - 1]; + if (typeof ret === "function" && ret !== cb2) { + Object.keys(cb2).forEach(function(k) { + ret[k] = cb2[k]; + }); + } + return ret; + } + }; + module.exports = wrappy; +}); + +// node_modules/once/once.js +var require_once = __commonJS((exports, module) => { + var once = function(fn) { + var f = function() { + if (f.called) + return f.value; + f.called = true; + return f.value = fn.apply(this, arguments); + }; + f.called = false; + return f; + }; + var onceStrict = function(fn) { + var f = function() { + if (f.called) + throw new Error(f.onceError); + f.called = true; + return f.value = fn.apply(this, arguments); + }; + var name = fn.name || "Function wrapped with `once`"; + f.onceError = name + " shouldn't be called more than once"; + f.called = false; + return f; + }; + var wrappy = require_wrappy(); + module.exports = wrappy(once); + module.exports.strict = wrappy(onceStrict); + once.proto = once(function() { + Object.defineProperty(Function.prototype, "once", { + value: function() { + return once(this); + }, + configurable: true + }); + Object.defineProperty(Function.prototype, "onceStrict", { + value: function() { + return onceStrict(this); + }, + configurable: true + }); + }); +}); + +// node_modules/inflight/inflight.js +var require_inflight = __commonJS((exports, module) => { + var inflight = function(key, cb) { + if (reqs[key]) { + reqs[key].push(cb); + return null; + } else { + reqs[key] = [cb]; + return makeres(key); + } + }; + var makeres = function(key) { + return once(function RES() { + var cbs = reqs[key]; + var len = cbs.length; + var args = slice(arguments); + try { + for (var i = 0;i < len; i++) { + cbs[i].apply(null, args); + } + } finally { + if (cbs.length > len) { + cbs.splice(0, len); + process.nextTick(function() { + RES.apply(null, args); + }); + } else { + delete reqs[key]; + } + } + }); + }; + var slice = function(args) { + var length = args.length; + var array = []; + for (var i = 0;i < length; i++) + array[i] = args[i]; + return array; + }; + var wrappy = require_wrappy(); + var reqs = Object.create(null); + var once = require_once(); + module.exports = wrappy(inflight); +}); + +// node_modules/glob/glob.js +var require_glob = __commonJS((exports, module) => { + var glob = function(pattern, options, cb) { + if (typeof options === "function") + cb = options, options = {}; + if (!options) + options = {}; + if (options.sync) { + if (cb) + throw new TypeError("callback provided to sync glob"); + return globSync(pattern, options); + } + return new Glob(pattern, options, cb); + }; + var extend = function(origin, add) { + if (add === null || typeof add !== "object") { + return origin; + } + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; + }; + var Glob = function(pattern, options, cb) { + if (typeof options === "function") { + cb = options; + options = null; + } + if (options && options.sync) { + if (cb) + throw new TypeError("callback provided to sync glob"); + return new GlobSync(pattern, options); + } + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb); + setopts(this, pattern, options); + this._didRealPath = false; + var n = this.minimatch.set.length; + this.matches = new Array(n); + if (typeof cb === "function") { + cb = once(cb); + this.on("error", cb); + this.on("end", function(matches) { + cb(null, matches); + }); + } + var self = this; + this._processing = 0; + this._emitQueue = []; + this._processQueue = []; + this.paused = false; + if (this.noprocess) + return this; + if (n === 0) + return done(); + var sync2 = true; + for (var i = 0;i < n; i++) { + this._process(this.minimatch.set[i], i, false, done); + } + sync2 = false; + function done() { + --self._processing; + if (self._processing <= 0) { + if (sync2) { + process.nextTick(function() { + self._finish(); + }); + } else { + self._finish(); + } + } + } + }; + var readdirCb = function(self, abs, cb) { + return function(er, entries) { + if (er) + self._readdirError(abs, er, cb); + else + self._readdirEntries(abs, entries, cb); + }; + }; + module.exports = glob; + var rp = require_fs6(); + var minimatch = require_minimatch(); + var Minimatch = minimatch.Minimatch; + var inherits = require_inherits(); + var EE = import.meta.require("events").EventEmitter; + var path = import.meta.require("path"); + var assert = import.meta.require("assert"); + var isAbsolute = require_path_is_absolute(); + var globSync = require_sync7(); + var common = require_common3(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var inflight = require_inflight(); + var util = import.meta.require("util"); + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; + var once = require_once(); + glob.sync = globSync; + var GlobSync = glob.GlobSync = globSync.GlobSync; + glob.glob = glob; + glob.hasMagic = function(pattern, options_) { + var options = extend({}, options_); + options.noprocess = true; + var g = new Glob(pattern, options); + var set = g.minimatch.set; + if (!pattern) + return false; + if (set.length > 1) + return true; + for (var j = 0;j < set[0].length; j++) { + if (typeof set[0][j] !== "string") + return true; + } + return false; + }; + glob.Glob = Glob; + inherits(Glob, EE); + Glob.prototype._finish = function() { + assert(this instanceof Glob); + if (this.aborted) + return; + if (this.realpath && !this._didRealpath) + return this._realpath(); + common.finish(this); + this.emit("end", this.found); + }; + Glob.prototype._realpath = function() { + if (this._didRealpath) + return; + this._didRealpath = true; + var n = this.matches.length; + if (n === 0) + return this._finish(); + var self = this; + for (var i = 0;i < this.matches.length; i++) + this._realpathSet(i, next); + function next() { + if (--n === 0) + self._finish(); + } + }; + Glob.prototype._realpathSet = function(index, cb) { + var matchset = this.matches[index]; + if (!matchset) + return cb(); + var found = Object.keys(matchset); + var self = this; + var n = found.length; + if (n === 0) + return cb(); + var set = this.matches[index] = Object.create(null); + found.forEach(function(p, i) { + p = self._makeAbs(p); + rp.realpath(p, self.realpathCache, function(er, real) { + if (!er) + set[real] = true; + else if (er.syscall === "stat") + set[p] = true; + else + self.emit("error", er); + if (--n === 0) { + self.matches[index] = set; + cb(); + } + }); + }); + }; + Glob.prototype._mark = function(p) { + return common.mark(this, p); + }; + Glob.prototype._makeAbs = function(f) { + return common.makeAbs(this, f); + }; + Glob.prototype.abort = function() { + this.aborted = true; + this.emit("abort"); + }; + Glob.prototype.pause = function() { + if (!this.paused) { + this.paused = true; + this.emit("pause"); + } + }; + Glob.prototype.resume = function() { + if (this.paused) { + this.emit("resume"); + this.paused = false; + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0); + this._emitQueue.length = 0; + for (var i = 0;i < eq.length; i++) { + var e = eq[i]; + this._emitMatch(e[0], e[1]); + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0); + this._processQueue.length = 0; + for (var i = 0;i < pq.length; i++) { + var p = pq[i]; + this._processing--; + this._process(p[0], p[1], p[2], p[3]); + } + } + } + }; + Glob.prototype._process = function(pattern, index, inGlobStar, cb) { + assert(this instanceof Glob); + assert(typeof cb === "function"); + if (this.aborted) + return; + this._processing++; + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]); + return; + } + var n = 0; + while (typeof pattern[n] === "string") { + n++; + } + var prefix; + switch (n) { + case pattern.length: + this._processSimple(pattern.join("/"), index, cb); + return; + case 0: + prefix = null; + break; + default: + prefix = pattern.slice(0, n).join("/"); + break; + } + var remain = pattern.slice(n); + var read; + if (prefix === null) + read = "."; + else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { + return typeof p === "string" ? p : "[*]"; + }).join("/"))) { + if (!prefix || !isAbsolute(prefix)) + prefix = "/" + prefix; + read = prefix; + } else + read = prefix; + var abs = this._makeAbs(read); + if (childrenIgnored(this, read)) + return cb(); + var isGlobStar = remain[0] === minimatch.GLOBSTAR; + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb); + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb); + }; + Glob.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this; + this._readdir(abs, inGlobStar, function(er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb); + }); + }; + Glob.prototype._processReaddir2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { + if (!entries) + return cb(); + var pn = remain[0]; + var negate = !!this.minimatch.negate; + var rawGlob = pn._glob; + var dotOk = this.dot || rawGlob.charAt(0) === "."; + var matchedEntries = []; + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (e.charAt(0) !== "." || dotOk) { + var m; + if (negate && !prefix) { + m = !e.match(pn); + } else { + m = e.match(pn); + } + if (m) + matchedEntries.push(e); + } + } + var len = matchedEntries.length; + if (len === 0) + return cb(); + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + if (prefix) { + if (prefix !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path.join(this.root, e); + } + this._emitMatch(index, e); + } + return cb(); + } + remain.shift(); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + var newPattern; + if (prefix) { + if (prefix !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + this._process([e].concat(remain), index, inGlobStar, cb); + } + cb(); + }; + Glob.prototype._emitMatch = function(index, e) { + if (this.aborted) + return; + if (isIgnored(this, e)) + return; + if (this.paused) { + this._emitQueue.push([index, e]); + return; + } + var abs = isAbsolute(e) ? e : this._makeAbs(e); + if (this.mark) + e = this._mark(e); + if (this.absolute) + e = abs; + if (this.matches[index][e]) + return; + if (this.nodir) { + var c = this.cache[abs]; + if (c === "DIR" || Array.isArray(c)) + return; + } + this.matches[index][e] = true; + var st = this.statCache[abs]; + if (st) + this.emit("stat", e, st); + this.emit("match", e); + }; + Glob.prototype._readdirInGlobStar = function(abs, cb) { + if (this.aborted) + return; + if (this.follow) + return this._readdir(abs, false, cb); + var lstatkey = "lstat\0" + abs; + var self = this; + var lstatcb = inflight(lstatkey, lstatcb_); + if (lstatcb) + self.fs.lstat(abs, lstatcb); + function lstatcb_(er, lstat) { + if (er && er.code === "ENOENT") + return cb(); + var isSym = lstat && lstat.isSymbolicLink(); + self.symlinks[abs] = isSym; + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = "FILE"; + cb(); + } else + self._readdir(abs, false, cb); + } + }; + Glob.prototype._readdir = function(abs, inGlobStar, cb) { + if (this.aborted) + return; + cb = inflight("readdir\0" + abs + "\0" + inGlobStar, cb); + if (!cb) + return; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (!c || c === "FILE") + return cb(); + if (Array.isArray(c)) + return cb(null, c); + } + var self = this; + self.fs.readdir(abs, readdirCb(this, abs, cb)); + }; + Glob.prototype._readdirEntries = function(abs, entries, cb) { + if (this.aborted) + return; + if (!this.mark && !this.stat) { + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (abs === "/") + e = abs + e; + else + e = abs + "/" + e; + this.cache[e] = true; + } + } + this.cache[abs] = entries; + return cb(null, entries); + }; + Glob.prototype._readdirError = function(f, er, cb) { + if (this.aborted) + return; + switch (er.code) { + case "ENOTSUP": + case "ENOTDIR": + var abs = this._makeAbs(f); + this.cache[abs] = "FILE"; + if (abs === this.cwdAbs) { + var error2 = new Error(er.code + " invalid cwd " + this.cwd); + error2.path = this.cwd; + error2.code = er.code; + this.emit("error", error2); + this.abort(); + } + break; + case "ENOENT": + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[this._makeAbs(f)] = false; + break; + default: + this.cache[this._makeAbs(f)] = false; + if (this.strict) { + this.emit("error", er); + this.abort(); + } + if (!this.silent) + console.error("glob error", er); + break; + } + return cb(); + }; + Glob.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this; + this._readdir(abs, inGlobStar, function(er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb); + }); + }; + Glob.prototype._processGlobStar2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { + if (!entries) + return cb(); + var remainWithoutGlobStar = remain.slice(1); + var gspref = prefix ? [prefix] : []; + var noGlobStar = gspref.concat(remainWithoutGlobStar); + this._process(noGlobStar, index, false, cb); + var isSym = this.symlinks[abs]; + var len = entries.length; + if (isSym && inGlobStar) + return cb(); + for (var i = 0;i < len; i++) { + var e = entries[i]; + if (e.charAt(0) === "." && !this.dot) + continue; + var instead = gspref.concat(entries[i], remainWithoutGlobStar); + this._process(instead, index, true, cb); + var below = gspref.concat(entries[i], remain); + this._process(below, index, true, cb); + } + cb(); + }; + Glob.prototype._processSimple = function(prefix, index, cb) { + var self = this; + this._stat(prefix, function(er, exists) { + self._processSimple2(prefix, index, er, exists, cb); + }); + }; + Glob.prototype._processSimple2 = function(prefix, index, er, exists, cb) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + if (!exists) + return cb(); + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix); + if (prefix.charAt(0) === "/") { + prefix = path.join(this.root, prefix); + } else { + prefix = path.resolve(this.root, prefix); + if (trail) + prefix += "/"; + } + } + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/"); + this._emitMatch(index, prefix); + cb(); + }; + Glob.prototype._stat = function(f, cb) { + var abs = this._makeAbs(f); + var needDir = f.slice(-1) === "/"; + if (f.length > this.maxLength) + return cb(); + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (Array.isArray(c)) + c = "DIR"; + if (!needDir || c === "DIR") + return cb(null, c); + if (needDir && c === "FILE") + return cb(); + } + var exists; + var stat = this.statCache[abs]; + if (stat !== undefined) { + if (stat === false) + return cb(null, stat); + else { + var type = stat.isDirectory() ? "DIR" : "FILE"; + if (needDir && type === "FILE") + return cb(); + else + return cb(null, type, stat); + } + } + var self = this; + var statcb = inflight("stat\0" + abs, lstatcb_); + if (statcb) + self.fs.lstat(abs, statcb); + function lstatcb_(er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + return self.fs.stat(abs, function(er2, stat2) { + if (er2) + self._stat2(f, abs, null, lstat, cb); + else + self._stat2(f, abs, er2, stat2, cb); + }); + } else { + self._stat2(f, abs, er, lstat, cb); + } + } + }; + Glob.prototype._stat2 = function(f, abs, er, stat, cb) { + if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { + this.statCache[abs] = false; + return cb(); + } + var needDir = f.slice(-1) === "/"; + this.statCache[abs] = stat; + if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) + return cb(null, false, stat); + var c = true; + if (stat) + c = stat.isDirectory() ? "DIR" : "FILE"; + this.cache[abs] = this.cache[abs] || c; + if (needDir && c === "FILE") + return cb(); + return cb(null, c, stat); + }; +}); + +// node_modules/globs/index.js +var require_globs = __commonJS((exports, module) => { + var glob = require_glob(); + var globs = module.exports = function(patterns, options, callback) { + var pending, groups = []; + if (!Array.isArray(patterns)) { + patterns = [patterns]; + } + pending = patterns.length; + if (typeof options === "function") { + callback = options; + options = {}; + } + if (!pending) { + return process.nextTick(function() { + callback(null, []); + }); + } + patterns.forEach(function(pattern) { + glob(pattern, options, function(err, files) { + if (err) { + return callback(err); + } + groups = groups.concat(files); + pending -= 1; + if (!pending) { + return callback(null, groups); + } + }); + }); + }; + globs.sync = function(patterns, options) { + options = options || {}; + var groups = [], index, length; + if (!Array.isArray(patterns)) { + patterns = [patterns]; + } + for (index = 0, length = patterns.length;index < length; index++) { + groups = groups.concat(glob.sync(patterns[index], options)); + } + return groups; + }; +}); + +// node_modules/yargs/lib/platform-shims/esm.mjs +import {notStrictEqual, strictEqual} from "assert"; + +// node_modules/cliui/build/lib/index.js +var addBorder = function(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ""; + } + if (ts.trim().length !== 0) { + return style; + } + return " "; + } + return ""; +}; +var _minWidth = function(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +}; +var getWindowWidth = function() { + if (typeof process === "object" && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +}; +var alignRight = function(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return " ".repeat(width - strWidth) + str; + } + return str; +}; +var alignCenter = function(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth >= width) { + return str; + } + return " ".repeat(width - strWidth >> 1) + str; +}; +function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + width: (opts === null || opts === undefined ? undefined : opts.width) || getWindowWidth(), + wrap: opts === null || opts === undefined ? undefined : opts.wrap + }); +} +var align = { + right: alignRight, + center: alignCenter +}; +var top = 0; +var right = 1; +var bottom = 2; +var left = 3; + +class UI { + constructor(opts) { + var _a; + this.width = opts.width; + this.wrap = (_a = opts.wrap) !== null && _a !== undefined ? _a : true; + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(""); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === "string") { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map((arg) => { + if (typeof arg === "string") { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === "string" && /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split("\n").map((row) => row.split("\t")); + let leftColumnWidth = 0; + rows.forEach((columns) => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + rows.forEach((columns) => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: i === 0 && columns.length > 1 ? leftColumnWidth : undefined + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach((row) => { + this.rowToString(row, lines); + }); + return lines.filter((line) => !line.hidden).map((line) => line.text).join("\n"); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ""; + rrow.forEach((col, c) => { + const { width } = row[c]; + const wrapWidth = this.negatePadding(row[c]); + let ts = col; + if (wrapWidth > mixin.stringWidth(col)) { + ts += " ".repeat(wrapWidth - mixin.stringWidth(col)); + } + if (row[c].align && row[c].align !== "left" && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + ts += " ".repeat((width || 0) - mixin.stringWidth(ts) - 1); + } + } + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += " ".repeat(padding[left]); + } + str += addBorder(row[c], ts, "| "); + str += ts; + str += addBorder(row[c], ts, " |"); + if (padding[right]) { + str += " ".repeat(padding[right]); + } + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + lines.push({ + text: str.replace(/ +$/, ""), + span: row.span + }); + }); + return lines; + } + renderInline(source, previousLine) { + const match = source.match(/^ */); + const leadingWhitespace = match ? match[0].length : 0; + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimRight()); + if (!previousLine.span) { + return source; + } + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimRight() + " ".repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + row.forEach((col, c) => { + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split("\n"); + } else { + wrapped = col.text.split("\n"); + } + if (col.border) { + wrapped.unshift("." + "-".repeat(this.negatePadding(col) + 2) + "."); + wrapped.push("'" + "-".repeat(this.negatePadding(col) + 2) + "'"); + } + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill("")); + wrapped.push(...new Array(col.padding[bottom] || 0).fill("")); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0;i < c; i++) { + if (rrow[i] === undefined) { + rrow.push(""); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + let wrapWidth = col.width || 0; + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map((col) => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + const widths = row.map((col) => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return; + }); + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + return widths.map((w, i) => { + if (w === undefined) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +} +var mixin; + +// node_modules/cliui/build/lib/string-utils.js +function stripAnsi(str) { + return str.replace(ansi, ""); +} +function wrap(str, width) { + const [start, end] = str.match(ansi) || ["", ""]; + str = stripAnsi(str); + let wrapped = ""; + for (let i = 0;i < str.length; i++) { + if (i !== 0 && i % width === 0) { + wrapped += "\n"; + } + wrapped += str.charAt(i); + } + if (start && end) { + wrapped = `${start}${wrapped}${end}`; + } + return wrapped; +} +var ansi = new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|" + "\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g"); + +// node_modules/cliui/index.mjs +function ui(opts) { + return cliui(opts, { + stringWidth: (str) => { + return [...str].length; + }, + stripAnsi, + wrap + }); +} + +// node_modules/escalade/sync/index.mjs +import {dirname, resolve} from "path"; +import {readdirSync, statSync} from "fs"; +function sync_default(start, callback) { + let dir = resolve(".", start); + let tmp, stats = statSync(dir); + if (!stats.isDirectory()) { + dir = dirname(dir); + } + while (true) { + tmp = callback(dir, readdirSync(dir)); + if (tmp) + return resolve(dir, tmp); + dir = dirname(tmp = dir); + if (tmp === dir) + break; + } +} + +// node_modules/yargs/lib/platform-shims/esm.mjs +import {format as format3, inspect} from "util"; +import {readFileSync as readFileSync3} from "fs"; +import {fileURLToPath} from "url"; + +// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js +import {format} from "util"; +import {readFileSync} from "fs"; +import {normalize, resolve as resolve2} from "path"; + +// node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js +function camelCase(str) { + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf("-") === -1 && str.indexOf("_") === -1) { + return str; + } else { + let camelcase = ""; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0;i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === "-" || chr === "_")) { + nextChrUpper = true; + } else if (chr !== "-" && chr !== "_") { + camelcase += chr; + } + } + return camelcase; + } +} +function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || "-"; + let notCamelcase = ""; + for (let i = 0;i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + if (typeof x === "number") + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +// node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js +function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map((e) => typeof e !== "string" ? e + "" : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0;ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === " " && !opening) { + if (!(prevC === " ")) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ""; + args[i] += c; + } + return args; +} + +// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js +var DefaultValuesForTypeKey; +(function(DefaultValuesForTypeKey2) { + DefaultValuesForTypeKey2["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey2["STRING"] = "string"; + DefaultValuesForTypeKey2["NUMBER"] = "number"; + DefaultValuesForTypeKey2["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + +// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js +var combineAliases = function(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + Object.keys(aliases).forEach(function(key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0;i < aliasArrays.length; i++) { + for (let ii = i + 1;ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function(v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function(aliasArray) { + aliasArray = aliasArray.filter(function(v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === "string") { + combined[lastAlias] = aliasArray; + } + }); + return combined; +}; +var increment = function(orig) { + return orig !== undefined ? orig + 1 : 1; +}; +var sanitizeKey = function(key) { + if (key === "__proto__") + return "___proto___"; + return key; +}; +var mixin2; + +class YargsParser { + constructor(_mixin) { + mixin2 = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + const args = tokenizeArgString(argsInput); + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + "boolean-negation": true, + "camel-case-expansion": true, + "combine-arrays": false, + "dot-notation": true, + "duplicate-arguments-array": true, + "flatten-duplicate-arrays": true, + "greedy-arrays": true, + "halt-at-non-option": false, + "nargs-eats-options": false, + "negation-prefix": "no-", + "parse-numbers": true, + "parse-positional-numbers": true, + "populate--": false, + "set-placeholder-key": false, + "short-option-groups": true, + "strip-aliased": false, + "strip-dashed": false, + "unknown-options-as-args": false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration["populate--"]; + const notFlagsArgv = notFlagsOption ? "--" : "_"; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + const __ = opts.__ || mixin2.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)"); + [].concat(opts.array || []).filter(Boolean).forEach(function(opt) { + const key = typeof opt === "object" ? opt.key : opt; + const assignment = Object.keys(opt).map(function(key2) { + const arrayFlagKeys = { + boolean: "bools", + string: "strings", + number: "numbers" + }; + return arrayFlagKeys[key2]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function(key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function(key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function(key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === "object") { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === "number") { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === "object") { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === "function") { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== "undefined") { + if (Array.isArray(opts.config) || typeof opts.config === "string") { + [].concat(opts.config).filter(Boolean).forEach(function(key) { + flags.configs[key] = true; + }); + } else if (typeof opts.config === "object") { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === "boolean" || typeof value === "function") { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults).forEach(function(key) { + (flags.aliases[key] || []).forEach(function(alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0;i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, "---"); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== "--" && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } else if (truncatedArg.match(/---+(=|$)/)) { + pushPositional(arg); + continue; + } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } else { + setArg(m[1], m[2]); + } + } + } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(""); + broken = false; + for (let j = 0;j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === "=") { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } else { + setArg(key, value); + } + broken = true; + break; + } + if (next === "-") { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== "-") { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } else if (arg === "--") { + notFlags = args.slice(i + 1); + break; + } else if (configuration["halt-at-non-option"]) { + notFlags = args.slice(i); + break; + } else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration["set-placeholder-key"]) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function(key) { + if (!hasKey(argv, key.split("."))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function(key) { + argv[notFlagsArgv].push(key); + }); + if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) { + Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => { + delete argv[key]; + }); + } + if (configuration["strip-aliased"]) { + [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => { + if (configuration["camel-case-expansion"] && alias.includes("-")) { + delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber("_", arg); + if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args2, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__("Argument unexpected for: %s", key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration["nargs-eats-options"]) { + if (args2.length - (i + 1) + available < toEat) { + error = Error(__("Not enough arguments following: %s", key)); + } + available = toEat; + } else { + for (ii = i + 1;ii < args2.length; ii++) { + if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__("Not enough arguments following: %s", key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1;ii < consumed + i + 1; ii++) { + setArg(key, args2[ii]); + } + return i + consumed; + } + function eatArray(i, key, args2, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args2[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) { + argsToSet.push(true); + } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) { + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign)); + } + for (let ii = i + 1;ii < args2.length; ii++) { + if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) + break; + next = args2[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next)); + } + } + if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) { + error = Error(__("Not enough arguments following: %s", key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val) { + if (/-/.test(key) && configuration["camel-case-expansion"]) { + const alias = key.split(".").map(function(prop) { + return camelCase(prop); + }).join("."); + addNewAlias(key, alias); + } + const value = processValue(key, val); + const splitKey = key.split("."); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function(x) { + const keyProperties = x.split("."); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration["dot-notation"]) { + (flags.aliases[splitKey[0]] || []).forEach(function(x) { + let keyProperties = x.split("."); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function(key2) { + Object.defineProperty(argvReturn, key2, { + enumerable: true, + get() { + return val; + }, + set(value2) { + val = typeof value2 === "string" ? mixin2.normalize(value2) : value2; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val) { + if (typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0]) { + val = val.substring(1, val.length - 1); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === "string") + val = val === "true"; + } + let value = Array.isArray(val) ? val.map(function(v) { + return maybeCoerceNumber(key, v); + }) : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val2) => { + return mixin2.normalize(val2); + }); + else + value = mixin2.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration["parse-positional-numbers"] && key === "_") + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))); + if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) { + value = Number(value); + } + } + return value; + } + function setConfig(argv2) { + const configLookup = Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function(configKey) { + const configPath = argv2[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin2.resolve(mixin2.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === "function") { + try { + config = resolveConfig(resolvedConfigPath); + } catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } else { + config = mixin2.require(resolvedConfigPath); + } + setConfigObject(config); + } catch (ex) { + if (ex.name === "PermissionDenied") + error = ex; + else if (argv2[configKey]) + error = Error(__("Invalid JSON config file: %s", configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function(key) { + const value = config[key]; + const fullKey = prev ? prev + "." + key : key; + if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) { + setConfigObject(value, fullKey); + } else { + if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== "undefined") { + configObjects.forEach(function(configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv2, configOnly) { + if (typeof envPrefix === "undefined") + return; + const prefix = typeof envPrefix === "string" ? envPrefix : ""; + const env = mixin2.env(); + Object.keys(env).forEach(function(envVar) { + if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split("__").map(function(key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) { + setArg(keys.join("."), env[envVar]); + } + } + }); + } + function applyCoercions(argv2) { + let coerce; + const applied = new Set; + Object.keys(argv2).forEach(function(key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === "function") { + try { + const value = maybeCoerceNumber(key, coerce(argv2[key])); + [].concat(flags.aliases[key] || [], key).forEach((ali) => { + applied.add(ali); + argv2[ali] = value; + }); + } catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv2) { + flags.keys.forEach((key) => { + if (~key.indexOf(".")) + return; + if (typeof argv2[key] === "undefined") + argv2[key] = undefined; + }); + return argv2; + } + function applyDefaultsAndAliases(obj, aliases2, defaults2, canLog = false) { + Object.keys(defaults2).forEach(function(key) { + if (!hasKey(obj, key.split("."))) { + setKey(obj, key.split("."), defaults2[key]); + if (canLog) + defaulted[key] = true; + (aliases2[key] || []).forEach(function(x) { + if (hasKey(obj, x.split("."))) + return; + setKey(obj, x.split("."), defaults2[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + o = o[key2] || {}; + }); + const key = keys[keys.length - 1]; + if (typeof o !== "object") + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + key2 = sanitizeKey(key2); + if (typeof o === "object" && o[key2] === undefined) { + o[key2] = {}; + } + if (typeof o[key2] !== "object" || Array.isArray(o[key2])) { + if (Array.isArray(o[key2])) { + o[key2].push({}); + } else { + o[key2] = [o[key2], {}]; + } + o = o[key2][o[key2].length - 1]; + } else { + o = o[key2]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join("."), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration["duplicate-arguments-array"]; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } else { + o[key] = o[key].concat([value]); + } + } else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } else if (duplicate && !(o[key] === undefined || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } else { + o[key] = value; + } + } + function extendAliases(...args2) { + args2.forEach(function(obj) { + Object.keys(obj || {}).forEach(function(key) { + if (flags.aliases[key]) return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function(x) { + if (/-/.test(x) && configuration["camel-case-expansion"]) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function(x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) { + const c = decamelize(x, "-"); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function(x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find((key2) => keys.includes(key2)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map((k) => flags[k])); + return toCheck.some(function(flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function(pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(""); + for (let j = 0;j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration["unknown-options-as-args"] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, "--"); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && (`${key}` in defaults)) { + return defaults[key]; + } else { + return defaultForType(guessType(key)); + } + } + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: "", + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + function checkConfiguration() { + Object.keys(flags.counts).find((key) => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key)); + return true; + } else if (checkAllAliases(key, flags.nargs)) { + error = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key)); + return true; } - if (conf.output || conf.outputMatch) - { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } - console.log.apply(this, [msg, data].filter(Boolean)); + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration, + defaulted: Object.assign({}, defaulted), + error, + newAliases: Object.assign({}, newAliases) + }; + } +} + +// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js +var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 10; +if (process && process.version) { + const major = Number(process.version.match(/v([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +var env = process ? process.env : {}; +var parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format, + normalize, + resolve: resolve2, + require: (path) => { + if (typeof require !== "undefined") { + return import.meta.require(path); + } else if (path.match(/\.json$/)) { + return readFileSync(path, "utf8"); + } else { + throw Error("only .json config files are supported in ESM"); + } + } +}); +var yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function(args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; +var lib_default = yargsParser; + +// node_modules/yargs/lib/platform-shims/esm.mjs +import {basename, dirname as dirname2, extname, relative, resolve as resolve4} from "path"; + +// node_modules/yargs/build/lib/utils/process-argv.js +var getProcessArgvBinIndex = function() { + if (isBundledElectronApp()) + return 0; + return 1; +}; +var isBundledElectronApp = function() { + return isElectronApp() && !process.defaultApp; +}; +var isElectronApp = function() { + return !!process.versions.electron; +}; +function getProcessArgvBin() { + return process.argv[getProcessArgvBinIndex()]; +} + +// node_modules/yargs/build/lib/yerror.js +class YError extends Error { + constructor(msg) { + super(msg || "yargs error"); + this.name = "YError"; + Error.captureStackTrace(this, YError); + } +} + +// node_modules/y18n/build/lib/platform-shims/node.js +import {readFileSync as readFileSync2, statSync as statSync2, writeFile} from "fs"; +import {format as format2} from "util"; +import {resolve as resolve3} from "path"; +var node_default = { + fs: { + readFileSync: readFileSync2, + writeFile + }, + format: format2, + resolve: resolve3, + exists: (file) => { + try { + return statSync2(file).isFile(); + } catch (err) { + return false; + } + } +}; + +// node_modules/y18n/build/lib/index.js +function y18n(opts, _shim) { + shim = _shim; + const y18n2 = new Y18N(opts); + return { + __: y18n2.__.bind(y18n2), + __n: y18n2.__n.bind(y18n2), + setLocale: y18n2.setLocale.bind(y18n2), + getLocale: y18n2.getLocale.bind(y18n2), + updateLocale: y18n2.updateLocale.bind(y18n2), + locale: y18n2.locale + }; +} +var shim; + +class Y18N { + constructor(opts) { + opts = opts || {}; + this.directory = opts.directory || "./locales"; + this.updateFiles = typeof opts.updateFiles === "boolean" ? opts.updateFiles : true; + this.locale = opts.locale || "en"; + this.fallbackToLanguage = typeof opts.fallbackToLanguage === "boolean" ? opts.fallbackToLanguage : true; + this.cache = Object.create(null); + this.writeQueue = []; + } + __(...args) { + if (typeof arguments[0] !== "string") { + return this._taggedLiteral(arguments[0], ...arguments); + } + const str = args.shift(); + let cb = function() { }; - var chat = function (msg, data) { - if ( data === void 0 ) data = ''; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + cb = cb || function() { + }; + if (!this.cache[this.locale]) + this._readLocaleFile(); + if (!this.cache[this.locale][str] && this.updateFiles) { + this.cache[this.locale][str] = str; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); + } + __n() { + const args = Array.prototype.slice.call(arguments); + const singular = args.shift(); + const plural = args.shift(); + const quantity = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + if (!this.cache[this.locale]) + this._readLocaleFile(); + let str = quantity === 1 ? singular : plural; + if (this.cache[this.locale][singular]) { + const entry = this.cache[this.locale][singular]; + str = entry[quantity === 1 ? "one" : "other"]; + } + if (!this.cache[this.locale][singular] && this.updateFiles) { + this.cache[this.locale][singular] = { + one: singular, + other: plural + }; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + const values = [str]; + if (~str.indexOf("%d")) + values.push(quantity); + return shim.format.apply(shim.format, values.concat(args)); + } + setLocale(locale) { + this.locale = locale; + } + getLocale() { + return this.locale; + } + updateLocale(obj) { + if (!this.cache[this.locale]) + this._readLocaleFile(); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + this.cache[this.locale][key] = obj[key]; + } + } + } + _taggedLiteral(parts, ...args) { + let str = ""; + parts.forEach(function(part, i) { + const arg = args[i + 1]; + str += part; + if (typeof arg !== "undefined") { + str += "%s"; + } + }); + return this.__.apply(this, [str].concat([].slice.call(args, 1))); + } + _enqueueWrite(work) { + this.writeQueue.push(work); + if (this.writeQueue.length === 1) + this._processWriteQueue(); + } + _processWriteQueue() { + const _this = this; + const work = this.writeQueue[0]; + const directory = work.directory; + const locale = work.locale; + const cb = work.cb; + const languageFile = this._resolveLocaleFile(directory, locale); + const serializedLocale = JSON.stringify(this.cache[locale], null, 2); + shim.fs.writeFile(languageFile, serializedLocale, "utf-8", function(err) { + _this.writeQueue.shift(); + if (_this.writeQueue.length > 0) + _this._processWriteQueue(); + cb(err); + }); + } + _readLocaleFile() { + let localeLookup = {}; + const languageFile = this._resolveLocaleFile(this.directory, this.locale); + try { + if (shim.fs.readFileSync) { + localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, "utf-8")); + } + } catch (err) { + if (err instanceof SyntaxError) { + err.message = "syntax error in " + languageFile; + } + if (err.code === "ENOENT") + localeLookup = {}; + else + throw err; + } + this.cache[this.locale] = localeLookup; + } + _resolveLocaleFile(directory, locale) { + let file = shim.resolve(directory, "./", locale + ".json"); + if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf("_")) { + const languageFile = shim.resolve(directory, "./", locale.split("_")[0] + ".json"); + if (this._fileExistsSync(languageFile)) + file = languageFile; + } + return file; + } + _fileExistsSync(file) { + return shim.exists(file); + } +} + +// node_modules/y18n/index.mjs +var y18n2 = (opts) => { + return y18n(opts, node_default); +}; +var y18n_default = y18n2; + +// node_modules/yargs/lib/platform-shims/esm.mjs +var REQUIRE_ERROR = "require is not supported by ESM"; +var REQUIRE_DIRECTORY_ERROR = "loading a directory of commands is not supported yet for ESM"; +var mainFilename = fileURLToPath(import.meta.url).split("node_modules")[0]; +var __dirname2 = fileURLToPath(import.meta.url); +var esm_default = { + assert: { + notStrictEqual, + strictEqual + }, + cliui: ui, + findUp: sync_default, + getEnv: (key) => { + return process.env[key]; + }, + inspect, + getCallerFile: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR); + }, + getProcessArgvBin, + mainFilename: mainFilename || process.cwd(), + Parser: lib_default, + path: { + basename, + dirname: dirname2, + extname, + relative, + resolve: resolve4 + }, + process: { + argv: () => process.argv, + cwd: process.cwd, + execPath: () => process.execPath, + exit: process.exit, + nextTick: process.nextTick, + stdColumns: typeof process.stdout.columns !== "undefined" ? process.stdout.columns : null + }, + readFileSync: readFileSync3, + require: () => { + throw new YError(REQUIRE_ERROR); + }, + requireDirectory: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR); + }, + stringWidth: (str) => { + return [...str].length; + }, + y18n: y18n_default({ + directory: resolve4(__dirname2, "../../../locales"), + updateFiles: false + }) +}; + +// node_modules/yargs/build/lib/typings/common-types.js +function assertNotStrictEqual(actual, expected, shim2, message) { + shim2.assert.notStrictEqual(actual, expected, message); +} +function assertSingleKey(actual, shim2) { + shim2.assert.strictEqual(typeof actual, "string"); +} +function objectKeys(object) { + return Object.keys(object); +} + +// node_modules/yargs/build/lib/utils/is-promise.js +function isPromise(maybePromise) { + return !!maybePromise && !!maybePromise.then && typeof maybePromise.then === "function"; +} + +// node_modules/yargs/build/lib/parse-command.js +function parseCommand(cmd) { + const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, " "); + const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); + const bregex = /\.*[\][<>]/g; + const firstCommand = splitCommand.shift(); + if (!firstCommand) + throw new Error(`No command found in: ${cmd}`); + const parsedCommand = { + cmd: firstCommand.replace(bregex, ""), + demanded: [], + optional: [] + }; + splitCommand.forEach((cmd2, i) => { + let variadic = false; + cmd2 = cmd2.replace(/\s/g, ""); + if (/\.+[\]>]/.test(cmd2) && i === splitCommand.length - 1) + variadic = true; + if (/^\[/.test(cmd2)) { + parsedCommand.optional.push({ + cmd: cmd2.replace(bregex, "").split("|"), + variadic + }); + } else { + parsedCommand.demanded.push({ + cmd: cmd2.replace(bregex, "").split("|"), + variadic + }); + } + }); + return parsedCommand; +} + +// node_modules/yargs/build/lib/argsert.js +function argsert(arg1, arg2, arg3) { + function parseArgs() { + return typeof arg1 === "object" ? [{ demanded: [], optional: [] }, arg1, arg2] : [ + parseCommand(`cmd ${arg1}`), + arg2, + arg3 + ]; + } + try { + let position = 0; + const [parsed, callerArguments, _length] = parseArgs(); + const args = [].slice.call(callerArguments); + while (args.length && args[args.length - 1] === undefined) + args.pop(); + const length = _length || args.length; + if (length < parsed.demanded.length) { + throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); + } + const totalCommands = parsed.demanded.length + parsed.optional.length; + if (length > totalCommands) { + throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); + } + parsed.demanded.forEach((demanded) => { + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = demanded.cmd.filter((type) => type === observedType || type === "*"); + if (matchingTypes.length === 0) + argumentTypeError(observedType, demanded.cmd, position); + position += 1; + }); + parsed.optional.forEach((optional) => { + if (args.length === 0) + return; + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = optional.cmd.filter((type) => type === observedType || type === "*"); + if (matchingTypes.length === 0) + argumentTypeError(observedType, optional.cmd, position); + position += 1; + }); + } catch (err) { + console.warn(err.stack); + } +} +var guessType = function(arg) { + if (Array.isArray(arg)) { + return "array"; + } else if (arg === null) { + return "null"; + } + return typeof arg; +}; +var argumentTypeError = function(observedType, allowedTypes, position) { + throw new YError(`Invalid ${positionName[position] || "manyith"} argument. Expected ${allowedTypes.join(" or ")} but received ${observedType}.`); +}; +var positionName = ["first", "second", "third", "fourth", "fifth", "sixth"]; - if (conf.verbose) { - info(msg, data); +// node_modules/yargs/build/lib/middleware.js +function globalMiddlewareFactory(globalMiddleware, context) { + return function(callback, applyBeforeValidation = false) { + argsert(" [boolean]", [callback, applyBeforeValidation], arguments.length); + if (Array.isArray(callback)) { + for (let i = 0;i < callback.length; i++) { + if (typeof callback[i] !== "function") { + throw Error("middleware must be a function"); } - else { - debug([msg, data].filter(Boolean).join(' ')); + callback[i].applyBeforeValidation = applyBeforeValidation; + } + Array.prototype.push.apply(globalMiddleware, callback); + } else if (typeof callback === "function") { + callback.applyBeforeValidation = applyBeforeValidation; + globalMiddleware.push(callback); + } + return context; + }; +} +function commandMiddlewareFactory(commandMiddleware) { + if (!commandMiddleware) + return []; + return commandMiddleware.map((middleware) => { + middleware.applyBeforeValidation = false; + return middleware; + }); +} +function applyMiddleware(argv, yargs, middlewares, beforeValidation) { + const beforeValidationError = new Error("middleware cannot return a promise when applyBeforeValidation is true"); + return middlewares.reduce((acc, middleware) => { + if (middleware.applyBeforeValidation !== beforeValidation) { + return acc; + } + if (isPromise(acc)) { + return acc.then((initialObj) => Promise.all([ + initialObj, + middleware(initialObj, yargs) + ])).then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); + } else { + const result = middleware(acc, yargs); + if (beforeValidation && isPromise(result)) + throw beforeValidationError; + return isPromise(result) ? result.then((middlewareObj) => Object.assign(acc, middlewareObj)) : Object.assign(acc, result); + } + }, argv); +} + +// node_modules/yargs/build/lib/utils/which-module.js +function whichModule(exported) { + if (typeof require === "undefined") + return null; + for (let i = 0, files = Object.keys(require.cache), mod;i < files.length; i++) { + mod = require.cache[files[i]]; + if (mod.exports === exported) + return mod; + } + return null; +} + +// node_modules/yargs/build/lib/command.js +function command(yargs, usage, validation, globalMiddleware = [], shim2) { + const self = {}; + let handlers = {}; + let aliasMap = {}; + let defaultCommand; + self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { + let aliases = []; + const middlewares = commandMiddlewareFactory(commandMiddleware); + handler = handler || (() => { + }); + if (Array.isArray(cmd)) { + if (isCommandAndAliases(cmd)) { + [cmd, ...aliases] = cmd; + } else { + for (const command2 of cmd) { + self.addHandler(command2); + } + } + } else if (isCommandHandlerDefinition(cmd)) { + let command2 = Array.isArray(cmd.command) || typeof cmd.command === "string" ? cmd.command : moduleName(cmd); + if (cmd.aliases) + command2 = [].concat(command2).concat(cmd.aliases); + self.addHandler(command2, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); + return; + } else if (isCommandBuilderDefinition(builder)) { + self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); + return; + } + if (typeof cmd === "string") { + const parsedCommand = parseCommand(cmd); + aliases = aliases.map((alias) => parseCommand(alias).cmd); + let isDefault = false; + const parsedAliases = [parsedCommand.cmd].concat(aliases).filter((c) => { + if (DEFAULT_MARKER.test(c)) { + isDefault = true; + return false; } + return true; + }); + if (parsedAliases.length === 0 && isDefault) + parsedAliases.push("$0"); + if (isDefault) { + parsedCommand.cmd = parsedAliases[0]; + aliases = parsedAliases.slice(1); + cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); + } + aliases.forEach((alias) => { + aliasMap[alias] = parsedCommand.cmd; + }); + if (description !== false) { + usage.command(cmd, description, isDefault, aliases, deprecated); + } + handlers[parsedCommand.cmd] = { + original: cmd, + description, + handler, + builder: builder || {}, + middlewares, + deprecated, + demanded: parsedCommand.demanded, + optional: parsedCommand.optional + }; + if (isDefault) + defaultCommand = handlers[parsedCommand.cmd]; + } + }; + self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) { + opts = opts || {}; + if (typeof opts.recurse !== "boolean") + opts.recurse = false; + if (!Array.isArray(opts.extensions)) + opts.extensions = ["js"]; + const parentVisit = typeof opts.visit === "function" ? opts.visit : (o) => o; + opts.visit = function visit(obj, joined, filename) { + const visited = parentVisit(obj, joined, filename); + if (visited) { + if (~context.files.indexOf(joined)) + return visited; + context.files.push(joined); + self.addHandler(visited); + } + return visited; }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (!conf.quiet && !conf.quietTotal) { - console.error.apply(this, [font.red(msg), data].filter(Boolean)); + shim2.requireDirectory({ require: req, filename: callerFile }, dir, opts); + }; + function moduleName(obj) { + const mod = whichModule(obj); + if (!mod) + throw new Error(`No command name given for module: ${shim2.inspect(obj)}`); + return commandFromFilename(mod.filename); + } + function commandFromFilename(filename) { + return shim2.path.basename(filename, shim2.path.extname(filename)); + } + function extractDesc({ describe, description, desc }) { + for (const test of [describe, description, desc]) { + if (typeof test === "string" || test === false) + return test; + assertNotStrictEqual(test, true, shim2); + } + return false; + } + self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap)); + self.getCommandHandlers = () => handlers; + self.hasDefaultCommand = () => !!defaultCommand; + self.runCommand = function runCommand(command2, yargs2, parsed, commandIndex) { + let aliases = parsed.aliases; + const commandHandler = handlers[command2] || handlers[aliasMap[command2]] || defaultCommand; + const currentContext = yargs2.getContext(); + let numFiles = currentContext.files.length; + const parentCommands = currentContext.commands.slice(); + let innerArgv = parsed.argv; + let positionalMap = {}; + if (command2) { + currentContext.commands.push(command2); + currentContext.fullCommands.push(commandHandler.original); + } + const builder = commandHandler.builder; + if (isCommandBuilderCallback(builder)) { + const builderOutput = builder(yargs2.reset(parsed.aliases)); + const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs2; + if (shouldUpdateUsage(innerYargs)) { + innerYargs.getUsageInstance().usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); + aliases = innerYargs.parsed.aliases; + } else if (isCommandBuilderOptionDefinitions(builder)) { + const innerYargs = yargs2.reset(parsed.aliases); + if (shouldUpdateUsage(innerYargs)) { + innerYargs.getUsageInstance().usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + Object.keys(commandHandler.builder).forEach((key) => { + innerYargs.option(key, builder[key]); + }); + innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); + aliases = innerYargs.parsed.aliases; + } + if (!yargs2._hasOutput()) { + positionalMap = populatePositionals(commandHandler, innerArgv, currentContext); + } + const middlewares = globalMiddleware.slice(0).concat(commandHandler.middlewares); + applyMiddleware(innerArgv, yargs2, middlewares, true); + if (!yargs2._hasOutput()) { + yargs2._runValidation(innerArgv, aliases, positionalMap, yargs2.parsed.error, !command2); + } + if (commandHandler.handler && !yargs2._hasOutput()) { + yargs2._setHasOutput(); + const populateDoubleDash = !!yargs2.getOptions().configuration["populate--"]; + yargs2._postProcess(innerArgv, populateDoubleDash); + innerArgv = applyMiddleware(innerArgv, yargs2, middlewares, false); + let handlerResult; + if (isPromise(innerArgv)) { + handlerResult = innerArgv.then((argv) => commandHandler.handler(argv)); + } else { + handlerResult = commandHandler.handler(innerArgv); + } + const handlerFinishCommand = yargs2.getHandlerFinishCommand(); + if (isPromise(handlerResult)) { + yargs2.getUsageInstance().cacheHelpMessage(); + handlerResult.then((value) => { + if (handlerFinishCommand) { + handlerFinishCommand(value); + } + }).catch((error) => { + try { + yargs2.getUsageInstance().fail(null, error); + } catch (err) { + } + }).then(() => { + yargs2.getUsageInstance().clearCachedHelpMessage(); + }); + } else { + if (handlerFinishCommand) { + handlerFinishCommand(handlerResult); } - if (conf.bail) { - kill(); + } + } + if (command2) { + currentContext.commands.pop(); + currentContext.fullCommands.pop(); + } + numFiles = currentContext.files.length - numFiles; + if (numFiles > 0) + currentContext.files.splice(numFiles * -1, numFiles); + return innerArgv; + }; + function shouldUpdateUsage(yargs2) { + return !yargs2.getUsageInstance().getUsageDisabled() && yargs2.getUsageInstance().getUsage().length === 0; + } + function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { + const c = DEFAULT_MARKER.test(commandHandler.original) ? commandHandler.original.replace(DEFAULT_MARKER, "").trim() : commandHandler.original; + const pc = parentCommands.filter((c2) => { + return !DEFAULT_MARKER.test(c2); + }); + pc.push(c); + return `\$0 ${pc.join(" ")}`; + } + self.runDefaultBuilderOn = function(yargs2) { + assertNotStrictEqual(defaultCommand, undefined, shim2); + if (shouldUpdateUsage(yargs2)) { + const commandString = DEFAULT_MARKER.test(defaultCommand.original) ? defaultCommand.original : defaultCommand.original.replace(/^[^[\]<>]*/, "$0 "); + yargs2.getUsageInstance().usage(commandString, defaultCommand.description); + } + const builder = defaultCommand.builder; + if (isCommandBuilderCallback(builder)) { + builder(yargs2); + } else if (!isCommandBuilderDefinition(builder)) { + Object.keys(builder).forEach((key) => { + yargs2.option(key, builder[key]); + }); + } + }; + function populatePositionals(commandHandler, argv, context) { + argv._ = argv._.slice(context.commands.length); + const demanded = commandHandler.demanded.slice(0); + const optional = commandHandler.optional.slice(0); + const positionalMap = {}; + validation.positionalCount(demanded.length, argv._.length); + while (demanded.length) { + const demand = demanded.shift(); + populatePositional(demand, argv, positionalMap); + } + while (optional.length) { + const maybe = optional.shift(); + populatePositional(maybe, argv, positionalMap); + } + argv._ = context.commands.concat(argv._.map((a) => "" + a)); + postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original)); + return positionalMap; + } + function populatePositional(positional, argv, positionalMap) { + const cmd = positional.cmd[0]; + if (positional.variadic) { + positionalMap[cmd] = argv._.splice(0).map(String); + } else { + if (argv._.length) + positionalMap[cmd] = [String(argv._.shift())]; + } + } + function postProcessPositionals(argv, positionalMap, parseOptions) { + const options = Object.assign({}, yargs.getOptions()); + options.default = Object.assign(parseOptions.default, options.default); + for (const key of Object.keys(parseOptions.alias)) { + options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); + } + options.array = options.array.concat(parseOptions.array); + options.config = {}; + const unparsed = []; + Object.keys(positionalMap).forEach((key) => { + positionalMap[key].map((value) => { + if (options.configuration["unknown-options-as-args"]) + options.key[key] = true; + unparsed.push(`--${key}`); + unparsed.push(value); + }); + }); + if (!unparsed.length) + return; + const config = Object.assign({}, options.configuration, { + "populate--": true + }); + const parsed = shim2.Parser.detailed(unparsed, Object.assign({}, options, { + configuration: config + })); + if (parsed.error) { + yargs.getUsageInstance().fail(parsed.error.message, parsed.error); + } else { + const positionalKeys = Object.keys(positionalMap); + Object.keys(positionalMap).forEach((key) => { + positionalKeys.push(...parsed.aliases[key]); + }); + Object.keys(parsed.argv).forEach((key) => { + if (positionalKeys.indexOf(key) !== -1) { + if (!positionalMap[key]) + positionalMap[key] = parsed.argv[key]; + argv[key] = parsed.argv[key]; } - return false; + }); + } + } + self.cmdToParseOptions = function(cmdString) { + const parseOptions = { + array: [], + default: {}, + alias: {}, + demand: {} }; - var die = function (msg, data, displayHelp) { - if ( msg === void 0 ) msg = ''; - if ( data === void 0 ) data = ''; - if ( displayHelp === void 0 ) displayHelp = false; - - if (displayHelp && !conf.quietTotal) { - conf.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); - }; - function debug(data) { - if (conf.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } - } - function step(data) { - if (conf.verbose) { - console.error(font.gray(data)); - } - } - function kill(error, msg) { - if ( error === void 0 ) error = 1; - if ( msg === void 0 ) msg = ''; - - msg && console.error(+msg); - process.exit(+error); - } - - var fs = require('fs-extra'); - var path = require('path'); - var fGlob = require('fast-glob'); - require('globs'); - var now = new Date(); - var re = { - euro: /€/g, - section: /§/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, - }; - var version = '7.1.3-y'; - function engine(conf) { - if ( conf === void 0 ) conf = { engine: 'V8' }; - - outputConfig(conf); - step('Displaying steps for:'); - step(conf); - conf.pattern = getPattern(conf.pattern, conf) || ''; - conf.replacement = getReplacement(conf.replacement, conf) || ''; - conf.replacementOri = conf.replacement; - conf.regex = getRegex(conf.pattern, conf) || ''; - step(conf); - conf.files = getFilePaths(conf); - if (!conf.files.length) { - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } - return error(conf.files.length + ' files found'); - } - chat(conf.files.length + ' files found'); - step(conf); - conf.files - // Find out if any filepaths are invalid - .filter(function (filepath) { return (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath)); }) - // Do the replacement - .forEach(function (filepath) { return openFile(filepath, conf); }); - } - function openFile(file, conf) { - if (conf.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, conf.encoding); - return doReplacement(file, conf, data); + const parsed = parseCommand(cmdString); + parsed.demanded.forEach((d) => { + const [cmd, ...aliases] = d.cmd; + if (d.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + parseOptions.demand[cmd] = true; + }); + parsed.optional.forEach((o) => { + const [cmd, ...aliases] = o.cmd; + if (o.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + }); + return parseOptions; + }; + self.reset = () => { + handlers = {}; + aliasMap = {}; + defaultCommand = undefined; + return self; + }; + const frozens = []; + self.freeze = () => { + frozens.push({ + handlers, + aliasMap, + defaultCommand + }); + }; + self.unfreeze = () => { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim2); + ({ handlers, aliasMap, defaultCommand } = frozen); + }; + return self; +} +function isCommandBuilderDefinition(builder) { + return typeof builder === "object" && !!builder.builder && typeof builder.handler === "function"; +} +var isCommandAndAliases = function(cmd) { + if (cmd.every((c) => typeof c === "string")) { + return true; + } else { + return false; + } +}; +function isCommandBuilderCallback(builder) { + return typeof builder === "function"; +} +var isCommandBuilderOptionDefinitions = function(builder) { + return typeof builder === "object"; +}; +function isCommandHandlerDefinition(cmd) { + return typeof cmd === "object" && !Array.isArray(cmd); +} +var DEFAULT_MARKER = /(^\*)|(^\$0)/; + +// node_modules/yargs/build/lib/utils/obj-filter.js +function objFilter(original = {}, filter = () => true) { + const obj = {}; + objectKeys(original).forEach((key) => { + if (filter(key, original[key])) { + obj[key] = original[key]; + } + }); + return obj; +} + +// node_modules/yargs/build/lib/utils/set-blocking.js +function setBlocking(blocking) { + if (typeof process === "undefined") + return; + [process.stdout, process.stderr].forEach((_stream) => { + const stream = _stream; + if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === "function") { + stream._handle.setBlocking(blocking); + } + }); +} + +// node_modules/yargs/build/lib/usage.js +function usage(yargs, y18n3, shim2) { + const __ = y18n3.__; + const self = {}; + const fails = []; + self.failFn = function failFn(f) { + fails.push(f); + }; + let failMessage = null; + let showHelpOnFail = true; + self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { + function parseFunctionArgs() { + return typeof arg1 === "string" ? [true, arg1] : [arg1, arg2]; + } + const [enabled, message] = parseFunctionArgs(); + failMessage = message; + showHelpOnFail = enabled; + return self; + }; + let failureOutput = false; + self.fail = function fail(msg, err) { + const logger = yargs._getLoggerInstance(); + if (fails.length) { + for (let i = fails.length - 1;i >= 0; --i) { + fails[i](msg, err, self); + } + } else { + if (yargs.getExitProcess()) + setBlocking(true); + if (!failureOutput) { + failureOutput = true; + if (showHelpOnFail) { + yargs.showHelp("error"); + logger.error(); } - else { - chat('Open async: ' + file); - fs.readFile(file, conf.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, conf, data); - }); + if (msg || err) + logger.error(msg || err); + if (failMessage) { + if (msg || err) + logger.error(""); + logger.error(failMessage); } + } + err = err || new YError(msg); + if (yargs.getExitProcess()) { + return yargs.exit(1); + } else if (yargs._hasParseCallback()) { + return yargs.exit(1, err); + } else { + throw err; + } + } + }; + let usages = []; + let usageDisabled = false; + self.usage = (msg, description) => { + if (msg === null) { + usageDisabled = true; + usages = []; + return self; + } + usageDisabled = false; + usages.push([msg, description || ""]); + return self; + }; + self.getUsage = () => { + return usages; + }; + self.getUsageDisabled = () => { + return usageDisabled; + }; + self.getPositionalGroupName = () => { + return __("Positionals:"); + }; + let examples = []; + self.example = (cmd, description) => { + examples.push([cmd, description || ""]); + }; + let commands = []; + self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { + if (isDefault) { + commands = commands.map((cmdArray) => { + cmdArray[2] = false; + return cmdArray; + }); + } + commands.push([cmd, description || "", isDefault, aliases, deprecated]); + }; + self.getCommands = () => commands; + let descriptions = {}; + self.describe = function describe(keyOrKeys, desc) { + if (Array.isArray(keyOrKeys)) { + keyOrKeys.forEach((k) => { + self.describe(k, desc); + }); + } else if (typeof keyOrKeys === "object") { + Object.keys(keyOrKeys).forEach((k) => { + self.describe(k, keyOrKeys[k]); + }); + } else { + descriptions[keyOrKeys] = desc; + } + }; + self.getDescriptions = () => descriptions; + let epilogs = []; + self.epilog = (msg) => { + epilogs.push(msg); + }; + let wrapSet = false; + let wrap2; + self.wrap = (cols) => { + wrapSet = true; + wrap2 = cols; + }; + function getWrap() { + if (!wrapSet) { + wrap2 = windowWidth(); + wrapSet = true; } - // postfix argument names to limit the probabillity of user inputted javascript accidently using same values - function doReplacement(filePath, conf, content) { - debug('Work on content from: ' + filePath); - // Variables to be accessible from js. - if (conf.replacementJs) { - conf.replacement = dynamicReplacement(filePath, conf, content); + return wrap2; + } + const deferY18nLookupPrefix = "__yargsString__:"; + self.deferY18nLookup = (str) => deferY18nLookupPrefix + str; + self.help = function help() { + if (cachedHelpMessage) + return cachedHelpMessage; + normalizeAliases(); + const base$0 = yargs.customScriptName ? yargs.$0 : shim2.path.basename(yargs.$0); + const demandedOptions = yargs.getDemandedOptions(); + const demandedCommands = yargs.getDemandedCommands(); + const deprecatedOptions = yargs.getDeprecatedOptions(); + const groups = yargs.getGroups(); + const options = yargs.getOptions(); + let keys = []; + keys = keys.concat(Object.keys(descriptions)); + keys = keys.concat(Object.keys(demandedOptions)); + keys = keys.concat(Object.keys(demandedCommands)); + keys = keys.concat(Object.keys(options.default)); + keys = keys.filter(filterHiddenOptions); + keys = Object.keys(keys.reduce((acc, key) => { + if (key !== "_") + acc[key] = true; + return acc; + }, {})); + const theWrap = getWrap(); + const ui2 = shim2.cliui({ + width: theWrap, + wrap: !!theWrap + }); + if (!usageDisabled) { + if (usages.length) { + usages.forEach((usage2) => { + ui2.div(`${usage2[0].replace(/\$0/g, base$0)}`); + if (usage2[1]) { + ui2.div({ text: `${usage2[1]}`, padding: [1, 0, 0, 0] }); + } + }); + ui2.div(); + } else if (commands.length) { + let u = null; + if (demandedCommands._) { + u = `${base$0} <${__("command")}>\n`; + } else { + u = `${base$0} [${__("command")}]\n`; } - // Main regexp of the whole thing - var result = content.replace(conf.regex, conf.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (conf.outputMatch) { - return; + ui2.div(`${u}`); + } + } + if (commands.length) { + ui2.div(__("Commands:")); + const context = yargs.getContext(); + const parentCommands = context.commands.length ? `${context.commands.join(" ")} ` : ""; + if (yargs.getParserConfiguration()["sort-commands"] === true) { + commands = commands.sort((a, b) => a[0].localeCompare(b[0])); + } + commands.forEach((command2) => { + const commandString = `${base$0} ${parentCommands}${command2[0].replace(/^\$0 ?/, "")}`; + ui2.span({ + text: commandString, + padding: [0, 2, 0, 2], + width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4 + }, { text: command2[1] }); + const hints = []; + if (command2[2]) + hints.push(`[${__("default")}]`); + if (command2[3] && command2[3].length) { + hints.push(`[${__("aliases:")} ${command2[3].join(", ")}]`); } - if (conf.output) { - debug('Output result from: ' + filePath); - return process.stdout.write(result); + if (command2[4]) { + if (typeof command2[4] === "string") { + hints.push(`[${__("deprecated: %s", command2[4])}]`); + } else { + hints.push(`[${__("deprecated")}]`); + } } - // Nothing replaced = no need for writing file again - if (result === content) { - debug('Nothing changed in: ' + filePath); - return; + if (hints.length) { + ui2.div({ + text: hints.join(" "), + padding: [0, 0, 0, 2], + align: "right" + }); + } else { + ui2.div(); } - // Release the memory while storing files - content = ''; - debug('Write udpated content to: ' + filePath); - if (conf.simulate) - { return info(filePath); } - // Write directly to the same file (if the process is killed all new and old data is lost) - if (conf.voidBackup) { - return fs.writeFile(filePath, result, conf.encoding, function (err) { - if (err) { - return error(err); - } - info(filePath); - }); + }); + ui2.div(); + } + const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); + keys = keys.filter((key) => !yargs.parsed.newAliases[key] && aliasKeys.every((alias) => (options.alias[alias] || []).indexOf(key) === -1)); + const defaultGroup = __("Options:"); + if (!groups[defaultGroup]) + groups[defaultGroup] = []; + addUngroupedKeys(keys, options.alias, groups, defaultGroup); + const isLongSwitch = (sw) => /^--/.test(getText(sw)); + const displayedGroups = Object.keys(groups).filter((groupName) => groups[groupName].length > 0).map((groupName) => { + const normalizedKeys = groups[groupName].filter(filterHiddenOptions).map((key) => { + if (~aliasKeys.indexOf(key)) + return key; + for (let i = 0, aliasKey;(aliasKey = aliasKeys[i]) !== undefined; i++) { + if (~(options.alias[aliasKey] || []).indexOf(key)) + return aliasKey; } - //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), filePath)); - var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; - if (conf.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, conf.encoding); - if (!conf.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); - } - return info(filePath); + return key; + }); + return { groupName, normalizedKeys }; + }).filter(({ normalizedKeys }) => normalizedKeys.length > 0).map(({ groupName, normalizedKeys }) => { + const switches = normalizedKeys.reduce((acc, key) => { + acc[key] = [key].concat(options.alias[key] || []).map((sw) => { + if (groupName === self.getPositionalGroupName()) + return sw; + else { + return (/^[0-9]$/.test(sw) ? ~options.boolean.indexOf(key) ? "-" : "--" : sw.length > 1 ? "--" : "-") + sw; + } + }).sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) ? 0 : isLongSwitch(sw1) ? 1 : -1).join(", "); + return acc; + }, {}); + return { groupName, normalizedKeys, switches }; + }); + const shortSwitchesUsed = displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).some(({ normalizedKeys, switches }) => !normalizedKeys.every((key) => isLongSwitch(switches[key]))); + if (shortSwitchesUsed) { + displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).forEach(({ normalizedKeys, switches }) => { + normalizedKeys.forEach((key) => { + if (isLongSwitch(switches[key])) { + switches[key] = addIndentation(switches[key], "-x, ".length); + } + }); + }); + } + displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { + ui2.div(groupName); + normalizedKeys.forEach((key) => { + const kswitch = switches[key]; + let desc = descriptions[key] || ""; + let type = null; + if (~desc.lastIndexOf(deferY18nLookupPrefix)) + desc = __(desc.substring(deferY18nLookupPrefix.length)); + if (~options.boolean.indexOf(key)) + type = `[${__("boolean")}]`; + if (~options.count.indexOf(key)) + type = `[${__("count")}]`; + if (~options.string.indexOf(key)) + type = `[${__("string")}]`; + if (~options.normalize.indexOf(key)) + type = `[${__("string")}]`; + if (~options.array.indexOf(key)) + type = `[${__("array")}]`; + if (~options.number.indexOf(key)) + type = `[${__("number")}]`; + const deprecatedExtra = (deprecated) => typeof deprecated === "string" ? `[${__("deprecated: %s", deprecated)}]` : `[${__("deprecated")}]`; + const extra = [ + key in deprecatedOptions ? deprecatedExtra(deprecatedOptions[key]) : null, + type, + key in demandedOptions ? `[${__("required")}]` : null, + options.choices && options.choices[key] ? `[${__("choices:")} ${self.stringifiedValues(options.choices[key])}]` : null, + defaultString(options.default[key], options.defaultDescription[key]) + ].filter(Boolean).join(" "); + ui2.span({ + text: getText(kswitch), + padding: [0, 2, 0, 2 + getIndentation(kswitch)], + width: maxWidth(switches, theWrap) + 4 + }, desc); + if (extra) + ui2.div({ text: extra, padding: [0, 0, 0, 2], align: "right" }); + else + ui2.div(); + }); + ui2.div(); + }); + if (examples.length) { + ui2.div(__("Examples:")); + examples.forEach((example) => { + example[0] = example[0].replace(/\$0/g, base$0); + }); + examples.forEach((example) => { + if (example[1] === "") { + ui2.div({ + text: example[0], + padding: [0, 2, 0, 2] + }); + } else { + ui2.div({ + text: example[0], + padding: [0, 2, 0, 2], + width: maxWidth(examples, theWrap) + 4 + }, { + text: example[1] + }); } - // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, function (err) { - if (err) { - return error(err); - } - fs.writeFile(oriFile, result, conf.encoding, function (err) { - if (err) { - return error(err); - } - if (!conf.keepBackup) { - fs.unlink(backupFile, function (err) { - if (err) { - return error(err); - } - info(filePath); - }); - } - else { - info(filePath); - } + }); + ui2.div(); + } + if (epilogs.length > 0) { + const e = epilogs.map((epilog) => epilog.replace(/\$0/g, base$0)).join("\n"); + ui2.div(`${e}\n`); + } + return ui2.toString().replace(/\s*$/, ""); + }; + function maxWidth(table, theWrap, modifier) { + let width = 0; + if (!Array.isArray(table)) { + table = Object.values(table).map((v) => [v]); + } + table.forEach((v) => { + width = Math.max(shim2.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); + }); + if (theWrap) + width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); + return width; + } + function normalizeAliases() { + const demandedOptions = yargs.getDemandedOptions(); + const options = yargs.getOptions(); + (Object.keys(options.alias) || []).forEach((key) => { + options.alias[key].forEach((alias) => { + if (descriptions[alias]) + self.describe(key, descriptions[alias]); + if (alias in demandedOptions) + yargs.demandOption(key, demandedOptions[alias]); + if (~options.boolean.indexOf(alias)) + yargs.boolean(key); + if (~options.count.indexOf(alias)) + yargs.count(key); + if (~options.string.indexOf(alias)) + yargs.string(key); + if (~options.normalize.indexOf(alias)) + yargs.normalize(key); + if (~options.array.indexOf(alias)) + yargs.array(key); + if (~options.number.indexOf(alias)) + yargs.number(key); + }); + }); + } + let cachedHelpMessage; + self.cacheHelpMessage = function() { + cachedHelpMessage = this.help(); + }; + self.clearCachedHelpMessage = function() { + cachedHelpMessage = undefined; + }; + function addUngroupedKeys(keys, aliases, groups, defaultGroup) { + let groupedKeys = []; + let toCheck = null; + Object.keys(groups).forEach((group) => { + groupedKeys = groupedKeys.concat(groups[group]); + }); + keys.forEach((key) => { + toCheck = [key].concat(aliases[key]); + if (!toCheck.some((k) => groupedKeys.indexOf(k) !== -1)) { + groups[defaultGroup].push(key); + } + }); + return groupedKeys; + } + function filterHiddenOptions(key) { + return yargs.getOptions().hiddenOptions.indexOf(key) < 0 || yargs.parsed.argv[yargs.getOptions().showHiddenOpt]; + } + self.showHelp = (level) => { + const logger = yargs._getLoggerInstance(); + if (!level) + level = "error"; + const emit = typeof level === "function" ? level : logger[level]; + emit(self.help()); + }; + self.functionDescription = (fn) => { + const description = fn.name ? shim2.Parser.decamelize(fn.name, "-") : __("generated-value"); + return ["(", description, ")"].join(""); + }; + self.stringifiedValues = function stringifiedValues(values, separator) { + let string = ""; + const sep = separator || ", "; + const array = [].concat(values); + if (!values || !array.length) + return string; + array.forEach((value) => { + if (string.length) + string += sep; + string += JSON.stringify(value); + }); + return string; + }; + function defaultString(value, defaultDescription) { + let string = `[${__("default:")} `; + if (value === undefined && !defaultDescription) + return null; + if (defaultDescription) { + string += defaultDescription; + } else { + switch (typeof value) { + case "string": + string += `"${value}"`; + break; + case "object": + string += JSON.stringify(value); + break; + default: + string += value; + } + } + return `${string}]`; + } + function windowWidth() { + const maxWidth2 = 80; + if (shim2.process.stdColumns) { + return Math.min(maxWidth2, shim2.process.stdColumns); + } else { + return maxWidth2; + } + } + let version = null; + self.version = (ver) => { + version = ver; + }; + self.showVersion = () => { + const logger = yargs._getLoggerInstance(); + logger.log(version); + }; + self.reset = function reset(localLookup) { + failMessage = null; + failureOutput = false; + usages = []; + usageDisabled = false; + epilogs = []; + examples = []; + commands = []; + descriptions = objFilter(descriptions, (k) => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim2); + ({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions + } = frozen); + }; + return self; +} +var isIndentedText = function(text) { + return typeof text === "object"; +}; +var addIndentation = function(text, indent) { + return isIndentedText(text) ? { text: text.text, indentation: text.indentation + indent } : { text, indentation: indent }; +}; +var getIndentation = function(text) { + return isIndentedText(text) ? text.indentation : 0; +}; +var getText = function(text) { + return isIndentedText(text) ? text.text : text; +}; + +// node_modules/yargs/build/lib/completion-templates.js +var completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_yargs_completions() +{ + local cur_word args type_list + + cur_word="\${COMP_WORDS[COMP_CWORD]}" + args=("\${COMP_WORDS[@]}") + + # ask yargs to generate completions. + type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + + COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + + # if no match was found, fall back to filename completion + if [ \${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=() + fi + + return 0 +} +complete -o default -F _yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +var completionZshTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$' +' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; + +// node_modules/yargs/build/lib/completion.js +function completion(yargs, usage2, command3, shim2) { + const self = { + completionKey: "get-yargs-completions" + }; + let aliases; + self.setParsed = function setParsed(parsed) { + aliases = parsed.aliases; + }; + const zshShell = shim2.getEnv("SHELL") && shim2.getEnv("SHELL").indexOf("zsh") !== -1 || shim2.getEnv("ZSH_NAME") && shim2.getEnv("ZSH_NAME").indexOf("zsh") !== -1; + self.getCompletion = function getCompletion(args, done) { + const completions = []; + const current = args.length ? args[args.length - 1] : ""; + const argv = yargs.parse(args, true); + const parentCommands = yargs.getContext().commands; + function runCompletionFunction(argv2) { + assertNotStrictEqual(completionFunction, null, shim2); + if (isSyncCompletionFunction(completionFunction)) { + const result = completionFunction(current, argv2); + if (isPromise(result)) { + return result.then((list) => { + shim2.process.nextTick(() => { + done(list); + }); + }).catch((err) => { + shim2.process.nextTick(() => { + throw err; }); + }); + } + return done(result); + } else { + return completionFunction(current, argv2, (completions2) => { + done(completions2); }); + } } - function getPattern(pattern, conf) { - step('Get final pattern'); - pattern = replacePlaceholders(pattern, conf); - if (conf.literal) { - pattern = pattern.replace(re.regexSpecialChars, '\\$&'); - } - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); // js code?!? - }*/ - step(pattern); - return pattern; - } - function getReplacement(replacement, conf) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - replacement = replacePlaceholders(replacement, conf); - if (conf.outputMatch) { - step('Output match'); - if (parseInt(process.versions.node) < 6) { - return die('outputMatch is only supported in node 6+'); - } - return function () { - var arguments$1 = arguments; - - step(arguments); - if (arguments.length === 3) { - step('Printing full match'); - process.stdout.write(arguments[0] + '\n'); - return ''; - } - for (var i = 1; i < arguments.length - 2; i++) { - process.stdout.write(arguments$1[i]); - } - process.stdout.write('\n'); - return ''; - }; + if (completionFunction) { + return isPromise(argv) ? argv.then(runCompletionFunction) : runCompletionFunction(argv); + } + const handlers = command3.getCommandHandlers(); + for (let i = 0, ii = args.length;i < ii; ++i) { + if (handlers[args[i]] && handlers[args[i]].builder) { + const builder = handlers[args[i]].builder; + if (isCommandBuilderCallback(builder)) { + const y = yargs.reset(); + builder(y); + return y.argv; } - // If captured groups then run dynamicly - if (conf.replacementJs && - re.capturedGroupRef.test(conf.replacement) && - parseInt(process.versions.node) < 6) { - return die('Captured groups for javascript replacement is only supported in node 6+'); - } - step(replacement); - return replacement; - } - /*function oneLinerFromFile(str){ - let lines = str.split("\n"); - if(lines.length===1){ - return str; - } - return lines.map(function (line) { - return line.trim(); - }).join(' '); - }*/ - function getRegex(pattern, conf) { - step('Get final regex with engine: ' + conf.engine); - var regex; - var flags = getFlags(conf); - switch (conf.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (conf.debug) - { throw new Error(e); } - die(e.message); - } - break; - case 'RE2': - try { - var RE2 = require('re2'); - regex = new RE2(pattern, flags); - } - catch (e$1) { - if (conf.debug) - { throw new Error(e$1); } - die(e$1.message); - } - break; - default: - die(("Engine " + (conf.engine) + " not supported")); - } - step(regex); - return regex; - } - function getFlags(conf) { - step('Get flags'); - var flags = ''; - if (!conf.voidGlobal) { - flags += 'g'; - } - if (!conf.voidIgnoreCase) { - flags += 'i'; - } - if (!conf.voidMultiline) { - flags += 'm'; - } - if (conf.dotAll) { - flags += 's'; - } - if (conf.unicode) { - flags += 'u'; - } - step(flags); - return flags; - } - function readableSize(size) { - if (1 === size) { - return '1 Byte'; - } - var i = Math.floor(Math.log(size) / Math.log(1024)); - return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); - } - function dynamicReplacement(_file_rr, _config_rr, _data_rr) { - var _time_obj = now; - var _time = localTimeString(_time_obj); - var _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; - // prettier-ignore - var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + - 'var __require_ = require;' + - 'var r = function(file){' + - 'var result = null;' + - 'try{' + - 'result = __require_(file);' + - '} catch (e){' + - 'var dir = /^[\\\/]/.test(file) ? "" : cwd;' + - 'result = __require_(path.resolve(dir, file));' + - '};' + - 'return result;' + - '};' + - 'require = r;' + - 'return eval(__code_rr);'); - var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); - var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.contentWasPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); - _file_rel = path.relative(_cwd, _file); - var pathInfo = path.parse(_file); - _dirpath = pathInfo.dir; - _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = (_file.match(re.folderName) || ' _')[1]; - _filename = pathInfo.base; - _name = pathInfo.name; - _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - var fileStats = fs.statSync(_file); - _bytes = fileStats.size; - _size = readableSize(_bytes); - _mtime_obj = fileStats.mtime; - _ctime_obj = fileStats.ctime; - _mtime = localTimeString(_mtime_obj); - _ctime = localTimeString(_ctime_obj); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true }, b)); }; - // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); - } - // Capture groups used, so need to run once per match - return function () { - var arguments$1 = arguments; - - step(arguments); - var __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname = _dirname, __filename = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; - var capturedGroups = ''; - for (var i = 0; i < arguments.length - 2; i++) { - capturedGroups += 'var $' + i + '=' + JSON.stringify(arguments$1[i]) + '; '; - } - return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); - }; + } + } + if (!current.match(/^-/) && parentCommands[parentCommands.length - 1] !== current) { + usage2.getCommands().forEach((usageCommand) => { + const commandName = parseCommand(usageCommand[0]).cmd; + if (args.indexOf(commandName) === -1) { + if (!zshShell) { + completions.push(commandName); + } else { + const desc = usageCommand[1] || ""; + completions.push(commandName.replace(/:/g, "\\:") + ":" + desc); + } + } + }); } - function localTimeString(dateObj) { - if ( dateObj === void 0 ) dateObj = new Date(); + if (current.match(/^-/) || current === "" && completions.length === 0) { + const descs = usage2.getDescriptions(); + const options = yargs.getOptions(); + Object.keys(options.key).forEach((key) => { + const negable = !!options.configuration["boolean-negation"] && options.boolean.includes(key); + let keyAndAliases = [key].concat(aliases[key] || []); + if (negable) + keyAndAliases = keyAndAliases.concat(keyAndAliases.map((key2) => `no-${key2}`)); + function completeOptionKey(key2) { + const notInArgs = keyAndAliases.every((val) => args.indexOf(`--${val}`) === -1); + if (notInArgs) { + const startsByTwoDashes = (s) => /^--/.test(s); + const isShortOption = (s) => /^[^0-9]$/.test(s); + const dashes = !startsByTwoDashes(current) && isShortOption(key2) ? "-" : "--"; + if (!zshShell) { + completions.push(dashes + key2); + } else { + const desc = descs[key2] || ""; + completions.push(dashes + `${key2.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "")}`); + } + } + } + completeOptionKey(key); + if (negable && !!options.default[key]) + completeOptionKey(`no-${key}`); + }); + } + done(completions); + }; + self.generateCompletionScript = function generateCompletionScript($0, cmd) { + let script = zshShell ? completionZshTemplate : completionShTemplate; + const name = shim2.path.basename($0); + if ($0.match(/\.js$/)) + $0 = `./${$0}`; + script = script.replace(/{{app_name}}/g, name); + script = script.replace(/{{completion_command}}/g, cmd); + return script.replace(/{{app_path}}/g, $0); + }; + let completionFunction = null; + self.registerFunction = (fn) => { + completionFunction = fn; + }; + return self; +} +var isSyncCompletionFunction = function(completionFunction) { + return completionFunction.length < 3; +}; - return ((dateObj.getFullYear()) + "-" + (('0' + (dateObj.getMonth() + 1)).slice(-2)) + "-" + (('0' + dateObj.getDate()).slice(-2)) + " " + (('0' + dateObj.getHours()).slice(-2)) + ":" + (('0' + dateObj.getMinutes()).slice(-2)) + ":" + (('0' + dateObj.getSeconds()).slice(-2)) + "." + (('00' + dateObj.getMilliseconds()).slice(-3))); +// node_modules/yargs/build/lib/utils/levenshtein.js +function levenshtein(a, b) { + if (a.length === 0) + return b.length; + if (b.length === 0) + return a.length; + const matrix = []; + let i; + for (i = 0;i <= b.length; i++) { + matrix[i] = [i]; + } + let j; + for (j = 0;j <= a.length; j++) { + matrix[0][j] = j; + } + for (i = 1;i <= b.length; i++) { + for (j = 1;j <= a.length; j++) { + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } } - function replacePlaceholders(str, conf) { - if ( str === void 0 ) str = ''; + } + return matrix[b.length][a.length]; +} - if (!conf.voidEuro) { - str = str.replace(re.euro, '$'); +// node_modules/yargs/build/lib/validation.js +function validation(yargs, usage2, y18n3, shim2) { + const __ = y18n3.__; + const __n = y18n3.__n; + const self = {}; + self.nonOptionCount = function nonOptionCount(argv) { + const demandedCommands = yargs.getDemandedCommands(); + const positionalCount = argv._.length + (argv["--"] ? argv["--"].length : 0); + const _s = positionalCount - yargs.getContext().commands.length; + if (demandedCommands._ && (_s < demandedCommands._.min || _s > demandedCommands._.max)) { + if (_s < demandedCommands._.min) { + if (demandedCommands._.minMsg !== undefined) { + usage2.fail(demandedCommands._.minMsg ? demandedCommands._.minMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.min.toString()) : null); + } else { + usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", _s, _s.toString(), demandedCommands._.min.toString())); } - if (!conf.voidSection) { - str = str.replace(re.section, '\\'); + } else if (_s > demandedCommands._.max) { + if (demandedCommands._.maxMsg !== undefined) { + usage2.fail(demandedCommands._.maxMsg ? demandedCommands._.maxMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.max.toString()) : null); + } else { + usage2.fail(__n("Too many non-option arguments: got %s, maximum of %s", "Too many non-option arguments: got %s, maximum of %s", _s, _s.toString(), demandedCommands._.max.toString())); } - return str; + } } - function getFilePaths(conf) { - var includeGlob = conf.includeGlob; - var excludeGlob = conf.excludeGlob; - var excludeRe = conf.excludeRe; - var voidIgnoreCase = conf.voidIgnoreCase; - var filesToInclude = fGlob.sync(includeGlob, { - ignore: excludeGlob, - onlyFiles: true, - unique: true, - caseSensitiveMatch: !voidIgnoreCase, - dot: true, - }); - if (excludeRe.length) { - excludeRe - .map(function (el) { return getRegex(getPattern(el, conf), conf); }) - .forEach(function (re) { - filesToInclude = filesToInclude.filter(function (el) { return !el.match(re); }); - }); + }; + self.positionalCount = function positionalCount(required, observed) { + if (observed < required) { + usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", observed, observed + "", required + "")); + } + }; + self.requiredArguments = function requiredArguments(argv) { + const demandedOptions = yargs.getDemandedOptions(); + let missing = null; + for (const key of Object.keys(demandedOptions)) { + if (!Object.prototype.hasOwnProperty.call(argv, key) || typeof argv[key] === "undefined") { + missing = missing || {}; + missing[key] = demandedOptions[key]; + } + } + if (missing) { + const customMsgs = []; + for (const key of Object.keys(missing)) { + const msg = missing[key]; + if (msg && customMsgs.indexOf(msg) < 0) { + customMsgs.push(msg); } - return filesToInclude; + } + const customMsg = customMsgs.length ? `\n${customMsgs.join("\n")}` : ""; + usage2.fail(__n("Missing required argument: %s", "Missing required arguments: %s", Object.keys(missing).length, Object.keys(missing).join(", ") + customMsg)); } - - // CLI interface for rexreplace - var yargs = require('yargs/yargs'); - executeReplacement(cli2conf(process.argv.slice(2))); - function cli2conf(args) { - var assign; - - var pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help - var needHelp = 0; - if (args.length < 2) { - if (/-v|--?version$/i.test(args.slice(-1)[0])) { - console.log(version); - process.exitCode = 0; - process.exit(); - } - else if (/-h|--?help$/i.test(args.slice(-1)[0])) { - needHelp = 1; - } - else { - needHelp = 2; - } + }; + self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { + const commandKeys = yargs.getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getContext(); + Object.keys(argv).forEach((key) => { + if (specialKeys.indexOf(key) === -1 && !Object.prototype.hasOwnProperty.call(positionalMap, key) && !Object.prototype.hasOwnProperty.call(yargs._getParseContext(), key) && !self.isValidAndSomeAliasIsNotNew(key, aliases)) { + unknown.push(key); + } + }); + if (checkPositionals && (currentContext.commands.length > 0 || commandKeys.length > 0 || isDefaultCommand)) { + argv._.slice(currentContext.commands.length).forEach((key) => { + if (commandKeys.indexOf("" + key) === -1) { + unknown.push("" + key); } - else { - (assign = args.splice(0, 2), pattern = assign[0], replacement = assign[1]); - } - var argv = yargs(args.slice(2)) - .strict() - .usage('RexReplace v' + - version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") - .example('') - .example("> rr xxx Foo myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") - .example('') - .example("> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md", "'foobar' in myfile.md will become 'barfoo'") - .example('') - .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") - .example('') - .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") - .version('v', 'Print rexreplace version (can be given as only argument)', version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' ]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .alias('H', 'bail') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') - .boolean('m') - .describe('m', "Output each match on a new line. " + - "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + - "If search pattern does not contain matching groups the full match will be outputted. " + - "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + - "") - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe('T', "Trim piped data before processing. " + - "If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. " + - '') - .boolean('R') - .alias('R', 'replacement-pipe') - .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') - .describe('G', "filename/globs provided are to files containing one target filename/glob per line") - .alias('G', 'glob-file') - .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - /* - - - -T (Expect no match in any file and return exit 1 if found) - -t (Expect a match in each file and return exit 1 if not found) - - - .boolean('N') - .alias('N', 'void-newline') - .describe('N', - `Avoid having newline when outputting data (or when piping). `+ - `Normally . `+ - '' - ) - - - - .boolean('p') - .describe('p', "Pattern is the path to a filename containing the pattern. If more than one line is found in the file the pattern will be defined by each line trimmed and having newlines removed followed by other all rules (like -€).)") - .alias('p', 'pattern-file') - - - .boolean('r') - .alias('r', 'replacement-file') - .describe('r', - `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` - ) - - - - .boolean('n') - .describe('n', "Do replacement on file path+name instead of file content (rename/move the files)") - .alias('n', 'name') - - // https://github.com/eugeneware/replacestream - .integer('M') - .describe('M', "Maximum length of match. Set this value only if any single file of your ") - .alias('M', 'max-match-len') - .default('M', false) - - - - - - .boolean('J') - .describe('J', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('J', 'pattern-js') - - - .boolean('glob-js') - .describe('glob-js', "filename/globs are javascript source that will return a string with newline seperating each glob to work on") - - - */ - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - .epilog("Inspiration: .oO(What should 'sed' have been by now?)").argv; - // All options into one big config object for the rexreplace engine - var conf = {}; - // Use only camelCase full lenght version of settings - Object.keys(argv).forEach(function (key) { - if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = argv[key]; - } - }); - conf.pipeData = null; - conf.showHelp = argv.showHelp; - conf.needHelp = needHelp; - conf.pattern = pattern; - conf.includeGlob = argv._; - conf.excludeGlob = [].concat( argv.excludeGlob ).filter(Boolean); - conf.excludeRe = [].concat( argv.excludeRe ).filter(Boolean); - conf.replacement = replacement; - if (!conf.replacementJs) { - conf.replacement = unescapeString(conf.replacement); - } - return conf; - } - function executeReplacement(conf) { - if (0 < conf.needHelp) { - return backOut(conf.needHelp - 1, conf.showHelp); - } - if (conf.output) - { process.stdout.setDefaultEncoding(conf.encoding); } - if (Boolean(process.stdin.isTTY)) - { return engine(conf); } - process.stdin.setEncoding(conf.encoding); - var pipeInUse = false; - var pipeData = ''; - process.stdin.on('readable', function () { - var chunk = process.stdin.read(); - if (null !== chunk) { - pipeInUse = true; - pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } - } + }); + } + if (unknown.length > 0) { + usage2.fail(__n("Unknown argument: %s", "Unknown arguments: %s", unknown.length, unknown.join(", "))); + } + }; + self.unknownCommands = function unknownCommands(argv) { + const commandKeys = yargs.getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getContext(); + if (currentContext.commands.length > 0 || commandKeys.length > 0) { + argv._.slice(currentContext.commands.length).forEach((key) => { + if (commandKeys.indexOf("" + key) === -1) { + unknown.push("" + key); + } + }); + } + if (unknown.length > 0) { + usage2.fail(__n("Unknown command: %s", "Unknown commands: %s", unknown.length, unknown.join(", "))); + return true; + } else { + return false; + } + }; + self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { + if (!Object.prototype.hasOwnProperty.call(aliases, key)) { + return false; + } + const newAliases = yargs.parsed.newAliases; + for (const a of [key, ...aliases[key]]) { + if (!Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]) { + return true; + } + } + return false; + }; + self.limitedChoices = function limitedChoices(argv) { + const options = yargs.getOptions(); + const invalid = {}; + if (!Object.keys(options.choices).length) + return; + Object.keys(argv).forEach((key) => { + if (specialKeys.indexOf(key) === -1 && Object.prototype.hasOwnProperty.call(options.choices, key)) { + [].concat(argv[key]).forEach((value) => { + if (options.choices[key].indexOf(value) === -1 && value !== undefined) { + invalid[key] = (invalid[key] || []).concat(value); + } }); - process.stdin.on('end', function () { - if (pipeInUse) { - if (conf.trimPipe) { - pipeData = pipeData.trim(); - } - conf.pipeData = pipeData; - } - engine(handlePipeData(conf)); + } + }); + const invalidKeys = Object.keys(invalid); + if (!invalidKeys.length) + return; + let msg = __("Invalid values:"); + invalidKeys.forEach((key) => { + msg += `\n ${__("Argument: %s, Given: %s, Choices: %s", key, usage2.stringifiedValues(invalid[key]), usage2.stringifiedValues(options.choices[key]))}`; + }); + usage2.fail(msg); + }; + let checks = []; + self.check = function check(f, global2) { + checks.push({ + func: f, + global: global2 + }); + }; + self.customChecks = function customChecks(argv, aliases) { + for (let i = 0, f;(f = checks[i]) !== undefined; i++) { + const func = f.func; + let result = null; + try { + result = func(argv, aliases); + } catch (err) { + usage2.fail(err.message ? err.message : err, err); + continue; + } + if (!result) { + usage2.fail(__("Argument check failed: %s", func.toString())); + } else if (typeof result === "string" || result instanceof Error) { + usage2.fail(result.toString(), result); + } + } + }; + let implied = {}; + self.implies = function implies(key, value) { + argsert(" [array|number|string]", [key, value], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.implies(k, key[k]); + }); + } else { + yargs.global(key); + if (!implied[key]) { + implied[key] = []; + } + if (Array.isArray(value)) { + value.forEach((i) => self.implies(key, i)); + } else { + assertNotStrictEqual(value, undefined, shim2); + implied[key].push(value); + } + } + }; + self.getImplied = function getImplied() { + return implied; + }; + function keyExists(argv, val) { + const num = Number(val); + val = isNaN(num) ? val : num; + if (typeof val === "number") { + val = argv._.length >= val; + } else if (val.match(/^--no-.+/)) { + val = val.match(/^--no-(.+)/)[1]; + val = !argv[val]; + } else { + val = argv[val]; + } + return val; + } + self.implications = function implications(argv) { + const implyFail = []; + Object.keys(implied).forEach((key) => { + const origKey = key; + (implied[key] || []).forEach((value) => { + let key2 = origKey; + const origValue = value; + key2 = keyExists(argv, key2); + value = keyExists(argv, value); + if (key2 && !value) { + implyFail.push(` ${origKey} -> ${origValue}`); + } + }); + }); + if (implyFail.length) { + let msg = `${__("Implications failed:")}\n`; + implyFail.forEach((value) => { + msg += value; + }); + usage2.fail(msg); + } + }; + let conflicting = {}; + self.conflicts = function conflicts(key, value) { + argsert(" [array|string]", [key, value], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.conflicts(k, key[k]); + }); + } else { + yargs.global(key); + if (!conflicting[key]) { + conflicting[key] = []; + } + if (Array.isArray(value)) { + value.forEach((i) => self.conflicts(key, i)); + } else { + conflicting[key].push(value); + } + } + }; + self.getConflicting = () => conflicting; + self.conflicting = function conflictingFn(argv) { + Object.keys(argv).forEach((key) => { + if (conflicting[key]) { + conflicting[key].forEach((value) => { + if (value && argv[key] !== undefined && argv[value] !== undefined) { + usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); + } }); + } + }); + }; + self.recommendCommands = function recommendCommands(cmd, potentialCommands) { + const threshold = 3; + potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); + let recommended = null; + let bestDistance = Infinity; + for (let i = 0, candidate;(candidate = potentialCommands[i]) !== undefined; i++) { + const d = levenshtein(cmd, candidate); + if (d <= threshold && d < bestDistance) { + bestDistance = d; + recommended = candidate; + } } - function backOut(exitcode, cb) { - if ( exitcode === void 0 ) exitcode = 1; + if (recommended) + usage2.fail(__("Did you mean %s?", recommended)); + }; + self.reset = function reset(localLookup) { + implied = objFilter(implied, (k) => !localLookup[k]); + conflicting = objFilter(conflicting, (k) => !localLookup[k]); + checks = checks.filter((c) => c.global); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + implied, + checks, + conflicting + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim2); + ({ implied, checks, conflicting } = frozen); + }; + return self; +} +var specialKeys = ["$0", "--", "_"]; - cb && cb(); - process.exitCode = exitcode; - process.exit(); +// node_modules/yargs/build/lib/utils/apply-extends.js +function applyExtends(config, cwd, mergeExtends, _shim) { + shim2 = _shim; + let defaultConfig = {}; + if (Object.prototype.hasOwnProperty.call(config, "extends")) { + if (typeof config.extends !== "string") + return defaultConfig; + const isPath = /\.json|\..*rc$/.test(config.extends); + let pathToDefault = null; + if (!isPath) { + try { + pathToDefault = require.resolve(config.extends); + } catch (_err) { + return config; + } + } else { + pathToDefault = getPathToDefaultConfig(cwd, config.extends); } - function unescapeString(str) { - if ( str === void 0 ) str = ''; + checkForCircularExtends(pathToDefault); + previouslyVisitedConfigs.push(pathToDefault); + defaultConfig = isPath ? JSON.parse(shim2.readFileSync(pathToDefault, "utf8")) : import.meta.require(config.extends); + delete config.extends; + defaultConfig = applyExtends(defaultConfig, shim2.path.dirname(pathToDefault), mergeExtends, shim2); + } + previouslyVisitedConfigs = []; + return mergeExtends ? mergeDeep(defaultConfig, config) : Object.assign({}, defaultConfig, config); +} +var checkForCircularExtends = function(cfgPath) { + if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { + throw new YError(`Circular extended configurations: '${cfgPath}'.`); + } +}; +var getPathToDefaultConfig = function(cwd, pathToExtend) { + return shim2.path.resolve(cwd, pathToExtend); +}; +var mergeDeep = function(config1, config2) { + const target = {}; + function isObject(obj) { + return obj && typeof obj === "object" && !Array.isArray(obj); + } + Object.assign(target, config1); + for (const key of Object.keys(config2)) { + if (isObject(config2[key]) && isObject(target[key])) { + target[key] = mergeDeep(config1[key], config2[key]); + } else { + target[key] = config2[key]; + } + } + return target; +}; +var previouslyVisitedConfigs = []; +var shim2; - return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); +// node_modules/yargs/build/lib/yargs-factory.js +function YargsWithShim(_shim) { + shim3 = _shim; + return Yargs; +} +var Yargs = function(processArgs = [], cwd = shim3.process.cwd(), parentRequire) { + const self = {}; + let command4; + let completion3 = null; + let groups = {}; + const globalMiddleware = []; + let output = ""; + const preservedGroups = {}; + let usage3; + let validation3; + let handlerFinishCommand = null; + const y18n3 = shim3.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(shim3.process.argv()[0])) { + default$0 = shim3.process.argv().slice(1, 2); + } else { + default$0 = shim3.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 (shim3.getEnv("_") && shim3.getProcessArgvBin() === shim3.getEnv("_")) { + self.$0 = shim3.getEnv("_").replace(`${shim3.path.dirname(shim3.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) + shim3.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; } - function handlePipeData(conf) { - process.stdin.setDefaultEncoding(conf.encoding); - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - return die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } + completionCommand = cmd || completionCommand || "completion"; + if (!desc && desc !== false) { + desc = "generate completion script"; + } + self.command(completionCommand, desc); + if (fn) + completion3.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((k2) => !localLookup[k2]); + }); + objectOptions.forEach((k) => { + tmpOptions[k] = objFilter(options[k], (k2) => !localLookup[k2]); + }); + tmpOptions.envPrefix = options.envPrefix; + options = tmpOptions; + usage3 = usage3 ? usage3.reset(localLookup) : usage(self, y18n3, shim3); + validation3 = validation3 ? validation3.reset(localLookup) : validation(self, usage3, y18n3, shim3); + command4 = command4 ? command4.reset() : command(self, usage3, validation3, globalMiddleware, shim3); + if (!completion3) + completion3 = completion(self, usage3, command4, shim3); + 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 + }); + usage3.freeze(); + validation3.freeze(); + command4.freeze(); + } + function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim3); + let configObjects; + ({ + options, + configObjects, + exitProcess, + groups, + output, + exitError, + hasOutput, + parsed: self.parsed, + strict, + strictCommands, + strictOptions, + completionCommand, + parseFn, + parseContext, + handlerFinishCommand + } = frozen); + options.configObjects = configObjects; + usage3.unfreeze(); + validation3.unfreeze(); + command4.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 = sanitizeKey2(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(" [string|array]", [key, value], arguments.length); + populateParserHintArrayDictionary(self.choices, "choices", key, value); + return self; + }; + self.alias = function(key, value) { + argsert(" [string|array]", [key, value], arguments.length); + populateParserHintArrayDictionary(self.alias, "alias", key, value); + return self; + }; + self.default = self.defaults = function(key, value, defaultDescription) { + argsert(" [*] [string]", [key, value, defaultDescription], arguments.length); + if (defaultDescription) { + assertSingleKey(key, shim3); + options.defaultDescription[key] = defaultDescription; + } + if (typeof value === "function") { + assertSingleKey(key, shim3); + if (!options.defaultDescription[key]) + options.defaultDescription[key] = usage3.functionDescription(value); + value = value.call(); + } + populateParserHintSingleValueDictionary(self.default, "default", key, value); + return self; + }; + self.describe = function(key, desc) { + argsert(" [string]", [key, desc], arguments.length); + setKey(key, true); + usage3.describe(key, desc); + return self; + }; + function setKey(key, set) { + populateParserHintSingleValueDictionary(setKey, "key", key, set); + return self; + } + function demandOption(keys, msg) { + argsert(" [string]", [keys, msg], arguments.length); + populateParserHintSingleValueDictionary(self.demandOption, "demandedOptions", keys, msg); + return self; + } + self.demandOption = demandOption; + self.coerce = function(keys, value) { + argsert(" [function]", [keys, value], arguments.length); + populateParserHintSingleValueDictionary(self.coerce, "coerce", keys, value); + return self; + }; + function populateParserHintSingleValueDictionary(builder, type, key, value) { + populateParserHintDictionary(builder, type, key, value, (type2, key2, value2) => { + options[type2][key2] = value2; + }); + } + function populateParserHintArrayDictionary(builder, type, key, value) { + populateParserHintDictionary(builder, type, key, value, (type2, key2, value2) => { + options[type2][key2] = (options[type2][key2] || []).concat(value2); + }); + } + function populateParserHintDictionary(builder, type, key, value, singleKeyHandler) { + if (Array.isArray(key)) { + key.forEach((k) => { + builder(k, value); + }); + } else if (((key2) => typeof key2 === "object")(key)) { + for (const k of objectKeys(key)) { + builder(k, key[k]); + } + } else { + singleKeyHandler(type, sanitizeKey2(key), value); + } + } + function sanitizeKey2(key) { + if (key === "__proto__") + return "___proto___"; + return key; + } + function deleteFromParserHintObject(optionKey) { + objectKeys(options).forEach((hintKey) => { + if (((key) => key === "configObjects")(hintKey)) + return; + const hint = options[hintKey]; + if (Array.isArray(hint)) { + if (~hint.indexOf(optionKey)) + hint.splice(hint.indexOf(optionKey), 1); + } else if (typeof hint === "object") { + delete hint[optionKey]; + } + }); + delete usage3.getDescriptions()[optionKey]; + } + self.config = function config(key = "config", msg, parseFn2) { + argsert("[object|string] [string|function] [function]", [key, msg, parseFn2], arguments.length); + if (typeof key === "object" && !Array.isArray(key)) { + key = applyExtends(key, cwd, self.getParserConfiguration()["deep-merge-config"] || false, shim3); + options.configObjects = (options.configObjects || []).concat(key); + return self; + } + if (typeof msg === "function") { + parseFn2 = msg; + msg = undefined; + } + self.describe(key, msg || usage3.deferY18nLookup("Path to JSON config file")); + (Array.isArray(key) ? key : [key]).forEach((k) => { + options.config[k] = parseFn2 || true; + }); + return self; + }; + self.example = function(cmd, description) { + argsert(" [string]", [cmd, description], arguments.length); + if (Array.isArray(cmd)) { + cmd.forEach((exampleParams) => self.example(...exampleParams)); + } else { + usage3.example(cmd, description); + } + return self; + }; + self.command = function(cmd, description, builder, handler, middlewares, deprecated) { + argsert(" [string|boolean] [function|object] [function] [array] [boolean|string]", [cmd, description, builder, handler, middlewares, deprecated], arguments.length); + command4.addHandler(cmd, description, builder, handler, middlewares, deprecated); + return self; + }; + self.commandDir = function(dir, opts) { + argsert(" [object]", [dir, opts], arguments.length); + const req = parentRequire || shim3.require; + command4.addDirectory(dir, self.getContext(), req, shim3.getCallerFile(), opts); + return self; + }; + self.demand = self.required = self.require = function demand(keys, max, msg) { + if (Array.isArray(max)) { + max.forEach((key) => { + assertNotStrictEqual(msg, true, shim3); + demandOption(key, msg); + }); + max = Infinity; + } else if (typeof max !== "number") { + msg = max; + max = Infinity; + } + if (typeof keys === "number") { + assertNotStrictEqual(msg, true, shim3); + self.demandCommand(keys, max, msg, msg); + } else if (Array.isArray(keys)) { + keys.forEach((key) => { + assertNotStrictEqual(msg, true, shim3); + demandOption(key, msg); + }); + } else { + if (typeof msg === "string") { + demandOption(keys, msg); + } else if (msg === true || typeof msg === "undefined") { + demandOption(keys); + } + } + return self; + }; + self.demandCommand = function demandCommand(min = 1, max, minMsg, maxMsg) { + argsert("[number] [number|string] [string|null|undefined] [string|null|undefined]", [min, max, minMsg, maxMsg], arguments.length); + if (typeof max !== "number") { + minMsg = max; + max = Infinity; + } + self.global("_", false); + options.demandedCommands._ = { + min, + max, + minMsg, + maxMsg + }; + return self; + }; + self.getDemandedOptions = () => { + argsert([], 0); + return options.demandedOptions; + }; + self.getDemandedCommands = () => { + argsert([], 0); + return options.demandedCommands; + }; + self.deprecateOption = function deprecateOption(option, message) { + argsert(" [string|boolean]", [option, message], arguments.length); + options.deprecatedOptions[option] = message; + return self; + }; + self.getDeprecatedOptions = () => { + argsert([], 0); + return options.deprecatedOptions; + }; + self.implies = function(key, value) { + argsert(" [number|string|array]", [key, value], arguments.length); + validation3.implies(key, value); + return self; + }; + self.conflicts = function(key1, key2) { + argsert(" [string|array]", [key1, key2], arguments.length); + validation3.conflicts(key1, key2); + return self; + }; + self.usage = function(msg, description, builder, handler) { + argsert(" [string|boolean] [function|object] [function]", [msg, description, builder, handler], arguments.length); + if (description !== undefined) { + assertNotStrictEqual(msg, null, shim3); + if ((msg || "").match(/^\$0( |$)/)) { + return self.command(msg, description, builder, handler); + } else { + throw new YError(".usage() description must start with $0 if being used as alias for .command()"); + } + } else { + usage3.usage(msg); + return self; + } + }; + self.epilogue = self.epilog = function(msg) { + argsert("", [msg], arguments.length); + usage3.epilog(msg); + return self; + }; + self.fail = function(f) { + argsert("", [f], arguments.length); + usage3.failFn(f); + return self; + }; + self.onFinishCommand = function(f) { + argsert("", [f], arguments.length); + handlerFinishCommand = f; + return self; + }; + self.getHandlerFinishCommand = () => handlerFinishCommand; + self.check = function(f, _global) { + argsert(" [boolean]", [f, _global], arguments.length); + validation3.check(f, _global !== false); + return self; + }; + self.global = function global2(globals, global2) { + argsert(" [boolean]", [globals, global2], arguments.length); + globals = [].concat(globals); + if (global2 !== false) { + options.local = options.local.filter((l) => globals.indexOf(l) === -1); + } else { + globals.forEach((g) => { + if (options.local.indexOf(g) === -1) + options.local.push(g); + }); + } + return self; + }; + self.pkgConf = function pkgConf(key, rootPath) { + argsert(" [string]", [key, rootPath], arguments.length); + let conf = null; + const obj = pkgUp(rootPath || cwd); + if (obj[key] && typeof obj[key] === "object") { + conf = applyExtends(obj[key], rootPath || cwd, self.getParserConfiguration()["deep-merge-config"] || false, shim3); + options.configObjects = (options.configObjects || []).concat(conf); + } + return self; + }; + const pkgs = {}; + function pkgUp(rootPath) { + const npath = rootPath || "*"; + if (pkgs[npath]) + return pkgs[npath]; + let obj = {}; + try { + let startDir = rootPath || shim3.mainFilename; + if (!rootPath && shim3.path.extname(startDir)) { + startDir = shim3.path.dirname(startDir); + } + const pkgJsonPath = shim3.findUp(startDir, (dir, names) => { + if (names.includes("package.json")) { + return "package.json"; + } else { + return; } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - return die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - return die('You flagged that filenames/globs will be piped in - but no data arrived.'); + }); + assertNotStrictEqual(pkgJsonPath, undefined, shim3); + obj = JSON.parse(shim3.readFileSync(pkgJsonPath, "utf8")); + } catch (_noop) { + } + pkgs[npath] = obj || {}; + return pkgs[npath]; + } + let parseFn = null; + let parseContext = null; + self.parse = function parse(args, shortCircuit, _parseFn) { + argsert("[string|array] [function|boolean|object] [function]", [args, shortCircuit, _parseFn], arguments.length); + freeze(); + if (typeof args === "undefined") { + const argv = self._parseArgs(processArgs); + const tmpParsed = self.parsed; + unfreeze(); + self.parsed = tmpParsed; + return argv; + } + if (typeof shortCircuit === "object") { + parseContext = shortCircuit; + shortCircuit = _parseFn; + } + if (typeof shortCircuit === "function") { + parseFn = shortCircuit; + shortCircuit = false; + } + if (!shortCircuit) + processArgs = args; + if (parseFn) + exitProcess = false; + const parsed = self._parseArgs(args, !!shortCircuit); + completion3.setParsed(self.parsed); + if (parseFn) + parseFn(exitError, parsed, output); + unfreeze(); + return parsed; + }; + self._getParseContext = () => parseContext || {}; + self._hasParseCallback = () => !!parseFn; + self.option = self.options = function option(key, opt) { + argsert(" [object]", [key, opt], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.options(k, key[k]); + }); + } else { + if (typeof opt !== "object") { + opt = {}; + } + options.key[key] = true; + if (opt.alias) + self.alias(key, opt.alias); + const deprecate = opt.deprecate || opt.deprecated; + if (deprecate) { + self.deprecateOption(key, deprecate); + } + const demand = opt.demand || opt.required || opt.require; + if (demand) { + self.demand(key, demand); + } + if (opt.demandOption) { + self.demandOption(key, typeof opt.demandOption === "string" ? opt.demandOption : undefined); + } + if (opt.conflicts) { + self.conflicts(key, opt.conflicts); + } + if ("default" in opt) { + self.default(key, opt.default); + } + if (opt.implies !== undefined) { + self.implies(key, opt.implies); + } + if (opt.nargs !== undefined) { + self.nargs(key, opt.nargs); + } + if (opt.config) { + self.config(key, opt.configParser); + } + if (opt.normalize) { + self.normalize(key); + } + if (opt.choices) { + self.choices(key, opt.choices); + } + if (opt.coerce) { + self.coerce(key, opt.coerce); + } + if (opt.group) { + self.group(key, opt.group); + } + if (opt.boolean || opt.type === "boolean") { + self.boolean(key); + if (opt.alias) + self.boolean(opt.alias); + } + if (opt.array || opt.type === "array") { + self.array(key); + if (opt.alias) + self.array(opt.alias); + } + if (opt.number || opt.type === "number") { + self.number(key); + if (opt.alias) + self.number(opt.alias); + } + if (opt.string || opt.type === "string") { + self.string(key); + if (opt.alias) + self.string(opt.alias); + } + if (opt.count || opt.type === "count") { + self.count(key); + } + if (typeof opt.global === "boolean") { + self.global(key, opt.global); + } + if (opt.defaultDescription) { + options.defaultDescription[key] = opt.defaultDescription; + } + if (opt.skipValidation) { + self.skipValidation(key); + } + const desc = opt.describe || opt.description || opt.desc; + self.describe(key, desc); + if (opt.hidden) { + self.hide(key); + } + if (opt.requiresArg) { + self.requiresArg(key); + } + } + return self; + }; + self.getOptions = () => options; + self.positional = function(key, opts) { + argsert(" ", [key, opts], arguments.length); + if (context.resets === 0) { + throw new YError(".positional() can only be called in a command's builder function"); + } + const supportedOpts = [ + "default", + "defaultDescription", + "implies", + "normalize", + "choices", + "conflicts", + "coerce", + "type", + "describe", + "desc", + "description", + "alias" + ]; + opts = objFilter(opts, (k, v) => { + let accept = supportedOpts.indexOf(k) !== -1; + if (k === "type" && ["string", "number", "boolean"].indexOf(v) === -1) + accept = false; + return accept; + }); + const fullCommand = context.fullCommands[context.fullCommands.length - 1]; + const parseOptions = fullCommand ? command4.cmdToParseOptions(fullCommand) : { + array: [], + alias: {}, + default: {}, + demand: {} + }; + objectKeys(parseOptions).forEach((pk) => { + const parseOption = parseOptions[pk]; + if (Array.isArray(parseOption)) { + if (parseOption.indexOf(key) !== -1) + opts[pk] = true; + } else { + if (parseOption[key] && !(pk in opts)) + opts[pk] = parseOption[key]; + } + }); + self.group(key, usage3.getPositionalGroupName()); + return self.option(key, opts); + }; + self.group = function group(opts, groupName) { + argsert(" ", [opts, groupName], arguments.length); + const existing = preservedGroups[groupName] || groups[groupName]; + if (preservedGroups[groupName]) { + delete preservedGroups[groupName]; + } + const seen = {}; + groups[groupName] = (existing || []).concat(opts).filter((key) => { + if (seen[key]) + return false; + return seen[key] = true; + }); + return self; + }; + self.getGroups = () => Object.assign({}, groups, preservedGroups); + self.env = function(prefix) { + argsert("[string|boolean]", [prefix], arguments.length); + if (prefix === false) + delete options.envPrefix; + else + options.envPrefix = prefix || ""; + return self; + }; + self.wrap = function(cols) { + argsert("", [cols], arguments.length); + usage3.wrap(cols); + return self; + }; + let strict = false; + self.strict = function(enabled) { + argsert("[boolean]", [enabled], arguments.length); + strict = enabled !== false; + return self; + }; + self.getStrict = () => strict; + let strictCommands = false; + self.strictCommands = function(enabled) { + argsert("[boolean]", [enabled], arguments.length); + strictCommands = enabled !== false; + return self; + }; + self.getStrictCommands = () => strictCommands; + let strictOptions = false; + self.strictOptions = function(enabled) { + argsert("[boolean]", [enabled], arguments.length); + strictOptions = enabled !== false; + return self; + }; + self.getStrictOptions = () => strictOptions; + let parserConfig = {}; + self.parserConfiguration = function parserConfiguration(config) { + argsert("", [config], arguments.length); + parserConfig = config; + return self; + }; + self.getParserConfiguration = () => parserConfig; + self.showHelp = function(level) { + argsert("[string|function]", [level], arguments.length); + if (!self.parsed) + self._parseArgs(processArgs); + if (command4.hasDefaultCommand()) { + context.resets++; + command4.runDefaultBuilderOn(self); + } + usage3.showHelp(level); + return self; + }; + let versionOpt = null; + self.version = function version(opt, msg, ver) { + const defaultVersionOpt = "version"; + argsert("[boolean|string] [string] [string]", [opt, msg, ver], arguments.length); + if (versionOpt) { + deleteFromParserHintObject(versionOpt); + usage3.version(undefined); + versionOpt = null; + } + if (arguments.length === 0) { + ver = guessVersion(); + opt = defaultVersionOpt; + } else if (arguments.length === 1) { + if (opt === false) { + return self; + } + ver = opt; + opt = defaultVersionOpt; + } else if (arguments.length === 2) { + ver = msg; + msg = undefined; + } + versionOpt = typeof opt === "string" ? opt : defaultVersionOpt; + msg = msg || usage3.deferY18nLookup("Show version number"); + usage3.version(ver || undefined); + self.boolean(versionOpt); + self.describe(versionOpt, msg); + return self; + }; + function guessVersion() { + const obj = pkgUp(); + return obj.version || "unknown"; + } + let helpOpt = null; + self.addHelpOpt = self.help = function addHelpOpt(opt, msg) { + const defaultHelpOpt = "help"; + argsert("[string|boolean] [string]", [opt, msg], arguments.length); + if (helpOpt) { + deleteFromParserHintObject(helpOpt); + helpOpt = null; + } + if (arguments.length === 1) { + if (opt === false) + return self; + } + helpOpt = typeof opt === "string" ? opt : defaultHelpOpt; + self.boolean(helpOpt); + self.describe(helpOpt, msg || usage3.deferY18nLookup("Show help")); + return self; + }; + const defaultShowHiddenOpt = "show-hidden"; + options.showHiddenOpt = defaultShowHiddenOpt; + self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt(opt, msg) { + argsert("[string|boolean] [string]", [opt, msg], arguments.length); + if (arguments.length === 1) { + if (opt === false) + return self; + } + const showHiddenOpt = typeof opt === "string" ? opt : defaultShowHiddenOpt; + self.boolean(showHiddenOpt); + self.describe(showHiddenOpt, msg || usage3.deferY18nLookup("Show hidden options")); + options.showHiddenOpt = showHiddenOpt; + return self; + }; + self.hide = function hide(key) { + argsert("", [key], arguments.length); + options.hiddenOptions.push(key); + return self; + }; + self.showHelpOnFail = function showHelpOnFail(enabled, message) { + argsert("[boolean|string] [string]", [enabled, message], arguments.length); + usage3.showHelpOnFail(enabled, message); + return self; + }; + let exitProcess = true; + self.exitProcess = function(enabled = true) { + argsert("[boolean]", [enabled], arguments.length); + exitProcess = enabled; + return self; + }; + self.getExitProcess = () => exitProcess; + self.showCompletionScript = function($0, cmd) { + argsert("[string] [string]", [$0, cmd], arguments.length); + $0 = $0 || self.$0; + _logger.log(completion3.generateCompletionScript($0, cmd || completionCommand || "completion")); + return self; + }; + self.getCompletion = function(args, done) { + argsert(" ", [args, done], arguments.length); + completion3.getCompletion(args, done); + }; + self.locale = function(locale) { + argsert("[string]", [locale], arguments.length); + if (!locale) { + guessLocale(); + return y18n3.getLocale(); + } + detectLocale = false; + y18n3.setLocale(locale); + return self; + }; + self.updateStrings = self.updateLocale = function(obj) { + argsert("", [obj], arguments.length); + detectLocale = false; + y18n3.updateLocale(obj); + return self; + }; + let detectLocale = true; + self.detectLocale = function(detect) { + argsert("", [detect], arguments.length); + detectLocale = detect; + return self; + }; + self.getDetectLocale = () => detectLocale; + const _logger = { + log(...args) { + if (!self._hasParseCallback()) + console.log(...args); + hasOutput = true; + if (output.length) + output += "\n"; + output += args.join(" "); + }, + error(...args) { + if (!self._hasParseCallback()) + console.error(...args); + hasOutput = true; + if (output.length) + output += "\n"; + output += args.join(" "); + } + }; + self._getLoggerInstance = () => _logger; + self._hasOutput = () => hasOutput; + self._setHasOutput = () => { + hasOutput = true; + }; + let recommendCommands; + self.recommendCommands = function(recommend = true) { + argsert("[boolean]", [recommend], arguments.length); + recommendCommands = recommend; + return self; + }; + self.getUsageInstance = () => usage3; + self.getValidationInstance = () => validation3; + self.getCommandInstance = () => command4; + self.terminalWidth = () => { + argsert([], 0); + return shim3.process.stdColumns; + }; + Object.defineProperty(self, "argv", { + get: () => self._parseArgs(processArgs), + enumerable: true + }); + self._parseArgs = function parseArgs(args, shortCircuit, _calledFromCommand, commandIndex) { + let skipValidation = !!_calledFromCommand; + args = args || processArgs; + options.__ = y18n3.__; + options.configuration = self.getParserConfiguration(); + const populateDoubleDash = !!options.configuration["populate--"]; + const config = Object.assign({}, options.configuration, { + "populate--": true + }); + const parsed = shim3.Parser.detailed(args, Object.assign({}, options, { + configuration: Object.assign({ "parse-positional-numbers": false }, config) + })); + let argv = parsed.argv; + if (parseContext) + argv = Object.assign({}, argv, parseContext); + const aliases = parsed.aliases; + argv.$0 = self.$0; + self.parsed = parsed; + try { + guessLocale(); + if (shortCircuit) { + return self._postProcess(argv, populateDoubleDash, _calledFromCommand); + } + if (helpOpt) { + const helpCmds = [helpOpt].concat(aliases[helpOpt] || []).filter((k) => k.length > 1); + if (~helpCmds.indexOf("" + argv._[argv._.length - 1])) { + argv._.pop(); + argv[helpOpt] = true; + } + } + const handlerKeys = command4.getCommands(); + const requestCompletions = completion3.completionKey in argv; + const skipRecommendation = argv[helpOpt] || requestCompletions; + const skipDefaultCommand = skipRecommendation && (handlerKeys.length > 1 || handlerKeys[0] !== "$0"); + if (argv._.length) { + if (handlerKeys.length) { + let firstUnknownCommand; + for (let i = commandIndex || 0, cmd;argv._[i] !== undefined; i++) { + cmd = String(argv._[i]); + if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) { + const innerArgv = command4.runCommand(cmd, self, parsed, i + 1); + return self._postProcess(innerArgv, populateDoubleDash); + } else if (!firstUnknownCommand && cmd !== completionCommand) { + firstUnknownCommand = cmd; + break; } - conf.globs = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } + } + if (command4.hasDefaultCommand() && !skipDefaultCommand) { + const innerArgv = command4.runCommand(null, self, parsed); + return self._postProcess(innerArgv, populateDoubleDash); + } + if (recommendCommands && firstUnknownCommand && !skipRecommendation) { + validation3.recommendCommands(firstUnknownCommand, handlerKeys); + } } - else if (null !== conf.pipeData && !conf.includeGlob.length) { - step('Content being piped'); - conf.contentWasPiped = true; - conf.output = true; - process.stdout.setDefaultEncoding(conf.encoding); + if (completionCommand && ~argv._.indexOf(completionCommand) && !requestCompletions) { + if (exitProcess) + setBlocking(true); + self.showCompletionScript(); + self.exit(0); + } + } else if (command4.hasDefaultCommand() && !skipDefaultCommand) { + const innerArgv = command4.runCommand(null, self, parsed); + return self._postProcess(innerArgv, populateDoubleDash); + } + if (requestCompletions) { + if (exitProcess) + setBlocking(true); + args = [].concat(args); + const completionArgs = args.slice(args.indexOf(`--${completion3.completionKey}`) + 1); + completion3.getCompletion(completionArgs, (completions) => { + (completions || []).forEach((completion4) => { + _logger.log(completion4); + }); + self.exit(0); + }); + return self._postProcess(argv, !populateDoubleDash, _calledFromCommand); + } + if (!hasOutput) { + Object.keys(argv).forEach((key) => { + if (key === helpOpt && argv[key]) { + if (exitProcess) + setBlocking(true); + skipValidation = true; + self.showHelp("log"); + self.exit(0); + } else if (key === versionOpt && argv[key]) { + if (exitProcess) + setBlocking(true); + skipValidation = true; + usage3.showVersion(); + self.exit(0); + } + }); + } + if (!skipValidation && options.skipValidation.length > 0) { + skipValidation = Object.keys(argv).some((key) => options.skipValidation.indexOf(key) >= 0 && argv[key] === true); + } + if (!skipValidation) { + if (parsed.error) + throw new YError(parsed.error.message); + if (!requestCompletions) { + self._runValidation(argv, aliases, {}, parsed.error); } - return conf; + } + } catch (err) { + if (err instanceof YError) + usage3.fail(err.message, err); + else + throw err; + } + return self._postProcess(argv, populateDoubleDash, _calledFromCommand); + }; + self._postProcess = function(argv, populateDoubleDash, calledFromCommand = false) { + if (isPromise(argv)) + return argv; + if (calledFromCommand) + return argv; + if (!populateDoubleDash) { + argv = self._copyDoubleDash(argv); + } + const parsePositionalNumbers = self.getParserConfiguration()["parse-positional-numbers"] || self.getParserConfiguration()["parse-positional-numbers"] === undefined; + if (parsePositionalNumbers) { + argv = self._parsePositionalNumbers(argv); + } + return argv; + }; + self._copyDoubleDash = function(argv) { + if (!argv._ || !argv["--"]) + return argv; + argv._.push.apply(argv._, argv["--"]); + try { + delete argv["--"]; + } catch (_err) { } + return argv; + }; + self._parsePositionalNumbers = function(argv) { + const args = argv["--"] ? argv["--"] : argv._; + for (let i = 0, arg;(arg = args[i]) !== undefined; i++) { + if (shim3.Parser.looksLikeNumber(arg) && Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { + args[i] = Number(arg); + } + } + return argv; + }; + self._runValidation = function runValidation(argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) { + if (parseErrors) + throw new YError(parseErrors.message); + validation3.nonOptionCount(argv); + validation3.requiredArguments(argv); + let failedStrictCommands = false; + if (strictCommands) { + failedStrictCommands = validation3.unknownCommands(argv); + } + if (strict && !failedStrictCommands) { + validation3.unknownArguments(argv, aliases, positionalMap, isDefaultCommand); + } else if (strictOptions) { + validation3.unknownArguments(argv, aliases, {}, false, false); + } + validation3.customChecks(argv, aliases); + validation3.limitedChoices(argv); + validation3.implications(argv); + validation3.conflicting(argv); + }; + function guessLocale() { + if (!detectLocale) + return; + const locale = shim3.getEnv("LC_ALL") || shim3.getEnv("LC_MESSAGES") || shim3.getEnv("LANG") || shim3.getEnv("LANGUAGE") || "en_US"; + self.locale(locale.replace(/[.:].*/, "")); + } + self.help(); + self.version(); + return self; +}; +function isYargsInstance(y) { + return !!y && typeof y._parseArgs === "function"; +} +var shim3; +var rebase = (base, dir) => shim3.path.relative(base, dir); + +// node_modules/yargs/index.mjs +var Yargs2 = YargsWithShim(esm_default); +var yargs_default = Yargs2; - exports.cli2conf = cli2conf; - exports.executeReplacement = executeReplacement; +// src/output.ts +function debug(...data) { + if (conf.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } +} +function step(data) { + if (conf.verbose) { + console.error(font.gray(data)); + } +} +var kill = function(error = 1, msg = "") { + msg && console.error(+msg); + process.exit(+error); +}; +var font = {}; +font.red = font.green = font.gray = (str) => str; +var conf = null; +var outputConfig = function(_conf) { + conf = _conf; +}; +var info = function(msg, data = "") { + if (conf.quiet || conf.quietTotal) { + return; + } + if (conf.output || conf.outputMatch) + return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); + console.log.apply(this, [msg, data].filter(Boolean)); +}; +var chat = function(msg, data = "") { + if (conf.verbose) { + info(msg, data); + } else { + debug([msg, data].filter(Boolean).join(" ")); + } +}; +var error = function(msg, data = "") { + if (conf.bail) { + return die(msg, data); + } + if (!conf.quietTotal) { + console.error.apply(this, [" \u274C", font.red(msg), data].filter(Boolean)); + } + return false; +}; +var die = function(msg = "", data = "", displayHelp = false) { + if (displayHelp && !conf.quietTotal) { + conf.showHelp(); + } + msg && error(" \u274C " + msg, data); + kill(); +}; - Object.defineProperty(exports, '__esModule', { value: true }); +// src/engine.ts +function engine(_runtime, conf2 = { engine: "V8" }) { + runtime = _runtime; + outputConfig(conf2); + step("Displaying steps for:"); + step(conf2); + conf2.pattern = getPattern(conf2.pattern, conf2) || ""; + conf2.replacement = getReplacement(conf2.replacement, conf2) || ""; + if (conf2.replacementJs) + conf2.replacementOri = conf2.replacement; + conf2.regex = getRegex(conf2.pattern, conf2) || ""; + step(conf2); + conf2.files = getFilePaths(conf2); + if (!conf2.files.length) { + if (conf2.contentWasPiped) { + return doReplacement("[pipe-data]", conf2, conf2.pipeData); + } + return error(conf2.files.length + " files found"); + } + chat(conf2.files.length + " files found"); + step(conf2); + conf2.files.filter((filepath) => { + if (fs.statSync(filepath).isFile()) { + return true; + } + debug("Not a valid file:", filepath); + return false; + }).forEach((filepath) => openFile(filepath, conf2)); +} +var openFile = function(file, conf2) { + if (conf2.voidAsync) { + chat("Open sync: " + file); + var data = runtime.fileReadSync(file, conf2.encoding); + return doReplacement(file, conf2, data); + } + chat("Open async: " + file); + fs.readFile(file, conf2.encoding, function(err, data2) { + if (err) { + return error(err); + } + return doReplacement(file, conf2, data2); + }); +}; +var doReplacement = function(filePath, conf2, content) { + debug("Work on content from: " + filePath); + if (conf2.replacementJs) { + conf2.replacement = dynamicReplacement(filePath, conf2, content); + } + const result = content.replace(conf2.regex, conf2.replacement); + if (conf2.outputMatch) { + return; + } + if (conf2.output) { + debug("Output result from: " + filePath); + return process.stdout.write(result); + } + if (result === content) { + debug("Nothing changed in: " + filePath); + return; + } + content = ""; + if (conf2.simulate) + return info(filePath); + debug("Write updated content to: " + filePath); + if (conf2.voidBackup) { + return fs.writeFile(filePath, result, conf2.encoding, function(err) { + if (err) { + return error(err); + } + info(filePath); + }); + } + const oriFile = path.normalize(path.join(process.cwd(), filePath)); + const salt = new Date().toISOString().replace(re.colon, "_").replace("Z", ""); + const backupFile = oriFile + "." + salt + ".backup"; + if (conf2.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, conf2.encoding); + if (!conf2.keepBackup) { + fs.unlinkSync(backupFile); + } + } catch (e) { + return error(e); + } + return info(filePath); + } + fs.rename(oriFile, backupFile, (err) => { + if (err) { + return error(err); + } + fs.writeFile(oriFile, result, conf2.encoding, (err2) => { + if (err2) { + return error(err2); + } + if (!conf2.keepBackup) { + fs.unlink(backupFile, (err3) => { + if (err3) { + return error(err3); + } + info(filePath); + }); + } + return info(filePath); + }); + }); +}; +var getPattern = function(pattern, conf2) { + step("Get final pattern"); + pattern = replacePlaceholders(pattern, conf2); + if (conf2.literal) { + pattern = pattern.replace(re.regexSpecialChars, "\\$&"); + } + step(pattern); + return pattern; +}; +var getReplacement = function(replacement, conf2) { + step("Get final replacement"); + replacement = replacePlaceholders(replacement, conf2); + if (conf2.outputMatch) { + step("Output match"); + if (parseInt(process.versions.node) < 6) { + return die("outputMatch is only supported in node 6+"); + } + return function() { + step(arguments); + if (arguments.length === 3) { + step("Printing full match"); + process.stdout.write(arguments[0] + "\n"); + return ""; + } + for (var i = 1;i < arguments.length - 2; i++) { + process.stdout.write(arguments[i]); + } + process.stdout.write("\n"); + return ""; + }; + } + if (conf2.replacementJs && re.capturedGroupRef.test(conf2.replacement) && parseInt(process.versions.node) < 6) { + return die("Captured groups for javascript replacement is only supported in node 6+"); + } + step(replacement); + return replacement; +}; +var getRegex = function(pattern, conf2) { + step("Get final regex with engine: " + conf2.engine); + let regex; + let flags = getFlags(conf2); + switch (conf2.engine) { + case "V8": + try { + regex = new RegExp(pattern, flags); + } catch (e) { + if (conf2.debug) + throw new Error(e); + die(e.message); + } + break; + case "RE2": + try { + const RE2 = (()=>{ throw new Error(`Cannot require module "re2"`);})(); + regex = new RE2(pattern, flags); + } catch (e) { + if (conf2.debug) + throw new Error(e); + die(e.message); + } + break; + default: + die(`Engine ${conf2.engine} not supported`); + } + step(regex); + return regex; +}; +var getFlags = function(conf2) { + step("Get flags"); + let flags = ""; + if (!conf2.voidGlobal) { + flags += "g"; + } + if (!conf2.voidIgnoreCase) { + flags += "i"; + } + if (!conf2.voidMultiline) { + flags += "m"; + } + if (conf2.dotAll) { + flags += "s"; + } + if (conf2.unicode) { + flags += "u"; + } + step(flags); + return flags; +}; +var readableSize = function(size) { + if (size === 1) { + return "1 Byte"; + } + const i = Math.floor(Math.log(size) / Math.log(1024)); + return (size / Math.pow(1024, i)).toFixed(i ? 1 : 0) + " " + ["Bytes", "KB", "MB", "GB", "TB"][i]; +}; +var dynamicReplacement = function(_file_rr, _config_rr, _data_rr) { + const _time_obj = now; + const _time = localTimeString(_time_obj); + const _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = " ", _nl = "\n"; + let _file = "\u274C", _file_rel = "\u274C", _dirpath = "\u274C", _dirpath_rel = "\u274C", _dirname = "\u274C", _filename = "\u274C", _name = "\u274C", _ext = "\u274C", _mtime = "\u274C", _ctime = "\u274C", _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = "\u274C", dynamicContent = new Function("require", "fs", "globs", "path", "pipe", "pipe_", "find", "find_", "text", "text_", "file", "file_", "file_rel", "file_rel_", "dirpath", "dirpath_", "dirpath_rel", "dirpath_rel_", "dirname", "dirname_", "filename", "filename_", "name", "name_", "ext", "ext_", "cwd", "cwd_", "now", "now_", "time_obj", "time", "time_", "mtime_obj", "mtime", "mtime_", "ctime_obj", "ctime", "ctime_", "bytes", "bytes_", "size", "size_", "nl", "_", "__code_rr", 'var path = require("path");var __require_ = require;var r = function(file){var result = null;try{result = __require_(file);} catch (e){' + 'var dir = /^[\\/]/.test(file) ? "" : cwd;' + "result = __require_(path.resolve(dir, file));};return result;};require = r;return eval(__code_rr);"); + const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); + const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; + if (!_config_rr.contentWasPiped) { + _file = path.normalize(path.join(_cwd, _file_rr)); + _file_rel = path.relative(_cwd, _file); + const pathInfo = path.parse(_file); + _dirpath = pathInfo.dir; + _dirpath_rel = path.relative(_cwd, _dirpath); + _dirname = (_file.match(re.folderName) || " _")[1]; + _filename = pathInfo.base; + _name = pathInfo.name; + _ext = pathInfo.ext; + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { + const fileStats = fs.statSync(_file); + _bytes = fileStats.size; + _size = readableSize(_bytes); + _mtime_obj = fileStats.mtime; + _ctime_obj = fileStats.ctime; + _mtime = localTimeString(_mtime_obj); + _ctime = localTimeString(_ctime_obj); + } + } + if (needsByteOrSize && _bytes === -1) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + const glob = (a, b) => fGlob.sync(a, { + unique: true, + caseSensitiveMatch: !_config_rr.voidIgnoreCase, + dot: true, + ...b + }); + if (!/\$\d/.test(_config_rr.replacement)) { + return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); + } + return function() { + step(arguments); + const __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname3 = _dirname, __filename2 = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; + var capturedGroups = ""; + for (var i = 0;i < arguments.length - 2; i++) { + capturedGroups += "var $" + i + "=" + JSON.stringify(arguments[i]) + "; "; + } + return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname3, __dirname3 + __, __filename2, __filename2 + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); + }; +}; +var localTimeString = function(dateObj = new Date) { + return `${dateObj.getFullYear()}-${("0" + (dateObj.getMonth() + 1)).slice(-2)}-${("0" + dateObj.getDate()).slice(-2)} ${("0" + dateObj.getHours()).slice(-2)}:${("0" + dateObj.getMinutes()).slice(-2)}:${("0" + dateObj.getSeconds()).slice(-2)}.${("00" + dateObj.getMilliseconds()).slice(-3)}`; +}; +var replacePlaceholders = function(str = "", conf2) { + if (!conf2.voidEuro) { + str = str.replace(re.euro, "$"); + } + if (!conf2.voidSection) { + str = str.replace(re.section, "\\"); + } + return str; +}; +var getFilePaths = function(conf2) { + const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf2; + let filesToInclude = fGlob.sync(includeGlob, { + ignore: excludeGlob, + onlyFiles: true, + unique: true, + caseSensitiveMatch: !voidIgnoreCase, + dot: true + }); + if (excludeRe.length) { + excludeRe.map((el) => getRegex(getPattern(el, conf2), conf2)).forEach((re) => { + filesToInclude = filesToInclude.filter((el) => !el.match(re)); + }); + } + return filesToInclude; +}; +var fs = require_lib(); +var path = import.meta.require("path"); +var fGlob = require_out4(); +var globs = require_globs(); +var now = new Date; +var re = { + euro: /\u20AC/g, + section: /\u00A7/g, + mctime: /[mc]time/, + colon: /:/g, + capturedGroupRef: /\$\d/, + regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, + byteOrSize: /bytes|size/, + folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ +}; +var version = "PACKAGE_VERSION"; +var runtime; - return exports; +// src/cli.ts +function cli2conf(runtime2, args) { + let pattern, replacement; + let needHelp = 0; + if (args.length < 2) { + if (/-v|--?version$/i.test(args.slice(-1)[0])) { + console.log(version); + runtime2.exit(0); + } else if (/-h|--?help$/i.test(args.slice(-1)[0])) { + needHelp = 1; + } else { + needHelp = 2; + } + } else { + [pattern, replacement] = args.splice(0, 2); + } + const argv = yargs_default(args).strict().usage("RexReplace v" + version + "\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n> rexreplace pattern replacement [fileGlob|option]+").usage(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`).usage(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`).example(`> rexreplace '(f?(o))o(.*)' '$3$1\u20AC2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`).example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`).example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`).version("v", "Print rexreplace version (can be given as only argument)", version).alias("v", "version").boolean("I").describe("I", "Void case insensitive search pattern.").alias("I", "void-ignore-case").boolean("G").describe("G", "Void global search (stop looking after the first match).").alias("G", "void-global").boolean("M").describe("M", "Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.").alias("M", "void-multiline").boolean("s").describe("s", "Have `.` also match newline.").alias("s", "dot-all").boolean("u").describe("u", "Treat pattern as a sequence of unicode code points.").alias("u", "unicode").default("e", "utf8").alias("e", "encoding").describe("e", "Encoding of files/piped data.").alias("E", "engine").describe("E", "What regex engine to use:").choices("E", ["V8"]).default("E", "V8").boolean("L").describe("L", "Literal string search (no regex used when searching)").alias("L", "literal").boolean("\u20AC").describe("\u20AC", "Void having '\u20AC' as alias for '$' in pattern and replacement parameters").alias("\u20AC", "void-euro").boolean("\xA7").describe("\xA7", "Void having '\xA7' as alias for '\\' in pattern and replacement parameters").alias("\xA7", "void-section").boolean("A").alias("A", "void-async").describe("A", `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `).boolean("H").describe("H", "Halt on first error").alias("H", "halt").alias("H", "bail").default("H", false).boolean("q").describe("q", "Only display errors (no other info)").alias("q", "quiet").boolean("Q").describe("Q", "Never display errors or info").alias("Q", "quiet-total").boolean("B").describe("B", "Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.").alias("B", "void-backup").boolean("b").describe("b", "Keep the backup file with the original content.").alias("b", "keep-backup").boolean("o").describe("o", "Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.").alias("o", "output").boolean("m").describe("m", `Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). `).alias("m", "output-match").boolean("T").alias("T", "trim-pipe").describe("T", `Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. `).boolean("R").alias("R", "replacement-pipe").describe("R", `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`).conflicts("R", "g").conflicts("R", "G").boolean("g").describe("g", "Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt").alias("g", "glob-pipe").conflicts("g", "G").boolean("S").describe("S", "Simulate output without changing any files").alias("S", "simulate").string("x").describe("x", "Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.").alias("x", "exclude-re").string("X").describe("X", "Exclude files found with this glob. Can be used multiple times.").alias("X", "exclude-glob").boolean("V").describe("V", "More chatty output").alias("V", "verbose").boolean("d").describe("d", "Print debug info").alias("d", "debug").boolean("j").alias("j", "replacement-js").describe("j", `Treat replacement as javascript source code. + The statement from the last expression will become the replacement string. + Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. + The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. + At some point, the $ char _will_ give you a headache when used from the command line, so use \u20AC0, \u20AC1, \u20AC2, \u20AC3... instead. + If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. + + The code has access to the following variables: + \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, + \`fs\` from node, + \`path\` from node, + \`glob\` proxy name for the .sync function of fast-glob from npm, + \`pipe\`: the data piped into the command (null if no piped data), + \`find\`: pattern searched for (the needle), + \`text\`: full text being searched i.e. file content or piped data (the haystack), + \`bytes\`: total size of the haystack in bytes, + \`size\`: human-friendly representation of the total size of the haystack, + \`time\`: String representing the local time when the command was invoked, + \`time_obj\`: date object representing \`time\`, + \`now\`: alias for \`time\`, + \`cwd\`: current process working dir, + \`nl\`: a new-line char, + \`_\`: a single space char (for easy string concatenation). + + The following values defaults to \`\u274C\` if haystack does not originate from a file: + \`file\`: contains the full path of the active file being searched (including full filename), + \`file_rel\`: contains \`file\` relative to current process working dir, + \`dirpath\`: contains the full path without filename of the active file being searched, + \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, + \`filename\`: is the full filename of the active file being searched without path, + \`name\`: filename of the active file being searched with no extension, + \`ext\`: extension of the filename including leading dot, + \`mtime\`: ISO inspired representation of the last local modification time of the current file, + \`ctime\`: ISO representation of the local creation time of the current file. + \`mtime_obj\`: date object representing \`mtime\`, + \`ctime_obj\`: date object representing \`ctime\`. + + All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). + `).help("h").describe("h", "Display help.").alias("h", "help").epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).parseSync(); + let conf2 = {}; + Object.keys(argv).forEach((key) => { + if (1 < key.length && key.indexOf("-") < 0) { + conf2[key] = argv[key]; + } + }); + conf2.showHelp = yargs_default.showHelp; + conf2.needHelp = needHelp; + conf2.pattern = pattern; + conf2.replacement = replacement; + conf2.includeGlob = argv._; + conf2.excludeGlob = [...argv.excludeGlob].filter(Boolean); + conf2.excludeRe = [...argv.excludeRe].filter(Boolean); + if (!conf2.replacementJs) { + conf2.replacement = unescapeString(conf2.replacement); + } + return conf2; +} +var unescapeString = function(str = "") { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); +}; +function executeReplacement(runtime2, conf2, pipeData = null) { + if (0 < conf2.needHelp) { + runtime2.exit(conf2.needHelp - 1); + } + if (pipeData === null) + return engine(runtime2, conf2); + if (conf2.trimPipe) { + pipeData = pipeData.trim(); + } + if (conf2.replacementPipe) { + step("Replacement from pipe"); + if (pipeData === null) { + return die("You asked the piped data to be used as replacement - but no data arrived."); + } + conf2.replacement = pipeData; + if (conf2.replacementJs) + conf2.pipeData = pipeData; + return engine(runtime2, conf2); + } + if (conf2.globPipe) { + step("globs from pipe"); + if (conf2.pipeData === null) { + return die("You asked the piped data to be use as files/globs to include - but no data arrived."); + } + if (conf2.includeGlob.length) { + return die("Please pipe file/globs to include OR provide them as as parameters. Not both."); + } + conf2.globs = pipeData.split(/\r?\n/).filter(Boolean); + if (conf2.replacementJs) + conf2.pipeData = pipeData; + return engine(runtime2, conf2); + } + if (conf2.includeGlob.length) { + return die("Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters"); + } + step("Content being piped"); + conf2.pipeData = pipeData; + conf2.output = true; + process.stdout.setDefaultEncoding(conf2.encoding); + return engine(runtime2, conf2); +} -})({}); +// src/env/bun.ts +var import_fs_extra = __toESM(require_lib(), 1); +var runtime2 = { + fileReadSync: (path2, encoding = "utf8") => import_fs_extra.default.readFileSync(path2, { encoding }), + fileReadAsync: async (path2, encoding = "utf8") => { + const file = Bun.file(path2); + return file.text(); + }, + fileWriteSync: async (path2, data, encoding = "utf8") => { + await Bun.write(path2, data); + }, + fileWriteAsync: (path2, data, encoding = "utf8") => { + return Bun.write(path2, data); + }, + fileDeleteSync: (path2) => import_fs_extra.default.unlinkSync(path2), + fileDeleteAsync: (path2) => import_fs_extra.default.unlink(path2), + fileCopySync: async (originalPath, destinationPath) => { + const input = Bun.file(originalPath); + const output3 = Bun.file(destinationPath); + await Bun.write(output3, input); + }, + fileCopyAsync: (originalPath, destinationPath) => { + const input = Bun.file(originalPath); + const output3 = Bun.file(destinationPath); + return Bun.write(output3, input); + }, + exit: process.exit +}; +(() => { + let conf2 = cli2conf(runtime2, process.argv.slice(2)); + if (Boolean(process.stdin.isTTY)) + return executeReplacement(runtime2, conf2); + process.stdin.setEncoding(conf2.encoding); + let pipeData = ""; + process.stdin.on("readable", () => { + let chunk = process.stdin.read(); + if (chunk !== null) { + pipeData += chunk; + while (chunk = process.stdin.read()) { + pipeData += chunk; + } + } + }); + process.stdin.on("end", () => { + return executeReplacement(runtime2, conf2, pipeData); + }); +})(); +export { + runtime2 as runtime +}; diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js deleted file mode 100755 index d15dee8e..00000000 --- a/bin/rexreplace.cli.min.js +++ /dev/null @@ -1,731 +0,0 @@ -#!/usr/bin/env node -var rexreplace = (function (exports) { - 'use strict'; - - var font = {}; - font.red = font.green = font.gray = function (str) { return str; }; - // check for node version supporting chalk - if so overwrite `font` - //const font = import('chalk'); - var conf = null; - var outputConfig = function (_conf) { - conf = _conf; - }; - var info = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (conf.quiet || conf.quietTotal) { - return; - } - if (conf.output || conf.outputMatch) - { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } - console.log.apply(this, [msg, data].filter(Boolean)); - }; - var chat = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (conf.verbose) { - info(msg, data); - } - else { - debug([msg, data].filter(Boolean).join(' ')); - } - }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (!conf.quiet && !conf.quietTotal) { - console.error.apply(this, [font.red(msg), data].filter(Boolean)); - } - if (conf.bail) { - kill(); - } - return false; - }; - var die = function (msg, data, displayHelp) { - if ( msg === void 0 ) msg = ''; - if ( data === void 0 ) data = ''; - if ( displayHelp === void 0 ) displayHelp = false; - - if (displayHelp && !conf.quietTotal) { - conf.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); - }; - function debug(data) { - if (conf.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } - } - function step(data) { - if (conf.verbose) { - console.error(font.gray(data)); - } - } - function kill(error, msg) { - if ( error === void 0 ) error = 1; - if ( msg === void 0 ) msg = ''; - - msg && console.error(+msg); - process.exit(+error); - } - - var fs = require('fs-extra'); - var path = require('path'); - var fGlob = require('fast-glob'); - require('globs'); - var now = new Date(); - var re = { - euro: /€/g, - section: /§/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, - }; - var version = '7.1.3-y'; - function engine(conf) { - if ( conf === void 0 ) conf = { engine: 'V8' }; - - outputConfig(conf); - step('Displaying steps for:'); - step(conf); - conf.pattern = getPattern(conf.pattern, conf) || ''; - conf.replacement = getReplacement(conf.replacement, conf) || ''; - conf.replacementOri = conf.replacement; - conf.regex = getRegex(conf.pattern, conf) || ''; - step(conf); - conf.files = getFilePaths(conf); - if (!conf.files.length) { - if (conf.contentWasPiped) { - return doReplacement('[pipe-data]', conf, conf.pipeData); - } - return error(conf.files.length + ' files found'); - } - chat(conf.files.length + ' files found'); - step(conf); - conf.files - // Find out if any filepaths are invalid - .filter(function (filepath) { return (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath)); }) - // Do the replacement - .forEach(function (filepath) { return openFile(filepath, conf); }); - } - function openFile(file, conf) { - if (conf.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, conf.encoding); - return doReplacement(file, conf, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, conf.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, conf, data); - }); - } - } - // postfix argument names to limit the probabillity of user inputted javascript accidently using same values - function doReplacement(filePath, conf, content) { - debug('Work on content from: ' + filePath); - // Variables to be accessible from js. - if (conf.replacementJs) { - conf.replacement = dynamicReplacement(filePath, conf, content); - } - // Main regexp of the whole thing - var result = content.replace(conf.regex, conf.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (conf.outputMatch) { - return; - } - if (conf.output) { - debug('Output result from: ' + filePath); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === content) { - debug('Nothing changed in: ' + filePath); - return; - } - // Release the memory while storing files - content = ''; - debug('Write udpated content to: ' + filePath); - if (conf.simulate) - { return info(filePath); } - // Write directly to the same file (if the process is killed all new and old data is lost) - if (conf.voidBackup) { - return fs.writeFile(filePath, result, conf.encoding, function (err) { - if (err) { - return error(err); - } - info(filePath); - }); - } - //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), filePath)); - var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; - if (conf.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, conf.encoding); - if (!conf.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); - } - return info(filePath); - } - // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, function (err) { - if (err) { - return error(err); - } - fs.writeFile(oriFile, result, conf.encoding, function (err) { - if (err) { - return error(err); - } - if (!conf.keepBackup) { - fs.unlink(backupFile, function (err) { - if (err) { - return error(err); - } - info(filePath); - }); - } - else { - info(filePath); - } - }); - }); - } - function getPattern(pattern, conf) { - step('Get final pattern'); - pattern = replacePlaceholders(pattern, conf); - if (conf.literal) { - pattern = pattern.replace(re.regexSpecialChars, '\\$&'); - } - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); // js code?!? - }*/ - step(pattern); - return pattern; - } - function getReplacement(replacement, conf) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - replacement = replacePlaceholders(replacement, conf); - if (conf.outputMatch) { - step('Output match'); - if (parseInt(process.versions.node) < 6) { - return die('outputMatch is only supported in node 6+'); - } - return function () { - var arguments$1 = arguments; - - step(arguments); - if (arguments.length === 3) { - step('Printing full match'); - process.stdout.write(arguments[0] + '\n'); - return ''; - } - for (var i = 1; i < arguments.length - 2; i++) { - process.stdout.write(arguments$1[i]); - } - process.stdout.write('\n'); - return ''; - }; - } - // If captured groups then run dynamicly - if (conf.replacementJs && - re.capturedGroupRef.test(conf.replacement) && - parseInt(process.versions.node) < 6) { - return die('Captured groups for javascript replacement is only supported in node 6+'); - } - step(replacement); - return replacement; - } - /*function oneLinerFromFile(str){ - let lines = str.split("\n"); - if(lines.length===1){ - return str; - } - return lines.map(function (line) { - return line.trim(); - }).join(' '); - }*/ - function getRegex(pattern, conf) { - step('Get final regex with engine: ' + conf.engine); - var regex; - var flags = getFlags(conf); - switch (conf.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (conf.debug) - { throw new Error(e); } - die(e.message); - } - break; - case 'RE2': - try { - var RE2 = require('re2'); - regex = new RE2(pattern, flags); - } - catch (e$1) { - if (conf.debug) - { throw new Error(e$1); } - die(e$1.message); - } - break; - default: - die(("Engine " + (conf.engine) + " not supported")); - } - step(regex); - return regex; - } - function getFlags(conf) { - step('Get flags'); - var flags = ''; - if (!conf.voidGlobal) { - flags += 'g'; - } - if (!conf.voidIgnoreCase) { - flags += 'i'; - } - if (!conf.voidMultiline) { - flags += 'm'; - } - if (conf.dotAll) { - flags += 's'; - } - if (conf.unicode) { - flags += 'u'; - } - step(flags); - return flags; - } - function readableSize(size) { - if (1 === size) { - return '1 Byte'; - } - var i = Math.floor(Math.log(size) / Math.log(1024)); - return ((size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i]); - } - function dynamicReplacement(_file_rr, _config_rr, _data_rr) { - var _time_obj = now; - var _time = localTimeString(_time_obj); - var _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = ' ', _nl = '\n'; - // prettier-ignore - var _file = '❌', _file_rel = '❌', _dirpath = '❌', _dirpath_rel = '❌', _dirname = '❌', _filename = '❌', _name = '❌', _ext = '❌', _mtime = '❌', _ctime = '❌', _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = '❌', dynamicContent = new Function('require', 'fs', 'globs', 'path', 'pipe', 'pipe_', 'find', 'find_', 'text', 'text_', 'file', 'file_', 'file_rel', 'file_rel_', 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', 'dirname', 'dirname_', 'filename', 'filename_', 'name', 'name_', 'ext', 'ext_', 'cwd', 'cwd_', 'now', 'now_', 'time_obj', 'time', 'time_', 'mtime_obj', 'mtime', 'mtime_', 'ctime_obj', 'ctime', 'ctime_', 'bytes', 'bytes_', 'size', 'size_', 'nl', '_', '__code_rr', 'var path = require("path");' + - 'var __require_ = require;' + - 'var r = function(file){' + - 'var result = null;' + - 'try{' + - 'result = __require_(file);' + - '} catch (e){' + - 'var dir = /^[\\\/]/.test(file) ? "" : cwd;' + - 'result = __require_(path.resolve(dir, file));' + - '};' + - 'return result;' + - '};' + - 'require = r;' + - 'return eval(__code_rr);'); - var needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); - var betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; // around 50 Mb will lead to reading filezise from file instead of copying into buffer - if (!_config_rr.contentWasPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); - _file_rel = path.relative(_cwd, _file); - var pathInfo = path.parse(_file); - _dirpath = pathInfo.dir; - _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = (_file.match(re.folderName) || ' _')[1]; - _filename = pathInfo.base; - _name = pathInfo.name; - _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - var fileStats = fs.statSync(_file); - _bytes = fileStats.size; - _size = readableSize(_bytes); - _mtime_obj = fileStats.mtime; - _ctime_obj = fileStats.ctime; - _mtime = localTimeString(_mtime_obj); - _ctime = localTimeString(_ctime_obj); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - var glob = function (a, b) { return fGlob.sync(a, Object.assign({ unique: true, caseSensitiveMatch: !_config_rr.voidIgnoreCase, dot: true }, b)); }; - // Run only once if no captured groups (replacement cant change) - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); - } - // Capture groups used, so need to run once per match - return function () { - var arguments$1 = arguments; - - step(arguments); - var __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname = _dirname, __filename = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; - var capturedGroups = ''; - for (var i = 0; i < arguments.length - 2; i++) { - capturedGroups += 'var $' + i + '=' + JSON.stringify(arguments$1[i]) + '; '; - } - return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname, __dirname + __, __filename, __filename + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); - }; - } - function localTimeString(dateObj) { - if ( dateObj === void 0 ) dateObj = new Date(); - - return ((dateObj.getFullYear()) + "-" + (('0' + (dateObj.getMonth() + 1)).slice(-2)) + "-" + (('0' + dateObj.getDate()).slice(-2)) + " " + (('0' + dateObj.getHours()).slice(-2)) + ":" + (('0' + dateObj.getMinutes()).slice(-2)) + ":" + (('0' + dateObj.getSeconds()).slice(-2)) + "." + (('00' + dateObj.getMilliseconds()).slice(-3))); - } - function replacePlaceholders(str, conf) { - if ( str === void 0 ) str = ''; - - if (!conf.voidEuro) { - str = str.replace(re.euro, '$'); - } - if (!conf.voidSection) { - str = str.replace(re.section, '\\'); - } - return str; - } - function getFilePaths(conf) { - var includeGlob = conf.includeGlob; - var excludeGlob = conf.excludeGlob; - var excludeRe = conf.excludeRe; - var voidIgnoreCase = conf.voidIgnoreCase; - var filesToInclude = fGlob.sync(includeGlob, { - ignore: excludeGlob, - onlyFiles: true, - unique: true, - caseSensitiveMatch: !voidIgnoreCase, - dot: true, - }); - if (excludeRe.length) { - excludeRe - .map(function (el) { return getRegex(getPattern(el, conf), conf); }) - .forEach(function (re) { - filesToInclude = filesToInclude.filter(function (el) { return !el.match(re); }); - }); - } - return filesToInclude; - } - - // CLI interface for rexreplace - var yargs = require('yargs/yargs'); - executeReplacement(cli2conf(process.argv.slice(2))); - function cli2conf(args) { - var assign; - - var pattern, replacement; - // To avoid problems with patterns or replacements starting with '-' so the two first arguments can not contain flags and are removed before yargs does it magic - but we still need to handle -version and -help - var needHelp = 0; - if (args.length < 2) { - if (/-v|--?version$/i.test(args.slice(-1)[0])) { - console.log(version); - process.exitCode = 0; - process.exit(); - } - else if (/-h|--?help$/i.test(args.slice(-1)[0])) { - needHelp = 1; - } - else { - needHelp = 2; - } - } - else { - (assign = args.splice(0, 2), pattern = assign[0], replacement = assign[1]); - } - var argv = yargs(args.slice(2)) - .strict() - .usage('RexReplace v' + - version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") - .example('') - .example("> rr xxx Foo myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") - .example('') - .example("> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md", "'foobar' in myfile.md will become 'barfoo'") - .example('') - .example("> rexreplace '^#' '##' *.md", "All markdown files in this dir got all headlines moved one level deeper") - .example('') - .example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ", "Provide multiple files or globs if needed") - .version('v', 'Print rexreplace version (can be given as only argument)', version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe('M', 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.') - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' ]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. ") - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .alias('H', 'bail') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe('B', 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe('o', 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.') - .alias('o', 'output') - //.conflicts('o','O') - .boolean('m') - .describe('m', "Output each match on a new line. " + - "Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. " + - "If search pattern does not contain matching groups the full match will be outputted. " + - "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + - "") - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe('T', "Trim piped data before processing. " + - "If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. " + - '') - .boolean('R') - .alias('R', 'replacement-pipe') - .describe('R', "Replacement is being piped in. You still need to provide a dummy value (like `_`) as replacement parameter.") - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe('g', 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt') - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') - .describe('G', "filename/globs provided are to files containing one target filename/glob per line") - .alias('G', 'glob-file') - .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe('x', 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.') - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - /* - - - -T (Expect no match in any file and return exit 1 if found) - -t (Expect a match in each file and return exit 1 if not found) - - - .boolean('N') - .alias('N', 'void-newline') - .describe('N', - `Avoid having newline when outputting data (or when piping). `+ - `Normally . `+ - '' - ) - - - - .boolean('p') - .describe('p', "Pattern is the path to a filename containing the pattern. If more than one line is found in the file the pattern will be defined by each line trimmed and having newlines removed followed by other all rules (like -€).)") - .alias('p', 'pattern-file') - - - .boolean('r') - .alias('r', 'replacement-file') - .describe('r', - `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` - ) - - - - .boolean('n') - .describe('n', "Do replacement on file path+name instead of file content (rename/move the files)") - .alias('n', 'name') - - // https://github.com/eugeneware/replacestream - .integer('M') - .describe('M', "Maximum length of match. Set this value only if any single file of your ") - .alias('M', 'max-match-len') - .default('M', false) - - - - - - .boolean('J') - .describe('J', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('J', 'pattern-js') - - - .boolean('glob-js') - .describe('glob-js', "filename/globs are javascript source that will return a string with newline seperating each glob to work on") - - - */ - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \n\tThe statement from the last expression will become the replacement string. \n\tPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. \n\tThe full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. \n\tAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \n\tIf the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. \n\t\n\tThe code has access to the following variables: \n\t`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n\t`fs` from node, \n\t`path` from node, \n\t`glob` proxy name for the .sync function of fast-glob from npm, \n\t`pipe`: the data piped into the command (null if no piped data), \n\t`find`: pattern searched for (the needle), \n\t`text`: full text being searched i.e. file content or piped data (the haystack), \n\t`bytes`: total size of the haystack in bytes, \n\t`size`: human-friendly representation of the total size of the haystack, \n\t`time`: String representing the local time when the command was invoked,\n\t`time_obj`: date object representing `time`,\n\t`now`: alias for `time`,\n\t`cwd`: current process working dir, \n\t`nl`: a new-line char,\n\t`_`: a single space char (for easy string concatenation).\n\t\n\tThe following values defaults to `❌` if haystack does not originate from a file:\n\t`file`: contains the full path of the active file being searched (including full filename), \n\t`file_rel`: contains `file` relative to current process working dir, \n\t`dirpath`: contains the full path without filename of the active file being searched, \n\t`dirpath_rel`: contains `dirpath` relative to current process working dir, \n\t`filename`: is the full filename of the active file being searched without path, \n\t`name`: filename of the active file being searched with no extension, \n\t`ext`: extension of the filename including leading dot, \n\t`mtime`: ISO inspired representation of the last local modification time of the current file, \n\t`ctime`: ISO representation of the local creation time of the current file. \n\t`mtime_obj`: date object representing `mtime`, \n\t`ctime_obj`: date object representing `ctime`. \n\t\n\tAll variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). \n\t") - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') - .epilog("Inspiration: .oO(What should 'sed' have been by now?)").argv; - // All options into one big config object for the rexreplace engine - var conf = {}; - // Use only camelCase full lenght version of settings - Object.keys(argv).forEach(function (key) { - if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = argv[key]; - } - }); - conf.pipeData = null; - conf.showHelp = argv.showHelp; - conf.needHelp = needHelp; - conf.pattern = pattern; - conf.includeGlob = argv._; - conf.excludeGlob = [].concat( argv.excludeGlob ).filter(Boolean); - conf.excludeRe = [].concat( argv.excludeRe ).filter(Boolean); - conf.replacement = replacement; - if (!conf.replacementJs) { - conf.replacement = unescapeString(conf.replacement); - } - return conf; - } - function executeReplacement(conf) { - if (0 < conf.needHelp) { - return backOut(conf.needHelp - 1, conf.showHelp); - } - if (conf.output) - { process.stdout.setDefaultEncoding(conf.encoding); } - if (Boolean(process.stdin.isTTY)) - { return engine(conf); } - process.stdin.setEncoding(conf.encoding); - var pipeInUse = false; - var pipeData = ''; - process.stdin.on('readable', function () { - var chunk = process.stdin.read(); - if (null !== chunk) { - pipeInUse = true; - pipeData += chunk; - while ((chunk = process.stdin.read())) { - pipeData += chunk; - } - } - }); - process.stdin.on('end', function () { - if (pipeInUse) { - if (conf.trimPipe) { - pipeData = pipeData.trim(); - } - conf.pipeData = pipeData; - } - engine(handlePipeData(conf)); - }); - } - function backOut(exitcode, cb) { - if ( exitcode === void 0 ) exitcode = 1; - - cb && cb(); - process.exitCode = exitcode; - process.exit(); - } - function unescapeString(str) { - if ( str === void 0 ) str = ''; - - return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); - } - function handlePipeData(conf) { - process.stdin.setDefaultEncoding(conf.encoding); - outputConfig(conf); - step('Check Piped Data'); - if (conf.replacementPipe) { - step('Piping replacement'); - if (null === conf.pipeData) { - return die('You flagged that replacement will be piped in - but no data arrived.'); - } - conf.replacement = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } - } - else if (conf.globPipe) { - step('Piping globs'); - if (conf.includeGlob.length) { - return die('Please pipe file/globs OR provide as parameters. Not both.'); - } - if (null === conf.pipeData) { - return die('You flagged that filenames/globs will be piped in - but no data arrived.'); - } - conf.globs = conf.pipeData; - if (!conf.replacementJs) - { conf.pipeData = null; } - } - else if (null !== conf.pipeData && !conf.includeGlob.length) { - step('Content being piped'); - conf.contentWasPiped = true; - conf.output = true; - process.stdout.setDefaultEncoding(conf.encoding); - } - return conf; - } - - exports.cli2conf = cli2conf; - exports.executeReplacement = executeReplacement; - - Object.defineProperty(exports, '__esModule', { value: true }); - - return exports; - -})({}); diff --git a/package.json b/package.json index 819a6907..d262b742 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Smoothly search & replace in files from CLI.", "author": "Mathias Rangel Wulff", "license": "MIT", + "type": "module", "main": "src/engine.js", "repository": { "type": "git", @@ -18,9 +19,8 @@ "postbuild": "cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", "version": "yarn build-minify", "build": "yarn build-only", - "build-only": "tsc src/cli --outDir bin/ES6 -t ES6 && rollup -c", - "build-minify": "yarn build && yarn minify", - "minify": "echo '#!/usr/bin/env node' > bin/rexreplace.cli.min.js && npx google-closure-compiler --js=bin/rexreplace.cli.js >> bin/rexreplace.cli.min.js", + "build-only": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js", + "build-minify": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js --minify", "prebuild": "rm -fr bin && yarn format", "test-js": "echo todo: async mocha", "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", @@ -93,4 +93,4 @@ "url": "https://github.com/mathiasrw/rexreplace/issues" }, "homepage": "https://github.com/mathiasrw/rexreplace#readme" -} +} \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index c17d1e89..94cfb9ac 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -24,7 +24,7 @@ import resolve from '@rollup/plugin-node-resolve'; export default [ { // input: 'src/cli.ts', - input: 'bin/ES6/cli.js', + input: 'bin/ES6/env/node.js', output: { name: 'rexreplace', //file: 'build/ES5/rexreplace.bundle.js', @@ -32,25 +32,27 @@ export default [ format: 'iife' }, plugins: [ - hashbang(), + hashbang(), //typescript(), - resolve(), - buble(), + resolve(), + buble({ + transforms: { generator: false } + }), replace({ - "PACKAGE_VERSION": require('./package.json').version,preventAssignment: true, + "PACKAGE_VERSION": require('./package.json').version, preventAssignment: true, }), //progress(), /*closure({ - languageIn: 'ECMASCRIPT6', - languageOut: 'ECMASCRIPT5', - compilationLevel: 'ADVANCED', - warningLevel: 'QUIET', + languageIn: 'ECMASCRIPT6', + languageOut: 'ECMASCRIPT5', + compilationLevel: 'ADVANCED', + warningLevel: 'QUIET', env:'CUSTOM', //externs: ['externs.js'], - }),//*/ + }),//*/ - //uglify(), + //uglify(), //filesize(), ] },/*{ diff --git a/src/cli.ts b/src/cli.ts index 43a0482a..da847b06 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,9 +1,15 @@ +/// + import yargs from 'yargs'; import * as rexreplace from './engine'; import {outputConfig, step, debug, chat, info, error, die} from './output'; +const re = { + nl: /\r?\n/, +}; + //executeReplacement(cli2conf(process.argv.slice(2)), null); export function cli2conf(runtime: Runtime, args: string[]) { @@ -24,7 +30,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { [pattern, replacement] = args.splice(0, 2); } - const argv = yargs + const argv = yargs(args) .strict() .usage( @@ -34,21 +40,16 @@ export function cli2conf(runtime: Runtime, args: string[]) { '> rexreplace pattern replacement [fileGlob|option]+' ) - .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) - .example('') - .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) - .example('') - + .usage(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) + .usage(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) .example( `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'` ) - .example('') .example( `> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper` ) - .example('') .example( `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed` @@ -312,7 +313,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .alias('h', 'help') .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`) - .parse(args); + .parseSync(); // All options into one big config object for the rexreplace engine let conf: any = {}; @@ -324,13 +325,13 @@ export function cli2conf(runtime: Runtime, args: string[]) { } }); - conf.showHelp = argv.showHelp; + conf.showHelp = yargs.showHelp; conf.needHelp = needHelp; conf.pattern = pattern; + conf.replacement = replacement; conf.includeGlob = argv._; conf.excludeGlob = [...argv.excludeGlob].filter(Boolean); conf.excludeRe = [...argv.excludeRe].filter(Boolean); - conf.replacement = replacement; if (!conf.replacementJs) { conf.replacement = unescapeString(conf.replacement); @@ -339,6 +340,10 @@ export function cli2conf(runtime: Runtime, args: string[]) { return conf; } +function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); +} + export function executeReplacement(runtime: Runtime, conf, pipeData: string = null) { if (0 < conf.needHelp) { runtime.exit(conf.needHelp - 1); @@ -377,7 +382,7 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu return die('Please pipe file/globs to include OR provide them as as parameters. Not both.'); } - conf.globs = pipeData; + conf.globs = pipeData.split(/\r?\n/).filter(Boolean); if (conf.replacementJs) conf.pipeData = pipeData; @@ -396,7 +401,3 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu process.stdout.setDefaultEncoding(conf.encoding); return rexreplace.engine(runtime, conf); } - -function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -} diff --git a/src/engine.ts b/src/engine.ts index 4baba0d8..d8e94f34 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -22,7 +22,11 @@ const re = { export const version = 'PACKAGE_VERSION'; -export function engine(runtime: Runtime, conf: any = {engine: 'V8'}) { +let runtime: Runtime; + +export function engine(_runtime: Runtime, conf: any = {engine: 'V8'}) { + runtime = _runtime; + outputConfig(conf); step('Displaying steps for:'); @@ -32,7 +36,7 @@ export function engine(runtime: Runtime, conf: any = {engine: 'V8'}) { conf.replacement = getReplacement(conf.replacement, conf) || ''; - conf.replacementOri = conf.replacement; + if (conf.replacementJs) conf.replacementOri = conf.replacement; conf.regex = getRegex(conf.pattern, conf) || ''; @@ -54,7 +58,14 @@ export function engine(runtime: Runtime, conf: any = {engine: 'V8'}) { conf.files // Find out if any filepaths are invalid - .filter((filepath) => (fs.statSync(filepath).isFile() ? true : error('Not a file:', filepath))) + .filter((filepath) => { + if (fs.statSync(filepath).isFile()) { + return true; + } + + debug('Not a valid file:', filepath); + return false; + }) // Do the replacement .forEach((filepath) => openFile(filepath, conf)); @@ -63,17 +74,18 @@ export function engine(runtime: Runtime, conf: any = {engine: 'V8'}) { function openFile(file, conf) { if (conf.voidAsync) { chat('Open sync: ' + file); - var data = fs.readFileSync(file, conf.encoding); + var data = runtime.fileReadSync(file, conf.encoding); return doReplacement(file, conf, data); - } else { - chat('Open async: ' + file); - fs.readFile(file, conf.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, conf, data); - }); } + + chat('Open async: ' + file); + + fs.readFile(file, conf.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, conf, data); + }); } // postfix argument names to limit the probabillity of user inputted javascript accidently using same values @@ -85,7 +97,7 @@ function doReplacement(filePath: string, conf: any, content: string) { conf.replacement = dynamicReplacement(filePath, conf, content); } - // Main regexp of the whole thing + // Main regexp doing the replacement const result = content.replace(conf.regex, conf.replacement); // The output of matched strings is done from the replacement, so no need to continue @@ -108,10 +120,10 @@ function doReplacement(filePath: string, conf: any, content: string) { // Release the memory while storing files content = ''; - debug('Write udpated content to: ' + filePath); - if (conf.simulate) return info(filePath); + debug('Write updated content to: ' + filePath); + // Write directly to the same file (if the process is killed all new and old data is lost) if (conf.voidBackup) { return fs.writeFile(filePath, result, conf.encoding, function (err) { @@ -158,9 +170,9 @@ function doReplacement(filePath: string, conf: any, content: string) { } info(filePath); }); - } else { - info(filePath); } + + return info(filePath); }); }); } diff --git a/src/env/bun.ts b/src/env/bun.ts index 93bd211e..b80663ed 100644 --- a/src/env/bun.ts +++ b/src/env/bun.ts @@ -2,13 +2,13 @@ /// -import * as yargs from 'yargs'; +import {executeReplacement, cli2conf} from '../cli.js'; + +import fs from 'fs-extra'; export const runtime: Runtime = { - fileReadSync: async (path, encoding = 'utf8') => { - const file = Bun.file(path); - return await file.text(); - }, + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), + fileReadAsync: async (path, encoding = 'utf8') => { const file = Bun.file(path); return file.text(); @@ -21,8 +21,8 @@ export const runtime: Runtime = { return Bun.write(path, data); }, - fileDeleteSync: ioFn_node.fileDeleteSync, - fileDeleteAsync: ioFn_node.fileDeleteAsync, + fileDeleteSync: (path) => fs.unlinkSync(path), + fileDeleteAsync: (path) => fs.unlink(path), fileCopySync: async (originalPath, destinationPath) => { const input = Bun.file(originalPath); @@ -34,9 +34,29 @@ export const runtime: Runtime = { const output = Bun.file(destinationPath); return Bun.write(output, input); }, + exit: process.exit, }; -import {executeReplacement, cli2conf} from '../cli.js'; -import {Runtime} from '../types.js'; +(() => { + let conf = cli2conf(runtime, process.argv.slice(2)); + + if (Boolean(process.stdin.isTTY)) return executeReplacement(runtime, conf); + + process.stdin.setEncoding(conf.encoding); + + let pipeData = ''; + process.stdin.on('readable', () => { + let chunk = process.stdin.read(); + + if (null !== chunk) { + pipeData += chunk; + while ((chunk = process.stdin.read())) { + pipeData += chunk; + } + } + }); -executeReplacement(cli2conf(process.argv.slice(2)), {ioFn, yargs, pipeData}); + process.stdin.on('end', () => { + return executeReplacement(runtime, conf, pipeData); + }); +})(); diff --git a/src/env/node.ts b/src/env/node.ts index c8731345..7965a662 100644 --- a/src/env/node.ts +++ b/src/env/node.ts @@ -30,13 +30,11 @@ export const runtime: Runtime = { process.stdin.setEncoding(conf.encoding); - let pipeInUse = false; let pipeData = ''; process.stdin.on('readable', () => { let chunk = process.stdin.read(); if (null !== chunk) { - pipeInUse = true; pipeData += chunk; while ((chunk = process.stdin.read())) { pipeData += chunk; @@ -45,6 +43,6 @@ export const runtime: Runtime = { }); process.stdin.on('end', () => { - rexreplace.engine(placePipeData(conf)); + return executeReplacement(runtime, conf, pipeData); }); })(); diff --git a/src/output.ts b/src/output.ts index fcd6584b..477a8867 100644 --- a/src/output.ts +++ b/src/output.ts @@ -13,6 +13,7 @@ export const info = function (msg, data = '') { if (conf.quiet || conf.quietTotal) { return; } + if (conf.output || conf.outputMatch) return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); @@ -32,10 +33,9 @@ export const error = function (msg, data = '') { return die(msg, data); } if (!conf.quietTotal) { - console.error.apply(this, [' ❌',font.red(msg), data].filter(Boolean)); + console.error.apply(this, [' ❌', font.red(msg), data].filter(Boolean)); } - return false; }; @@ -47,7 +47,7 @@ export const die = function (msg = '', data = '', displayHelp = false) { kill(); }; -export function debug(data) { +export function debug(...data) { if (conf.debug) { console.error(font.gray(JSON.stringify(data, null, 4))); } diff --git a/tsconfig.json b/tsconfig.json index dbb63e9d..1fd45292 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,12 @@ { "compilerOptions": { - "allowImportingTsExtensions": true, - "typeRoots": ["src", "node_modules/@types"], - "target": "es6", + "typeRoots": ["./types", "./node_modules/@types", "./node_modules/bun-types"], + "outDir": "bin/ES6", + "target": "ES6", "lib": ["es6", "esnext"], - "types": ["bun-types", "node"], - "moduleResolution": "node" - } + "types": ["node"], + "moduleResolution": "nodenext", + "module": "NodeNext" + }, + "include": ["src/env/node.ts"] } diff --git a/magic-string.d.ts b/types/magic-string.d.ts similarity index 100% rename from magic-string.d.ts rename to types/magic-string.d.ts diff --git a/src/types.d.ts b/types/rexreplace.d.ts similarity index 90% rename from src/types.d.ts rename to types/rexreplace.d.ts index c84f69a8..2c8ebc3b 100644 --- a/src/types.d.ts +++ b/types/rexreplace.d.ts @@ -2,10 +2,10 @@ interface Runtime { fileReadSync: (path: string, encoding?: string) => string; fileReadAsync: (path: string, encoding?: string) => Promise; fileWriteSync: (path: string, data: string, encoding?: string) => void; - fileWriteAsync: (path: string, data: string, encoding?: string) => Promise; + fileWriteAsync: (path: string, data: string, encoding?: string) => Promise; fileDeleteSync: (path: string) => void; fileDeleteAsync: (path: string) => Promise; fileCopySync: (originalPath: string, destinationPath: string) => void; - fileCopyAsync: (originalPath: string, destinationPath: string) => Promise; + fileCopyAsync: (originalPath: string, destinationPath: string) => Promise; exit: (errorCode: number) => null; } From 6a442015841ae5f5968feb592c0e301f91d7206a Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Tue, 19 Sep 2023 13:39:32 +1000 Subject: [PATCH 07/17] wip --- bin/rexreplace.cli.js | 14495 +--------------------------------- bin/rexreplace.cli.min.js | 15185 ++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 152641 -> 153903 bytes package.json | 12 +- slet.tmp | 1 - src/cli.ts | 22 +- src/engine.ts | 2 +- src/output.ts | 2 +- stderr.txt | 4 - stdout.txt | 1 - yarn.lock | 53 +- 11 files changed, 15279 insertions(+), 14498 deletions(-) create mode 100755 bin/rexreplace.cli.min.js delete mode 100644 slet.tmp delete mode 100644 stderr.txt delete mode 100644 stdout.txt diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index c28a7941..cc0d3055 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -1,12428 +1,38 @@ #!/usr/bin/env bun // @bun -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getProtoOf = Object.getPrototypeOf; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __toESM = (mod, isNodeMode, target) => { - target = mod != null ? __create(__getProtoOf(mod)) : {}; - const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target; - for (let key of __getOwnPropNames(mod)) - if (!__hasOwnProp.call(to, key)) - __defProp(to, key, { - get: () => mod[key], - enumerable: true - }); - return to; -}; -var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); -var __require = (id) => { - return import.meta.require(id); -}; - -// node_modules/universalify/index.js -var require_universalify = __commonJS((exports) => { - exports.fromCallback = function(fn) { - return Object.defineProperty(function(...args) { - if (typeof args[args.length - 1] === "function") - fn.apply(this, args); - else { - return new Promise((resolve5, reject) => { - fn.call(this, ...args, (err, res) => err != null ? reject(err) : resolve5(res)); - }); - } - }, "name", { value: fn.name }); - }; - exports.fromPromise = function(fn) { - return Object.defineProperty(function(...args) { - const cb = args[args.length - 1]; - if (typeof cb !== "function") - return fn.apply(this, args); - else - fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb); - }, "name", { value: fn.name }); - }; -}); - -// node_modules/graceful-fs/polyfills.js -var require_polyfills = __commonJS((exports, module) => { - var patch = function(fs) { - if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs); - } - if (!fs.lutimes) { - patchLutimes(fs); - } - fs.chown = chownFix(fs.chown); - fs.fchown = chownFix(fs.fchown); - fs.lchown = chownFix(fs.lchown); - fs.chmod = chmodFix(fs.chmod); - fs.fchmod = chmodFix(fs.fchmod); - fs.lchmod = chmodFix(fs.lchmod); - fs.chownSync = chownFixSync(fs.chownSync); - fs.fchownSync = chownFixSync(fs.fchownSync); - fs.lchownSync = chownFixSync(fs.lchownSync); - fs.chmodSync = chmodFixSync(fs.chmodSync); - fs.fchmodSync = chmodFixSync(fs.fchmodSync); - fs.lchmodSync = chmodFixSync(fs.lchmodSync); - fs.stat = statFix(fs.stat); - fs.fstat = statFix(fs.fstat); - fs.lstat = statFix(fs.lstat); - fs.statSync = statFixSync(fs.statSync); - fs.fstatSync = statFixSync(fs.fstatSync); - fs.lstatSync = statFixSync(fs.lstatSync); - if (fs.chmod && !fs.lchmod) { - fs.lchmod = function(path, mode, cb) { - if (cb) - process.nextTick(cb); - }; - fs.lchmodSync = function() { - }; - } - if (fs.chown && !fs.lchown) { - fs.lchown = function(path, uid, gid, cb) { - if (cb) - process.nextTick(cb); - }; - fs.lchownSync = function() { - }; - } - if (platform === "win32") { - fs.rename = typeof fs.rename !== "function" ? fs.rename : function(fs$rename) { - function rename(from, to, cb) { - var start = Date.now(); - var backoff = 0; - fs$rename(from, to, function CB(er) { - if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 60000) { - setTimeout(function() { - fs.stat(to, function(stater, st) { - if (stater && stater.code === "ENOENT") - fs$rename(from, to, CB); - else - cb(er); - }); - }, backoff); - if (backoff < 100) - backoff += 10; - return; - } - if (cb) - cb(er); - }); - } - if (Object.setPrototypeOf) - Object.setPrototypeOf(rename, fs$rename); - return rename; - }(fs.rename); - } - fs.read = typeof fs.read !== "function" ? fs.read : function(fs$read) { - function read(fd, buffer, offset, length, position, callback_) { - var callback; - if (callback_ && typeof callback_ === "function") { - var eagCounter = 0; - callback = function(er, _, __) { - if (er && er.code === "EAGAIN" && eagCounter < 10) { - eagCounter++; - return fs$read.call(fs, fd, buffer, offset, length, position, callback); - } - callback_.apply(this, arguments); - }; - } - return fs$read.call(fs, fd, buffer, offset, length, position, callback); - } - if (Object.setPrototypeOf) - Object.setPrototypeOf(read, fs$read); - return read; - }(fs.read); - fs.readSync = typeof fs.readSync !== "function" ? fs.readSync : function(fs$readSync) { - return function(fd, buffer, offset, length, position) { - var eagCounter = 0; - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position); - } catch (er) { - if (er.code === "EAGAIN" && eagCounter < 10) { - eagCounter++; - continue; - } - throw er; - } - } - }; - }(fs.readSync); - function patchLchmod(fs2) { - fs2.lchmod = function(path, mode, callback) { - fs2.open(path, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) { - if (err) { - if (callback) - callback(err); - return; - } - fs2.fchmod(fd, mode, function(err2) { - fs2.close(fd, function(err22) { - if (callback) - callback(err2 || err22); - }); - }); - }); - }; - fs2.lchmodSync = function(path, mode) { - var fd = fs2.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode); - var threw = true; - var ret; - try { - ret = fs2.fchmodSync(fd, mode); - threw = false; - } finally { - if (threw) { - try { - fs2.closeSync(fd); - } catch (er) { - } - } else { - fs2.closeSync(fd); - } - } - return ret; - }; - } - function patchLutimes(fs2) { - if (constants.hasOwnProperty("O_SYMLINK") && fs2.futimes) { - fs2.lutimes = function(path, at, mt, cb) { - fs2.open(path, constants.O_SYMLINK, function(er, fd) { - if (er) { - if (cb) - cb(er); - return; - } - fs2.futimes(fd, at, mt, function(er2) { - fs2.close(fd, function(er22) { - if (cb) - cb(er2 || er22); - }); - }); - }); - }; - fs2.lutimesSync = function(path, at, mt) { - var fd = fs2.openSync(path, constants.O_SYMLINK); - var ret; - var threw = true; - try { - ret = fs2.futimesSync(fd, at, mt); - threw = false; - } finally { - if (threw) { - try { - fs2.closeSync(fd); - } catch (er) { - } - } else { - fs2.closeSync(fd); - } - } - return ret; - }; - } else if (fs2.futimes) { - fs2.lutimes = function(_a, _b, _c, cb) { - if (cb) - process.nextTick(cb); - }; - fs2.lutimesSync = function() { - }; - } - } - function chmodFix(orig) { - if (!orig) - return orig; - return function(target, mode, cb) { - return orig.call(fs, target, mode, function(er) { - if (chownErOk(er)) - er = null; - if (cb) - cb.apply(this, arguments); - }); - }; - } - function chmodFixSync(orig) { - if (!orig) - return orig; - return function(target, mode) { - try { - return orig.call(fs, target, mode); - } catch (er) { - if (!chownErOk(er)) - throw er; - } - }; - } - function chownFix(orig) { - if (!orig) - return orig; - return function(target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function(er) { - if (chownErOk(er)) - er = null; - if (cb) - cb.apply(this, arguments); - }); - }; - } - function chownFixSync(orig) { - if (!orig) - return orig; - return function(target, uid, gid) { - try { - return orig.call(fs, target, uid, gid); - } catch (er) { - if (!chownErOk(er)) - throw er; - } - }; - } - function statFix(orig) { - if (!orig) - return orig; - return function(target, options, cb) { - if (typeof options === "function") { - cb = options; - options = null; - } - function callback(er, stats) { - if (stats) { - if (stats.uid < 0) - stats.uid += 4294967296; - if (stats.gid < 0) - stats.gid += 4294967296; - } - if (cb) - cb.apply(this, arguments); - } - return options ? orig.call(fs, target, options, callback) : orig.call(fs, target, callback); - }; - } - function statFixSync(orig) { - if (!orig) - return orig; - return function(target, options) { - var stats = options ? orig.call(fs, target, options) : orig.call(fs, target); - if (stats) { - if (stats.uid < 0) - stats.uid += 4294967296; - if (stats.gid < 0) - stats.gid += 4294967296; - } - return stats; - }; - } - function chownErOk(er) { - if (!er) - return true; - if (er.code === "ENOSYS") - return true; - var nonroot = !process.getuid || process.getuid() !== 0; - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true; - } - return false; - } - }; - var constants = import.meta.require("constants"); - var origCwd = process.cwd; - var cwd = null; - var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform; - process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process); - return cwd; - }; - try { - process.cwd(); - } catch (er) { - } - if (typeof process.chdir === "function") { - chdir = process.chdir; - process.chdir = function(d) { - cwd = null; - chdir.call(process, d); - }; - if (Object.setPrototypeOf) - Object.setPrototypeOf(process.chdir, chdir); - } - var chdir; - module.exports = patch; -}); - -// node_modules/graceful-fs/legacy-streams.js -var require_legacy_streams = __commonJS((exports, module) => { - var legacy = function(fs) { - return { - ReadStream, - WriteStream - }; - function ReadStream(path, options) { - if (!(this instanceof ReadStream)) - return new ReadStream(path, options); - Stream.call(this); - var self = this; - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; - this.flags = "r"; - this.mode = 438; - this.bufferSize = 64 * 1024; - options = options || {}; - var keys = Object.keys(options); - for (var index = 0, length = keys.length;index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - if (this.encoding) - this.setEncoding(this.encoding); - if (this.start !== undefined) { - if (typeof this.start !== "number") { - throw TypeError("start must be a Number"); - } - if (this.end === undefined) { - this.end = Infinity; - } else if (typeof this.end !== "number") { - throw TypeError("end must be a Number"); - } - if (this.start > this.end) { - throw new Error("start must be <= end"); - } - this.pos = this.start; - } - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } - fs.open(this.path, this.flags, this.mode, function(err, fd) { - if (err) { - self.emit("error", err); - self.readable = false; - return; - } - self.fd = fd; - self.emit("open", fd); - self._read(); - }); - } - function WriteStream(path, options) { - if (!(this instanceof WriteStream)) - return new WriteStream(path, options); - Stream.call(this); - this.path = path; - this.fd = null; - this.writable = true; - this.flags = "w"; - this.encoding = "binary"; - this.mode = 438; - this.bytesWritten = 0; - options = options || {}; - var keys = Object.keys(options); - for (var index = 0, length = keys.length;index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - if (this.start !== undefined) { - if (typeof this.start !== "number") { - throw TypeError("start must be a Number"); - } - if (this.start < 0) { - throw new Error("start must be >= zero"); - } - this.pos = this.start; - } - this.busy = false; - this._queue = []; - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } - }; - var Stream = import.meta.require("stream").Stream; - module.exports = legacy; -}); - -// node_modules/graceful-fs/clone.js -var require_clone = __commonJS((exports, module) => { - var clone = function(obj) { - if (obj === null || typeof obj !== "object") - return obj; - if (obj instanceof Object) - var copy = { __proto__: getPrototypeOf(obj) }; - else - var copy = Object.create(null); - Object.getOwnPropertyNames(obj).forEach(function(key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)); - }); - return copy; - }; - module.exports = clone; - var getPrototypeOf = Object.getPrototypeOf || function(obj) { - return obj.__proto__; - }; -}); - -// node_modules/graceful-fs/graceful-fs.js -var require_graceful_fs = __commonJS((exports, module) => { - var noop = function() { - }; - var publishQueue = function(context, queue2) { - Object.defineProperty(context, gracefulQueue, { - get: function() { - return queue2; - } - }); - }; - var patch = function(fs2) { - polyfills(fs2); - fs2.gracefulify = patch; - fs2.createReadStream = createReadStream; - fs2.createWriteStream = createWriteStream; - var fs$readFile = fs2.readFile; - fs2.readFile = readFile; - function readFile(path, options, cb) { - if (typeof options === "function") - cb = options, options = null; - return go$readFile(path, options, cb); - function go$readFile(path2, options2, cb2, startTime) { - return fs$readFile(path2, options2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$readFile, [path2, options2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$writeFile = fs2.writeFile; - fs2.writeFile = writeFile2; - function writeFile2(path, data, options, cb) { - if (typeof options === "function") - cb = options, options = null; - return go$writeFile(path, data, options, cb); - function go$writeFile(path2, data2, options2, cb2, startTime) { - return fs$writeFile(path2, data2, options2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$writeFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$appendFile = fs2.appendFile; - if (fs$appendFile) - fs2.appendFile = appendFile; - function appendFile(path, data, options, cb) { - if (typeof options === "function") - cb = options, options = null; - return go$appendFile(path, data, options, cb); - function go$appendFile(path2, data2, options2, cb2, startTime) { - return fs$appendFile(path2, data2, options2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$appendFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$copyFile = fs2.copyFile; - if (fs$copyFile) - fs2.copyFile = copyFile; - function copyFile(src, dest, flags, cb) { - if (typeof flags === "function") { - cb = flags; - flags = 0; - } - return go$copyFile(src, dest, flags, cb); - function go$copyFile(src2, dest2, flags2, cb2, startTime) { - return fs$copyFile(src2, dest2, flags2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$readdir = fs2.readdir; - fs2.readdir = readdir; - var noReaddirOptionVersions = /^v[0-5]\./; - function readdir(path, options, cb) { - if (typeof options === "function") - cb = options, options = null; - var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir(path2, options2, cb2, startTime) { - return fs$readdir(path2, fs$readdirCallback(path2, options2, cb2, startTime)); - } : function go$readdir(path2, options2, cb2, startTime) { - return fs$readdir(path2, options2, fs$readdirCallback(path2, options2, cb2, startTime)); - }; - return go$readdir(path, options, cb); - function fs$readdirCallback(path2, options2, cb2, startTime) { - return function(err, files) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([ - go$readdir, - [path2, options2, cb2], - err, - startTime || Date.now(), - Date.now() - ]); - else { - if (files && files.sort) - files.sort(); - if (typeof cb2 === "function") - cb2.call(this, err, files); - } - }; - } - } - if (process.version.substr(0, 4) === "v0.8") { - var legStreams = legacy(fs2); - ReadStream = legStreams.ReadStream; - WriteStream = legStreams.WriteStream; - } - var fs$ReadStream = fs2.ReadStream; - if (fs$ReadStream) { - ReadStream.prototype = Object.create(fs$ReadStream.prototype); - ReadStream.prototype.open = ReadStream$open; - } - var fs$WriteStream = fs2.WriteStream; - if (fs$WriteStream) { - WriteStream.prototype = Object.create(fs$WriteStream.prototype); - WriteStream.prototype.open = WriteStream$open; - } - Object.defineProperty(fs2, "ReadStream", { - get: function() { - return ReadStream; - }, - set: function(val) { - ReadStream = val; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(fs2, "WriteStream", { - get: function() { - return WriteStream; - }, - set: function(val) { - WriteStream = val; - }, - enumerable: true, - configurable: true - }); - var FileReadStream = ReadStream; - Object.defineProperty(fs2, "FileReadStream", { - get: function() { - return FileReadStream; - }, - set: function(val) { - FileReadStream = val; - }, - enumerable: true, - configurable: true - }); - var FileWriteStream = WriteStream; - Object.defineProperty(fs2, "FileWriteStream", { - get: function() { - return FileWriteStream; - }, - set: function(val) { - FileWriteStream = val; - }, - enumerable: true, - configurable: true - }); - function ReadStream(path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this; - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments); - } - function ReadStream$open() { - var that = this; - open(that.path, that.flags, that.mode, function(err, fd) { - if (err) { - if (that.autoClose) - that.destroy(); - that.emit("error", err); - } else { - that.fd = fd; - that.emit("open", fd); - that.read(); - } - }); - } - function WriteStream(path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this; - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments); - } - function WriteStream$open() { - var that = this; - open(that.path, that.flags, that.mode, function(err, fd) { - if (err) { - that.destroy(); - that.emit("error", err); - } else { - that.fd = fd; - that.emit("open", fd); - } - }); - } - function createReadStream(path, options) { - return new fs2.ReadStream(path, options); - } - function createWriteStream(path, options) { - return new fs2.WriteStream(path, options); - } - var fs$open = fs2.open; - fs2.open = open; - function open(path, flags, mode, cb) { - if (typeof mode === "function") - cb = mode, mode = null; - return go$open(path, flags, mode, cb); - function go$open(path2, flags2, mode2, cb2, startTime) { - return fs$open(path2, flags2, mode2, function(err, fd) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$open, [path2, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - return fs2; - }; - var enqueue = function(elem) { - debug2("ENQUEUE", elem[0].name, elem[1]); - fs[gracefulQueue].push(elem); - retry(); - }; - var resetQueue = function() { - var now = Date.now(); - for (var i = 0;i < fs[gracefulQueue].length; ++i) { - if (fs[gracefulQueue][i].length > 2) { - fs[gracefulQueue][i][3] = now; - fs[gracefulQueue][i][4] = now; - } - } - retry(); - }; - var retry = function() { - clearTimeout(retryTimer); - retryTimer = undefined; - if (fs[gracefulQueue].length === 0) - return; - var elem = fs[gracefulQueue].shift(); - var fn = elem[0]; - var args = elem[1]; - var err = elem[2]; - var startTime = elem[3]; - var lastTime = elem[4]; - if (startTime === undefined) { - debug2("RETRY", fn.name, args); - fn.apply(null, args); - } else if (Date.now() - startTime >= 60000) { - debug2("TIMEOUT", fn.name, args); - var cb = args.pop(); - if (typeof cb === "function") - cb.call(null, err); - } else { - var sinceAttempt = Date.now() - lastTime; - var sinceStart = Math.max(lastTime - startTime, 1); - var desiredDelay = Math.min(sinceStart * 1.2, 100); - if (sinceAttempt >= desiredDelay) { - debug2("RETRY", fn.name, args); - fn.apply(null, args.concat([startTime])); - } else { - fs[gracefulQueue].push(elem); - } - } - if (retryTimer === undefined) { - retryTimer = setTimeout(retry, 0); - } - }; - var fs = import.meta.require("fs"); - var polyfills = require_polyfills(); - var legacy = require_legacy_streams(); - var clone = require_clone(); - var util = import.meta.require("util"); - var gracefulQueue; - var previousSymbol; - if (typeof Symbol === "function" && typeof Symbol.for === "function") { - gracefulQueue = Symbol.for("graceful-fs.queue"); - previousSymbol = Symbol.for("graceful-fs.previous"); - } else { - gracefulQueue = "___graceful-fs.queue"; - previousSymbol = "___graceful-fs.previous"; - } - var debug2 = noop; - if (util.debuglog) - debug2 = util.debuglog("gfs4"); - else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) - debug2 = function() { - var m = util.format.apply(util, arguments); - m = "GFS4: " + m.split(/\n/).join("\nGFS4: "); - console.error(m); - }; - if (!fs[gracefulQueue]) { - queue = global[gracefulQueue] || []; - publishQueue(fs, queue); - fs.close = function(fs$close) { - function close(fd, cb) { - return fs$close.call(fs, fd, function(err) { - if (!err) { - resetQueue(); - } - if (typeof cb === "function") - cb.apply(this, arguments); - }); - } - Object.defineProperty(close, previousSymbol, { - value: fs$close - }); - return close; - }(fs.close); - fs.closeSync = function(fs$closeSync) { - function closeSync(fd) { - fs$closeSync.apply(fs, arguments); - resetQueue(); - } - Object.defineProperty(closeSync, previousSymbol, { - value: fs$closeSync - }); - return closeSync; - }(fs.closeSync); - if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) { - process.on("exit", function() { - debug2(fs[gracefulQueue]); - import.meta.require("assert").equal(fs[gracefulQueue].length, 0); - }); - } - } - var queue; - if (!global[gracefulQueue]) { - publishQueue(global, fs[gracefulQueue]); - } - module.exports = patch(clone(fs)); - if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { - module.exports = patch(fs); - fs.__patched = true; - } - var retryTimer; -}); - -// node_modules/fs-extra/lib/fs/index.js -var require_fs = __commonJS((exports) => { - var u = require_universalify().fromCallback; - var fs = require_graceful_fs(); - var api = [ - "access", - "appendFile", - "chmod", - "chown", - "close", - "copyFile", - "fchmod", - "fchown", - "fdatasync", - "fstat", - "fsync", - "ftruncate", - "futimes", - "lchmod", - "lchown", - "link", - "lstat", - "mkdir", - "mkdtemp", - "open", - "opendir", - "readdir", - "readFile", - "readlink", - "realpath", - "rename", - "rm", - "rmdir", - "stat", - "symlink", - "truncate", - "unlink", - "utimes", - "writeFile" - ].filter((key) => { - return typeof fs[key] === "function"; - }); - Object.assign(exports, fs); - api.forEach((method) => { - exports[method] = u(fs[method]); - }); - exports.exists = function(filename, callback) { - if (typeof callback === "function") { - return fs.exists(filename, callback); - } - return new Promise((resolve5) => { - return fs.exists(filename, resolve5); - }); - }; - exports.read = function(fd, buffer, offset, length, position, callback) { - if (typeof callback === "function") { - return fs.read(fd, buffer, offset, length, position, callback); - } - return new Promise((resolve5, reject) => { - fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => { - if (err) - return reject(err); - resolve5({ bytesRead, buffer: buffer2 }); - }); - }); - }; - exports.write = function(fd, buffer, ...args) { - if (typeof args[args.length - 1] === "function") { - return fs.write(fd, buffer, ...args); - } - return new Promise((resolve5, reject) => { - fs.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => { - if (err) - return reject(err); - resolve5({ bytesWritten, buffer: buffer2 }); - }); - }); - }; - exports.readv = function(fd, buffers, ...args) { - if (typeof args[args.length - 1] === "function") { - return fs.readv(fd, buffers, ...args); - } - return new Promise((resolve5, reject) => { - fs.readv(fd, buffers, ...args, (err, bytesRead, buffers2) => { - if (err) - return reject(err); - resolve5({ bytesRead, buffers: buffers2 }); - }); - }); - }; - exports.writev = function(fd, buffers, ...args) { - if (typeof args[args.length - 1] === "function") { - return fs.writev(fd, buffers, ...args); - } - return new Promise((resolve5, reject) => { - fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => { - if (err) - return reject(err); - resolve5({ bytesWritten, buffers: buffers2 }); - }); - }); - }; - if (typeof fs.realpath.native === "function") { - exports.realpath.native = u(fs.realpath.native); - } else { - process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?", "Warning", "fs-extra-WARN0003"); - } -}); - -// node_modules/fs-extra/lib/mkdirs/utils.js -var require_utils = __commonJS((exports, module) => { - var path = import.meta.require("path"); - exports.checkPath = function checkPath(pth) { - if (process.platform === "win32") { - const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, "")); - if (pathHasInvalidWinCharacters) { - const error2 = new Error(`Path contains invalid characters: ${pth}`); - error2.code = "EINVAL"; - throw error2; - } - } - }; -}); - -// node_modules/fs-extra/lib/mkdirs/make-dir.js -var require_make_dir = __commonJS((exports, module) => { - var fs = require_fs(); - var { checkPath } = require_utils(); - var getMode = (options) => { - const defaults = { mode: 511 }; - if (typeof options === "number") - return options; - return { ...defaults, ...options }.mode; - }; - exports.makeDir = async (dir, options) => { - checkPath(dir); - return fs.mkdir(dir, { - mode: getMode(options), - recursive: true - }); - }; - exports.makeDirSync = (dir, options) => { - checkPath(dir); - return fs.mkdirSync(dir, { - mode: getMode(options), - recursive: true - }); - }; -}); - -// node_modules/fs-extra/lib/mkdirs/index.js -var require_mkdirs = __commonJS((exports, module) => { - var u = require_universalify().fromPromise; - var { makeDir: _makeDir, makeDirSync } = require_make_dir(); - var makeDir = u(_makeDir); - module.exports = { - mkdirs: makeDir, - mkdirsSync: makeDirSync, - mkdirp: makeDir, - mkdirpSync: makeDirSync, - ensureDir: makeDir, - ensureDirSync: makeDirSync - }; -}); - -// node_modules/fs-extra/lib/path-exists/index.js -var require_path_exists = __commonJS((exports, module) => { - var pathExists = function(path) { - return fs.access(path).then(() => true).catch(() => false); - }; - var u = require_universalify().fromPromise; - var fs = require_fs(); - module.exports = { - pathExists: u(pathExists), - pathExistsSync: fs.existsSync - }; -}); - -// node_modules/fs-extra/lib/util/utimes.js -var require_utimes = __commonJS((exports, module) => { - var utimesMillis = function(path, atime, mtime, callback) { - fs.open(path, "r+", (err, fd) => { - if (err) - return callback(err); - fs.futimes(fd, atime, mtime, (futimesErr) => { - fs.close(fd, (closeErr) => { - if (callback) - callback(futimesErr || closeErr); - }); - }); - }); - }; - var utimesMillisSync = function(path, atime, mtime) { - const fd = fs.openSync(path, "r+"); - fs.futimesSync(fd, atime, mtime); - return fs.closeSync(fd); - }; - var fs = require_graceful_fs(); - module.exports = { - utimesMillis, - utimesMillisSync - }; -}); - -// node_modules/fs-extra/lib/util/stat.js -var require_stat = __commonJS((exports, module) => { - var getStats = function(src, dest, opts) { - const statFunc = opts.dereference ? (file) => fs.stat(file, { bigint: true }) : (file) => fs.lstat(file, { bigint: true }); - return Promise.all([ - statFunc(src), - statFunc(dest).catch((err) => { - if (err.code === "ENOENT") - return null; - throw err; - }) - ]).then(([srcStat, destStat]) => ({ srcStat, destStat })); - }; - var getStatsSync = function(src, dest, opts) { - let destStat; - const statFunc = opts.dereference ? (file) => fs.statSync(file, { bigint: true }) : (file) => fs.lstatSync(file, { bigint: true }); - const srcStat = statFunc(src); - try { - destStat = statFunc(dest); - } catch (err) { - if (err.code === "ENOENT") - return { srcStat, destStat: null }; - throw err; - } - return { srcStat, destStat }; - }; - var checkPaths = function(src, dest, funcName, opts, cb) { - util.callbackify(getStats)(src, dest, opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, destStat } = stats; - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path.basename(src); - const destBaseName = path.basename(dest); - if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return cb(null, { srcStat, destStat, isChangingCase: true }); - } - return cb(new Error("Source and destination must not be the same.")); - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)); - } - } - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - return cb(new Error(errMsg(src, dest, funcName))); - } - return cb(null, { srcStat, destStat }); - }); - }; - var checkPathsSync = function(src, dest, funcName, opts) { - const { srcStat, destStat } = getStatsSync(src, dest, opts); - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path.basename(src); - const destBaseName = path.basename(dest); - if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return { srcStat, destStat, isChangingCase: true }; - } - throw new Error("Source and destination must not be the same."); - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`); - } - } - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - throw new Error(errMsg(src, dest, funcName)); - } - return { srcStat, destStat }; - }; - var checkParentPaths = function(src, srcStat, dest, funcName, cb) { - const srcParent = path.resolve(path.dirname(src)); - const destParent = path.resolve(path.dirname(dest)); - if (destParent === srcParent || destParent === path.parse(destParent).root) - return cb(); - fs.stat(destParent, { bigint: true }, (err, destStat) => { - if (err) { - if (err.code === "ENOENT") - return cb(); - return cb(err); - } - if (areIdentical(srcStat, destStat)) { - return cb(new Error(errMsg(src, dest, funcName))); - } - return checkParentPaths(src, srcStat, destParent, funcName, cb); - }); - }; - var checkParentPathsSync = function(src, srcStat, dest, funcName) { - const srcParent = path.resolve(path.dirname(src)); - const destParent = path.resolve(path.dirname(dest)); - if (destParent === srcParent || destParent === path.parse(destParent).root) - return; - let destStat; - try { - destStat = fs.statSync(destParent, { bigint: true }); - } catch (err) { - if (err.code === "ENOENT") - return; - throw err; - } - if (areIdentical(srcStat, destStat)) { - throw new Error(errMsg(src, dest, funcName)); - } - return checkParentPathsSync(src, srcStat, destParent, funcName); - }; - var areIdentical = function(srcStat, destStat) { - return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev; - }; - var isSrcSubdir = function(src, dest) { - const srcArr = path.resolve(src).split(path.sep).filter((i) => i); - const destArr = path.resolve(dest).split(path.sep).filter((i) => i); - return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); - }; - var errMsg = function(src, dest, funcName) { - return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; - }; - var fs = require_fs(); - var path = import.meta.require("path"); - var util = import.meta.require("util"); - module.exports = { - checkPaths, - checkPathsSync, - checkParentPaths, - checkParentPathsSync, - isSrcSubdir, - areIdentical - }; -}); - -// node_modules/fs-extra/lib/copy/copy.js -var require_copy = __commonJS((exports, module) => { - var copy = function(src, dest, opts, cb) { - if (typeof opts === "function" && !cb) { - cb = opts; - opts = {}; - } else if (typeof opts === "function") { - opts = { filter: opts }; - } - cb = cb || function() { - }; - opts = opts || {}; - opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; - opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; - if (opts.preserveTimestamps && process.arch === "ia32") { - process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0001"); - } - stat.checkPaths(src, dest, "copy", opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, destStat } = stats; - stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => { - if (err2) - return cb(err2); - runFilter(src, dest, opts, (err3, include) => { - if (err3) - return cb(err3); - if (!include) - return cb(); - checkParentDir(destStat, src, dest, opts, cb); - }); - }); - }); - }; - var checkParentDir = function(destStat, src, dest, opts, cb) { - const destParent = path.dirname(dest); - pathExists(destParent, (err, dirExists) => { - if (err) - return cb(err); - if (dirExists) - return getStats(destStat, src, dest, opts, cb); - mkdirs(destParent, (err2) => { - if (err2) - return cb(err2); - return getStats(destStat, src, dest, opts, cb); - }); - }); - }; - var runFilter = function(src, dest, opts, cb) { - if (!opts.filter) - return cb(null, true); - Promise.resolve(opts.filter(src, dest)).then((include) => cb(null, include), (error2) => cb(error2)); - }; - var getStats = function(destStat, src, dest, opts, cb) { - const stat2 = opts.dereference ? fs.stat : fs.lstat; - stat2(src, (err, srcStat) => { - if (err) - return cb(err); - if (srcStat.isDirectory()) - return onDir(srcStat, destStat, src, dest, opts, cb); - else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) - return onFile(srcStat, destStat, src, dest, opts, cb); - else if (srcStat.isSymbolicLink()) - return onLink(destStat, src, dest, opts, cb); - else if (srcStat.isSocket()) - return cb(new Error(`Cannot copy a socket file: ${src}`)); - else if (srcStat.isFIFO()) - return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)); - return cb(new Error(`Unknown file: ${src}`)); - }); - }; - var onFile = function(srcStat, destStat, src, dest, opts, cb) { - if (!destStat) - return copyFile(srcStat, src, dest, opts, cb); - return mayCopyFile(srcStat, src, dest, opts, cb); - }; - var mayCopyFile = function(srcStat, src, dest, opts, cb) { - if (opts.overwrite) { - fs.unlink(dest, (err) => { - if (err) - return cb(err); - return copyFile(srcStat, src, dest, opts, cb); - }); - } else if (opts.errorOnExist) { - return cb(new Error(`'${dest}' already exists`)); - } else - return cb(); - }; - var copyFile = function(srcStat, src, dest, opts, cb) { - fs.copyFile(src, dest, (err) => { - if (err) - return cb(err); - if (opts.preserveTimestamps) - return handleTimestampsAndMode(srcStat.mode, src, dest, cb); - return setDestMode(dest, srcStat.mode, cb); - }); - }; - var handleTimestampsAndMode = function(srcMode, src, dest, cb) { - if (fileIsNotWritable(srcMode)) { - return makeFileWritable(dest, srcMode, (err) => { - if (err) - return cb(err); - return setDestTimestampsAndMode(srcMode, src, dest, cb); - }); - } - return setDestTimestampsAndMode(srcMode, src, dest, cb); - }; - var fileIsNotWritable = function(srcMode) { - return (srcMode & 128) === 0; - }; - var makeFileWritable = function(dest, srcMode, cb) { - return setDestMode(dest, srcMode | 128, cb); - }; - var setDestTimestampsAndMode = function(srcMode, src, dest, cb) { - setDestTimestamps(src, dest, (err) => { - if (err) - return cb(err); - return setDestMode(dest, srcMode, cb); - }); - }; - var setDestMode = function(dest, srcMode, cb) { - return fs.chmod(dest, srcMode, cb); - }; - var setDestTimestamps = function(src, dest, cb) { - fs.stat(src, (err, updatedSrcStat) => { - if (err) - return cb(err); - return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb); - }); - }; - var onDir = function(srcStat, destStat, src, dest, opts, cb) { - if (!destStat) - return mkDirAndCopy(srcStat.mode, src, dest, opts, cb); - return copyDir(src, dest, opts, cb); - }; - var mkDirAndCopy = function(srcMode, src, dest, opts, cb) { - fs.mkdir(dest, (err) => { - if (err) - return cb(err); - copyDir(src, dest, opts, (err2) => { - if (err2) - return cb(err2); - return setDestMode(dest, srcMode, cb); - }); - }); - }; - var copyDir = function(src, dest, opts, cb) { - fs.readdir(src, (err, items) => { - if (err) - return cb(err); - return copyDirItems(items, src, dest, opts, cb); - }); - }; - var copyDirItems = function(items, src, dest, opts, cb) { - const item = items.pop(); - if (!item) - return cb(); - return copyDirItem(items, item, src, dest, opts, cb); - }; - var copyDirItem = function(items, item, src, dest, opts, cb) { - const srcItem = path.join(src, item); - const destItem = path.join(dest, item); - runFilter(srcItem, destItem, opts, (err, include) => { - if (err) - return cb(err); - if (!include) - return copyDirItems(items, src, dest, opts, cb); - stat.checkPaths(srcItem, destItem, "copy", opts, (err2, stats) => { - if (err2) - return cb(err2); - const { destStat } = stats; - getStats(destStat, srcItem, destItem, opts, (err3) => { - if (err3) - return cb(err3); - return copyDirItems(items, src, dest, opts, cb); - }); - }); - }); - }; - var onLink = function(destStat, src, dest, opts, cb) { - fs.readlink(src, (err, resolvedSrc) => { - if (err) - return cb(err); - if (opts.dereference) { - resolvedSrc = path.resolve(process.cwd(), resolvedSrc); - } - if (!destStat) { - return fs.symlink(resolvedSrc, dest, cb); - } else { - fs.readlink(dest, (err2, resolvedDest) => { - if (err2) { - if (err2.code === "EINVAL" || err2.code === "UNKNOWN") - return fs.symlink(resolvedSrc, dest, cb); - return cb(err2); - } - if (opts.dereference) { - resolvedDest = path.resolve(process.cwd(), resolvedDest); - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); - } - if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); - } - return copyLink(resolvedSrc, dest, cb); - }); - } - }); - }; - var copyLink = function(resolvedSrc, dest, cb) { - fs.unlink(dest, (err) => { - if (err) - return cb(err); - return fs.symlink(resolvedSrc, dest, cb); - }); - }; - var fs = require_graceful_fs(); - var path = import.meta.require("path"); - var mkdirs = require_mkdirs().mkdirs; - var pathExists = require_path_exists().pathExists; - var utimesMillis = require_utimes().utimesMillis; - var stat = require_stat(); - module.exports = copy; -}); - -// node_modules/fs-extra/lib/copy/copy-sync.js -var require_copy_sync = __commonJS((exports, module) => { - var copySync = function(src, dest, opts) { - if (typeof opts === "function") { - opts = { filter: opts }; - } - opts = opts || {}; - opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; - opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; - if (opts.preserveTimestamps && process.arch === "ia32") { - process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0002"); - } - const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy", opts); - stat.checkParentPathsSync(src, srcStat, dest, "copy"); - if (opts.filter && !opts.filter(src, dest)) - return; - const destParent = path.dirname(dest); - if (!fs.existsSync(destParent)) - mkdirsSync(destParent); - return getStats(destStat, src, dest, opts); - }; - var getStats = function(destStat, src, dest, opts) { - const statSync3 = opts.dereference ? fs.statSync : fs.lstatSync; - const srcStat = statSync3(src); - if (srcStat.isDirectory()) - return onDir(srcStat, destStat, src, dest, opts); - else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) - return onFile(srcStat, destStat, src, dest, opts); - else if (srcStat.isSymbolicLink()) - return onLink(destStat, src, dest, opts); - else if (srcStat.isSocket()) - throw new Error(`Cannot copy a socket file: ${src}`); - else if (srcStat.isFIFO()) - throw new Error(`Cannot copy a FIFO pipe: ${src}`); - throw new Error(`Unknown file: ${src}`); - }; - var onFile = function(srcStat, destStat, src, dest, opts) { - if (!destStat) - return copyFile(srcStat, src, dest, opts); - return mayCopyFile(srcStat, src, dest, opts); - }; - var mayCopyFile = function(srcStat, src, dest, opts) { - if (opts.overwrite) { - fs.unlinkSync(dest); - return copyFile(srcStat, src, dest, opts); - } else if (opts.errorOnExist) { - throw new Error(`'${dest}' already exists`); - } - }; - var copyFile = function(srcStat, src, dest, opts) { - fs.copyFileSync(src, dest); - if (opts.preserveTimestamps) - handleTimestamps(srcStat.mode, src, dest); - return setDestMode(dest, srcStat.mode); - }; - var handleTimestamps = function(srcMode, src, dest) { - if (fileIsNotWritable(srcMode)) - makeFileWritable(dest, srcMode); - return setDestTimestamps(src, dest); - }; - var fileIsNotWritable = function(srcMode) { - return (srcMode & 128) === 0; - }; - var makeFileWritable = function(dest, srcMode) { - return setDestMode(dest, srcMode | 128); - }; - var setDestMode = function(dest, srcMode) { - return fs.chmodSync(dest, srcMode); - }; - var setDestTimestamps = function(src, dest) { - const updatedSrcStat = fs.statSync(src); - return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime); - }; - var onDir = function(srcStat, destStat, src, dest, opts) { - if (!destStat) - return mkDirAndCopy(srcStat.mode, src, dest, opts); - return copyDir(src, dest, opts); - }; - var mkDirAndCopy = function(srcMode, src, dest, opts) { - fs.mkdirSync(dest); - copyDir(src, dest, opts); - return setDestMode(dest, srcMode); - }; - var copyDir = function(src, dest, opts) { - fs.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts)); - }; - var copyDirItem = function(item, src, dest, opts) { - const srcItem = path.join(src, item); - const destItem = path.join(dest, item); - if (opts.filter && !opts.filter(srcItem, destItem)) - return; - const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy", opts); - return getStats(destStat, srcItem, destItem, opts); - }; - var onLink = function(destStat, src, dest, opts) { - let resolvedSrc = fs.readlinkSync(src); - if (opts.dereference) { - resolvedSrc = path.resolve(process.cwd(), resolvedSrc); - } - if (!destStat) { - return fs.symlinkSync(resolvedSrc, dest); - } else { - let resolvedDest; - try { - resolvedDest = fs.readlinkSync(dest); - } catch (err) { - if (err.code === "EINVAL" || err.code === "UNKNOWN") - return fs.symlinkSync(resolvedSrc, dest); - throw err; - } - if (opts.dereference) { - resolvedDest = path.resolve(process.cwd(), resolvedDest); - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); - } - if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); - } - return copyLink(resolvedSrc, dest); - } - }; - var copyLink = function(resolvedSrc, dest) { - fs.unlinkSync(dest); - return fs.symlinkSync(resolvedSrc, dest); - }; - var fs = require_graceful_fs(); - var path = import.meta.require("path"); - var mkdirsSync = require_mkdirs().mkdirsSync; - var utimesMillisSync = require_utimes().utimesMillisSync; - var stat = require_stat(); - module.exports = copySync; -}); - -// node_modules/fs-extra/lib/copy/index.js -var require_copy2 = __commonJS((exports, module) => { - var u = require_universalify().fromCallback; - module.exports = { - copy: u(require_copy()), - copySync: require_copy_sync() - }; -}); - -// node_modules/fs-extra/lib/remove/index.js -var require_remove = __commonJS((exports, module) => { - var remove = function(path, callback) { - fs.rm(path, { recursive: true, force: true }, callback); - }; - var removeSync = function(path) { - fs.rmSync(path, { recursive: true, force: true }); - }; - var fs = require_graceful_fs(); - var u = require_universalify().fromCallback; - module.exports = { - remove: u(remove), - removeSync - }; -}); - -// node_modules/fs-extra/lib/empty/index.js -var require_empty = __commonJS((exports, module) => { - var emptyDirSync = function(dir) { - let items; - try { - items = fs.readdirSync(dir); - } catch { - return mkdir.mkdirsSync(dir); - } - items.forEach((item) => { - item = path.join(dir, item); - remove.removeSync(item); - }); - }; - var u = require_universalify().fromPromise; - var fs = require_fs(); - var path = import.meta.require("path"); - var mkdir = require_mkdirs(); - var remove = require_remove(); - var emptyDir = u(async function emptyDir(dir) { - let items; - try { - items = await fs.readdir(dir); - } catch { - return mkdir.mkdirs(dir); - } - return Promise.all(items.map((item) => remove.remove(path.join(dir, item)))); - }); - module.exports = { - emptyDirSync, - emptydirSync: emptyDirSync, - emptyDir, - emptydir: emptyDir - }; -}); - -// node_modules/fs-extra/lib/ensure/file.js -var require_file = __commonJS((exports, module) => { - var createFile = function(file, callback) { - function makeFile() { - fs.writeFile(file, "", (err) => { - if (err) - return callback(err); - callback(); - }); - } - fs.stat(file, (err, stats) => { - if (!err && stats.isFile()) - return callback(); - const dir = path.dirname(file); - fs.stat(dir, (err2, stats2) => { - if (err2) { - if (err2.code === "ENOENT") { - return mkdir.mkdirs(dir, (err3) => { - if (err3) - return callback(err3); - makeFile(); - }); - } - return callback(err2); - } - if (stats2.isDirectory()) - makeFile(); - else { - fs.readdir(dir, (err3) => { - if (err3) - return callback(err3); - }); - } - }); - }); - }; - var createFileSync = function(file) { - let stats; - try { - stats = fs.statSync(file); - } catch { - } - if (stats && stats.isFile()) - return; - const dir = path.dirname(file); - try { - if (!fs.statSync(dir).isDirectory()) { - fs.readdirSync(dir); - } - } catch (err) { - if (err && err.code === "ENOENT") - mkdir.mkdirsSync(dir); - else - throw err; - } - fs.writeFileSync(file, ""); - }; - var u = require_universalify().fromCallback; - var path = import.meta.require("path"); - var fs = require_graceful_fs(); - var mkdir = require_mkdirs(); - module.exports = { - createFile: u(createFile), - createFileSync - }; -}); - -// node_modules/fs-extra/lib/ensure/link.js -var require_link = __commonJS((exports, module) => { - var createLink = function(srcpath, dstpath, callback) { - function makeLink(srcpath2, dstpath2) { - fs.link(srcpath2, dstpath2, (err) => { - if (err) - return callback(err); - callback(null); - }); - } - fs.lstat(dstpath, (_, dstStat) => { - fs.lstat(srcpath, (err, srcStat) => { - if (err) { - err.message = err.message.replace("lstat", "ensureLink"); - return callback(err); - } - if (dstStat && areIdentical(srcStat, dstStat)) - return callback(null); - const dir = path.dirname(dstpath); - pathExists(dir, (err2, dirExists) => { - if (err2) - return callback(err2); - if (dirExists) - return makeLink(srcpath, dstpath); - mkdir.mkdirs(dir, (err3) => { - if (err3) - return callback(err3); - makeLink(srcpath, dstpath); - }); - }); - }); - }); - }; - var createLinkSync = function(srcpath, dstpath) { - let dstStat; - try { - dstStat = fs.lstatSync(dstpath); - } catch { - } - try { - const srcStat = fs.lstatSync(srcpath); - if (dstStat && areIdentical(srcStat, dstStat)) - return; - } catch (err) { - err.message = err.message.replace("lstat", "ensureLink"); - throw err; - } - const dir = path.dirname(dstpath); - const dirExists = fs.existsSync(dir); - if (dirExists) - return fs.linkSync(srcpath, dstpath); - mkdir.mkdirsSync(dir); - return fs.linkSync(srcpath, dstpath); - }; - var u = require_universalify().fromCallback; - var path = import.meta.require("path"); - var fs = require_graceful_fs(); - var mkdir = require_mkdirs(); - var pathExists = require_path_exists().pathExists; - var { areIdentical } = require_stat(); - module.exports = { - createLink: u(createLink), - createLinkSync - }; -}); - -// node_modules/fs-extra/lib/ensure/symlink-paths.js -var require_symlink_paths = __commonJS((exports, module) => { - var symlinkPaths = function(srcpath, dstpath, callback) { - if (path.isAbsolute(srcpath)) { - return fs.lstat(srcpath, (err) => { - if (err) { - err.message = err.message.replace("lstat", "ensureSymlink"); - return callback(err); - } - return callback(null, { - toCwd: srcpath, - toDst: srcpath - }); - }); - } else { - const dstdir = path.dirname(dstpath); - const relativeToDst = path.join(dstdir, srcpath); - return pathExists(relativeToDst, (err, exists) => { - if (err) - return callback(err); - if (exists) { - return callback(null, { - toCwd: relativeToDst, - toDst: srcpath - }); - } else { - return fs.lstat(srcpath, (err2) => { - if (err2) { - err2.message = err2.message.replace("lstat", "ensureSymlink"); - return callback(err2); - } - return callback(null, { - toCwd: srcpath, - toDst: path.relative(dstdir, srcpath) - }); - }); - } - }); - } - }; - var symlinkPathsSync = function(srcpath, dstpath) { - let exists; - if (path.isAbsolute(srcpath)) { - exists = fs.existsSync(srcpath); - if (!exists) - throw new Error("absolute srcpath does not exist"); - return { - toCwd: srcpath, - toDst: srcpath - }; - } else { - const dstdir = path.dirname(dstpath); - const relativeToDst = path.join(dstdir, srcpath); - exists = fs.existsSync(relativeToDst); - if (exists) { - return { - toCwd: relativeToDst, - toDst: srcpath - }; - } else { - exists = fs.existsSync(srcpath); - if (!exists) - throw new Error("relative srcpath does not exist"); - return { - toCwd: srcpath, - toDst: path.relative(dstdir, srcpath) - }; - } - } - }; - var path = import.meta.require("path"); - var fs = require_graceful_fs(); - var pathExists = require_path_exists().pathExists; - module.exports = { - symlinkPaths, - symlinkPathsSync - }; -}); - -// node_modules/fs-extra/lib/ensure/symlink-type.js -var require_symlink_type = __commonJS((exports, module) => { - var symlinkType = function(srcpath, type, callback) { - callback = typeof type === "function" ? type : callback; - type = typeof type === "function" ? false : type; - if (type) - return callback(null, type); - fs.lstat(srcpath, (err, stats) => { - if (err) - return callback(null, "file"); - type = stats && stats.isDirectory() ? "dir" : "file"; - callback(null, type); - }); - }; - var symlinkTypeSync = function(srcpath, type) { - let stats; - if (type) - return type; - try { - stats = fs.lstatSync(srcpath); - } catch { - return "file"; - } - return stats && stats.isDirectory() ? "dir" : "file"; - }; - var fs = require_graceful_fs(); - module.exports = { - symlinkType, - symlinkTypeSync - }; -}); - -// node_modules/fs-extra/lib/ensure/symlink.js -var require_symlink = __commonJS((exports, module) => { - var createSymlink = function(srcpath, dstpath, type, callback) { - callback = typeof type === "function" ? type : callback; - type = typeof type === "function" ? false : type; - fs.lstat(dstpath, (err, stats) => { - if (!err && stats.isSymbolicLink()) { - Promise.all([ - fs.stat(srcpath), - fs.stat(dstpath) - ]).then(([srcStat, dstStat]) => { - if (areIdentical(srcStat, dstStat)) - return callback(null); - _createSymlink(srcpath, dstpath, type, callback); - }); - } else - _createSymlink(srcpath, dstpath, type, callback); - }); - }; - var _createSymlink = function(srcpath, dstpath, type, callback) { - symlinkPaths(srcpath, dstpath, (err, relative2) => { - if (err) - return callback(err); - srcpath = relative2.toDst; - symlinkType(relative2.toCwd, type, (err2, type2) => { - if (err2) - return callback(err2); - const dir = path.dirname(dstpath); - pathExists(dir, (err3, dirExists) => { - if (err3) - return callback(err3); - if (dirExists) - return fs.symlink(srcpath, dstpath, type2, callback); - mkdirs(dir, (err4) => { - if (err4) - return callback(err4); - fs.symlink(srcpath, dstpath, type2, callback); - }); - }); - }); - }); - }; - var createSymlinkSync = function(srcpath, dstpath, type) { - let stats; - try { - stats = fs.lstatSync(dstpath); - } catch { - } - if (stats && stats.isSymbolicLink()) { - const srcStat = fs.statSync(srcpath); - const dstStat = fs.statSync(dstpath); - if (areIdentical(srcStat, dstStat)) - return; - } - const relative2 = symlinkPathsSync(srcpath, dstpath); - srcpath = relative2.toDst; - type = symlinkTypeSync(relative2.toCwd, type); - const dir = path.dirname(dstpath); - const exists = fs.existsSync(dir); - if (exists) - return fs.symlinkSync(srcpath, dstpath, type); - mkdirsSync(dir); - return fs.symlinkSync(srcpath, dstpath, type); - }; - var u = require_universalify().fromCallback; - var path = import.meta.require("path"); - var fs = require_fs(); - var _mkdirs = require_mkdirs(); - var mkdirs = _mkdirs.mkdirs; - var mkdirsSync = _mkdirs.mkdirsSync; - var _symlinkPaths = require_symlink_paths(); - var symlinkPaths = _symlinkPaths.symlinkPaths; - var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; - var _symlinkType = require_symlink_type(); - var symlinkType = _symlinkType.symlinkType; - var symlinkTypeSync = _symlinkType.symlinkTypeSync; - var pathExists = require_path_exists().pathExists; - var { areIdentical } = require_stat(); - module.exports = { - createSymlink: u(createSymlink), - createSymlinkSync - }; -}); - -// node_modules/fs-extra/lib/ensure/index.js -var require_ensure = __commonJS((exports, module) => { - var { createFile, createFileSync } = require_file(); - var { createLink, createLinkSync } = require_link(); - var { createSymlink, createSymlinkSync } = require_symlink(); - module.exports = { - createFile, - createFileSync, - ensureFile: createFile, - ensureFileSync: createFileSync, - createLink, - createLinkSync, - ensureLink: createLink, - ensureLinkSync: createLinkSync, - createSymlink, - createSymlinkSync, - ensureSymlink: createSymlink, - ensureSymlinkSync: createSymlinkSync - }; -}); - -// node_modules/jsonfile/utils.js -var require_utils2 = __commonJS((exports, module) => { - var stringify = function(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) { - const EOF = finalEOL ? EOL : ""; - const str = JSON.stringify(obj, replacer, spaces); - return str.replace(/\n/g, EOL) + EOF; - }; - var stripBom = function(content) { - if (Buffer.isBuffer(content)) - content = content.toString("utf8"); - return content.replace(/^\uFEFF/, ""); - }; - module.exports = { stringify, stripBom }; -}); - -// node_modules/jsonfile/index.js -var require_jsonfile = __commonJS((exports, module) => { - async function _readFile(file, options = {}) { - if (typeof options === "string") { - options = { encoding: options }; - } - const fs = options.fs || _fs; - const shouldThrow = "throws" in options ? options.throws : true; - let data = await universalify.fromCallback(fs.readFile)(file, options); - data = stripBom(data); - let obj; - try { - obj = JSON.parse(data, options ? options.reviver : null); - } catch (err) { - if (shouldThrow) { - err.message = `${file}: ${err.message}`; - throw err; - } else { - return null; - } - } - return obj; - } - var readFileSync4 = function(file, options = {}) { - if (typeof options === "string") { - options = { encoding: options }; - } - const fs = options.fs || _fs; - const shouldThrow = "throws" in options ? options.throws : true; - try { - let content = fs.readFileSync(file, options); - content = stripBom(content); - return JSON.parse(content, options.reviver); - } catch (err) { - if (shouldThrow) { - err.message = `${file}: ${err.message}`; - throw err; - } else { - return null; - } - } - }; - async function _writeFile(file, obj, options = {}) { - const fs = options.fs || _fs; - const str = stringify(obj, options); - await universalify.fromCallback(fs.writeFile)(file, str, options); - } - var writeFileSync = function(file, obj, options = {}) { - const fs = options.fs || _fs; - const str = stringify(obj, options); - return fs.writeFileSync(file, str, options); - }; - var _fs; - try { - _fs = require_graceful_fs(); - } catch (_) { - _fs = import.meta.require("fs"); - } - var universalify = require_universalify(); - var { stringify, stripBom } = require_utils2(); - var readFile = universalify.fromPromise(_readFile); - var writeFile2 = universalify.fromPromise(_writeFile); - var jsonfile = { - readFile, - readFileSync: readFileSync4, - writeFile: writeFile2, - writeFileSync - }; - module.exports = jsonfile; -}); - -// node_modules/fs-extra/lib/json/jsonfile.js -var require_jsonfile2 = __commonJS((exports, module) => { - var jsonFile = require_jsonfile(); - module.exports = { - readJson: jsonFile.readFile, - readJsonSync: jsonFile.readFileSync, - writeJson: jsonFile.writeFile, - writeJsonSync: jsonFile.writeFileSync - }; -}); - -// node_modules/fs-extra/lib/output-file/index.js -var require_output_file = __commonJS((exports, module) => { - var outputFile = function(file, data, encoding, callback) { - if (typeof encoding === "function") { - callback = encoding; - encoding = "utf8"; - } - const dir = path.dirname(file); - pathExists(dir, (err, itDoes) => { - if (err) - return callback(err); - if (itDoes) - return fs.writeFile(file, data, encoding, callback); - mkdir.mkdirs(dir, (err2) => { - if (err2) - return callback(err2); - fs.writeFile(file, data, encoding, callback); - }); - }); - }; - var outputFileSync = function(file, ...args) { - const dir = path.dirname(file); - if (fs.existsSync(dir)) { - return fs.writeFileSync(file, ...args); - } - mkdir.mkdirsSync(dir); - fs.writeFileSync(file, ...args); - }; - var u = require_universalify().fromCallback; - var fs = require_graceful_fs(); - var path = import.meta.require("path"); - var mkdir = require_mkdirs(); - var pathExists = require_path_exists().pathExists; - module.exports = { - outputFile: u(outputFile), - outputFileSync - }; -}); - -// node_modules/fs-extra/lib/json/output-json.js -var require_output_json = __commonJS((exports, module) => { - async function outputJson(file, data, options = {}) { - const str = stringify(data, options); - await outputFile(file, str, options); - } - var { stringify } = require_utils2(); - var { outputFile } = require_output_file(); - module.exports = outputJson; -}); - -// node_modules/fs-extra/lib/json/output-json-sync.js -var require_output_json_sync = __commonJS((exports, module) => { - var outputJsonSync = function(file, data, options) { - const str = stringify(data, options); - outputFileSync(file, str, options); - }; - var { stringify } = require_utils2(); - var { outputFileSync } = require_output_file(); - module.exports = outputJsonSync; -}); - -// node_modules/fs-extra/lib/json/index.js -var require_json = __commonJS((exports, module) => { - var u = require_universalify().fromPromise; - var jsonFile = require_jsonfile2(); - jsonFile.outputJson = u(require_output_json()); - jsonFile.outputJsonSync = require_output_json_sync(); - jsonFile.outputJSON = jsonFile.outputJson; - jsonFile.outputJSONSync = jsonFile.outputJsonSync; - jsonFile.writeJSON = jsonFile.writeJson; - jsonFile.writeJSONSync = jsonFile.writeJsonSync; - jsonFile.readJSON = jsonFile.readJson; - jsonFile.readJSONSync = jsonFile.readJsonSync; - module.exports = jsonFile; -}); - -// node_modules/fs-extra/lib/move/move.js -var require_move = __commonJS((exports, module) => { - var move = function(src, dest, opts, cb) { - if (typeof opts === "function") { - cb = opts; - opts = {}; - } - opts = opts || {}; - const overwrite = opts.overwrite || opts.clobber || false; - stat.checkPaths(src, dest, "move", opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, isChangingCase = false } = stats; - stat.checkParentPaths(src, srcStat, dest, "move", (err2) => { - if (err2) - return cb(err2); - if (isParentRoot(dest)) - return doRename(src, dest, overwrite, isChangingCase, cb); - mkdirp(path.dirname(dest), (err3) => { - if (err3) - return cb(err3); - return doRename(src, dest, overwrite, isChangingCase, cb); - }); - }); - }); - }; - var isParentRoot = function(dest) { - const parent = path.dirname(dest); - const parsedPath = path.parse(parent); - return parsedPath.root === parent; - }; - var doRename = function(src, dest, overwrite, isChangingCase, cb) { - if (isChangingCase) - return rename(src, dest, overwrite, cb); - if (overwrite) { - return remove(dest, (err) => { - if (err) - return cb(err); - return rename(src, dest, overwrite, cb); - }); - } - pathExists(dest, (err, destExists) => { - if (err) - return cb(err); - if (destExists) - return cb(new Error("dest already exists.")); - return rename(src, dest, overwrite, cb); - }); - }; - var rename = function(src, dest, overwrite, cb) { - fs.rename(src, dest, (err) => { - if (!err) - return cb(); - if (err.code !== "EXDEV") - return cb(err); - return moveAcrossDevice(src, dest, overwrite, cb); - }); - }; - var moveAcrossDevice = function(src, dest, overwrite, cb) { - const opts = { - overwrite, - errorOnExist: true, - preserveTimestamps: true - }; - copy(src, dest, opts, (err) => { - if (err) - return cb(err); - return remove(src, cb); - }); - }; - var fs = require_graceful_fs(); - var path = import.meta.require("path"); - var copy = require_copy2().copy; - var remove = require_remove().remove; - var mkdirp = require_mkdirs().mkdirp; - var pathExists = require_path_exists().pathExists; - var stat = require_stat(); - module.exports = move; -}); - -// node_modules/fs-extra/lib/move/move-sync.js -var require_move_sync = __commonJS((exports, module) => { - var moveSync = function(src, dest, opts) { - opts = opts || {}; - const overwrite = opts.overwrite || opts.clobber || false; - const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, "move", opts); - stat.checkParentPathsSync(src, srcStat, dest, "move"); - if (!isParentRoot(dest)) - mkdirpSync(path.dirname(dest)); - return doRename(src, dest, overwrite, isChangingCase); - }; - var isParentRoot = function(dest) { - const parent = path.dirname(dest); - const parsedPath = path.parse(parent); - return parsedPath.root === parent; - }; - var doRename = function(src, dest, overwrite, isChangingCase) { - if (isChangingCase) - return rename(src, dest, overwrite); - if (overwrite) { - removeSync(dest); - return rename(src, dest, overwrite); - } - if (fs.existsSync(dest)) - throw new Error("dest already exists."); - return rename(src, dest, overwrite); - }; - var rename = function(src, dest, overwrite) { - try { - fs.renameSync(src, dest); - } catch (err) { - if (err.code !== "EXDEV") - throw err; - return moveAcrossDevice(src, dest, overwrite); - } - }; - var moveAcrossDevice = function(src, dest, overwrite) { - const opts = { - overwrite, - errorOnExist: true, - preserveTimestamps: true - }; - copySync(src, dest, opts); - return removeSync(src); - }; - var fs = require_graceful_fs(); - var path = import.meta.require("path"); - var copySync = require_copy2().copySync; - var removeSync = require_remove().removeSync; - var mkdirpSync = require_mkdirs().mkdirpSync; - var stat = require_stat(); - module.exports = moveSync; -}); - -// node_modules/fs-extra/lib/move/index.js -var require_move2 = __commonJS((exports, module) => { - var u = require_universalify().fromCallback; - module.exports = { - move: u(require_move()), - moveSync: require_move_sync() - }; -}); - -// node_modules/fs-extra/lib/index.js -var require_lib = __commonJS((exports, module) => { - module.exports = { - ...require_fs(), - ...require_copy2(), - ...require_empty(), - ...require_ensure(), - ...require_json(), - ...require_mkdirs(), - ...require_move2(), - ...require_output_file(), - ...require_path_exists(), - ...require_remove() - }; -}); - -// node_modules/fast-glob/out/utils/array.js -var require_array = __commonJS((exports) => { - var flatten = function(items) { - return items.reduce((collection, item) => [].concat(collection, item), []); - }; - var splitWhen = function(items, predicate) { - const result = [[]]; - let groupIndex = 0; - for (const item of items) { - if (predicate(item)) { - groupIndex++; - result[groupIndex] = []; - } else { - result[groupIndex].push(item); - } - } - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.splitWhen = exports.flatten = undefined; - exports.flatten = flatten; - exports.splitWhen = splitWhen; -}); - -// node_modules/fast-glob/out/utils/errno.js -var require_errno = __commonJS((exports) => { - var isEnoentCodeError = function(error2) { - return error2.code === "ENOENT"; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.isEnoentCodeError = undefined; - exports.isEnoentCodeError = isEnoentCodeError; -}); - -// node_modules/fast-glob/out/utils/fs.js -var require_fs2 = __commonJS((exports) => { - var createDirentFromStats = function(name, stats) { - return new DirentFromStats(name, stats); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createDirentFromStats = undefined; - - class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } - } - exports.createDirentFromStats = createDirentFromStats; -}); - -// node_modules/fast-glob/out/utils/path.js -var require_path = __commonJS((exports) => { - var unixify = function(filepath) { - return filepath.replace(/\\/g, "/"); - }; - var makeAbsolute = function(cwd, filepath) { - return path.resolve(cwd, filepath); - }; - var removeLeadingDotSegment = function(entry) { - if (entry.charAt(0) === ".") { - const secondCharactery = entry.charAt(1); - if (secondCharactery === "/" || secondCharactery === "\\") { - return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); - } - } - return entry; - }; - var escapeWindowsPath = function(pattern) { - return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); - }; - var escapePosixPath = function(pattern) { - return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); - }; - var convertWindowsPathToPattern = function(filepath) { - return escapeWindowsPath(filepath).replace(DOS_DEVICE_PATH_RE, "//$1").replace(WINDOWS_BACKSLASHES_RE, "/"); - }; - var convertPosixPathToPattern = function(filepath) { - return escapePosixPath(filepath); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = undefined; - var os = import.meta.require("os"); - var path = import.meta.require("path"); - var IS_WINDOWS_PLATFORM = os.platform() === "win32"; - var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; - var POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; - var WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([(){}]|^!|[!+@](?=\())/g; - var DOS_DEVICE_PATH_RE = /^\\\\([.?])/; - var WINDOWS_BACKSLASHES_RE = /\\(?![!()+@{}])/g; - exports.unixify = unixify; - exports.makeAbsolute = makeAbsolute; - exports.removeLeadingDotSegment = removeLeadingDotSegment; - exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; - exports.escapeWindowsPath = escapeWindowsPath; - exports.escapePosixPath = escapePosixPath; - exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; - exports.convertWindowsPathToPattern = convertWindowsPathToPattern; - exports.convertPosixPathToPattern = convertPosixPathToPattern; -}); - -// node_modules/is-extglob/index.js -var require_is_extglob = __commonJS((exports, module) => { - /*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - module.exports = function isExtglob(str) { - if (typeof str !== "string" || str === "") { - return false; - } - var match; - while (match = /(\\).|([@?!+*]\(.*\))/g.exec(str)) { - if (match[2]) - return true; - str = str.slice(match.index + match[0].length); - } - return false; - }; -}); - -// node_modules/is-glob/index.js -var require_is_glob = __commonJS((exports, module) => { - /*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - var isExtglob = require_is_extglob(); - var chars = { "{": "}", "(": ")", "[": "]" }; - var strictCheck = function(str) { - if (str[0] === "!") { - return true; - } - var index = 0; - var pipeIndex = -2; - var closeSquareIndex = -2; - var closeCurlyIndex = -2; - var closeParenIndex = -2; - var backSlashIndex = -2; - while (index < str.length) { - if (str[index] === "*") { - return true; - } - if (str[index + 1] === "?" && /[\].+)]/.test(str[index])) { - return true; - } - if (closeSquareIndex !== -1 && str[index] === "[" && str[index + 1] !== "]") { - if (closeSquareIndex < index) { - closeSquareIndex = str.indexOf("]", index); - } - if (closeSquareIndex > index) { - if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { - return true; - } - backSlashIndex = str.indexOf("\\", index); - if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { - return true; - } - } - } - if (closeCurlyIndex !== -1 && str[index] === "{" && str[index + 1] !== "}") { - closeCurlyIndex = str.indexOf("}", index); - if (closeCurlyIndex > index) { - backSlashIndex = str.indexOf("\\", index); - if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { - return true; - } - } - } - if (closeParenIndex !== -1 && str[index] === "(" && str[index + 1] === "?" && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ")") { - closeParenIndex = str.indexOf(")", index); - if (closeParenIndex > index) { - backSlashIndex = str.indexOf("\\", index); - if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { - return true; - } - } - } - if (pipeIndex !== -1 && str[index] === "(" && str[index + 1] !== "|") { - if (pipeIndex < index) { - pipeIndex = str.indexOf("|", index); - } - if (pipeIndex !== -1 && str[pipeIndex + 1] !== ")") { - closeParenIndex = str.indexOf(")", pipeIndex); - if (closeParenIndex > pipeIndex) { - backSlashIndex = str.indexOf("\\", pipeIndex); - if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { - return true; - } - } - } - } - if (str[index] === "\\") { - var open = str[index + 1]; - index += 2; - var close = chars[open]; - if (close) { - var n = str.indexOf(close, index); - if (n !== -1) { - index = n + 1; - } - } - if (str[index] === "!") { - return true; - } - } else { - index++; - } - } - return false; - }; - var relaxedCheck = function(str) { - if (str[0] === "!") { - return true; - } - var index = 0; - while (index < str.length) { - if (/[*?{}()[\]]/.test(str[index])) { - return true; - } - if (str[index] === "\\") { - var open = str[index + 1]; - index += 2; - var close = chars[open]; - if (close) { - var n = str.indexOf(close, index); - if (n !== -1) { - index = n + 1; - } - } - if (str[index] === "!") { - return true; - } - } else { - index++; - } - } - return false; - }; - module.exports = function isGlob(str, options) { - if (typeof str !== "string" || str === "") { - return false; - } - if (isExtglob(str)) { - return true; - } - var check = strictCheck; - if (options && options.strict === false) { - check = relaxedCheck; - } - return check(str); - }; -}); - -// node_modules/glob-parent/index.js -var require_glob_parent = __commonJS((exports, module) => { - var isGlob = require_is_glob(); - var pathPosixDirname = import.meta.require("path").posix.dirname; - var isWin32 = import.meta.require("os").platform() === "win32"; - var slash = "/"; - var backslash = /\\/g; - var enclosure = /[\{\[].*[\}\]]$/; - var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; - var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; - module.exports = function globParent(str, opts) { - var options = Object.assign({ flipBackslashes: true }, opts); - if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { - str = str.replace(backslash, slash); - } - if (enclosure.test(str)) { - str += slash; - } - str += "a"; - do { - str = pathPosixDirname(str); - } while (isGlob(str) || globby.test(str)); - return str.replace(escaped, "$1"); - }; -}); - -// node_modules/braces/lib/utils.js -var require_utils3 = __commonJS((exports) => { - exports.isInteger = (num) => { - if (typeof num === "number") { - return Number.isInteger(num); - } - if (typeof num === "string" && num.trim() !== "") { - return Number.isInteger(Number(num)); - } - return false; - }; - exports.find = (node2, type) => node2.nodes.find((node3) => node3.type === type); - exports.exceedsLimit = (min, max, step2 = 1, limit) => { - if (limit === false) - return false; - if (!exports.isInteger(min) || !exports.isInteger(max)) - return false; - return (Number(max) - Number(min)) / Number(step2) >= limit; - }; - exports.escapeNode = (block, n = 0, type) => { - let node2 = block.nodes[n]; - if (!node2) - return; - if (type && node2.type === type || node2.type === "open" || node2.type === "close") { - if (node2.escaped !== true) { - node2.value = "\\" + node2.value; - node2.escaped = true; - } - } - }; - exports.encloseBrace = (node2) => { - if (node2.type !== "brace") - return false; - if (node2.commas >> 0 + node2.ranges >> 0 === 0) { - node2.invalid = true; - return true; - } - return false; - }; - exports.isInvalidBrace = (block) => { - if (block.type !== "brace") - return false; - if (block.invalid === true || block.dollar) - return true; - if (block.commas >> 0 + block.ranges >> 0 === 0) { - block.invalid = true; - return true; - } - if (block.open !== true || block.close !== true) { - block.invalid = true; - return true; - } - return false; - }; - exports.isOpenOrClose = (node2) => { - if (node2.type === "open" || node2.type === "close") { - return true; - } - return node2.open === true || node2.close === true; - }; - exports.reduce = (nodes) => nodes.reduce((acc, node2) => { - if (node2.type === "text") - acc.push(node2.value); - if (node2.type === "range") - node2.type = "text"; - return acc; - }, []); - exports.flatten = (...args) => { - const result = []; - const flat = (arr) => { - for (let i = 0;i < arr.length; i++) { - let ele = arr[i]; - Array.isArray(ele) ? flat(ele, result) : ele !== undefined && result.push(ele); - } - return result; - }; - flat(args); - return result; - }; -}); - -// node_modules/braces/lib/stringify.js -var require_stringify = __commonJS((exports, module) => { - var utils = require_utils3(); - module.exports = (ast, options = {}) => { - let stringify = (node2, parent = {}) => { - let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); - let invalidNode = node2.invalid === true && options.escapeInvalid === true; - let output = ""; - if (node2.value) { - if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node2)) { - return "\\" + node2.value; - } - return node2.value; - } - if (node2.value) { - return node2.value; - } - if (node2.nodes) { - for (let child of node2.nodes) { - output += stringify(child); - } - } - return output; - }; - return stringify(ast); - }; -}); - -// node_modules/is-number/index.js -var require_is_number = __commonJS((exports, module) => { - /*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ - module.exports = function(num) { - if (typeof num === "number") { - return num - num === 0; - } - if (typeof num === "string" && num.trim() !== "") { - return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); - } - return false; - }; -}); - -// node_modules/to-regex-range/index.js -var require_to_regex_range = __commonJS((exports, module) => { - var collatePatterns = function(neg, pos, options) { - let onlyNegative = filterPatterns(neg, pos, "-", false, options) || []; - let onlyPositive = filterPatterns(pos, neg, "", false, options) || []; - let intersected = filterPatterns(neg, pos, "-?", true, options) || []; - let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); - return subpatterns.join("|"); - }; - var splitToRanges = function(min, max) { - let nines = 1; - let zeros = 1; - let stop = countNines(min, nines); - let stops = new Set([max]); - while (min <= stop && stop <= max) { - stops.add(stop); - nines += 1; - stop = countNines(min, nines); - } - stop = countZeros(max + 1, zeros) - 1; - while (min < stop && stop <= max) { - stops.add(stop); - zeros += 1; - stop = countZeros(max + 1, zeros) - 1; - } - stops = [...stops]; - stops.sort(compare); - return stops; - }; - var rangeToPattern = function(start, stop, options) { - if (start === stop) { - return { pattern: start, count: [], digits: 0 }; - } - let zipped = zip(start, stop); - let digits = zipped.length; - let pattern = ""; - let count = 0; - for (let i = 0;i < digits; i++) { - let [startDigit, stopDigit] = zipped[i]; - if (startDigit === stopDigit) { - pattern += startDigit; - } else if (startDigit !== "0" || stopDigit !== "9") { - pattern += toCharacterClass(startDigit, stopDigit, options); - } else { - count++; - } - } - if (count) { - pattern += options.shorthand === true ? "\\d" : "[0-9]"; - } - return { pattern, count: [count], digits }; - }; - var splitToPatterns = function(min, max, tok, options) { - let ranges = splitToRanges(min, max); - let tokens = []; - let start = min; - let prev; - for (let i = 0;i < ranges.length; i++) { - let max2 = ranges[i]; - let obj = rangeToPattern(String(start), String(max2), options); - let zeros = ""; - if (!tok.isPadded && prev && prev.pattern === obj.pattern) { - if (prev.count.length > 1) { - prev.count.pop(); - } - prev.count.push(obj.count[0]); - prev.string = prev.pattern + toQuantifier(prev.count); - start = max2 + 1; - continue; - } - if (tok.isPadded) { - zeros = padZeros(max2, tok, options); - } - obj.string = zeros + obj.pattern + toQuantifier(obj.count); - tokens.push(obj); - start = max2 + 1; - prev = obj; - } - return tokens; - }; - var filterPatterns = function(arr, comparison, prefix, intersection, options) { - let result = []; - for (let ele of arr) { - let { string } = ele; - if (!intersection && !contains(comparison, "string", string)) { - result.push(prefix + string); - } - if (intersection && contains(comparison, "string", string)) { - result.push(prefix + string); - } - } - return result; - }; - var zip = function(a, b) { - let arr = []; - for (let i = 0;i < a.length; i++) - arr.push([a[i], b[i]]); - return arr; - }; - var compare = function(a, b) { - return a > b ? 1 : b > a ? -1 : 0; - }; - var contains = function(arr, key, val) { - return arr.some((ele) => ele[key] === val); - }; - var countNines = function(min, len) { - return Number(String(min).slice(0, -len) + "9".repeat(len)); - }; - var countZeros = function(integer, zeros) { - return integer - integer % Math.pow(10, zeros); - }; - var toQuantifier = function(digits) { - let [start = 0, stop = ""] = digits; - if (stop || start > 1) { - return `{${start + (stop ? "," + stop : "")}}`; - } - return ""; - }; - var toCharacterClass = function(a, b, options) { - return `[${a}${b - a === 1 ? "" : "-"}${b}]`; - }; - var hasPadding = function(str) { - return /^-?(0+)\d/.test(str); - }; - var padZeros = function(value, tok, options) { - if (!tok.isPadded) { - return value; - } - let diff = Math.abs(tok.maxLen - String(value).length); - let relax = options.relaxZeros !== false; - switch (diff) { - case 0: - return ""; - case 1: - return relax ? "0?" : "0"; - case 2: - return relax ? "0{0,2}" : "00"; - default: { - return relax ? `0{0,${diff}}` : `0{${diff}}`; - } - } - }; - /*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ - var isNumber = require_is_number(); - var toRegexRange = (min, max, options) => { - if (isNumber(min) === false) { - throw new TypeError("toRegexRange: expected the first argument to be a number"); - } - if (max === undefined || min === max) { - return String(min); - } - if (isNumber(max) === false) { - throw new TypeError("toRegexRange: expected the second argument to be a number."); - } - let opts = { relaxZeros: true, ...options }; - if (typeof opts.strictZeros === "boolean") { - opts.relaxZeros = opts.strictZeros === false; - } - let relax = String(opts.relaxZeros); - let shorthand = String(opts.shorthand); - let capture = String(opts.capture); - let wrap2 = String(opts.wrap); - let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap2; - if (toRegexRange.cache.hasOwnProperty(cacheKey)) { - return toRegexRange.cache[cacheKey].result; - } - let a = Math.min(min, max); - let b = Math.max(min, max); - if (Math.abs(a - b) === 1) { - let result = min + "|" + max; - if (opts.capture) { - return `(${result})`; - } - if (opts.wrap === false) { - return result; - } - return `(?:${result})`; - } - let isPadded = hasPadding(min) || hasPadding(max); - let state = { min, max, a, b }; - let positives = []; - let negatives = []; - if (isPadded) { - state.isPadded = isPadded; - state.maxLen = String(state.max).length; - } - if (a < 0) { - let newMin = b < 0 ? Math.abs(b) : 1; - negatives = splitToPatterns(newMin, Math.abs(a), state, opts); - a = state.a = 0; - } - if (b >= 0) { - positives = splitToPatterns(a, b, state, opts); - } - state.negatives = negatives; - state.positives = positives; - state.result = collatePatterns(negatives, positives, opts); - if (opts.capture === true) { - state.result = `(${state.result})`; - } else if (opts.wrap !== false && positives.length + negatives.length > 1) { - state.result = `(?:${state.result})`; - } - toRegexRange.cache[cacheKey] = state; - return state.result; - }; - toRegexRange.cache = {}; - toRegexRange.clearCache = () => toRegexRange.cache = {}; - module.exports = toRegexRange; -}); - -// node_modules/fill-range/index.js -var require_fill_range = __commonJS((exports, module) => { - /*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ - var util = import.meta.require("util"); - var toRegexRange = require_to_regex_range(); - var isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); - var transform = (toNumber) => { - return (value) => toNumber === true ? Number(value) : String(value); - }; - var isValidValue = (value) => { - return typeof value === "number" || typeof value === "string" && value !== ""; - }; - var isNumber = (num) => Number.isInteger(+num); - var zeros = (input) => { - let value = `${input}`; - let index = -1; - if (value[0] === "-") - value = value.slice(1); - if (value === "0") - return false; - while (value[++index] === "0") - ; - return index > 0; - }; - var stringify = (start, end, options) => { - if (typeof start === "string" || typeof end === "string") { - return true; - } - return options.stringify === true; - }; - var pad = (input, maxLength, toNumber) => { - if (maxLength > 0) { - let dash = input[0] === "-" ? "-" : ""; - if (dash) - input = input.slice(1); - input = dash + input.padStart(dash ? maxLength - 1 : maxLength, "0"); - } - if (toNumber === false) { - return String(input); - } - return input; - }; - var toMaxLen = (input, maxLength) => { - let negative = input[0] === "-" ? "-" : ""; - if (negative) { - input = input.slice(1); - maxLength--; - } - while (input.length < maxLength) - input = "0" + input; - return negative ? "-" + input : input; - }; - var toSequence = (parts, options) => { - parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - let prefix = options.capture ? "" : "?:"; - let positives = ""; - let negatives = ""; - let result; - if (parts.positives.length) { - positives = parts.positives.join("|"); - } - if (parts.negatives.length) { - negatives = `-(${prefix}${parts.negatives.join("|")})`; - } - if (positives && negatives) { - result = `${positives}|${negatives}`; - } else { - result = positives || negatives; - } - if (options.wrap) { - return `(${prefix}${result})`; - } - return result; - }; - var toRange = (a, b, isNumbers, options) => { - if (isNumbers) { - return toRegexRange(a, b, { wrap: false, ...options }); - } - let start = String.fromCharCode(a); - if (a === b) - return start; - let stop = String.fromCharCode(b); - return `[${start}-${stop}]`; - }; - var toRegex = (start, end, options) => { - if (Array.isArray(start)) { - let wrap2 = options.wrap === true; - let prefix = options.capture ? "" : "?:"; - return wrap2 ? `(${prefix}${start.join("|")})` : start.join("|"); - } - return toRegexRange(start, end, options); - }; - var rangeError = (...args) => { - return new RangeError("Invalid range arguments: " + util.inspect(...args)); - }; - var invalidRange = (start, end, options) => { - if (options.strictRanges === true) - throw rangeError([start, end]); - return []; - }; - var invalidStep = (step2, options) => { - if (options.strictRanges === true) { - throw new TypeError(`Expected step "${step2}" to be a number`); - } - return []; - }; - var fillNumbers = (start, end, step2 = 1, options = {}) => { - let a = Number(start); - let b = Number(end); - if (!Number.isInteger(a) || !Number.isInteger(b)) { - if (options.strictRanges === true) - throw rangeError([start, end]); - return []; - } - if (a === 0) - a = 0; - if (b === 0) - b = 0; - let descending = a > b; - let startString = String(start); - let endString = String(end); - let stepString = String(step2); - step2 = Math.max(Math.abs(step2), 1); - let padded = zeros(startString) || zeros(endString) || zeros(stepString); - let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; - let toNumber = padded === false && stringify(start, end, options) === false; - let format4 = options.transform || transform(toNumber); - if (options.toRegex && step2 === 1) { - return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); - } - let parts = { negatives: [], positives: [] }; - let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num)); - let range = []; - let index = 0; - while (descending ? a >= b : a <= b) { - if (options.toRegex === true && step2 > 1) { - push(a); - } else { - range.push(pad(format4(a, index), maxLen, toNumber)); - } - a = descending ? a - step2 : a + step2; - index++; - } - if (options.toRegex === true) { - return step2 > 1 ? toSequence(parts, options) : toRegex(range, null, { wrap: false, ...options }); - } - return range; - }; - var fillLetters = (start, end, step2 = 1, options = {}) => { - if (!isNumber(start) && start.length > 1 || !isNumber(end) && end.length > 1) { - return invalidRange(start, end, options); - } - let format4 = options.transform || ((val) => String.fromCharCode(val)); - let a = `${start}`.charCodeAt(0); - let b = `${end}`.charCodeAt(0); - let descending = a > b; - let min = Math.min(a, b); - let max = Math.max(a, b); - if (options.toRegex && step2 === 1) { - return toRange(min, max, false, options); - } - let range = []; - let index = 0; - while (descending ? a >= b : a <= b) { - range.push(format4(a, index)); - a = descending ? a - step2 : a + step2; - index++; - } - if (options.toRegex === true) { - return toRegex(range, null, { wrap: false, options }); - } - return range; - }; - var fill = (start, end, step2, options = {}) => { - if (end == null && isValidValue(start)) { - return [start]; - } - if (!isValidValue(start) || !isValidValue(end)) { - return invalidRange(start, end, options); - } - if (typeof step2 === "function") { - return fill(start, end, 1, { transform: step2 }); - } - if (isObject(step2)) { - return fill(start, end, 0, step2); - } - let opts = { ...options }; - if (opts.capture === true) - opts.wrap = true; - step2 = step2 || opts.step || 1; - if (!isNumber(step2)) { - if (step2 != null && !isObject(step2)) - return invalidStep(step2, opts); - return fill(start, end, 1, step2); - } - if (isNumber(start) && isNumber(end)) { - return fillNumbers(start, end, step2, opts); - } - return fillLetters(start, end, Math.max(Math.abs(step2), 1), opts); - }; - module.exports = fill; -}); - -// node_modules/braces/lib/compile.js -var require_compile = __commonJS((exports, module) => { - var fill = require_fill_range(); - var utils = require_utils3(); - var compile = (ast, options = {}) => { - let walk = (node2, parent = {}) => { - let invalidBlock = utils.isInvalidBrace(parent); - let invalidNode = node2.invalid === true && options.escapeInvalid === true; - let invalid = invalidBlock === true || invalidNode === true; - let prefix = options.escapeInvalid === true ? "\\" : ""; - let output = ""; - if (node2.isOpen === true) { - return prefix + node2.value; - } - if (node2.isClose === true) { - return prefix + node2.value; - } - if (node2.type === "open") { - return invalid ? prefix + node2.value : "("; - } - if (node2.type === "close") { - return invalid ? prefix + node2.value : ")"; - } - if (node2.type === "comma") { - return node2.prev.type === "comma" ? "" : invalid ? node2.value : "|"; - } - if (node2.value) { - return node2.value; - } - if (node2.nodes && node2.ranges > 0) { - let args = utils.reduce(node2.nodes); - let range = fill(...args, { ...options, wrap: false, toRegex: true }); - if (range.length !== 0) { - return args.length > 1 && range.length > 1 ? `(${range})` : range; - } - } - if (node2.nodes) { - for (let child of node2.nodes) { - output += walk(child, node2); - } - } - return output; - }; - return walk(ast); - }; - module.exports = compile; -}); - -// node_modules/braces/lib/expand.js -var require_expand = __commonJS((exports, module) => { - var fill = require_fill_range(); - var stringify = require_stringify(); - var utils = require_utils3(); - var append = (queue = "", stash = "", enclose = false) => { - let result = []; - queue = [].concat(queue); - stash = [].concat(stash); - if (!stash.length) - return queue; - if (!queue.length) { - return enclose ? utils.flatten(stash).map((ele) => `{${ele}}`) : stash; - } - for (let item of queue) { - if (Array.isArray(item)) { - for (let value of item) { - result.push(append(value, stash, enclose)); - } - } else { - for (let ele of stash) { - if (enclose === true && typeof ele === "string") - ele = `{${ele}}`; - result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele); - } - } - } - return utils.flatten(result); - }; - var expand = (ast, options = {}) => { - let rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit; - let walk = (node2, parent = {}) => { - node2.queue = []; - let p = parent; - let q = parent.queue; - while (p.type !== "brace" && p.type !== "root" && p.parent) { - p = p.parent; - q = p.queue; - } - if (node2.invalid || node2.dollar) { - q.push(append(q.pop(), stringify(node2, options))); - return; - } - if (node2.type === "brace" && node2.invalid !== true && node2.nodes.length === 2) { - q.push(append(q.pop(), ["{}"])); - return; - } - if (node2.nodes && node2.ranges > 0) { - let args = utils.reduce(node2.nodes); - if (utils.exceedsLimit(...args, options.step, rangeLimit)) { - throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit."); - } - let range = fill(...args, options); - if (range.length === 0) { - range = stringify(node2, options); - } - q.push(append(q.pop(), range)); - node2.nodes = []; - return; - } - let enclose = utils.encloseBrace(node2); - let queue = node2.queue; - let block = node2; - while (block.type !== "brace" && block.type !== "root" && block.parent) { - block = block.parent; - queue = block.queue; - } - for (let i = 0;i < node2.nodes.length; i++) { - let child = node2.nodes[i]; - if (child.type === "comma" && node2.type === "brace") { - if (i === 1) - queue.push(""); - queue.push(""); - continue; - } - if (child.type === "close") { - q.push(append(q.pop(), queue, enclose)); - continue; - } - if (child.value && child.type !== "open") { - queue.push(append(queue.pop(), child.value)); - continue; - } - if (child.nodes) { - walk(child, node2); - } - } - return queue; - }; - return utils.flatten(walk(ast)); - }; - module.exports = expand; -}); - -// node_modules/braces/lib/constants.js -var require_constants = __commonJS((exports, module) => { - module.exports = { - MAX_LENGTH: 1024 * 64, - CHAR_0: "0", - CHAR_9: "9", - CHAR_UPPERCASE_A: "A", - CHAR_LOWERCASE_A: "a", - CHAR_UPPERCASE_Z: "Z", - CHAR_LOWERCASE_Z: "z", - CHAR_LEFT_PARENTHESES: "(", - CHAR_RIGHT_PARENTHESES: ")", - CHAR_ASTERISK: "*", - CHAR_AMPERSAND: "&", - CHAR_AT: "@", - CHAR_BACKSLASH: "\\", - CHAR_BACKTICK: "`", - CHAR_CARRIAGE_RETURN: "\r", - CHAR_CIRCUMFLEX_ACCENT: "^", - CHAR_COLON: ":", - CHAR_COMMA: ",", - CHAR_DOLLAR: "$", - CHAR_DOT: ".", - CHAR_DOUBLE_QUOTE: '"', - CHAR_EQUAL: "=", - CHAR_EXCLAMATION_MARK: "!", - CHAR_FORM_FEED: "\f", - CHAR_FORWARD_SLASH: "/", - CHAR_HASH: "#", - CHAR_HYPHEN_MINUS: "-", - CHAR_LEFT_ANGLE_BRACKET: "<", - CHAR_LEFT_CURLY_BRACE: "{", - CHAR_LEFT_SQUARE_BRACKET: "[", - CHAR_LINE_FEED: "\n", - CHAR_NO_BREAK_SPACE: "\xA0", - CHAR_PERCENT: "%", - CHAR_PLUS: "+", - CHAR_QUESTION_MARK: "?", - CHAR_RIGHT_ANGLE_BRACKET: ">", - CHAR_RIGHT_CURLY_BRACE: "}", - CHAR_RIGHT_SQUARE_BRACKET: "]", - CHAR_SEMICOLON: ";", - CHAR_SINGLE_QUOTE: "\'", - CHAR_SPACE: " ", - CHAR_TAB: "\t", - CHAR_UNDERSCORE: "_", - CHAR_VERTICAL_LINE: "|", - CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF" - }; -}); - -// node_modules/braces/lib/parse.js -var require_parse = __commonJS((exports, module) => { - var stringify = require_stringify(); - var { - MAX_LENGTH, - CHAR_BACKSLASH, - CHAR_BACKTICK, - CHAR_COMMA, - CHAR_DOT, - CHAR_LEFT_PARENTHESES, - CHAR_RIGHT_PARENTHESES, - CHAR_LEFT_CURLY_BRACE, - CHAR_RIGHT_CURLY_BRACE, - CHAR_LEFT_SQUARE_BRACKET, - CHAR_RIGHT_SQUARE_BRACKET, - CHAR_DOUBLE_QUOTE, - CHAR_SINGLE_QUOTE, - CHAR_NO_BREAK_SPACE, - CHAR_ZERO_WIDTH_NOBREAK_SPACE - } = require_constants(); - var parse = (input, options = {}) => { - if (typeof input !== "string") { - throw new TypeError("Expected a string"); - } - let opts = options || {}; - let max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - if (input.length > max) { - throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); - } - let ast = { type: "root", input, nodes: [] }; - let stack = [ast]; - let block = ast; - let prev = ast; - let brackets = 0; - let length = input.length; - let index = 0; - let depth = 0; - let value; - let memo = {}; - const advance = () => input[index++]; - const push = (node2) => { - if (node2.type === "text" && prev.type === "dot") { - prev.type = "text"; - } - if (prev && prev.type === "text" && node2.type === "text") { - prev.value += node2.value; - return; - } - block.nodes.push(node2); - node2.parent = block; - node2.prev = prev; - prev = node2; - return node2; - }; - push({ type: "bos" }); - while (index < length) { - block = stack[stack.length - 1]; - value = advance(); - if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { - continue; - } - if (value === CHAR_BACKSLASH) { - push({ type: "text", value: (options.keepEscaping ? value : "") + advance() }); - continue; - } - if (value === CHAR_RIGHT_SQUARE_BRACKET) { - push({ type: "text", value: "\\" + value }); - continue; - } - if (value === CHAR_LEFT_SQUARE_BRACKET) { - brackets++; - let closed = true; - let next; - while (index < length && (next = advance())) { - value += next; - if (next === CHAR_LEFT_SQUARE_BRACKET) { - brackets++; - continue; - } - if (next === CHAR_BACKSLASH) { - value += advance(); - continue; - } - if (next === CHAR_RIGHT_SQUARE_BRACKET) { - brackets--; - if (brackets === 0) { - break; - } - } - } - push({ type: "text", value }); - continue; - } - if (value === CHAR_LEFT_PARENTHESES) { - block = push({ type: "paren", nodes: [] }); - stack.push(block); - push({ type: "text", value }); - continue; - } - if (value === CHAR_RIGHT_PARENTHESES) { - if (block.type !== "paren") { - push({ type: "text", value }); - continue; - } - block = stack.pop(); - push({ type: "text", value }); - block = stack[stack.length - 1]; - continue; - } - if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { - let open = value; - let next; - if (options.keepQuotes !== true) { - value = ""; - } - while (index < length && (next = advance())) { - if (next === CHAR_BACKSLASH) { - value += next + advance(); - continue; - } - if (next === open) { - if (options.keepQuotes === true) - value += next; - break; - } - value += next; - } - push({ type: "text", value }); - continue; - } - if (value === CHAR_LEFT_CURLY_BRACE) { - depth++; - let dollar = prev.value && prev.value.slice(-1) === "$" || block.dollar === true; - let brace = { - type: "brace", - open: true, - close: false, - dollar, - depth, - commas: 0, - ranges: 0, - nodes: [] - }; - block = push(brace); - stack.push(block); - push({ type: "open", value }); - continue; - } - if (value === CHAR_RIGHT_CURLY_BRACE) { - if (block.type !== "brace") { - push({ type: "text", value }); - continue; - } - let type = "close"; - block = stack.pop(); - block.close = true; - push({ type, value }); - depth--; - block = stack[stack.length - 1]; - continue; - } - if (value === CHAR_COMMA && depth > 0) { - if (block.ranges > 0) { - block.ranges = 0; - let open = block.nodes.shift(); - block.nodes = [open, { type: "text", value: stringify(block) }]; - } - push({ type: "comma", value }); - block.commas++; - continue; - } - if (value === CHAR_DOT && depth > 0 && block.commas === 0) { - let siblings = block.nodes; - if (depth === 0 || siblings.length === 0) { - push({ type: "text", value }); - continue; - } - if (prev.type === "dot") { - block.range = []; - prev.value += value; - prev.type = "range"; - if (block.nodes.length !== 3 && block.nodes.length !== 5) { - block.invalid = true; - block.ranges = 0; - prev.type = "text"; - continue; - } - block.ranges++; - block.args = []; - continue; - } - if (prev.type === "range") { - siblings.pop(); - let before = siblings[siblings.length - 1]; - before.value += prev.value + value; - prev = before; - block.ranges--; - continue; - } - push({ type: "dot", value }); - continue; - } - push({ type: "text", value }); - } - do { - block = stack.pop(); - if (block.type !== "root") { - block.nodes.forEach((node2) => { - if (!node2.nodes) { - if (node2.type === "open") - node2.isOpen = true; - if (node2.type === "close") - node2.isClose = true; - if (!node2.nodes) - node2.type = "text"; - node2.invalid = true; - } - }); - let parent = stack[stack.length - 1]; - let index2 = parent.nodes.indexOf(block); - parent.nodes.splice(index2, 1, ...block.nodes); - } - } while (stack.length > 0); - push({ type: "eos" }); - return ast; - }; - module.exports = parse; -}); - -// node_modules/braces/index.js -var require_braces = __commonJS((exports, module) => { - var stringify = require_stringify(); - var compile = require_compile(); - var expand = require_expand(); - var parse = require_parse(); - var braces = (input, options = {}) => { - let output = []; - if (Array.isArray(input)) { - for (let pattern of input) { - let result = braces.create(pattern, options); - if (Array.isArray(result)) { - output.push(...result); - } else { - output.push(result); - } - } - } else { - output = [].concat(braces.create(input, options)); - } - if (options && options.expand === true && options.nodupes === true) { - output = [...new Set(output)]; - } - return output; - }; - braces.parse = (input, options = {}) => parse(input, options); - braces.stringify = (input, options = {}) => { - if (typeof input === "string") { - return stringify(braces.parse(input, options), options); - } - return stringify(input, options); - }; - braces.compile = (input, options = {}) => { - if (typeof input === "string") { - input = braces.parse(input, options); - } - return compile(input, options); - }; - braces.expand = (input, options = {}) => { - if (typeof input === "string") { - input = braces.parse(input, options); - } - let result = expand(input, options); - if (options.noempty === true) { - result = result.filter(Boolean); - } - if (options.nodupes === true) { - result = [...new Set(result)]; - } - return result; - }; - braces.create = (input, options = {}) => { - if (input === "" || input.length < 3) { - return [input]; - } - return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); - }; - module.exports = braces; -}); - -// node_modules/picomatch/lib/constants.js -var require_constants2 = __commonJS((exports, module) => { - var path = import.meta.require("path"); - var WIN_SLASH = "\\\\/"; - var WIN_NO_SLASH = `[^${WIN_SLASH}]`; - var DOT_LITERAL = "\\."; - var PLUS_LITERAL = "\\+"; - var QMARK_LITERAL = "\\?"; - var SLASH_LITERAL = "\\/"; - var ONE_CHAR = "(?=.)"; - var QMARK = "[^/]"; - var END_ANCHOR = `(?:${SLASH_LITERAL}|\$)`; - var START_ANCHOR = `(?:^|${SLASH_LITERAL})`; - var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; - var NO_DOT = `(?!${DOT_LITERAL})`; - var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; - var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; - var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; - var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; - var STAR = `${QMARK}*?`; - var POSIX_CHARS = { - DOT_LITERAL, - PLUS_LITERAL, - QMARK_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - QMARK, - END_ANCHOR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK_NO_DOT, - STAR, - START_ANCHOR - }; - var WINDOWS_CHARS = { - ...POSIX_CHARS, - SLASH_LITERAL: `[${WIN_SLASH}]`, - QMARK: WIN_NO_SLASH, - STAR: `${WIN_NO_SLASH}*?`, - DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$)`, - NO_DOT: `(?!${DOT_LITERAL})`, - NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, - NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|\$))`, - NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, - QMARK_NO_DOT: `[^.${WIN_SLASH}]`, - START_ANCHOR: `(?:^|[${WIN_SLASH}])`, - END_ANCHOR: `(?:[${WIN_SLASH}]|\$)` - }; - var POSIX_REGEX_SOURCE = { - alnum: "a-zA-Z0-9", - alpha: "a-zA-Z", - ascii: "\\x00-\\x7F", - blank: " \\t", - cntrl: "\\x00-\\x1F\\x7F", - digit: "0-9", - graph: "\\x21-\\x7E", - lower: "a-z", - print: "\\x20-\\x7E ", - punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', - space: " \\t\\r\\n\\v\\f", - upper: "A-Z", - word: "A-Za-z0-9_", - xdigit: "A-Fa-f0-9" - }; - module.exports = { - MAX_LENGTH: 1024 * 64, - POSIX_REGEX_SOURCE, - REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, - REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, - REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, - REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, - REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, - REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, - REPLACEMENTS: { - "***": "*", - "**/**": "**", - "**/**/**": "**" - }, - CHAR_0: 48, - CHAR_9: 57, - CHAR_UPPERCASE_A: 65, - CHAR_LOWERCASE_A: 97, - CHAR_UPPERCASE_Z: 90, - CHAR_LOWERCASE_Z: 122, - CHAR_LEFT_PARENTHESES: 40, - CHAR_RIGHT_PARENTHESES: 41, - CHAR_ASTERISK: 42, - CHAR_AMPERSAND: 38, - CHAR_AT: 64, - CHAR_BACKWARD_SLASH: 92, - CHAR_CARRIAGE_RETURN: 13, - CHAR_CIRCUMFLEX_ACCENT: 94, - CHAR_COLON: 58, - CHAR_COMMA: 44, - CHAR_DOT: 46, - CHAR_DOUBLE_QUOTE: 34, - CHAR_EQUAL: 61, - CHAR_EXCLAMATION_MARK: 33, - CHAR_FORM_FEED: 12, - CHAR_FORWARD_SLASH: 47, - CHAR_GRAVE_ACCENT: 96, - CHAR_HASH: 35, - CHAR_HYPHEN_MINUS: 45, - CHAR_LEFT_ANGLE_BRACKET: 60, - CHAR_LEFT_CURLY_BRACE: 123, - CHAR_LEFT_SQUARE_BRACKET: 91, - CHAR_LINE_FEED: 10, - CHAR_NO_BREAK_SPACE: 160, - CHAR_PERCENT: 37, - CHAR_PLUS: 43, - CHAR_QUESTION_MARK: 63, - CHAR_RIGHT_ANGLE_BRACKET: 62, - CHAR_RIGHT_CURLY_BRACE: 125, - CHAR_RIGHT_SQUARE_BRACKET: 93, - CHAR_SEMICOLON: 59, - CHAR_SINGLE_QUOTE: 39, - CHAR_SPACE: 32, - CHAR_TAB: 9, - CHAR_UNDERSCORE: 95, - CHAR_VERTICAL_LINE: 124, - CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, - SEP: path.sep, - extglobChars(chars) { - return { - "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` }, - "?": { type: "qmark", open: "(?:", close: ")?" }, - "+": { type: "plus", open: "(?:", close: ")+" }, - "*": { type: "star", open: "(?:", close: ")*" }, - "@": { type: "at", open: "(?:", close: ")" } - }; - }, - globChars(win32) { - return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; - } - }; -}); - -// node_modules/picomatch/lib/utils.js -var require_utils4 = __commonJS((exports) => { - var path = import.meta.require("path"); - var win32 = process.platform === "win32"; - var { - REGEX_BACKSLASH, - REGEX_REMOVE_BACKSLASH, - REGEX_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_GLOBAL - } = require_constants2(); - exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); - exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str); - exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str); - exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1"); - exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/"); - exports.removeBackslashes = (str) => { - return str.replace(REGEX_REMOVE_BACKSLASH, (match) => { - return match === "\\" ? "" : match; - }); - }; - exports.supportsLookbehinds = () => { - const segs = process.version.slice(1).split(".").map(Number); - if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) { - return true; - } - return false; - }; - exports.isWindows = (options) => { - if (options && typeof options.windows === "boolean") { - return options.windows; - } - return win32 === true || path.sep === "\\"; - }; - exports.escapeLast = (input, char, lastIdx) => { - const idx = input.lastIndexOf(char, lastIdx); - if (idx === -1) - return input; - if (input[idx - 1] === "\\") - return exports.escapeLast(input, char, idx - 1); - return `${input.slice(0, idx)}\\${input.slice(idx)}`; - }; - exports.removePrefix = (input, state = {}) => { - let output = input; - if (output.startsWith("./")) { - output = output.slice(2); - state.prefix = "./"; - } - return output; - }; - exports.wrapOutput = (input, state = {}, options = {}) => { - const prepend = options.contains ? "" : "^"; - const append = options.contains ? "" : "$"; - let output = `${prepend}(?:${input})${append}`; - if (state.negated === true) { - output = `(?:^(?!${output}).*\$)`; - } - return output; - }; -}); - -// node_modules/picomatch/lib/scan.js -var require_scan = __commonJS((exports, module) => { - var utils = require_utils4(); - var { - CHAR_ASTERISK, - CHAR_AT, - CHAR_BACKWARD_SLASH, - CHAR_COMMA, - CHAR_DOT, - CHAR_EXCLAMATION_MARK, - CHAR_FORWARD_SLASH, - CHAR_LEFT_CURLY_BRACE, - CHAR_LEFT_PARENTHESES, - CHAR_LEFT_SQUARE_BRACKET, - CHAR_PLUS, - CHAR_QUESTION_MARK, - CHAR_RIGHT_CURLY_BRACE, - CHAR_RIGHT_PARENTHESES, - CHAR_RIGHT_SQUARE_BRACKET - } = require_constants2(); - var isPathSeparator = (code) => { - return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; - }; - var depth = (token) => { - if (token.isPrefix !== true) { - token.depth = token.isGlobstar ? Infinity : 1; - } - }; - var scan = (input, options) => { - const opts = options || {}; - const length = input.length - 1; - const scanToEnd = opts.parts === true || opts.scanToEnd === true; - const slashes = []; - const tokens = []; - const parts = []; - let str = input; - let index = -1; - let start = 0; - let lastIndex = 0; - let isBrace = false; - let isBracket = false; - let isGlob = false; - let isExtglob = false; - let isGlobstar = false; - let braceEscaped = false; - let backslashes = false; - let negated = false; - let negatedExtglob = false; - let finished = false; - let braces = 0; - let prev; - let code; - let token = { value: "", depth: 0, isGlob: false }; - const eos = () => index >= length; - const peek = () => str.charCodeAt(index + 1); - const advance = () => { - prev = code; - return str.charCodeAt(++index); - }; - while (index < length) { - code = advance(); - let next; - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - if (code === CHAR_LEFT_CURLY_BRACE) { - braceEscaped = true; - } - continue; - } - if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { - braces++; - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } - if (code === CHAR_LEFT_CURLY_BRACE) { - braces++; - continue; - } - if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (braceEscaped !== true && code === CHAR_COMMA) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_RIGHT_CURLY_BRACE) { - braces--; - if (braces === 0) { - braceEscaped = false; - isBrace = token.isBrace = true; - finished = true; - break; - } - } - } - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_FORWARD_SLASH) { - slashes.push(index); - tokens.push(token); - token = { value: "", depth: 0, isGlob: false }; - if (finished === true) - continue; - if (prev === CHAR_DOT && index === start + 1) { - start += 2; - continue; - } - lastIndex = index + 1; - continue; - } - if (opts.noext !== true) { - const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK; - if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; - isExtglob = token.isExtglob = true; - finished = true; - if (code === CHAR_EXCLAMATION_MARK && index === start) { - negatedExtglob = true; - } - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } - if (code === CHAR_RIGHT_PARENTHESES) { - isGlob = token.isGlob = true; - finished = true; - break; - } - } - continue; - } - break; - } - } - if (code === CHAR_ASTERISK) { - if (prev === CHAR_ASTERISK) - isGlobstar = token.isGlobstar = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_QUESTION_MARK) { - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_LEFT_SQUARE_BRACKET) { - while (eos() !== true && (next = advance())) { - if (next === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } - if (next === CHAR_RIGHT_SQUARE_BRACKET) { - isBracket = token.isBracket = true; - isGlob = token.isGlob = true; - finished = true; - break; - } - } - if (scanToEnd === true) { - continue; - } - break; - } - if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { - negated = token.negated = true; - start++; - continue; - } - if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_LEFT_PARENTHESES) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } - if (code === CHAR_RIGHT_PARENTHESES) { - finished = true; - break; - } - } - continue; - } - break; - } - if (isGlob === true) { - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - } - if (opts.noext === true) { - isExtglob = false; - isGlob = false; - } - let base = str; - let prefix = ""; - let glob = ""; - if (start > 0) { - prefix = str.slice(0, start); - str = str.slice(start); - lastIndex -= start; - } - if (base && isGlob === true && lastIndex > 0) { - base = str.slice(0, lastIndex); - glob = str.slice(lastIndex); - } else if (isGlob === true) { - base = ""; - glob = str; - } else { - base = str; - } - if (base && base !== "" && base !== "/" && base !== str) { - if (isPathSeparator(base.charCodeAt(base.length - 1))) { - base = base.slice(0, -1); - } - } - if (opts.unescape === true) { - if (glob) - glob = utils.removeBackslashes(glob); - if (base && backslashes === true) { - base = utils.removeBackslashes(base); - } - } - const state = { - prefix, - input, - start, - base, - glob, - isBrace, - isBracket, - isGlob, - isExtglob, - isGlobstar, - negated, - negatedExtglob - }; - if (opts.tokens === true) { - state.maxDepth = 0; - if (!isPathSeparator(code)) { - tokens.push(token); - } - state.tokens = tokens; - } - if (opts.parts === true || opts.tokens === true) { - let prevIndex; - for (let idx = 0;idx < slashes.length; idx++) { - const n = prevIndex ? prevIndex + 1 : start; - const i = slashes[idx]; - const value = input.slice(n, i); - if (opts.tokens) { - if (idx === 0 && start !== 0) { - tokens[idx].isPrefix = true; - tokens[idx].value = prefix; - } else { - tokens[idx].value = value; - } - depth(tokens[idx]); - state.maxDepth += tokens[idx].depth; - } - if (idx !== 0 || value !== "") { - parts.push(value); - } - prevIndex = i; - } - if (prevIndex && prevIndex + 1 < input.length) { - const value = input.slice(prevIndex + 1); - parts.push(value); - if (opts.tokens) { - tokens[tokens.length - 1].value = value; - depth(tokens[tokens.length - 1]); - state.maxDepth += tokens[tokens.length - 1].depth; - } - } - state.slashes = slashes; - state.parts = parts; - } - return state; - }; - module.exports = scan; -}); - -// node_modules/picomatch/lib/parse.js -var require_parse2 = __commonJS((exports, module) => { - var constants = require_constants2(); - var utils = require_utils4(); - var { - MAX_LENGTH, - POSIX_REGEX_SOURCE, - REGEX_NON_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_BACKREF, - REPLACEMENTS - } = constants; - var expandRange = (args, options) => { - if (typeof options.expandRange === "function") { - return options.expandRange(...args, options); - } - args.sort(); - const value = `[${args.join("-")}]`; - try { - new RegExp(value); - } catch (ex) { - return args.map((v) => utils.escapeRegex(v)).join(".."); - } - return value; - }; - var syntaxError = (type, char) => { - return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; - }; - var parse = (input, options) => { - if (typeof input !== "string") { - throw new TypeError("Expected a string"); - } - input = REPLACEMENTS[input] || input; - const opts = { ...options }; - const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - let len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } - const bos = { type: "bos", value: "", output: opts.prepend || "" }; - const tokens = [bos]; - const capture = opts.capture ? "" : "?:"; - const win32 = utils.isWindows(options); - const PLATFORM_CHARS = constants.globChars(win32); - const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); - const { - DOT_LITERAL, - PLUS_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK, - QMARK_NO_DOT, - STAR, - START_ANCHOR - } = PLATFORM_CHARS; - const globstar = (opts2) => { - return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; - const nodot = opts.dot ? "" : NO_DOT; - const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; - let star = opts.bash === true ? globstar(opts) : STAR; - if (opts.capture) { - star = `(${star})`; - } - if (typeof opts.noext === "boolean") { - opts.noextglob = opts.noext; - } - const state = { - input, - index: -1, - start: 0, - dot: opts.dot === true, - consumed: "", - output: "", - prefix: "", - backtrack: false, - negated: false, - brackets: 0, - braces: 0, - parens: 0, - quotes: 0, - globstar: false, - tokens - }; - input = utils.removePrefix(input, state); - len = input.length; - const extglobs = []; - const braces = []; - const stack = []; - let prev = bos; - let value; - const eos = () => state.index === len - 1; - const peek = state.peek = (n = 1) => input[state.index + n]; - const advance = state.advance = () => input[++state.index] || ""; - const remaining = () => input.slice(state.index + 1); - const consume = (value2 = "", num = 0) => { - state.consumed += value2; - state.index += num; - }; - const append = (token) => { - state.output += token.output != null ? token.output : token.value; - consume(token.value); - }; - const negate = () => { - let count = 1; - while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) { - advance(); - state.start++; - count++; - } - if (count % 2 === 0) { - return false; - } - state.negated = true; - state.start++; - return true; - }; - const increment2 = (type) => { - state[type]++; - stack.push(type); - }; - const decrement = (type) => { - state[type]--; - stack.pop(); - }; - const push = (tok) => { - if (prev.type === "globstar") { - const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace"); - const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren"); - if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) { - state.output = state.output.slice(0, -prev.output.length); - prev.type = "star"; - prev.value = "*"; - prev.output = star; - state.output += prev.output; - } - } - if (extglobs.length && tok.type !== "paren") { - extglobs[extglobs.length - 1].inner += tok.value; - } - if (tok.value || tok.output) - append(tok); - if (prev && prev.type === "text" && tok.type === "text") { - prev.value += tok.value; - prev.output = (prev.output || "") + tok.value; - return; - } - tok.prev = prev; - tokens.push(tok); - prev = tok; - }; - const extglobOpen = (type, value2) => { - const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" }; - token.prev = prev; - token.parens = state.parens; - token.output = state.output; - const output = (opts.capture ? "(" : "") + token.open; - increment2("parens"); - push({ type, value: value2, output: state.output ? "" : ONE_CHAR }); - push({ type: "paren", extglob: true, value: advance(), output }); - extglobs.push(token); - }; - const extglobClose = (token) => { - let output = token.close + (opts.capture ? ")" : ""); - let rest; - if (token.type === "negate") { - let extglobStar = star; - if (token.inner && token.inner.length > 1 && token.inner.includes("/")) { - extglobStar = globstar(opts); - } - if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { - output = token.close = `)\$))${extglobStar}`; - } - if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { - const expression = parse(rest, { ...options, fastpaths: false }).output; - output = token.close = `)${expression})${extglobStar})`; - } - if (token.prev.type === "bos") { - state.negatedExtglob = true; - } - } - push({ type: "paren", extglob: true, value, output }); - decrement("parens"); - }; - if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { - let backslashes = false; - let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { - if (first === "\\") { - backslashes = true; - return m; - } - if (first === "?") { - if (esc) { - return esc + first + (rest ? QMARK.repeat(rest.length) : ""); - } - if (index === 0) { - return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ""); - } - return QMARK.repeat(chars.length); - } - if (first === ".") { - return DOT_LITERAL.repeat(chars.length); - } - if (first === "*") { - if (esc) { - return esc + first + (rest ? star : ""); - } - return star; - } - return esc ? m : `\\${m}`; - }); - if (backslashes === true) { - if (opts.unescape === true) { - output = output.replace(/\\/g, ""); - } else { - output = output.replace(/\\+/g, (m) => { - return m.length % 2 === 0 ? "\\\\" : m ? "\\" : ""; - }); - } - } - if (output === input && opts.contains === true) { - state.output = input; - return state; - } - state.output = utils.wrapOutput(output, state, options); - return state; - } - while (!eos()) { - value = advance(); - if (value === "\0") { - continue; - } - if (value === "\\") { - const next = peek(); - if (next === "/" && opts.bash !== true) { - continue; - } - if (next === "." || next === ";") { - continue; - } - if (!next) { - value += "\\"; - push({ type: "text", value }); - continue; - } - const match = /^\\+/.exec(remaining()); - let slashes = 0; - if (match && match[0].length > 2) { - slashes = match[0].length; - state.index += slashes; - if (slashes % 2 !== 0) { - value += "\\"; - } - } - if (opts.unescape === true) { - value = advance(); - } else { - value += advance(); - } - if (state.brackets === 0) { - push({ type: "text", value }); - continue; - } - } - if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) { - if (opts.posix !== false && value === ":") { - const inner = prev.value.slice(1); - if (inner.includes("[")) { - prev.posix = true; - if (inner.includes(":")) { - const idx = prev.value.lastIndexOf("["); - const pre = prev.value.slice(0, idx); - const rest2 = prev.value.slice(idx + 2); - const posix = POSIX_REGEX_SOURCE[rest2]; - if (posix) { - prev.value = pre + posix; - state.backtrack = true; - advance(); - if (!bos.output && tokens.indexOf(prev) === 1) { - bos.output = ONE_CHAR; - } - continue; - } - } - } - } - if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") { - value = `\\${value}`; - } - if (value === "]" && (prev.value === "[" || prev.value === "[^")) { - value = `\\${value}`; - } - if (opts.posix === true && value === "!" && prev.value === "[") { - value = "^"; - } - prev.value += value; - append({ value }); - continue; - } - if (state.quotes === 1 && value !== '"') { - value = utils.escapeRegex(value); - prev.value += value; - append({ value }); - continue; - } - if (value === '"') { - state.quotes = state.quotes === 1 ? 0 : 1; - if (opts.keepQuotes === true) { - push({ type: "text", value }); - } - continue; - } - if (value === "(") { - increment2("parens"); - push({ type: "paren", value }); - continue; - } - if (value === ")") { - if (state.parens === 0 && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError("opening", "(")); - } - const extglob = extglobs[extglobs.length - 1]; - if (extglob && state.parens === extglob.parens + 1) { - extglobClose(extglobs.pop()); - continue; - } - push({ type: "paren", value, output: state.parens ? ")" : "\\)" }); - decrement("parens"); - continue; - } - if (value === "[") { - if (opts.nobracket === true || !remaining().includes("]")) { - if (opts.nobracket !== true && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError("closing", "]")); - } - value = `\\${value}`; - } else { - increment2("brackets"); - } - push({ type: "bracket", value }); - continue; - } - if (value === "]") { - if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) { - push({ type: "text", value, output: `\\${value}` }); - continue; - } - if (state.brackets === 0) { - if (opts.strictBrackets === true) { - throw new SyntaxError(syntaxError("opening", "[")); - } - push({ type: "text", value, output: `\\${value}` }); - continue; - } - decrement("brackets"); - const prevValue = prev.value.slice(1); - if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) { - value = `/${value}`; - } - prev.value += value; - append({ value }); - if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { - continue; - } - const escaped = utils.escapeRegex(prev.value); - state.output = state.output.slice(0, -prev.value.length); - if (opts.literalBrackets === true) { - state.output += escaped; - prev.value = escaped; - continue; - } - prev.value = `(${capture}${escaped}|${prev.value})`; - state.output += prev.value; - continue; - } - if (value === "{" && opts.nobrace !== true) { - increment2("braces"); - const open = { - type: "brace", - value, - output: "(", - outputIndex: state.output.length, - tokensIndex: state.tokens.length - }; - braces.push(open); - push(open); - continue; - } - if (value === "}") { - const brace = braces[braces.length - 1]; - if (opts.nobrace === true || !brace) { - push({ type: "text", value, output: value }); - continue; - } - let output = ")"; - if (brace.dots === true) { - const arr = tokens.slice(); - const range = []; - for (let i = arr.length - 1;i >= 0; i--) { - tokens.pop(); - if (arr[i].type === "brace") { - break; - } - if (arr[i].type !== "dots") { - range.unshift(arr[i].value); - } - } - output = expandRange(range, opts); - state.backtrack = true; - } - if (brace.comma !== true && brace.dots !== true) { - const out = state.output.slice(0, brace.outputIndex); - const toks = state.tokens.slice(brace.tokensIndex); - brace.value = brace.output = "\\{"; - value = output = "\\}"; - state.output = out; - for (const t of toks) { - state.output += t.output || t.value; - } - } - push({ type: "brace", value, output }); - decrement("braces"); - braces.pop(); - continue; - } - if (value === "|") { - if (extglobs.length > 0) { - extglobs[extglobs.length - 1].conditions++; - } - push({ type: "text", value }); - continue; - } - if (value === ",") { - let output = value; - const brace = braces[braces.length - 1]; - if (brace && stack[stack.length - 1] === "braces") { - brace.comma = true; - output = "|"; - } - push({ type: "comma", value, output }); - continue; - } - if (value === "/") { - if (prev.type === "dot" && state.index === state.start + 1) { - state.start = state.index + 1; - state.consumed = ""; - state.output = ""; - tokens.pop(); - prev = bos; - continue; - } - push({ type: "slash", value, output: SLASH_LITERAL }); - continue; - } - if (value === ".") { - if (state.braces > 0 && prev.type === "dot") { - if (prev.value === ".") - prev.output = DOT_LITERAL; - const brace = braces[braces.length - 1]; - prev.type = "dots"; - prev.output += value; - prev.value += value; - brace.dots = true; - continue; - } - if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") { - push({ type: "text", value, output: DOT_LITERAL }); - continue; - } - push({ type: "dot", value, output: DOT_LITERAL }); - continue; - } - if (value === "?") { - const isGroup = prev && prev.value === "("; - if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { - extglobOpen("qmark", value); - continue; - } - if (prev && prev.type === "paren") { - const next = peek(); - let output = value; - if (next === "<" && !utils.supportsLookbehinds()) { - throw new Error("Node.js v10 or higher is required for regex lookbehinds"); - } - if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) { - output = `\\${value}`; - } - push({ type: "text", value, output }); - continue; - } - if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) { - push({ type: "qmark", value, output: QMARK_NO_DOT }); - continue; - } - push({ type: "qmark", value, output: QMARK }); - continue; - } - if (value === "!") { - if (opts.noextglob !== true && peek() === "(") { - if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) { - extglobOpen("negate", value); - continue; - } - } - if (opts.nonegate !== true && state.index === 0) { - negate(); - continue; - } - } - if (value === "+") { - if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { - extglobOpen("plus", value); - continue; - } - if (prev && prev.value === "(" || opts.regex === false) { - push({ type: "plus", value, output: PLUS_LITERAL }); - continue; - } - if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) { - push({ type: "plus", value }); - continue; - } - push({ type: "plus", value: PLUS_LITERAL }); - continue; - } - if (value === "@") { - if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { - push({ type: "at", extglob: true, value, output: "" }); - continue; - } - push({ type: "text", value }); - continue; - } - if (value !== "*") { - if (value === "$" || value === "^") { - value = `\\${value}`; - } - const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); - if (match) { - value += match[0]; - state.index += match[0].length; - } - push({ type: "text", value }); - continue; - } - if (prev && (prev.type === "globstar" || prev.star === true)) { - prev.type = "star"; - prev.star = true; - prev.value += value; - prev.output = star; - state.backtrack = true; - state.globstar = true; - consume(value); - continue; - } - let rest = remaining(); - if (opts.noextglob !== true && /^\([^?]/.test(rest)) { - extglobOpen("star", value); - continue; - } - if (prev.type === "star") { - if (opts.noglobstar === true) { - consume(value); - continue; - } - const prior = prev.prev; - const before = prior.prev; - const isStart = prior.type === "slash" || prior.type === "bos"; - const afterStar = before && (before.type === "star" || before.type === "globstar"); - if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) { - push({ type: "star", value, output: "" }); - continue; - } - const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace"); - const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren"); - if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) { - push({ type: "star", value, output: "" }); - continue; - } - while (rest.slice(0, 3) === "/**") { - const after = input[state.index + 4]; - if (after && after !== "/") { - break; - } - rest = rest.slice(3); - consume("/**", 3); - } - if (prior.type === "bos" && eos()) { - prev.type = "globstar"; - prev.value += value; - prev.output = globstar(opts); - state.output = prev.output; - state.globstar = true; - consume(value); - continue; - } - if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) { - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; - prev.type = "globstar"; - prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)"); - prev.value += value; - state.globstar = true; - state.output += prior.output + prev.output; - consume(value); - continue; - } - if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") { - const end = rest[1] !== undefined ? "|$" : ""; - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; - prev.type = "globstar"; - prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; - prev.value += value; - state.output += prior.output + prev.output; - state.globstar = true; - consume(value + advance()); - push({ type: "slash", value: "/", output: "" }); - continue; - } - if (prior.type === "bos" && rest[0] === "/") { - prev.type = "globstar"; - prev.value += value; - prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; - state.output = prev.output; - state.globstar = true; - consume(value + advance()); - push({ type: "slash", value: "/", output: "" }); - continue; - } - state.output = state.output.slice(0, -prev.output.length); - prev.type = "globstar"; - prev.output = globstar(opts); - prev.value += value; - state.output += prev.output; - state.globstar = true; - consume(value); - continue; - } - const token = { type: "star", value, output: star }; - if (opts.bash === true) { - token.output = ".*?"; - if (prev.type === "bos" || prev.type === "slash") { - token.output = nodot + token.output; - } - push(token); - continue; - } - if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) { - token.output = value; - push(token); - continue; - } - if (state.index === state.start || prev.type === "slash" || prev.type === "dot") { - if (prev.type === "dot") { - state.output += NO_DOT_SLASH; - prev.output += NO_DOT_SLASH; - } else if (opts.dot === true) { - state.output += NO_DOTS_SLASH; - prev.output += NO_DOTS_SLASH; - } else { - state.output += nodot; - prev.output += nodot; - } - if (peek() !== "*") { - state.output += ONE_CHAR; - prev.output += ONE_CHAR; - } - } - push(token); - } - while (state.brackets > 0) { - if (opts.strictBrackets === true) - throw new SyntaxError(syntaxError("closing", "]")); - state.output = utils.escapeLast(state.output, "["); - decrement("brackets"); - } - while (state.parens > 0) { - if (opts.strictBrackets === true) - throw new SyntaxError(syntaxError("closing", ")")); - state.output = utils.escapeLast(state.output, "("); - decrement("parens"); - } - while (state.braces > 0) { - if (opts.strictBrackets === true) - throw new SyntaxError(syntaxError("closing", "}")); - state.output = utils.escapeLast(state.output, "{"); - decrement("braces"); - } - if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) { - push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` }); - } - if (state.backtrack === true) { - state.output = ""; - for (const token of state.tokens) { - state.output += token.output != null ? token.output : token.value; - if (token.suffix) { - state.output += token.suffix; - } - } - } - return state; - }; - parse.fastpaths = (input, options) => { - const opts = { ...options }; - const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - const len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } - input = REPLACEMENTS[input] || input; - const win32 = utils.isWindows(options); - const { - DOT_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOTS_SLASH, - STAR, - START_ANCHOR - } = constants.globChars(win32); - const nodot = opts.dot ? NO_DOTS : NO_DOT; - const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; - const capture = opts.capture ? "" : "?:"; - const state = { negated: false, prefix: "" }; - let star = opts.bash === true ? ".*?" : STAR; - if (opts.capture) { - star = `(${star})`; - } - const globstar = (opts2) => { - if (opts2.noglobstar === true) - return star; - return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; - const create = (str) => { - switch (str) { - case "*": - return `${nodot}${ONE_CHAR}${star}`; - case ".*": - return `${DOT_LITERAL}${ONE_CHAR}${star}`; - case "*.*": - return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - case "*/*": - return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; - case "**": - return nodot + globstar(opts); - case "**/*": - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; - case "**/*.*": - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - case "**/.*": - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; - default: { - const match = /^(.*?)\.(\w+)$/.exec(str); - if (!match) - return; - const source2 = create(match[1]); - if (!source2) - return; - return source2 + DOT_LITERAL + match[2]; - } - } - }; - const output = utils.removePrefix(input, state); - let source = create(output); - if (source && opts.strictSlashes !== true) { - source += `${SLASH_LITERAL}?`; - } - return source; - }; - module.exports = parse; -}); - -// node_modules/picomatch/lib/picomatch.js -var require_picomatch = __commonJS((exports, module) => { - var path = import.meta.require("path"); - var scan = require_scan(); - var parse = require_parse2(); - var utils = require_utils4(); - var constants = require_constants2(); - var isObject = (val) => val && typeof val === "object" && !Array.isArray(val); - var picomatch = (glob, options, returnState = false) => { - if (Array.isArray(glob)) { - const fns = glob.map((input) => picomatch(input, options, returnState)); - const arrayMatcher = (str) => { - for (const isMatch of fns) { - const state2 = isMatch(str); - if (state2) - return state2; - } - return false; - }; - return arrayMatcher; - } - const isState = isObject(glob) && glob.tokens && glob.input; - if (glob === "" || typeof glob !== "string" && !isState) { - throw new TypeError("Expected pattern to be a non-empty string"); - } - const opts = options || {}; - const posix = utils.isWindows(options); - const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); - const state = regex.state; - delete regex.state; - let isIgnored = () => false; - if (opts.ignore) { - const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; - isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); - } - const matcher = (input, returnObject = false) => { - const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); - const result = { glob, state, regex, posix, input, output, match, isMatch }; - if (typeof opts.onResult === "function") { - opts.onResult(result); - } - if (isMatch === false) { - result.isMatch = false; - return returnObject ? result : false; - } - if (isIgnored(input)) { - if (typeof opts.onIgnore === "function") { - opts.onIgnore(result); - } - result.isMatch = false; - return returnObject ? result : false; - } - if (typeof opts.onMatch === "function") { - opts.onMatch(result); - } - return returnObject ? result : true; - }; - if (returnState) { - matcher.state = state; - } - return matcher; - }; - picomatch.test = (input, regex, options, { glob, posix } = {}) => { - if (typeof input !== "string") { - throw new TypeError("Expected input to be a string"); - } - if (input === "") { - return { isMatch: false, output: "" }; - } - const opts = options || {}; - const format4 = opts.format || (posix ? utils.toPosixSlashes : null); - let match = input === glob; - let output = match && format4 ? format4(input) : input; - if (match === false) { - output = format4 ? format4(input) : input; - match = output === glob; - } - if (match === false || opts.capture === true) { - if (opts.matchBase === true || opts.basename === true) { - match = picomatch.matchBase(input, regex, options, posix); - } else { - match = regex.exec(output); - } - } - return { isMatch: Boolean(match), match, output }; - }; - picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { - const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); - return regex.test(path.basename(input)); - }; - picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); - picomatch.parse = (pattern, options) => { - if (Array.isArray(pattern)) - return pattern.map((p) => picomatch.parse(p, options)); - return parse(pattern, { ...options, fastpaths: false }); - }; - picomatch.scan = (input, options) => scan(input, options); - picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { - if (returnOutput === true) { - return state.output; - } - const opts = options || {}; - const prepend = opts.contains ? "" : "^"; - const append = opts.contains ? "" : "$"; - let source = `${prepend}(?:${state.output})${append}`; - if (state && state.negated === true) { - source = `^(?!${source}).*\$`; - } - const regex = picomatch.toRegex(source, options); - if (returnState === true) { - regex.state = state; - } - return regex; - }; - picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { - if (!input || typeof input !== "string") { - throw new TypeError("Expected a non-empty string"); - } - let parsed = { negated: false, fastpaths: true }; - if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) { - parsed.output = parse.fastpaths(input, options); - } - if (!parsed.output) { - parsed = parse(input, options); - } - return picomatch.compileRe(parsed, options, returnOutput, returnState); - }; - picomatch.toRegex = (source, options) => { - try { - const opts = options || {}; - return new RegExp(source, opts.flags || (opts.nocase ? "i" : "")); - } catch (err) { - if (options && options.debug === true) - throw err; - return /$^/; - } - }; - picomatch.constants = constants; - module.exports = picomatch; -}); - -// node_modules/micromatch/index.js -var require_micromatch = __commonJS((exports, module) => { - var util = import.meta.require("util"); - var braces = require_braces(); - var picomatch = require_picomatch(); - var utils = require_utils4(); - var isEmptyString = (val) => val === "" || val === "./"; - var micromatch = (list, patterns, options) => { - patterns = [].concat(patterns); - list = [].concat(list); - let omit = new Set; - let keep = new Set; - let items = new Set; - let negatives = 0; - let onResult = (state) => { - items.add(state.output); - if (options && options.onResult) { - options.onResult(state); - } - }; - for (let i = 0;i < patterns.length; i++) { - let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); - let negated = isMatch.state.negated || isMatch.state.negatedExtglob; - if (negated) - negatives++; - for (let item of list) { - let matched = isMatch(item, true); - let match = negated ? !matched.isMatch : matched.isMatch; - if (!match) - continue; - if (negated) { - omit.add(matched.output); - } else { - omit.delete(matched.output); - keep.add(matched.output); - } - } - } - let result = negatives === patterns.length ? [...items] : [...keep]; - let matches = result.filter((item) => !omit.has(item)); - if (options && matches.length === 0) { - if (options.failglob === true) { - throw new Error(`No matches found for "${patterns.join(", ")}"`); - } - if (options.nonull === true || options.nullglob === true) { - return options.unescape ? patterns.map((p) => p.replace(/\\/g, "")) : patterns; - } - } - return matches; - }; - micromatch.match = micromatch; - micromatch.matcher = (pattern, options) => picomatch(pattern, options); - micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); - micromatch.any = micromatch.isMatch; - micromatch.not = (list, patterns, options = {}) => { - patterns = [].concat(patterns).map(String); - let result = new Set; - let items = []; - let onResult = (state) => { - if (options.onResult) - options.onResult(state); - items.push(state.output); - }; - let matches = new Set(micromatch(list, patterns, { ...options, onResult })); - for (let item of items) { - if (!matches.has(item)) { - result.add(item); - } - } - return [...result]; - }; - micromatch.contains = (str, pattern, options) => { - if (typeof str !== "string") { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); - } - if (Array.isArray(pattern)) { - return pattern.some((p) => micromatch.contains(str, p, options)); - } - if (typeof pattern === "string") { - if (isEmptyString(str) || isEmptyString(pattern)) { - return false; - } - if (str.includes(pattern) || str.startsWith("./") && str.slice(2).includes(pattern)) { - return true; - } - } - return micromatch.isMatch(str, pattern, { ...options, contains: true }); - }; - micromatch.matchKeys = (obj, patterns, options) => { - if (!utils.isObject(obj)) { - throw new TypeError("Expected the first argument to be an object"); - } - let keys = micromatch(Object.keys(obj), patterns, options); - let res = {}; - for (let key of keys) - res[key] = obj[key]; - return res; - }; - micromatch.some = (list, patterns, options) => { - let items = [].concat(list); - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (items.some((item) => isMatch(item))) { - return true; - } - } - return false; - }; - micromatch.every = (list, patterns, options) => { - let items = [].concat(list); - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (!items.every((item) => isMatch(item))) { - return false; - } - } - return true; - }; - micromatch.all = (str, patterns, options) => { - if (typeof str !== "string") { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); - } - return [].concat(patterns).every((p) => picomatch(p, options)(str)); - }; - micromatch.capture = (glob, input, options) => { - let posix = utils.isWindows(options); - let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); - let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); - if (match) { - return match.slice(1).map((v) => v === undefined ? "" : v); - } - }; - micromatch.makeRe = (...args) => picomatch.makeRe(...args); - micromatch.scan = (...args) => picomatch.scan(...args); - micromatch.parse = (patterns, options) => { - let res = []; - for (let pattern of [].concat(patterns || [])) { - for (let str of braces(String(pattern), options)) { - res.push(picomatch.parse(str, options)); - } - } - return res; - }; - micromatch.braces = (pattern, options) => { - if (typeof pattern !== "string") - throw new TypeError("Expected a string"); - if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { - return [pattern]; - } - return braces(pattern, options); - }; - micromatch.braceExpand = (pattern, options) => { - if (typeof pattern !== "string") - throw new TypeError("Expected a string"); - return micromatch.braces(pattern, { ...options, expand: true }); - }; - module.exports = micromatch; -}); - -// node_modules/fast-glob/out/utils/pattern.js -var require_pattern = __commonJS((exports) => { - var isStaticPattern = function(pattern, options = {}) { - return !isDynamicPattern(pattern, options); - }; - var isDynamicPattern = function(pattern, options = {}) { - if (pattern === "") { - return false; - } - if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { - return true; - } - if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { - return true; - } - return false; - }; - var hasBraceExpansion = function(pattern) { - const openingBraceIndex = pattern.indexOf("{"); - if (openingBraceIndex === -1) { - return false; - } - const closingBraceIndex = pattern.indexOf("}", openingBraceIndex + 1); - if (closingBraceIndex === -1) { - return false; - } - const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); - return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); - }; - var convertToPositivePattern = function(pattern) { - return isNegativePattern(pattern) ? pattern.slice(1) : pattern; - }; - var convertToNegativePattern = function(pattern) { - return "!" + pattern; - }; - var isNegativePattern = function(pattern) { - return pattern.startsWith("!") && pattern[1] !== "("; - }; - var isPositivePattern = function(pattern) { - return !isNegativePattern(pattern); - }; - var getNegativePatterns = function(patterns) { - return patterns.filter(isNegativePattern); - }; - var getPositivePatterns = function(patterns) { - return patterns.filter(isPositivePattern); - }; - var getPatternsInsideCurrentDirectory = function(patterns) { - return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); - }; - var getPatternsOutsideCurrentDirectory = function(patterns) { - return patterns.filter(isPatternRelatedToParentDirectory); - }; - var isPatternRelatedToParentDirectory = function(pattern) { - return pattern.startsWith("..") || pattern.startsWith("./.."); - }; - var getBaseDirectory = function(pattern) { - return globParent(pattern, { flipBackslashes: false }); - }; - var hasGlobStar = function(pattern) { - return pattern.includes(GLOBSTAR); - }; - var endsWithSlashGlobStar = function(pattern) { - return pattern.endsWith("/" + GLOBSTAR); - }; - var isAffectDepthOfReadingPattern = function(pattern) { - const basename2 = path.basename(pattern); - return endsWithSlashGlobStar(pattern) || isStaticPattern(basename2); - }; - var expandPatternsWithBraceExpansion = function(patterns) { - return patterns.reduce((collection, pattern) => { - return collection.concat(expandBraceExpansion(pattern)); - }, []); - }; - var expandBraceExpansion = function(pattern) { - const patterns = micromatch.braces(pattern, { expand: true, nodupes: true }); - patterns.sort((a, b) => a.length - b.length); - return patterns.filter((pattern2) => pattern2 !== ""); - }; - var getPatternParts = function(pattern, options) { - let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); - if (parts.length === 0) { - parts = [pattern]; - } - if (parts[0].startsWith("/")) { - parts[0] = parts[0].slice(1); - parts.unshift(""); - } - return parts; - }; - var makeRe = function(pattern, options) { - return micromatch.makeRe(pattern, options); - }; - var convertPatternsToRe = function(patterns, options) { - return patterns.map((pattern) => makeRe(pattern, options)); - }; - var matchAny = function(entry, patternsRe) { - return patternsRe.some((patternRe) => patternRe.test(entry)); - }; - var removeDuplicateSlashes = function(pattern) { - return pattern.replace(DOUBLE_SLASH_RE, "/"); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = undefined; - var path = import.meta.require("path"); - var globParent = require_glob_parent(); - var micromatch = require_micromatch(); - var GLOBSTAR = "**"; - var ESCAPE_SYMBOL = "\\"; - var COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; - var REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; - var REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; - var GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; - var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; - var DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; - exports.isStaticPattern = isStaticPattern; - exports.isDynamicPattern = isDynamicPattern; - exports.convertToPositivePattern = convertToPositivePattern; - exports.convertToNegativePattern = convertToNegativePattern; - exports.isNegativePattern = isNegativePattern; - exports.isPositivePattern = isPositivePattern; - exports.getNegativePatterns = getNegativePatterns; - exports.getPositivePatterns = getPositivePatterns; - exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; - exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; - exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; - exports.getBaseDirectory = getBaseDirectory; - exports.hasGlobStar = hasGlobStar; - exports.endsWithSlashGlobStar = endsWithSlashGlobStar; - exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; - exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; - exports.expandBraceExpansion = expandBraceExpansion; - exports.getPatternParts = getPatternParts; - exports.makeRe = makeRe; - exports.convertPatternsToRe = convertPatternsToRe; - exports.matchAny = matchAny; - exports.removeDuplicateSlashes = removeDuplicateSlashes; -}); - -// node_modules/merge2/index.js -var require_merge2 = __commonJS((exports, module) => { - var merge2 = function() { - const streamsQueue = []; - const args = slice.call(arguments); - let merging = false; - let options = args[args.length - 1]; - if (options && !Array.isArray(options) && options.pipe == null) { - args.pop(); - } else { - options = {}; - } - const doEnd = options.end !== false; - const doPipeError = options.pipeError === true; - if (options.objectMode == null) { - options.objectMode = true; - } - if (options.highWaterMark == null) { - options.highWaterMark = 64 * 1024; - } - const mergedStream = PassThrough(options); - function addStream() { - for (let i = 0, len = arguments.length;i < len; i++) { - streamsQueue.push(pauseStreams(arguments[i], options)); - } - mergeStream(); - return this; - } - function mergeStream() { - if (merging) { - return; - } - merging = true; - let streams = streamsQueue.shift(); - if (!streams) { - process.nextTick(endStream); - return; - } - if (!Array.isArray(streams)) { - streams = [streams]; - } - let pipesCount = streams.length + 1; - function next() { - if (--pipesCount > 0) { - return; - } - merging = false; - mergeStream(); - } - function pipe(stream) { - function onend() { - stream.removeListener("merge2UnpipeEnd", onend); - stream.removeListener("end", onend); - if (doPipeError) { - stream.removeListener("error", onerror); - } - next(); - } - function onerror(err) { - mergedStream.emit("error", err); - } - if (stream._readableState.endEmitted) { - return next(); - } - stream.on("merge2UnpipeEnd", onend); - stream.on("end", onend); - if (doPipeError) { - stream.on("error", onerror); - } - stream.pipe(mergedStream, { end: false }); - stream.resume(); - } - for (let i = 0;i < streams.length; i++) { - pipe(streams[i]); - } - next(); - } - function endStream() { - merging = false; - mergedStream.emit("queueDrain"); - if (doEnd) { - mergedStream.end(); - } - } - mergedStream.setMaxListeners(0); - mergedStream.add = addStream; - mergedStream.on("unpipe", function(stream) { - stream.emit("merge2UnpipeEnd"); - }); - if (args.length) { - addStream.apply(null, args); - } - return mergedStream; - }; - var pauseStreams = function(streams, options) { - if (!Array.isArray(streams)) { - if (!streams._readableState && streams.pipe) { - streams = streams.pipe(PassThrough(options)); - } - if (!streams._readableState || !streams.pause || !streams.pipe) { - throw new Error("Only readable stream can be merged."); - } - streams.pause(); - } else { - for (let i = 0, len = streams.length;i < len; i++) { - streams[i] = pauseStreams(streams[i], options); - } - } - return streams; - }; - var Stream = import.meta.require("stream"); - var PassThrough = Stream.PassThrough; - var slice = Array.prototype.slice; - module.exports = merge2; -}); - -// node_modules/fast-glob/out/utils/stream.js -var require_stream = __commonJS((exports) => { - var merge = function(streams) { - const mergedStream = merge2(streams); - streams.forEach((stream) => { - stream.once("error", (error2) => mergedStream.emit("error", error2)); - }); - mergedStream.once("close", () => propagateCloseEventToSources(streams)); - mergedStream.once("end", () => propagateCloseEventToSources(streams)); - return mergedStream; - }; - var propagateCloseEventToSources = function(streams) { - streams.forEach((stream) => stream.emit("close")); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.merge = undefined; - var merge2 = require_merge2(); - exports.merge = merge; -}); - -// node_modules/fast-glob/out/utils/string.js -var require_string = __commonJS((exports) => { - var isString = function(input) { - return typeof input === "string"; - }; - var isEmpty = function(input) { - return input === ""; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.isEmpty = exports.isString = undefined; - exports.isString = isString; - exports.isEmpty = isEmpty; -}); - -// node_modules/fast-glob/out/utils/index.js -var require_utils5 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = undefined; - var array = require_array(); - exports.array = array; - var errno = require_errno(); - exports.errno = errno; - var fs = require_fs2(); - exports.fs = fs; - var path = require_path(); - exports.path = path; - var pattern = require_pattern(); - exports.pattern = pattern; - var stream = require_stream(); - exports.stream = stream; - var string = require_string(); - exports.string = string; -}); - -// node_modules/fast-glob/out/managers/tasks.js -var require_tasks = __commonJS((exports) => { - var generate = function(input, settings) { - const patterns = processPatterns(input, settings); - const ignore = processPatterns(settings.ignore, settings); - const positivePatterns = getPositivePatterns(patterns); - const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); - const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); - const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); - const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, false); - const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, true); - return staticTasks.concat(dynamicTasks); - }; - var processPatterns = function(input, settings) { - let patterns = input; - if (settings.braceExpansion) { - patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); - } - if (settings.baseNameMatch) { - patterns = patterns.map((pattern) => pattern.includes("/") ? pattern : `**/${pattern}`); - } - return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); - }; - var convertPatternsToTasks = function(positive, negative, dynamic) { - const tasks = []; - const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); - const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); - const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); - const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); - tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); - if ("." in insideCurrentDirectoryGroup) { - tasks.push(convertPatternGroupToTask(".", patternsInsideCurrentDirectory, negative, dynamic)); - } else { - tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); - } - return tasks; - }; - var getPositivePatterns = function(patterns) { - return utils.pattern.getPositivePatterns(patterns); - }; - var getNegativePatternsAsPositive = function(patterns, ignore) { - const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); - const positive = negative.map(utils.pattern.convertToPositivePattern); - return positive; - }; - var groupPatternsByBaseDirectory = function(patterns) { - const group = {}; - return patterns.reduce((collection, pattern) => { - const base = utils.pattern.getBaseDirectory(pattern); - if (base in collection) { - collection[base].push(pattern); - } else { - collection[base] = [pattern]; - } - return collection; - }, group); - }; - var convertPatternGroupsToTasks = function(positive, negative, dynamic) { - return Object.keys(positive).map((base) => { - return convertPatternGroupToTask(base, positive[base], negative, dynamic); - }); - }; - var convertPatternGroupToTask = function(base, positive, negative, dynamic) { - return { - dynamic, - positive, - negative, - base, - patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) - }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = undefined; - var utils = require_utils5(); - exports.generate = generate; - exports.convertPatternsToTasks = convertPatternsToTasks; - exports.getPositivePatterns = getPositivePatterns; - exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; - exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; - exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; - exports.convertPatternGroupToTask = convertPatternGroupToTask; -}); - -// node_modules/@nodelib/fs.stat/out/providers/async.js -var require_async = __commonJS((exports) => { - var read = function(path, settings, callback) { - settings.fs.lstat(path, (lstatError, lstat) => { - if (lstatError !== null) { - callFailureCallback(callback, lstatError); - return; - } - if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { - callSuccessCallback(callback, lstat); - return; - } - settings.fs.stat(path, (statError, stat) => { - if (statError !== null) { - if (settings.throwErrorOnBrokenSymbolicLink) { - callFailureCallback(callback, statError); - return; - } - callSuccessCallback(callback, lstat); - return; - } - if (settings.markSymbolicLink) { - stat.isSymbolicLink = () => true; - } - callSuccessCallback(callback, stat); - }); - }); - }; - var callFailureCallback = function(callback, error2) { - callback(error2); - }; - var callSuccessCallback = function(callback, result) { - callback(null, result); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.read = undefined; - exports.read = read; -}); - -// node_modules/@nodelib/fs.stat/out/providers/sync.js -var require_sync = __commonJS((exports) => { - var read = function(path, settings) { - const lstat = settings.fs.lstatSync(path); - if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { - return lstat; - } - try { - const stat = settings.fs.statSync(path); - if (settings.markSymbolicLink) { - stat.isSymbolicLink = () => true; - } - return stat; - } catch (error2) { - if (!settings.throwErrorOnBrokenSymbolicLink) { - return lstat; - } - throw error2; - } - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.read = undefined; - exports.read = read; -}); - -// node_modules/@nodelib/fs.stat/out/adapters/fs.js -var require_fs3 = __commonJS((exports) => { - var createFileSystemAdapter = function(fsMethods) { - if (fsMethods === undefined) { - return exports.FILE_SYSTEM_ADAPTER; - } - return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; - var fs = import.meta.require("fs"); - exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync - }; - exports.createFileSystemAdapter = createFileSystemAdapter; -}); - -// node_modules/@nodelib/fs.stat/out/settings.js -var require_settings = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fs = require_fs3(); - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); - this.fs = fs.createFileSystemAdapter(this._options.fs); - this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); - } - _getValue(option, value) { - return option !== null && option !== undefined ? option : value; - } - } - exports.default = Settings; -}); - -// node_modules/@nodelib/fs.stat/out/index.js -var require_out = __commonJS((exports) => { - var stat = function(path, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === "function") { - async.read(path, getSettings(), optionsOrSettingsOrCallback); - return; - } - async.read(path, getSettings(optionsOrSettingsOrCallback), callback); - }; - var statSync3 = function(path, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - return sync2.read(path, settings); - }; - var getSettings = function(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.statSync = exports.stat = exports.Settings = undefined; - var async = require_async(); - var sync2 = require_sync(); - var settings_1 = require_settings(); - exports.Settings = settings_1.default; - exports.stat = stat; - exports.statSync = statSync3; -}); - -// node_modules/queue-microtask/index.js -var require_queue_microtask = __commonJS((exports, module) => { - /*! queue-microtask. MIT License. Feross Aboukhadijeh */ - var promise; - module.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => { - throw err; - }, 0)); -}); - -// node_modules/run-parallel/index.js -var require_run_parallel = __commonJS((exports, module) => { - var runParallel = function(tasks, cb) { - let results, pending, keys; - let isSync = true; - if (Array.isArray(tasks)) { - results = []; - pending = tasks.length; - } else { - keys = Object.keys(tasks); - results = {}; - pending = keys.length; - } - function done(err) { - function end() { - if (cb) - cb(err, results); - cb = null; - } - if (isSync) - queueMicrotask2(end); - else - end(); - } - function each(i, err, result) { - results[i] = result; - if (--pending === 0 || err) { - done(err); - } - } - if (!pending) { - done(null); - } else if (keys) { - keys.forEach(function(key) { - tasks[key](function(err, result) { - each(key, err, result); - }); - }); - } else { - tasks.forEach(function(task, i) { - task(function(err, result) { - each(i, err, result); - }); - }); - } - isSync = false; - }; - /*! run-parallel. MIT License. Feross Aboukhadijeh */ - module.exports = runParallel; - var queueMicrotask2 = require_queue_microtask(); -}); - -// node_modules/@nodelib/fs.scandir/out/constants.js -var require_constants3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = undefined; - var NODE_PROCESS_VERSION_PARTS = process.versions.node.split("."); - if (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) { - throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); - } - var MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); - var MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); - var SUPPORTED_MAJOR_VERSION = 10; - var SUPPORTED_MINOR_VERSION = 10; - var IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; - var IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; - exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; -}); - -// node_modules/@nodelib/fs.scandir/out/utils/fs.js -var require_fs4 = __commonJS((exports) => { - var createDirentFromStats = function(name, stats) { - return new DirentFromStats(name, stats); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createDirentFromStats = undefined; - - class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } - } - exports.createDirentFromStats = createDirentFromStats; -}); - -// node_modules/@nodelib/fs.scandir/out/utils/index.js -var require_utils6 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.fs = undefined; - var fs = require_fs4(); - exports.fs = fs; -}); - -// node_modules/@nodelib/fs.scandir/out/providers/common.js -var require_common = __commonJS((exports) => { - var joinPathSegments = function(a, b, separator) { - if (a.endsWith(separator)) { - return a + b; - } - return a + separator + b; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.joinPathSegments = undefined; - exports.joinPathSegments = joinPathSegments; -}); - -// node_modules/@nodelib/fs.scandir/out/providers/async.js -var require_async2 = __commonJS((exports) => { - var read = function(directory, settings, callback) { - if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { - readdirWithFileTypes(directory, settings, callback); - return; - } - readdir(directory, settings, callback); - }; - var readdirWithFileTypes = function(directory, settings, callback) { - settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { - if (readdirError !== null) { - callFailureCallback(callback, readdirError); - return; - } - const entries = dirents.map((dirent) => ({ - dirent, - name: dirent.name, - path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) - })); - if (!settings.followSymbolicLinks) { - callSuccessCallback(callback, entries); - return; - } - const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); - rpl(tasks, (rplError, rplEntries) => { - if (rplError !== null) { - callFailureCallback(callback, rplError); - return; - } - callSuccessCallback(callback, rplEntries); - }); - }); - }; - var makeRplTaskEntry = function(entry, settings) { - return (done) => { - if (!entry.dirent.isSymbolicLink()) { - done(null, entry); - return; - } - settings.fs.stat(entry.path, (statError, stats) => { - if (statError !== null) { - if (settings.throwErrorOnBrokenSymbolicLink) { - done(statError); - return; - } - done(null, entry); - return; - } - entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); - done(null, entry); - }); - }; - }; - var readdir = function(directory, settings, callback) { - settings.fs.readdir(directory, (readdirError, names) => { - if (readdirError !== null) { - callFailureCallback(callback, readdirError); - return; - } - const tasks = names.map((name) => { - const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); - return (done) => { - fsStat.stat(path, settings.fsStatSettings, (error2, stats) => { - if (error2 !== null) { - done(error2); - return; - } - const entry = { - name, - path, - dirent: utils.fs.createDirentFromStats(name, stats) - }; - if (settings.stats) { - entry.stats = stats; - } - done(null, entry); - }); - }; - }); - rpl(tasks, (rplError, entries) => { - if (rplError !== null) { - callFailureCallback(callback, rplError); - return; - } - callSuccessCallback(callback, entries); - }); - }); - }; - var callFailureCallback = function(callback, error2) { - callback(error2); - }; - var callSuccessCallback = function(callback, result) { - callback(null, result); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; - var fsStat = require_out(); - var rpl = require_run_parallel(); - var constants_1 = require_constants3(); - var utils = require_utils6(); - var common = require_common(); - exports.read = read; - exports.readdirWithFileTypes = readdirWithFileTypes; - exports.readdir = readdir; -}); - -// node_modules/@nodelib/fs.scandir/out/providers/sync.js -var require_sync2 = __commonJS((exports) => { - var read = function(directory, settings) { - if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { - return readdirWithFileTypes(directory, settings); - } - return readdir(directory, settings); - }; - var readdirWithFileTypes = function(directory, settings) { - const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); - return dirents.map((dirent) => { - const entry = { - dirent, - name: dirent.name, - path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) - }; - if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { - try { - const stats = settings.fs.statSync(entry.path); - entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); - } catch (error2) { - if (settings.throwErrorOnBrokenSymbolicLink) { - throw error2; - } - } - } - return entry; - }); - }; - var readdir = function(directory, settings) { - const names = settings.fs.readdirSync(directory); - return names.map((name) => { - const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); - const stats = fsStat.statSync(entryPath, settings.fsStatSettings); - const entry = { - name, - path: entryPath, - dirent: utils.fs.createDirentFromStats(name, stats) - }; - if (settings.stats) { - entry.stats = stats; - } - return entry; - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; - var fsStat = require_out(); - var constants_1 = require_constants3(); - var utils = require_utils6(); - var common = require_common(); - exports.read = read; - exports.readdirWithFileTypes = readdirWithFileTypes; - exports.readdir = readdir; -}); - -// node_modules/@nodelib/fs.scandir/out/adapters/fs.js -var require_fs5 = __commonJS((exports) => { - var createFileSystemAdapter = function(fsMethods) { - if (fsMethods === undefined) { - return exports.FILE_SYSTEM_ADAPTER; - } - return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; - var fs = import.meta.require("fs"); - exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync - }; - exports.createFileSystemAdapter = createFileSystemAdapter; -}); - -// node_modules/@nodelib/fs.scandir/out/settings.js -var require_settings2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = import.meta.require("path"); - var fsStat = require_out(); - var fs = require_fs5(); - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); - this.fs = fs.createFileSystemAdapter(this._options.fs); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); - this.stats = this._getValue(this._options.stats, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); - this.fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this.followSymbolicLinks, - fs: this.fs, - throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink - }); - } - _getValue(option, value) { - return option !== null && option !== undefined ? option : value; - } - } - exports.default = Settings; -}); - -// node_modules/@nodelib/fs.scandir/out/index.js -var require_out2 = __commonJS((exports) => { - var scandir = function(path, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === "function") { - async.read(path, getSettings(), optionsOrSettingsOrCallback); - return; - } - async.read(path, getSettings(optionsOrSettingsOrCallback), callback); - }; - var scandirSync = function(path, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - return sync2.read(path, settings); - }; - var getSettings = function(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Settings = exports.scandirSync = exports.scandir = undefined; - var async = require_async2(); - var sync2 = require_sync2(); - var settings_1 = require_settings2(); - exports.Settings = settings_1.default; - exports.scandir = scandir; - exports.scandirSync = scandirSync; -}); - -// node_modules/reusify/reusify.js -var require_reusify = __commonJS((exports, module) => { - var reusify = function(Constructor) { - var head = new Constructor; - var tail = head; - function get() { - var current = head; - if (current.next) { - head = current.next; - } else { - head = new Constructor; - tail = head; - } - current.next = null; - return current; - } - function release(obj) { - tail.next = obj; - tail = obj; - } - return { - get, - release - }; - }; - module.exports = reusify; -}); - -// node_modules/fastq/queue.js -var require_queue = __commonJS((exports, module) => { - var fastqueue = function(context, worker, concurrency) { - if (typeof context === "function") { - concurrency = worker; - worker = context; - context = null; - } - if (concurrency < 1) { - throw new Error("fastqueue concurrency must be greater than 1"); - } - var cache = reusify(Task); - var queueHead = null; - var queueTail = null; - var _running = 0; - var errorHandler = null; - var self = { - push, - drain: noop, - saturated: noop, - pause, - paused: false, - concurrency, - running, - resume, - idle, - length, - getQueue, - unshift, - empty: noop, - kill: kill2, - killAndDrain, - error: error2 - }; - return self; - function running() { - return _running; - } - function pause() { - self.paused = true; - } - function length() { - var current = queueHead; - var counter = 0; - while (current) { - current = current.next; - counter++; - } - return counter; - } - function getQueue() { - var current = queueHead; - var tasks = []; - while (current) { - tasks.push(current.value); - current = current.next; - } - return tasks; - } - function resume() { - if (!self.paused) - return; - self.paused = false; - for (var i = 0;i < self.concurrency; i++) { - _running++; - release(); - } - } - function idle() { - return _running === 0 && self.length() === 0; - } - function push(value, done) { - var current = cache.get(); - current.context = context; - current.release = release; - current.value = value; - current.callback = done || noop; - current.errorHandler = errorHandler; - if (_running === self.concurrency || self.paused) { - if (queueTail) { - queueTail.next = current; - queueTail = current; - } else { - queueHead = current; - queueTail = current; - self.saturated(); - } - } else { - _running++; - worker.call(context, current.value, current.worked); - } - } - function unshift(value, done) { - var current = cache.get(); - current.context = context; - current.release = release; - current.value = value; - current.callback = done || noop; - if (_running === self.concurrency || self.paused) { - if (queueHead) { - current.next = queueHead; - queueHead = current; - } else { - queueHead = current; - queueTail = current; - self.saturated(); - } - } else { - _running++; - worker.call(context, current.value, current.worked); - } - } - function release(holder) { - if (holder) { - cache.release(holder); - } - var next = queueHead; - if (next) { - if (!self.paused) { - if (queueTail === queueHead) { - queueTail = null; - } - queueHead = next.next; - next.next = null; - worker.call(context, next.value, next.worked); - if (queueTail === null) { - self.empty(); - } - } else { - _running--; - } - } else if (--_running === 0) { - self.drain(); - } - } - function kill2() { - queueHead = null; - queueTail = null; - self.drain = noop; - } - function killAndDrain() { - queueHead = null; - queueTail = null; - self.drain(); - self.drain = noop; - } - function error2(handler) { - errorHandler = handler; - } - }; - var noop = function() { - }; - var Task = function() { - this.value = null; - this.callback = noop; - this.next = null; - this.release = noop; - this.context = null; - this.errorHandler = null; - var self = this; - this.worked = function worked(err, result) { - var callback = self.callback; - var errorHandler = self.errorHandler; - var val = self.value; - self.value = null; - self.callback = noop; - if (self.errorHandler) { - errorHandler(err, val); - } - callback.call(self.context, err, result); - self.release(self); - }; - }; - var queueAsPromised = function(context, worker, concurrency) { - if (typeof context === "function") { - concurrency = worker; - worker = context; - context = null; - } - function asyncWrapper(arg, cb) { - worker.call(this, arg).then(function(res) { - cb(null, res); - }, cb); - } - var queue = fastqueue(context, asyncWrapper, concurrency); - var pushCb = queue.push; - var unshiftCb = queue.unshift; - queue.push = push; - queue.unshift = unshift; - queue.drained = drained; - return queue; - function push(value) { - var p = new Promise(function(resolve5, reject) { - pushCb(value, function(err, result) { - if (err) { - reject(err); - return; - } - resolve5(result); - }); - }); - p.catch(noop); - return p; - } - function unshift(value) { - var p = new Promise(function(resolve5, reject) { - unshiftCb(value, function(err, result) { - if (err) { - reject(err); - return; - } - resolve5(result); - }); - }); - p.catch(noop); - return p; - } - function drained() { - if (queue.idle()) { - return new Promise(function(resolve5) { - resolve5(); - }); - } - var previousDrain = queue.drain; - var p = new Promise(function(resolve5) { - queue.drain = function() { - previousDrain(); - resolve5(); - }; - }); - return p; - } - }; - var reusify = require_reusify(); - module.exports = fastqueue; - module.exports.promise = queueAsPromised; -}); - -// node_modules/@nodelib/fs.walk/out/readers/common.js -var require_common2 = __commonJS((exports) => { - var isFatalError = function(settings, error2) { - if (settings.errorFilter === null) { - return true; - } - return !settings.errorFilter(error2); - }; - var isAppliedFilter = function(filter, value) { - return filter === null || filter(value); - }; - var replacePathSegmentSeparator = function(filepath, separator) { - return filepath.split(/[/\\]/).join(separator); - }; - var joinPathSegments = function(a, b, separator) { - if (a === "") { - return b; - } - if (a.endsWith(separator)) { - return a + b; - } - return a + separator + b; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = undefined; - exports.isFatalError = isFatalError; - exports.isAppliedFilter = isAppliedFilter; - exports.replacePathSegmentSeparator = replacePathSegmentSeparator; - exports.joinPathSegments = joinPathSegments; -}); - -// node_modules/@nodelib/fs.walk/out/readers/reader.js -var require_reader = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var common = require_common2(); - - class Reader { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); - } - } - exports.default = Reader; -}); - -// node_modules/@nodelib/fs.walk/out/readers/async.js -var require_async3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var events_1 = import.meta.require("events"); - var fsScandir = require_out2(); - var fastq = require_queue(); - var common = require_common2(); - var reader_1 = require_reader(); - - class AsyncReader extends reader_1.default { - constructor(_root, _settings) { - super(_root, _settings); - this._settings = _settings; - this._scandir = fsScandir.scandir; - this._emitter = new events_1.EventEmitter; - this._queue = fastq(this._worker.bind(this), this._settings.concurrency); - this._isFatalError = false; - this._isDestroyed = false; - this._queue.drain = () => { - if (!this._isFatalError) { - this._emitter.emit("end"); - } - }; - } - read() { - this._isFatalError = false; - this._isDestroyed = false; - setImmediate(() => { - this._pushToQueue(this._root, this._settings.basePath); - }); - return this._emitter; - } - get isDestroyed() { - return this._isDestroyed; - } - destroy() { - if (this._isDestroyed) { - throw new Error("The reader is already destroyed"); - } - this._isDestroyed = true; - this._queue.killAndDrain(); - } - onEntry(callback) { - this._emitter.on("entry", callback); - } - onError(callback) { - this._emitter.once("error", callback); - } - onEnd(callback) { - this._emitter.once("end", callback); - } - _pushToQueue(directory, base) { - const queueItem = { directory, base }; - this._queue.push(queueItem, (error2) => { - if (error2 !== null) { - this._handleError(error2); - } - }); - } - _worker(item, done) { - this._scandir(item.directory, this._settings.fsScandirSettings, (error2, entries) => { - if (error2 !== null) { - done(error2, undefined); - return; - } - for (const entry of entries) { - this._handleEntry(entry, item.base); - } - done(null, undefined); - }); - } - _handleError(error2) { - if (this._isDestroyed || !common.isFatalError(this._settings, error2)) { - return; - } - this._isFatalError = true; - this._isDestroyed = true; - this._emitter.emit("error", error2); - } - _handleEntry(entry, base) { - if (this._isDestroyed || this._isFatalError) { - return; - } - const fullpath = entry.path; - if (base !== undefined) { - entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); - } - if (common.isAppliedFilter(this._settings.entryFilter, entry)) { - this._emitEntry(entry); - } - if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { - this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); - } - } - _emitEntry(entry) { - this._emitter.emit("entry", entry); - } - } - exports.default = AsyncReader; -}); - -// node_modules/@nodelib/fs.walk/out/providers/async.js -var require_async4 = __commonJS((exports) => { - var callFailureCallback = function(callback, error2) { - callback(error2); - }; - var callSuccessCallback = function(callback, entries) { - callback(null, entries); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - var async_1 = require_async3(); - - class AsyncProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new async_1.default(this._root, this._settings); - this._storage = []; - } - read(callback) { - this._reader.onError((error2) => { - callFailureCallback(callback, error2); - }); - this._reader.onEntry((entry) => { - this._storage.push(entry); - }); - this._reader.onEnd(() => { - callSuccessCallback(callback, this._storage); - }); - this._reader.read(); - } - } - exports.default = AsyncProvider; -}); - -// node_modules/@nodelib/fs.walk/out/providers/stream.js -var require_stream2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var stream_1 = import.meta.require("stream"); - var async_1 = require_async3(); - - class StreamProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new async_1.default(this._root, this._settings); - this._stream = new stream_1.Readable({ - objectMode: true, - read: () => { - }, - destroy: () => { - if (!this._reader.isDestroyed) { - this._reader.destroy(); - } - } - }); - } - read() { - this._reader.onError((error2) => { - this._stream.emit("error", error2); - }); - this._reader.onEntry((entry) => { - this._stream.push(entry); - }); - this._reader.onEnd(() => { - this._stream.push(null); - }); - this._reader.read(); - return this._stream; - } - } - exports.default = StreamProvider; -}); - -// node_modules/@nodelib/fs.walk/out/readers/sync.js -var require_sync3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fsScandir = require_out2(); - var common = require_common2(); - var reader_1 = require_reader(); - - class SyncReader extends reader_1.default { - constructor() { - super(...arguments); - this._scandir = fsScandir.scandirSync; - this._storage = []; - this._queue = new Set; - } - read() { - this._pushToQueue(this._root, this._settings.basePath); - this._handleQueue(); - return this._storage; - } - _pushToQueue(directory, base) { - this._queue.add({ directory, base }); - } - _handleQueue() { - for (const item of this._queue.values()) { - this._handleDirectory(item.directory, item.base); - } - } - _handleDirectory(directory, base) { - try { - const entries = this._scandir(directory, this._settings.fsScandirSettings); - for (const entry of entries) { - this._handleEntry(entry, base); - } - } catch (error2) { - this._handleError(error2); - } - } - _handleError(error2) { - if (!common.isFatalError(this._settings, error2)) { - return; - } - throw error2; - } - _handleEntry(entry, base) { - const fullpath = entry.path; - if (base !== undefined) { - entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); - } - if (common.isAppliedFilter(this._settings.entryFilter, entry)) { - this._pushToStorage(entry); - } - if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { - this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); - } - } - _pushToStorage(entry) { - this._storage.push(entry); - } - } - exports.default = SyncReader; -}); - -// node_modules/@nodelib/fs.walk/out/providers/sync.js -var require_sync4 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var sync_1 = require_sync3(); - - class SyncProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new sync_1.default(this._root, this._settings); - } - read() { - return this._reader.read(); - } - } - exports.default = SyncProvider; -}); - -// node_modules/@nodelib/fs.walk/out/settings.js -var require_settings3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = import.meta.require("path"); - var fsScandir = require_out2(); - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.basePath = this._getValue(this._options.basePath, undefined); - this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); - this.deepFilter = this._getValue(this._options.deepFilter, null); - this.entryFilter = this._getValue(this._options.entryFilter, null); - this.errorFilter = this._getValue(this._options.errorFilter, null); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); - this.fsScandirSettings = new fsScandir.Settings({ - followSymbolicLinks: this._options.followSymbolicLinks, - fs: this._options.fs, - pathSegmentSeparator: this._options.pathSegmentSeparator, - stats: this._options.stats, - throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink - }); - } - _getValue(option, value) { - return option !== null && option !== undefined ? option : value; - } - } - exports.default = Settings; -}); - -// node_modules/@nodelib/fs.walk/out/index.js -var require_out3 = __commonJS((exports) => { - var walk = function(directory, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === "function") { - new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); - return; - } - new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); - }; - var walkSync = function(directory, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - const provider = new sync_1.default(directory, settings); - return provider.read(); - }; - var walkStream = function(directory, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - const provider = new stream_1.default(directory, settings); - return provider.read(); - }; - var getSettings = function(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Settings = exports.walkStream = exports.walkSync = exports.walk = undefined; - var async_1 = require_async4(); - var stream_1 = require_stream2(); - var sync_1 = require_sync4(); - var settings_1 = require_settings3(); - exports.Settings = settings_1.default; - exports.walk = walk; - exports.walkSync = walkSync; - exports.walkStream = walkStream; -}); - -// node_modules/fast-glob/out/readers/reader.js -var require_reader2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = import.meta.require("path"); - var fsStat = require_out(); - var utils = require_utils5(); - - class Reader { - constructor(_settings) { - this._settings = _settings; - this._fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this._settings.followSymbolicLinks, - fs: this._settings.fs, - throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks - }); - } - _getFullEntryPath(filepath) { - return path.resolve(this._settings.cwd, filepath); - } - _makeEntry(stats, pattern) { - const entry = { - name: pattern, - path: pattern, - dirent: utils.fs.createDirentFromStats(pattern, stats) - }; - if (this._settings.stats) { - entry.stats = stats; - } - return entry; - } - _isFatalError(error2) { - return !utils.errno.isEnoentCodeError(error2) && !this._settings.suppressErrors; - } - } - exports.default = Reader; -}); - -// node_modules/fast-glob/out/readers/stream.js -var require_stream3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var stream_1 = import.meta.require("stream"); - var fsStat = require_out(); - var fsWalk = require_out3(); - var reader_1 = require_reader2(); - - class ReaderStream extends reader_1.default { - constructor() { - super(...arguments); - this._walkStream = fsWalk.walkStream; - this._stat = fsStat.stat; - } - dynamic(root, options) { - return this._walkStream(root, options); - } - static(patterns, options) { - const filepaths = patterns.map(this._getFullEntryPath, this); - const stream = new stream_1.PassThrough({ objectMode: true }); - stream._write = (index, _enc, done) => { - return this._getEntry(filepaths[index], patterns[index], options).then((entry) => { - if (entry !== null && options.entryFilter(entry)) { - stream.push(entry); - } - if (index === filepaths.length - 1) { - stream.end(); - } - done(); - }).catch(done); - }; - for (let i = 0;i < filepaths.length; i++) { - stream.write(i); - } - return stream; - } - _getEntry(filepath, pattern, options) { - return this._getStat(filepath).then((stats) => this._makeEntry(stats, pattern)).catch((error2) => { - if (options.errorFilter(error2)) { - return null; - } - throw error2; - }); - } - _getStat(filepath) { - return new Promise((resolve5, reject) => { - this._stat(filepath, this._fsStatSettings, (error2, stats) => { - return error2 === null ? resolve5(stats) : reject(error2); - }); - }); - } - } - exports.default = ReaderStream; -}); - -// node_modules/fast-glob/out/readers/async.js -var require_async5 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fsWalk = require_out3(); - var reader_1 = require_reader2(); - var stream_1 = require_stream3(); - - class ReaderAsync extends reader_1.default { - constructor() { - super(...arguments); - this._walkAsync = fsWalk.walk; - this._readerStream = new stream_1.default(this._settings); - } - dynamic(root, options) { - return new Promise((resolve5, reject) => { - this._walkAsync(root, options, (error2, entries) => { - if (error2 === null) { - resolve5(entries); - } else { - reject(error2); - } - }); - }); - } - async static(patterns, options) { - const entries = []; - const stream = this._readerStream.static(patterns, options); - return new Promise((resolve5, reject) => { - stream.once("error", reject); - stream.on("data", (entry) => entries.push(entry)); - stream.once("end", () => resolve5(entries)); - }); - } - } - exports.default = ReaderAsync; -}); - -// node_modules/fast-glob/out/providers/matchers/matcher.js -var require_matcher = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class Matcher { - constructor(_patterns, _settings, _micromatchOptions) { - this._patterns = _patterns; - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this._storage = []; - this._fillStorage(); - } - _fillStorage() { - for (const pattern of this._patterns) { - const segments = this._getPatternSegments(pattern); - const sections = this._splitSegmentsIntoSections(segments); - this._storage.push({ - complete: sections.length <= 1, - pattern, - segments, - sections - }); - } - } - _getPatternSegments(pattern) { - const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); - return parts.map((part) => { - const dynamic = utils.pattern.isDynamicPattern(part, this._settings); - if (!dynamic) { - return { - dynamic: false, - pattern: part - }; - } - return { - dynamic: true, - pattern: part, - patternRe: utils.pattern.makeRe(part, this._micromatchOptions) - }; - }); - } - _splitSegmentsIntoSections(segments) { - return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); - } - } - exports.default = Matcher; -}); - -// node_modules/fast-glob/out/providers/matchers/partial.js -var require_partial = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var matcher_1 = require_matcher(); - - class PartialMatcher extends matcher_1.default { - match(filepath) { - const parts = filepath.split("/"); - const levels = parts.length; - const patterns = this._storage.filter((info2) => !info2.complete || info2.segments.length > levels); - for (const pattern of patterns) { - const section = pattern.sections[0]; - if (!pattern.complete && levels > section.length) { - return true; - } - const match = parts.every((part, index) => { - const segment = pattern.segments[index]; - if (segment.dynamic && segment.patternRe.test(part)) { - return true; - } - if (!segment.dynamic && segment.pattern === part) { - return true; - } - return false; - }); - if (match) { - return true; - } - } - return false; - } - } - exports.default = PartialMatcher; -}); - -// node_modules/fast-glob/out/providers/filters/deep.js -var require_deep = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - var partial_1 = require_partial(); - - class DeepFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - } - getFilter(basePath, positive, negative) { - const matcher = this._getMatcher(positive); - const negativeRe = this._getNegativePatternsRe(negative); - return (entry) => this._filter(basePath, entry, matcher, negativeRe); - } - _getMatcher(patterns) { - return new partial_1.default(patterns, this._settings, this._micromatchOptions); - } - _getNegativePatternsRe(patterns) { - const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); - return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); - } - _filter(basePath, entry, matcher, negativeRe) { - if (this._isSkippedByDeep(basePath, entry.path)) { - return false; - } - if (this._isSkippedSymbolicLink(entry)) { - return false; - } - const filepath = utils.path.removeLeadingDotSegment(entry.path); - if (this._isSkippedByPositivePatterns(filepath, matcher)) { - return false; - } - return this._isSkippedByNegativePatterns(filepath, negativeRe); - } - _isSkippedByDeep(basePath, entryPath) { - if (this._settings.deep === Infinity) { - return false; - } - return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; - } - _getEntryLevel(basePath, entryPath) { - const entryPathDepth = entryPath.split("/").length; - if (basePath === "") { - return entryPathDepth; - } - const basePathDepth = basePath.split("/").length; - return entryPathDepth - basePathDepth; - } - _isSkippedSymbolicLink(entry) { - return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); - } - _isSkippedByPositivePatterns(entryPath, matcher) { - return !this._settings.baseNameMatch && !matcher.match(entryPath); - } - _isSkippedByNegativePatterns(entryPath, patternsRe) { - return !utils.pattern.matchAny(entryPath, patternsRe); - } - } - exports.default = DeepFilter; -}); - -// node_modules/fast-glob/out/providers/filters/entry.js -var require_entry = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class EntryFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this.index = new Map; - } - getFilter(positive, negative) { - const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); - const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })); - return (entry) => this._filter(entry, positiveRe, negativeRe); - } - _filter(entry, positiveRe, negativeRe) { - const filepath = utils.path.removeLeadingDotSegment(entry.path); - if (this._settings.unique && this._isDuplicateEntry(filepath)) { - return false; - } - if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { - return false; - } - if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) { - return false; - } - const isDirectory = entry.dirent.isDirectory(); - const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory); - if (this._settings.unique && isMatched) { - this._createIndexRecord(filepath); - } - return isMatched; - } - _isDuplicateEntry(filepath) { - return this.index.has(filepath); - } - _createIndexRecord(filepath) { - this.index.set(filepath, undefined); - } - _onlyFileFilter(entry) { - return this._settings.onlyFiles && !entry.dirent.isFile(); - } - _onlyDirectoryFilter(entry) { - return this._settings.onlyDirectories && !entry.dirent.isDirectory(); - } - _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { - if (!this._settings.absolute) { - return false; - } - const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); - return utils.pattern.matchAny(fullpath, patternsRe); - } - _isMatchToPatterns(filepath, patternsRe, isDirectory) { - const isMatched = utils.pattern.matchAny(filepath, patternsRe); - if (!isMatched && isDirectory) { - return utils.pattern.matchAny(filepath + "/", patternsRe); - } - return isMatched; - } - } - exports.default = EntryFilter; -}); - -// node_modules/fast-glob/out/providers/filters/error.js -var require_error = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class ErrorFilter { - constructor(_settings) { - this._settings = _settings; - } - getFilter() { - return (error2) => this._isNonFatalError(error2); - } - _isNonFatalError(error2) { - return utils.errno.isEnoentCodeError(error2) || this._settings.suppressErrors; - } - } - exports.default = ErrorFilter; -}); - -// node_modules/fast-glob/out/providers/transformers/entry.js -var require_entry2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class EntryTransformer { - constructor(_settings) { - this._settings = _settings; - } - getTransformer() { - return (entry) => this._transform(entry); - } - _transform(entry) { - let filepath = entry.path; - if (this._settings.absolute) { - filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); - filepath = utils.path.unixify(filepath); - } - if (this._settings.markDirectories && entry.dirent.isDirectory()) { - filepath += "/"; - } - if (!this._settings.objectMode) { - return filepath; - } - return Object.assign(Object.assign({}, entry), { path: filepath }); - } - } - exports.default = EntryTransformer; -}); - -// node_modules/fast-glob/out/providers/provider.js -var require_provider = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = import.meta.require("path"); - var deep_1 = require_deep(); - var entry_1 = require_entry(); - var error_1 = require_error(); - var entry_2 = require_entry2(); - - class Provider { - constructor(_settings) { - this._settings = _settings; - this.errorFilter = new error_1.default(this._settings); - this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); - this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); - this.entryTransformer = new entry_2.default(this._settings); - } - _getRootDirectory(task) { - return path.resolve(this._settings.cwd, task.base); - } - _getReaderOptions(task) { - const basePath = task.base === "." ? "" : task.base; - return { - basePath, - pathSegmentSeparator: "/", - concurrency: this._settings.concurrency, - deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), - entryFilter: this.entryFilter.getFilter(task.positive, task.negative), - errorFilter: this.errorFilter.getFilter(), - followSymbolicLinks: this._settings.followSymbolicLinks, - fs: this._settings.fs, - stats: this._settings.stats, - throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, - transform: this.entryTransformer.getTransformer() - }; - } - _getMicromatchOptions() { - return { - dot: this._settings.dot, - matchBase: this._settings.baseNameMatch, - nobrace: !this._settings.braceExpansion, - nocase: !this._settings.caseSensitiveMatch, - noext: !this._settings.extglob, - noglobstar: !this._settings.globstar, - posix: true, - strictSlashes: false - }; - } - } - exports.default = Provider; -}); - -// node_modules/fast-glob/out/providers/async.js -var require_async6 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var async_1 = require_async5(); - var provider_1 = require_provider(); - - class ProviderAsync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new async_1.default(this._settings); - } - async read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = await this.api(root, task, options); - return entries.map((entry) => options.transform(entry)); - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } - } - exports.default = ProviderAsync; -}); - -// node_modules/fast-glob/out/providers/stream.js -var require_stream4 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var stream_1 = import.meta.require("stream"); - var stream_2 = require_stream3(); - var provider_1 = require_provider(); - - class ProviderStream extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new stream_2.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const source = this.api(root, task, options); - const destination = new stream_1.Readable({ objectMode: true, read: () => { - } }); - source.once("error", (error2) => destination.emit("error", error2)).on("data", (entry) => destination.emit("data", options.transform(entry))).once("end", () => destination.emit("end")); - destination.once("close", () => source.destroy()); - return destination; - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } - } - exports.default = ProviderStream; -}); - -// node_modules/fast-glob/out/readers/sync.js -var require_sync5 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fsStat = require_out(); - var fsWalk = require_out3(); - var reader_1 = require_reader2(); - - class ReaderSync extends reader_1.default { - constructor() { - super(...arguments); - this._walkSync = fsWalk.walkSync; - this._statSync = fsStat.statSync; - } - dynamic(root, options) { - return this._walkSync(root, options); - } - static(patterns, options) { - const entries = []; - for (const pattern of patterns) { - const filepath = this._getFullEntryPath(pattern); - const entry = this._getEntry(filepath, pattern, options); - if (entry === null || !options.entryFilter(entry)) { - continue; - } - entries.push(entry); - } - return entries; - } - _getEntry(filepath, pattern, options) { - try { - const stats = this._getStat(filepath); - return this._makeEntry(stats, pattern); - } catch (error2) { - if (options.errorFilter(error2)) { - return null; - } - throw error2; - } - } - _getStat(filepath) { - return this._statSync(filepath, this._fsStatSettings); - } - } - exports.default = ReaderSync; -}); - -// node_modules/fast-glob/out/providers/sync.js -var require_sync6 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var sync_1 = require_sync5(); - var provider_1 = require_provider(); - - class ProviderSync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new sync_1.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = this.api(root, task, options); - return entries.map(options.transform); - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } - } - exports.default = ProviderSync; -}); - -// node_modules/fast-glob/out/settings.js -var require_settings4 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.DEFAULT_FILE_SYSTEM_ADAPTER = undefined; - var fs = import.meta.require("fs"); - var os = import.meta.require("os"); - var CPU_COUNT = Math.max(os.cpus().length, 1); - exports.DEFAULT_FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - lstatSync: fs.lstatSync, - stat: fs.stat, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync - }; - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.absolute = this._getValue(this._options.absolute, false); - this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); - this.braceExpansion = this._getValue(this._options.braceExpansion, true); - this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); - this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); - this.cwd = this._getValue(this._options.cwd, process.cwd()); - this.deep = this._getValue(this._options.deep, Infinity); - this.dot = this._getValue(this._options.dot, false); - this.extglob = this._getValue(this._options.extglob, true); - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); - this.fs = this._getFileSystemMethods(this._options.fs); - this.globstar = this._getValue(this._options.globstar, true); - this.ignore = this._getValue(this._options.ignore, []); - this.markDirectories = this._getValue(this._options.markDirectories, false); - this.objectMode = this._getValue(this._options.objectMode, false); - this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); - this.onlyFiles = this._getValue(this._options.onlyFiles, true); - this.stats = this._getValue(this._options.stats, false); - this.suppressErrors = this._getValue(this._options.suppressErrors, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); - this.unique = this._getValue(this._options.unique, true); - if (this.onlyDirectories) { - this.onlyFiles = false; - } - if (this.stats) { - this.objectMode = true; - } - this.ignore = [].concat(this.ignore); - } - _getValue(option, value) { - return option === undefined ? value : option; - } - _getFileSystemMethods(methods = {}) { - return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); - } - } - exports.default = Settings; -}); - -// node_modules/fast-glob/out/index.js -var require_out4 = __commonJS((exports, module) => { - async function FastGlob(source, options) { - assertPatternsInput(source); - const works = getWorks(source, async_1.default, options); - const result = await Promise.all(works); - return utils.array.flatten(result); - } - var getWorks = function(source, _Provider, options) { - const patterns = [].concat(source); - const settings = new settings_1.default(options); - const tasks = taskManager.generate(patterns, settings); - const provider = new _Provider(settings); - return tasks.map(provider.read, provider); - }; - var assertPatternsInput = function(input) { - const source = [].concat(input); - const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); - if (!isValidSource) { - throw new TypeError("Patterns must be a string (non empty) or an array of strings"); - } - }; - var taskManager = require_tasks(); - var async_1 = require_async6(); - var stream_1 = require_stream4(); - var sync_1 = require_sync6(); - var settings_1 = require_settings4(); - var utils = require_utils5(); - (function(FastGlob2) { - FastGlob2.glob = FastGlob2; - FastGlob2.globSync = sync2; - FastGlob2.globStream = stream; - FastGlob2.async = FastGlob2; - function sync2(source, options) { - assertPatternsInput(source); - const works = getWorks(source, sync_1.default, options); - return utils.array.flatten(works); - } - FastGlob2.sync = sync2; - function stream(source, options) { - assertPatternsInput(source); - const works = getWorks(source, stream_1.default, options); - return utils.stream.merge(works); - } - FastGlob2.stream = stream; - function generateTasks(source, options) { - assertPatternsInput(source); - const patterns = [].concat(source); - const settings = new settings_1.default(options); - return taskManager.generate(patterns, settings); - } - FastGlob2.generateTasks = generateTasks; - function isDynamicPattern(source, options) { - assertPatternsInput(source); - const settings = new settings_1.default(options); - return utils.pattern.isDynamicPattern(source, settings); - } - FastGlob2.isDynamicPattern = isDynamicPattern; - function escapePath(source) { - assertPatternsInput(source); - return utils.path.escape(source); - } - FastGlob2.escapePath = escapePath; - function convertPathToPattern(source) { - assertPatternsInput(source); - return utils.path.convertPathToPattern(source); - } - FastGlob2.convertPathToPattern = convertPathToPattern; - let posix; - (function(posix2) { - function escapePath2(source) { - assertPatternsInput(source); - return utils.path.escapePosixPath(source); - } - posix2.escapePath = escapePath2; - function convertPathToPattern2(source) { - assertPatternsInput(source); - return utils.path.convertPosixPathToPattern(source); - } - posix2.convertPathToPattern = convertPathToPattern2; - })(posix = FastGlob2.posix || (FastGlob2.posix = {})); - let win32; - (function(win322) { - function escapePath2(source) { - assertPatternsInput(source); - return utils.path.escapeWindowsPath(source); - } - win322.escapePath = escapePath2; - function convertPathToPattern2(source) { - assertPatternsInput(source); - return utils.path.convertWindowsPathToPattern(source); - } - win322.convertPathToPattern = convertPathToPattern2; - })(win32 = FastGlob2.win32 || (FastGlob2.win32 = {})); - })(FastGlob || (FastGlob = {})); - module.exports = FastGlob; -}); - -// node_modules/fs.realpath/old.js -var require_old = __commonJS((exports) => { - var rethrow = function() { - var callback; - if (DEBUG) { - var backtrace = new Error; - callback = debugCallback; - } else - callback = missingCallback; - return callback; - function debugCallback(err) { - if (err) { - backtrace.message = err.message; - err = backtrace; - missingCallback(err); - } - } - function missingCallback(err) { - if (err) { - if (process.throwDeprecation) - throw err; - else if (!process.noDeprecation) { - var msg = "fs: missing callback " + (err.stack || err.message); - if (process.traceDeprecation) - console.trace(msg); - else - console.error(msg); - } - } - } - }; - var maybeCallback = function(cb) { - return typeof cb === "function" ? cb : rethrow(); - }; - var pathModule = import.meta.require("path"); - var isWindows = process.platform === "win32"; - var fs = import.meta.require("fs"); - var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); - var normalize2 = pathModule.normalize; - if (isWindows) { - nextPartRe = /(.*?)(?:[\/\\]+|$)/g; - } else { - nextPartRe = /(.*?)(?:[\/]+|$)/g; - } - var nextPartRe; - if (isWindows) { - splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; - } else { - splitRootRe = /^[\/]*/; - } - var splitRootRe; - exports.realpathSync = function realpathSync(p, cache) { - p = pathModule.resolve(p); - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return cache[p]; - } - var original = p, seenLinks = {}, knownHard = {}; - var pos; - var current; - var base; - var previous; - start(); - function start() { - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ""; - if (isWindows && !knownHard[base]) { - fs.lstatSync(base); - knownHard[base] = true; - } - } - while (pos < p.length) { - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - if (knownHard[base] || cache && cache[base] === base) { - continue; - } - var resolvedLink; - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - resolvedLink = cache[base]; - } else { - var stat = fs.lstatSync(base); - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) - cache[base] = base; - continue; - } - var linkTarget = null; - if (!isWindows) { - var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - linkTarget = seenLinks[id]; - } - } - if (linkTarget === null) { - fs.statSync(base); - linkTarget = fs.readlinkSync(base); - } - resolvedLink = pathModule.resolve(previous, linkTarget); - if (cache) - cache[base] = resolvedLink; - if (!isWindows) - seenLinks[id] = linkTarget; - } - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } - if (cache) - cache[original] = p; - return p; - }; - exports.realpath = function realpath(p, cache, cb) { - if (typeof cb !== "function") { - cb = maybeCallback(cache); - cache = null; - } - p = pathModule.resolve(p); - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return process.nextTick(cb.bind(null, null, cache[p])); - } - var original = p, seenLinks = {}, knownHard = {}; - var pos; - var current; - var base; - var previous; - start(); - function start() { - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ""; - if (isWindows && !knownHard[base]) { - fs.lstat(base, function(err) { - if (err) - return cb(err); - knownHard[base] = true; - LOOP(); - }); - } else { - process.nextTick(LOOP); - } - } - function LOOP() { - if (pos >= p.length) { - if (cache) - cache[original] = p; - return cb(null, p); - } - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - if (knownHard[base] || cache && cache[base] === base) { - return process.nextTick(LOOP); - } - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - return gotResolvedLink(cache[base]); - } - return fs.lstat(base, gotStat); - } - function gotStat(err, stat) { - if (err) - return cb(err); - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) - cache[base] = base; - return process.nextTick(LOOP); - } - if (!isWindows) { - var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - return gotTarget(null, seenLinks[id], base); - } - } - fs.stat(base, function(err2) { - if (err2) - return cb(err2); - fs.readlink(base, function(err3, target) { - if (!isWindows) - seenLinks[id] = target; - gotTarget(err3, target); - }); - }); - } - function gotTarget(err, target, base2) { - if (err) - return cb(err); - var resolvedLink = pathModule.resolve(previous, target); - if (cache) - cache[base2] = resolvedLink; - gotResolvedLink(resolvedLink); - } - function gotResolvedLink(resolvedLink) { - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } - }; -}); - -// node_modules/fs.realpath/index.js -var require_fs6 = __commonJS((exports, module) => { - var newError = function(er) { - return er && er.syscall === "realpath" && (er.code === "ELOOP" || er.code === "ENOMEM" || er.code === "ENAMETOOLONG"); - }; - var realpath = function(p, cache, cb) { - if (ok) { - return origRealpath(p, cache, cb); - } - if (typeof cache === "function") { - cb = cache; - cache = null; - } - origRealpath(p, cache, function(er, result) { - if (newError(er)) { - old.realpath(p, cache, cb); - } else { - cb(er, result); - } - }); - }; - var realpathSync = function(p, cache) { - if (ok) { - return origRealpathSync(p, cache); - } - try { - return origRealpathSync(p, cache); - } catch (er) { - if (newError(er)) { - return old.realpathSync(p, cache); - } else { - throw er; - } - } - }; - var monkeypatch = function() { - fs.realpath = realpath; - fs.realpathSync = realpathSync; - }; - var unmonkeypatch = function() { - fs.realpath = origRealpath; - fs.realpathSync = origRealpathSync; - }; - module.exports = realpath; - realpath.realpath = realpath; - realpath.sync = realpathSync; - realpath.realpathSync = realpathSync; - realpath.monkeypatch = monkeypatch; - realpath.unmonkeypatch = unmonkeypatch; - var fs = import.meta.require("fs"); - var origRealpath = fs.realpath; - var origRealpathSync = fs.realpathSync; - var version = process.version; - var ok = /^v[0-5]\./.test(version); - var old = require_old(); -}); - -// node_modules/concat-map/index.js -var require_concat_map = __commonJS((exports, module) => { - module.exports = function(xs, fn) { - var res = []; - for (var i = 0;i < xs.length; i++) { - var x = fn(xs[i], i); - if (isArray(x)) - res.push.apply(res, x); - else - res.push(x); - } - return res; - }; - var isArray = Array.isArray || function(xs) { - return Object.prototype.toString.call(xs) === "[object Array]"; - }; -}); - -// node_modules/balanced-match/index.js -var require_balanced_match = __commonJS((exports, module) => { - var balanced = function(a, b, str) { - if (a instanceof RegExp) - a = maybeMatch(a, str); - if (b instanceof RegExp) - b = maybeMatch(b, str); - var r = range(a, b, str); - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) - }; - }; - var maybeMatch = function(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; - }; - var range = function(a, b, str) { - var begs, beg, left2, right2, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; - if (ai >= 0 && bi > 0) { - if (a === b) { - return [ai, bi]; - } - begs = []; - left2 = str.length; - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); - } else if (begs.length == 1) { - result = [begs.pop(), bi]; - } else { - beg = begs.pop(); - if (beg < left2) { - left2 = beg; - right2 = bi; - } - bi = str.indexOf(b, i + 1); - } - i = ai < bi && ai >= 0 ? ai : bi; - } - if (begs.length) { - result = [left2, right2]; - } - } - return result; - }; - module.exports = balanced; - balanced.range = range; -}); - -// node_modules/minimatch/node_modules/brace-expansion/index.js -var require_brace_expansion = __commonJS((exports, module) => { - var numeric = function(str) { - return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); - }; - var escapeBraces = function(str) { - return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); - }; - var unescapeBraces = function(str) { - return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); - }; - var parseCommaParts = function(str) { - if (!str) - return [""]; - var parts = []; - var m = balanced("{", "}", str); - if (!m) - return str.split(","); - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(","); - p[p.length - 1] += "{" + body + "}"; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length - 1] += postParts.shift(); - p.push.apply(p, postParts); - } - parts.push.apply(parts, p); - return parts; - }; - var expandTop = function(str) { - if (!str) - return []; - if (str.substr(0, 2) === "{}") { - str = "\\{\\}" + str.substr(2); - } - return expand(escapeBraces(str), true).map(unescapeBraces); - }; - var embrace = function(str) { - return "{" + str + "}"; - }; - var isPadded = function(el) { - return /^-?0\d/.test(el); - }; - var lte = function(i, y) { - return i <= y; - }; - var gte = function(i, y) { - return i >= y; - }; - var expand = function(str, isTop) { - var expansions = []; - var m = balanced("{", "}", str); - if (!m || /\$$/.test(m.pre)) - return [str]; - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(",") >= 0; - if (!isSequence && !isOptions) { - if (m.post.match(/,.*\}/)) { - str = m.pre + "{" + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - n = expand(n[0], false).map(embrace); - if (n.length === 1) { - var post = m.post.length ? expand(m.post, false) : [""]; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - var pre = m.pre; - var post = m.post.length ? expand(m.post, false) : [""]; - var N; - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length); - var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - N = []; - for (var i = x;test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === "\\") - c = ""; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join("0"); - if (i < 0) - c = "-" + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { - return expand(el, false); - }); - } - for (var j = 0;j < N.length; j++) { - for (var k = 0;k < post.length; k++) { - var expansion = pre + N[j] + post[k]; - if (!isTop || isSequence || expansion) - expansions.push(expansion); - } - } - return expansions; - }; - var concatMap = require_concat_map(); - var balanced = require_balanced_match(); - module.exports = expandTop; - var escSlash = "\0SLASH" + Math.random() + "\0"; - var escOpen = "\0OPEN" + Math.random() + "\0"; - var escClose = "\0CLOSE" + Math.random() + "\0"; - var escComma = "\0COMMA" + Math.random() + "\0"; - var escPeriod = "\0PERIOD" + Math.random() + "\0"; -}); - -// node_modules/minimatch/minimatch.js -var require_minimatch = __commonJS((exports, module) => { - var charSet = function(s) { - return s.split("").reduce(function(set, c) { - set[c] = true; - return set; - }, {}); - }; - var filter = function(pattern, options) { - options = options || {}; - return function(p, i, list) { - return minimatch(p, pattern, options); - }; - }; - var ext = function(a, b) { - b = b || {}; - var t = {}; - Object.keys(a).forEach(function(k) { - t[k] = a[k]; - }); - Object.keys(b).forEach(function(k) { - t[k] = b[k]; - }); - return t; - }; - var minimatch = function(p, pattern, options) { - assertValidPattern(pattern); - if (!options) - options = {}; - if (!options.nocomment && pattern.charAt(0) === "#") { - return false; - } - return new Minimatch(pattern, options).match(p); - }; - var Minimatch = function(pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options); - } - assertValidPattern(pattern); - if (!options) - options = {}; - pattern = pattern.trim(); - if (!options.allowWindowsEscape && path.sep !== "/") { - pattern = pattern.split(path.sep).join("/"); - } - this.options = options; - this.set = []; - this.pattern = pattern; - this.regexp = null; - this.negate = false; - this.comment = false; - this.empty = false; - this.partial = !!options.partial; - this.make(); - }; - var make = function() { - var pattern = this.pattern; - var options = this.options; - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true; - return; - } - if (!pattern) { - this.empty = true; - return; - } - this.parseNegate(); - var set = this.globSet = this.braceExpand(); - if (options.debug) - this.debug = function debug() { - console.error.apply(console, arguments); - }; - this.debug(this.pattern, set); - set = this.globParts = set.map(function(s) { - return s.split(slashSplit); - }); - this.debug(this.pattern, set); - set = set.map(function(s, si, set2) { - return s.map(this.parse, this); - }, this); - this.debug(this.pattern, set); - set = set.filter(function(s) { - return s.indexOf(false) === -1; - }); - this.debug(this.pattern, set); - this.set = set; - }; - var parseNegate = function() { - var pattern = this.pattern; - var negate = false; - var options = this.options; - var negateOffset = 0; - if (options.nonegate) - return; - for (var i = 0, l = pattern.length;i < l && pattern.charAt(i) === "!"; i++) { - negate = !negate; - negateOffset++; - } - if (negateOffset) - this.pattern = pattern.substr(negateOffset); - this.negate = negate; - }; - var braceExpand = function(pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options; - } else { - options = {}; - } - } - pattern = typeof pattern === "undefined" ? this.pattern : pattern; - assertValidPattern(pattern); - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - return [pattern]; - } - return expand(pattern); - }; - var parse = function(pattern, isSub) { - assertValidPattern(pattern); - var options = this.options; - if (pattern === "**") { - if (!options.noglobstar) - return GLOBSTAR; - else - pattern = "*"; - } - if (pattern === "") - return ""; - var re = ""; - var hasMagic = !!options.nocase; - var escaping = false; - var patternListStack = []; - var negativeLists = []; - var stateChar; - var inClass = false; - var reClassStart = -1; - var classStart = -1; - var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; - var self = this; - function clearStateChar() { - if (stateChar) { - switch (stateChar) { - case "*": - re += star; - hasMagic = true; - break; - case "?": - re += qmark; - hasMagic = true; - break; - default: - re += "\\" + stateChar; - break; - } - self.debug("clearStateChar %j %j", stateChar, re); - stateChar = false; - } - } - for (var i = 0, len = pattern.length, c;i < len && (c = pattern.charAt(i)); i++) { - this.debug("%s\t%s %s %j", pattern, i, re, c); - if (escaping && reSpecials[c]) { - re += "\\" + c; - escaping = false; - continue; - } - switch (c) { - case "/": { - return false; - } - case "\\": - clearStateChar(); - escaping = true; - continue; - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c); - if (inClass) { - this.debug(" in class"); - if (c === "!" && i === classStart + 1) - c = "^"; - re += c; - continue; - } - self.debug("call clearStateChar %j", stateChar); - clearStateChar(); - stateChar = c; - if (options.noext) - clearStateChar(); - continue; - case "(": - if (inClass) { - re += "("; - continue; - } - if (!stateChar) { - re += "\\("; - continue; - } - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }); - re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; - this.debug("plType %j %j", stateChar, re); - stateChar = false; - continue; - case ")": - if (inClass || !patternListStack.length) { - re += "\\)"; - continue; - } - clearStateChar(); - hasMagic = true; - var pl = patternListStack.pop(); - re += pl.close; - if (pl.type === "!") { - negativeLists.push(pl); - } - pl.reEnd = re.length; - continue; - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|"; - escaping = false; - continue; - } - clearStateChar(); - re += "|"; - continue; - case "[": - clearStateChar(); - if (inClass) { - re += "\\" + c; - continue; - } - inClass = true; - classStart = i; - reClassStart = re.length; - re += c; - continue; - case "]": - if (i === classStart + 1 || !inClass) { - re += "\\" + c; - escaping = false; - continue; - } - var cs = pattern.substring(classStart + 1, i); - try { - RegExp("[" + cs + "]"); - } catch (er) { - var sp = this.parse(cs, SUBPARSE); - re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; - hasMagic = hasMagic || sp[1]; - inClass = false; - continue; - } - hasMagic = true; - inClass = false; - re += c; - continue; - default: - clearStateChar(); - if (escaping) { - escaping = false; - } else if (reSpecials[c] && !(c === "^" && inClass)) { - re += "\\"; - } - re += c; - } - } - if (inClass) { - cs = pattern.substr(classStart + 1); - sp = this.parse(cs, SUBPARSE); - re = re.substr(0, reClassStart) + "\\[" + sp[0]; - hasMagic = hasMagic || sp[1]; - } - for (pl = patternListStack.pop();pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length); - this.debug("setting tail", re, pl); - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { - if (!$2) { - $2 = "\\"; - } - return $1 + $1 + $2 + "|"; - }); - this.debug("tail=%j\n %s", tail, tail, pl, re); - var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; - hasMagic = true; - re = re.slice(0, pl.reStart) + t + "\\(" + tail; - } - clearStateChar(); - if (escaping) { - re += "\\\\"; - } - var addPatternStart = false; - switch (re.charAt(0)) { - case "[": - case ".": - case "(": - addPatternStart = true; - } - for (var n = negativeLists.length - 1;n > -1; n--) { - var nl = negativeLists[n]; - var nlBefore = re.slice(0, nl.reStart); - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); - var nlAfter = re.slice(nl.reEnd); - nlLast += nlAfter; - var openParensBefore = nlBefore.split("(").length - 1; - var cleanAfter = nlAfter; - for (i = 0;i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); - } - nlAfter = cleanAfter; - var dollar = ""; - if (nlAfter === "" && isSub !== SUBPARSE) { - dollar = "$"; - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; - re = newRe; - } - if (re !== "" && hasMagic) { - re = "(?=.)" + re; - } - if (addPatternStart) { - re = patternStart + re; - } - if (isSub === SUBPARSE) { - return [re, hasMagic]; - } - if (!hasMagic) { - return globUnescape(pattern); - } - var flags = options.nocase ? "i" : ""; - try { - var regExp = new RegExp("^" + re + "$", flags); - } catch (er) { - return new RegExp("$."); - } - regExp._glob = pattern; - regExp._src = re; - return regExp; - }; - var makeRe = function() { - if (this.regexp || this.regexp === false) - return this.regexp; - var set = this.set; - if (!set.length) { - this.regexp = false; - return this.regexp; - } - var options = this.options; - var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; - var flags = options.nocase ? "i" : ""; - var re = set.map(function(pattern) { - return pattern.map(function(p) { - return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; - }).join("\\/"); - }).join("|"); - re = "^(?:" + re + ")$"; - if (this.negate) - re = "^(?!" + re + ").*$"; - try { - this.regexp = new RegExp(re, flags); - } catch (ex) { - this.regexp = false; - } - return this.regexp; - }; - var globUnescape = function(s) { - return s.replace(/\\(.)/g, "$1"); - }; - var regExpEscape = function(s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); - }; - module.exports = minimatch; - minimatch.Minimatch = Minimatch; - var path = function() { - try { - return import.meta.require("path"); - } catch (e) { - } - }() || { - sep: "/" - }; - minimatch.sep = path.sep; - var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; - var expand = require_brace_expansion(); - var plTypes = { - "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, - "?": { open: "(?:", close: ")?" }, - "+": { open: "(?:", close: ")+" }, - "*": { open: "(?:", close: ")*" }, - "@": { open: "(?:", close: ")" } - }; - var qmark = "[^/]"; - var star = qmark + "*?"; - var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; - var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; - var reSpecials = charSet("().*{}+?[]^$\\!"); - var slashSplit = /\/+/; - minimatch.filter = filter; - minimatch.defaults = function(def) { - if (!def || typeof def !== "object" || !Object.keys(def).length) { - return minimatch; - } - var orig = minimatch; - var m = function minimatch(p, pattern, options) { - return orig(p, pattern, ext(def, options)); - }; - m.Minimatch = function Minimatch(pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)); - }; - m.Minimatch.defaults = function defaults(options) { - return orig.defaults(ext(def, options)).Minimatch; - }; - m.filter = function filter(pattern, options) { - return orig.filter(pattern, ext(def, options)); - }; - m.defaults = function defaults(options) { - return orig.defaults(ext(def, options)); - }; - m.makeRe = function makeRe(pattern, options) { - return orig.makeRe(pattern, ext(def, options)); - }; - m.braceExpand = function braceExpand(pattern, options) { - return orig.braceExpand(pattern, ext(def, options)); - }; - m.match = function(list, pattern, options) { - return orig.match(list, pattern, ext(def, options)); - }; - return m; - }; - Minimatch.defaults = function(def) { - return minimatch.defaults(def).Minimatch; - }; - Minimatch.prototype.debug = function() { - }; - Minimatch.prototype.make = make; - Minimatch.prototype.parseNegate = parseNegate; - minimatch.braceExpand = function(pattern, options) { - return braceExpand(pattern, options); - }; - Minimatch.prototype.braceExpand = braceExpand; - var MAX_PATTERN_LENGTH = 1024 * 64; - var assertValidPattern = function(pattern) { - if (typeof pattern !== "string") { - throw new TypeError("invalid pattern"); - } - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError("pattern is too long"); - } - }; - Minimatch.prototype.parse = parse; - var SUBPARSE = {}; - minimatch.makeRe = function(pattern, options) { - return new Minimatch(pattern, options || {}).makeRe(); - }; - Minimatch.prototype.makeRe = makeRe; - minimatch.match = function(list, pattern, options) { - options = options || {}; - var mm = new Minimatch(pattern, options); - list = list.filter(function(f) { - return mm.match(f); - }); - if (mm.options.nonull && !list.length) { - list.push(pattern); - } - return list; - }; - Minimatch.prototype.match = function match(f, partial) { - if (typeof partial === "undefined") - partial = this.partial; - this.debug("match", f, this.pattern); - if (this.comment) - return false; - if (this.empty) - return f === ""; - if (f === "/" && partial) - return true; - var options = this.options; - if (path.sep !== "/") { - f = f.split(path.sep).join("/"); - } - f = f.split(slashSplit); - this.debug(this.pattern, "split", f); - var set = this.set; - this.debug(this.pattern, "set", set); - var filename; - var i; - for (i = f.length - 1;i >= 0; i--) { - filename = f[i]; - if (filename) - break; - } - for (i = 0;i < set.length; i++) { - var pattern = set[i]; - var file = f; - if (options.matchBase && pattern.length === 1) { - file = [filename]; - } - var hit = this.matchOne(file, pattern, partial); - if (hit) { - if (options.flipNegate) - return true; - return !this.negate; - } - } - if (options.flipNegate) - return false; - return this.negate; - }; - Minimatch.prototype.matchOne = function(file, pattern, partial) { - var options = this.options; - this.debug("matchOne", { this: this, file, pattern }); - this.debug("matchOne", file.length, pattern.length); - for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length;fi < fl && pi < pl; fi++, pi++) { - this.debug("matchOne loop"); - var p = pattern[pi]; - var f = file[fi]; - this.debug(pattern, p, f); - if (p === false) - return false; - if (p === GLOBSTAR) { - this.debug("GLOBSTAR", [pattern, p, f]); - var fr = fi; - var pr = pi + 1; - if (pr === pl) { - this.debug("** at the end"); - for (;fi < fl; fi++) { - if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") - return false; - } - return true; - } - while (fr < fl) { - var swallowee = file[fr]; - this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug("globstar found match!", fr, fl, swallowee); - return true; - } else { - if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { - this.debug("dot detected!", file, fr, pattern, pr); - break; - } - this.debug("globstar swallow a segment, and continue"); - fr++; - } - } - if (partial) { - this.debug("\n>>> no match, partial?", file, fr, pattern, pr); - if (fr === fl) - return true; - } - return false; - } - var hit; - if (typeof p === "string") { - hit = f === p; - this.debug("string match", p, f, hit); - } else { - hit = f.match(p); - this.debug("pattern match", p, f, hit); - } - if (!hit) - return false; - } - if (fi === fl && pi === pl) { - return true; - } else if (fi === fl) { - return partial; - } else if (pi === pl) { - return fi === fl - 1 && file[fi] === ""; - } - throw new Error("wtf?"); - }; -}); - -// node_modules/inherits/inherits_browser.js -var require_inherits_browser = __commonJS((exports, module) => { - if (typeof Object.create === "function") { - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - } - }; - } else { - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function() { - }; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor; - ctor.prototype.constructor = ctor; - } - }; - } -}); - -// node_modules/inherits/inherits.js -var require_inherits = __commonJS((exports, module) => { - try { - util = import.meta.require("util"); - if (typeof util.inherits !== "function") - throw ""; - module.exports = util.inherits; - } catch (e) { - module.exports = require_inherits_browser(); - } - var util; -}); - -// node_modules/path-is-absolute/index.js -var require_path_is_absolute = __commonJS((exports, module) => { - var posix = function(path) { - return path.charAt(0) === "/"; - }; - var win32 = function(path) { - var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; - var result = splitDeviceRe.exec(path); - var device = result[1] || ""; - var isUnc = Boolean(device && device.charAt(1) !== ":"); - return Boolean(result[2] || isUnc); - }; - module.exports = process.platform === "win32" ? win32 : posix; - module.exports.posix = posix; - module.exports.win32 = win32; -}); - -// node_modules/glob/common.js -var require_common3 = __commonJS((exports) => { - var ownProp = function(obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field); - }; - var alphasort = function(a, b) { - return a.localeCompare(b, "en"); - }; - var setupIgnores = function(self, options) { - self.ignore = options.ignore || []; - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore]; - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap); - } - }; - var ignoreMap = function(pattern) { - var gmatcher = null; - if (pattern.slice(-3) === "/**") { - var gpattern = pattern.replace(/(\/\*\*)+$/, ""); - gmatcher = new Minimatch(gpattern, { dot: true }); - } - return { - matcher: new Minimatch(pattern, { dot: true }), - gmatcher - }; - }; - var setopts = function(self, pattern, options) { - if (!options) - options = {}; - if (options.matchBase && pattern.indexOf("/") === -1) { - if (options.noglobstar) { - throw new Error("base matching requires globstar"); - } - pattern = "**/" + pattern; - } - self.silent = !!options.silent; - self.pattern = pattern; - self.strict = options.strict !== false; - self.realpath = !!options.realpath; - self.realpathCache = options.realpathCache || Object.create(null); - self.follow = !!options.follow; - self.dot = !!options.dot; - self.mark = !!options.mark; - self.nodir = !!options.nodir; - if (self.nodir) - self.mark = true; - self.sync = !!options.sync; - self.nounique = !!options.nounique; - self.nonull = !!options.nonull; - self.nosort = !!options.nosort; - self.nocase = !!options.nocase; - self.stat = !!options.stat; - self.noprocess = !!options.noprocess; - self.absolute = !!options.absolute; - self.fs = options.fs || fs; - self.maxLength = options.maxLength || Infinity; - self.cache = options.cache || Object.create(null); - self.statCache = options.statCache || Object.create(null); - self.symlinks = options.symlinks || Object.create(null); - setupIgnores(self, options); - self.changedCwd = false; - var cwd = process.cwd(); - if (!ownProp(options, "cwd")) - self.cwd = cwd; - else { - self.cwd = path.resolve(options.cwd); - self.changedCwd = self.cwd !== cwd; - } - self.root = options.root || path.resolve(self.cwd, "/"); - self.root = path.resolve(self.root); - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/"); - self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd); - if (process.platform === "win32") - self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); - self.nomount = !!options.nomount; - options.nonegate = true; - options.nocomment = true; - options.allowWindowsEscape = false; - self.minimatch = new Minimatch(pattern, options); - self.options = self.minimatch.options; - }; - var finish = function(self) { - var nou = self.nounique; - var all = nou ? [] : Object.create(null); - for (var i = 0, l = self.matches.length;i < l; i++) { - var matches = self.matches[i]; - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - var literal = self.minimatch.globSet[i]; - if (nou) - all.push(literal); - else - all[literal] = true; - } - } else { - var m = Object.keys(matches); - if (nou) - all.push.apply(all, m); - else - m.forEach(function(m2) { - all[m2] = true; - }); - } - } - if (!nou) - all = Object.keys(all); - if (!self.nosort) - all = all.sort(alphasort); - if (self.mark) { - for (var i = 0;i < all.length; i++) { - all[i] = self._mark(all[i]); - } - if (self.nodir) { - all = all.filter(function(e) { - var notDir = !/\/$/.test(e); - var c = self.cache[e] || self.cache[makeAbs(self, e)]; - if (notDir && c) - notDir = c !== "DIR" && !Array.isArray(c); - return notDir; - }); - } - } - if (self.ignore.length) - all = all.filter(function(m2) { - return !isIgnored(self, m2); - }); - self.found = all; - }; - var mark = function(self, p) { - var abs = makeAbs(self, p); - var c = self.cache[abs]; - var m = p; - if (c) { - var isDir = c === "DIR" || Array.isArray(c); - var slash = p.slice(-1) === "/"; - if (isDir && !slash) - m += "/"; - else if (!isDir && slash) - m = m.slice(0, -1); - if (m !== p) { - var mabs = makeAbs(self, m); - self.statCache[mabs] = self.statCache[abs]; - self.cache[mabs] = self.cache[abs]; - } - } - return m; - }; - var makeAbs = function(self, f) { - var abs = f; - if (f.charAt(0) === "/") { - abs = path.join(self.root, f); - } else if (isAbsolute(f) || f === "") { - abs = f; - } else if (self.changedCwd) { - abs = path.resolve(self.cwd, f); - } else { - abs = path.resolve(f); - } - if (process.platform === "win32") - abs = abs.replace(/\\/g, "/"); - return abs; - }; - var isIgnored = function(self, path2) { - if (!self.ignore.length) - return false; - return self.ignore.some(function(item) { - return item.matcher.match(path2) || !!(item.gmatcher && item.gmatcher.match(path2)); - }); - }; - var childrenIgnored = function(self, path2) { - if (!self.ignore.length) - return false; - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path2)); - }); - }; - exports.setopts = setopts; - exports.ownProp = ownProp; - exports.makeAbs = makeAbs; - exports.finish = finish; - exports.mark = mark; - exports.isIgnored = isIgnored; - exports.childrenIgnored = childrenIgnored; - var fs = import.meta.require("fs"); - var path = import.meta.require("path"); - var minimatch = require_minimatch(); - var isAbsolute = require_path_is_absolute(); - var Minimatch = minimatch.Minimatch; -}); - -// node_modules/glob/sync.js -var require_sync7 = __commonJS((exports, module) => { - var globSync = function(pattern, options) { - if (typeof options === "function" || arguments.length === 3) - throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); - return new GlobSync(pattern, options).found; - }; - var GlobSync = function(pattern, options) { - if (!pattern) - throw new Error("must provide pattern"); - if (typeof options === "function" || arguments.length === 3) - throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options); - setopts(this, pattern, options); - if (this.noprocess) - return this; - var n = this.minimatch.set.length; - this.matches = new Array(n); - for (var i = 0;i < n; i++) { - this._process(this.minimatch.set[i], i, false); - } - this._finish(); - }; - module.exports = globSync; - globSync.GlobSync = GlobSync; - var rp = require_fs6(); - var minimatch = require_minimatch(); - var Minimatch = minimatch.Minimatch; - var Glob = require_glob().Glob; - var util = import.meta.require("util"); - var path = import.meta.require("path"); - var assert = import.meta.require("assert"); - var isAbsolute = require_path_is_absolute(); - var common = require_common3(); - var setopts = common.setopts; - var ownProp = common.ownProp; - var childrenIgnored = common.childrenIgnored; - var isIgnored = common.isIgnored; - GlobSync.prototype._finish = function() { - assert.ok(this instanceof GlobSync); - if (this.realpath) { - var self = this; - this.matches.forEach(function(matchset, index) { - var set = self.matches[index] = Object.create(null); - for (var p in matchset) { - try { - p = self._makeAbs(p); - var real = rp.realpathSync(p, self.realpathCache); - set[real] = true; - } catch (er) { - if (er.syscall === "stat") - set[self._makeAbs(p)] = true; - else - throw er; - } - } - }); - } - common.finish(this); - }; - GlobSync.prototype._process = function(pattern, index, inGlobStar) { - assert.ok(this instanceof GlobSync); - var n = 0; - while (typeof pattern[n] === "string") { - n++; - } - var prefix; - switch (n) { - case pattern.length: - this._processSimple(pattern.join("/"), index); - return; - case 0: - prefix = null; - break; - default: - prefix = pattern.slice(0, n).join("/"); - break; - } - var remain = pattern.slice(n); - var read; - if (prefix === null) - read = "."; - else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { - return typeof p === "string" ? p : "[*]"; - }).join("/"))) { - if (!prefix || !isAbsolute(prefix)) - prefix = "/" + prefix; - read = prefix; - } else - read = prefix; - var abs = this._makeAbs(read); - if (childrenIgnored(this, read)) - return; - var isGlobStar = remain[0] === minimatch.GLOBSTAR; - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar); - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar); - }; - GlobSync.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar); - if (!entries) - return; - var pn = remain[0]; - var negate = !!this.minimatch.negate; - var rawGlob = pn._glob; - var dotOk = this.dot || rawGlob.charAt(0) === "."; - var matchedEntries = []; - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (e.charAt(0) !== "." || dotOk) { - var m; - if (negate && !prefix) { - m = !e.match(pn); - } else { - m = e.match(pn); - } - if (m) - matchedEntries.push(e); - } - } - var len = matchedEntries.length; - if (len === 0) - return; - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - if (prefix) { - if (prefix.slice(-1) !== "/") - e = prefix + "/" + e; - else - e = prefix + e; - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e); - } - this._emitMatch(index, e); - } - return; - } - remain.shift(); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - var newPattern; - if (prefix) - newPattern = [prefix, e]; - else - newPattern = [e]; - this._process(newPattern.concat(remain), index, inGlobStar); - } - }; - GlobSync.prototype._emitMatch = function(index, e) { - if (isIgnored(this, e)) - return; - var abs = this._makeAbs(e); - if (this.mark) - e = this._mark(e); - if (this.absolute) { - e = abs; - } - if (this.matches[index][e]) - return; - if (this.nodir) { - var c = this.cache[abs]; - if (c === "DIR" || Array.isArray(c)) - return; - } - this.matches[index][e] = true; - if (this.stat) - this._stat(e); - }; - GlobSync.prototype._readdirInGlobStar = function(abs) { - if (this.follow) - return this._readdir(abs, false); - var entries; - var lstat; - var stat; - try { - lstat = this.fs.lstatSync(abs); - } catch (er) { - if (er.code === "ENOENT") { - return null; - } - } - var isSym = lstat && lstat.isSymbolicLink(); - this.symlinks[abs] = isSym; - if (!isSym && lstat && !lstat.isDirectory()) - this.cache[abs] = "FILE"; - else - entries = this._readdir(abs, false); - return entries; - }; - GlobSync.prototype._readdir = function(abs, inGlobStar) { - var entries; - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs); - if (ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (!c || c === "FILE") - return null; - if (Array.isArray(c)) - return c; - } - try { - return this._readdirEntries(abs, this.fs.readdirSync(abs)); - } catch (er) { - this._readdirError(abs, er); - return null; - } - }; - GlobSync.prototype._readdirEntries = function(abs, entries) { - if (!this.mark && !this.stat) { - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (abs === "/") - e = abs + e; - else - e = abs + "/" + e; - this.cache[e] = true; - } - } - this.cache[abs] = entries; - return entries; - }; - GlobSync.prototype._readdirError = function(f, er) { - switch (er.code) { - case "ENOTSUP": - case "ENOTDIR": - var abs = this._makeAbs(f); - this.cache[abs] = "FILE"; - if (abs === this.cwdAbs) { - var error2 = new Error(er.code + " invalid cwd " + this.cwd); - error2.path = this.cwd; - error2.code = er.code; - throw error2; - } - break; - case "ENOENT": - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[this._makeAbs(f)] = false; - break; - default: - this.cache[this._makeAbs(f)] = false; - if (this.strict) - throw er; - if (!this.silent) - console.error("glob error", er); - break; - } - }; - GlobSync.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar); - if (!entries) - return; - var remainWithoutGlobStar = remain.slice(1); - var gspref = prefix ? [prefix] : []; - var noGlobStar = gspref.concat(remainWithoutGlobStar); - this._process(noGlobStar, index, false); - var len = entries.length; - var isSym = this.symlinks[abs]; - if (isSym && inGlobStar) - return; - for (var i = 0;i < len; i++) { - var e = entries[i]; - if (e.charAt(0) === "." && !this.dot) - continue; - var instead = gspref.concat(entries[i], remainWithoutGlobStar); - this._process(instead, index, true); - var below = gspref.concat(entries[i], remain); - this._process(below, index, true); - } - }; - GlobSync.prototype._processSimple = function(prefix, index) { - var exists = this._stat(prefix); - if (!this.matches[index]) - this.matches[index] = Object.create(null); - if (!exists) - return; - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix); - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix); - } else { - prefix = path.resolve(this.root, prefix); - if (trail) - prefix += "/"; - } - } - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/"); - this._emitMatch(index, prefix); - }; - GlobSync.prototype._stat = function(f) { - var abs = this._makeAbs(f); - var needDir = f.slice(-1) === "/"; - if (f.length > this.maxLength) - return false; - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (Array.isArray(c)) - c = "DIR"; - if (!needDir || c === "DIR") - return c; - if (needDir && c === "FILE") - return false; - } - var exists; - var stat = this.statCache[abs]; - if (!stat) { - var lstat; - try { - lstat = this.fs.lstatSync(abs); - } catch (er) { - if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { - this.statCache[abs] = false; - return false; - } - } - if (lstat && lstat.isSymbolicLink()) { - try { - stat = this.fs.statSync(abs); - } catch (er) { - stat = lstat; - } - } else { - stat = lstat; - } - } - this.statCache[abs] = stat; - var c = true; - if (stat) - c = stat.isDirectory() ? "DIR" : "FILE"; - this.cache[abs] = this.cache[abs] || c; - if (needDir && c === "FILE") - return false; - return c; - }; - GlobSync.prototype._mark = function(p) { - return common.mark(this, p); - }; - GlobSync.prototype._makeAbs = function(f) { - return common.makeAbs(this, f); - }; -}); - -// node_modules/wrappy/wrappy.js -var require_wrappy = __commonJS((exports, module) => { - var wrappy = function(fn, cb) { - if (fn && cb) - return wrappy(fn)(cb); - if (typeof fn !== "function") - throw new TypeError("need wrapper function"); - Object.keys(fn).forEach(function(k) { - wrapper[k] = fn[k]; - }); - return wrapper; - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0;i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb2 = args[args.length - 1]; - if (typeof ret === "function" && ret !== cb2) { - Object.keys(cb2).forEach(function(k) { - ret[k] = cb2[k]; - }); - } - return ret; - } - }; - module.exports = wrappy; -}); - -// node_modules/once/once.js -var require_once = __commonJS((exports, module) => { - var once = function(fn) { - var f = function() { - if (f.called) - return f.value; - f.called = true; - return f.value = fn.apply(this, arguments); - }; - f.called = false; - return f; - }; - var onceStrict = function(fn) { - var f = function() { - if (f.called) - throw new Error(f.onceError); - f.called = true; - return f.value = fn.apply(this, arguments); - }; - var name = fn.name || "Function wrapped with `once`"; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f; - }; - var wrappy = require_wrappy(); - module.exports = wrappy(once); - module.exports.strict = wrappy(onceStrict); - once.proto = once(function() { - Object.defineProperty(Function.prototype, "once", { - value: function() { - return once(this); - }, - configurable: true - }); - Object.defineProperty(Function.prototype, "onceStrict", { - value: function() { - return onceStrict(this); - }, - configurable: true - }); - }); -}); - -// node_modules/inflight/inflight.js -var require_inflight = __commonJS((exports, module) => { - var inflight = function(key, cb) { - if (reqs[key]) { - reqs[key].push(cb); - return null; - } else { - reqs[key] = [cb]; - return makeres(key); - } - }; - var makeres = function(key) { - return once(function RES() { - var cbs = reqs[key]; - var len = cbs.length; - var args = slice(arguments); - try { - for (var i = 0;i < len; i++) { - cbs[i].apply(null, args); - } - } finally { - if (cbs.length > len) { - cbs.splice(0, len); - process.nextTick(function() { - RES.apply(null, args); - }); - } else { - delete reqs[key]; - } - } - }); - }; - var slice = function(args) { - var length = args.length; - var array = []; - for (var i = 0;i < length; i++) - array[i] = args[i]; - return array; - }; - var wrappy = require_wrappy(); - var reqs = Object.create(null); - var once = require_once(); - module.exports = wrappy(inflight); -}); - -// node_modules/glob/glob.js -var require_glob = __commonJS((exports, module) => { - var glob = function(pattern, options, cb) { - if (typeof options === "function") - cb = options, options = {}; - if (!options) - options = {}; - if (options.sync) { - if (cb) - throw new TypeError("callback provided to sync glob"); - return globSync(pattern, options); - } - return new Glob(pattern, options, cb); - }; - var extend = function(origin, add) { - if (add === null || typeof add !== "object") { - return origin; - } - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; - }; - var Glob = function(pattern, options, cb) { - if (typeof options === "function") { - cb = options; - options = null; - } - if (options && options.sync) { - if (cb) - throw new TypeError("callback provided to sync glob"); - return new GlobSync(pattern, options); - } - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb); - setopts(this, pattern, options); - this._didRealPath = false; - var n = this.minimatch.set.length; - this.matches = new Array(n); - if (typeof cb === "function") { - cb = once(cb); - this.on("error", cb); - this.on("end", function(matches) { - cb(null, matches); - }); - } - var self = this; - this._processing = 0; - this._emitQueue = []; - this._processQueue = []; - this.paused = false; - if (this.noprocess) - return this; - if (n === 0) - return done(); - var sync2 = true; - for (var i = 0;i < n; i++) { - this._process(this.minimatch.set[i], i, false, done); - } - sync2 = false; - function done() { - --self._processing; - if (self._processing <= 0) { - if (sync2) { - process.nextTick(function() { - self._finish(); - }); - } else { - self._finish(); - } - } - } - }; - var readdirCb = function(self, abs, cb) { - return function(er, entries) { - if (er) - self._readdirError(abs, er, cb); - else - self._readdirEntries(abs, entries, cb); - }; - }; - module.exports = glob; - var rp = require_fs6(); - var minimatch = require_minimatch(); - var Minimatch = minimatch.Minimatch; - var inherits = require_inherits(); - var EE = import.meta.require("events").EventEmitter; - var path = import.meta.require("path"); - var assert = import.meta.require("assert"); - var isAbsolute = require_path_is_absolute(); - var globSync = require_sync7(); - var common = require_common3(); - var setopts = common.setopts; - var ownProp = common.ownProp; - var inflight = require_inflight(); - var util = import.meta.require("util"); - var childrenIgnored = common.childrenIgnored; - var isIgnored = common.isIgnored; - var once = require_once(); - glob.sync = globSync; - var GlobSync = glob.GlobSync = globSync.GlobSync; - glob.glob = glob; - glob.hasMagic = function(pattern, options_) { - var options = extend({}, options_); - options.noprocess = true; - var g = new Glob(pattern, options); - var set = g.minimatch.set; - if (!pattern) - return false; - if (set.length > 1) - return true; - for (var j = 0;j < set[0].length; j++) { - if (typeof set[0][j] !== "string") - return true; - } - return false; - }; - glob.Glob = Glob; - inherits(Glob, EE); - Glob.prototype._finish = function() { - assert(this instanceof Glob); - if (this.aborted) - return; - if (this.realpath && !this._didRealpath) - return this._realpath(); - common.finish(this); - this.emit("end", this.found); - }; - Glob.prototype._realpath = function() { - if (this._didRealpath) - return; - this._didRealpath = true; - var n = this.matches.length; - if (n === 0) - return this._finish(); - var self = this; - for (var i = 0;i < this.matches.length; i++) - this._realpathSet(i, next); - function next() { - if (--n === 0) - self._finish(); - } - }; - Glob.prototype._realpathSet = function(index, cb) { - var matchset = this.matches[index]; - if (!matchset) - return cb(); - var found = Object.keys(matchset); - var self = this; - var n = found.length; - if (n === 0) - return cb(); - var set = this.matches[index] = Object.create(null); - found.forEach(function(p, i) { - p = self._makeAbs(p); - rp.realpath(p, self.realpathCache, function(er, real) { - if (!er) - set[real] = true; - else if (er.syscall === "stat") - set[p] = true; - else - self.emit("error", er); - if (--n === 0) { - self.matches[index] = set; - cb(); - } - }); - }); - }; - Glob.prototype._mark = function(p) { - return common.mark(this, p); - }; - Glob.prototype._makeAbs = function(f) { - return common.makeAbs(this, f); - }; - Glob.prototype.abort = function() { - this.aborted = true; - this.emit("abort"); - }; - Glob.prototype.pause = function() { - if (!this.paused) { - this.paused = true; - this.emit("pause"); - } - }; - Glob.prototype.resume = function() { - if (this.paused) { - this.emit("resume"); - this.paused = false; - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0); - this._emitQueue.length = 0; - for (var i = 0;i < eq.length; i++) { - var e = eq[i]; - this._emitMatch(e[0], e[1]); - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0); - this._processQueue.length = 0; - for (var i = 0;i < pq.length; i++) { - var p = pq[i]; - this._processing--; - this._process(p[0], p[1], p[2], p[3]); - } - } - } - }; - Glob.prototype._process = function(pattern, index, inGlobStar, cb) { - assert(this instanceof Glob); - assert(typeof cb === "function"); - if (this.aborted) - return; - this._processing++; - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]); - return; - } - var n = 0; - while (typeof pattern[n] === "string") { - n++; - } - var prefix; - switch (n) { - case pattern.length: - this._processSimple(pattern.join("/"), index, cb); - return; - case 0: - prefix = null; - break; - default: - prefix = pattern.slice(0, n).join("/"); - break; - } - var remain = pattern.slice(n); - var read; - if (prefix === null) - read = "."; - else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { - return typeof p === "string" ? p : "[*]"; - }).join("/"))) { - if (!prefix || !isAbsolute(prefix)) - prefix = "/" + prefix; - read = prefix; - } else - read = prefix; - var abs = this._makeAbs(read); - if (childrenIgnored(this, read)) - return cb(); - var isGlobStar = remain[0] === minimatch.GLOBSTAR; - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb); - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb); - }; - Glob.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this; - this._readdir(abs, inGlobStar, function(er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb); - }); - }; - Glob.prototype._processReaddir2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { - if (!entries) - return cb(); - var pn = remain[0]; - var negate = !!this.minimatch.negate; - var rawGlob = pn._glob; - var dotOk = this.dot || rawGlob.charAt(0) === "."; - var matchedEntries = []; - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (e.charAt(0) !== "." || dotOk) { - var m; - if (negate && !prefix) { - m = !e.match(pn); - } else { - m = e.match(pn); - } - if (m) - matchedEntries.push(e); - } - } - var len = matchedEntries.length; - if (len === 0) - return cb(); - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - if (prefix) { - if (prefix !== "/") - e = prefix + "/" + e; - else - e = prefix + e; - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e); - } - this._emitMatch(index, e); - } - return cb(); - } - remain.shift(); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - var newPattern; - if (prefix) { - if (prefix !== "/") - e = prefix + "/" + e; - else - e = prefix + e; - } - this._process([e].concat(remain), index, inGlobStar, cb); - } - cb(); - }; - Glob.prototype._emitMatch = function(index, e) { - if (this.aborted) - return; - if (isIgnored(this, e)) - return; - if (this.paused) { - this._emitQueue.push([index, e]); - return; - } - var abs = isAbsolute(e) ? e : this._makeAbs(e); - if (this.mark) - e = this._mark(e); - if (this.absolute) - e = abs; - if (this.matches[index][e]) - return; - if (this.nodir) { - var c = this.cache[abs]; - if (c === "DIR" || Array.isArray(c)) - return; - } - this.matches[index][e] = true; - var st = this.statCache[abs]; - if (st) - this.emit("stat", e, st); - this.emit("match", e); - }; - Glob.prototype._readdirInGlobStar = function(abs, cb) { - if (this.aborted) - return; - if (this.follow) - return this._readdir(abs, false, cb); - var lstatkey = "lstat\0" + abs; - var self = this; - var lstatcb = inflight(lstatkey, lstatcb_); - if (lstatcb) - self.fs.lstat(abs, lstatcb); - function lstatcb_(er, lstat) { - if (er && er.code === "ENOENT") - return cb(); - var isSym = lstat && lstat.isSymbolicLink(); - self.symlinks[abs] = isSym; - if (!isSym && lstat && !lstat.isDirectory()) { - self.cache[abs] = "FILE"; - cb(); - } else - self._readdir(abs, false, cb); - } - }; - Glob.prototype._readdir = function(abs, inGlobStar, cb) { - if (this.aborted) - return; - cb = inflight("readdir\0" + abs + "\0" + inGlobStar, cb); - if (!cb) - return; - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb); - if (ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (!c || c === "FILE") - return cb(); - if (Array.isArray(c)) - return cb(null, c); - } - var self = this; - self.fs.readdir(abs, readdirCb(this, abs, cb)); - }; - Glob.prototype._readdirEntries = function(abs, entries, cb) { - if (this.aborted) - return; - if (!this.mark && !this.stat) { - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (abs === "/") - e = abs + e; - else - e = abs + "/" + e; - this.cache[e] = true; - } - } - this.cache[abs] = entries; - return cb(null, entries); - }; - Glob.prototype._readdirError = function(f, er, cb) { - if (this.aborted) - return; - switch (er.code) { - case "ENOTSUP": - case "ENOTDIR": - var abs = this._makeAbs(f); - this.cache[abs] = "FILE"; - if (abs === this.cwdAbs) { - var error2 = new Error(er.code + " invalid cwd " + this.cwd); - error2.path = this.cwd; - error2.code = er.code; - this.emit("error", error2); - this.abort(); - } - break; - case "ENOENT": - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[this._makeAbs(f)] = false; - break; - default: - this.cache[this._makeAbs(f)] = false; - if (this.strict) { - this.emit("error", er); - this.abort(); - } - if (!this.silent) - console.error("glob error", er); - break; - } - return cb(); - }; - Glob.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this; - this._readdir(abs, inGlobStar, function(er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb); - }); - }; - Glob.prototype._processGlobStar2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { - if (!entries) - return cb(); - var remainWithoutGlobStar = remain.slice(1); - var gspref = prefix ? [prefix] : []; - var noGlobStar = gspref.concat(remainWithoutGlobStar); - this._process(noGlobStar, index, false, cb); - var isSym = this.symlinks[abs]; - var len = entries.length; - if (isSym && inGlobStar) - return cb(); - for (var i = 0;i < len; i++) { - var e = entries[i]; - if (e.charAt(0) === "." && !this.dot) - continue; - var instead = gspref.concat(entries[i], remainWithoutGlobStar); - this._process(instead, index, true, cb); - var below = gspref.concat(entries[i], remain); - this._process(below, index, true, cb); - } - cb(); - }; - Glob.prototype._processSimple = function(prefix, index, cb) { - var self = this; - this._stat(prefix, function(er, exists) { - self._processSimple2(prefix, index, er, exists, cb); - }); - }; - Glob.prototype._processSimple2 = function(prefix, index, er, exists, cb) { - if (!this.matches[index]) - this.matches[index] = Object.create(null); - if (!exists) - return cb(); - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix); - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix); - } else { - prefix = path.resolve(this.root, prefix); - if (trail) - prefix += "/"; - } - } - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/"); - this._emitMatch(index, prefix); - cb(); - }; - Glob.prototype._stat = function(f, cb) { - var abs = this._makeAbs(f); - var needDir = f.slice(-1) === "/"; - if (f.length > this.maxLength) - return cb(); - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (Array.isArray(c)) - c = "DIR"; - if (!needDir || c === "DIR") - return cb(null, c); - if (needDir && c === "FILE") - return cb(); - } - var exists; - var stat = this.statCache[abs]; - if (stat !== undefined) { - if (stat === false) - return cb(null, stat); - else { - var type = stat.isDirectory() ? "DIR" : "FILE"; - if (needDir && type === "FILE") - return cb(); - else - return cb(null, type, stat); - } - } - var self = this; - var statcb = inflight("stat\0" + abs, lstatcb_); - if (statcb) - self.fs.lstat(abs, statcb); - function lstatcb_(er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - return self.fs.stat(abs, function(er2, stat2) { - if (er2) - self._stat2(f, abs, null, lstat, cb); - else - self._stat2(f, abs, er2, stat2, cb); - }); - } else { - self._stat2(f, abs, er, lstat, cb); - } - } - }; - Glob.prototype._stat2 = function(f, abs, er, stat, cb) { - if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { - this.statCache[abs] = false; - return cb(); - } - var needDir = f.slice(-1) === "/"; - this.statCache[abs] = stat; - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) - return cb(null, false, stat); - var c = true; - if (stat) - c = stat.isDirectory() ? "DIR" : "FILE"; - this.cache[abs] = this.cache[abs] || c; - if (needDir && c === "FILE") - return cb(); - return cb(null, c, stat); - }; -}); - -// node_modules/globs/index.js -var require_globs = __commonJS((exports, module) => { - var glob = require_glob(); - var globs = module.exports = function(patterns, options, callback) { - var pending, groups = []; - if (!Array.isArray(patterns)) { - patterns = [patterns]; - } - pending = patterns.length; - if (typeof options === "function") { - callback = options; - options = {}; - } - if (!pending) { - return process.nextTick(function() { - callback(null, []); - }); - } - patterns.forEach(function(pattern) { - glob(pattern, options, function(err, files) { - if (err) { - return callback(err); - } - groups = groups.concat(files); - pending -= 1; - if (!pending) { - return callback(null, groups); - } - }); - }); - }; - globs.sync = function(patterns, options) { - options = options || {}; - var groups = [], index, length; - if (!Array.isArray(patterns)) { - patterns = [patterns]; - } - for (index = 0, length = patterns.length;index < length; index++) { - groups = groups.concat(glob.sync(patterns[index], options)); - } - return groups; - }; -}); - -// node_modules/yargs/lib/platform-shims/esm.mjs -import {notStrictEqual, strictEqual} from "assert"; - -// node_modules/cliui/build/lib/index.js -var addBorder = function(col, ts, style) { - if (col.border) { - if (/[.']-+[.']/.test(ts)) { - return ""; - } - if (ts.trim().length !== 0) { - return style; - } - return " "; - } - return ""; -}; -var _minWidth = function(col) { - const padding = col.padding || []; - const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); - if (col.border) { - return minWidth + 4; - } - return minWidth; -}; -var getWindowWidth = function() { - if (typeof process === "object" && process.stdout && process.stdout.columns) { - return process.stdout.columns; - } - return 80; -}; -var alignRight = function(str, width) { - str = str.trim(); - const strWidth = mixin.stringWidth(str); - if (strWidth < width) { - return " ".repeat(width - strWidth) + str; - } - return str; -}; -var alignCenter = function(str, width) { - str = str.trim(); - const strWidth = mixin.stringWidth(str); - if (strWidth >= width) { - return str; - } - return " ".repeat(width - strWidth >> 1) + str; -}; -function cliui(opts, _mixin) { - mixin = _mixin; - return new UI({ - width: (opts === null || opts === undefined ? undefined : opts.width) || getWindowWidth(), - wrap: opts === null || opts === undefined ? undefined : opts.wrap - }); -} -var align = { - right: alignRight, - center: alignCenter -}; -var top = 0; -var right = 1; -var bottom = 2; -var left = 3; - -class UI { - constructor(opts) { - var _a; - this.width = opts.width; - this.wrap = (_a = opts.wrap) !== null && _a !== undefined ? _a : true; - this.rows = []; - } - span(...args) { - const cols = this.div(...args); - cols.span = true; - } - resetOutput() { - this.rows = []; - } - div(...args) { - if (args.length === 0) { - this.div(""); - } - if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === "string") { - return this.applyLayoutDSL(args[0]); - } - const cols = args.map((arg) => { - if (typeof arg === "string") { - return this.colFromString(arg); - } - return arg; - }); - this.rows.push(cols); - return cols; - } - shouldApplyLayoutDSL(...args) { - return args.length === 1 && typeof args[0] === "string" && /[\t\n]/.test(args[0]); - } - applyLayoutDSL(str) { - const rows = str.split("\n").map((row) => row.split("\t")); - let leftColumnWidth = 0; - rows.forEach((columns) => { - if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { - leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); - } - }); - rows.forEach((columns) => { - this.div(...columns.map((r, i) => { - return { - text: r.trim(), - padding: this.measurePadding(r), - width: i === 0 && columns.length > 1 ? leftColumnWidth : undefined - }; - })); - }); - return this.rows[this.rows.length - 1]; - } - colFromString(text) { - return { - text, - padding: this.measurePadding(text) - }; - } - measurePadding(str) { - const noAnsi = mixin.stripAnsi(str); - return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; - } - toString() { - const lines = []; - this.rows.forEach((row) => { - this.rowToString(row, lines); - }); - return lines.filter((line) => !line.hidden).map((line) => line.text).join("\n"); - } - rowToString(row, lines) { - this.rasterize(row).forEach((rrow, r) => { - let str = ""; - rrow.forEach((col, c) => { - const { width } = row[c]; - const wrapWidth = this.negatePadding(row[c]); - let ts = col; - if (wrapWidth > mixin.stringWidth(col)) { - ts += " ".repeat(wrapWidth - mixin.stringWidth(col)); - } - if (row[c].align && row[c].align !== "left" && this.wrap) { - const fn = align[row[c].align]; - ts = fn(ts, wrapWidth); - if (mixin.stringWidth(ts) < wrapWidth) { - ts += " ".repeat((width || 0) - mixin.stringWidth(ts) - 1); - } - } - const padding = row[c].padding || [0, 0, 0, 0]; - if (padding[left]) { - str += " ".repeat(padding[left]); - } - str += addBorder(row[c], ts, "| "); - str += ts; - str += addBorder(row[c], ts, " |"); - if (padding[right]) { - str += " ".repeat(padding[right]); - } - if (r === 0 && lines.length > 0) { - str = this.renderInline(str, lines[lines.length - 1]); - } - }); - lines.push({ - text: str.replace(/ +$/, ""), - span: row.span - }); - }); - return lines; - } - renderInline(source, previousLine) { - const match = source.match(/^ */); - const leadingWhitespace = match ? match[0].length : 0; - const target = previousLine.text; - const targetTextWidth = mixin.stringWidth(target.trimRight()); - if (!previousLine.span) { - return source; - } - if (!this.wrap) { - previousLine.hidden = true; - return target + source; - } - if (leadingWhitespace < targetTextWidth) { - return source; - } - previousLine.hidden = true; - return target.trimRight() + " ".repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); - } - rasterize(row) { - const rrows = []; - const widths = this.columnWidths(row); - let wrapped; - row.forEach((col, c) => { - col.width = widths[c]; - if (this.wrap) { - wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split("\n"); - } else { - wrapped = col.text.split("\n"); - } - if (col.border) { - wrapped.unshift("." + "-".repeat(this.negatePadding(col) + 2) + "."); - wrapped.push("'" + "-".repeat(this.negatePadding(col) + 2) + "'"); - } - if (col.padding) { - wrapped.unshift(...new Array(col.padding[top] || 0).fill("")); - wrapped.push(...new Array(col.padding[bottom] || 0).fill("")); - } - wrapped.forEach((str, r) => { - if (!rrows[r]) { - rrows.push([]); - } - const rrow = rrows[r]; - for (let i = 0;i < c; i++) { - if (rrow[i] === undefined) { - rrow.push(""); - } - } - rrow.push(str); - }); - }); - return rrows; - } - negatePadding(col) { - let wrapWidth = col.width || 0; - if (col.padding) { - wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); - } - if (col.border) { - wrapWidth -= 4; - } - return wrapWidth; - } - columnWidths(row) { - if (!this.wrap) { - return row.map((col) => { - return col.width || mixin.stringWidth(col.text); - }); - } - let unset = row.length; - let remainingWidth = this.width; - const widths = row.map((col) => { - if (col.width) { - unset--; - remainingWidth -= col.width; - return col.width; - } - return; - }); - const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; - return widths.map((w, i) => { - if (w === undefined) { - return Math.max(unsetWidth, _minWidth(row[i])); - } - return w; - }); - } -} -var mixin; - -// node_modules/cliui/build/lib/string-utils.js -function stripAnsi(str) { - return str.replace(ansi, ""); -} -function wrap(str, width) { - const [start, end] = str.match(ansi) || ["", ""]; - str = stripAnsi(str); - let wrapped = ""; - for (let i = 0;i < str.length; i++) { - if (i !== 0 && i % width === 0) { - wrapped += "\n"; - } - wrapped += str.charAt(i); - } - if (start && end) { - wrapped = `${start}${wrapped}${end}`; - } - return wrapped; -} -var ansi = new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|" + "\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g"); - -// node_modules/cliui/index.mjs -function ui(opts) { - return cliui(opts, { - stringWidth: (str) => { - return [...str].length; - }, - stripAnsi, - wrap - }); -} - -// node_modules/escalade/sync/index.mjs -import {dirname, resolve} from "path"; -import {readdirSync, statSync} from "fs"; -function sync_default(start, callback) { - let dir = resolve(".", start); - let tmp, stats = statSync(dir); - if (!stats.isDirectory()) { - dir = dirname(dir); - } - while (true) { - tmp = callback(dir, readdirSync(dir)); - if (tmp) - return resolve(dir, tmp); - dir = dirname(tmp = dir); - if (tmp === dir) - break; - } -} - -// node_modules/yargs/lib/platform-shims/esm.mjs -import {format as format3, inspect} from "util"; -import {readFileSync as readFileSync3} from "fs"; -import {fileURLToPath} from "url"; - -// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js -import {format} from "util"; -import {readFileSync} from "fs"; -import {normalize, resolve as resolve2} from "path"; - -// node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js -function camelCase(str) { - const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); - if (!isCamelCase) { - str = str.toLowerCase(); - } - if (str.indexOf("-") === -1 && str.indexOf("_") === -1) { - return str; - } else { - let camelcase = ""; - let nextChrUpper = false; - const leadingHyphens = str.match(/^-+/); - for (let i = leadingHyphens ? leadingHyphens[0].length : 0;i < str.length; i++) { - let chr = str.charAt(i); - if (nextChrUpper) { - nextChrUpper = false; - chr = chr.toUpperCase(); - } - if (i !== 0 && (chr === "-" || chr === "_")) { - nextChrUpper = true; - } else if (chr !== "-" && chr !== "_") { - camelcase += chr; - } - } - return camelcase; - } -} -function decamelize(str, joinString) { - const lowercase = str.toLowerCase(); - joinString = joinString || "-"; - let notCamelcase = ""; - for (let i = 0;i < str.length; i++) { - const chrLower = lowercase.charAt(i); - const chrString = str.charAt(i); - if (chrLower !== chrString && i > 0) { - notCamelcase += `${joinString}${lowercase.charAt(i)}`; - } else { - notCamelcase += chrString; - } - } - return notCamelcase; -} -function looksLikeNumber(x) { - if (x === null || x === undefined) - return false; - if (typeof x === "number") - return true; - if (/^0x[0-9a-f]+$/i.test(x)) - return true; - if (/^0[^.]/.test(x)) - return false; - return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} - -// node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js -function tokenizeArgString(argString) { - if (Array.isArray(argString)) { - return argString.map((e) => typeof e !== "string" ? e + "" : e); - } - argString = argString.trim(); - let i = 0; - let prevC = null; - let c = null; - let opening = null; - const args = []; - for (let ii = 0;ii < argString.length; ii++) { - prevC = c; - c = argString.charAt(ii); - if (c === " " && !opening) { - if (!(prevC === " ")) { - i++; - } - continue; - } - if (c === opening) { - opening = null; - } else if ((c === "'" || c === '"') && !opening) { - opening = c; - } - if (!args[i]) - args[i] = ""; - args[i] += c; - } - return args; -} - -// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js -var DefaultValuesForTypeKey; -(function(DefaultValuesForTypeKey2) { - DefaultValuesForTypeKey2["BOOLEAN"] = "boolean"; - DefaultValuesForTypeKey2["STRING"] = "string"; - DefaultValuesForTypeKey2["NUMBER"] = "number"; - DefaultValuesForTypeKey2["ARRAY"] = "array"; -})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); - -// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js -var combineAliases = function(aliases) { - const aliasArrays = []; - const combined = Object.create(null); - let change = true; - Object.keys(aliases).forEach(function(key) { - aliasArrays.push([].concat(aliases[key], key)); - }); - while (change) { - change = false; - for (let i = 0;i < aliasArrays.length; i++) { - for (let ii = i + 1;ii < aliasArrays.length; ii++) { - const intersect = aliasArrays[i].filter(function(v) { - return aliasArrays[ii].indexOf(v) !== -1; - }); - if (intersect.length) { - aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); - aliasArrays.splice(ii, 1); - change = true; - break; - } - } - } - } - aliasArrays.forEach(function(aliasArray) { - aliasArray = aliasArray.filter(function(v, i, self) { - return self.indexOf(v) === i; - }); - const lastAlias = aliasArray.pop(); - if (lastAlias !== undefined && typeof lastAlias === "string") { - combined[lastAlias] = aliasArray; - } - }); - return combined; -}; -var increment = function(orig) { - return orig !== undefined ? orig + 1 : 1; -}; -var sanitizeKey = function(key) { - if (key === "__proto__") - return "___proto___"; - return key; -}; -var mixin2; - -class YargsParser { - constructor(_mixin) { - mixin2 = _mixin; - } - parse(argsInput, options) { - const opts = Object.assign({ - alias: undefined, - array: undefined, - boolean: undefined, - config: undefined, - configObjects: undefined, - configuration: undefined, - coerce: undefined, - count: undefined, - default: undefined, - envPrefix: undefined, - narg: undefined, - normalize: undefined, - string: undefined, - number: undefined, - __: undefined, - key: undefined - }, options); - const args = tokenizeArgString(argsInput); - const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); - const configuration = Object.assign({ - "boolean-negation": true, - "camel-case-expansion": true, - "combine-arrays": false, - "dot-notation": true, - "duplicate-arguments-array": true, - "flatten-duplicate-arrays": true, - "greedy-arrays": true, - "halt-at-non-option": false, - "nargs-eats-options": false, - "negation-prefix": "no-", - "parse-numbers": true, - "parse-positional-numbers": true, - "populate--": false, - "set-placeholder-key": false, - "short-option-groups": true, - "strip-aliased": false, - "strip-dashed": false, - "unknown-options-as-args": false - }, opts.configuration); - const defaults = Object.assign(Object.create(null), opts.default); - const configObjects = opts.configObjects || []; - const envPrefix = opts.envPrefix; - const notFlagsOption = configuration["populate--"]; - const notFlagsArgv = notFlagsOption ? "--" : "_"; - const newAliases = Object.create(null); - const defaulted = Object.create(null); - const __ = opts.__ || mixin2.format; - const flags = { - aliases: Object.create(null), - arrays: Object.create(null), - bools: Object.create(null), - strings: Object.create(null), - numbers: Object.create(null), - counts: Object.create(null), - normalize: Object.create(null), - configs: Object.create(null), - nargs: Object.create(null), - coercions: Object.create(null), - keys: [] - }; - const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; - const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)"); - [].concat(opts.array || []).filter(Boolean).forEach(function(opt) { - const key = typeof opt === "object" ? opt.key : opt; - const assignment = Object.keys(opt).map(function(key2) { - const arrayFlagKeys = { - boolean: "bools", - string: "strings", - number: "numbers" - }; - return arrayFlagKeys[key2]; - }).filter(Boolean).pop(); - if (assignment) { - flags[assignment][key] = true; - } - flags.arrays[key] = true; - flags.keys.push(key); - }); - [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) { - flags.bools[key] = true; - flags.keys.push(key); - }); - [].concat(opts.string || []).filter(Boolean).forEach(function(key) { - flags.strings[key] = true; - flags.keys.push(key); - }); - [].concat(opts.number || []).filter(Boolean).forEach(function(key) { - flags.numbers[key] = true; - flags.keys.push(key); - }); - [].concat(opts.count || []).filter(Boolean).forEach(function(key) { - flags.counts[key] = true; - flags.keys.push(key); - }); - [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) { - flags.normalize[key] = true; - flags.keys.push(key); - }); - if (typeof opts.narg === "object") { - Object.entries(opts.narg).forEach(([key, value]) => { - if (typeof value === "number") { - flags.nargs[key] = value; - flags.keys.push(key); - } - }); - } - if (typeof opts.coerce === "object") { - Object.entries(opts.coerce).forEach(([key, value]) => { - if (typeof value === "function") { - flags.coercions[key] = value; - flags.keys.push(key); - } - }); - } - if (typeof opts.config !== "undefined") { - if (Array.isArray(opts.config) || typeof opts.config === "string") { - [].concat(opts.config).filter(Boolean).forEach(function(key) { - flags.configs[key] = true; - }); - } else if (typeof opts.config === "object") { - Object.entries(opts.config).forEach(([key, value]) => { - if (typeof value === "boolean" || typeof value === "function") { - flags.configs[key] = value; - } - }); - } - } - extendAliases(opts.key, aliases, opts.default, flags.arrays); - Object.keys(defaults).forEach(function(key) { - (flags.aliases[key] || []).forEach(function(alias) { - defaults[alias] = defaults[key]; - }); - }); - let error = null; - checkConfiguration(); - let notFlags = []; - const argv = Object.assign(Object.create(null), { _: [] }); - const argvReturn = {}; - for (let i = 0;i < args.length; i++) { - const arg = args[i]; - const truncatedArg = arg.replace(/^-{3,}/, "---"); - let broken; - let key; - let letters; - let m; - let next; - let value; - if (arg !== "--" && isUnknownOptionAsArg(arg)) { - pushPositional(arg); - } else if (truncatedArg.match(/---+(=|$)/)) { - pushPositional(arg); - continue; - } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) { - m = arg.match(/^--?([^=]+)=([\s\S]*)$/); - if (m !== null && Array.isArray(m) && m.length >= 3) { - if (checkAllAliases(m[1], flags.arrays)) { - i = eatArray(i, m[1], args, m[2]); - } else if (checkAllAliases(m[1], flags.nargs) !== false) { - i = eatNargs(i, m[1], args, m[2]); - } else { - setArg(m[1], m[2]); - } - } - } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) { - m = arg.match(negatedBoolean); - if (m !== null && Array.isArray(m) && m.length >= 2) { - key = m[1]; - setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); - } - } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) { - m = arg.match(/^--?(.+)/); - if (m !== null && Array.isArray(m) && m.length >= 2) { - key = m[1]; - if (checkAllAliases(key, flags.arrays)) { - i = eatArray(i, key, args); - } else if (checkAllAliases(key, flags.nargs) !== false) { - i = eatNargs(i, key, args); - } else { - next = args[i + 1]; - if (next !== undefined && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { - setArg(key, next); - i++; - } else if (/^(true|false)$/.test(next)) { - setArg(key, next); - i++; - } else { - setArg(key, defaultValue(key)); - } - } - } - } else if (arg.match(/^-.\..+=/)) { - m = arg.match(/^-([^=]+)=([\s\S]*)$/); - if (m !== null && Array.isArray(m) && m.length >= 3) { - setArg(m[1], m[2]); - } - } else if (arg.match(/^-.\..+/) && !arg.match(negative)) { - next = args[i + 1]; - m = arg.match(/^-(.\..+)/); - if (m !== null && Array.isArray(m) && m.length >= 2) { - key = m[1]; - if (next !== undefined && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { - setArg(key, next); - i++; - } else { - setArg(key, defaultValue(key)); - } - } - } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { - letters = arg.slice(1, -1).split(""); - broken = false; - for (let j = 0;j < letters.length; j++) { - next = arg.slice(j + 2); - if (letters[j + 1] && letters[j + 1] === "=") { - value = arg.slice(j + 3); - key = letters[j]; - if (checkAllAliases(key, flags.arrays)) { - i = eatArray(i, key, args, value); - } else if (checkAllAliases(key, flags.nargs) !== false) { - i = eatNargs(i, key, args, value); - } else { - setArg(key, value); - } - broken = true; - break; - } - if (next === "-") { - setArg(letters[j], next); - continue; - } - if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) { - setArg(letters[j], next); - broken = true; - break; - } - if (letters[j + 1] && letters[j + 1].match(/\W/)) { - setArg(letters[j], next); - broken = true; - break; - } else { - setArg(letters[j], defaultValue(letters[j])); - } - } - key = arg.slice(-1)[0]; - if (!broken && key !== "-") { - if (checkAllAliases(key, flags.arrays)) { - i = eatArray(i, key, args); - } else if (checkAllAliases(key, flags.nargs) !== false) { - i = eatNargs(i, key, args); - } else { - next = args[i + 1]; - if (next !== undefined && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { - setArg(key, next); - i++; - } else if (/^(true|false)$/.test(next)) { - setArg(key, next); - i++; - } else { - setArg(key, defaultValue(key)); - } - } - } - } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) { - key = arg.slice(1); - setArg(key, defaultValue(key)); - } else if (arg === "--") { - notFlags = args.slice(i + 1); - break; - } else if (configuration["halt-at-non-option"]) { - notFlags = args.slice(i); - break; - } else { - pushPositional(arg); - } - } - applyEnvVars(argv, true); - applyEnvVars(argv, false); - setConfig(argv); - setConfigObjects(); - applyDefaultsAndAliases(argv, flags.aliases, defaults, true); - applyCoercions(argv); - if (configuration["set-placeholder-key"]) - setPlaceholderKeys(argv); - Object.keys(flags.counts).forEach(function(key) { - if (!hasKey(argv, key.split("."))) - setArg(key, 0); - }); - if (notFlagsOption && notFlags.length) - argv[notFlagsArgv] = []; - notFlags.forEach(function(key) { - argv[notFlagsArgv].push(key); - }); - if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) { - Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => { - delete argv[key]; - }); - } - if (configuration["strip-aliased"]) { - [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => { - if (configuration["camel-case-expansion"] && alias.includes("-")) { - delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")]; - } - delete argv[alias]; - }); - } - function pushPositional(arg) { - const maybeCoercedNumber = maybeCoerceNumber("_", arg); - if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") { - argv._.push(maybeCoercedNumber); - } - } - function eatNargs(i, key, args2, argAfterEqualSign) { - let ii; - let toEat = checkAllAliases(key, flags.nargs); - toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat; - if (toEat === 0) { - if (!isUndefined(argAfterEqualSign)) { - error = Error(__("Argument unexpected for: %s", key)); - } - setArg(key, defaultValue(key)); - return i; - } - let available = isUndefined(argAfterEqualSign) ? 0 : 1; - if (configuration["nargs-eats-options"]) { - if (args2.length - (i + 1) + available < toEat) { - error = Error(__("Not enough arguments following: %s", key)); - } - available = toEat; - } else { - for (ii = i + 1;ii < args2.length; ii++) { - if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii])) - available++; - else - break; - } - if (available < toEat) - error = Error(__("Not enough arguments following: %s", key)); - } - let consumed = Math.min(available, toEat); - if (!isUndefined(argAfterEqualSign) && consumed > 0) { - setArg(key, argAfterEqualSign); - consumed--; - } - for (ii = i + 1;ii < consumed + i + 1; ii++) { - setArg(key, args2[ii]); - } - return i + consumed; - } - function eatArray(i, key, args2, argAfterEqualSign) { - let argsToSet = []; - let next = argAfterEqualSign || args2[i + 1]; - const nargsCount = checkAllAliases(key, flags.nargs); - if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) { - argsToSet.push(true); - } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) { - if (defaults[key] !== undefined) { - const defVal = defaults[key]; - argsToSet = Array.isArray(defVal) ? defVal : [defVal]; - } - } else { - if (!isUndefined(argAfterEqualSign)) { - argsToSet.push(processValue(key, argAfterEqualSign)); - } - for (let ii = i + 1;ii < args2.length; ii++) { - if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) - break; - next = args2[ii]; - if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) - break; - i = ii; - argsToSet.push(processValue(key, next)); - } - } - if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) { - error = Error(__("Not enough arguments following: %s", key)); - } - setArg(key, argsToSet); - return i; - } - function setArg(key, val) { - if (/-/.test(key) && configuration["camel-case-expansion"]) { - const alias = key.split(".").map(function(prop) { - return camelCase(prop); - }).join("."); - addNewAlias(key, alias); - } - const value = processValue(key, val); - const splitKey = key.split("."); - setKey(argv, splitKey, value); - if (flags.aliases[key]) { - flags.aliases[key].forEach(function(x) { - const keyProperties = x.split("."); - setKey(argv, keyProperties, value); - }); - } - if (splitKey.length > 1 && configuration["dot-notation"]) { - (flags.aliases[splitKey[0]] || []).forEach(function(x) { - let keyProperties = x.split("."); - const a = [].concat(splitKey); - a.shift(); - keyProperties = keyProperties.concat(a); - if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) { - setKey(argv, keyProperties, value); - } - }); - } - if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { - const keys = [key].concat(flags.aliases[key] || []); - keys.forEach(function(key2) { - Object.defineProperty(argvReturn, key2, { - enumerable: true, - get() { - return val; - }, - set(value2) { - val = typeof value2 === "string" ? mixin2.normalize(value2) : value2; - } - }); - }); - } - } - function addNewAlias(key, alias) { - if (!(flags.aliases[key] && flags.aliases[key].length)) { - flags.aliases[key] = [alias]; - newAliases[alias] = true; - } - if (!(flags.aliases[alias] && flags.aliases[alias].length)) { - addNewAlias(alias, key); - } - } - function processValue(key, val) { - if (typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0]) { - val = val.substring(1, val.length - 1); - } - if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { - if (typeof val === "string") - val = val === "true"; - } - let value = Array.isArray(val) ? val.map(function(v) { - return maybeCoerceNumber(key, v); - }) : maybeCoerceNumber(key, val); - if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) { - value = increment(); - } - if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { - if (Array.isArray(val)) - value = val.map((val2) => { - return mixin2.normalize(val2); - }); - else - value = mixin2.normalize(val); - } - return value; - } - function maybeCoerceNumber(key, value) { - if (!configuration["parse-positional-numbers"] && key === "_") - return value; - if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { - const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))); - if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) { - value = Number(value); - } - } - return value; - } - function setConfig(argv2) { - const configLookup = Object.create(null); - applyDefaultsAndAliases(configLookup, flags.aliases, defaults); - Object.keys(flags.configs).forEach(function(configKey) { - const configPath = argv2[configKey] || configLookup[configKey]; - if (configPath) { - try { - let config = null; - const resolvedConfigPath = mixin2.resolve(mixin2.cwd(), configPath); - const resolveConfig = flags.configs[configKey]; - if (typeof resolveConfig === "function") { - try { - config = resolveConfig(resolvedConfigPath); - } catch (e) { - config = e; - } - if (config instanceof Error) { - error = config; - return; - } - } else { - config = mixin2.require(resolvedConfigPath); - } - setConfigObject(config); - } catch (ex) { - if (ex.name === "PermissionDenied") - error = ex; - else if (argv2[configKey]) - error = Error(__("Invalid JSON config file: %s", configPath)); - } - } - }); - } - function setConfigObject(config, prev) { - Object.keys(config).forEach(function(key) { - const value = config[key]; - const fullKey = prev ? prev + "." + key : key; - if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) { - setConfigObject(value, fullKey); - } else { - if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) { - setArg(fullKey, value); - } - } - }); - } - function setConfigObjects() { - if (typeof configObjects !== "undefined") { - configObjects.forEach(function(configObject) { - setConfigObject(configObject); - }); - } - } - function applyEnvVars(argv2, configOnly) { - if (typeof envPrefix === "undefined") - return; - const prefix = typeof envPrefix === "string" ? envPrefix : ""; - const env = mixin2.env(); - Object.keys(env).forEach(function(envVar) { - if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) { - const keys = envVar.split("__").map(function(key, i) { - if (i === 0) { - key = key.substring(prefix.length); - } - return camelCase(key); - }); - if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) { - setArg(keys.join("."), env[envVar]); - } - } - }); - } - function applyCoercions(argv2) { - let coerce; - const applied = new Set; - Object.keys(argv2).forEach(function(key) { - if (!applied.has(key)) { - coerce = checkAllAliases(key, flags.coercions); - if (typeof coerce === "function") { - try { - const value = maybeCoerceNumber(key, coerce(argv2[key])); - [].concat(flags.aliases[key] || [], key).forEach((ali) => { - applied.add(ali); - argv2[ali] = value; - }); - } catch (err) { - error = err; - } - } - } - }); - } - function setPlaceholderKeys(argv2) { - flags.keys.forEach((key) => { - if (~key.indexOf(".")) - return; - if (typeof argv2[key] === "undefined") - argv2[key] = undefined; - }); - return argv2; - } - function applyDefaultsAndAliases(obj, aliases2, defaults2, canLog = false) { - Object.keys(defaults2).forEach(function(key) { - if (!hasKey(obj, key.split("."))) { - setKey(obj, key.split("."), defaults2[key]); - if (canLog) - defaulted[key] = true; - (aliases2[key] || []).forEach(function(x) { - if (hasKey(obj, x.split("."))) - return; - setKey(obj, x.split("."), defaults2[key]); - }); - } - }); - } - function hasKey(obj, keys) { - let o = obj; - if (!configuration["dot-notation"]) - keys = [keys.join(".")]; - keys.slice(0, -1).forEach(function(key2) { - o = o[key2] || {}; - }); - const key = keys[keys.length - 1]; - if (typeof o !== "object") - return false; - else - return key in o; - } - function setKey(obj, keys, value) { - let o = obj; - if (!configuration["dot-notation"]) - keys = [keys.join(".")]; - keys.slice(0, -1).forEach(function(key2) { - key2 = sanitizeKey(key2); - if (typeof o === "object" && o[key2] === undefined) { - o[key2] = {}; - } - if (typeof o[key2] !== "object" || Array.isArray(o[key2])) { - if (Array.isArray(o[key2])) { - o[key2].push({}); - } else { - o[key2] = [o[key2], {}]; - } - o = o[key2][o[key2].length - 1]; - } else { - o = o[key2]; - } - }); - const key = sanitizeKey(keys[keys.length - 1]); - const isTypeArray = checkAllAliases(keys.join("."), flags.arrays); - const isValueArray = Array.isArray(value); - let duplicate = configuration["duplicate-arguments-array"]; - if (!duplicate && checkAllAliases(key, flags.nargs)) { - duplicate = true; - if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) { - o[key] = undefined; - } - } - if (value === increment()) { - o[key] = increment(o[key]); - } else if (Array.isArray(o[key])) { - if (duplicate && isTypeArray && isValueArray) { - o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); - } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { - o[key] = value; - } else { - o[key] = o[key].concat([value]); - } - } else if (o[key] === undefined && isTypeArray) { - o[key] = isValueArray ? value : [value]; - } else if (duplicate && !(o[key] === undefined || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) { - o[key] = [o[key], value]; - } else { - o[key] = value; - } - } - function extendAliases(...args2) { - args2.forEach(function(obj) { - Object.keys(obj || {}).forEach(function(key) { - if (flags.aliases[key]) - return; - flags.aliases[key] = [].concat(aliases[key] || []); - flags.aliases[key].concat(key).forEach(function(x) { - if (/-/.test(x) && configuration["camel-case-expansion"]) { - const c = camelCase(x); - if (c !== key && flags.aliases[key].indexOf(c) === -1) { - flags.aliases[key].push(c); - newAliases[c] = true; - } - } - }); - flags.aliases[key].concat(key).forEach(function(x) { - if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) { - const c = decamelize(x, "-"); - if (c !== key && flags.aliases[key].indexOf(c) === -1) { - flags.aliases[key].push(c); - newAliases[c] = true; - } - } - }); - flags.aliases[key].forEach(function(x) { - flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) { - return x !== y; - })); - }); - }); - }); - } - function checkAllAliases(key, flag) { - const toCheck = [].concat(flags.aliases[key] || [], key); - const keys = Object.keys(flag); - const setAlias = toCheck.find((key2) => keys.includes(key2)); - return setAlias ? flag[setAlias] : false; - } - function hasAnyFlag(key) { - const flagsKeys = Object.keys(flags); - const toCheck = [].concat(flagsKeys.map((k) => flags[k])); - return toCheck.some(function(flag) { - return Array.isArray(flag) ? flag.includes(key) : flag[key]; - }); - } - function hasFlagsMatching(arg, ...patterns) { - const toCheck = [].concat(...patterns); - return toCheck.some(function(pattern) { - const match = arg.match(pattern); - return match && hasAnyFlag(match[1]); - }); - } - function hasAllShortFlags(arg) { - if (arg.match(negative) || !arg.match(/^-[^-]+/)) { - return false; - } - let hasAllFlags = true; - let next; - const letters = arg.slice(1).split(""); - for (let j = 0;j < letters.length; j++) { - next = arg.slice(j + 2); - if (!hasAnyFlag(letters[j])) { - hasAllFlags = false; - break; - } - if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) { - break; - } - } - return hasAllFlags; - } - function isUnknownOptionAsArg(arg) { - return configuration["unknown-options-as-args"] && isUnknownOption(arg); - } - function isUnknownOption(arg) { - arg = arg.replace(/^-{3,}/, "--"); - if (arg.match(negative)) { - return false; - } - if (hasAllShortFlags(arg)) { - return false; - } - const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; - const normalFlag = /^-+([^=]+?)$/; - const flagEndingInHyphen = /^-+([^=]+?)-$/; - const flagEndingInDigits = /^-+([^=]+?\d+)$/; - const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; - return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); - } - function defaultValue(key) { - if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && (`${key}` in defaults)) { - return defaults[key]; - } else { - return defaultForType(guessType(key)); - } - } - function defaultForType(type) { - const def = { - [DefaultValuesForTypeKey.BOOLEAN]: true, - [DefaultValuesForTypeKey.STRING]: "", - [DefaultValuesForTypeKey.NUMBER]: undefined, - [DefaultValuesForTypeKey.ARRAY]: [] - }; - return def[type]; - } - function guessType(key) { - let type = DefaultValuesForTypeKey.BOOLEAN; - if (checkAllAliases(key, flags.strings)) - type = DefaultValuesForTypeKey.STRING; - else if (checkAllAliases(key, flags.numbers)) - type = DefaultValuesForTypeKey.NUMBER; - else if (checkAllAliases(key, flags.bools)) - type = DefaultValuesForTypeKey.BOOLEAN; - else if (checkAllAliases(key, flags.arrays)) - type = DefaultValuesForTypeKey.ARRAY; - return type; - } - function isUndefined(num) { - return num === undefined; - } - function checkConfiguration() { - Object.keys(flags.counts).find((key) => { - if (checkAllAliases(key, flags.arrays)) { - error = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key)); - return true; - } else if (checkAllAliases(key, flags.nargs)) { - error = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key)); - return true; - } - return false; - }); - } - return { - aliases: Object.assign({}, flags.aliases), - argv: Object.assign(argvReturn, argv), - configuration, - defaulted: Object.assign({}, defaulted), - error, - newAliases: Object.assign({}, newAliases) - }; - } -} - -// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js -var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 10; -if (process && process.version) { - const major = Number(process.version.match(/v([^.]+)/)[1]); - if (major < minNodeVersion) { - throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); - } -} -var env = process ? process.env : {}; -var parser = new YargsParser({ - cwd: process.cwd, - env: () => { - return env; - }, - format, - normalize, - resolve: resolve2, - require: (path) => { - if (typeof require !== "undefined") { - return import.meta.require(path); - } else if (path.match(/\.json$/)) { - return readFileSync(path, "utf8"); - } else { - throw Error("only .json config files are supported in ESM"); - } - } -}); -var yargsParser = function Parser(args, opts) { - const result = parser.parse(args.slice(), opts); - return result.argv; -}; -yargsParser.detailed = function(args, opts) { - return parser.parse(args.slice(), opts); -}; -yargsParser.camelCase = camelCase; -yargsParser.decamelize = decamelize; -yargsParser.looksLikeNumber = looksLikeNumber; -var lib_default = yargsParser; - -// node_modules/yargs/lib/platform-shims/esm.mjs -import {basename, dirname as dirname2, extname, relative, resolve as resolve4} from "path"; - -// node_modules/yargs/build/lib/utils/process-argv.js -var getProcessArgvBinIndex = function() { - if (isBundledElectronApp()) - return 0; - return 1; -}; -var isBundledElectronApp = function() { - return isElectronApp() && !process.defaultApp; -}; -var isElectronApp = function() { - return !!process.versions.electron; -}; -function getProcessArgvBin() { - return process.argv[getProcessArgvBinIndex()]; -} - -// node_modules/yargs/build/lib/yerror.js -class YError extends Error { - constructor(msg) { - super(msg || "yargs error"); - this.name = "YError"; - Error.captureStackTrace(this, YError); - } -} - -// node_modules/y18n/build/lib/platform-shims/node.js -import {readFileSync as readFileSync2, statSync as statSync2, writeFile} from "fs"; -import {format as format2} from "util"; -import {resolve as resolve3} from "path"; -var node_default = { - fs: { - readFileSync: readFileSync2, - writeFile - }, - format: format2, - resolve: resolve3, - exists: (file) => { - try { - return statSync2(file).isFile(); - } catch (err) { - return false; - } - } -}; - -// node_modules/y18n/build/lib/index.js -function y18n(opts, _shim) { - shim = _shim; - const y18n2 = new Y18N(opts); - return { - __: y18n2.__.bind(y18n2), - __n: y18n2.__n.bind(y18n2), - setLocale: y18n2.setLocale.bind(y18n2), - getLocale: y18n2.getLocale.bind(y18n2), - updateLocale: y18n2.updateLocale.bind(y18n2), - locale: y18n2.locale - }; -} -var shim; - -class Y18N { - constructor(opts) { - opts = opts || {}; - this.directory = opts.directory || "./locales"; - this.updateFiles = typeof opts.updateFiles === "boolean" ? opts.updateFiles : true; - this.locale = opts.locale || "en"; - this.fallbackToLanguage = typeof opts.fallbackToLanguage === "boolean" ? opts.fallbackToLanguage : true; - this.cache = Object.create(null); - this.writeQueue = []; - } - __(...args) { - if (typeof arguments[0] !== "string") { - return this._taggedLiteral(arguments[0], ...arguments); - } - const str = args.shift(); - let cb = function() { - }; - if (typeof args[args.length - 1] === "function") - cb = args.pop(); - cb = cb || function() { - }; - if (!this.cache[this.locale]) - this._readLocaleFile(); - if (!this.cache[this.locale][str] && this.updateFiles) { - this.cache[this.locale][str] = str; - this._enqueueWrite({ - directory: this.directory, - locale: this.locale, - cb - }); - } else { - cb(); - } - return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); - } - __n() { - const args = Array.prototype.slice.call(arguments); - const singular = args.shift(); - const plural = args.shift(); - const quantity = args.shift(); - let cb = function() { - }; - if (typeof args[args.length - 1] === "function") - cb = args.pop(); - if (!this.cache[this.locale]) - this._readLocaleFile(); - let str = quantity === 1 ? singular : plural; - if (this.cache[this.locale][singular]) { - const entry = this.cache[this.locale][singular]; - str = entry[quantity === 1 ? "one" : "other"]; - } - if (!this.cache[this.locale][singular] && this.updateFiles) { - this.cache[this.locale][singular] = { - one: singular, - other: plural - }; - this._enqueueWrite({ - directory: this.directory, - locale: this.locale, - cb - }); - } else { - cb(); - } - const values = [str]; - if (~str.indexOf("%d")) - values.push(quantity); - return shim.format.apply(shim.format, values.concat(args)); - } - setLocale(locale) { - this.locale = locale; - } - getLocale() { - return this.locale; - } - updateLocale(obj) { - if (!this.cache[this.locale]) - this._readLocaleFile(); - for (const key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - this.cache[this.locale][key] = obj[key]; - } - } - } - _taggedLiteral(parts, ...args) { - let str = ""; - parts.forEach(function(part, i) { - const arg = args[i + 1]; - str += part; - if (typeof arg !== "undefined") { - str += "%s"; - } - }); - return this.__.apply(this, [str].concat([].slice.call(args, 1))); - } - _enqueueWrite(work) { - this.writeQueue.push(work); - if (this.writeQueue.length === 1) - this._processWriteQueue(); - } - _processWriteQueue() { - const _this = this; - const work = this.writeQueue[0]; - const directory = work.directory; - const locale = work.locale; - const cb = work.cb; - const languageFile = this._resolveLocaleFile(directory, locale); - const serializedLocale = JSON.stringify(this.cache[locale], null, 2); - shim.fs.writeFile(languageFile, serializedLocale, "utf-8", function(err) { - _this.writeQueue.shift(); - if (_this.writeQueue.length > 0) - _this._processWriteQueue(); - cb(err); - }); - } - _readLocaleFile() { - let localeLookup = {}; - const languageFile = this._resolveLocaleFile(this.directory, this.locale); - try { - if (shim.fs.readFileSync) { - localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, "utf-8")); - } - } catch (err) { - if (err instanceof SyntaxError) { - err.message = "syntax error in " + languageFile; - } - if (err.code === "ENOENT") - localeLookup = {}; - else - throw err; - } - this.cache[this.locale] = localeLookup; - } - _resolveLocaleFile(directory, locale) { - let file = shim.resolve(directory, "./", locale + ".json"); - if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf("_")) { - const languageFile = shim.resolve(directory, "./", locale.split("_")[0] + ".json"); - if (this._fileExistsSync(languageFile)) - file = languageFile; - } - return file; - } - _fileExistsSync(file) { - return shim.exists(file); - } -} - -// node_modules/y18n/index.mjs -var y18n2 = (opts) => { - return y18n(opts, node_default); -}; -var y18n_default = y18n2; - -// node_modules/yargs/lib/platform-shims/esm.mjs -var REQUIRE_ERROR = "require is not supported by ESM"; -var REQUIRE_DIRECTORY_ERROR = "loading a directory of commands is not supported yet for ESM"; -var mainFilename = fileURLToPath(import.meta.url).split("node_modules")[0]; -var __dirname2 = fileURLToPath(import.meta.url); -var esm_default = { - assert: { - notStrictEqual, - strictEqual - }, - cliui: ui, - findUp: sync_default, - getEnv: (key) => { - return process.env[key]; - }, - inspect, - getCallerFile: () => { - throw new YError(REQUIRE_DIRECTORY_ERROR); - }, - getProcessArgvBin, - mainFilename: mainFilename || process.cwd(), - Parser: lib_default, - path: { - basename, - dirname: dirname2, - extname, - relative, - resolve: resolve4 - }, - process: { - argv: () => process.argv, - cwd: process.cwd, - execPath: () => process.execPath, - exit: process.exit, - nextTick: process.nextTick, - stdColumns: typeof process.stdout.columns !== "undefined" ? process.stdout.columns : null - }, - readFileSync: readFileSync3, - require: () => { - throw new YError(REQUIRE_ERROR); - }, - requireDirectory: () => { - throw new YError(REQUIRE_DIRECTORY_ERROR); - }, - stringWidth: (str) => { - return [...str].length; - }, - y18n: y18n_default({ - directory: resolve4(__dirname2, "../../../locales"), - updateFiles: false - }) -}; - -// node_modules/yargs/build/lib/typings/common-types.js -function assertNotStrictEqual(actual, expected, shim2, message) { - shim2.assert.notStrictEqual(actual, expected, message); -} -function assertSingleKey(actual, shim2) { - shim2.assert.strictEqual(typeof actual, "string"); -} -function objectKeys(object) { - return Object.keys(object); -} - -// node_modules/yargs/build/lib/utils/is-promise.js -function isPromise(maybePromise) { - return !!maybePromise && !!maybePromise.then && typeof maybePromise.then === "function"; -} - -// node_modules/yargs/build/lib/parse-command.js -function parseCommand(cmd) { - const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, " "); - const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); - const bregex = /\.*[\][<>]/g; - const firstCommand = splitCommand.shift(); - if (!firstCommand) - throw new Error(`No command found in: ${cmd}`); - const parsedCommand = { - cmd: firstCommand.replace(bregex, ""), - demanded: [], - optional: [] - }; - splitCommand.forEach((cmd2, i) => { - let variadic = false; - cmd2 = cmd2.replace(/\s/g, ""); - if (/\.+[\]>]/.test(cmd2) && i === splitCommand.length - 1) - variadic = true; - if (/^\[/.test(cmd2)) { - parsedCommand.optional.push({ - cmd: cmd2.replace(bregex, "").split("|"), - variadic - }); - } else { - parsedCommand.demanded.push({ - cmd: cmd2.replace(bregex, "").split("|"), - variadic - }); - } - }); - return parsedCommand; -} - -// node_modules/yargs/build/lib/argsert.js -function argsert(arg1, arg2, arg3) { - function parseArgs() { - return typeof arg1 === "object" ? [{ demanded: [], optional: [] }, arg1, arg2] : [ - parseCommand(`cmd ${arg1}`), - arg2, - arg3 - ]; - } - try { - let position = 0; - const [parsed, callerArguments, _length] = parseArgs(); - const args = [].slice.call(callerArguments); - while (args.length && args[args.length - 1] === undefined) - args.pop(); - const length = _length || args.length; - if (length < parsed.demanded.length) { - throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); - } - const totalCommands = parsed.demanded.length + parsed.optional.length; - if (length > totalCommands) { - throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); - } - parsed.demanded.forEach((demanded) => { - const arg = args.shift(); - const observedType = guessType(arg); - const matchingTypes = demanded.cmd.filter((type) => type === observedType || type === "*"); - if (matchingTypes.length === 0) - argumentTypeError(observedType, demanded.cmd, position); - position += 1; - }); - parsed.optional.forEach((optional) => { - if (args.length === 0) - return; - const arg = args.shift(); - const observedType = guessType(arg); - const matchingTypes = optional.cmd.filter((type) => type === observedType || type === "*"); - if (matchingTypes.length === 0) - argumentTypeError(observedType, optional.cmd, position); - position += 1; - }); - } catch (err) { - console.warn(err.stack); - } -} -var guessType = function(arg) { - if (Array.isArray(arg)) { - return "array"; - } else if (arg === null) { - return "null"; - } - return typeof arg; -}; -var argumentTypeError = function(observedType, allowedTypes, position) { - throw new YError(`Invalid ${positionName[position] || "manyith"} argument. Expected ${allowedTypes.join(" or ")} but received ${observedType}.`); -}; -var positionName = ["first", "second", "third", "fourth", "fifth", "sixth"]; - -// node_modules/yargs/build/lib/middleware.js -function globalMiddlewareFactory(globalMiddleware, context) { - return function(callback, applyBeforeValidation = false) { - argsert(" [boolean]", [callback, applyBeforeValidation], arguments.length); - if (Array.isArray(callback)) { - for (let i = 0;i < callback.length; i++) { - if (typeof callback[i] !== "function") { - throw Error("middleware must be a function"); - } - callback[i].applyBeforeValidation = applyBeforeValidation; - } - Array.prototype.push.apply(globalMiddleware, callback); - } else if (typeof callback === "function") { - callback.applyBeforeValidation = applyBeforeValidation; - globalMiddleware.push(callback); - } - return context; - }; -} -function commandMiddlewareFactory(commandMiddleware) { - if (!commandMiddleware) - return []; - return commandMiddleware.map((middleware) => { - middleware.applyBeforeValidation = false; - return middleware; - }); -} -function applyMiddleware(argv, yargs, middlewares, beforeValidation) { - const beforeValidationError = new Error("middleware cannot return a promise when applyBeforeValidation is true"); - return middlewares.reduce((acc, middleware) => { - if (middleware.applyBeforeValidation !== beforeValidation) { - return acc; - } - if (isPromise(acc)) { - return acc.then((initialObj) => Promise.all([ - initialObj, - middleware(initialObj, yargs) - ])).then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); - } else { - const result = middleware(acc, yargs); - if (beforeValidation && isPromise(result)) - throw beforeValidationError; - return isPromise(result) ? result.then((middlewareObj) => Object.assign(acc, middlewareObj)) : Object.assign(acc, result); - } - }, argv); -} - -// node_modules/yargs/build/lib/utils/which-module.js -function whichModule(exported) { - if (typeof require === "undefined") - return null; - for (let i = 0, files = Object.keys(require.cache), mod;i < files.length; i++) { - mod = require.cache[files[i]]; - if (mod.exports === exported) - return mod; - } - return null; -} - -// node_modules/yargs/build/lib/command.js -function command(yargs, usage, validation, globalMiddleware = [], shim2) { - const self = {}; - let handlers = {}; - let aliasMap = {}; - let defaultCommand; - self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { - let aliases = []; - const middlewares = commandMiddlewareFactory(commandMiddleware); - handler = handler || (() => { - }); - if (Array.isArray(cmd)) { - if (isCommandAndAliases(cmd)) { - [cmd, ...aliases] = cmd; - } else { - for (const command2 of cmd) { - self.addHandler(command2); - } - } - } else if (isCommandHandlerDefinition(cmd)) { - let command2 = Array.isArray(cmd.command) || typeof cmd.command === "string" ? cmd.command : moduleName(cmd); - if (cmd.aliases) - command2 = [].concat(command2).concat(cmd.aliases); - self.addHandler(command2, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); - return; - } else if (isCommandBuilderDefinition(builder)) { - self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); - return; - } - if (typeof cmd === "string") { - const parsedCommand = parseCommand(cmd); - aliases = aliases.map((alias) => parseCommand(alias).cmd); - let isDefault = false; - const parsedAliases = [parsedCommand.cmd].concat(aliases).filter((c) => { - if (DEFAULT_MARKER.test(c)) { - isDefault = true; - return false; - } - return true; - }); - if (parsedAliases.length === 0 && isDefault) - parsedAliases.push("$0"); - if (isDefault) { - parsedCommand.cmd = parsedAliases[0]; - aliases = parsedAliases.slice(1); - cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); - } - aliases.forEach((alias) => { - aliasMap[alias] = parsedCommand.cmd; - }); - if (description !== false) { - usage.command(cmd, description, isDefault, aliases, deprecated); - } - handlers[parsedCommand.cmd] = { - original: cmd, - description, - handler, - builder: builder || {}, - middlewares, - deprecated, - demanded: parsedCommand.demanded, - optional: parsedCommand.optional - }; - if (isDefault) - defaultCommand = handlers[parsedCommand.cmd]; - } - }; - self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) { - opts = opts || {}; - if (typeof opts.recurse !== "boolean") - opts.recurse = false; - if (!Array.isArray(opts.extensions)) - opts.extensions = ["js"]; - const parentVisit = typeof opts.visit === "function" ? opts.visit : (o) => o; - opts.visit = function visit(obj, joined, filename) { - const visited = parentVisit(obj, joined, filename); - if (visited) { - if (~context.files.indexOf(joined)) - return visited; - context.files.push(joined); - self.addHandler(visited); - } - return visited; - }; - shim2.requireDirectory({ require: req, filename: callerFile }, dir, opts); - }; - function moduleName(obj) { - const mod = whichModule(obj); - if (!mod) - throw new Error(`No command name given for module: ${shim2.inspect(obj)}`); - return commandFromFilename(mod.filename); - } - function commandFromFilename(filename) { - return shim2.path.basename(filename, shim2.path.extname(filename)); - } - function extractDesc({ describe, description, desc }) { - for (const test of [describe, description, desc]) { - if (typeof test === "string" || test === false) - return test; - assertNotStrictEqual(test, true, shim2); - } - return false; - } - self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap)); - self.getCommandHandlers = () => handlers; - self.hasDefaultCommand = () => !!defaultCommand; - self.runCommand = function runCommand(command2, yargs2, parsed, commandIndex) { - let aliases = parsed.aliases; - const commandHandler = handlers[command2] || handlers[aliasMap[command2]] || defaultCommand; - const currentContext = yargs2.getContext(); - let numFiles = currentContext.files.length; - const parentCommands = currentContext.commands.slice(); - let innerArgv = parsed.argv; - let positionalMap = {}; - if (command2) { - currentContext.commands.push(command2); - currentContext.fullCommands.push(commandHandler.original); - } - const builder = commandHandler.builder; - if (isCommandBuilderCallback(builder)) { - const builderOutput = builder(yargs2.reset(parsed.aliases)); - const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs2; - if (shouldUpdateUsage(innerYargs)) { - innerYargs.getUsageInstance().usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); - } - innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); - aliases = innerYargs.parsed.aliases; - } else if (isCommandBuilderOptionDefinitions(builder)) { - const innerYargs = yargs2.reset(parsed.aliases); - if (shouldUpdateUsage(innerYargs)) { - innerYargs.getUsageInstance().usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); - } - Object.keys(commandHandler.builder).forEach((key) => { - innerYargs.option(key, builder[key]); - }); - innerArgv = innerYargs._parseArgs(null, null, true, commandIndex); - aliases = innerYargs.parsed.aliases; - } - if (!yargs2._hasOutput()) { - positionalMap = populatePositionals(commandHandler, innerArgv, currentContext); - } - const middlewares = globalMiddleware.slice(0).concat(commandHandler.middlewares); - applyMiddleware(innerArgv, yargs2, middlewares, true); - if (!yargs2._hasOutput()) { - yargs2._runValidation(innerArgv, aliases, positionalMap, yargs2.parsed.error, !command2); - } - if (commandHandler.handler && !yargs2._hasOutput()) { - yargs2._setHasOutput(); - const populateDoubleDash = !!yargs2.getOptions().configuration["populate--"]; - yargs2._postProcess(innerArgv, populateDoubleDash); - innerArgv = applyMiddleware(innerArgv, yargs2, middlewares, false); - let handlerResult; - if (isPromise(innerArgv)) { - handlerResult = innerArgv.then((argv) => commandHandler.handler(argv)); - } else { - handlerResult = commandHandler.handler(innerArgv); - } - const handlerFinishCommand = yargs2.getHandlerFinishCommand(); - if (isPromise(handlerResult)) { - yargs2.getUsageInstance().cacheHelpMessage(); - handlerResult.then((value) => { - if (handlerFinishCommand) { - handlerFinishCommand(value); - } - }).catch((error) => { - try { - yargs2.getUsageInstance().fail(null, error); - } catch (err) { - } - }).then(() => { - yargs2.getUsageInstance().clearCachedHelpMessage(); - }); - } else { - if (handlerFinishCommand) { - handlerFinishCommand(handlerResult); - } - } - } - if (command2) { - currentContext.commands.pop(); - currentContext.fullCommands.pop(); - } - numFiles = currentContext.files.length - numFiles; - if (numFiles > 0) - currentContext.files.splice(numFiles * -1, numFiles); - return innerArgv; - }; - function shouldUpdateUsage(yargs2) { - return !yargs2.getUsageInstance().getUsageDisabled() && yargs2.getUsageInstance().getUsage().length === 0; - } - function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { - const c = DEFAULT_MARKER.test(commandHandler.original) ? commandHandler.original.replace(DEFAULT_MARKER, "").trim() : commandHandler.original; - const pc = parentCommands.filter((c2) => { - return !DEFAULT_MARKER.test(c2); - }); - pc.push(c); - return `\$0 ${pc.join(" ")}`; - } - self.runDefaultBuilderOn = function(yargs2) { - assertNotStrictEqual(defaultCommand, undefined, shim2); - if (shouldUpdateUsage(yargs2)) { - const commandString = DEFAULT_MARKER.test(defaultCommand.original) ? defaultCommand.original : defaultCommand.original.replace(/^[^[\]<>]*/, "$0 "); - yargs2.getUsageInstance().usage(commandString, defaultCommand.description); - } - const builder = defaultCommand.builder; - if (isCommandBuilderCallback(builder)) { - builder(yargs2); - } else if (!isCommandBuilderDefinition(builder)) { - Object.keys(builder).forEach((key) => { - yargs2.option(key, builder[key]); - }); - } - }; - function populatePositionals(commandHandler, argv, context) { - argv._ = argv._.slice(context.commands.length); - const demanded = commandHandler.demanded.slice(0); - const optional = commandHandler.optional.slice(0); - const positionalMap = {}; - validation.positionalCount(demanded.length, argv._.length); - while (demanded.length) { - const demand = demanded.shift(); - populatePositional(demand, argv, positionalMap); - } - while (optional.length) { - const maybe = optional.shift(); - populatePositional(maybe, argv, positionalMap); - } - argv._ = context.commands.concat(argv._.map((a) => "" + a)); - postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original)); - return positionalMap; - } - function populatePositional(positional, argv, positionalMap) { - const cmd = positional.cmd[0]; - if (positional.variadic) { - positionalMap[cmd] = argv._.splice(0).map(String); - } else { - if (argv._.length) - positionalMap[cmd] = [String(argv._.shift())]; - } - } - function postProcessPositionals(argv, positionalMap, parseOptions) { - const options = Object.assign({}, yargs.getOptions()); - options.default = Object.assign(parseOptions.default, options.default); - for (const key of Object.keys(parseOptions.alias)) { - options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); - } - options.array = options.array.concat(parseOptions.array); - options.config = {}; - const unparsed = []; - Object.keys(positionalMap).forEach((key) => { - positionalMap[key].map((value) => { - if (options.configuration["unknown-options-as-args"]) - options.key[key] = true; - unparsed.push(`--${key}`); - unparsed.push(value); - }); - }); - if (!unparsed.length) - return; - const config = Object.assign({}, options.configuration, { - "populate--": true - }); - const parsed = shim2.Parser.detailed(unparsed, Object.assign({}, options, { - configuration: config - })); - if (parsed.error) { - yargs.getUsageInstance().fail(parsed.error.message, parsed.error); - } else { - const positionalKeys = Object.keys(positionalMap); - Object.keys(positionalMap).forEach((key) => { - positionalKeys.push(...parsed.aliases[key]); - }); - Object.keys(parsed.argv).forEach((key) => { - if (positionalKeys.indexOf(key) !== -1) { - if (!positionalMap[key]) - positionalMap[key] = parsed.argv[key]; - argv[key] = parsed.argv[key]; - } - }); - } - } - self.cmdToParseOptions = function(cmdString) { - const parseOptions = { - array: [], - default: {}, - alias: {}, - demand: {} - }; - const parsed = parseCommand(cmdString); - parsed.demanded.forEach((d) => { - const [cmd, ...aliases] = d.cmd; - if (d.variadic) { - parseOptions.array.push(cmd); - parseOptions.default[cmd] = []; - } - parseOptions.alias[cmd] = aliases; - parseOptions.demand[cmd] = true; - }); - parsed.optional.forEach((o) => { - const [cmd, ...aliases] = o.cmd; - if (o.variadic) { - parseOptions.array.push(cmd); - parseOptions.default[cmd] = []; - } - parseOptions.alias[cmd] = aliases; - }); - return parseOptions; - }; - self.reset = () => { - handlers = {}; - aliasMap = {}; - defaultCommand = undefined; - return self; - }; - const frozens = []; - self.freeze = () => { - frozens.push({ - handlers, - aliasMap, - defaultCommand - }); - }; - self.unfreeze = () => { - const frozen = frozens.pop(); - assertNotStrictEqual(frozen, undefined, shim2); - ({ handlers, aliasMap, defaultCommand } = frozen); - }; - return self; -} -function isCommandBuilderDefinition(builder) { - return typeof builder === "object" && !!builder.builder && typeof builder.handler === "function"; -} -var isCommandAndAliases = function(cmd) { - if (cmd.every((c) => typeof c === "string")) { - return true; - } else { - return false; - } -}; -function isCommandBuilderCallback(builder) { - return typeof builder === "function"; -} -var isCommandBuilderOptionDefinitions = function(builder) { - return typeof builder === "object"; -}; -function isCommandHandlerDefinition(cmd) { - return typeof cmd === "object" && !Array.isArray(cmd); -} -var DEFAULT_MARKER = /(^\*)|(^\$0)/; - -// node_modules/yargs/build/lib/utils/obj-filter.js -function objFilter(original = {}, filter = () => true) { - const obj = {}; - objectKeys(original).forEach((key) => { - if (filter(key, original[key])) { - obj[key] = original[key]; - } - }); - return obj; -} - -// node_modules/yargs/build/lib/utils/set-blocking.js -function setBlocking(blocking) { - if (typeof process === "undefined") - return; - [process.stdout, process.stderr].forEach((_stream) => { - const stream = _stream; - if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === "function") { - stream._handle.setBlocking(blocking); - } - }); -} - -// node_modules/yargs/build/lib/usage.js -function usage(yargs, y18n3, shim2) { - const __ = y18n3.__; - const self = {}; - const fails = []; - self.failFn = function failFn(f) { - fails.push(f); - }; - let failMessage = null; - let showHelpOnFail = true; - self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { - function parseFunctionArgs() { - return typeof arg1 === "string" ? [true, arg1] : [arg1, arg2]; - } - const [enabled, message] = parseFunctionArgs(); - failMessage = message; - showHelpOnFail = enabled; - return self; - }; - let failureOutput = false; - self.fail = function fail(msg, err) { - const logger = yargs._getLoggerInstance(); - if (fails.length) { - for (let i = fails.length - 1;i >= 0; --i) { - fails[i](msg, err, self); - } - } else { - if (yargs.getExitProcess()) - setBlocking(true); - if (!failureOutput) { - failureOutput = true; - if (showHelpOnFail) { - yargs.showHelp("error"); - logger.error(); - } - if (msg || err) - logger.error(msg || err); - if (failMessage) { - if (msg || err) - logger.error(""); - logger.error(failMessage); - } - } - err = err || new YError(msg); - if (yargs.getExitProcess()) { - return yargs.exit(1); - } else if (yargs._hasParseCallback()) { - return yargs.exit(1, err); - } else { - throw err; - } - } - }; - let usages = []; - let usageDisabled = false; - self.usage = (msg, description) => { - if (msg === null) { - usageDisabled = true; - usages = []; - return self; - } - usageDisabled = false; - usages.push([msg, description || ""]); - return self; - }; - self.getUsage = () => { - return usages; - }; - self.getUsageDisabled = () => { - return usageDisabled; - }; - self.getPositionalGroupName = () => { - return __("Positionals:"); - }; - let examples = []; - self.example = (cmd, description) => { - examples.push([cmd, description || ""]); - }; - let commands = []; - self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { - if (isDefault) { - commands = commands.map((cmdArray) => { - cmdArray[2] = false; - return cmdArray; - }); - } - commands.push([cmd, description || "", isDefault, aliases, deprecated]); - }; - self.getCommands = () => commands; - let descriptions = {}; - self.describe = function describe(keyOrKeys, desc) { - if (Array.isArray(keyOrKeys)) { - keyOrKeys.forEach((k) => { - self.describe(k, desc); - }); - } else if (typeof keyOrKeys === "object") { - Object.keys(keyOrKeys).forEach((k) => { - self.describe(k, keyOrKeys[k]); - }); - } else { - descriptions[keyOrKeys] = desc; - } - }; - self.getDescriptions = () => descriptions; - let epilogs = []; - self.epilog = (msg) => { - epilogs.push(msg); - }; - let wrapSet = false; - let wrap2; - self.wrap = (cols) => { - wrapSet = true; - wrap2 = cols; - }; - function getWrap() { - if (!wrapSet) { - wrap2 = windowWidth(); - wrapSet = true; - } - return wrap2; - } - const deferY18nLookupPrefix = "__yargsString__:"; - self.deferY18nLookup = (str) => deferY18nLookupPrefix + str; - self.help = function help() { - if (cachedHelpMessage) - return cachedHelpMessage; - normalizeAliases(); - const base$0 = yargs.customScriptName ? yargs.$0 : shim2.path.basename(yargs.$0); - const demandedOptions = yargs.getDemandedOptions(); - const demandedCommands = yargs.getDemandedCommands(); - const deprecatedOptions = yargs.getDeprecatedOptions(); - const groups = yargs.getGroups(); - const options = yargs.getOptions(); - let keys = []; - keys = keys.concat(Object.keys(descriptions)); - keys = keys.concat(Object.keys(demandedOptions)); - keys = keys.concat(Object.keys(demandedCommands)); - keys = keys.concat(Object.keys(options.default)); - keys = keys.filter(filterHiddenOptions); - keys = Object.keys(keys.reduce((acc, key) => { - if (key !== "_") - acc[key] = true; - return acc; - }, {})); - const theWrap = getWrap(); - const ui2 = shim2.cliui({ - width: theWrap, - wrap: !!theWrap - }); - if (!usageDisabled) { - if (usages.length) { - usages.forEach((usage2) => { - ui2.div(`${usage2[0].replace(/\$0/g, base$0)}`); - if (usage2[1]) { - ui2.div({ text: `${usage2[1]}`, padding: [1, 0, 0, 0] }); - } - }); - ui2.div(); - } else if (commands.length) { - let u = null; - if (demandedCommands._) { - u = `${base$0} <${__("command")}>\n`; - } else { - u = `${base$0} [${__("command")}]\n`; - } - ui2.div(`${u}`); - } - } - if (commands.length) { - ui2.div(__("Commands:")); - const context = yargs.getContext(); - const parentCommands = context.commands.length ? `${context.commands.join(" ")} ` : ""; - if (yargs.getParserConfiguration()["sort-commands"] === true) { - commands = commands.sort((a, b) => a[0].localeCompare(b[0])); - } - commands.forEach((command2) => { - const commandString = `${base$0} ${parentCommands}${command2[0].replace(/^\$0 ?/, "")}`; - ui2.span({ - text: commandString, - padding: [0, 2, 0, 2], - width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4 - }, { text: command2[1] }); - const hints = []; - if (command2[2]) - hints.push(`[${__("default")}]`); - if (command2[3] && command2[3].length) { - hints.push(`[${__("aliases:")} ${command2[3].join(", ")}]`); - } - if (command2[4]) { - if (typeof command2[4] === "string") { - hints.push(`[${__("deprecated: %s", command2[4])}]`); - } else { - hints.push(`[${__("deprecated")}]`); - } - } - if (hints.length) { - ui2.div({ - text: hints.join(" "), - padding: [0, 0, 0, 2], - align: "right" - }); - } else { - ui2.div(); - } - }); - ui2.div(); - } - const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); - keys = keys.filter((key) => !yargs.parsed.newAliases[key] && aliasKeys.every((alias) => (options.alias[alias] || []).indexOf(key) === -1)); - const defaultGroup = __("Options:"); - if (!groups[defaultGroup]) - groups[defaultGroup] = []; - addUngroupedKeys(keys, options.alias, groups, defaultGroup); - const isLongSwitch = (sw) => /^--/.test(getText(sw)); - const displayedGroups = Object.keys(groups).filter((groupName) => groups[groupName].length > 0).map((groupName) => { - const normalizedKeys = groups[groupName].filter(filterHiddenOptions).map((key) => { - if (~aliasKeys.indexOf(key)) - return key; - for (let i = 0, aliasKey;(aliasKey = aliasKeys[i]) !== undefined; i++) { - if (~(options.alias[aliasKey] || []).indexOf(key)) - return aliasKey; - } - return key; - }); - return { groupName, normalizedKeys }; - }).filter(({ normalizedKeys }) => normalizedKeys.length > 0).map(({ groupName, normalizedKeys }) => { - const switches = normalizedKeys.reduce((acc, key) => { - acc[key] = [key].concat(options.alias[key] || []).map((sw) => { - if (groupName === self.getPositionalGroupName()) - return sw; - else { - return (/^[0-9]$/.test(sw) ? ~options.boolean.indexOf(key) ? "-" : "--" : sw.length > 1 ? "--" : "-") + sw; - } - }).sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) ? 0 : isLongSwitch(sw1) ? 1 : -1).join(", "); - return acc; - }, {}); - return { groupName, normalizedKeys, switches }; - }); - const shortSwitchesUsed = displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).some(({ normalizedKeys, switches }) => !normalizedKeys.every((key) => isLongSwitch(switches[key]))); - if (shortSwitchesUsed) { - displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).forEach(({ normalizedKeys, switches }) => { - normalizedKeys.forEach((key) => { - if (isLongSwitch(switches[key])) { - switches[key] = addIndentation(switches[key], "-x, ".length); - } - }); - }); - } - displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { - ui2.div(groupName); - normalizedKeys.forEach((key) => { - const kswitch = switches[key]; - let desc = descriptions[key] || ""; - let type = null; - if (~desc.lastIndexOf(deferY18nLookupPrefix)) - desc = __(desc.substring(deferY18nLookupPrefix.length)); - if (~options.boolean.indexOf(key)) - type = `[${__("boolean")}]`; - if (~options.count.indexOf(key)) - type = `[${__("count")}]`; - if (~options.string.indexOf(key)) - type = `[${__("string")}]`; - if (~options.normalize.indexOf(key)) - type = `[${__("string")}]`; - if (~options.array.indexOf(key)) - type = `[${__("array")}]`; - if (~options.number.indexOf(key)) - type = `[${__("number")}]`; - const deprecatedExtra = (deprecated) => typeof deprecated === "string" ? `[${__("deprecated: %s", deprecated)}]` : `[${__("deprecated")}]`; - const extra = [ - key in deprecatedOptions ? deprecatedExtra(deprecatedOptions[key]) : null, - type, - key in demandedOptions ? `[${__("required")}]` : null, - options.choices && options.choices[key] ? `[${__("choices:")} ${self.stringifiedValues(options.choices[key])}]` : null, - defaultString(options.default[key], options.defaultDescription[key]) - ].filter(Boolean).join(" "); - ui2.span({ - text: getText(kswitch), - padding: [0, 2, 0, 2 + getIndentation(kswitch)], - width: maxWidth(switches, theWrap) + 4 - }, desc); - if (extra) - ui2.div({ text: extra, padding: [0, 0, 0, 2], align: "right" }); - else - ui2.div(); - }); - ui2.div(); - }); - if (examples.length) { - ui2.div(__("Examples:")); - examples.forEach((example) => { - example[0] = example[0].replace(/\$0/g, base$0); - }); - examples.forEach((example) => { - if (example[1] === "") { - ui2.div({ - text: example[0], - padding: [0, 2, 0, 2] - }); - } else { - ui2.div({ - text: example[0], - padding: [0, 2, 0, 2], - width: maxWidth(examples, theWrap) + 4 - }, { - text: example[1] - }); - } - }); - ui2.div(); - } - if (epilogs.length > 0) { - const e = epilogs.map((epilog) => epilog.replace(/\$0/g, base$0)).join("\n"); - ui2.div(`${e}\n`); - } - return ui2.toString().replace(/\s*$/, ""); - }; - function maxWidth(table, theWrap, modifier) { - let width = 0; - if (!Array.isArray(table)) { - table = Object.values(table).map((v) => [v]); - } - table.forEach((v) => { - width = Math.max(shim2.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); - }); - if (theWrap) - width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); - return width; - } - function normalizeAliases() { - const demandedOptions = yargs.getDemandedOptions(); - const options = yargs.getOptions(); - (Object.keys(options.alias) || []).forEach((key) => { - options.alias[key].forEach((alias) => { - if (descriptions[alias]) - self.describe(key, descriptions[alias]); - if (alias in demandedOptions) - yargs.demandOption(key, demandedOptions[alias]); - if (~options.boolean.indexOf(alias)) - yargs.boolean(key); - if (~options.count.indexOf(alias)) - yargs.count(key); - if (~options.string.indexOf(alias)) - yargs.string(key); - if (~options.normalize.indexOf(alias)) - yargs.normalize(key); - if (~options.array.indexOf(alias)) - yargs.array(key); - if (~options.number.indexOf(alias)) - yargs.number(key); - }); - }); - } - let cachedHelpMessage; - self.cacheHelpMessage = function() { - cachedHelpMessage = this.help(); - }; - self.clearCachedHelpMessage = function() { - cachedHelpMessage = undefined; - }; - function addUngroupedKeys(keys, aliases, groups, defaultGroup) { - let groupedKeys = []; - let toCheck = null; - Object.keys(groups).forEach((group) => { - groupedKeys = groupedKeys.concat(groups[group]); - }); - keys.forEach((key) => { - toCheck = [key].concat(aliases[key]); - if (!toCheck.some((k) => groupedKeys.indexOf(k) !== -1)) { - groups[defaultGroup].push(key); - } - }); - return groupedKeys; - } - function filterHiddenOptions(key) { - return yargs.getOptions().hiddenOptions.indexOf(key) < 0 || yargs.parsed.argv[yargs.getOptions().showHiddenOpt]; - } - self.showHelp = (level) => { - const logger = yargs._getLoggerInstance(); - if (!level) - level = "error"; - const emit = typeof level === "function" ? level : logger[level]; - emit(self.help()); - }; - self.functionDescription = (fn) => { - const description = fn.name ? shim2.Parser.decamelize(fn.name, "-") : __("generated-value"); - return ["(", description, ")"].join(""); - }; - self.stringifiedValues = function stringifiedValues(values, separator) { - let string = ""; - const sep = separator || ", "; - const array = [].concat(values); - if (!values || !array.length) - return string; - array.forEach((value) => { - if (string.length) - string += sep; - string += JSON.stringify(value); - }); - return string; - }; - function defaultString(value, defaultDescription) { - let string = `[${__("default:")} `; - if (value === undefined && !defaultDescription) - return null; - if (defaultDescription) { - string += defaultDescription; - } else { - switch (typeof value) { - case "string": - string += `"${value}"`; - break; - case "object": - string += JSON.stringify(value); - break; - default: - string += value; - } - } - return `${string}]`; - } - function windowWidth() { - const maxWidth2 = 80; - if (shim2.process.stdColumns) { - return Math.min(maxWidth2, shim2.process.stdColumns); - } else { - return maxWidth2; - } - } - let version = null; - self.version = (ver) => { - version = ver; - }; - self.showVersion = () => { - const logger = yargs._getLoggerInstance(); - logger.log(version); - }; - self.reset = function reset(localLookup) { - failMessage = null; - failureOutput = false; - usages = []; - usageDisabled = false; - epilogs = []; - examples = []; - commands = []; - descriptions = objFilter(descriptions, (k) => !localLookup[k]); - return self; - }; - const frozens = []; - self.freeze = function freeze() { - frozens.push({ - failMessage, - failureOutput, - usages, - usageDisabled, - epilogs, - examples, - commands, - descriptions - }); - }; - self.unfreeze = function unfreeze() { - const frozen = frozens.pop(); - assertNotStrictEqual(frozen, undefined, shim2); - ({ - failMessage, - failureOutput, - usages, - usageDisabled, - epilogs, - examples, - commands, - descriptions - } = frozen); - }; - return self; -} -var isIndentedText = function(text) { - return typeof text === "object"; -}; -var addIndentation = function(text, indent) { - return isIndentedText(text) ? { text: text.text, indentation: text.indentation + indent } : { text, indentation: indent }; -}; -var getIndentation = function(text) { - return isIndentedText(text) ? text.indentation : 0; -}; -var getText = function(text) { - return isIndentedText(text) ? text.text : text; -}; - -// node_modules/yargs/build/lib/completion-templates.js -var completionShTemplate = `###-begin-{{app_name}}-completions-### +var PU=Object.create;var{defineProperty:nZ,getPrototypeOf:wU,getOwnPropertyNames:OU}=Object;var RU=Object.prototype.hasOwnProperty;var CU=(Z,J,X)=>{X=Z!=null?PU(wU(Z)):{};const Q=J||!Z||!Z.__esModule?nZ(X,"default",{value:Z,enumerable:!0}):X;for(let Y of OU(Z))if(!RU.call(Q,Y))nZ(Q,Y,{get:()=>Z[Y],enumerable:!0});return Q};var O=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var a=(Z)=>{return import.meta.require(Z)};var S0=O((Ez)=>{Ez.fromCallback=function(Z){return Object.defineProperty(function(...J){if(typeof J[J.length-1]==="function")Z.apply(this,J);else return new Promise((X,Q)=>{Z.call(this,...J,(Y,U)=>Y!=null?Q(Y):X(U))})},"name",{value:Z.name})};Ez.fromPromise=function(Z){return Object.defineProperty(function(...J){const X=J[J.length-1];if(typeof X!=="function")return Z.apply(this,J);else Z.apply(this,J.slice(0,-1)).then((Q)=>X(null,Q),X)},"name",{value:Z.name})}});var Z1=O((nI,eJ)=>{var Cz=function(Z){if(M8.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))J(Z);if(!Z.lutimes)X(Z);if(Z.chown=U(Z.chown),Z.fchown=U(Z.fchown),Z.lchown=U(Z.lchown),Z.chmod=Q(Z.chmod),Z.fchmod=Q(Z.fchmod),Z.lchmod=Q(Z.lchmod),Z.chownSync=z(Z.chownSync),Z.fchownSync=z(Z.fchownSync),Z.lchownSync=z(Z.lchownSync),Z.chmodSync=Y(Z.chmodSync),Z.fchmodSync=Y(Z.fchmodSync),Z.lchmodSync=Y(Z.lchmodSync),Z.stat=$(Z.stat),Z.fstat=$(Z.fstat),Z.lstat=$(Z.lstat),Z.statSync=V(Z.statSync),Z.fstatSync=V(Z.fstatSync),Z.lstatSync=V(Z.lstatSync),Z.chmod&&!Z.lchmod)Z.lchmod=function(W,N,q){if(q)process.nextTick(q)},Z.lchmodSync=function(){};if(Z.chown&&!Z.lchown)Z.lchown=function(W,N,q,I){if(I)process.nextTick(I)},Z.lchownSync=function(){};if(Rz==="win32")Z.rename=typeof Z.rename!=="function"?Z.rename:function(W){function N(q,I,H){var G=Date.now(),E=0;W(q,I,function P(S){if(S&&(S.code==="EACCES"||S.code==="EPERM"||S.code==="EBUSY")&&Date.now()-G<60000){if(setTimeout(function(){Z.stat(I,function(k,b){if(k&&k.code==="ENOENT")W(q,I,P);else H(S)})},E),E<100)E+=10;return}if(H)H(S)})}if(Object.setPrototypeOf)Object.setPrototypeOf(N,W);return N}(Z.rename);Z.read=typeof Z.read!=="function"?Z.read:function(W){function N(q,I,H,G,E,P){var S;if(P&&typeof P==="function"){var k=0;S=function(b,l,J0){if(b&&b.code==="EAGAIN"&&k<10)return k++,W.call(Z,q,I,H,G,E,S);P.apply(this,arguments)}}return W.call(Z,q,I,H,G,E,S)}if(Object.setPrototypeOf)Object.setPrototypeOf(N,W);return N}(Z.read),Z.readSync=typeof Z.readSync!=="function"?Z.readSync:function(W){return function(N,q,I,H,G){var E=0;while(!0)try{return W.call(Z,N,q,I,H,G)}catch(P){if(P.code==="EAGAIN"&&E<10){E++;continue}throw P}}}(Z.readSync);function J(W){W.lchmod=function(N,q,I){W.open(N,M8.O_WRONLY|M8.O_SYMLINK,q,function(H,G){if(H){if(I)I(H);return}W.fchmod(G,q,function(E){W.close(G,function(P){if(I)I(E||P)})})})},W.lchmodSync=function(N,q){var I=W.openSync(N,M8.O_WRONLY|M8.O_SYMLINK,q),H=!0,G;try{G=W.fchmodSync(I,q),H=!1}finally{if(H)try{W.closeSync(I)}catch(E){}else W.closeSync(I)}return G}}function X(W){if(M8.hasOwnProperty("O_SYMLINK")&&W.futimes)W.lutimes=function(N,q,I,H){W.open(N,M8.O_SYMLINK,function(G,E){if(G){if(H)H(G);return}W.futimes(E,q,I,function(P){W.close(E,function(S){if(H)H(P||S)})})})},W.lutimesSync=function(N,q,I){var H=W.openSync(N,M8.O_SYMLINK),G,E=!0;try{G=W.futimesSync(H,q,I),E=!1}finally{if(E)try{W.closeSync(H)}catch(P){}else W.closeSync(H)}return G};else if(W.futimes)W.lutimes=function(N,q,I,H){if(H)process.nextTick(H)},W.lutimesSync=function(){}}function Q(W){if(!W)return W;return function(N,q,I){return W.call(Z,N,q,function(H){if(B(H))H=null;if(I)I.apply(this,arguments)})}}function Y(W){if(!W)return W;return function(N,q){try{return W.call(Z,N,q)}catch(I){if(!B(I))throw I}}}function U(W){if(!W)return W;return function(N,q,I,H){return W.call(Z,N,q,I,function(G){if(B(G))G=null;if(H)H.apply(this,arguments)})}}function z(W){if(!W)return W;return function(N,q,I){try{return W.call(Z,N,q,I)}catch(H){if(!B(H))throw H}}}function $(W){if(!W)return W;return function(N,q,I){if(typeof q==="function")I=q,q=null;function H(G,E){if(E){if(E.uid<0)E.uid+=4294967296;if(E.gid<0)E.gid+=4294967296}if(I)I.apply(this,arguments)}return q?W.call(Z,N,q,H):W.call(Z,N,H)}}function V(W){if(!W)return W;return function(N,q){var I=q?W.call(Z,N,q):W.call(Z,N);if(I){if(I.uid<0)I.uid+=4294967296;if(I.gid<0)I.gid+=4294967296}return I}}function B(W){if(!W)return!0;if(W.code==="ENOSYS")return!0;var N=!process.getuid||process.getuid()!==0;if(N){if(W.code==="EINVAL"||W.code==="EPERM")return!0}return!1}},M8=import.meta.require("constants"),Oz=process.cwd,J5=null,Rz=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!J5)J5=Oz.call(process);return J5};try{process.cwd()}catch(Z){}if(typeof process.chdir==="function"){if(V7=process.chdir,process.chdir=function(Z){J5=null,V7.call(process,Z)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,V7)}var V7;eJ.exports=Cz});var Q1=O((iI,X1)=>{var Az=function(Z){return{ReadStream:J,WriteStream:X};function J(Q,Y){if(!(this instanceof J))return new J(Q,Y);J1.call(this);var U=this;this.path=Q,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,Y=Y||{};var z=Object.keys(Y);for(var $=0,V=z.length;$this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){U._read()});return}Z.open(this.path,this.flags,this.mode,function(W,N){if(W){U.emit("error",W),U.readable=!1;return}U.fd=N,U.emit("open",N),U._read()})}function X(Q,Y){if(!(this instanceof X))return new X(Q,Y);J1.call(this),this.path=Q,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,Y=Y||{};var U=Object.keys(Y);for(var z=0,$=U.length;z<$;z++){var V=U[z];this[V]=Y[V]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=Z.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}},J1=import.meta.require("stream").Stream;X1.exports=Az});var U1=O((oI,Y1)=>{var Sz=function(Z){if(Z===null||typeof Z!=="object")return Z;if(Z instanceof Object)var J={__proto__:_z(Z)};else var J=Object.create(null);return Object.getOwnPropertyNames(Z).forEach(function(X){Object.defineProperty(J,X,Object.getOwnPropertyDescriptor(Z,X))}),J};Y1.exports=Sz;var _z=Object.getPrototypeOf||function(Z){return Z.__proto__}});var x0=O((aI,q7)=>{var bz=function(){},V1=function(Z,J){Object.defineProperty(Z,E0,{get:function(){return J}})},B7=function(Z){xz(Z),Z.gracefulify=B7,Z.createReadStream=l,Z.createWriteStream=J0;var J=Z.readFile;Z.readFile=X;function X(R,p,L){if(typeof p==="function")L=p,p=null;return C(R,p,L);function C(_,y,F,D){return J(_,y,function(u){if(u&&(u.code==="EMFILE"||u.code==="ENFILE"))U6([C,[_,y,F],u,D||Date.now(),Date.now()]);else if(typeof F==="function")F.apply(this,arguments)})}}var Q=Z.writeFile;Z.writeFile=Y;function Y(R,p,L,C){if(typeof L==="function")C=L,L=null;return _(R,p,L,C);function _(y,F,D,u,f){return Q(y,F,D,function(e){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var U=Z.appendFile;if(U)Z.appendFile=z;function z(R,p,L,C){if(typeof L==="function")C=L,L=null;return _(R,p,L,C);function _(y,F,D,u,f){return U(y,F,D,function(e){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var $=Z.copyFile;if($)Z.copyFile=V;function V(R,p,L,C){if(typeof L==="function")C=L,L=0;return _(R,p,L,C);function _(y,F,D,u,f){return $(y,F,D,function(e){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var B=Z.readdir;Z.readdir=N;var W=/^v[0-5]\./;function N(R,p,L){if(typeof p==="function")L=p,p=null;var C=W.test(process.version)?function y(F,D,u,f){return B(F,_(F,D,u,f))}:function y(F,D,u,f){return B(F,D,_(F,D,u,f))};return C(R,p,L);function _(y,F,D,u){return function(f,e){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))U6([C,[y,F,D],f,u||Date.now(),Date.now()]);else{if(e&&e.sort)e.sort();if(typeof D==="function")D.call(this,f,e)}}}}if(process.version.substr(0,4)==="v0.8"){var q=vz(Z);P=q.ReadStream,k=q.WriteStream}var I=Z.ReadStream;if(I)P.prototype=Object.create(I.prototype),P.prototype.open=S;var H=Z.WriteStream;if(H)k.prototype=Object.create(H.prototype),k.prototype.open=b;Object.defineProperty(Z,"ReadStream",{get:function(){return P},set:function(R){P=R},enumerable:!0,configurable:!0}),Object.defineProperty(Z,"WriteStream",{get:function(){return k},set:function(R){k=R},enumerable:!0,configurable:!0});var G=P;Object.defineProperty(Z,"FileReadStream",{get:function(){return G},set:function(R){G=R},enumerable:!0,configurable:!0});var E=k;Object.defineProperty(Z,"FileWriteStream",{get:function(){return E},set:function(R){E=R},enumerable:!0,configurable:!0});function P(R,p){if(this instanceof P)return I.apply(this,arguments),this;else return P.apply(Object.create(P.prototype),arguments)}function S(){var R=this;g(R.path,R.flags,R.mode,function(p,L){if(p){if(R.autoClose)R.destroy();R.emit("error",p)}else R.fd=L,R.emit("open",L),R.read()})}function k(R,p){if(this instanceof k)return H.apply(this,arguments),this;else return k.apply(Object.create(k.prototype),arguments)}function b(){var R=this;g(R.path,R.flags,R.mode,function(p,L){if(p)R.destroy(),R.emit("error",p);else R.fd=L,R.emit("open",L)})}function l(R,p){return new Z.ReadStream(R,p)}function J0(R,p){return new Z.WriteStream(R,p)}var d=Z.open;Z.open=g;function g(R,p,L,C){if(typeof L==="function")C=L,L=null;return _(R,p,L,C);function _(y,F,D,u,f){return d(y,F,D,function(e,Y0){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}return Z},U6=function(Z){c8("ENQUEUE",Z[0].name,Z[1]),N0[E0].push(Z),W7()},$1=function(){var Z=Date.now();for(var J=0;J2)N0[E0][J][3]=Z,N0[E0][J][4]=Z;W7()},W7=function(){if(clearTimeout(Q5),Q5=void 0,N0[E0].length===0)return;var Z=N0[E0].shift(),J=Z[0],X=Z[1],Q=Z[2],Y=Z[3],U=Z[4];if(Y===void 0)c8("RETRY",J.name,X),J.apply(null,X);else if(Date.now()-Y>=60000){c8("TIMEOUT",J.name,X);var z=X.pop();if(typeof z==="function")z.call(null,Q)}else{var $=Date.now()-U,V=Math.max(U-Y,1),B=Math.min(V*1.2,100);if($>=B)c8("RETRY",J.name,X),J.apply(null,X.concat([Y]));else N0[E0].push(Z)}if(Q5===void 0)Q5=setTimeout(W7,0)},N0=import.meta.require("fs"),xz=Z1(),vz=Q1(),hz=U1(),X5=import.meta.require("util"),E0,Y5;if(typeof Symbol==="function"&&typeof Symbol.for==="function")E0=Symbol.for("graceful-fs.queue"),Y5=Symbol.for("graceful-fs.previous");else E0="___graceful-fs.queue",Y5="___graceful-fs.previous";var c8=bz;if(X5.debuglog)c8=X5.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))c8=function(){var Z=X5.format.apply(X5,arguments);Z="GFS4: "+Z.split(/\n/).join("\nGFS4: "),console.error(Z)};if(!N0[E0]){if(z1=global[E0]||[],V1(N0,z1),N0.close=function(Z){function J(X,Q){return Z.call(N0,X,function(Y){if(!Y)$1();if(typeof Q==="function")Q.apply(this,arguments)})}return Object.defineProperty(J,Y5,{value:Z}),J}(N0.close),N0.closeSync=function(Z){function J(X){Z.apply(N0,arguments),$1()}return Object.defineProperty(J,Y5,{value:Z}),J}(N0.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){c8(N0[E0]),import.meta.require("assert").equal(N0[E0].length,0)})}var z1;if(!global[E0])V1(global,N0[E0]);q7.exports=B7(hz(N0));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!N0.__patched)q7.exports=B7(N0),N0.__patched=!0;var Q5});var l8=O((K7)=>{var B1=S0().fromCallback,R0=x0(),kz=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((Z)=>{return typeof R0[Z]==="function"});Object.assign(K7,R0);kz.forEach((Z)=>{K7[Z]=B1(R0[Z])});K7.exists=function(Z,J){if(typeof J==="function")return R0.exists(Z,J);return new Promise((X)=>{return R0.exists(Z,X)})};K7.read=function(Z,J,X,Q,Y,U){if(typeof U==="function")return R0.read(Z,J,X,Q,Y,U);return new Promise((z,$)=>{R0.read(Z,J,X,Q,Y,(V,B,W)=>{if(V)return $(V);z({bytesRead:B,buffer:W})})})};K7.write=function(Z,J,...X){if(typeof X[X.length-1]==="function")return R0.write(Z,J,...X);return new Promise((Q,Y)=>{R0.write(Z,J,...X,(U,z,$)=>{if(U)return Y(U);Q({bytesWritten:z,buffer:$})})})};K7.readv=function(Z,J,...X){if(typeof X[X.length-1]==="function")return R0.readv(Z,J,...X);return new Promise((Q,Y)=>{R0.readv(Z,J,...X,(U,z,$)=>{if(U)return Y(U);Q({bytesRead:z,buffers:$})})})};K7.writev=function(Z,J,...X){if(typeof X[X.length-1]==="function")return R0.writev(Z,J,...X);return new Promise((Q,Y)=>{R0.writev(Z,J,...X,(U,z,$)=>{if(U)return Y(U);Q({bytesWritten:z,buffers:$})})})};if(typeof R0.realpath.native==="function")K7.realpath.native=B1(R0.realpath.native);else process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var q1=O((cz,W1)=>{var dz=import.meta.require("path");cz.checkPath=function Z(J){if(process.platform==="win32"){if(/[<>:"|?*]/.test(J.replace(dz.parse(J).root,""))){const Q=new Error(`Path contains invalid characters: ${J}`);throw Q.code="EINVAL",Q}}}});var H1=O((pz,N7)=>{var K1=l8(),{checkPath:N1}=q1(),G1=(Z)=>{const J={mode:511};if(typeof Z==="number")return Z;return{...J,...Z}.mode};pz.makeDir=async(Z,J)=>{return N1(Z),K1.mkdir(Z,{mode:G1(J),recursive:!0})};pz.makeDirSync=(Z,J)=>{return N1(Z),K1.mkdirSync(Z,{mode:G1(J),recursive:!0})}});var e0=O((tI,I1)=>{var oz=S0().fromPromise,{makeDir:az,makeDirSync:G7}=H1(),H7=oz(az);I1.exports={mkdirs:H7,mkdirsSync:G7,mkdirp:H7,mkdirpSync:G7,ensureDir:H7,ensureDirSync:G7}});var L8=O((eI,L1)=>{var sz=function(Z){return M1.access(Z).then(()=>!0).catch(()=>!1)},rz=S0().fromPromise,M1=l8();L1.exports={pathExists:rz(sz),pathExistsSync:M1.existsSync}});var I7=O((ZM,F1)=>{var tz=function(Z,J,X,Q){z6.open(Z,"r+",(Y,U)=>{if(Y)return Q(Y);z6.futimes(U,J,X,(z)=>{z6.close(U,($)=>{if(Q)Q(z||$)})})})},ez=function(Z,J,X){const Q=z6.openSync(Z,"r+");return z6.futimesSync(Q,J,X),z6.closeSync(Q)},z6=x0();F1.exports={utimesMillis:tz,utimesMillisSync:ez}});var p8=O((JM,T1)=>{var J$=function(Z,J,X){const Q=X.dereference?(Y)=>$6.stat(Y,{bigint:!0}):(Y)=>$6.lstat(Y,{bigint:!0});return Promise.all([Q(Z),Q(J).catch((Y)=>{if(Y.code==="ENOENT")return null;throw Y})]).then(([Y,U])=>({srcStat:Y,destStat:U}))},X$=function(Z,J,X){let Q;const Y=X.dereference?(z)=>$6.statSync(z,{bigint:!0}):(z)=>$6.lstatSync(z,{bigint:!0}),U=Y(Z);try{Q=Y(J)}catch(z){if(z.code==="ENOENT")return{srcStat:U,destStat:null};throw z}return{srcStat:U,destStat:Q}},Q$=function(Z,J,X,Q,Y){Z$.callbackify(J$)(Z,J,Q,(U,z)=>{if(U)return Y(U);const{srcStat:$,destStat:V}=z;if(V){if(D6($,V)){const B=D0.basename(Z),W=D0.basename(J);if(X==="move"&&B!==W&&B.toLowerCase()===W.toLowerCase())return Y(null,{srcStat:$,destStat:V,isChangingCase:!0});return Y(new Error("Source and destination must not be the same."))}if($.isDirectory()&&!V.isDirectory())return Y(new Error(`Cannot overwrite non-directory '${J}' with directory '${Z}'.`));if(!$.isDirectory()&&V.isDirectory())return Y(new Error(`Cannot overwrite directory '${J}' with non-directory '${Z}'.`))}if($.isDirectory()&&M7(Z,J))return Y(new Error(U5(Z,J,X)));return Y(null,{srcStat:$,destStat:V})})},Y$=function(Z,J,X,Q){const{srcStat:Y,destStat:U}=X$(Z,J,Q);if(U){if(D6(Y,U)){const z=D0.basename(Z),$=D0.basename(J);if(X==="move"&&z!==$&&z.toLowerCase()===$.toLowerCase())return{srcStat:Y,destStat:U,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(Y.isDirectory()&&!U.isDirectory())throw new Error(`Cannot overwrite non-directory '${J}' with directory '${Z}'.`);if(!Y.isDirectory()&&U.isDirectory())throw new Error(`Cannot overwrite directory '${J}' with non-directory '${Z}'.`)}if(Y.isDirectory()&&M7(Z,J))throw new Error(U5(Z,J,X));return{srcStat:Y,destStat:U}},j1=function(Z,J,X,Q,Y){const U=D0.resolve(D0.dirname(Z)),z=D0.resolve(D0.dirname(X));if(z===U||z===D0.parse(z).root)return Y();$6.stat(z,{bigint:!0},($,V)=>{if($){if($.code==="ENOENT")return Y();return Y($)}if(D6(J,V))return Y(new Error(U5(Z,X,Q)));return j1(Z,J,z,Q,Y)})},D1=function(Z,J,X,Q){const Y=D0.resolve(D0.dirname(Z)),U=D0.resolve(D0.dirname(X));if(U===Y||U===D0.parse(U).root)return;let z;try{z=$6.statSync(U,{bigint:!0})}catch($){if($.code==="ENOENT")return;throw $}if(D6(J,z))throw new Error(U5(Z,X,Q));return D1(Z,J,U,Q)},D6=function(Z,J){return J.ino&&J.dev&&J.ino===Z.ino&&J.dev===Z.dev},M7=function(Z,J){const X=D0.resolve(Z).split(D0.sep).filter((Y)=>Y),Q=D0.resolve(J).split(D0.sep).filter((Y)=>Y);return X.reduce((Y,U,z)=>Y&&Q[z]===U,!0)},U5=function(Z,J,X){return`Cannot ${X} '${Z}' to a subdirectory of itself, '${J}'.`},$6=l8(),D0=import.meta.require("path"),Z$=import.meta.require("util");T1.exports={checkPaths:Q$,checkPathsSync:Y$,checkParentPaths:j1,checkParentPathsSync:D1,isSrcSubdir:M7,areIdentical:D6}});var C1=O((XM,R1)=>{var V$=function(Z,J,X,Q){if(typeof X==="function"&&!Q)Q=X,X={};else if(typeof X==="function")X={filter:X};if(Q=Q||function(){},X=X||{},X.clobber=("clobber"in X)?!!X.clobber:!0,X.overwrite=("overwrite"in X)?!!X.overwrite:X.clobber,X.preserveTimestamps&&process.arch==="ia32")process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269","Warning","fs-extra-WARN0001");E6.checkPaths(Z,J,"copy",X,(Y,U)=>{if(Y)return Q(Y);const{srcStat:z,destStat:$}=U;E6.checkParentPaths(Z,z,J,"copy",(V)=>{if(V)return Q(V);P1(Z,J,X,(B,W)=>{if(B)return Q(B);if(!W)return Q();B$($,Z,J,X,Q)})})})},B$=function(Z,J,X,Q,Y){const U=T6.dirname(X);z$(U,(z,$)=>{if(z)return Y(z);if($)return L7(Z,J,X,Q,Y);U$(U,(V)=>{if(V)return Y(V);return L7(Z,J,X,Q,Y)})})},P1=function(Z,J,X,Q){if(!X.filter)return Q(null,!0);Promise.resolve(X.filter(Z,J)).then((Y)=>Q(null,Y),(Y)=>Q(Y))},L7=function(Z,J,X,Q,Y){(Q.dereference?v0.stat:v0.lstat)(J,(z,$)=>{if(z)return Y(z);if($.isDirectory())return I$($,Z,J,X,Q,Y);else if($.isFile()||$.isCharacterDevice()||$.isBlockDevice())return W$($,Z,J,X,Q,Y);else if($.isSymbolicLink())return F$(Z,J,X,Q,Y);else if($.isSocket())return Y(new Error(`Cannot copy a socket file: ${J}`));else if($.isFIFO())return Y(new Error(`Cannot copy a FIFO pipe: ${J}`));return Y(new Error(`Unknown file: ${J}`))})},W$=function(Z,J,X,Q,Y,U){if(!J)return w1(Z,X,Q,Y,U);return q$(Z,X,Q,Y,U)},q$=function(Z,J,X,Q,Y){if(Q.overwrite)v0.unlink(X,(U)=>{if(U)return Y(U);return w1(Z,J,X,Q,Y)});else if(Q.errorOnExist)return Y(new Error(`'${X}' already exists`));else return Y()},w1=function(Z,J,X,Q,Y){v0.copyFile(J,X,(U)=>{if(U)return Y(U);if(Q.preserveTimestamps)return K$(Z.mode,J,X,Y);return z5(X,Z.mode,Y)})},K$=function(Z,J,X,Q){if(N$(Z))return G$(X,Z,(Y)=>{if(Y)return Q(Y);return E1(Z,J,X,Q)});return E1(Z,J,X,Q)},N$=function(Z){return(Z&128)===0},G$=function(Z,J,X){return z5(Z,J|128,X)},E1=function(Z,J,X,Q){H$(J,X,(Y)=>{if(Y)return Q(Y);return z5(X,Z,Q)})},z5=function(Z,J,X){return v0.chmod(Z,J,X)},H$=function(Z,J,X){v0.stat(Z,(Q,Y)=>{if(Q)return X(Q);return $$(J,Y.atime,Y.mtime,X)})},I$=function(Z,J,X,Q,Y,U){if(!J)return M$(Z.mode,X,Q,Y,U);return O1(X,Q,Y,U)},M$=function(Z,J,X,Q,Y){v0.mkdir(X,(U)=>{if(U)return Y(U);O1(J,X,Q,(z)=>{if(z)return Y(z);return z5(X,Z,Y)})})},O1=function(Z,J,X,Q){v0.readdir(Z,(Y,U)=>{if(Y)return Q(Y);return F7(U,Z,J,X,Q)})},F7=function(Z,J,X,Q,Y){const U=Z.pop();if(!U)return Y();return L$(Z,U,J,X,Q,Y)},L$=function(Z,J,X,Q,Y,U){const z=T6.join(X,J),$=T6.join(Q,J);P1(z,$,Y,(V,B)=>{if(V)return U(V);if(!B)return F7(Z,X,Q,Y,U);E6.checkPaths(z,$,"copy",Y,(W,N)=>{if(W)return U(W);const{destStat:q}=N;L7(q,z,$,Y,(I)=>{if(I)return U(I);return F7(Z,X,Q,Y,U)})})})},F$=function(Z,J,X,Q,Y){v0.readlink(J,(U,z)=>{if(U)return Y(U);if(Q.dereference)z=T6.resolve(process.cwd(),z);if(!Z)return v0.symlink(z,X,Y);else v0.readlink(X,($,V)=>{if($){if($.code==="EINVAL"||$.code==="UNKNOWN")return v0.symlink(z,X,Y);return Y($)}if(Q.dereference)V=T6.resolve(process.cwd(),V);if(E6.isSrcSubdir(z,V))return Y(new Error(`Cannot copy '${z}' to a subdirectory of itself, '${V}'.`));if(E6.isSrcSubdir(V,z))return Y(new Error(`Cannot overwrite '${V}' with '${z}'.`));return j$(z,X,Y)})})},j$=function(Z,J,X){v0.unlink(J,(Q)=>{if(Q)return X(Q);return v0.symlink(Z,J,X)})},v0=x0(),T6=import.meta.require("path"),U$=e0().mkdirs,z$=L8().pathExists,$$=I7().utimesMillis,E6=p8();R1.exports=V$});var v1=O((QM,x1)=>{var E$=function(Z,J,X){if(typeof X==="function")X={filter:X};if(X=X||{},X.clobber=("clobber"in X)?!!X.clobber:!0,X.overwrite=("overwrite"in X)?!!X.overwrite:X.clobber,X.preserveTimestamps&&process.arch==="ia32")process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269","Warning","fs-extra-WARN0002");const{srcStat:Q,destStat:Y}=w6.checkPathsSync(Z,J,"copy",X);if(w6.checkParentPathsSync(Z,Q,J,"copy"),X.filter&&!X.filter(Z,J))return;const U=P6.dirname(J);if(!C0.existsSync(U))D$(U);return A1(Y,Z,J,X)},A1=function(Z,J,X,Q){const U=(Q.dereference?C0.statSync:C0.lstatSync)(J);if(U.isDirectory())return _$(U,Z,J,X,Q);else if(U.isFile()||U.isCharacterDevice()||U.isBlockDevice())return P$(U,Z,J,X,Q);else if(U.isSymbolicLink())return v$(Z,J,X,Q);else if(U.isSocket())throw new Error(`Cannot copy a socket file: ${J}`);else if(U.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${J}`);throw new Error(`Unknown file: ${J}`)},P$=function(Z,J,X,Q,Y){if(!J)return _1(Z,X,Q,Y);return w$(Z,X,Q,Y)},w$=function(Z,J,X,Q){if(Q.overwrite)return C0.unlinkSync(X),_1(Z,J,X,Q);else if(Q.errorOnExist)throw new Error(`'${X}' already exists`)},_1=function(Z,J,X,Q){if(C0.copyFileSync(J,X),Q.preserveTimestamps)O$(Z.mode,J,X);return j7(X,Z.mode)},O$=function(Z,J,X){if(R$(Z))C$(X,Z);return A$(J,X)},R$=function(Z){return(Z&128)===0},C$=function(Z,J){return j7(Z,J|128)},j7=function(Z,J){return C0.chmodSync(Z,J)},A$=function(Z,J){const X=C0.statSync(Z);return T$(J,X.atime,X.mtime)},_$=function(Z,J,X,Q,Y){if(!J)return S$(Z.mode,X,Q,Y);return S1(X,Q,Y)},S$=function(Z,J,X,Q){return C0.mkdirSync(X),S1(J,X,Q),j7(X,Z)},S1=function(Z,J,X){C0.readdirSync(Z).forEach((Q)=>x$(Q,Z,J,X))},x$=function(Z,J,X,Q){const Y=P6.join(J,Z),U=P6.join(X,Z);if(Q.filter&&!Q.filter(Y,U))return;const{destStat:z}=w6.checkPathsSync(Y,U,"copy",Q);return A1(z,Y,U,Q)},v$=function(Z,J,X,Q){let Y=C0.readlinkSync(J);if(Q.dereference)Y=P6.resolve(process.cwd(),Y);if(!Z)return C0.symlinkSync(Y,X);else{let U;try{U=C0.readlinkSync(X)}catch(z){if(z.code==="EINVAL"||z.code==="UNKNOWN")return C0.symlinkSync(Y,X);throw z}if(Q.dereference)U=P6.resolve(process.cwd(),U);if(w6.isSrcSubdir(Y,U))throw new Error(`Cannot copy '${Y}' to a subdirectory of itself, '${U}'.`);if(w6.isSrcSubdir(U,Y))throw new Error(`Cannot overwrite '${U}' with '${Y}'.`);return h$(Y,X)}},h$=function(Z,J){return C0.unlinkSync(J),C0.symlinkSync(Z,J)},C0=x0(),P6=import.meta.require("path"),D$=e0().mkdirsSync,T$=I7().utimesMillisSync,w6=p8();x1.exports=E$});var $5=O((YM,h1)=>{var b$=S0().fromCallback;h1.exports={copy:b$(C1()),copySync:v1()}});var O6=O((UM,k1)=>{var y$=function(Z,J){b1.rm(Z,{recursive:!0,force:!0},J)},u$=function(Z){b1.rmSync(Z,{recursive:!0,force:!0})},b1=x0(),k$=S0().fromCallback;k1.exports={remove:k$(y$),removeSync:u$}});var l1=O((zM,c1)=>{var u1=function(Z){let J;try{J=f1.readdirSync(Z)}catch{return g1.mkdirsSync(Z)}J.forEach((X)=>{X=m1.join(Z,X),d1.removeSync(X)})},f$=S0().fromPromise,f1=l8(),m1=import.meta.require("path"),g1=e0(),d1=O6(),y1=f$(async function Z(J){let X;try{X=await f1.readdir(J)}catch{return g1.mkdirs(J)}return Promise.all(X.map((Q)=>d1.remove(m1.join(J,Q))))});c1.exports={emptyDirSync:u1,emptydirSync:u1,emptyDir:y1,emptydir:y1}});var o1=O(($M,i1)=>{var g$=function(Z,J){function X(){F8.writeFile(Z,"",(Q)=>{if(Q)return J(Q);J()})}F8.stat(Z,(Q,Y)=>{if(!Q&&Y.isFile())return J();const U=p1.dirname(Z);F8.stat(U,(z,$)=>{if(z){if(z.code==="ENOENT")return n1.mkdirs(U,(V)=>{if(V)return J(V);X()});return J(z)}if($.isDirectory())X();else F8.readdir(U,(V)=>{if(V)return J(V)})})})},d$=function(Z){let J;try{J=F8.statSync(Z)}catch{}if(J&&J.isFile())return;const X=p1.dirname(Z);try{if(!F8.statSync(X).isDirectory())F8.readdirSync(X)}catch(Q){if(Q&&Q.code==="ENOENT")n1.mkdirsSync(X);else throw Q}F8.writeFileSync(Z,"")},m$=S0().fromCallback,p1=import.meta.require("path"),F8=x0(),n1=e0();i1.exports={createFile:m$(g$),createFileSync:d$}});var e1=O((VM,t1)=>{var p$=function(Z,J,X){function Q(Y,U){j8.link(Y,U,(z)=>{if(z)return X(z);X(null)})}j8.lstat(J,(Y,U)=>{j8.lstat(Z,(z,$)=>{if(z)return z.message=z.message.replace("lstat","ensureLink"),X(z);if(U&&s1($,U))return X(null);const V=a1.dirname(J);l$(V,(B,W)=>{if(B)return X(B);if(W)return Q(Z,J);r1.mkdirs(V,(N)=>{if(N)return X(N);Q(Z,J)})})})})},n$=function(Z,J){let X;try{X=j8.lstatSync(J)}catch{}try{const U=j8.lstatSync(Z);if(X&&s1(U,X))return}catch(U){throw U.message=U.message.replace("lstat","ensureLink"),U}const Q=a1.dirname(J);if(j8.existsSync(Q))return j8.linkSync(Z,J);return r1.mkdirsSync(Q),j8.linkSync(Z,J)},c$=S0().fromCallback,a1=import.meta.require("path"),j8=x0(),r1=e0(),l$=L8().pathExists,{areIdentical:s1}=p8();t1.exports={createLink:c$(p$),createLinkSync:n$}});var J4=O((BM,Z4)=>{var o$=function(Z,J,X){if(D8.isAbsolute(Z))return R6.lstat(Z,(Q)=>{if(Q)return Q.message=Q.message.replace("lstat","ensureSymlink"),X(Q);return X(null,{toCwd:Z,toDst:Z})});else{const Q=D8.dirname(J),Y=D8.join(Q,Z);return i$(Y,(U,z)=>{if(U)return X(U);if(z)return X(null,{toCwd:Y,toDst:Z});else return R6.lstat(Z,($)=>{if($)return $.message=$.message.replace("lstat","ensureSymlink"),X($);return X(null,{toCwd:Z,toDst:D8.relative(Q,Z)})})})}},a$=function(Z,J){let X;if(D8.isAbsolute(Z)){if(X=R6.existsSync(Z),!X)throw new Error("absolute srcpath does not exist");return{toCwd:Z,toDst:Z}}else{const Q=D8.dirname(J),Y=D8.join(Q,Z);if(X=R6.existsSync(Y),X)return{toCwd:Y,toDst:Z};else{if(X=R6.existsSync(Z),!X)throw new Error("relative srcpath does not exist");return{toCwd:Z,toDst:D8.relative(Q,Z)}}}},D8=import.meta.require("path"),R6=x0(),i$=L8().pathExists;Z4.exports={symlinkPaths:o$,symlinkPathsSync:a$}});var Y4=O((WM,Q4)=>{var r$=function(Z,J,X){if(X=typeof J==="function"?J:X,J=typeof J==="function"?!1:J,J)return X(null,J);X4.lstat(Z,(Q,Y)=>{if(Q)return X(null,"file");J=Y&&Y.isDirectory()?"dir":"file",X(null,J)})},s$=function(Z,J){let X;if(J)return J;try{X=X4.lstatSync(Z)}catch{return"file"}return X&&X.isDirectory()?"dir":"file"},X4=x0();Q4.exports={symlinkType:r$,symlinkTypeSync:s$}});var K4=O((qM,q4)=>{var z2=function(Z,J,X,Q){Q=typeof X==="function"?X:Q,X=typeof X==="function"?!1:X,Z8.lstat(J,(Y,U)=>{if(!Y&&U.isSymbolicLink())Promise.all([Z8.stat(Z),Z8.stat(J)]).then(([z,$])=>{if(W4(z,$))return Q(null);U4(Z,J,X,Q)});else U4(Z,J,X,Q)})},U4=function(Z,J,X,Q){J2(Z,J,(Y,U)=>{if(Y)return Q(Y);Z=U.toDst,Q2(U.toCwd,X,(z,$)=>{if(z)return Q(z);const V=z4.dirname(J);U2(V,(B,W)=>{if(B)return Q(B);if(W)return Z8.symlink(Z,J,$,Q);e$(V,(N)=>{if(N)return Q(N);Z8.symlink(Z,J,$,Q)})})})})},$2=function(Z,J,X){let Q;try{Q=Z8.lstatSync(J)}catch{}if(Q&&Q.isSymbolicLink()){const $=Z8.statSync(Z),V=Z8.statSync(J);if(W4($,V))return}const Y=X2(Z,J);Z=Y.toDst,X=Y2(Y.toCwd,X);const U=z4.dirname(J);if(Z8.existsSync(U))return Z8.symlinkSync(Z,J,X);return Z2(U),Z8.symlinkSync(Z,J,X)},t$=S0().fromCallback,z4=import.meta.require("path"),Z8=l8(),$4=e0(),e$=$4.mkdirs,Z2=$4.mkdirsSync,V4=J4(),J2=V4.symlinkPaths,X2=V4.symlinkPathsSync,B4=Y4(),Q2=B4.symlinkType,Y2=B4.symlinkTypeSync,U2=L8().pathExists,{areIdentical:W4}=p8();q4.exports={createSymlink:t$(z2),createSymlinkSync:$2}});var j4=O((KM,F4)=>{var{createFile:N4,createFileSync:G4}=o1(),{createLink:H4,createLinkSync:I4}=e1(),{createSymlink:M4,createSymlinkSync:L4}=K4();F4.exports={createFile:N4,createFileSync:G4,ensureFile:N4,ensureFileSync:G4,createLink:H4,createLinkSync:I4,ensureLink:H4,ensureLinkSync:I4,createSymlink:M4,createSymlinkSync:L4,ensureSymlink:M4,ensureSymlinkSync:L4}});var V5=O((NM,D4)=>{var V2=function(Z,{EOL:J="\n",finalEOL:X=!0,replacer:Q=null,spaces:Y}={}){const U=X?J:"";return JSON.stringify(Z,Q,Y).replace(/\n/g,J)+U},B2=function(Z){if(Buffer.isBuffer(Z))Z=Z.toString("utf8");return Z.replace(/^\uFEFF/,"")};D4.exports={stringify:V2,stripBom:B2}});var w4=O((GM,P4)=>{async function W2(Z,J={}){if(typeof J==="string")J={encoding:J};const X=J.fs||V6,Q="throws"in J?J.throws:!0;let Y=await B5.fromCallback(X.readFile)(Z,J);Y=E4(Y);let U;try{U=JSON.parse(Y,J?J.reviver:null)}catch(z){if(Q)throw z.message=`${Z}: ${z.message}`,z;else return null}return U}var K2=function(Z,J={}){if(typeof J==="string")J={encoding:J};const X=J.fs||V6,Q="throws"in J?J.throws:!0;try{let Y=X.readFileSync(Z,J);return Y=E4(Y),JSON.parse(Y,J.reviver)}catch(Y){if(Q)throw Y.message=`${Z}: ${Y.message}`,Y;else return null}};async function N2(Z,J,X={}){const Q=X.fs||V6,Y=T4(J,X);await B5.fromCallback(Q.writeFile)(Z,Y,X)}var H2=function(Z,J,X={}){const Q=X.fs||V6,Y=T4(J,X);return Q.writeFileSync(Z,Y,X)},V6;try{V6=x0()}catch(Z){V6=import.meta.require("fs")}var B5=S0(),{stringify:T4,stripBom:E4}=V5(),q2=B5.fromPromise(W2),G2=B5.fromPromise(N2),I2={readFile:q2,readFileSync:K2,writeFile:G2,writeFileSync:H2};P4.exports=I2});var R4=O((HM,O4)=>{var W5=w4();O4.exports={readJson:W5.readFile,readJsonSync:W5.readFileSync,writeJson:W5.writeFile,writeJsonSync:W5.writeFileSync}});var q5=O((IM,_4)=>{var F2=function(Z,J,X,Q){if(typeof X==="function")Q=X,X="utf8";const Y=C4.dirname(Z);L2(Y,(U,z)=>{if(U)return Q(U);if(z)return C6.writeFile(Z,J,X,Q);A4.mkdirs(Y,($)=>{if($)return Q($);C6.writeFile(Z,J,X,Q)})})},j2=function(Z,...J){const X=C4.dirname(Z);if(C6.existsSync(X))return C6.writeFileSync(Z,...J);A4.mkdirsSync(X),C6.writeFileSync(Z,...J)},M2=S0().fromCallback,C6=x0(),C4=import.meta.require("path"),A4=e0(),L2=L8().pathExists;_4.exports={outputFile:M2(F2),outputFileSync:j2}});var x4=O((MM,S4)=>{async function E2(Z,J,X={}){const Q=D2(J,X);await T2(Z,Q,X)}var{stringify:D2}=V5(),{outputFile:T2}=q5();S4.exports=E2});var h4=O((LM,v4)=>{var O2=function(Z,J,X){const Q=P2(J,X);w2(Z,Q,X)},{stringify:P2}=V5(),{outputFileSync:w2}=q5();v4.exports=O2});var k4=O((FM,b4)=>{var R2=S0().fromPromise,A0=R4();A0.outputJson=R2(x4());A0.outputJsonSync=h4();A0.outputJSON=A0.outputJson;A0.outputJSONSync=A0.outputJsonSync;A0.writeJSON=A0.writeJson;A0.writeJSONSync=A0.writeJsonSync;A0.readJSON=A0.readJson;A0.readJSONSync=A0.readJsonSync;b4.exports=A0});var g4=O((jM,m4)=>{var x2=function(Z,J,X,Q){if(typeof X==="function")Q=X,X={};X=X||{};const Y=X.overwrite||X.clobber||!1;y4.checkPaths(Z,J,"move",X,(U,z)=>{if(U)return Q(U);const{srcStat:$,isChangingCase:V=!1}=z;y4.checkParentPaths(Z,$,J,"move",(B)=>{if(B)return Q(B);if(v2(J))return u4(Z,J,Y,V,Q);_2(T7.dirname(J),(W)=>{if(W)return Q(W);return u4(Z,J,Y,V,Q)})})})},v2=function(Z){const J=T7.dirname(Z);return T7.parse(J).root===J},u4=function(Z,J,X,Q,Y){if(Q)return D7(Z,J,X,Y);if(X)return f4(J,(U)=>{if(U)return Y(U);return D7(Z,J,X,Y)});S2(J,(U,z)=>{if(U)return Y(U);if(z)return Y(new Error("dest already exists."));return D7(Z,J,X,Y)})},D7=function(Z,J,X,Q){C2.rename(Z,J,(Y)=>{if(!Y)return Q();if(Y.code!=="EXDEV")return Q(Y);return h2(Z,J,X,Q)})},h2=function(Z,J,X,Q){A2(Z,J,{overwrite:X,errorOnExist:!0,preserveTimestamps:!0},(U)=>{if(U)return Q(U);return f4(Z,Q)})},C2=x0(),T7=import.meta.require("path"),A2=$5().copy,f4=O6().remove,_2=e0().mkdirp,S2=L8().pathExists,y4=p8();m4.exports=x2});var n4=O((DM,p4)=>{var y2=function(Z,J,X){X=X||{};const Q=X.overwrite||X.clobber||!1,{srcStat:Y,isChangingCase:U=!1}=d4.checkPathsSync(Z,J,"move",X);if(d4.checkParentPathsSync(Z,Y,J,"move"),!u2(J))k2(P7.dirname(J));return f2(Z,J,Q,U)},u2=function(Z){const J=P7.dirname(Z);return P7.parse(J).root===J},f2=function(Z,J,X,Q){if(Q)return E7(Z,J,X);if(X)return l4(J),E7(Z,J,X);if(c4.existsSync(J))throw new Error("dest already exists.");return E7(Z,J,X)},E7=function(Z,J,X){try{c4.renameSync(Z,J)}catch(Q){if(Q.code!=="EXDEV")throw Q;return m2(Z,J,X)}},m2=function(Z,J,X){return b2(Z,J,{overwrite:X,errorOnExist:!0,preserveTimestamps:!0}),l4(Z)},c4=x0(),P7=import.meta.require("path"),b2=$5().copySync,l4=O6().removeSync,k2=e0().mkdirpSync,d4=p8();p4.exports=y2});var o4=O((TM,i4)=>{var g2=S0().fromCallback;i4.exports={move:g2(g4()),moveSync:n4()}});var w7=O((EM,a4)=>{a4.exports={...l8(),...$5(),...l1(),...j4(),...k4(),...e0(),...o4(),...q5(),...L8(),...O6()}});var t4=O((r4)=>{var d2=function(Z){return Z.reduce((J,X)=>[].concat(J,X),[])},c2=function(Z,J){const X=[[]];let Q=0;for(let Y of Z)if(J(Y))Q++,X[Q]=[];else X[Q].push(Y);return X};Object.defineProperty(r4,"__esModule",{value:!0});r4.splitWhen=r4.flatten=void 0;r4.flatten=d2;r4.splitWhen=c2});var J9=O((e4)=>{var p2=function(Z){return Z.code==="ENOENT"};Object.defineProperty(e4,"__esModule",{value:!0});e4.isEnoentCodeError=void 0;e4.isEnoentCodeError=p2});var U9=O((Q9)=>{var n2=function(Z,J){return new X9(Z,J)};Object.defineProperty(Q9,"__esModule",{value:!0});Q9.createDirentFromStats=void 0;class X9{constructor(Z,J){this.name=Z,this.isBlockDevice=J.isBlockDevice.bind(J),this.isCharacterDevice=J.isCharacterDevice.bind(J),this.isDirectory=J.isDirectory.bind(J),this.isFIFO=J.isFIFO.bind(J),this.isFile=J.isFile.bind(J),this.isSocket=J.isSocket.bind(J),this.isSymbolicLink=J.isSymbolicLink.bind(J)}}Q9.createDirentFromStats=n2});var q9=O((B9)=>{var ZV=function(Z){return Z.replace(/\\/g,"/")},JV=function(Z,J){return o2.resolve(Z,J)},XV=function(Z){if(Z.charAt(0)==="."){const J=Z.charAt(1);if(J==="/"||J==="\\")return Z.slice(a2)}return Z},O7=function(Z){return Z.replace(s2,"\\$2")},R7=function(Z){return Z.replace(r2,"\\$2")},$9=function(Z){return O7(Z).replace(t2,"//$1").replace(e2,"/")},V9=function(Z){return R7(Z)};Object.defineProperty(B9,"__esModule",{value:!0});B9.convertPosixPathToPattern=B9.convertWindowsPathToPattern=B9.convertPathToPattern=B9.escapePosixPath=B9.escapeWindowsPath=B9.escape=B9.removeLeadingDotSegment=B9.makeAbsolute=B9.unixify=void 0;var i2=import.meta.require("os"),o2=import.meta.require("path"),z9=i2.platform()==="win32",a2=2,r2=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,s2=/(\\?)([(){}]|^!|[!+@](?=\())/g,t2=/^\\\\([.?])/,e2=/\\(?![!()+@{}])/g;B9.unixify=ZV;B9.makeAbsolute=JV;B9.removeLeadingDotSegment=XV;B9.escape=z9?O7:R7;B9.escapeWindowsPath=O7;B9.escapePosixPath=R7;B9.convertPathToPattern=z9?$9:V9;B9.convertWindowsPathToPattern=$9;B9.convertPosixPathToPattern=V9});var N9=O((CM,K9)=>{/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */K9.exports=function Z(J){if(typeof J!=="string"||J==="")return!1;var X;while(X=/(\\).|([@?!+*]\(.*\))/g.exec(J)){if(X[2])return!0;J=J.slice(X.index+X[0].length)}return!1}});var I9=O((AM,H9)=>{/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */var qV=N9(),G9={"{":"}","(":")","[":"]"},KV=function(Z){if(Z[0]==="!")return!0;var J=0,X=-2,Q=-2,Y=-2,U=-2,z=-2;while(JJ){if(z===-1||z>Q)return!0;if(z=Z.indexOf("\\",J),z===-1||z>Q)return!0}}if(Y!==-1&&Z[J]==="{"&&Z[J+1]!=="}"){if(Y=Z.indexOf("}",J),Y>J){if(z=Z.indexOf("\\",J),z===-1||z>Y)return!0}}if(U!==-1&&Z[J]==="("&&Z[J+1]==="?"&&/[:!=]/.test(Z[J+2])&&Z[J+3]!==")"){if(U=Z.indexOf(")",J),U>J){if(z=Z.indexOf("\\",J),z===-1||z>U)return!0}}if(X!==-1&&Z[J]==="("&&Z[J+1]!=="|"){if(XX){if(z=Z.indexOf("\\",X),z===-1||z>U)return!0}}}if(Z[J]==="\\"){var $=Z[J+1];J+=2;var V=G9[$];if(V){var B=Z.indexOf(V,J);if(B!==-1)J=B+1}if(Z[J]==="!")return!0}else J++}return!1},NV=function(Z){if(Z[0]==="!")return!0;var J=0;while(J{var GV=I9(),HV=import.meta.require("path").posix.dirname,IV=import.meta.require("os").platform()==="win32",C7="/",MV=/\\/g,LV=/[\{\[].*[\}\]]$/,FV=/(^|[^\\])([\{\[]|\([^\)]+$)/,jV=/\\([\!\*\?\|\[\]\(\)\{\}])/g;M9.exports=function Z(J,X){var Q=Object.assign({flipBackslashes:!0},X);if(Q.flipBackslashes&&IV&&J.indexOf(C7)<0)J=J.replace(MV,C7);if(LV.test(J))J+=C7;J+="a";do J=HV(J);while(GV(J)||FV.test(J));return J.replace(jV,"$1")}});var K5=O((DV)=>{DV.isInteger=(Z)=>{if(typeof Z==="number")return Number.isInteger(Z);if(typeof Z==="string"&&Z.trim()!=="")return Number.isInteger(Number(Z));return!1};DV.find=(Z,J)=>Z.nodes.find((X)=>X.type===J);DV.exceedsLimit=(Z,J,X=1,Q)=>{if(Q===!1)return!1;if(!DV.isInteger(Z)||!DV.isInteger(J))return!1;return(Number(J)-Number(Z))/Number(X)>=Q};DV.escapeNode=(Z,J=0,X)=>{let Q=Z.nodes[J];if(!Q)return;if(X&&Q.type===X||Q.type==="open"||Q.type==="close"){if(Q.escaped!==!0)Q.value="\\"+Q.value,Q.escaped=!0}};DV.encloseBrace=(Z)=>{if(Z.type!=="brace")return!1;if(Z.commas>>0+Z.ranges>>0===0)return Z.invalid=!0,!0;return!1};DV.isInvalidBrace=(Z)=>{if(Z.type!=="brace")return!1;if(Z.invalid===!0||Z.dollar)return!0;if(Z.commas>>0+Z.ranges>>0===0)return Z.invalid=!0,!0;if(Z.open!==!0||Z.close!==!0)return Z.invalid=!0,!0;return!1};DV.isOpenOrClose=(Z)=>{if(Z.type==="open"||Z.type==="close")return!0;return Z.open===!0||Z.close===!0};DV.reduce=(Z)=>Z.reduce((J,X)=>{if(X.type==="text")J.push(X.value);if(X.type==="range")X.type="text";return J},[]);DV.flatten=(...Z)=>{const J=[],X=(Q)=>{for(let Y=0;Y{var F9=K5();j9.exports=(Z,J={})=>{let X=(Q,Y={})=>{let U=J.escapeInvalid&&F9.isInvalidBrace(Y),z=Q.invalid===!0&&J.escapeInvalid===!0,$="";if(Q.value){if((U||z)&&F9.isOpenOrClose(Q))return"\\"+Q.value;return Q.value}if(Q.value)return Q.value;if(Q.nodes)for(let V of Q.nodes)$+=X(V);return $};return X(Z)}});var T9=O((vM,D9)=>{/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */D9.exports=function(Z){if(typeof Z==="number")return Z-Z===0;if(typeof Z==="string"&&Z.trim()!=="")return Number.isFinite?Number.isFinite(+Z):isFinite(+Z);return!1}});var S9=O((hM,_9)=>{var _V=function(Z,J,X){let Q=_7(Z,J,"-",!1,X)||[],Y=_7(J,Z,"",!1,X)||[],U=_7(Z,J,"-?",!0,X)||[];return Q.concat(U).concat(Y).join("|")},SV=function(Z,J){let X=1,Q=1,Y=O9(Z,X),U=new Set([J]);while(Z<=Y&&Y<=J)U.add(Y),X+=1,Y=O9(Z,X);Y=R9(J+1,Q)-1;while(Z1)$.count.pop();$.count.push(W.count[0]),$.string=$.pattern+C9($.count),z=B+1;continue}if(X.isPadded)N=kV(B,X,Q);W.string=N+W.pattern+C9(W.count),U.push(W),z=B+1,$=W}return U},_7=function(Z,J,X,Q,Y){let U=[];for(let z of Z){let{string:$}=z;if(!Q&&!w9(J,"string",$))U.push(X+$);if(Q&&w9(J,"string",$))U.push(X+$)}return U},vV=function(Z,J){let X=[];for(let Q=0;QJ?1:J>Z?-1:0},w9=function(Z,J,X){return Z.some((Q)=>Q[J]===X)},O9=function(Z,J){return Number(String(Z).slice(0,-J)+"9".repeat(J))},R9=function(Z,J){return Z-Z%Math.pow(10,J)},C9=function(Z){let[J=0,X=""]=Z;if(X||J>1)return`{${J+(X?","+X:"")}}`;return""},bV=function(Z,J,X){return`[${Z}${J-Z===1?"":"-"}${J}]`},A9=function(Z){return/^-?(0+)\d/.test(Z)},kV=function(Z,J,X){if(!J.isPadded)return Z;let Q=Math.abs(J.maxLen-String(Z).length),Y=X.relaxZeros!==!1;switch(Q){case 0:return"";case 1:return Y?"0?":"0";case 2:return Y?"0{0,2}":"00";default:return Y?`0{0,${Q}}`:`0{${Q}}`}};/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */var E9=T9(),n8=(Z,J,X)=>{if(E9(Z)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(J===void 0||Z===J)return String(Z);if(E9(J)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let Q={relaxZeros:!0,...X};if(typeof Q.strictZeros==="boolean")Q.relaxZeros=Q.strictZeros===!1;let Y=String(Q.relaxZeros),U=String(Q.shorthand),z=String(Q.capture),$=String(Q.wrap),V=Z+":"+J+"="+Y+U+z+$;if(n8.cache.hasOwnProperty(V))return n8.cache[V].result;let B=Math.min(Z,J),W=Math.max(Z,J);if(Math.abs(B-W)===1){let G=Z+"|"+J;if(Q.capture)return`(${G})`;if(Q.wrap===!1)return G;return`(?:${G})`}let N=A9(Z)||A9(J),q={min:Z,max:J,a:B,b:W},I=[],H=[];if(N)q.isPadded=N,q.maxLen=String(q.max).length;if(B<0){let G=W<0?Math.abs(W):1;H=P9(G,Math.abs(B),q,Q),B=q.a=0}if(W>=0)I=P9(B,W,q,Q);if(q.negatives=H,q.positives=I,q.result=_V(H,I,Q),Q.capture===!0)q.result=`(${q.result})`;else if(Q.wrap!==!1&&I.length+H.length>1)q.result=`(?:${q.result})`;return n8.cache[V]=q,q.result};n8.cache={};n8.clearCache=()=>n8.cache={};_9.exports=n8});var v7=O((bM,f9)=>{/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */var yV=import.meta.require("util"),h9=S9(),x9=(Z)=>Z!==null&&typeof Z==="object"&&!Array.isArray(Z),uV=(Z)=>{return(J)=>Z===!0?Number(J):String(J)},S7=(Z)=>{return typeof Z==="number"||typeof Z==="string"&&Z!==""},A6=(Z)=>Number.isInteger(+Z),x7=(Z)=>{let J=`${Z}`,X=-1;if(J[0]==="-")J=J.slice(1);if(J==="0")return!1;while(J[++X]==="0");return X>0},fV=(Z,J,X)=>{if(typeof Z==="string"||typeof J==="string")return!0;return X.stringify===!0},mV=(Z,J,X)=>{if(J>0){let Q=Z[0]==="-"?"-":"";if(Q)Z=Z.slice(1);Z=Q+Z.padStart(Q?J-1:J,"0")}if(X===!1)return String(Z);return Z},v9=(Z,J)=>{let X=Z[0]==="-"?"-":"";if(X)Z=Z.slice(1),J--;while(Z.length{Z.negatives.sort((z,$)=>z<$?-1:z>$?1:0),Z.positives.sort((z,$)=>z<$?-1:z>$?1:0);let X=J.capture?"":"?:",Q="",Y="",U;if(Z.positives.length)Q=Z.positives.join("|");if(Z.negatives.length)Y=`-(${X}${Z.negatives.join("|")})`;if(Q&&Y)U=`${Q}|${Y}`;else U=Q||Y;if(J.wrap)return`(${X}${U})`;return U},b9=(Z,J,X,Q)=>{if(X)return h9(Z,J,{wrap:!1,...Q});let Y=String.fromCharCode(Z);if(Z===J)return Y;let U=String.fromCharCode(J);return`[${Y}-${U}]`},k9=(Z,J,X)=>{if(Array.isArray(Z)){let Q=X.wrap===!0,Y=X.capture?"":"?:";return Q?`(${Y}${Z.join("|")})`:Z.join("|")}return h9(Z,J,X)},y9=(...Z)=>{return new RangeError("Invalid range arguments: "+yV.inspect(...Z))},u9=(Z,J,X)=>{if(X.strictRanges===!0)throw y9([Z,J]);return[]},dV=(Z,J)=>{if(J.strictRanges===!0)throw new TypeError(`Expected step "${Z}" to be a number`);return[]},cV=(Z,J,X=1,Q={})=>{let Y=Number(Z),U=Number(J);if(!Number.isInteger(Y)||!Number.isInteger(U)){if(Q.strictRanges===!0)throw y9([Z,J]);return[]}if(Y===0)Y=0;if(U===0)U=0;let z=Y>U,$=String(Z),V=String(J),B=String(X);X=Math.max(Math.abs(X),1);let W=x7($)||x7(V)||x7(B),N=W?Math.max($.length,V.length,B.length):0,q=W===!1&&fV(Z,J,Q)===!1,I=Q.transform||uV(q);if(Q.toRegex&&X===1)return b9(v9(Z,N),v9(J,N),!0,Q);let H={negatives:[],positives:[]},G=(S)=>H[S<0?"negatives":"positives"].push(Math.abs(S)),E=[],P=0;while(z?Y>=U:Y<=U){if(Q.toRegex===!0&&X>1)G(Y);else E.push(mV(I(Y,P),N,q));Y=z?Y-X:Y+X,P++}if(Q.toRegex===!0)return X>1?gV(H,Q):k9(E,null,{wrap:!1,...Q});return E},lV=(Z,J,X=1,Q={})=>{if(!A6(Z)&&Z.length>1||!A6(J)&&J.length>1)return u9(Z,J,Q);let Y=Q.transform||((q)=>String.fromCharCode(q)),U=`${Z}`.charCodeAt(0),z=`${J}`.charCodeAt(0),$=U>z,V=Math.min(U,z),B=Math.max(U,z);if(Q.toRegex&&X===1)return b9(V,B,!1,Q);let W=[],N=0;while($?U>=z:U<=z)W.push(Y(U,N)),U=$?U-X:U+X,N++;if(Q.toRegex===!0)return k9(W,null,{wrap:!1,options:Q});return W},G5=(Z,J,X,Q={})=>{if(J==null&&S7(Z))return[Z];if(!S7(Z)||!S7(J))return u9(Z,J,Q);if(typeof X==="function")return G5(Z,J,1,{transform:X});if(x9(X))return G5(Z,J,0,X);let Y={...Q};if(Y.capture===!0)Y.wrap=!0;if(X=X||Y.step||1,!A6(X)){if(X!=null&&!x9(X))return dV(X,Y);return G5(Z,J,1,X)}if(A6(Z)&&A6(J))return cV(Z,J,X,Y);return lV(Z,J,Math.max(Math.abs(X),1),Y)};f9.exports=G5});var d9=O((kM,g9)=>{var pV=v7(),m9=K5(),nV=(Z,J={})=>{let X=(Q,Y={})=>{let U=m9.isInvalidBrace(Y),z=Q.invalid===!0&&J.escapeInvalid===!0,$=U===!0||z===!0,V=J.escapeInvalid===!0?"\\":"",B="";if(Q.isOpen===!0)return V+Q.value;if(Q.isClose===!0)return V+Q.value;if(Q.type==="open")return $?V+Q.value:"(";if(Q.type==="close")return $?V+Q.value:")";if(Q.type==="comma")return Q.prev.type==="comma"?"":$?Q.value:"|";if(Q.value)return Q.value;if(Q.nodes&&Q.ranges>0){let W=m9.reduce(Q.nodes),N=pV(...W,{...J,wrap:!1,toRegex:!0});if(N.length!==0)return W.length>1&&N.length>1?`(${N})`:N}if(Q.nodes)for(let W of Q.nodes)B+=X(W,Q);return B};return X(Z)};g9.exports=nV});var p9=O((yM,l9)=>{var iV=v7(),c9=N5(),B6=K5(),i8=(Z="",J="",X=!1)=>{let Q=[];if(Z=[].concat(Z),J=[].concat(J),!J.length)return Z;if(!Z.length)return X?B6.flatten(J).map((Y)=>`{${Y}}`):J;for(let Y of Z)if(Array.isArray(Y))for(let U of Y)Q.push(i8(U,J,X));else for(let U of J){if(X===!0&&typeof U==="string")U=`{${U}}`;Q.push(Array.isArray(U)?i8(Y,U,X):Y+U)}return B6.flatten(Q)},oV=(Z,J={})=>{let X=J.rangeLimit===void 0?1000:J.rangeLimit,Q=(Y,U={})=>{Y.queue=[];let z=U,$=U.queue;while(z.type!=="brace"&&z.type!=="root"&&z.parent)z=z.parent,$=z.queue;if(Y.invalid||Y.dollar){$.push(i8($.pop(),c9(Y,J)));return}if(Y.type==="brace"&&Y.invalid!==!0&&Y.nodes.length===2){$.push(i8($.pop(),["{}"]));return}if(Y.nodes&&Y.ranges>0){let N=B6.reduce(Y.nodes);if(B6.exceedsLimit(...N,J.step,X))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let q=iV(...N,J);if(q.length===0)q=c9(Y,J);$.push(i8($.pop(),q)),Y.nodes=[];return}let V=B6.encloseBrace(Y),B=Y.queue,W=Y;while(W.type!=="brace"&&W.type!=="root"&&W.parent)W=W.parent,B=W.queue;for(let N=0;N{n9.exports={MAX_LENGTH:65536,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:"\n",CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"\'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var t9=O((fM,s9)=>{var aV=N5(),{MAX_LENGTH:o9,CHAR_BACKSLASH:h7,CHAR_BACKTICK:rV,CHAR_COMMA:sV,CHAR_DOT:tV,CHAR_LEFT_PARENTHESES:eV,CHAR_RIGHT_PARENTHESES:ZB,CHAR_LEFT_CURLY_BRACE:JB,CHAR_RIGHT_CURLY_BRACE:XB,CHAR_LEFT_SQUARE_BRACKET:a9,CHAR_RIGHT_SQUARE_BRACKET:r9,CHAR_DOUBLE_QUOTE:QB,CHAR_SINGLE_QUOTE:YB,CHAR_NO_BREAK_SPACE:UB,CHAR_ZERO_WIDTH_NOBREAK_SPACE:zB}=i9(),$B=(Z,J={})=>{if(typeof Z!=="string")throw new TypeError("Expected a string");let X=J||{},Q=typeof X.maxLength==="number"?Math.min(o9,X.maxLength):o9;if(Z.length>Q)throw new SyntaxError(`Input length (${Z.length}), exceeds max characters (${Q})`);let Y={type:"root",input:Z,nodes:[]},U=[Y],z=Y,$=Y,V=0,B=Z.length,W=0,N=0,q,I={};const H=()=>Z[W++],G=(E)=>{if(E.type==="text"&&$.type==="dot")$.type="text";if($&&$.type==="text"&&E.type==="text"){$.value+=E.value;return}return z.nodes.push(E),E.parent=z,E.prev=$,$=E,E};G({type:"bos"});while(W0){if(z.ranges>0){z.ranges=0;let E=z.nodes.shift();z.nodes=[E,{type:"text",value:aV(z)}]}G({type:"comma",value:q}),z.commas++;continue}if(q===tV&&N>0&&z.commas===0){let E=z.nodes;if(N===0||E.length===0){G({type:"text",value:q});continue}if($.type==="dot"){if(z.range=[],$.value+=q,$.type="range",z.nodes.length!==3&&z.nodes.length!==5){z.invalid=!0,z.ranges=0,$.type="text";continue}z.ranges++,z.args=[];continue}if($.type==="range"){E.pop();let P=E[E.length-1];P.value+=$.value+q,$=P,z.ranges--;continue}G({type:"dot",value:q});continue}G({type:"text",value:q})}do if(z=U.pop(),z.type!=="root"){z.nodes.forEach((S)=>{if(!S.nodes){if(S.type==="open")S.isOpen=!0;if(S.type==="close")S.isClose=!0;if(!S.nodes)S.type="text";S.invalid=!0}});let E=U[U.length-1],P=E.nodes.indexOf(z);E.nodes.splice(P,1,...z.nodes)}while(U.length>0);return G({type:"eos"}),Y};s9.exports=$B});var JX=O((mM,ZX)=>{var e9=N5(),VB=d9(),BB=p9(),WB=t9(),f0=(Z,J={})=>{let X=[];if(Array.isArray(Z))for(let Q of Z){let Y=f0.create(Q,J);if(Array.isArray(Y))X.push(...Y);else X.push(Y)}else X=[].concat(f0.create(Z,J));if(J&&J.expand===!0&&J.nodupes===!0)X=[...new Set(X)];return X};f0.parse=(Z,J={})=>WB(Z,J);f0.stringify=(Z,J={})=>{if(typeof Z==="string")return e9(f0.parse(Z,J),J);return e9(Z,J)};f0.compile=(Z,J={})=>{if(typeof Z==="string")Z=f0.parse(Z,J);return VB(Z,J)};f0.expand=(Z,J={})=>{if(typeof Z==="string")Z=f0.parse(Z,J);let X=BB(Z,J);if(J.noempty===!0)X=X.filter(Boolean);if(J.nodupes===!0)X=[...new Set(X)];return X};f0.create=(Z,J={})=>{if(Z===""||Z.length<3)return[Z];return J.expand!==!0?f0.compile(Z,J):f0.expand(Z,J)};ZX.exports=f0});var _6=O((gM,QX)=>{var qB=import.meta.require("path"),XX={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},KB={...XX,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"},NB={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:'\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};QX.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:NB,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:qB.sep,extglobChars(Z){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${Z.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(Z){return Z===!0?KB:XX}}});var S6=O((jB)=>{var GB=import.meta.require("path"),HB=process.platform==="win32",{REGEX_BACKSLASH:IB,REGEX_REMOVE_BACKSLASH:MB,REGEX_SPECIAL_CHARS:LB,REGEX_SPECIAL_CHARS_GLOBAL:FB}=_6();jB.isObject=(Z)=>Z!==null&&typeof Z==="object"&&!Array.isArray(Z);jB.hasRegexChars=(Z)=>LB.test(Z);jB.isRegexChar=(Z)=>Z.length===1&&jB.hasRegexChars(Z);jB.escapeRegex=(Z)=>Z.replace(FB,"\\$1");jB.toPosixSlashes=(Z)=>Z.replace(IB,"/");jB.removeBackslashes=(Z)=>{return Z.replace(MB,(J)=>{return J==="\\"?"":J})};jB.supportsLookbehinds=()=>{const Z=process.version.slice(1).split(".").map(Number);if(Z.length===3&&Z[0]>=9||Z[0]===8&&Z[1]>=10)return!0;return!1};jB.isWindows=(Z)=>{if(Z&&typeof Z.windows==="boolean")return Z.windows;return HB===!0||GB.sep==="\\"};jB.escapeLast=(Z,J,X)=>{const Q=Z.lastIndexOf(J,X);if(Q===-1)return Z;if(Z[Q-1]==="\\")return jB.escapeLast(Z,J,Q-1);return`${Z.slice(0,Q)}\\${Z.slice(Q)}`};jB.removePrefix=(Z,J={})=>{let X=Z;if(X.startsWith("./"))X=X.slice(2),J.prefix="./";return X};jB.wrapOutput=(Z,J={},X={})=>{const Q=X.contains?"":"^",Y=X.contains?"":"$";let U=`${Q}(?:${Z})${Y}`;if(J.negated===!0)U=`(?:^(?!${U}).*\$)`;return U}});var NX=O((cM,KX)=>{var zX=S6(),{CHAR_ASTERISK:b7,CHAR_AT:_B,CHAR_BACKWARD_SLASH:x6,CHAR_COMMA:SB,CHAR_DOT:k7,CHAR_EXCLAMATION_MARK:y7,CHAR_FORWARD_SLASH:qX,CHAR_LEFT_CURLY_BRACE:u7,CHAR_LEFT_PARENTHESES:f7,CHAR_LEFT_SQUARE_BRACKET:xB,CHAR_PLUS:vB,CHAR_QUESTION_MARK:$X,CHAR_RIGHT_CURLY_BRACE:hB,CHAR_RIGHT_PARENTHESES:VX,CHAR_RIGHT_SQUARE_BRACKET:bB}=_6(),BX=(Z)=>{return Z===qX||Z===x6},WX=(Z)=>{if(Z.isPrefix!==!0)Z.depth=Z.isGlobstar?Infinity:1},kB=(Z,J)=>{const X=J||{},Q=Z.length-1,Y=X.parts===!0||X.scanToEnd===!0,U=[],z=[],$=[];let V=Z,B=-1,W=0,N=0,q=!1,I=!1,H=!1,G=!1,E=!1,P=!1,S=!1,k=!1,b=!1,l=!1,J0=0,d,g,R={value:"",depth:0,isGlob:!1};const p=()=>B>=Q,L=()=>V.charCodeAt(B+1),C=()=>{return d=g,V.charCodeAt(++B)};while(B0)y=V.slice(0,W),V=V.slice(W),N-=W;if(_&&H===!0&&N>0)_=V.slice(0,N),F=V.slice(N);else if(H===!0)_="",F=V;else _=V;if(_&&_!==""&&_!=="/"&&_!==V){if(BX(_.charCodeAt(_.length-1)))_=_.slice(0,-1)}if(X.unescape===!0){if(F)F=zX.removeBackslashes(F);if(_&&S===!0)_=zX.removeBackslashes(_)}const D={prefix:y,input:Z,start:W,base:_,glob:F,isBrace:q,isBracket:I,isGlob:H,isExtglob:G,isGlobstar:E,negated:k,negatedExtglob:b};if(X.tokens===!0){if(D.maxDepth=0,!BX(g))z.push(R);D.tokens=z}if(X.parts===!0||X.tokens===!0){let u;for(let f=0;f{var H5=_6(),m0=S6(),{MAX_LENGTH:I5,POSIX_REGEX_SOURCE:yB,REGEX_NON_SPECIAL_CHARS:uB,REGEX_SPECIAL_CHARS_BACKREF:fB,REPLACEMENTS:GX}=H5,mB=(Z,J)=>{if(typeof J.expandRange==="function")return J.expandRange(...Z,J);Z.sort();const X=`[${Z.join("-")}]`;try{new RegExp(X)}catch(Q){return Z.map((Y)=>m0.escapeRegex(Y)).join("..")}return X},W6=(Z,J)=>{return`Missing ${Z}: "${J}" - use "\\\\${J}" to match literal characters`},m7=(Z,J)=>{if(typeof Z!=="string")throw new TypeError("Expected a string");Z=GX[Z]||Z;const X={...J},Q=typeof X.maxLength==="number"?Math.min(I5,X.maxLength):I5;let Y=Z.length;if(Y>Q)throw new SyntaxError(`Input length: ${Y}, exceeds maximum allowed length: ${Q}`);const U={type:"bos",value:"",output:X.prepend||""},z=[U],$=X.capture?"":"?:",V=m0.isWindows(J),B=H5.globChars(V),W=H5.extglobChars(B),{DOT_LITERAL:N,PLUS_LITERAL:q,SLASH_LITERAL:I,ONE_CHAR:H,DOTS_SLASH:G,NO_DOT:E,NO_DOT_SLASH:P,NO_DOTS_SLASH:S,QMARK:k,QMARK_NO_DOT:b,STAR:l,START_ANCHOR:J0}=B,d=(A)=>{return`(${$}(?:(?!${J0}${A.dot?G:N}).)*?)`},g=X.dot?"":E,R=X.dot?k:b;let p=X.bash===!0?d(X):l;if(X.capture)p=`(${p})`;if(typeof X.noext==="boolean")X.noextglob=X.noext;const L={input:Z,index:-1,start:0,dot:X.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:z};Z=m0.removePrefix(Z,L),Y=Z.length;const C=[],_=[],y=[];let F=U,D;const u=()=>L.index===Y-1,f=L.peek=(A=1)=>Z[L.index+A],e=L.advance=()=>Z[++L.index]||"",Y0=()=>Z.slice(L.index+1),V0=(A="",X0=0)=>{L.consumed+=A,L.index+=X0},T0=(A)=>{L.output+=A.output!=null?A.output:A.value,V0(A.value)},t=()=>{let A=1;while(f()==="!"&&(f(2)!=="("||f(3)==="?"))e(),L.start++,A++;if(A%2===0)return!1;return L.negated=!0,L.start++,!0},_0=(A)=>{L[A]++,y.push(A)},h0=(A)=>{L[A]--,y.pop()},h=(A)=>{if(F.type==="globstar"){const X0=L.braces>0&&(A.type==="comma"||A.type==="brace"),x=A.extglob===!0||C.length&&(A.type==="pipe"||A.type==="paren");if(A.type!=="slash"&&A.type!=="paren"&&!X0&&!x)L.output=L.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=p,L.output+=F.output}if(C.length&&A.type!=="paren")C[C.length-1].inner+=A.value;if(A.value||A.output)T0(A);if(F&&F.type==="text"&&A.type==="text"){F.value+=A.value,F.output=(F.output||"")+A.value;return}A.prev=F,z.push(A),F=A},U0=(A,X0)=>{const x={...W[X0],conditions:1,inner:""};x.prev=F,x.parens=L.parens,x.output=L.output;const o=(X.capture?"(":"")+x.open;_0("parens"),h({type:A,value:X0,output:L.output?"":H}),h({type:"paren",extglob:!0,value:e(),output:o}),C.push(x)},K0=(A)=>{let X0=A.close+(X.capture?")":""),x;if(A.type==="negate"){let o=p;if(A.inner&&A.inner.length>1&&A.inner.includes("/"))o=d(X);if(o!==p||u()||/^\)+$/.test(Y0()))X0=A.close=`)\$))${o}`;if(A.inner.includes("*")&&(x=Y0())&&/^\.[^\\/.]+$/.test(x)){const z0=m7(x,{...J,fastpaths:!1}).output;X0=A.close=`)${z0})${o})`}if(A.prev.type==="bos")L.negatedExtglob=!0}h({type:"paren",extglob:!0,value:D,output:X0}),h0("parens")};if(X.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(Z)){let A=!1,X0=Z.replace(fB,(x,o,z0,M,j,v)=>{if(M==="\\")return A=!0,x;if(M==="?"){if(o)return o+M+(j?k.repeat(j.length):"");if(v===0)return R+(j?k.repeat(j.length):"");return k.repeat(z0.length)}if(M===".")return N.repeat(z0.length);if(M==="*"){if(o)return o+M+(j?p:"");return p}return o?x:`\\${x}`});if(A===!0)if(X.unescape===!0)X0=X0.replace(/\\/g,"");else X0=X0.replace(/\\+/g,(x)=>{return x.length%2===0?"\\\\":x?"\\":""});if(X0===Z&&X.contains===!0)return L.output=Z,L;return L.output=m0.wrapOutput(X0,L,J),L}while(!u()){if(D=e(),D==="\0")continue;if(D==="\\"){const x=f();if(x==="/"&&X.bash!==!0)continue;if(x==="."||x===";")continue;if(!x){D+="\\",h({type:"text",value:D});continue}const o=/^\\+/.exec(Y0());let z0=0;if(o&&o[0].length>2){if(z0=o[0].length,L.index+=z0,z0%2!==0)D+="\\"}if(X.unescape===!0)D=e();else D+=e();if(L.brackets===0){h({type:"text",value:D});continue}}if(L.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(X.posix!==!1&&D===":"){const x=F.value.slice(1);if(x.includes("[")){if(F.posix=!0,x.includes(":")){const o=F.value.lastIndexOf("["),z0=F.value.slice(0,o),M=F.value.slice(o+2),j=yB[M];if(j){if(F.value=z0+j,L.backtrack=!0,e(),!U.output&&z.indexOf(F)===1)U.output=H;continue}}}}if(D==="["&&f()!==":"||D==="-"&&f()==="]")D=`\\${D}`;if(D==="]"&&(F.value==="["||F.value==="[^"))D=`\\${D}`;if(X.posix===!0&&D==="!"&&F.value==="[")D="^";F.value+=D,T0({value:D});continue}if(L.quotes===1&&D!=='"'){D=m0.escapeRegex(D),F.value+=D,T0({value:D});continue}if(D==='"'){if(L.quotes=L.quotes===1?0:1,X.keepQuotes===!0)h({type:"text",value:D});continue}if(D==="("){_0("parens"),h({type:"paren",value:D});continue}if(D===")"){if(L.parens===0&&X.strictBrackets===!0)throw new SyntaxError(W6("opening","("));const x=C[C.length-1];if(x&&L.parens===x.parens+1){K0(C.pop());continue}h({type:"paren",value:D,output:L.parens?")":"\\)"}),h0("parens");continue}if(D==="["){if(X.nobracket===!0||!Y0().includes("]")){if(X.nobracket!==!0&&X.strictBrackets===!0)throw new SyntaxError(W6("closing","]"));D=`\\${D}`}else _0("brackets");h({type:"bracket",value:D});continue}if(D==="]"){if(X.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){h({type:"text",value:D,output:`\\${D}`});continue}if(L.brackets===0){if(X.strictBrackets===!0)throw new SyntaxError(W6("opening","["));h({type:"text",value:D,output:`\\${D}`});continue}h0("brackets");const x=F.value.slice(1);if(F.posix!==!0&&x[0]==="^"&&!x.includes("/"))D=`/${D}`;if(F.value+=D,T0({value:D}),X.literalBrackets===!1||m0.hasRegexChars(x))continue;const o=m0.escapeRegex(F.value);if(L.output=L.output.slice(0,-F.value.length),X.literalBrackets===!0){L.output+=o,F.value=o;continue}F.value=`(${$}${o}|${F.value})`,L.output+=F.value;continue}if(D==="{"&&X.nobrace!==!0){_0("braces");const x={type:"brace",value:D,output:"(",outputIndex:L.output.length,tokensIndex:L.tokens.length};_.push(x),h(x);continue}if(D==="}"){const x=_[_.length-1];if(X.nobrace===!0||!x){h({type:"text",value:D,output:D});continue}let o=")";if(x.dots===!0){const z0=z.slice(),M=[];for(let j=z0.length-1;j>=0;j--){if(z.pop(),z0[j].type==="brace")break;if(z0[j].type!=="dots")M.unshift(z0[j].value)}o=mB(M,X),L.backtrack=!0}if(x.comma!==!0&&x.dots!==!0){const z0=L.output.slice(0,x.outputIndex),M=L.tokens.slice(x.tokensIndex);x.value=x.output="\\{",D=o="\\}",L.output=z0;for(let j of M)L.output+=j.output||j.value}h({type:"brace",value:D,output:o}),h0("braces"),_.pop();continue}if(D==="|"){if(C.length>0)C[C.length-1].conditions++;h({type:"text",value:D});continue}if(D===","){let x=D;const o=_[_.length-1];if(o&&y[y.length-1]==="braces")o.comma=!0,x="|";h({type:"comma",value:D,output:x});continue}if(D==="/"){if(F.type==="dot"&&L.index===L.start+1){L.start=L.index+1,L.consumed="",L.output="",z.pop(),F=U;continue}h({type:"slash",value:D,output:I});continue}if(D==="."){if(L.braces>0&&F.type==="dot"){if(F.value===".")F.output=N;const x=_[_.length-1];F.type="dots",F.output+=D,F.value+=D,x.dots=!0;continue}if(L.braces+L.parens===0&&F.type!=="bos"&&F.type!=="slash"){h({type:"text",value:D,output:N});continue}h({type:"dot",value:D,output:N});continue}if(D==="?"){if(!(F&&F.value==="(")&&X.noextglob!==!0&&f()==="("&&f(2)!=="?"){U0("qmark",D);continue}if(F&&F.type==="paren"){const o=f();let z0=D;if(o==="<"&&!m0.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");if(F.value==="("&&!/[!=<:]/.test(o)||o==="<"&&!/<([!=]|\w+>)/.test(Y0()))z0=`\\${D}`;h({type:"text",value:D,output:z0});continue}if(X.dot!==!0&&(F.type==="slash"||F.type==="bos")){h({type:"qmark",value:D,output:b});continue}h({type:"qmark",value:D,output:k});continue}if(D==="!"){if(X.noextglob!==!0&&f()==="("){if(f(2)!=="?"||!/[!=<:]/.test(f(3))){U0("negate",D);continue}}if(X.nonegate!==!0&&L.index===0){t();continue}}if(D==="+"){if(X.noextglob!==!0&&f()==="("&&f(2)!=="?"){U0("plus",D);continue}if(F&&F.value==="("||X.regex===!1){h({type:"plus",value:D,output:q});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||L.parens>0){h({type:"plus",value:D});continue}h({type:"plus",value:q});continue}if(D==="@"){if(X.noextglob!==!0&&f()==="("&&f(2)!=="?"){h({type:"at",extglob:!0,value:D,output:""});continue}h({type:"text",value:D});continue}if(D!=="*"){if(D==="$"||D==="^")D=`\\${D}`;const x=uB.exec(Y0());if(x)D+=x[0],L.index+=x[0].length;h({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=p,L.backtrack=!0,L.globstar=!0,V0(D);continue}let A=Y0();if(X.noextglob!==!0&&/^\([^?]/.test(A)){U0("star",D);continue}if(F.type==="star"){if(X.noglobstar===!0){V0(D);continue}const x=F.prev,o=x.prev,z0=x.type==="slash"||x.type==="bos",M=o&&(o.type==="star"||o.type==="globstar");if(X.bash===!0&&(!z0||A[0]&&A[0]!=="/")){h({type:"star",value:D,output:""});continue}const j=L.braces>0&&(x.type==="comma"||x.type==="brace"),v=C.length&&(x.type==="pipe"||x.type==="paren");if(!z0&&x.type!=="paren"&&!j&&!v){h({type:"star",value:D,output:""});continue}while(A.slice(0,3)==="/**"){const w=Z[L.index+4];if(w&&w!=="/")break;A=A.slice(3),V0("/**",3)}if(x.type==="bos"&&u()){F.type="globstar",F.value+=D,F.output=d(X),L.output=F.output,L.globstar=!0,V0(D);continue}if(x.type==="slash"&&x.prev.type!=="bos"&&!M&&u()){L.output=L.output.slice(0,-(x.output+F.output).length),x.output=`(?:${x.output}`,F.type="globstar",F.output=d(X)+(X.strictSlashes?")":"|$)"),F.value+=D,L.globstar=!0,L.output+=x.output+F.output,V0(D);continue}if(x.type==="slash"&&x.prev.type!=="bos"&&A[0]==="/"){const w=A[1]!==void 0?"|$":"";L.output=L.output.slice(0,-(x.output+F.output).length),x.output=`(?:${x.output}`,F.type="globstar",F.output=`${d(X)}${I}|${I}${w})`,F.value+=D,L.output+=x.output+F.output,L.globstar=!0,V0(D+e()),h({type:"slash",value:"/",output:""});continue}if(x.type==="bos"&&A[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${I}|${d(X)}${I})`,L.output=F.output,L.globstar=!0,V0(D+e()),h({type:"slash",value:"/",output:""});continue}L.output=L.output.slice(0,-F.output.length),F.type="globstar",F.output=d(X),F.value+=D,L.output+=F.output,L.globstar=!0,V0(D);continue}const X0={type:"star",value:D,output:p};if(X.bash===!0){if(X0.output=".*?",F.type==="bos"||F.type==="slash")X0.output=g+X0.output;h(X0);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&X.regex===!0){X0.output=D,h(X0);continue}if(L.index===L.start||F.type==="slash"||F.type==="dot"){if(F.type==="dot")L.output+=P,F.output+=P;else if(X.dot===!0)L.output+=S,F.output+=S;else L.output+=g,F.output+=g;if(f()!=="*")L.output+=H,F.output+=H}h(X0)}while(L.brackets>0){if(X.strictBrackets===!0)throw new SyntaxError(W6("closing","]"));L.output=m0.escapeLast(L.output,"["),h0("brackets")}while(L.parens>0){if(X.strictBrackets===!0)throw new SyntaxError(W6("closing",")"));L.output=m0.escapeLast(L.output,"("),h0("parens")}while(L.braces>0){if(X.strictBrackets===!0)throw new SyntaxError(W6("closing","}"));L.output=m0.escapeLast(L.output,"{"),h0("braces")}if(X.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket"))h({type:"maybe_slash",value:"",output:`${I}?`});if(L.backtrack===!0){L.output="";for(let A of L.tokens)if(L.output+=A.output!=null?A.output:A.value,A.suffix)L.output+=A.suffix}return L};m7.fastpaths=(Z,J)=>{const X={...J},Q=typeof X.maxLength==="number"?Math.min(I5,X.maxLength):I5,Y=Z.length;if(Y>Q)throw new SyntaxError(`Input length: ${Y}, exceeds maximum allowed length: ${Q}`);Z=GX[Z]||Z;const U=m0.isWindows(J),{DOT_LITERAL:z,SLASH_LITERAL:$,ONE_CHAR:V,DOTS_SLASH:B,NO_DOT:W,NO_DOTS:N,NO_DOTS_SLASH:q,STAR:I,START_ANCHOR:H}=H5.globChars(U),G=X.dot?N:W,E=X.dot?q:W,P=X.capture?"":"?:",S={negated:!1,prefix:""};let k=X.bash===!0?".*?":I;if(X.capture)k=`(${k})`;const b=(g)=>{if(g.noglobstar===!0)return k;return`(${P}(?:(?!${H}${g.dot?B:z}).)*?)`},l=(g)=>{switch(g){case"*":return`${G}${V}${k}`;case".*":return`${z}${V}${k}`;case"*.*":return`${G}${k}${z}${V}${k}`;case"*/*":return`${G}${k}${$}${V}${E}${k}`;case"**":return G+b(X);case"**/*":return`(?:${G}${b(X)}${$})?${E}${V}${k}`;case"**/*.*":return`(?:${G}${b(X)}${$})?${E}${k}${z}${V}${k}`;case"**/.*":return`(?:${G}${b(X)}${$})?${z}${V}${k}`;default:{const R=/^(.*?)\.(\w+)$/.exec(g);if(!R)return;const p=l(R[1]);if(!p)return;return p+z+R[2]}}},J0=m0.removePrefix(Z,S);let d=l(J0);if(d&&X.strictSlashes!==!0)d+=`${$}?`;return d};HX.exports=m7});var LX=O((pM,MX)=>{var gB=import.meta.require("path"),dB=NX(),g7=IX(),d7=S6(),cB=_6(),lB=(Z)=>Z&&typeof Z==="object"&&!Array.isArray(Z),M0=(Z,J,X=!1)=>{if(Array.isArray(Z)){const W=Z.map((q)=>M0(q,J,X));return(q)=>{for(let I of W){const H=I(q);if(H)return H}return!1}}const Q=lB(Z)&&Z.tokens&&Z.input;if(Z===""||typeof Z!=="string"&&!Q)throw new TypeError("Expected pattern to be a non-empty string");const Y=J||{},U=d7.isWindows(J),z=Q?M0.compileRe(Z,J):M0.makeRe(Z,J,!1,!0),$=z.state;delete z.state;let V=()=>!1;if(Y.ignore){const W={...J,ignore:null,onMatch:null,onResult:null};V=M0(Y.ignore,W,X)}const B=(W,N=!1)=>{const{isMatch:q,match:I,output:H}=M0.test(W,z,J,{glob:Z,posix:U}),G={glob:Z,state:$,regex:z,posix:U,input:W,output:H,match:I,isMatch:q};if(typeof Y.onResult==="function")Y.onResult(G);if(q===!1)return G.isMatch=!1,N?G:!1;if(V(W)){if(typeof Y.onIgnore==="function")Y.onIgnore(G);return G.isMatch=!1,N?G:!1}if(typeof Y.onMatch==="function")Y.onMatch(G);return N?G:!0};if(X)B.state=$;return B};M0.test=(Z,J,X,{glob:Q,posix:Y}={})=>{if(typeof Z!=="string")throw new TypeError("Expected input to be a string");if(Z==="")return{isMatch:!1,output:""};const U=X||{},z=U.format||(Y?d7.toPosixSlashes:null);let $=Z===Q,V=$&&z?z(Z):Z;if($===!1)V=z?z(Z):Z,$=V===Q;if($===!1||U.capture===!0)if(U.matchBase===!0||U.basename===!0)$=M0.matchBase(Z,J,X,Y);else $=J.exec(V);return{isMatch:Boolean($),match:$,output:V}};M0.matchBase=(Z,J,X,Q=d7.isWindows(X))=>{return(J instanceof RegExp?J:M0.makeRe(J,X)).test(gB.basename(Z))};M0.isMatch=(Z,J,X)=>M0(J,X)(Z);M0.parse=(Z,J)=>{if(Array.isArray(Z))return Z.map((X)=>M0.parse(X,J));return g7(Z,{...J,fastpaths:!1})};M0.scan=(Z,J)=>dB(Z,J);M0.compileRe=(Z,J,X=!1,Q=!1)=>{if(X===!0)return Z.output;const Y=J||{},U=Y.contains?"":"^",z=Y.contains?"":"$";let $=`${U}(?:${Z.output})${z}`;if(Z&&Z.negated===!0)$=`^(?!${$}).*\$`;const V=M0.toRegex($,J);if(Q===!0)V.state=Z;return V};M0.makeRe=(Z,J={},X=!1,Q=!1)=>{if(!Z||typeof Z!=="string")throw new TypeError("Expected a non-empty string");let Y={negated:!1,fastpaths:!0};if(J.fastpaths!==!1&&(Z[0]==="."||Z[0]==="*"))Y.output=g7.fastpaths(Z,J);if(!Y.output)Y=g7(Z,J);return M0.compileRe(Y,J,X,Q)};M0.toRegex=(Z,J)=>{try{const X=J||{};return new RegExp(Z,X.flags||(X.nocase?"i":""))}catch(X){if(J&&J.debug===!0)throw X;return/$^/}};M0.constants=cB;MX.exports=M0});var EX=O((nM,TX)=>{var jX=import.meta.require("util"),DX=JX(),U8=LX(),c7=S6(),FX=(Z)=>Z===""||Z==="./",q0=(Z,J,X)=>{J=[].concat(J),Z=[].concat(Z);let Q=new Set,Y=new Set,U=new Set,z=0,$=(W)=>{if(U.add(W.output),X&&X.onResult)X.onResult(W)};for(let W=0;W!Q.has(W));if(X&&B.length===0){if(X.failglob===!0)throw new Error(`No matches found for "${J.join(", ")}"`);if(X.nonull===!0||X.nullglob===!0)return X.unescape?J.map((W)=>W.replace(/\\/g,"")):J}return B};q0.match=q0;q0.matcher=(Z,J)=>U8(Z,J);q0.isMatch=(Z,J,X)=>U8(J,X)(Z);q0.any=q0.isMatch;q0.not=(Z,J,X={})=>{J=[].concat(J).map(String);let Q=new Set,Y=[],z=new Set(q0(Z,J,{...X,onResult:($)=>{if(X.onResult)X.onResult($);Y.push($.output)}}));for(let $ of Y)if(!z.has($))Q.add($);return[...Q]};q0.contains=(Z,J,X)=>{if(typeof Z!=="string")throw new TypeError(`Expected a string: "${jX.inspect(Z)}"`);if(Array.isArray(J))return J.some((Q)=>q0.contains(Z,Q,X));if(typeof J==="string"){if(FX(Z)||FX(J))return!1;if(Z.includes(J)||Z.startsWith("./")&&Z.slice(2).includes(J))return!0}return q0.isMatch(Z,J,{...X,contains:!0})};q0.matchKeys=(Z,J,X)=>{if(!c7.isObject(Z))throw new TypeError("Expected the first argument to be an object");let Q=q0(Object.keys(Z),J,X),Y={};for(let U of Q)Y[U]=Z[U];return Y};q0.some=(Z,J,X)=>{let Q=[].concat(Z);for(let Y of[].concat(J)){let U=U8(String(Y),X);if(Q.some((z)=>U(z)))return!0}return!1};q0.every=(Z,J,X)=>{let Q=[].concat(Z);for(let Y of[].concat(J)){let U=U8(String(Y),X);if(!Q.every((z)=>U(z)))return!1}return!0};q0.all=(Z,J,X)=>{if(typeof Z!=="string")throw new TypeError(`Expected a string: "${jX.inspect(Z)}"`);return[].concat(J).every((Q)=>U8(Q,X)(Z))};q0.capture=(Z,J,X)=>{let Q=c7.isWindows(X),U=U8.makeRe(String(Z),{...X,capture:!0}).exec(Q?c7.toPosixSlashes(J):J);if(U)return U.slice(1).map((z)=>z===void 0?"":z)};q0.makeRe=(...Z)=>U8.makeRe(...Z);q0.scan=(...Z)=>U8.scan(...Z);q0.parse=(Z,J)=>{let X=[];for(let Q of[].concat(Z||[]))for(let Y of DX(String(Q),J))X.push(U8.parse(Y,J));return X};q0.braces=(Z,J)=>{if(typeof Z!=="string")throw new TypeError("Expected a string");if(J&&J.nobrace===!0||!/\{.*\}/.test(Z))return[Z];return DX(Z,J)};q0.braceExpand=(Z,J)=>{if(typeof Z!=="string")throw new TypeError("Expected a string");return q0.braces(Z,{...J,expand:!0})};TX.exports=q0});var vX=O((SX)=>{var wX=function(Z,J={}){return!OX(Z,J)},OX=function(Z,J={}){if(Z==="")return!1;if(J.caseSensitiveMatch===!1||Z.includes(iB))return!0;if(oB.test(Z)||aB.test(Z)||rB.test(Z))return!0;if(J.extglob!==!1&&sB.test(Z))return!0;if(J.braceExpansion!==!1&&ZW(Z))return!0;return!1},ZW=function(Z){const J=Z.indexOf("{");if(J===-1)return!1;const X=Z.indexOf("}",J+1);if(X===-1)return!1;const Q=Z.slice(J,X);return tB.test(Q)},JW=function(Z){return M5(Z)?Z.slice(1):Z},XW=function(Z){return"!"+Z},M5=function(Z){return Z.startsWith("!")&&Z[1]!=="("},RX=function(Z){return!M5(Z)},QW=function(Z){return Z.filter(M5)},YW=function(Z){return Z.filter(RX)},UW=function(Z){return Z.filter((J)=>!p7(J))},zW=function(Z){return Z.filter(p7)},p7=function(Z){return Z.startsWith("..")||Z.startsWith("./..")},$W=function(Z){return nB(Z,{flipBackslashes:!1})},VW=function(Z){return Z.includes(PX)},CX=function(Z){return Z.endsWith("/"+PX)},BW=function(Z){const J=pB.basename(Z);return CX(Z)||wX(J)},WW=function(Z){return Z.reduce((J,X)=>{return J.concat(AX(X))},[])},AX=function(Z){const J=l7.braces(Z,{expand:!0,nodupes:!0});return J.sort((X,Q)=>X.length-Q.length),J.filter((X)=>X!=="")},qW=function(Z,J){let{parts:X}=l7.scan(Z,Object.assign(Object.assign({},J),{parts:!0}));if(X.length===0)X=[Z];if(X[0].startsWith("/"))X[0]=X[0].slice(1),X.unshift("");return X},_X=function(Z,J){return l7.makeRe(Z,J)},KW=function(Z,J){return Z.map((X)=>_X(X,J))},NW=function(Z,J){return J.some((X)=>X.test(Z))},GW=function(Z){return Z.replace(eB,"/")};Object.defineProperty(SX,"__esModule",{value:!0});SX.removeDuplicateSlashes=SX.matchAny=SX.convertPatternsToRe=SX.makeRe=SX.getPatternParts=SX.expandBraceExpansion=SX.expandPatternsWithBraceExpansion=SX.isAffectDepthOfReadingPattern=SX.endsWithSlashGlobStar=SX.hasGlobStar=SX.getBaseDirectory=SX.isPatternRelatedToParentDirectory=SX.getPatternsOutsideCurrentDirectory=SX.getPatternsInsideCurrentDirectory=SX.getPositivePatterns=SX.getNegativePatterns=SX.isPositivePattern=SX.isNegativePattern=SX.convertToNegativePattern=SX.convertToPositivePattern=SX.isDynamicPattern=SX.isStaticPattern=void 0;var pB=import.meta.require("path"),nB=L9(),l7=EX(),PX="**",iB="\\",oB=/[*?]|^!/,aB=/\[[^[]*]/,rB=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,sB=/[!*+?@]\([^(]*\)/,tB=/,|\.\./,eB=/(?!^)\/{2,}/g;SX.isStaticPattern=wX;SX.isDynamicPattern=OX;SX.convertToPositivePattern=JW;SX.convertToNegativePattern=XW;SX.isNegativePattern=M5;SX.isPositivePattern=RX;SX.getNegativePatterns=QW;SX.getPositivePatterns=YW;SX.getPatternsInsideCurrentDirectory=UW;SX.getPatternsOutsideCurrentDirectory=zW;SX.isPatternRelatedToParentDirectory=p7;SX.getBaseDirectory=$W;SX.hasGlobStar=VW;SX.endsWithSlashGlobStar=CX;SX.isAffectDepthOfReadingPattern=BW;SX.expandPatternsWithBraceExpansion=WW;SX.expandBraceExpansion=AX;SX.getPatternParts=qW;SX.makeRe=_X;SX.convertPatternsToRe=KW;SX.matchAny=NW;SX.removeDuplicateSlashes=GW});var yX=O((oM,kX)=>{var uW=function(){const Z=[],J=yW.call(arguments);let X=!1,Q=J[J.length-1];if(Q&&!Array.isArray(Q)&&Q.pipe==null)J.pop();else Q={};const Y=Q.end!==!1,U=Q.pipeError===!0;if(Q.objectMode==null)Q.objectMode=!0;if(Q.highWaterMark==null)Q.highWaterMark=65536;const z=hX(Q);function $(){for(let W=0,N=arguments.length;W0)return;X=!1,V()}function I(H){function G(){if(H.removeListener("merge2UnpipeEnd",G),H.removeListener("end",G),U)H.removeListener("error",E);q()}function E(P){z.emit("error",P)}if(H._readableState.endEmitted)return q();if(H.on("merge2UnpipeEnd",G),H.on("end",G),U)H.on("error",E);H.pipe(z,{end:!1}),H.resume()}for(let H=0;H{var mW=function(Z){const J=fW(Z);return Z.forEach((X)=>{X.once("error",(Q)=>J.emit("error",Q))}),J.once("close",()=>uX(Z)),J.once("end",()=>uX(Z)),J},uX=function(Z){Z.forEach((J)=>J.emit("close"))};Object.defineProperty(fX,"__esModule",{value:!0});fX.merge=void 0;var fW=yX();fX.merge=mW});var lX=O((dX)=>{var gW=function(Z){return typeof Z==="string"},dW=function(Z){return Z===""};Object.defineProperty(dX,"__esModule",{value:!0});dX.isEmpty=dX.isString=void 0;dX.isString=gW;dX.isEmpty=dW});var V8=O((pX)=>{Object.defineProperty(pX,"__esModule",{value:!0});pX.string=pX.stream=pX.pattern=pX.path=pX.fs=pX.errno=pX.array=void 0;var lW=t4();pX.array=lW;var pW=J9();pX.errno=pW;var nW=U9();pX.fs=nW;var iW=q9();pX.path=iW;var oW=vX();pX.pattern=oW;var aW=gX();pX.stream=aW;var rW=lX();pX.string=rW});var tX=O((rX)=>{var Qq=function(Z,J){const X=iX(Z,J),Q=iX(J.ignore,J),Y=oX(X),U=aX(X,Q),z=Y.filter((W)=>J8.pattern.isStaticPattern(W,J)),$=Y.filter((W)=>J8.pattern.isDynamicPattern(W,J)),V=n7(z,U,!1),B=n7($,U,!0);return V.concat(B)},iX=function(Z,J){let X=Z;if(J.braceExpansion)X=J8.pattern.expandPatternsWithBraceExpansion(X);if(J.baseNameMatch)X=X.map((Q)=>Q.includes("/")?Q:`**/${Q}`);return X.map((Q)=>J8.pattern.removeDuplicateSlashes(Q))},n7=function(Z,J,X){const Q=[],Y=J8.pattern.getPatternsOutsideCurrentDirectory(Z),U=J8.pattern.getPatternsInsideCurrentDirectory(Z),z=i7(Y),$=i7(U);if(Q.push(...o7(z,J,X)),("."in $))Q.push(a7(".",U,J,X));else Q.push(...o7($,J,X));return Q},oX=function(Z){return J8.pattern.getPositivePatterns(Z)},aX=function(Z,J){return J8.pattern.getNegativePatterns(Z).concat(J).map(J8.pattern.convertToPositivePattern)},i7=function(Z){const J={};return Z.reduce((X,Q)=>{const Y=J8.pattern.getBaseDirectory(Q);if(Y in X)X[Y].push(Q);else X[Y]=[Q];return X},J)},o7=function(Z,J,X){return Object.keys(Z).map((Q)=>{return a7(Q,Z[Q],J,X)})},a7=function(Z,J,X,Q){return{dynamic:Q,positive:J,negative:X,base:Z,patterns:[].concat(J,X.map(J8.pattern.convertToNegativePattern))}};Object.defineProperty(rX,"__esModule",{value:!0});rX.convertPatternGroupToTask=rX.convertPatternGroupsToTasks=rX.groupPatternsByBaseDirectory=rX.getNegativePatternsAsPositive=rX.getPositivePatterns=rX.convertPatternsToTasks=rX.generate=void 0;var J8=V8();rX.generate=Qq;rX.convertPatternsToTasks=n7;rX.getPositivePatterns=oX;rX.getNegativePatternsAsPositive=aX;rX.groupPatternsByBaseDirectory=i7;rX.convertPatternGroupsToTasks=o7;rX.convertPatternGroupToTask=a7});var X3=O((Z3)=>{var Wq=function(Z,J,X){J.fs.lstat(Z,(Q,Y)=>{if(Q!==null){eX(X,Q);return}if(!Y.isSymbolicLink()||!J.followSymbolicLink){r7(X,Y);return}J.fs.stat(Z,(U,z)=>{if(U!==null){if(J.throwErrorOnBrokenSymbolicLink){eX(X,U);return}r7(X,Y);return}if(J.markSymbolicLink)z.isSymbolicLink=()=>!0;r7(X,z)})})},eX=function(Z,J){Z(J)},r7=function(Z,J){Z(null,J)};Object.defineProperty(Z3,"__esModule",{value:!0});Z3.read=void 0;Z3.read=Wq});var U3=O((Q3)=>{var qq=function(Z,J){const X=J.fs.lstatSync(Z);if(!X.isSymbolicLink()||!J.followSymbolicLink)return X;try{const Q=J.fs.statSync(Z);if(J.markSymbolicLink)Q.isSymbolicLink=()=>!0;return Q}catch(Q){if(!J.throwErrorOnBrokenSymbolicLink)return X;throw Q}};Object.defineProperty(Q3,"__esModule",{value:!0});Q3.read=void 0;Q3.read=qq});var V3=O((z3)=>{var Kq=function(Z){if(Z===void 0)return z3.FILE_SYSTEM_ADAPTER;return Object.assign(Object.assign({},z3.FILE_SYSTEM_ADAPTER),Z)};Object.defineProperty(z3,"__esModule",{value:!0});z3.createFileSystemAdapter=z3.FILE_SYSTEM_ADAPTER=void 0;var L5=import.meta.require("fs");z3.FILE_SYSTEM_ADAPTER={lstat:L5.lstat,stat:L5.stat,lstatSync:L5.lstatSync,statSync:L5.statSync};z3.createFileSystemAdapter=Kq});var q3=O((W3)=>{Object.defineProperty(W3,"__esModule",{value:!0});var Nq=V3();class B3{constructor(Z={}){this._options=Z,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Nq.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(Z,J){return Z!==null&&Z!==void 0?Z:J}}W3.default=B3});var o8=O((N3)=>{var Iq=function(Z,J,X){if(typeof J==="function"){K3.read(Z,e7(),J);return}K3.read(Z,e7(J),X)},Mq=function(Z,J){const X=e7(J);return Hq.read(Z,X)},e7=function(Z={}){if(Z instanceof t7.default)return Z;return new t7.default(Z)};Object.defineProperty(N3,"__esModule",{value:!0});N3.statSync=N3.stat=N3.Settings=void 0;var K3=X3(),Hq=U3(),t7=q3();N3.Settings=t7.default;N3.stat=Iq;N3.statSync=Mq});var M3=O((YL,I3)=>{/*! queue-microtask. MIT License. Feross Aboukhadijeh */var H3;I3.exports=typeof queueMicrotask==="function"?queueMicrotask.bind(typeof window!=="undefined"?window:global):(Z)=>(H3||(H3=Promise.resolve())).then(Z).catch((J)=>setTimeout(()=>{throw J},0))});var F3=O((UL,L3)=>{var Dq=function(Z,J){let X,Q,Y,U=!0;if(Array.isArray(Z))X=[],Q=Z.length;else Y=Object.keys(Z),X={},Q=Y.length;function z(V){function B(){if(J)J(V,X);J=null}if(U)jq(B);else B()}function $(V,B,W){if(X[V]=W,--Q===0||B)z(B)}if(!Q)z(null);else if(Y)Y.forEach(function(V){Z[V](function(B,W){$(V,B,W)})});else Z.forEach(function(V,B){V(function(W,N){$(B,W,N)})});U=!1};/*! run-parallel. MIT License. Feross Aboukhadijeh */L3.exports=Dq;var jq=M3()});var ZZ=O((T3)=>{Object.defineProperty(T3,"__esModule",{value:!0});T3.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var F5=process.versions.node.split(".");if(F5[0]===void 0||F5[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var j3=Number.parseInt(F5[0],10),Tq=Number.parseInt(F5[1],10),D3=10,Eq=10,Pq=j3>D3,wq=j3===D3&&Tq>=Eq;T3.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Pq||wq});var R3=O((w3)=>{var Oq=function(Z,J){return new P3(Z,J)};Object.defineProperty(w3,"__esModule",{value:!0});w3.createDirentFromStats=void 0;class P3{constructor(Z,J){this.name=Z,this.isBlockDevice=J.isBlockDevice.bind(J),this.isCharacterDevice=J.isCharacterDevice.bind(J),this.isDirectory=J.isDirectory.bind(J),this.isFIFO=J.isFIFO.bind(J),this.isFile=J.isFile.bind(J),this.isSocket=J.isSocket.bind(J),this.isSymbolicLink=J.isSymbolicLink.bind(J)}}w3.createDirentFromStats=Oq});var JZ=O((C3)=>{Object.defineProperty(C3,"__esModule",{value:!0});C3.fs=void 0;var Rq=R3();C3.fs=Rq});var XZ=O((_3)=>{var Cq=function(Z,J,X){if(Z.endsWith(X))return Z+J;return Z+X+J};Object.defineProperty(_3,"__esModule",{value:!0});_3.joinPathSegments=void 0;_3.joinPathSegments=Cq});var f3=O((y3)=>{var Sq=function(Z,J,X){if(!J.stats&&_q.IS_SUPPORT_READDIR_WITH_FILE_TYPES){b3(Z,J,X);return}k3(Z,J,X)},b3=function(Z,J,X){J.fs.readdir(Z,{withFileTypes:!0},(Q,Y)=>{if(Q!==null){j5(X,Q);return}const U=Y.map(($)=>({dirent:$,name:$.name,path:h3.joinPathSegments(Z,$.name,J.pathSegmentSeparator)}));if(!J.followSymbolicLinks){QZ(X,U);return}const z=U.map(($)=>xq($,J));x3(z,($,V)=>{if($!==null){j5(X,$);return}QZ(X,V)})})},xq=function(Z,J){return(X)=>{if(!Z.dirent.isSymbolicLink()){X(null,Z);return}J.fs.stat(Z.path,(Q,Y)=>{if(Q!==null){if(J.throwErrorOnBrokenSymbolicLink){X(Q);return}X(null,Z);return}Z.dirent=v3.fs.createDirentFromStats(Z.name,Y),X(null,Z)})}},k3=function(Z,J,X){J.fs.readdir(Z,(Q,Y)=>{if(Q!==null){j5(X,Q);return}const U=Y.map((z)=>{const $=h3.joinPathSegments(Z,z,J.pathSegmentSeparator);return(V)=>{Aq.stat($,J.fsStatSettings,(B,W)=>{if(B!==null){V(B);return}const N={name:z,path:$,dirent:v3.fs.createDirentFromStats(z,W)};if(J.stats)N.stats=W;V(null,N)})}});x3(U,(z,$)=>{if(z!==null){j5(X,z);return}QZ(X,$)})})},j5=function(Z,J){Z(J)},QZ=function(Z,J){Z(null,J)};Object.defineProperty(y3,"__esModule",{value:!0});y3.readdir=y3.readdirWithFileTypes=y3.read=void 0;var Aq=o8(),x3=F3(),_q=ZZ(),v3=JZ(),h3=XZ();y3.read=Sq;y3.readdirWithFileTypes=b3;y3.readdir=k3});var n3=O((l3)=>{var yq=function(Z,J){if(!J.stats&&kq.IS_SUPPORT_READDIR_WITH_FILE_TYPES)return d3(Z,J);return c3(Z,J)},d3=function(Z,J){return J.fs.readdirSync(Z,{withFileTypes:!0}).map((Q)=>{const Y={dirent:Q,name:Q.name,path:g3.joinPathSegments(Z,Q.name,J.pathSegmentSeparator)};if(Y.dirent.isSymbolicLink()&&J.followSymbolicLinks)try{const U=J.fs.statSync(Y.path);Y.dirent=m3.fs.createDirentFromStats(Y.name,U)}catch(U){if(J.throwErrorOnBrokenSymbolicLink)throw U}return Y})},c3=function(Z,J){return J.fs.readdirSync(Z).map((Q)=>{const Y=g3.joinPathSegments(Z,Q,J.pathSegmentSeparator),U=bq.statSync(Y,J.fsStatSettings),z={name:Q,path:Y,dirent:m3.fs.createDirentFromStats(Q,U)};if(J.stats)z.stats=U;return z})};Object.defineProperty(l3,"__esModule",{value:!0});l3.readdir=l3.readdirWithFileTypes=l3.read=void 0;var bq=o8(),kq=ZZ(),m3=JZ(),g3=XZ();l3.read=yq;l3.readdirWithFileTypes=d3;l3.readdir=c3});var a3=O((i3)=>{var mq=function(Z){if(Z===void 0)return i3.FILE_SYSTEM_ADAPTER;return Object.assign(Object.assign({},i3.FILE_SYSTEM_ADAPTER),Z)};Object.defineProperty(i3,"__esModule",{value:!0});i3.createFileSystemAdapter=i3.FILE_SYSTEM_ADAPTER=void 0;var q6=import.meta.require("fs");i3.FILE_SYSTEM_ADAPTER={lstat:q6.lstat,stat:q6.stat,lstatSync:q6.lstatSync,statSync:q6.statSync,readdir:q6.readdir,readdirSync:q6.readdirSync};i3.createFileSystemAdapter=mq});var t3=O((s3)=>{Object.defineProperty(s3,"__esModule",{value:!0});var gq=import.meta.require("path"),dq=o8(),cq=a3();class r3{constructor(Z={}){this._options=Z,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=cq.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,gq.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new dq.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(Z,J){return Z!==null&&Z!==void 0?Z:J}}s3.default=r3});var D5=O((ZQ)=>{var nq=function(Z,J,X){if(typeof J==="function"){e3.read(Z,zZ(),J);return}e3.read(Z,zZ(J),X)},iq=function(Z,J){const X=zZ(J);return pq.read(Z,X)},zZ=function(Z={}){if(Z instanceof UZ.default)return Z;return new UZ.default(Z)};Object.defineProperty(ZQ,"__esModule",{value:!0});ZQ.Settings=ZQ.scandirSync=ZQ.scandir=void 0;var e3=f3(),pq=n3(),UZ=t3();ZQ.Settings=UZ.default;ZQ.scandir=nq;ZQ.scandirSync=iq});var QQ=O((HL,XQ)=>{var rq=function(Z){var J=new Z,X=J;function Q(){var U=J;if(U.next)J=U.next;else J=new Z,X=J;return U.next=null,U}function Y(U){X.next=U,X=U}return{get:Q,release:Y}};XQ.exports=rq});var UQ=O((IL,$Z)=>{var YQ=function(Z,J,X){if(typeof Z==="function")X=J,J=Z,Z=null;if(X<1)throw new Error("fastqueue concurrency must be greater than 1");var Q=sq(tq),Y=null,U=null,z=0,$=null,V={push:G,drain:a0,saturated:a0,pause:W,paused:!1,concurrency:X,running:B,resume:I,idle:H,length:N,getQueue:q,unshift:E,empty:a0,kill:S,killAndDrain:k,error:b};return V;function B(){return z}function W(){V.paused=!0}function N(){var l=Y,J0=0;while(l)l=l.next,J0++;return J0}function q(){var l=Y,J0=[];while(l)J0.push(l.value),l=l.next;return J0}function I(){if(!V.paused)return;V.paused=!1;for(var l=0;l{var ZK=function(Z,J){if(Z.errorFilter===null)return!0;return!Z.errorFilter(J)},JK=function(Z,J){return Z===null||Z(J)},XK=function(Z,J){return Z.split(/[/\\]/).join(J)},QK=function(Z,J,X){if(Z==="")return J;if(Z.endsWith(X))return Z+J;return Z+X+J};Object.defineProperty(zQ,"__esModule",{value:!0});zQ.joinPathSegments=zQ.replacePathSegmentSeparator=zQ.isAppliedFilter=zQ.isFatalError=void 0;zQ.isFatalError=ZK;zQ.isAppliedFilter=JK;zQ.replacePathSegmentSeparator=XK;zQ.joinPathSegments=QK});var VZ=O((BQ)=>{Object.defineProperty(BQ,"__esModule",{value:!0});var $K=T5();class VQ{constructor(Z,J){this._root=Z,this._settings=J,this._root=$K.replacePathSegmentSeparator(Z,J.pathSegmentSeparator)}}BQ.default=VQ});var BZ=O((qQ)=>{Object.defineProperty(qQ,"__esModule",{value:!0});var BK=import.meta.require("events"),WK=D5(),qK=UQ(),E5=T5(),KK=VZ();class WQ extends KK.default{constructor(Z,J){super(Z,J);this._settings=J,this._scandir=WK.scandir,this._emitter=new BK.EventEmitter,this._queue=qK(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{if(!this._isFatalError)this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(Z){this._emitter.on("entry",Z)}onError(Z){this._emitter.once("error",Z)}onEnd(Z){this._emitter.once("end",Z)}_pushToQueue(Z,J){const X={directory:Z,base:J};this._queue.push(X,(Q)=>{if(Q!==null)this._handleError(Q)})}_worker(Z,J){this._scandir(Z.directory,this._settings.fsScandirSettings,(X,Q)=>{if(X!==null){J(X,void 0);return}for(let Y of Q)this._handleEntry(Y,Z.base);J(null,void 0)})}_handleError(Z){if(this._isDestroyed||!E5.isFatalError(this._settings,Z))return;this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",Z)}_handleEntry(Z,J){if(this._isDestroyed||this._isFatalError)return;const X=Z.path;if(J!==void 0)Z.path=E5.joinPathSegments(J,Z.name,this._settings.pathSegmentSeparator);if(E5.isAppliedFilter(this._settings.entryFilter,Z))this._emitEntry(Z);if(Z.dirent.isDirectory()&&E5.isAppliedFilter(this._settings.deepFilter,Z))this._pushToQueue(X,J===void 0?void 0:Z.path)}_emitEntry(Z){this._emitter.emit("entry",Z)}}qQ.default=WQ});var GQ=O((NQ)=>{var HK=function(Z,J){Z(J)},IK=function(Z,J){Z(null,J)};Object.defineProperty(NQ,"__esModule",{value:!0});var GK=BZ();class KQ{constructor(Z,J){this._root=Z,this._settings=J,this._reader=new GK.default(this._root,this._settings),this._storage=[]}read(Z){this._reader.onError((J)=>{HK(Z,J)}),this._reader.onEntry((J)=>{this._storage.push(J)}),this._reader.onEnd(()=>{IK(Z,this._storage)}),this._reader.read()}}NQ.default=KQ});var MQ=O((IQ)=>{Object.defineProperty(IQ,"__esModule",{value:!0});var LK=import.meta.require("stream"),FK=BZ();class HQ{constructor(Z,J){this._root=Z,this._settings=J,this._reader=new FK.default(this._root,this._settings),this._stream=new LK.Readable({objectMode:!0,read:()=>{},destroy:()=>{if(!this._reader.isDestroyed)this._reader.destroy()}})}read(){return this._reader.onError((Z)=>{this._stream.emit("error",Z)}),this._reader.onEntry((Z)=>{this._stream.push(Z)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}}IQ.default=HQ});var jQ=O((FQ)=>{Object.defineProperty(FQ,"__esModule",{value:!0});var DK=D5(),P5=T5(),TK=VZ();class LQ extends TK.default{constructor(){super(...arguments);this._scandir=DK.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(Z,J){this._queue.add({directory:Z,base:J})}_handleQueue(){for(let Z of this._queue.values())this._handleDirectory(Z.directory,Z.base)}_handleDirectory(Z,J){try{const X=this._scandir(Z,this._settings.fsScandirSettings);for(let Q of X)this._handleEntry(Q,J)}catch(X){this._handleError(X)}}_handleError(Z){if(!P5.isFatalError(this._settings,Z))return;throw Z}_handleEntry(Z,J){const X=Z.path;if(J!==void 0)Z.path=P5.joinPathSegments(J,Z.name,this._settings.pathSegmentSeparator);if(P5.isAppliedFilter(this._settings.entryFilter,Z))this._pushToStorage(Z);if(Z.dirent.isDirectory()&&P5.isAppliedFilter(this._settings.deepFilter,Z))this._pushToQueue(X,J===void 0?void 0:Z.path)}_pushToStorage(Z){this._storage.push(Z)}}FQ.default=LQ});var EQ=O((TQ)=>{Object.defineProperty(TQ,"__esModule",{value:!0});var PK=jQ();class DQ{constructor(Z,J){this._root=Z,this._settings=J,this._reader=new PK.default(this._root,this._settings)}read(){return this._reader.read()}}TQ.default=DQ});var OQ=O((wQ)=>{Object.defineProperty(wQ,"__esModule",{value:!0});var OK=import.meta.require("path"),RK=D5();class PQ{constructor(Z={}){this._options=Z,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,OK.sep),this.fsScandirSettings=new RK.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(Z,J){return Z!==null&&Z!==void 0?Z:J}}wQ.default=PQ});var O5=O((CQ)=>{var SK=function(Z,J,X){if(typeof J==="function"){new RQ.default(Z,w5()).read(J);return}new RQ.default(Z,w5(J)).read(X)},xK=function(Z,J){const X=w5(J);return new _K.default(Z,X).read()},vK=function(Z,J){const X=w5(J);return new AK.default(Z,X).read()},w5=function(Z={}){if(Z instanceof WZ.default)return Z;return new WZ.default(Z)};Object.defineProperty(CQ,"__esModule",{value:!0});CQ.Settings=CQ.walkStream=CQ.walkSync=CQ.walk=void 0;var RQ=GQ(),AK=MQ(),_K=EQ(),WZ=OQ();CQ.Settings=WZ.default;CQ.walk=SK;CQ.walkSync=xK;CQ.walkStream=vK});var R5=O((xQ)=>{Object.defineProperty(xQ,"__esModule",{value:!0});var yK=import.meta.require("path"),uK=o8(),_Q=V8();class SQ{constructor(Z){this._settings=Z,this._fsStatSettings=new uK.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(Z){return yK.resolve(this._settings.cwd,Z)}_makeEntry(Z,J){const X={name:J,path:J,dirent:_Q.fs.createDirentFromStats(J,Z)};if(this._settings.stats)X.stats=Z;return X}_isFatalError(Z){return!_Q.errno.isEnoentCodeError(Z)&&!this._settings.suppressErrors}}xQ.default=SQ});var qZ=O((hQ)=>{Object.defineProperty(hQ,"__esModule",{value:!0});var mK=import.meta.require("stream"),gK=o8(),dK=O5(),cK=R5();class vQ extends cK.default{constructor(){super(...arguments);this._walkStream=dK.walkStream,this._stat=gK.stat}dynamic(Z,J){return this._walkStream(Z,J)}static(Z,J){const X=Z.map(this._getFullEntryPath,this),Q=new mK.PassThrough({objectMode:!0});Q._write=(Y,U,z)=>{return this._getEntry(X[Y],Z[Y],J).then(($)=>{if($!==null&&J.entryFilter($))Q.push($);if(Y===X.length-1)Q.end();z()}).catch(z)};for(let Y=0;Ythis._makeEntry(Q,J)).catch((Q)=>{if(X.errorFilter(Q))return null;throw Q})}_getStat(Z){return new Promise((J,X)=>{this._stat(Z,this._fsStatSettings,(Q,Y)=>{return Q===null?J(Y):X(Q)})})}}hQ.default=vQ});var yQ=O((kQ)=>{Object.defineProperty(kQ,"__esModule",{value:!0});var pK=O5(),nK=R5(),iK=qZ();class bQ extends nK.default{constructor(){super(...arguments);this._walkAsync=pK.walk,this._readerStream=new iK.default(this._settings)}dynamic(Z,J){return new Promise((X,Q)=>{this._walkAsync(Z,J,(Y,U)=>{if(Y===null)X(U);else Q(Y)})})}async static(Z,J){const X=[],Q=this._readerStream.static(Z,J);return new Promise((Y,U)=>{Q.once("error",U),Q.on("data",(z)=>X.push(z)),Q.once("end",()=>Y(X))})}}kQ.default=bQ});var mQ=O((fQ)=>{Object.defineProperty(fQ,"__esModule",{value:!0});var v6=V8();class uQ{constructor(Z,J,X){this._patterns=Z,this._settings=J,this._micromatchOptions=X,this._storage=[],this._fillStorage()}_fillStorage(){for(let Z of this._patterns){const J=this._getPatternSegments(Z),X=this._splitSegmentsIntoSections(J);this._storage.push({complete:X.length<=1,pattern:Z,segments:J,sections:X})}}_getPatternSegments(Z){return v6.pattern.getPatternParts(Z,this._micromatchOptions).map((X)=>{if(!v6.pattern.isDynamicPattern(X,this._settings))return{dynamic:!1,pattern:X};return{dynamic:!0,pattern:X,patternRe:v6.pattern.makeRe(X,this._micromatchOptions)}})}_splitSegmentsIntoSections(Z){return v6.array.splitWhen(Z,(J)=>J.dynamic&&v6.pattern.hasGlobStar(J.pattern))}}fQ.default=uQ});var cQ=O((dQ)=>{Object.defineProperty(dQ,"__esModule",{value:!0});var rK=mQ();class gQ extends rK.default{match(Z){const J=Z.split("/"),X=J.length,Q=this._storage.filter((Y)=>!Y.complete||Y.segments.length>X);for(let Y of Q){const U=Y.sections[0];if(!Y.complete&&X>U.length)return!0;if(J.every(($,V)=>{const B=Y.segments[V];if(B.dynamic&&B.patternRe.test($))return!0;if(!B.dynamic&&B.pattern===$)return!0;return!1}))return!0}return!1}}dQ.default=gQ});var nQ=O((pQ)=>{Object.defineProperty(pQ,"__esModule",{value:!0});var C5=V8(),tK=cQ();class lQ{constructor(Z,J){this._settings=Z,this._micromatchOptions=J}getFilter(Z,J,X){const Q=this._getMatcher(J),Y=this._getNegativePatternsRe(X);return(U)=>this._filter(Z,U,Q,Y)}_getMatcher(Z){return new tK.default(Z,this._settings,this._micromatchOptions)}_getNegativePatternsRe(Z){const J=Z.filter(C5.pattern.isAffectDepthOfReadingPattern);return C5.pattern.convertPatternsToRe(J,this._micromatchOptions)}_filter(Z,J,X,Q){if(this._isSkippedByDeep(Z,J.path))return!1;if(this._isSkippedSymbolicLink(J))return!1;const Y=C5.path.removeLeadingDotSegment(J.path);if(this._isSkippedByPositivePatterns(Y,X))return!1;return this._isSkippedByNegativePatterns(Y,Q)}_isSkippedByDeep(Z,J){if(this._settings.deep===Infinity)return!1;return this._getEntryLevel(Z,J)>=this._settings.deep}_getEntryLevel(Z,J){const X=J.split("/").length;if(Z==="")return X;const Q=Z.split("/").length;return X-Q}_isSkippedSymbolicLink(Z){return!this._settings.followSymbolicLinks&&Z.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(Z,J){return!this._settings.baseNameMatch&&!J.match(Z)}_isSkippedByNegativePatterns(Z,J){return!C5.pattern.matchAny(Z,J)}}pQ.default=lQ});var aQ=O((oQ)=>{Object.defineProperty(oQ,"__esModule",{value:!0});var a8=V8();class iQ{constructor(Z,J){this._settings=Z,this._micromatchOptions=J,this.index=new Map}getFilter(Z,J){const X=a8.pattern.convertPatternsToRe(Z,this._micromatchOptions),Q=a8.pattern.convertPatternsToRe(J,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return(Y)=>this._filter(Y,X,Q)}_filter(Z,J,X){const Q=a8.path.removeLeadingDotSegment(Z.path);if(this._settings.unique&&this._isDuplicateEntry(Q))return!1;if(this._onlyFileFilter(Z)||this._onlyDirectoryFilter(Z))return!1;if(this._isSkippedByAbsoluteNegativePatterns(Q,X))return!1;const Y=Z.dirent.isDirectory(),U=this._isMatchToPatterns(Q,J,Y)&&!this._isMatchToPatterns(Q,X,Y);if(this._settings.unique&&U)this._createIndexRecord(Q);return U}_isDuplicateEntry(Z){return this.index.has(Z)}_createIndexRecord(Z){this.index.set(Z,void 0)}_onlyFileFilter(Z){return this._settings.onlyFiles&&!Z.dirent.isFile()}_onlyDirectoryFilter(Z){return this._settings.onlyDirectories&&!Z.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(Z,J){if(!this._settings.absolute)return!1;const X=a8.path.makeAbsolute(this._settings.cwd,Z);return a8.pattern.matchAny(X,J)}_isMatchToPatterns(Z,J,X){const Q=a8.pattern.matchAny(Z,J);if(!Q&&X)return a8.pattern.matchAny(Z+"/",J);return Q}}oQ.default=iQ});var tQ=O((sQ)=>{Object.defineProperty(sQ,"__esModule",{value:!0});var JN=V8();class rQ{constructor(Z){this._settings=Z}getFilter(){return(Z)=>this._isNonFatalError(Z)}_isNonFatalError(Z){return JN.errno.isEnoentCodeError(Z)||this._settings.suppressErrors}}sQ.default=rQ});var XY=O((JY)=>{Object.defineProperty(JY,"__esModule",{value:!0});var eQ=V8();class ZY{constructor(Z){this._settings=Z}getTransformer(){return(Z)=>this._transform(Z)}_transform(Z){let J=Z.path;if(this._settings.absolute)J=eQ.path.makeAbsolute(this._settings.cwd,J),J=eQ.path.unixify(J);if(this._settings.markDirectories&&Z.dirent.isDirectory())J+="/";if(!this._settings.objectMode)return J;return Object.assign(Object.assign({},Z),{path:J})}}JY.default=ZY});var A5=O((YY)=>{Object.defineProperty(YY,"__esModule",{value:!0});var YN=import.meta.require("path"),UN=nQ(),zN=aQ(),$N=tQ(),VN=XY();class QY{constructor(Z){this._settings=Z,this.errorFilter=new $N.default(this._settings),this.entryFilter=new zN.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new UN.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new VN.default(this._settings)}_getRootDirectory(Z){return YN.resolve(this._settings.cwd,Z.base)}_getReaderOptions(Z){const J=Z.base==="."?"":Z.base;return{basePath:J,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(J,Z.positive,Z.negative),entryFilter:this.entryFilter.getFilter(Z.positive,Z.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}}YY.default=QY});var $Y=O((zY)=>{Object.defineProperty(zY,"__esModule",{value:!0});var WN=yQ(),qN=A5();class UY extends qN.default{constructor(){super(...arguments);this._reader=new WN.default(this._settings)}async read(Z){const J=this._getRootDirectory(Z),X=this._getReaderOptions(Z);return(await this.api(J,Z,X)).map((Y)=>X.transform(Y))}api(Z,J,X){if(J.dynamic)return this._reader.dynamic(Z,X);return this._reader.static(J.patterns,X)}}zY.default=UY});var WY=O((BY)=>{Object.defineProperty(BY,"__esModule",{value:!0});var NN=import.meta.require("stream"),GN=qZ(),HN=A5();class VY extends HN.default{constructor(){super(...arguments);this._reader=new GN.default(this._settings)}read(Z){const J=this._getRootDirectory(Z),X=this._getReaderOptions(Z),Q=this.api(J,Z,X),Y=new NN.Readable({objectMode:!0,read:()=>{}});return Q.once("error",(U)=>Y.emit("error",U)).on("data",(U)=>Y.emit("data",X.transform(U))).once("end",()=>Y.emit("end")),Y.once("close",()=>Q.destroy()),Y}api(Z,J,X){if(J.dynamic)return this._reader.dynamic(Z,X);return this._reader.static(J.patterns,X)}}BY.default=VY});var NY=O((KY)=>{Object.defineProperty(KY,"__esModule",{value:!0});var MN=o8(),LN=O5(),FN=R5();class qY extends FN.default{constructor(){super(...arguments);this._walkSync=LN.walkSync,this._statSync=MN.statSync}dynamic(Z,J){return this._walkSync(Z,J)}static(Z,J){const X=[];for(let Q of Z){const Y=this._getFullEntryPath(Q),U=this._getEntry(Y,Q,J);if(U===null||!J.entryFilter(U))continue;X.push(U)}return X}_getEntry(Z,J,X){try{const Q=this._getStat(Z);return this._makeEntry(Q,J)}catch(Q){if(X.errorFilter(Q))return null;throw Q}}_getStat(Z){return this._statSync(Z,this._fsStatSettings)}}KY.default=qY});var IY=O((HY)=>{Object.defineProperty(HY,"__esModule",{value:!0});var DN=NY(),TN=A5();class GY extends TN.default{constructor(){super(...arguments);this._reader=new DN.default(this._settings)}read(Z){const J=this._getRootDirectory(Z),X=this._getReaderOptions(Z);return this.api(J,Z,X).map(X.transform)}api(Z,J,X){if(J.dynamic)return this._reader.dynamic(Z,X);return this._reader.static(J.patterns,X)}}HY.default=GY});var FY=O((LY)=>{Object.defineProperty(LY,"__esModule",{value:!0});LY.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var K6=import.meta.require("fs"),PN=import.meta.require("os"),wN=Math.max(PN.cpus().length,1);LY.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:K6.lstat,lstatSync:K6.lstatSync,stat:K6.stat,statSync:K6.statSync,readdir:K6.readdir,readdirSync:K6.readdirSync};class MY{constructor(Z={}){if(this._options=Z,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,wN),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories)this.onlyFiles=!1;if(this.stats)this.objectMode=!0;this.ignore=[].concat(this.ignore)}_getValue(Z,J){return Z===void 0?J:Z}_getFileSystemMethods(Z={}){return Object.assign(Object.assign({},LY.DEFAULT_FILE_SYSTEM_ADAPTER),Z)}}LY.default=MY});var TY=O((gL,DY)=>{async function GZ(Z,J){X8(Z);const X=HZ(Z,RN.default,J),Q=await Promise.all(X);return r0.array.flatten(Q)}var HZ=function(Z,J,X){const Q=[].concat(Z),Y=new NZ.default(X),U=jY.generate(Q,Y),z=new J(Y);return U.map(z.read,z)},X8=function(Z){if(![].concat(Z).every((Q)=>r0.string.isString(Q)&&!r0.string.isEmpty(Q)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")},jY=tX(),RN=$Y(),CN=WY(),AN=IY(),NZ=FY(),r0=V8();(function(Z){Z.glob=Z,Z.globSync=J,Z.globStream=X,Z.async=Z;function J(B,W){X8(B);const N=HZ(B,AN.default,W);return r0.array.flatten(N)}Z.sync=J;function X(B,W){X8(B);const N=HZ(B,CN.default,W);return r0.stream.merge(N)}Z.stream=X;function Q(B,W){X8(B);const N=[].concat(B),q=new NZ.default(W);return jY.generate(N,q)}Z.generateTasks=Q;function Y(B,W){X8(B);const N=new NZ.default(W);return r0.pattern.isDynamicPattern(B,N)}Z.isDynamicPattern=Y;function U(B){return X8(B),r0.path.escape(B)}Z.escapePath=U;function z(B){return X8(B),r0.path.convertPathToPattern(B)}Z.convertPathToPattern=z;let $;(function(B){function W(q){return X8(q),r0.path.escapePosixPath(q)}B.escapePath=W;function N(q){return X8(q),r0.path.convertPosixPathToPattern(q)}B.convertPathToPattern=N})($=Z.posix||(Z.posix={}));let V;(function(B){function W(q){return X8(q),r0.path.escapeWindowsPath(q)}B.escapePath=W;function N(q){return X8(q),r0.path.convertWindowsPathToPattern(q)}B.convertPathToPattern=N})(V=Z.win32||(Z.win32={}))})(GZ||(GZ={}));DY.exports=GZ});var EY=O((vN)=>{var SN=function(){var Z;if(_N){var J=new Error;Z=X}else Z=Q;return Z;function X(Y){if(Y)J.message=Y.message,Y=J,Q(Y)}function Q(Y){if(Y){if(process.throwDeprecation)throw Y;else if(!process.noDeprecation){var U="fs: missing callback "+(Y.stack||Y.message);if(process.traceDeprecation)console.trace(U);else console.error(U)}}}},xN=function(Z){return typeof Z==="function"?Z:SN()},r8=import.meta.require("path"),E8=process.platform==="win32",T8=import.meta.require("fs"),_N=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG),dL=r8.normalize;if(E8)B8=/(.*?)(?:[\/\\]+|$)/g;else B8=/(.*?)(?:[\/]+|$)/g;var B8;if(E8)h6=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;else h6=/^[\/]*/;var h6;vN.realpathSync=function Z(J,X){if(J=r8.resolve(J),X&&Object.prototype.hasOwnProperty.call(X,J))return X[J];var Q=J,Y={},U={},z,$,V,B;W();function W(){var E=h6.exec(J);if(z=E[0].length,$=E[0],V=E[0],B="",E8&&!U[V])T8.lstatSync(V),U[V]=!0}while(z=J.length){if(X)X[Y]=J;return Q(null,J)}B8.lastIndex=$;var E=B8.exec(J);if(W=V,V+=E[0],B=W+E[1],$=B8.lastIndex,z[B]||X&&X[B]===B)return process.nextTick(q);if(X&&Object.prototype.hasOwnProperty.call(X,B))return G(X[B]);return T8.lstat(B,I)}function I(E,P){if(E)return Q(E);if(!P.isSymbolicLink()){if(z[B]=!0,X)X[B]=B;return process.nextTick(q)}if(!E8){var S=P.dev.toString(32)+":"+P.ino.toString(32);if(U.hasOwnProperty(S))return H(null,U[S],B)}T8.stat(B,function(k){if(k)return Q(k);T8.readlink(B,function(b,l){if(!E8)U[S]=l;H(b,l)})})}function H(E,P,S){if(E)return Q(E);var k=r8.resolve(W,P);if(X)X[S]=k;G(k)}function G(E){J=r8.resolve(E,J.slice($)),N()}}});var FZ=O((lL,RY)=>{var OY=function(Z){return Z&&Z.syscall==="realpath"&&(Z.code==="ELOOP"||Z.code==="ENOMEM"||Z.code==="ENAMETOOLONG")},P8=function(Z,J,X){if(PY)return IZ(Z,J,X);if(typeof J==="function")X=J,J=null;IZ(Z,J,function(Q,Y){if(OY(Q))wY.realpath(Z,J,X);else X(Q,Y)})},LZ=function(Z,J){if(PY)return MZ(Z,J);try{return MZ(Z,J)}catch(X){if(OY(X))return wY.realpathSync(Z,J);else throw X}},yN=function(){N6.realpath=P8,N6.realpathSync=LZ},uN=function(){N6.realpath=IZ,N6.realpathSync=MZ};RY.exports=P8;P8.realpath=P8;P8.sync=LZ;P8.realpathSync=LZ;P8.monkeypatch=yN;P8.unmonkeypatch=uN;var N6=import.meta.require("fs"),IZ=N6.realpath,MZ=N6.realpathSync,kN=process.version,PY=/^v[0-5]\./.test(kN),wY=EY()});var AY=O((pL,CY)=>{CY.exports=function(Z,J){var X=[];for(var Q=0;Q{var SY=function(Z,J,X){if(Z instanceof RegExp)Z=_Y(Z,X);if(J instanceof RegExp)J=_Y(J,X);var Q=xY(Z,J,X);return Q&&{start:Q[0],end:Q[1],pre:X.slice(0,Q[0]),body:X.slice(Q[0]+Z.length,Q[1]),post:X.slice(Q[1]+J.length)}},_Y=function(Z,J){var X=J.match(Z);return X?X[0]:null},xY=function(Z,J,X){var Q,Y,U,z,$,V=X.indexOf(Z),B=X.indexOf(J,V+1),W=V;if(V>=0&&B>0){if(Z===J)return[V,B];Q=[],U=X.length;while(W>=0&&!$){if(W==V)Q.push(W),V=X.indexOf(Z,W+1);else if(Q.length==1)$=[Q.pop(),B];else{if(Y=Q.pop(),Y=0?V:B}if(Q.length)$=[U,z]}return $};vY.exports=SY;SY.range=xY});var dY=O((iL,gY)=>{var jZ=function(Z){return parseInt(Z,10)==Z?parseInt(Z,10):Z.charCodeAt(0)},gN=function(Z){return Z.split("\\\\").join(kY).split("\\{").join(yY).split("\\}").join(DZ).split("\\,").join(uY).split("\\.").join(fY)},dN=function(Z){return Z.split(kY).join("\\").split(yY).join("{").split(DZ).join("}").split(uY).join(",").split(fY).join(".")},mY=function(Z){if(!Z)return[""];var J=[],X=bY("{","}",Z);if(!X)return Z.split(",");var{pre:Q,body:Y,post:U}=X,z=Q.split(",");z[z.length-1]+="{"+Y+"}";var $=mY(U);if(U.length)z[z.length-1]+=$.shift(),z.push.apply(z,$);return J.push.apply(J,z),J},cN=function(Z){if(!Z)return[];if(Z.substr(0,2)==="{}")Z="\\{\\}"+Z.substr(2);return G6(gN(Z),!0).map(dN)},lN=function(Z){return"{"+Z+"}"},pN=function(Z){return/^-?0\d/.test(Z)},nN=function(Z,J){return Z<=J},iN=function(Z,J){return Z>=J},G6=function(Z,J){var X=[],Q=bY("{","}",Z);if(!Q||/\$$/.test(Q.pre))return[Z];var Y=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(Q.body),U=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(Q.body),z=Y||U,$=Q.body.indexOf(",")>=0;if(!z&&!$){if(Q.post.match(/,.*\}/))return Z=Q.pre+"{"+Q.body+DZ+Q.post,G6(Z);return[Z]}var V;if(z)V=Q.body.split(/\.\./);else if(V=mY(Q.body),V.length===1){if(V=G6(V[0],!1).map(lN),V.length===1){var W=Q.post.length?G6(Q.post,!1):[""];return W.map(function(L){return Q.pre+V[0]+L})}}var B=Q.pre,W=Q.post.length?G6(Q.post,!1):[""],N;if(z){var q=jZ(V[0]),I=jZ(V[1]),H=Math.max(V[0].length,V[1].length),G=V.length==3?Math.abs(jZ(V[2])):1,E=nN,P=I0){var J0=new Array(l+1).join("0");if(k<0)b="-"+J0+b.slice(1);else b=J0+b}}N.push(b)}}else N=mN(V,function(p){return G6(p,!1)});for(var d=0;d{var sN=function(Z){return Z.split("").reduce(function(J,X){return J[X]=!0,J},{})},tN=function(Z,J){return J=J||{},function(X,Q,Y){return g0(X,Z,J)}},w8=function(Z,J){J=J||{};var X={};return Object.keys(Z).forEach(function(Q){X[Q]=Z[Q]}),Object.keys(J).forEach(function(Q){X[Q]=J[Q]}),X},g0=function(Z,J,X){if(S5(J),!X)X={};if(!X.nocomment&&J.charAt(0)==="#")return!1;return new P0(J,X).match(Z)},P0=function(Z,J){if(!(this instanceof P0))return new P0(Z,J);if(S5(Z),!J)J={};if(Z=Z.trim(),!J.allowWindowsEscape&&b6.sep!=="/")Z=Z.split(b6.sep).join("/");this.options=J,this.set=[],this.pattern=Z,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!J.partial,this.make()},eN=function(){var Z=this.pattern,J=this.options;if(!J.nocomment&&Z.charAt(0)==="#"){this.comment=!0;return}if(!Z){this.empty=!0;return}this.parseNegate();var X=this.globSet=this.braceExpand();if(J.debug)this.debug=function Q(){console.error.apply(console,arguments)};this.debug(this.pattern,X),X=this.globParts=X.map(function(Q){return Q.split(pY)}),this.debug(this.pattern,X),X=X.map(function(Q,Y,U){return Q.map(this.parse,this)},this),this.debug(this.pattern,X),X=X.filter(function(Q){return Q.indexOf(!1)===-1}),this.debug(this.pattern,X),this.set=X},ZG=function(){var Z=this.pattern,J=!1,X=this.options,Q=0;if(X.nonegate)return;for(var Y=0,U=Z.length;Y-1;g--){var R=$[g],p=Q.slice(0,R.reStart),L=Q.slice(R.reStart,R.reEnd-8),C=Q.slice(R.reEnd-8,R.reEnd),_=Q.slice(R.reEnd);C+=_;var y=p.split("(").length-1,F=_;for(G=0;GJG)throw new TypeError("pattern is too long")};P0.prototype.parse=XG;var _5={};g0.makeRe=function(Z,J){return new P0(Z,J||{}).makeRe()};P0.prototype.makeRe=QG;g0.match=function(Z,J,X){X=X||{};var Q=new P0(J,X);if(Z=Z.filter(function(Y){return Q.match(Y)}),Q.options.nonull&&!Z.length)Z.push(J);return Z};P0.prototype.match=function Z(J,X){if(typeof X==="undefined")X=this.partial;if(this.debug("match",J,this.pattern),this.comment)return!1;if(this.empty)return J==="";if(J==="/"&&X)return!0;var Q=this.options;if(b6.sep!=="/")J=J.split(b6.sep).join("/");J=J.split(pY),this.debug(this.pattern,"split",J);var Y=this.set;this.debug(this.pattern,"set",Y);var U,z;for(z=J.length-1;z>=0;z--)if(U=J[z],U)break;for(z=0;z>> no match, partial?",Z,W,J,N),W===z)return!0}return!1}var I;if(typeof V==="string")I=B===V,this.debug("string match",V,B,I);else I=B.match(V),this.debug("pattern match",V,B,I);if(!I)return!1}if(Y===z&&U===$)return!0;else if(Y===z)return X;else if(U===$)return Y===z-1&&Z[Y]==="";throw new Error("wtf?")}});var oY=O((aL,wZ)=>{if(typeof Object.create==="function")wZ.exports=function Z(J,X){if(X)J.super_=X,J.prototype=Object.create(X.prototype,{constructor:{value:J,enumerable:!1,writable:!0,configurable:!0}})};else wZ.exports=function Z(J,X){if(X){J.super_=X;var Q=function(){};Q.prototype=X.prototype,J.prototype=new Q,J.prototype.constructor=J}}});var aY=O((rL,RZ)=>{try{if(OZ=import.meta.require("util"),typeof OZ.inherits!=="function")throw"";RZ.exports=OZ.inherits}catch(Z){RZ.exports=oY()}var OZ});var h5=O((sL,v5)=>{var rY=function(Z){return Z.charAt(0)==="/"},sY=function(Z){var J=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,X=J.exec(Z),Q=X[1]||"",Y=Boolean(Q&&Q.charAt(1)!==":");return Boolean(X[2]||Y)};v5.exports=process.platform==="win32"?sY:rY;v5.exports.posix=rY;v5.exports.win32=sY});var AZ=O((HG)=>{var tY=function(Z,J){return Object.prototype.hasOwnProperty.call(Z,J)},VG=function(Z,J){return Z.localeCompare(J,"en")},BG=function(Z,J){if(Z.ignore=J.ignore||[],!Array.isArray(Z.ignore))Z.ignore=[Z.ignore];if(Z.ignore.length)Z.ignore=Z.ignore.map(WG)},WG=function(Z){var J=null;if(Z.slice(-3)==="/**"){var X=Z.replace(/(\/\*\*)+$/,"");J=new CZ(X,{dot:!0})}return{matcher:new CZ(Z,{dot:!0}),gmatcher:J}},qG=function(Z,J,X){if(!X)X={};if(X.matchBase&&J.indexOf("/")===-1){if(X.noglobstar)throw new Error("base matching requires globstar");J="**/"+J}if(Z.silent=!!X.silent,Z.pattern=J,Z.strict=X.strict!==!1,Z.realpath=!!X.realpath,Z.realpathCache=X.realpathCache||Object.create(null),Z.follow=!!X.follow,Z.dot=!!X.dot,Z.mark=!!X.mark,Z.nodir=!!X.nodir,Z.nodir)Z.mark=!0;Z.sync=!!X.sync,Z.nounique=!!X.nounique,Z.nonull=!!X.nonull,Z.nosort=!!X.nosort,Z.nocase=!!X.nocase,Z.stat=!!X.stat,Z.noprocess=!!X.noprocess,Z.absolute=!!X.absolute,Z.fs=X.fs||zG,Z.maxLength=X.maxLength||Infinity,Z.cache=X.cache||Object.create(null),Z.statCache=X.statCache||Object.create(null),Z.symlinks=X.symlinks||Object.create(null),BG(Z,X),Z.changedCwd=!1;var Q=process.cwd();if(!tY(X,"cwd"))Z.cwd=Q;else Z.cwd=H6.resolve(X.cwd),Z.changedCwd=Z.cwd!==Q;if(Z.root=X.root||H6.resolve(Z.cwd,"/"),Z.root=H6.resolve(Z.root),process.platform==="win32")Z.root=Z.root.replace(/\\/g,"/");if(Z.cwdAbs=eY(Z.cwd)?Z.cwd:k6(Z,Z.cwd),process.platform==="win32")Z.cwdAbs=Z.cwdAbs.replace(/\\/g,"/");Z.nomount=!!X.nomount,X.nonegate=!0,X.nocomment=!0,X.allowWindowsEscape=!1,Z.minimatch=new CZ(J,X),Z.options=Z.minimatch.options},KG=function(Z){var J=Z.nounique,X=J?[]:Object.create(null);for(var Q=0,Y=Z.matches.length;Q{var QU=function(Z,J){if(typeof J==="function"||arguments.length===3)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new L0(Z,J).found},L0=function(Z,J){if(!Z)throw new Error("must provide pattern");if(typeof J==="function"||arguments.length===3)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof L0))return new L0(Z,J);if(PG(this,Z,J),this.noprocess)return this;var X=this.minimatch.set.length;this.matches=new Array(X);for(var Q=0;Qthis.maxLength)return!1;if(!this.stat&&SZ(this.cache,J)){var z=this.cache[J];if(Array.isArray(z))z="DIR";if(!X||z==="DIR")return z;if(X&&z==="FILE")return!1}var Q,Y=this.statCache[J];if(!Y){var U;try{U=this.fs.lstatSync(J)}catch($){if($&&($.code==="ENOENT"||$.code==="ENOTDIR"))return this.statCache[J]=!1,!1}if(U&&U.isSymbolicLink())try{Y=this.fs.statSync(J)}catch($){Y=U}else Y=U}this.statCache[J]=Y;var z=!0;if(Y)z=Y.isDirectory()?"DIR":"FILE";if(this.cache[J]=this.cache[J]||z,X&&z==="FILE")return!1;return z};L0.prototype._mark=function(Z){return s8.mark(this,Z)};L0.prototype._makeAbs=function(Z){return s8.makeAbs(this,Z)}});var vZ=O((QF,$U)=>{var zU=function(Z,J){if(Z&&J)return zU(Z)(J);if(typeof Z!=="function")throw new TypeError("need wrapper function");return Object.keys(Z).forEach(function(Q){X[Q]=Z[Q]}),X;function X(){var Q=new Array(arguments.length);for(var Y=0;Y{var k5=function(Z){var J=function(){if(J.called)return J.value;return J.called=!0,J.value=Z.apply(this,arguments)};return J.called=!1,J},BU=function(Z){var J=function(){if(J.called)throw new Error(J.onceError);return J.called=!0,J.value=Z.apply(this,arguments)},X=Z.name||"Function wrapped with `once`";return J.onceError=X+" shouldn't be called more than once",J.called=!1,J},VU=vZ();hZ.exports=VU(k5);hZ.exports.strict=VU(BU);k5.proto=k5(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return k5(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return BU(this)},configurable:!0})})});var qU=O((UF,WU)=>{var AG=function(Z,J){if(y6[Z])return y6[Z].push(J),null;else return y6[Z]=[J],_G(Z)},_G=function(Z){return CG(function J(){var X=y6[Z],Q=X.length,Y=SG(arguments);try{for(var U=0;UQ)X.splice(0,Q),process.nextTick(function(){J.apply(null,Y)});else delete y6[Z]}})},SG=function(Z){var J=Z.length,X=[];for(var Q=0;Q{var t8=function(Z,J,X){if(typeof J==="function")X=J,J={};if(!J)J={};if(J.sync){if(X)throw new TypeError("callback provided to sync glob");return fZ(Z,J)}return new $0(Z,J,X)},mG=function(Z,J){if(J===null||typeof J!=="object")return Z;var X=Object.keys(J),Q=X.length;while(Q--)Z[X[Q]]=J[X[Q]];return Z},$0=function(Z,J,X){if(typeof J==="function")X=J,J=null;if(J&&J.sync){if(X)throw new TypeError("callback provided to sync glob");return new fG(Z,J)}if(!(this instanceof $0))return new $0(Z,J,X);bG(this,Z,J),this._didRealPath=!1;var Q=this.minimatch.set.length;if(this.matches=new Array(Q),typeof X==="function")X=uG(X),this.on("error",X),this.on("end",function(V){X(null,V)});var Y=this;if(this._processing=0,this._emitQueue=[],this._processQueue=[],this.paused=!1,this.noprocess)return this;if(Q===0)return $();var U=!0;for(var z=0;z1)return!0;for(var U=0;Uthis.maxLength)return J();if(!this.stat&&uZ(this.cache,X)){var Y=this.cache[X];if(Array.isArray(Y))Y="DIR";if(!Q||Y==="DIR")return J(null,Y);if(Q&&Y==="FILE")return J()}var U,z=this.statCache[X];if(z!==void 0)if(z===!1)return J(null,z);else{var $=z.isDirectory()?"DIR":"FILE";if(Q&&$==="FILE")return J();else return J(null,$,z)}var V=this,B=mZ("stat\0"+X,W);if(B)V.fs.lstat(X,B);function W(N,q){if(q&&q.isSymbolicLink())return V.fs.stat(X,function(I,H){if(I)V._stat2(Z,X,null,q,J);else V._stat2(Z,X,I,H,J)});else V._stat2(Z,X,N,q,J)}};$0.prototype._stat2=function(Z,J,X,Q,Y){if(X&&(X.code==="ENOENT"||X.code==="ENOTDIR"))return this.statCache[J]=!1,Y();var U=Z.slice(-1)==="/";if(this.statCache[J]=Q,J.slice(-1)==="/"&&Q&&!Q.isDirectory())return Y(null,!1,Q);var z=!0;if(Q)z=Q.isDirectory()?"DIR":"FILE";if(this.cache[J]=this.cache[J]||z,U&&z==="FILE")return Y();return Y(null,z,Q)}});var IU=O((BF,HU)=>{var GU=xZ(),dG=HU.exports=function(Z,J,X){var Q,Y=[];if(!Array.isArray(Z))Z=[Z];if(Q=Z.length,typeof J==="function")X=J,J={};if(!Q)return process.nextTick(function(){X(null,[])});Z.forEach(function(U){GU(U,J,function(z,$){if(z)return X(z);if(Y=Y.concat($),Q-=1,!Q)return X(null,Y)})})};dG.sync=function(Z,J){J=J||{};var X=[],Q,Y;if(!Array.isArray(Z))Z=[Z];for(Q=0,Y=Z.length;Q=J)return Z;return" ".repeat(J-X>>1)+Z};function aZ(Z,J){return b0=J,new oZ({width:(Z===null||Z===void 0?void 0:Z.width)||SU(),wrap:Z===null||Z===void 0?void 0:Z.wrap})}var AU={right:xU,center:vU};class oZ{constructor(Z){var J;this.width=Z.width,this.wrap=(J=Z.wrap)!==null&&J!==void 0?J:!0,this.rows=[]}span(...Z){const J=this.div(...Z);J.span=!0}resetOutput(){this.rows=[]}div(...Z){if(Z.length===0)this.div("");if(this.wrap&&this.shouldApplyLayoutDSL(...Z)&&typeof Z[0]==="string")return this.applyLayoutDSL(Z[0]);const J=Z.map((X)=>{if(typeof X==="string")return this.colFromString(X);return X});return this.rows.push(J),J}shouldApplyLayoutDSL(...Z){return Z.length===1&&typeof Z[0]==="string"&&/[\t\n]/.test(Z[0])}applyLayoutDSL(Z){const J=Z.split("\n").map((Q)=>Q.split("\t"));let X=0;return J.forEach((Q)=>{if(Q.length>1&&b0.stringWidth(Q[0])>X)X=Math.min(Math.floor(this.width*0.5),b0.stringWidth(Q[0]))}),J.forEach((Q)=>{this.div(...Q.map((Y,U)=>{return{text:Y.trim(),padding:this.measurePadding(Y),width:U===0&&Q.length>1?X:void 0}}))}),this.rows[this.rows.length-1]}colFromString(Z){return{text:Z,padding:this.measurePadding(Z)}}measurePadding(Z){const J=b0.stripAnsi(Z);return[0,J.match(/\s*$/)[0].length,0,J.match(/^\s*/)[0].length]}toString(){const Z=[];return this.rows.forEach((J)=>{this.rowToString(J,Z)}),Z.filter((J)=>!J.hidden).map((J)=>J.text).join("\n")}rowToString(Z,J){return this.rasterize(Z).forEach((X,Q)=>{let Y="";X.forEach((U,z)=>{const{width:$}=Z[z],V=this.negatePadding(Z[z]);let B=U;if(V>b0.stringWidth(U))B+=" ".repeat(V-b0.stringWidth(U));if(Z[z].align&&Z[z].align!=="left"&&this.wrap){const N=AU[Z[z].align];if(B=N(B,V),b0.stringWidth(B)0)Y=this.renderInline(Y,J[J.length-1])}),J.push({text:Y.replace(/ +$/,""),span:Z.span})}),J}renderInline(Z,J){const X=Z.match(/^ */),Q=X?X[0].length:0,Y=J.text,U=b0.stringWidth(Y.trimRight());if(!J.span)return Z;if(!this.wrap)return J.hidden=!0,Y+Z;if(Q{if(Y.width=X[U],this.wrap)Q=b0.wrap(Y.text,this.negatePadding(Y),{hard:!0}).split("\n");else Q=Y.text.split("\n");if(Y.border)Q.unshift("."+"-".repeat(this.negatePadding(Y)+2)+"."),Q.push("'"+"-".repeat(this.negatePadding(Y)+2)+"'");if(Y.padding)Q.unshift(...new Array(Y.padding[0]||0).fill("")),Q.push(...new Array(Y.padding[2]||0).fill(""));Q.forEach((z,$)=>{if(!J[$])J.push([]);const V=J[$];for(let B=0;B{return U.width||b0.stringWidth(U.text)});let J=Z.length,X=this.width;const Q=Z.map((U)=>{if(U.width)return J--,X-=U.width,U.width;return}),Y=J?Math.floor(X/J):0;return Q.map((U,z)=>{if(U===void 0)return Math.max(Y,_U(Z[z]));return U})}}var b0;function u5(Z){return Z.replace(rZ,"")}function sZ(Z,J){const[X,Q]=Z.match(rZ)||["",""];Z=u5(Z);let Y="";for(let U=0;U{return[...J].length},stripAnsi:u5,wrap:sZ})}import{dirname as tZ,resolve as eZ} from"path";import{readdirSync as hU,statSync as bU} from"fs";function m5(Z,J){let X=eZ(".",Z),Q;if(!bU(X).isDirectory())X=tZ(X);while(!0){if(Q=J(X,hU(X)),Q)return eZ(X,Q);if(X=tZ(Q=X),Q===X)break}}import{inspect as Zz} from"util";import{readFileSync as Jz} from"fs";import{fileURLToPath as Xz} from"url";import{format as uU} from"util";import{normalize as fU,resolve as mU} from"path";function R8(Z){if(!(Z!==Z.toLowerCase()&&Z!==Z.toUpperCase()))Z=Z.toLowerCase();if(Z.indexOf("-")===-1&&Z.indexOf("_")===-1)return Z;else{let X="",Q=!1;const Y=Z.match(/^-+/);for(let U=Y?Y[0].length:0;U0)Q+=`${J}${X.charAt(Y)}`;else Q+=z}return Q}function g6(Z){if(Z===null||Z===void 0)return!1;if(typeof Z==="number")return!0;if(/^0x[0-9a-f]+$/i.test(Z))return!0;if(/^0[^.]/.test(Z))return!1;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(Z)}function ZJ(Z){if(Array.isArray(Z))return Z.map((z)=>typeof z!=="string"?z+"":z);Z=Z.trim();let J=0,X=null,Q=null,Y=null;const U=[];for(let z=0;z{if(typeof j==="number")G.nargs[M]=j,G.keys.push(M)});if(typeof X.coerce==="object")Object.entries(X.coerce).forEach(([M,j])=>{if(typeof j==="function")G.coercions[M]=j,G.keys.push(M)});if(typeof X.config!=="undefined"){if(Array.isArray(X.config)||typeof X.config==="string")[].concat(X.config).filter(Boolean).forEach(function(M){G.configs[M]=!0});else if(typeof X.config==="object")Object.entries(X.config).forEach(([M,j])=>{if(typeof j==="boolean"||typeof j==="function")G.configs[M]=j})}T0(X.key,U,X.default,G.arrays),Object.keys($).forEach(function(M){(G.aliases[M]||[]).forEach(function(j){$[j]=$[M]})});let S=null;z0();let k=[];const b=Object.assign(Object.create(null),{_:[]}),l={};for(let M=0;M=3)if(t(m[1],G.arrays))M=g(M,m[1],Q,m[2]);else if(t(m[1],G.nargs)!==!1)M=d(M,m[1],Q,m[2]);else R(m[1],m[2],!0)}else if(j.match(P)&&z["boolean-negation"]){if(m=j.match(P),m!==null&&Array.isArray(m)&&m.length>=2)T=m[1],R(T,t(T,G.arrays)?[!1]:!1)}else if(j.match(/^--.+/)||!z["short-option-groups"]&&j.match(/^-[^-]+/)){if(m=j.match(/^--?(.+)/),m!==null&&Array.isArray(m)&&m.length>=2)if(T=m[1],t(T,G.arrays))M=g(M,T,Q);else if(t(T,G.nargs)!==!1)M=d(M,T,Q);else if(s=Q[M+1],s!==void 0&&(!s.match(/^-/)||s.match(E))&&!t(T,G.bools)&&!t(T,G.counts))R(T,s),M++;else if(/^(true|false)$/.test(s))R(T,s),M++;else R(T,A(T))}else if(j.match(/^-.\..+=/)){if(m=j.match(/^-([^=]+)=([\s\S]*)$/),m!==null&&Array.isArray(m)&&m.length>=3)R(m[1],m[2])}else if(j.match(/^-.\..+/)&&!j.match(E)){if(s=Q[M+1],m=j.match(/^-(.\..+)/),m!==null&&Array.isArray(m)&&m.length>=2)if(T=m[1],s!==void 0&&!s.match(/^-/)&&!t(T,G.bools)&&!t(T,G.counts))R(T,s),M++;else R(T,A(T))}else if(j.match(/^-[^-]+/)&&!j.match(E)){n=j.slice(1,-1).split(""),w=!1;for(let w0=0;w0M!=="--"&&M.includes("-")).forEach((M)=>{delete b[M]});if(z["strip-aliased"])[].concat(...Object.keys(U).map((M)=>U[M])).forEach((M)=>{if(z["camel-case-expansion"]&&M.includes("-"))delete b[M.split(".").map((j)=>R8(j)).join(".")];delete b[M]});function J0(M){const j=C("_",M);if(typeof j==="string"||typeof j==="number")b._.push(j)}function d(M,j,v,w){let T,n=t(j,G.nargs);if(n=typeof n!=="number"||isNaN(n)?1:n,n===0){if(!o(w))S=Error(H("Argument unexpected for: %s",j));return R(j,A(j)),M}let m=o(w)?0:1;if(z["nargs-eats-options"]){if(v.length-(M+1)+m0)R(j,w),s--;for(T=M+1;T0||m&&typeof m==="number"&&T.length>=m)break;if(n=v[s],/^-/.test(n)&&!E.test(n)&&!U0(n))break;M=s,T.push(L(j,n,Y))}}if(typeof m==="number"&&(m&&T.length1&&z["dot-notation"])(G.aliases[T[0]]||[]).forEach(function(n){let m=n.split(".");const s=[].concat(T);if(s.shift(),m=m.concat(s),!(G.aliases[M]||[]).includes(m.join(".")))V0(b,m,w)});if(t(M,G.normalize)&&!t(M,G.arrays))[M].concat(G.aliases[M]||[]).forEach(function(m){Object.defineProperty(l,m,{enumerable:!0,get(){return j},set(s){j=typeof s==="string"?z8.normalize(s):s}})})}function p(M,j){if(!(G.aliases[M]&&G.aliases[M].length))G.aliases[M]=[j],q[j]=!0;if(!(G.aliases[j]&&G.aliases[j].length))p(j,M)}function L(M,j,v){if(v)j=yU(j);if(t(M,G.bools)||t(M,G.counts)){if(typeof j==="string")j=j==="true"}let w=Array.isArray(j)?j.map(function(T){return C(M,T)}):C(M,j);if(t(M,G.counts)&&(o(w)||typeof w==="boolean"))w=g5();if(t(M,G.normalize)&&t(M,G.arrays))if(Array.isArray(j))w=j.map((T)=>{return z8.normalize(T)});else w=z8.normalize(j);return w}function C(M,j){if(!z["parse-positional-numbers"]&&M==="_")return j;if(!t(M,G.strings)&&!t(M,G.bools)&&!Array.isArray(j)){if(g6(j)&&z["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${j}`)))||!o(j)&&t(M,G.numbers))j=Number(j)}return j}function _(M){const j=Object.create(null);e(j,G.aliases,$),Object.keys(G.configs).forEach(function(v){const w=M[v]||j[v];if(w)try{let T=null;const n=z8.resolve(z8.cwd(),w),m=G.configs[v];if(typeof m==="function"){try{T=m(n)}catch(s){T=s}if(T instanceof Error){S=T;return}}else T=z8.require(n);y(T)}catch(T){if(T.name==="PermissionDenied")S=T;else if(M[v])S=Error(H("Invalid JSON config file: %s",w))}})}function y(M,j){Object.keys(M).forEach(function(v){const w=M[v],T=j?j+"."+v:v;if(typeof w==="object"&&w!==null&&!Array.isArray(w)&&z["dot-notation"])y(w,T);else if(!Y0(b,T.split("."))||t(T,G.arrays)&&z["combine-arrays"])R(T,w)})}function F(){if(typeof V!=="undefined")V.forEach(function(M){y(M)})}function D(M,j){if(typeof B==="undefined")return;const v=typeof B==="string"?B:"",w=z8.env();Object.keys(w).forEach(function(T){if(v===""||T.lastIndexOf(v,0)===0){const n=T.split("__").map(function(m,s){if(s===0)m=m.substring(v.length);return R8(m)});if((j&&G.configs[n.join(".")]||!j)&&!Y0(M,n))R(n.join("."),w[T])}})}function u(M){let j;const v=new Set;Object.keys(M).forEach(function(w){if(!v.has(w)){if(j=t(w,G.coercions),typeof j==="function")try{const T=C(w,j(M[w]));[].concat(G.aliases[w]||[],w).forEach((n)=>{v.add(n),M[n]=T})}catch(T){S=T}}})}function f(M){return G.keys.forEach((j)=>{if(~j.indexOf("."))return;if(typeof M[j]==="undefined")M[j]=void 0}),M}function e(M,j,v,w=!1){Object.keys(v).forEach(function(T){if(!Y0(M,T.split("."))){if(V0(M,T.split("."),v[T]),w)I[T]=!0;(j[T]||[]).forEach(function(n){if(Y0(M,n.split(".")))return;V0(M,n.split("."),v[T])})}})}function Y0(M,j){let v=M;if(!z["dot-notation"])j=[j.join(".")];j.slice(0,-1).forEach(function(T){v=v[T]||{}});const w=j[j.length-1];if(typeof v!=="object")return!1;else return w in v}function V0(M,j,v){let w=M;if(!z["dot-notation"])j=[j.join(".")];j.slice(0,-1).forEach(function(F0){if(F0=JJ(F0),typeof w==="object"&&w[F0]===void 0)w[F0]={};if(typeof w[F0]!=="object"||Array.isArray(w[F0])){if(Array.isArray(w[F0]))w[F0].push({});else w[F0]=[w[F0],{}];w=w[F0][w[F0].length-1]}else w=w[F0]});const T=JJ(j[j.length-1]),n=t(j.join("."),G.arrays),m=Array.isArray(v);let s=z["duplicate-arguments-array"];if(!s&&t(T,G.nargs)){if(s=!0,!o(w[T])&&G.nargs[T]===1||Array.isArray(w[T])&&w[T].length===G.nargs[T])w[T]=void 0}if(v===g5())w[T]=g5(w[T]);else if(Array.isArray(w[T]))if(s&&n&&m)w[T]=z["flatten-duplicate-arrays"]?w[T].concat(v):(Array.isArray(w[T][0])?w[T]:[w[T]]).concat([v]);else if(!s&&Boolean(n)===Boolean(m))w[T]=v;else w[T]=w[T].concat([v]);else if(w[T]===void 0&&n)w[T]=m?v:[v];else if(s&&!(w[T]===void 0||t(T,G.counts)||t(T,G.bools)))w[T]=[w[T],v];else w[T]=v}function T0(...M){M.forEach(function(j){Object.keys(j||{}).forEach(function(v){if(G.aliases[v])return;G.aliases[v]=[].concat(U[v]||[]),G.aliases[v].concat(v).forEach(function(w){if(/-/.test(w)&&z["camel-case-expansion"]){const T=R8(w);if(T!==v&&G.aliases[v].indexOf(T)===-1)G.aliases[v].push(T),q[T]=!0}}),G.aliases[v].concat(v).forEach(function(w){if(w.length>1&&/[A-Z]/.test(w)&&z["camel-case-expansion"]){const T=m6(w,"-");if(T!==v&&G.aliases[v].indexOf(T)===-1)G.aliases[v].push(T),q[T]=!0}}),G.aliases[v].forEach(function(w){G.aliases[w]=[v].concat(G.aliases[v].filter(function(T){return w!==T}))})})})}function t(M,j){const v=[].concat(G.aliases[M]||[],M),w=Object.keys(j),T=v.find((n)=>w.includes(n));return T?j[T]:!1}function _0(M){const j=Object.keys(G);return[].concat(j.map((w)=>G[w])).some(function(w){return Array.isArray(w)?w.includes(M):w[M]})}function h0(M,...j){return[].concat(...j).some(function(w){const T=M.match(w);return T&&_0(T[1])})}function h(M){if(M.match(E)||!M.match(/^-[^-]+/))return!1;let j=!0,v;const w=M.slice(1).split("");for(let T=0;T{if(t(M,G.arrays))return S=Error(H("Invalid configuration: %s, opts.count excludes opts.array.",M)),!0;else if(t(M,G.nargs))return S=Error(H("Invalid configuration: %s, opts.count excludes opts.narg.",M)),!0;return!1})}return{aliases:Object.assign({},G.aliases),argv:Object.assign(l,b),configuration:z,defaulted:Object.assign({},I),error:S,newAliases:Object.assign({},q)}}}import{readFileSync as gU} from"fs";var c5,l5,p5,XJ=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12,QJ=(l5=(c5=process===null||process===void 0?void 0:process.versions)===null||c5===void 0?void 0:c5.node)!==null&&l5!==void 0?l5:(p5=process===null||process===void 0?void 0:process.version)===null||p5===void 0?void 0:p5.slice(1);if(QJ){if(Number(QJ.match(/^([^.]+)/)[1]){return dU},format:uU,normalize:fU,resolve:mU,require:(Z)=>{if(typeof require!=="undefined")returnimport.meta.require(Z);else if(Z.match(/\.json$/))return JSON.parse(gU(Z,"utf8"));else throw Error("only .json config files are supported in ESM")}}),I6=function Z(J,X){return YJ.parse(J.slice(),X).argv};I6.detailed=function(Z,J){return YJ.parse(Z.slice(),J)};I6.camelCase=R8;I6.decamelize=m6;I6.looksLikeNumber=g6;var UJ=I6;import{basename as Qz,dirname as Yz,extname as Uz,relative as zz,resolve as qJ} from"path";var cU=function(){if(lU())return 0;return 1},lU=function(){return pU()&&!process.defaultApp},pU=function(){return!!process.versions.electron};function zJ(){return process.argv[cU()]}class B0 extends Error{constructor(Z){super(Z||"yargs error");if(this.name="YError",Error.captureStackTrace)Error.captureStackTrace(this,B0)}}import{readFileSync as nU,statSync as iU,writeFile as oU} from"fs";import{format as aU} from"util";import{resolve as rU} from"path";var $J={fs:{readFileSync:nU,writeFile:oU},format:aU,resolve:rU,exists:(Z)=>{try{return iU(Z).isFile()}catch(J){return!1}}};function BJ(Z,J){t0=J;const X=new VJ(Z);return{__:X.__.bind(X),__n:X.__n.bind(X),setLocale:X.setLocale.bind(X),getLocale:X.getLocale.bind(X),updateLocale:X.updateLocale.bind(X),locale:X.locale}}var t0;class VJ{constructor(Z){Z=Z||{},this.directory=Z.directory||"./locales",this.updateFiles=typeof Z.updateFiles==="boolean"?Z.updateFiles:!0,this.locale=Z.locale||"en",this.fallbackToLanguage=typeof Z.fallbackToLanguage==="boolean"?Z.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...Z){if(typeof arguments[0]!=="string")return this._taggedLiteral(arguments[0],...arguments);const J=Z.shift();let X=function(){};if(typeof Z[Z.length-1]==="function")X=Z.pop();if(X=X||function(){},!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][J]&&this.updateFiles)this.cache[this.locale][J]=J,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:X});else X();return t0.format.apply(t0.format,[this.cache[this.locale][J]||J].concat(Z))}__n(){const Z=Array.prototype.slice.call(arguments),J=Z.shift(),X=Z.shift(),Q=Z.shift();let Y=function(){};if(typeof Z[Z.length-1]==="function")Y=Z.pop();if(!this.cache[this.locale])this._readLocaleFile();let U=Q===1?J:X;if(this.cache[this.locale][J])U=this.cache[this.locale][J][Q===1?"one":"other"];if(!this.cache[this.locale][J]&&this.updateFiles)this.cache[this.locale][J]={one:J,other:X},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:Y});else Y();const z=[U];if(~U.indexOf("%d"))z.push(Q);return t0.format.apply(t0.format,z.concat(Z))}setLocale(Z){this.locale=Z}getLocale(){return this.locale}updateLocale(Z){if(!this.cache[this.locale])this._readLocaleFile();for(let J in Z)if(Object.prototype.hasOwnProperty.call(Z,J))this.cache[this.locale][J]=Z[J]}_taggedLiteral(Z,...J){let X="";return Z.forEach(function(Q,Y){const U=J[Y+1];if(X+=Q,typeof U!=="undefined")X+="%s"}),this.__.apply(this,[X].concat([].slice.call(J,1)))}_enqueueWrite(Z){if(this.writeQueue.push(Z),this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){const Z=this,J=this.writeQueue[0],X=J.directory,Q=J.locale,Y=J.cb,U=this._resolveLocaleFile(X,Q),z=JSON.stringify(this.cache[Q],null,2);t0.fs.writeFile(U,z,"utf-8",function($){if(Z.writeQueue.shift(),Z.writeQueue.length>0)Z._processWriteQueue();Y($)})}_readLocaleFile(){let Z={};const J=this._resolveLocaleFile(this.directory,this.locale);try{if(t0.fs.readFileSync)Z=JSON.parse(t0.fs.readFileSync(J,"utf-8"))}catch(X){if(X instanceof SyntaxError)X.message="syntax error in "+J;if(X.code==="ENOENT")Z={};else throw X}this.cache[this.locale]=Z}_resolveLocaleFile(Z,J){let X=t0.resolve(Z,"./",J+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(X)&&~J.lastIndexOf("_")){const Q=t0.resolve(Z,"./",J.split("_")[0]+".json");if(this._fileExistsSync(Q))X=Q}return X}_fileExistsSync(Z){return t0.exists(Z)}}var sU=(Z)=>{return BJ(Z,$J)},WJ=sU;var $z="require is not supported by ESM",KJ="loading a directory of commands is not supported yet for ESM",M6;try{M6=Xz(import.meta.url)}catch(Z){M6=process.cwd()}var Vz=M6.substring(0,M6.lastIndexOf("node_modules")),NJ={assert:{notStrictEqual:tU,strictEqual:eU},cliui:f5,findUp:m5,getEnv:(Z)=>{return process.env[Z]},inspect:Zz,getCallerFile:()=>{throw new B0(KJ)},getProcessArgvBin:zJ,mainFilename:Vz||process.cwd(),Parser:UJ,path:{basename:Qz,dirname:Yz,extname:Uz,relative:zz,resolve:qJ},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(Z,J)=>process.emitWarning(Z,J),execPath:()=>process.execPath,exit:process.exit,nextTick:process.nextTick,stdColumns:typeof process.stdout.columns!=="undefined"?process.stdout.columns:null},readFileSync:Jz,require:()=>{throw new B0($z)},requireDirectory:()=>{throw new B0(KJ)},stringWidth:(Z)=>{return[...Z].length},y18n:WJ({directory:qJ(M6,"../../../locales"),updateFiles:!1})};function O0(Z,J,X,Q){X.assert.notStrictEqual(Z,J,Q)}function n5(Z,J){J.assert.strictEqual(typeof Z,"string")}function Z6(Z){return Object.keys(Z)}function W0(Z){return!!Z&&!!Z.then&&typeof Z.then==="function"}function q8(Z){const X=Z.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),Q=/\.*[\][<>]/g,Y=X.shift();if(!Y)throw new Error(`No command found in: ${Z}`);const U={cmd:Y.replace(Q,""),demanded:[],optional:[]};return X.forEach((z,$)=>{let V=!1;if(z=z.replace(/\s/g,""),/\.+[\]>]/.test(z)&&$===X.length-1)V=!0;if(/^\[/.test(z))U.optional.push({cmd:z.replace(Q,"").split("|"),variadic:V});else U.demanded.push({cmd:z.replace(Q,"").split("|"),variadic:V})}),U}function c(Z,J,X){function Q(){return typeof Z==="object"?[{demanded:[],optional:[]},Z,J]:[q8(`cmd ${Z}`),J,X]}try{let Y=0;const[U,z,$]=Q(),V=[].slice.call(z);while(V.length&&V[V.length-1]===void 0)V.pop();const B=$||V.length;if(BW)throw new B0(`Too many arguments provided. Expected max ${W} but received ${B}.`);U.demanded.forEach((N)=>{const q=V.shift(),I=GJ(q);if(N.cmd.filter((G)=>G===I||G==="*").length===0)HJ(I,N.cmd,Y);Y+=1}),U.optional.forEach((N)=>{if(V.length===0)return;const q=V.shift(),I=GJ(q);if(N.cmd.filter((G)=>G===I||G==="*").length===0)HJ(I,N.cmd,Y);Y+=1})}catch(Y){console.warn(Y.stack)}}var GJ=function(Z){if(Array.isArray(Z))return"array";else if(Z===null)return"null";return typeof Z},HJ=function(Z,J,X){throw new B0(`Invalid ${Bz[X]||"manyith"} argument. Expected ${J.join(" or ")} but received ${Z}.`)},Bz=["first","second","third","fourth","fifth","sixth"];function IJ(Z){if(!Z)return[];return Z.map((J)=>{return J.applyBeforeValidation=!1,J})}function C8(Z,J,X,Q){return X.reduce((Y,U)=>{if(U.applyBeforeValidation!==Q)return Y;if(U.mutates){if(U.applied)return Y;U.applied=!0}if(W0(Y))return Y.then((z)=>Promise.all([z,U(z,J)])).then(([z,$])=>Object.assign(z,$));else{const z=U(Y,J);return W0(z)?z.then(($)=>Object.assign(Y,$)):Object.assign(Y,z)}},Z)}class i5{constructor(Z){this.globalMiddleware=[],this.frozens=[],this.yargs=Z}addMiddleware(Z,J,X=!0,Q=!1){if(c(" [boolean] [boolean] [boolean]",[Z,J,X],arguments.length),Array.isArray(Z)){for(let Y=0;Y{const Y=[...X[J]||[],J];if(!Q.option)return!0;else return!Y.includes(Q.option)}),Z.option=J,this.addMiddleware(Z,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){const Z=this.frozens.pop();if(Z!==void 0)this.globalMiddleware=Z}reset(){this.globalMiddleware=this.globalMiddleware.filter((Z)=>Z.global)}}function A8(Z,J,X=(Q)=>{throw Q}){try{const Q=Wz(Z)?Z():Z;return W0(Q)?Q.then((Y)=>J(Y)):J(Q)}catch(Q){return X(Q)}}var Wz=function(Z){return typeof Z==="function"};function o5(Z){if(typeof require==="undefined")return null;for(let J=0,X=Object.keys(require.cache),Q;Jtypeof J==="string")};function d6(Z){return typeof Z==="function"}var Kz=function(Z){return typeof Z==="object"};function Nz(Z){return typeof Z==="object"&&!Array.isArray(Z)}var J6=/(^\*)|(^\$0)/;class LJ{constructor(Z,J,X,Q){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=Q,this.usage=Z,this.globalMiddleware=X,this.validation=J}addDirectory(Z,J,X,Q){if(Q=Q||{},typeof Q.recurse!=="boolean")Q.recurse=!1;if(!Array.isArray(Q.extensions))Q.extensions=["js"];const Y=typeof Q.visit==="function"?Q.visit:(U)=>U;Q.visit=(U,z,$)=>{const V=Y(U,z,$);if(V){if(this.requireCache.has(z))return V;else this.requireCache.add(z);this.addHandler(V)}return V},this.shim.requireDirectory({require:J,filename:X},Z,Q)}addHandler(Z,J,X,Q,Y,U){let z=[];const $=IJ(Y);if(Q=Q||(()=>{}),Array.isArray(Z))if(qz(Z))[Z,...z]=Z;else for(let V of Z)this.addHandler(V);else if(Nz(Z)){let V=Array.isArray(Z.command)||typeof Z.command==="string"?Z.command:this.moduleName(Z);if(Z.aliases)V=[].concat(V).concat(Z.aliases);this.addHandler(V,this.extractDesc(Z),Z.builder,Z.handler,Z.middlewares,Z.deprecated);return}else if(MJ(X)){this.addHandler([Z].concat(z),J,X.builder,X.handler,X.middlewares,X.deprecated);return}if(typeof Z==="string"){const V=q8(Z);z=z.map((N)=>q8(N).cmd);let B=!1;const W=[V.cmd].concat(z).filter((N)=>{if(J6.test(N))return B=!0,!1;return!0});if(W.length===0&&B)W.push("$0");if(B)V.cmd=W[0],z=W.slice(1),Z=Z.replace(J6,V.cmd);if(z.forEach((N)=>{this.aliasMap[N]=V.cmd}),J!==!1)this.usage.command(Z,J,B,z,U);if(this.handlers[V.cmd]={original:Z,description:J,handler:Q,builder:X||{},middlewares:$,deprecated:U,demanded:V.demanded,optional:V.optional},B)this.defaultCommand=this.handlers[V.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(Z,J,X,Q,Y,U){const z=this.handlers[Z]||this.handlers[this.aliasMap[Z]]||this.defaultCommand,$=J.getInternalMethods().getContext(),V=$.commands.slice(),B=!Z;if(Z)$.commands.push(Z),$.fullCommands.push(z.original);const W=this.applyBuilderUpdateUsageAndParse(B,z,J,X.aliases,V,Q,Y,U);return W0(W)?W.then((N)=>this.applyMiddlewareAndGetResult(B,z,N.innerArgv,$,Y,N.aliases,J)):this.applyMiddlewareAndGetResult(B,z,W.innerArgv,$,Y,W.aliases,J)}applyBuilderUpdateUsageAndParse(Z,J,X,Q,Y,U,z,$){const V=J.builder;let B=X;if(d6(V)){X.getInternalMethods().getUsageInstance().freeze();const W=V(X.getInternalMethods().reset(Q),$);if(W0(W))return W.then((N)=>{return B=jJ(N)?N:X,this.parseAndUpdateUsage(Z,J,B,Y,U,z)})}else if(Kz(V))X.getInternalMethods().getUsageInstance().freeze(),B=X.getInternalMethods().reset(Q),Object.keys(J.builder).forEach((W)=>{B.option(W,V[W])});return this.parseAndUpdateUsage(Z,J,B,Y,U,z)}parseAndUpdateUsage(Z,J,X,Q,Y,U){if(Z)X.getInternalMethods().getUsageInstance().unfreeze(!0);if(this.shouldUpdateUsage(X))X.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(Q,J),J.description);const z=X.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,Y,U);return W0(z)?z.then(($)=>({aliases:X.parsed.aliases,innerArgv:$})):{aliases:X.parsed.aliases,innerArgv:z}}shouldUpdateUsage(Z){return!Z.getInternalMethods().getUsageInstance().getUsageDisabled()&&Z.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(Z,J){const X=J6.test(J.original)?J.original.replace(J6,"").trim():J.original,Q=Z.filter((Y)=>{return!J6.test(Y)});return Q.push(X),`\$0 ${Q.join(" ")}`}handleValidationAndGetResult(Z,J,X,Q,Y,U,z,$){if(!U.getInternalMethods().getHasOutput()){const V=U.getInternalMethods().runValidation(Y,$,U.parsed.error,Z);X=A8(X,(B)=>{return V(B),B})}if(J.handler&&!U.getInternalMethods().getHasOutput()){U.getInternalMethods().setHasOutput();const V=!!U.getOptions().configuration["populate--"];if(U.getInternalMethods().postProcess(X,V,!1,!1),X=C8(X,U,z,!1),X=A8(X,(B)=>{const W=J.handler(B);return W0(W)?W.then(()=>B):B}),!Z)U.getInternalMethods().getUsageInstance().cacheHelpMessage();if(W0(X)&&!U.getInternalMethods().hasParseCallback())X.catch((B)=>{try{U.getInternalMethods().getUsageInstance().fail(null,B)}catch(W){}})}if(!Z)Q.commands.pop(),Q.fullCommands.pop();return X}applyMiddlewareAndGetResult(Z,J,X,Q,Y,U,z){let $={};if(Y)return X;if(!z.getInternalMethods().getHasOutput())$=this.populatePositionals(J,X,Q,z);const V=this.globalMiddleware.getMiddleware().slice(0).concat(J.middlewares),B=C8(X,z,V,!0);return W0(B)?B.then((W)=>this.handleValidationAndGetResult(Z,J,W,Q,U,z,V,$)):this.handleValidationAndGetResult(Z,J,B,Q,U,z,V,$)}populatePositionals(Z,J,X,Q){J._=J._.slice(X.commands.length);const Y=Z.demanded.slice(0),U=Z.optional.slice(0),z={};this.validation.positionalCount(Y.length,J._.length);while(Y.length){const $=Y.shift();this.populatePositional($,J,z)}while(U.length){const $=U.shift();this.populatePositional($,J,z)}return J._=X.commands.concat(J._.map(($)=>""+$)),this.postProcessPositionals(J,z,this.cmdToParseOptions(Z.original),Q),z}populatePositional(Z,J,X){const Q=Z.cmd[0];if(Z.variadic)X[Q]=J._.splice(0).map(String);else if(J._.length)X[Q]=[String(J._.shift())]}cmdToParseOptions(Z){const J={array:[],default:{},alias:{},demand:{}},X=q8(Z);return X.demanded.forEach((Q)=>{const[Y,...U]=Q.cmd;if(Q.variadic)J.array.push(Y),J.default[Y]=[];J.alias[Y]=U,J.demand[Y]=!0}),X.optional.forEach((Q)=>{const[Y,...U]=Q.cmd;if(Q.variadic)J.array.push(Y),J.default[Y]=[];J.alias[Y]=U}),J}postProcessPositionals(Z,J,X,Q){const Y=Object.assign({},Q.getOptions());Y.default=Object.assign(X.default,Y.default);for(let V of Object.keys(X.alias))Y.alias[V]=(Y.alias[V]||[]).concat(X.alias[V]);Y.array=Y.array.concat(X.array),Y.config={};const U=[];if(Object.keys(J).forEach((V)=>{J[V].map((B)=>{if(Y.configuration["unknown-options-as-args"])Y.key[V]=!0;U.push(`--${V}`),U.push(B)})}),!U.length)return;const z=Object.assign({},Y.configuration,{"populate--":!1}),$=this.shim.Parser.detailed(U,Object.assign({},Y,{configuration:z}));if($.error)Q.getInternalMethods().getUsageInstance().fail($.error.message,$.error);else{const V=Object.keys(J);Object.keys(J).forEach((B)=>{V.push(...$.aliases[B])}),Object.keys($.argv).forEach((B)=>{if(V.includes(B)){if(!J[B])J[B]=$.argv[B];if(!this.isInConfigs(Q,B)&&!this.isDefaulted(Q,B)&&Object.prototype.hasOwnProperty.call(Z,B)&&Object.prototype.hasOwnProperty.call($.argv,B)&&(Array.isArray(Z[B])||Array.isArray($.argv[B])))Z[B]=[].concat(Z[B],$.argv[B]);else Z[B]=$.argv[B]}})}}isDefaulted(Z,J){const{default:X}=Z.getOptions();return Object.prototype.hasOwnProperty.call(X,J)||Object.prototype.hasOwnProperty.call(X,this.shim.Parser.camelCase(J))}isInConfigs(Z,J){const{configObjects:X}=Z.getOptions();return X.some((Q)=>Object.prototype.hasOwnProperty.call(Q,J))||X.some((Q)=>Object.prototype.hasOwnProperty.call(Q,this.shim.Parser.camelCase(J)))}runDefaultBuilderOn(Z){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(Z)){const X=J6.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");Z.getInternalMethods().getUsageInstance().usage(X,this.defaultCommand.description)}const J=this.defaultCommand.builder;if(d6(J))return J(Z,!0);else if(!MJ(J))Object.keys(J).forEach((X)=>{Z.option(X,J[X])});return}moduleName(Z){const J=o5(Z);if(!J)throw new Error(`No command name given for module: ${this.shim.inspect(Z)}`);return this.commandFromFilename(J.filename)}commandFromFilename(Z){return this.shim.path.basename(Z,this.shim.path.extname(Z))}extractDesc({describe:Z,description:J,desc:X}){for(let Q of[Z,J,X]){if(typeof Q==="string"||Q===!1)return Q;O0(Q,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){const Z=this.frozens.pop();O0(Z,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=Z}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}}function K8(Z={},J=()=>!0){const X={};return Z6(Z).forEach((Q)=>{if(J(Q,Z[Q]))X[Q]=Z[Q]}),X}function N8(Z){if(typeof process==="undefined")return;[process.stdout,process.stderr].forEach((J)=>{const X=J;if(X._handle&&X.isTTY&&typeof X._handle.setBlocking==="function")X._handle.setBlocking(Z)})}var Gz=function(Z){return typeof Z==="boolean"};function TJ(Z,J){const X=J.y18n.__,Q={},Y=[];Q.failFn=function L(C){Y.push(C)};let U=null,z=null,$=!0;Q.showHelpOnFail=function L(C=!0,_){const[y,F]=typeof C==="string"?[!0,C]:[C,_];if(Z.getInternalMethods().isGlobalContext())z=F;return U=F,$=y,Q};let V=!1;Q.fail=function L(C,_){const y=Z.getInternalMethods().getLoggerInstance();if(Y.length)for(let F=Y.length-1;F>=0;--F){const D=Y[F];if(Gz(D)){if(_)throw _;else if(C)throw Error(C)}else D(C,_,Q)}else{if(Z.getExitProcess())N8(!0);if(!V){if(V=!0,$)Z.showHelp("error"),y.error();if(C||_)y.error(C||_);const F=U||z;if(F){if(C||_)y.error("");y.error(F)}}if(_=_||new B0(C),Z.getExitProcess())return Z.exit(1);else if(Z.getInternalMethods().hasParseCallback())return Z.exit(1,_);else throw _}};let B=[],W=!1;Q.usage=(L,C)=>{if(L===null)return W=!0,B=[],Q;return W=!1,B.push([L,C||""]),Q},Q.getUsage=()=>{return B},Q.getUsageDisabled=()=>{return W},Q.getPositionalGroupName=()=>{return X("Positionals:")};let N=[];Q.example=(L,C)=>{N.push([L,C||""])};let q=[];Q.command=function L(C,_,y,F,D=!1){if(y)q=q.map((u)=>{return u[2]=!1,u});q.push([C,_||"",y,F,D])},Q.getCommands=()=>q;let I={};Q.describe=function L(C,_){if(Array.isArray(C))C.forEach((y)=>{Q.describe(y,_)});else if(typeof C==="object")Object.keys(C).forEach((y)=>{Q.describe(y,C[y])});else I[C]=_},Q.getDescriptions=()=>I;let H=[];Q.epilog=(L)=>{H.push(L)};let G=!1,E;Q.wrap=(L)=>{G=!0,E=L},Q.getWrap=()=>{if(J.getEnv("YARGS_DISABLE_WRAP"))return null;if(!G)E=g(),G=!0;return E};const P="__yargsString__:";Q.deferY18nLookup=(L)=>P+L,Q.help=function L(){if(b)return b;k();const C=Z.customScriptName?Z.$0:J.path.basename(Z.$0),_=Z.getDemandedOptions(),y=Z.getDemandedCommands(),F=Z.getDeprecatedOptions(),D=Z.getGroups(),u=Z.getOptions();let f=[];f=f.concat(Object.keys(I)),f=f.concat(Object.keys(_)),f=f.concat(Object.keys(y)),f=f.concat(Object.keys(u.default)),f=f.filter(J0),f=Object.keys(f.reduce((h,U0)=>{if(U0!=="_")h[U0]=!0;return h},{}));const e=Q.getWrap(),Y0=J.cliui({width:e,wrap:!!e});if(!W){if(B.length)B.forEach((h)=>{if(Y0.div({text:`${h[0].replace(/\$0/g,C)}`}),h[1])Y0.div({text:`${h[1]}`,padding:[1,0,0,0]})}),Y0.div();else if(q.length){let h=null;if(y._)h=`${C} <${X("command")}>\n`;else h=`${C} [${X("command")}]\n`;Y0.div(`${h}`)}}if(q.length>1||q.length===1&&!q[0][2]){Y0.div(X("Commands:"));const h=Z.getInternalMethods().getContext(),U0=h.commands.length?`${h.commands.join(" ")} `:"";if(Z.getInternalMethods().getParserConfiguration()["sort-commands"]===!0)q=q.sort((A,X0)=>A[0].localeCompare(X0[0]));const K0=C?`${C} `:"";q.forEach((A)=>{const X0=`${K0}${U0}${A[0].replace(/^\$0 ?/,"")}`;Y0.span({text:X0,padding:[0,2,0,2],width:S(q,e,`${C}${U0}`)+4},{text:A[1]});const x=[];if(A[2])x.push(`[${X("default")}]`);if(A[3]&&A[3].length)x.push(`[${X("aliases:")} ${A[3].join(", ")}]`);if(A[4])if(typeof A[4]==="string")x.push(`[${X("deprecated: %s",A[4])}]`);else x.push(`[${X("deprecated")}]`);if(x.length)Y0.div({text:x.join(" "),padding:[0,0,0,2],align:"right"});else Y0.div()}),Y0.div()}const V0=(Object.keys(u.alias)||[]).concat(Object.keys(Z.parsed.newAliases)||[]);f=f.filter((h)=>!Z.parsed.newAliases[h]&&V0.every((U0)=>(u.alias[U0]||[]).indexOf(h)===-1));const T0=X("Options:");if(!D[T0])D[T0]=[];l(f,u.alias,D,T0);const t=(h)=>/^--/.test(c6(h)),_0=Object.keys(D).filter((h)=>D[h].length>0).map((h)=>{const U0=D[h].filter(J0).map((K0)=>{if(V0.includes(K0))return K0;for(let A=0,X0;(X0=V0[A])!==void 0;A++)if((u.alias[X0]||[]).includes(K0))return X0;return K0});return{groupName:h,normalizedKeys:U0}}).filter(({normalizedKeys:h})=>h.length>0).map(({groupName:h,normalizedKeys:U0})=>{const K0=U0.reduce((A,X0)=>{return A[X0]=[X0].concat(u.alias[X0]||[]).map((x)=>{if(h===Q.getPositionalGroupName())return x;else return(/^[0-9]$/.test(x)?u.boolean.includes(X0)?"-":"--":x.length>1?"--":"-")+x}).sort((x,o)=>t(x)===t(o)?0:t(x)?1:-1).join(", "),A},{});return{groupName:h,normalizedKeys:U0,switches:K0}});if(_0.filter(({groupName:h})=>h!==Q.getPositionalGroupName()).some(({normalizedKeys:h,switches:U0})=>!h.every((K0)=>t(U0[K0]))))_0.filter(({groupName:h})=>h!==Q.getPositionalGroupName()).forEach(({normalizedKeys:h,switches:U0})=>{h.forEach((K0)=>{if(t(U0[K0]))U0[K0]=Hz(U0[K0],"-x, ".length)})});if(_0.forEach(({groupName:h,normalizedKeys:U0,switches:K0})=>{Y0.div(h),U0.forEach((A)=>{const X0=K0[A];let x=I[A]||"",o=null;if(x.includes(P))x=X(x.substring(P.length));if(u.boolean.includes(A))o=`[${X("boolean")}]`;if(u.count.includes(A))o=`[${X("count")}]`;if(u.string.includes(A))o=`[${X("string")}]`;if(u.normalize.includes(A))o=`[${X("string")}]`;if(u.array.includes(A))o=`[${X("array")}]`;if(u.number.includes(A))o=`[${X("number")}]`;const z0=(v)=>typeof v==="string"?`[${X("deprecated: %s",v)}]`:`[${X("deprecated")}]`,M=[A in F?z0(F[A]):null,o,A in _?`[${X("required")}]`:null,u.choices&&u.choices[A]?`[${X("choices:")} ${Q.stringifiedValues(u.choices[A])}]`:null,d(u.default[A],u.defaultDescription[A])].filter(Boolean).join(" ");Y0.span({text:c6(X0),padding:[0,2,0,2+DJ(X0)],width:S(K0,e)+4},x);const j=Z.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;if(M&&!j)Y0.div({text:M,padding:[0,0,0,2],align:"right"});else Y0.div()}),Y0.div()}),N.length)Y0.div(X("Examples:")),N.forEach((h)=>{h[0]=h[0].replace(/\$0/g,C)}),N.forEach((h)=>{if(h[1]==="")Y0.div({text:h[0],padding:[0,2,0,2]});else Y0.div({text:h[0],padding:[0,2,0,2],width:S(N,e)+4},{text:h[1]})}),Y0.div();if(H.length>0){const h=H.map((U0)=>U0.replace(/\$0/g,C)).join("\n");Y0.div(`${h}\n`)}return Y0.toString().replace(/\s*$/,"")};function S(L,C,_){let y=0;if(!Array.isArray(L))L=Object.values(L).map((F)=>[F]);if(L.forEach((F)=>{y=Math.max(J.stringWidth(_?`${_} ${c6(F[0])}`:c6(F[0]))+DJ(F[0]),y)}),C)y=Math.min(y,parseInt((C*0.5).toString(),10));return y}function k(){const L=Z.getDemandedOptions(),C=Z.getOptions();(Object.keys(C.alias)||[]).forEach((_)=>{C.alias[_].forEach((y)=>{if(I[y])Q.describe(_,I[y]);if(y in L)Z.demandOption(_,L[y]);if(C.boolean.includes(y))Z.boolean(_);if(C.count.includes(y))Z.count(_);if(C.string.includes(y))Z.string(_);if(C.normalize.includes(y))Z.normalize(_);if(C.array.includes(y))Z.array(_);if(C.number.includes(y))Z.number(_)})})}let b;Q.cacheHelpMessage=function(){b=this.help()},Q.clearCachedHelpMessage=function(){b=void 0},Q.hasCachedHelpMessage=function(){return!!b};function l(L,C,_,y){let F=[],D=null;return Object.keys(_).forEach((u)=>{F=F.concat(_[u])}),L.forEach((u)=>{if(D=[u].concat(C[u]),!D.some((f)=>F.indexOf(f)!==-1))_[y].push(u)}),F}function J0(L){return Z.getOptions().hiddenOptions.indexOf(L)<0||Z.parsed.argv[Z.getOptions().showHiddenOpt]}Q.showHelp=(L)=>{const C=Z.getInternalMethods().getLoggerInstance();if(!L)L="error";(typeof L==="function"?L:C[L])(Q.help())},Q.functionDescription=(L)=>{return["(",L.name?J.Parser.decamelize(L.name,"-"):X("generated-value"),")"].join("")},Q.stringifiedValues=function L(C,_){let y="";const F=_||", ",D=[].concat(C);if(!C||!D.length)return y;return D.forEach((u)=>{if(y.length)y+=F;y+=JSON.stringify(u)}),y};function d(L,C){let _=`[${X("default:")} `;if(L===void 0&&!C)return null;if(C)_+=C;else switch(typeof L){case"string":_+=`"${L}"`;break;case"object":_+=JSON.stringify(L);break;default:_+=L}return`${_}]`}function g(){if(J.process.stdColumns)return Math.min(80,J.process.stdColumns);else return 80}let R=null;Q.version=(L)=>{R=L},Q.showVersion=(L)=>{const C=Z.getInternalMethods().getLoggerInstance();if(!L)L="error";(typeof L==="function"?L:C[L])(R)},Q.reset=function L(C){return U=null,V=!1,B=[],W=!1,H=[],N=[],q=[],I=K8(I,(_)=>!C[_]),Q};const p=[];return Q.freeze=function L(){p.push({failMessage:U,failureOutput:V,usages:B,usageDisabled:W,epilogs:H,examples:N,commands:q,descriptions:I})},Q.unfreeze=function L(C=!1){const _=p.pop();if(!_)return;if(C)I={..._.descriptions,...I},q=[..._.commands,...q],B=[..._.usages,...B],N=[..._.examples,...N],H=[..._.epilogs,...H];else({failMessage:U,failureOutput:V,usages:B,usageDisabled:W,epilogs:H,examples:N,commands:q,descriptions:I}=_)},Q}var a5=function(Z){return typeof Z==="object"},Hz=function(Z,J){return a5(Z)?{text:Z.text,indentation:Z.indentation+J}:{text:Z,indentation:J}},DJ=function(Z){return a5(Z)?Z.indentation:0},c6=function(Z){return a5(Z)?Z.text:Z};var EJ=`###-begin-{{app_name}}-completions-### # # yargs command completion script # # Installation: {{app_path}} {{completion_command}} >> ~/.bashrc # or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. # -_yargs_completions() +_{{app_name}}_yargs_completions() { local cur_word args type_list @@ -12441,15 +51,15 @@ _yargs_completions() return 0 } -complete -o default -F _yargs_completions {{app_name}} +complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}} ###-end-{{app_name}}-completions-### -`; -var completionZshTemplate = `###-begin-{{app_name}}-completions-### +`,PJ=`#compdef {{app_name}} +###-begin-{{app_name}}-completions-### # # yargs command completion script # # Installation: {{app_path}} {{completion_command}} >> ~/.zshrc -# or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX. +# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. # _{{app_name}}_yargs_completions() { @@ -12462,1933 +72,7 @@ _{{app_name}}_yargs_completions() } compdef _{{app_name}}_yargs_completions {{app_name}} ###-end-{{app_name}}-completions-### -`; - -// node_modules/yargs/build/lib/completion.js -function completion(yargs, usage2, command3, shim2) { - const self = { - completionKey: "get-yargs-completions" - }; - let aliases; - self.setParsed = function setParsed(parsed) { - aliases = parsed.aliases; - }; - const zshShell = shim2.getEnv("SHELL") && shim2.getEnv("SHELL").indexOf("zsh") !== -1 || shim2.getEnv("ZSH_NAME") && shim2.getEnv("ZSH_NAME").indexOf("zsh") !== -1; - self.getCompletion = function getCompletion(args, done) { - const completions = []; - const current = args.length ? args[args.length - 1] : ""; - const argv = yargs.parse(args, true); - const parentCommands = yargs.getContext().commands; - function runCompletionFunction(argv2) { - assertNotStrictEqual(completionFunction, null, shim2); - if (isSyncCompletionFunction(completionFunction)) { - const result = completionFunction(current, argv2); - if (isPromise(result)) { - return result.then((list) => { - shim2.process.nextTick(() => { - done(list); - }); - }).catch((err) => { - shim2.process.nextTick(() => { - throw err; - }); - }); - } - return done(result); - } else { - return completionFunction(current, argv2, (completions2) => { - done(completions2); - }); - } - } - if (completionFunction) { - return isPromise(argv) ? argv.then(runCompletionFunction) : runCompletionFunction(argv); - } - const handlers = command3.getCommandHandlers(); - for (let i = 0, ii = args.length;i < ii; ++i) { - if (handlers[args[i]] && handlers[args[i]].builder) { - const builder = handlers[args[i]].builder; - if (isCommandBuilderCallback(builder)) { - const y = yargs.reset(); - builder(y); - return y.argv; - } - } - } - if (!current.match(/^-/) && parentCommands[parentCommands.length - 1] !== current) { - usage2.getCommands().forEach((usageCommand) => { - const commandName = parseCommand(usageCommand[0]).cmd; - if (args.indexOf(commandName) === -1) { - if (!zshShell) { - completions.push(commandName); - } else { - const desc = usageCommand[1] || ""; - completions.push(commandName.replace(/:/g, "\\:") + ":" + desc); - } - } - }); - } - if (current.match(/^-/) || current === "" && completions.length === 0) { - const descs = usage2.getDescriptions(); - const options = yargs.getOptions(); - Object.keys(options.key).forEach((key) => { - const negable = !!options.configuration["boolean-negation"] && options.boolean.includes(key); - let keyAndAliases = [key].concat(aliases[key] || []); - if (negable) - keyAndAliases = keyAndAliases.concat(keyAndAliases.map((key2) => `no-${key2}`)); - function completeOptionKey(key2) { - const notInArgs = keyAndAliases.every((val) => args.indexOf(`--${val}`) === -1); - if (notInArgs) { - const startsByTwoDashes = (s) => /^--/.test(s); - const isShortOption = (s) => /^[^0-9]$/.test(s); - const dashes = !startsByTwoDashes(current) && isShortOption(key2) ? "-" : "--"; - if (!zshShell) { - completions.push(dashes + key2); - } else { - const desc = descs[key2] || ""; - completions.push(dashes + `${key2.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "")}`); - } - } - } - completeOptionKey(key); - if (negable && !!options.default[key]) - completeOptionKey(`no-${key}`); - }); - } - done(completions); - }; - self.generateCompletionScript = function generateCompletionScript($0, cmd) { - let script = zshShell ? completionZshTemplate : completionShTemplate; - const name = shim2.path.basename($0); - if ($0.match(/\.js$/)) - $0 = `./${$0}`; - script = script.replace(/{{app_name}}/g, name); - script = script.replace(/{{completion_command}}/g, cmd); - return script.replace(/{{app_path}}/g, $0); - }; - let completionFunction = null; - self.registerFunction = (fn) => { - completionFunction = fn; - }; - return self; -} -var isSyncCompletionFunction = function(completionFunction) { - return completionFunction.length < 3; -}; - -// node_modules/yargs/build/lib/utils/levenshtein.js -function levenshtein(a, b) { - if (a.length === 0) - return b.length; - if (b.length === 0) - return a.length; - const matrix = []; - let i; - for (i = 0;i <= b.length; i++) { - matrix[i] = [i]; - } - let j; - for (j = 0;j <= a.length; j++) { - matrix[0][j] = j; - } - for (i = 1;i <= b.length; i++) { - for (j = 1;j <= a.length; j++) { - if (b.charAt(i - 1) === a.charAt(j - 1)) { - matrix[i][j] = matrix[i - 1][j - 1]; - } else { - matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); - } - } - } - return matrix[b.length][a.length]; -} - -// node_modules/yargs/build/lib/validation.js -function validation(yargs, usage2, y18n3, shim2) { - const __ = y18n3.__; - const __n = y18n3.__n; - const self = {}; - self.nonOptionCount = function nonOptionCount(argv) { - const demandedCommands = yargs.getDemandedCommands(); - const positionalCount = argv._.length + (argv["--"] ? argv["--"].length : 0); - const _s = positionalCount - yargs.getContext().commands.length; - if (demandedCommands._ && (_s < demandedCommands._.min || _s > demandedCommands._.max)) { - if (_s < demandedCommands._.min) { - if (demandedCommands._.minMsg !== undefined) { - usage2.fail(demandedCommands._.minMsg ? demandedCommands._.minMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.min.toString()) : null); - } else { - usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", _s, _s.toString(), demandedCommands._.min.toString())); - } - } else if (_s > demandedCommands._.max) { - if (demandedCommands._.maxMsg !== undefined) { - usage2.fail(demandedCommands._.maxMsg ? demandedCommands._.maxMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.max.toString()) : null); - } else { - usage2.fail(__n("Too many non-option arguments: got %s, maximum of %s", "Too many non-option arguments: got %s, maximum of %s", _s, _s.toString(), demandedCommands._.max.toString())); - } - } - } - }; - self.positionalCount = function positionalCount(required, observed) { - if (observed < required) { - usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", observed, observed + "", required + "")); - } - }; - self.requiredArguments = function requiredArguments(argv) { - const demandedOptions = yargs.getDemandedOptions(); - let missing = null; - for (const key of Object.keys(demandedOptions)) { - if (!Object.prototype.hasOwnProperty.call(argv, key) || typeof argv[key] === "undefined") { - missing = missing || {}; - missing[key] = demandedOptions[key]; - } - } - if (missing) { - const customMsgs = []; - for (const key of Object.keys(missing)) { - const msg = missing[key]; - if (msg && customMsgs.indexOf(msg) < 0) { - customMsgs.push(msg); - } - } - const customMsg = customMsgs.length ? `\n${customMsgs.join("\n")}` : ""; - usage2.fail(__n("Missing required argument: %s", "Missing required arguments: %s", Object.keys(missing).length, Object.keys(missing).join(", ") + customMsg)); - } - }; - self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { - const commandKeys = yargs.getCommandInstance().getCommands(); - const unknown = []; - const currentContext = yargs.getContext(); - Object.keys(argv).forEach((key) => { - if (specialKeys.indexOf(key) === -1 && !Object.prototype.hasOwnProperty.call(positionalMap, key) && !Object.prototype.hasOwnProperty.call(yargs._getParseContext(), key) && !self.isValidAndSomeAliasIsNotNew(key, aliases)) { - unknown.push(key); - } - }); - if (checkPositionals && (currentContext.commands.length > 0 || commandKeys.length > 0 || isDefaultCommand)) { - argv._.slice(currentContext.commands.length).forEach((key) => { - if (commandKeys.indexOf("" + key) === -1) { - unknown.push("" + key); - } - }); - } - if (unknown.length > 0) { - usage2.fail(__n("Unknown argument: %s", "Unknown arguments: %s", unknown.length, unknown.join(", "))); - } - }; - self.unknownCommands = function unknownCommands(argv) { - const commandKeys = yargs.getCommandInstance().getCommands(); - const unknown = []; - const currentContext = yargs.getContext(); - if (currentContext.commands.length > 0 || commandKeys.length > 0) { - argv._.slice(currentContext.commands.length).forEach((key) => { - if (commandKeys.indexOf("" + key) === -1) { - unknown.push("" + key); - } - }); - } - if (unknown.length > 0) { - usage2.fail(__n("Unknown command: %s", "Unknown commands: %s", unknown.length, unknown.join(", "))); - return true; - } else { - return false; - } - }; - self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { - if (!Object.prototype.hasOwnProperty.call(aliases, key)) { - return false; - } - const newAliases = yargs.parsed.newAliases; - for (const a of [key, ...aliases[key]]) { - if (!Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]) { - return true; - } - } - return false; - }; - self.limitedChoices = function limitedChoices(argv) { - const options = yargs.getOptions(); - const invalid = {}; - if (!Object.keys(options.choices).length) - return; - Object.keys(argv).forEach((key) => { - if (specialKeys.indexOf(key) === -1 && Object.prototype.hasOwnProperty.call(options.choices, key)) { - [].concat(argv[key]).forEach((value) => { - if (options.choices[key].indexOf(value) === -1 && value !== undefined) { - invalid[key] = (invalid[key] || []).concat(value); - } - }); - } - }); - const invalidKeys = Object.keys(invalid); - if (!invalidKeys.length) - return; - let msg = __("Invalid values:"); - invalidKeys.forEach((key) => { - msg += `\n ${__("Argument: %s, Given: %s, Choices: %s", key, usage2.stringifiedValues(invalid[key]), usage2.stringifiedValues(options.choices[key]))}`; - }); - usage2.fail(msg); - }; - let checks = []; - self.check = function check(f, global2) { - checks.push({ - func: f, - global: global2 - }); - }; - self.customChecks = function customChecks(argv, aliases) { - for (let i = 0, f;(f = checks[i]) !== undefined; i++) { - const func = f.func; - let result = null; - try { - result = func(argv, aliases); - } catch (err) { - usage2.fail(err.message ? err.message : err, err); - continue; - } - if (!result) { - usage2.fail(__("Argument check failed: %s", func.toString())); - } else if (typeof result === "string" || result instanceof Error) { - usage2.fail(result.toString(), result); - } - } - }; - let implied = {}; - self.implies = function implies(key, value) { - argsert(" [array|number|string]", [key, value], arguments.length); - if (typeof key === "object") { - Object.keys(key).forEach((k) => { - self.implies(k, key[k]); - }); - } else { - yargs.global(key); - if (!implied[key]) { - implied[key] = []; - } - if (Array.isArray(value)) { - value.forEach((i) => self.implies(key, i)); - } else { - assertNotStrictEqual(value, undefined, shim2); - implied[key].push(value); - } - } - }; - self.getImplied = function getImplied() { - return implied; - }; - function keyExists(argv, val) { - const num = Number(val); - val = isNaN(num) ? val : num; - if (typeof val === "number") { - val = argv._.length >= val; - } else if (val.match(/^--no-.+/)) { - val = val.match(/^--no-(.+)/)[1]; - val = !argv[val]; - } else { - val = argv[val]; - } - return val; - } - self.implications = function implications(argv) { - const implyFail = []; - Object.keys(implied).forEach((key) => { - const origKey = key; - (implied[key] || []).forEach((value) => { - let key2 = origKey; - const origValue = value; - key2 = keyExists(argv, key2); - value = keyExists(argv, value); - if (key2 && !value) { - implyFail.push(` ${origKey} -> ${origValue}`); - } - }); - }); - if (implyFail.length) { - let msg = `${__("Implications failed:")}\n`; - implyFail.forEach((value) => { - msg += value; - }); - usage2.fail(msg); - } - }; - let conflicting = {}; - self.conflicts = function conflicts(key, value) { - argsert(" [array|string]", [key, value], arguments.length); - if (typeof key === "object") { - Object.keys(key).forEach((k) => { - self.conflicts(k, key[k]); - }); - } else { - yargs.global(key); - if (!conflicting[key]) { - conflicting[key] = []; - } - if (Array.isArray(value)) { - value.forEach((i) => self.conflicts(key, i)); - } else { - conflicting[key].push(value); - } - } - }; - self.getConflicting = () => conflicting; - self.conflicting = function conflictingFn(argv) { - Object.keys(argv).forEach((key) => { - if (conflicting[key]) { - conflicting[key].forEach((value) => { - if (value && argv[key] !== undefined && argv[value] !== undefined) { - usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); - } - }); - } - }); - }; - self.recommendCommands = function recommendCommands(cmd, potentialCommands) { - const threshold = 3; - potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); - let recommended = null; - let bestDistance = Infinity; - for (let i = 0, candidate;(candidate = potentialCommands[i]) !== undefined; i++) { - const d = levenshtein(cmd, candidate); - if (d <= threshold && d < bestDistance) { - bestDistance = d; - recommended = candidate; - } - } - if (recommended) - usage2.fail(__("Did you mean %s?", recommended)); - }; - self.reset = function reset(localLookup) { - implied = objFilter(implied, (k) => !localLookup[k]); - conflicting = objFilter(conflicting, (k) => !localLookup[k]); - checks = checks.filter((c) => c.global); - return self; - }; - const frozens = []; - self.freeze = function freeze() { - frozens.push({ - implied, - checks, - conflicting - }); - }; - self.unfreeze = function unfreeze() { - const frozen = frozens.pop(); - assertNotStrictEqual(frozen, undefined, shim2); - ({ implied, checks, conflicting } = frozen); - }; - return self; -} -var specialKeys = ["$0", "--", "_"]; - -// node_modules/yargs/build/lib/utils/apply-extends.js -function applyExtends(config, cwd, mergeExtends, _shim) { - shim2 = _shim; - let defaultConfig = {}; - if (Object.prototype.hasOwnProperty.call(config, "extends")) { - if (typeof config.extends !== "string") - return defaultConfig; - const isPath = /\.json|\..*rc$/.test(config.extends); - let pathToDefault = null; - if (!isPath) { - try { - pathToDefault = require.resolve(config.extends); - } catch (_err) { - return config; - } - } else { - pathToDefault = getPathToDefaultConfig(cwd, config.extends); - } - checkForCircularExtends(pathToDefault); - previouslyVisitedConfigs.push(pathToDefault); - defaultConfig = isPath ? JSON.parse(shim2.readFileSync(pathToDefault, "utf8")) : import.meta.require(config.extends); - delete config.extends; - defaultConfig = applyExtends(defaultConfig, shim2.path.dirname(pathToDefault), mergeExtends, shim2); - } - previouslyVisitedConfigs = []; - return mergeExtends ? mergeDeep(defaultConfig, config) : Object.assign({}, defaultConfig, config); -} -var checkForCircularExtends = function(cfgPath) { - if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { - throw new YError(`Circular extended configurations: '${cfgPath}'.`); - } -}; -var getPathToDefaultConfig = function(cwd, pathToExtend) { - return shim2.path.resolve(cwd, pathToExtend); -}; -var mergeDeep = function(config1, config2) { - const target = {}; - function isObject(obj) { - return obj && typeof obj === "object" && !Array.isArray(obj); - } - Object.assign(target, config1); - for (const key of Object.keys(config2)) { - if (isObject(config2[key]) && isObject(target[key])) { - target[key] = mergeDeep(config1[key], config2[key]); - } else { - target[key] = config2[key]; - } - } - return target; -}; -var previouslyVisitedConfigs = []; -var shim2; - -// node_modules/yargs/build/lib/yargs-factory.js -function YargsWithShim(_shim) { - shim3 = _shim; - return Yargs; -} -var Yargs = function(processArgs = [], cwd = shim3.process.cwd(), parentRequire) { - const self = {}; - let command4; - let completion3 = null; - let groups = {}; - const globalMiddleware = []; - let output = ""; - const preservedGroups = {}; - let usage3; - let validation3; - let handlerFinishCommand = null; - const y18n3 = shim3.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(shim3.process.argv()[0])) { - default$0 = shim3.process.argv().slice(1, 2); - } else { - default$0 = shim3.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 (shim3.getEnv("_") && shim3.getProcessArgvBin() === shim3.getEnv("_")) { - self.$0 = shim3.getEnv("_").replace(`${shim3.path.dirname(shim3.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) - shim3.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) - completion3.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((k2) => !localLookup[k2]); - }); - objectOptions.forEach((k) => { - tmpOptions[k] = objFilter(options[k], (k2) => !localLookup[k2]); - }); - tmpOptions.envPrefix = options.envPrefix; - options = tmpOptions; - usage3 = usage3 ? usage3.reset(localLookup) : usage(self, y18n3, shim3); - validation3 = validation3 ? validation3.reset(localLookup) : validation(self, usage3, y18n3, shim3); - command4 = command4 ? command4.reset() : command(self, usage3, validation3, globalMiddleware, shim3); - if (!completion3) - completion3 = completion(self, usage3, command4, shim3); - 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 - }); - usage3.freeze(); - validation3.freeze(); - command4.freeze(); - } - function unfreeze() { - const frozen = frozens.pop(); - assertNotStrictEqual(frozen, undefined, shim3); - let configObjects; - ({ - options, - configObjects, - exitProcess, - groups, - output, - exitError, - hasOutput, - parsed: self.parsed, - strict, - strictCommands, - strictOptions, - completionCommand, - parseFn, - parseContext, - handlerFinishCommand - } = frozen); - options.configObjects = configObjects; - usage3.unfreeze(); - validation3.unfreeze(); - command4.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 = sanitizeKey2(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(" [string|array]", [key, value], arguments.length); - populateParserHintArrayDictionary(self.choices, "choices", key, value); - return self; - }; - self.alias = function(key, value) { - argsert(" [string|array]", [key, value], arguments.length); - populateParserHintArrayDictionary(self.alias, "alias", key, value); - return self; - }; - self.default = self.defaults = function(key, value, defaultDescription) { - argsert(" [*] [string]", [key, value, defaultDescription], arguments.length); - if (defaultDescription) { - assertSingleKey(key, shim3); - options.defaultDescription[key] = defaultDescription; - } - if (typeof value === "function") { - assertSingleKey(key, shim3); - if (!options.defaultDescription[key]) - options.defaultDescription[key] = usage3.functionDescription(value); - value = value.call(); - } - populateParserHintSingleValueDictionary(self.default, "default", key, value); - return self; - }; - self.describe = function(key, desc) { - argsert(" [string]", [key, desc], arguments.length); - setKey(key, true); - usage3.describe(key, desc); - return self; - }; - function setKey(key, set) { - populateParserHintSingleValueDictionary(setKey, "key", key, set); - return self; - } - function demandOption(keys, msg) { - argsert(" [string]", [keys, msg], arguments.length); - populateParserHintSingleValueDictionary(self.demandOption, "demandedOptions", keys, msg); - return self; - } - self.demandOption = demandOption; - self.coerce = function(keys, value) { - argsert(" [function]", [keys, value], arguments.length); - populateParserHintSingleValueDictionary(self.coerce, "coerce", keys, value); - return self; - }; - function populateParserHintSingleValueDictionary(builder, type, key, value) { - populateParserHintDictionary(builder, type, key, value, (type2, key2, value2) => { - options[type2][key2] = value2; - }); - } - function populateParserHintArrayDictionary(builder, type, key, value) { - populateParserHintDictionary(builder, type, key, value, (type2, key2, value2) => { - options[type2][key2] = (options[type2][key2] || []).concat(value2); - }); - } - function populateParserHintDictionary(builder, type, key, value, singleKeyHandler) { - if (Array.isArray(key)) { - key.forEach((k) => { - builder(k, value); - }); - } else if (((key2) => typeof key2 === "object")(key)) { - for (const k of objectKeys(key)) { - builder(k, key[k]); - } - } else { - singleKeyHandler(type, sanitizeKey2(key), value); - } - } - function sanitizeKey2(key) { - if (key === "__proto__") - return "___proto___"; - return key; - } - function deleteFromParserHintObject(optionKey) { - objectKeys(options).forEach((hintKey) => { - if (((key) => key === "configObjects")(hintKey)) - return; - const hint = options[hintKey]; - if (Array.isArray(hint)) { - if (~hint.indexOf(optionKey)) - hint.splice(hint.indexOf(optionKey), 1); - } else if (typeof hint === "object") { - delete hint[optionKey]; - } - }); - delete usage3.getDescriptions()[optionKey]; - } - self.config = function config(key = "config", msg, parseFn2) { - argsert("[object|string] [string|function] [function]", [key, msg, parseFn2], arguments.length); - if (typeof key === "object" && !Array.isArray(key)) { - key = applyExtends(key, cwd, self.getParserConfiguration()["deep-merge-config"] || false, shim3); - options.configObjects = (options.configObjects || []).concat(key); - return self; - } - if (typeof msg === "function") { - parseFn2 = msg; - msg = undefined; - } - self.describe(key, msg || usage3.deferY18nLookup("Path to JSON config file")); - (Array.isArray(key) ? key : [key]).forEach((k) => { - options.config[k] = parseFn2 || true; - }); - return self; - }; - self.example = function(cmd, description) { - argsert(" [string]", [cmd, description], arguments.length); - if (Array.isArray(cmd)) { - cmd.forEach((exampleParams) => self.example(...exampleParams)); - } else { - usage3.example(cmd, description); - } - return self; - }; - self.command = function(cmd, description, builder, handler, middlewares, deprecated) { - argsert(" [string|boolean] [function|object] [function] [array] [boolean|string]", [cmd, description, builder, handler, middlewares, deprecated], arguments.length); - command4.addHandler(cmd, description, builder, handler, middlewares, deprecated); - return self; - }; - self.commandDir = function(dir, opts) { - argsert(" [object]", [dir, opts], arguments.length); - const req = parentRequire || shim3.require; - command4.addDirectory(dir, self.getContext(), req, shim3.getCallerFile(), opts); - return self; - }; - self.demand = self.required = self.require = function demand(keys, max, msg) { - if (Array.isArray(max)) { - max.forEach((key) => { - assertNotStrictEqual(msg, true, shim3); - demandOption(key, msg); - }); - max = Infinity; - } else if (typeof max !== "number") { - msg = max; - max = Infinity; - } - if (typeof keys === "number") { - assertNotStrictEqual(msg, true, shim3); - self.demandCommand(keys, max, msg, msg); - } else if (Array.isArray(keys)) { - keys.forEach((key) => { - assertNotStrictEqual(msg, true, shim3); - demandOption(key, msg); - }); - } else { - if (typeof msg === "string") { - demandOption(keys, msg); - } else if (msg === true || typeof msg === "undefined") { - demandOption(keys); - } - } - return self; - }; - self.demandCommand = function demandCommand(min = 1, max, minMsg, maxMsg) { - argsert("[number] [number|string] [string|null|undefined] [string|null|undefined]", [min, max, minMsg, maxMsg], arguments.length); - if (typeof max !== "number") { - minMsg = max; - max = Infinity; - } - self.global("_", false); - options.demandedCommands._ = { - min, - max, - minMsg, - maxMsg - }; - return self; - }; - self.getDemandedOptions = () => { - argsert([], 0); - return options.demandedOptions; - }; - self.getDemandedCommands = () => { - argsert([], 0); - return options.demandedCommands; - }; - self.deprecateOption = function deprecateOption(option, message) { - argsert(" [string|boolean]", [option, message], arguments.length); - options.deprecatedOptions[option] = message; - return self; - }; - self.getDeprecatedOptions = () => { - argsert([], 0); - return options.deprecatedOptions; - }; - self.implies = function(key, value) { - argsert(" [number|string|array]", [key, value], arguments.length); - validation3.implies(key, value); - return self; - }; - self.conflicts = function(key1, key2) { - argsert(" [string|array]", [key1, key2], arguments.length); - validation3.conflicts(key1, key2); - return self; - }; - self.usage = function(msg, description, builder, handler) { - argsert(" [string|boolean] [function|object] [function]", [msg, description, builder, handler], arguments.length); - if (description !== undefined) { - assertNotStrictEqual(msg, null, shim3); - if ((msg || "").match(/^\$0( |$)/)) { - return self.command(msg, description, builder, handler); - } else { - throw new YError(".usage() description must start with $0 if being used as alias for .command()"); - } - } else { - usage3.usage(msg); - return self; - } - }; - self.epilogue = self.epilog = function(msg) { - argsert("", [msg], arguments.length); - usage3.epilog(msg); - return self; - }; - self.fail = function(f) { - argsert("", [f], arguments.length); - usage3.failFn(f); - return self; - }; - self.onFinishCommand = function(f) { - argsert("", [f], arguments.length); - handlerFinishCommand = f; - return self; - }; - self.getHandlerFinishCommand = () => handlerFinishCommand; - self.check = function(f, _global) { - argsert(" [boolean]", [f, _global], arguments.length); - validation3.check(f, _global !== false); - return self; - }; - self.global = function global2(globals, global2) { - argsert(" [boolean]", [globals, global2], arguments.length); - globals = [].concat(globals); - if (global2 !== false) { - options.local = options.local.filter((l) => globals.indexOf(l) === -1); - } else { - globals.forEach((g) => { - if (options.local.indexOf(g) === -1) - options.local.push(g); - }); - } - return self; - }; - self.pkgConf = function pkgConf(key, rootPath) { - argsert(" [string]", [key, rootPath], arguments.length); - let conf = null; - const obj = pkgUp(rootPath || cwd); - if (obj[key] && typeof obj[key] === "object") { - conf = applyExtends(obj[key], rootPath || cwd, self.getParserConfiguration()["deep-merge-config"] || false, shim3); - options.configObjects = (options.configObjects || []).concat(conf); - } - return self; - }; - const pkgs = {}; - function pkgUp(rootPath) { - const npath = rootPath || "*"; - if (pkgs[npath]) - return pkgs[npath]; - let obj = {}; - try { - let startDir = rootPath || shim3.mainFilename; - if (!rootPath && shim3.path.extname(startDir)) { - startDir = shim3.path.dirname(startDir); - } - const pkgJsonPath = shim3.findUp(startDir, (dir, names) => { - if (names.includes("package.json")) { - return "package.json"; - } else { - return; - } - }); - assertNotStrictEqual(pkgJsonPath, undefined, shim3); - obj = JSON.parse(shim3.readFileSync(pkgJsonPath, "utf8")); - } catch (_noop) { - } - pkgs[npath] = obj || {}; - return pkgs[npath]; - } - let parseFn = null; - let parseContext = null; - self.parse = function parse(args, shortCircuit, _parseFn) { - argsert("[string|array] [function|boolean|object] [function]", [args, shortCircuit, _parseFn], arguments.length); - freeze(); - if (typeof args === "undefined") { - const argv = self._parseArgs(processArgs); - const tmpParsed = self.parsed; - unfreeze(); - self.parsed = tmpParsed; - return argv; - } - if (typeof shortCircuit === "object") { - parseContext = shortCircuit; - shortCircuit = _parseFn; - } - if (typeof shortCircuit === "function") { - parseFn = shortCircuit; - shortCircuit = false; - } - if (!shortCircuit) - processArgs = args; - if (parseFn) - exitProcess = false; - const parsed = self._parseArgs(args, !!shortCircuit); - completion3.setParsed(self.parsed); - if (parseFn) - parseFn(exitError, parsed, output); - unfreeze(); - return parsed; - }; - self._getParseContext = () => parseContext || {}; - self._hasParseCallback = () => !!parseFn; - self.option = self.options = function option(key, opt) { - argsert(" [object]", [key, opt], arguments.length); - if (typeof key === "object") { - Object.keys(key).forEach((k) => { - self.options(k, key[k]); - }); - } else { - if (typeof opt !== "object") { - opt = {}; - } - options.key[key] = true; - if (opt.alias) - self.alias(key, opt.alias); - const deprecate = opt.deprecate || opt.deprecated; - if (deprecate) { - self.deprecateOption(key, deprecate); - } - const demand = opt.demand || opt.required || opt.require; - if (demand) { - self.demand(key, demand); - } - if (opt.demandOption) { - self.demandOption(key, typeof opt.demandOption === "string" ? opt.demandOption : undefined); - } - if (opt.conflicts) { - self.conflicts(key, opt.conflicts); - } - if ("default" in opt) { - self.default(key, opt.default); - } - if (opt.implies !== undefined) { - self.implies(key, opt.implies); - } - if (opt.nargs !== undefined) { - self.nargs(key, opt.nargs); - } - if (opt.config) { - self.config(key, opt.configParser); - } - if (opt.normalize) { - self.normalize(key); - } - if (opt.choices) { - self.choices(key, opt.choices); - } - if (opt.coerce) { - self.coerce(key, opt.coerce); - } - if (opt.group) { - self.group(key, opt.group); - } - if (opt.boolean || opt.type === "boolean") { - self.boolean(key); - if (opt.alias) - self.boolean(opt.alias); - } - if (opt.array || opt.type === "array") { - self.array(key); - if (opt.alias) - self.array(opt.alias); - } - if (opt.number || opt.type === "number") { - self.number(key); - if (opt.alias) - self.number(opt.alias); - } - if (opt.string || opt.type === "string") { - self.string(key); - if (opt.alias) - self.string(opt.alias); - } - if (opt.count || opt.type === "count") { - self.count(key); - } - if (typeof opt.global === "boolean") { - self.global(key, opt.global); - } - if (opt.defaultDescription) { - options.defaultDescription[key] = opt.defaultDescription; - } - if (opt.skipValidation) { - self.skipValidation(key); - } - const desc = opt.describe || opt.description || opt.desc; - self.describe(key, desc); - if (opt.hidden) { - self.hide(key); - } - if (opt.requiresArg) { - self.requiresArg(key); - } - } - return self; - }; - self.getOptions = () => options; - self.positional = function(key, opts) { - argsert(" ", [key, opts], arguments.length); - if (context.resets === 0) { - throw new YError(".positional() can only be called in a command's builder function"); - } - const supportedOpts = [ - "default", - "defaultDescription", - "implies", - "normalize", - "choices", - "conflicts", - "coerce", - "type", - "describe", - "desc", - "description", - "alias" - ]; - opts = objFilter(opts, (k, v) => { - let accept = supportedOpts.indexOf(k) !== -1; - if (k === "type" && ["string", "number", "boolean"].indexOf(v) === -1) - accept = false; - return accept; - }); - const fullCommand = context.fullCommands[context.fullCommands.length - 1]; - const parseOptions = fullCommand ? command4.cmdToParseOptions(fullCommand) : { - array: [], - alias: {}, - default: {}, - demand: {} - }; - objectKeys(parseOptions).forEach((pk) => { - const parseOption = parseOptions[pk]; - if (Array.isArray(parseOption)) { - if (parseOption.indexOf(key) !== -1) - opts[pk] = true; - } else { - if (parseOption[key] && !(pk in opts)) - opts[pk] = parseOption[key]; - } - }); - self.group(key, usage3.getPositionalGroupName()); - return self.option(key, opts); - }; - self.group = function group(opts, groupName) { - argsert(" ", [opts, groupName], arguments.length); - const existing = preservedGroups[groupName] || groups[groupName]; - if (preservedGroups[groupName]) { - delete preservedGroups[groupName]; - } - const seen = {}; - groups[groupName] = (existing || []).concat(opts).filter((key) => { - if (seen[key]) - return false; - return seen[key] = true; - }); - return self; - }; - self.getGroups = () => Object.assign({}, groups, preservedGroups); - self.env = function(prefix) { - argsert("[string|boolean]", [prefix], arguments.length); - if (prefix === false) - delete options.envPrefix; - else - options.envPrefix = prefix || ""; - return self; - }; - self.wrap = function(cols) { - argsert("", [cols], arguments.length); - usage3.wrap(cols); - return self; - }; - let strict = false; - self.strict = function(enabled) { - argsert("[boolean]", [enabled], arguments.length); - strict = enabled !== false; - return self; - }; - self.getStrict = () => strict; - let strictCommands = false; - self.strictCommands = function(enabled) { - argsert("[boolean]", [enabled], arguments.length); - strictCommands = enabled !== false; - return self; - }; - self.getStrictCommands = () => strictCommands; - let strictOptions = false; - self.strictOptions = function(enabled) { - argsert("[boolean]", [enabled], arguments.length); - strictOptions = enabled !== false; - return self; - }; - self.getStrictOptions = () => strictOptions; - let parserConfig = {}; - self.parserConfiguration = function parserConfiguration(config) { - argsert("", [config], arguments.length); - parserConfig = config; - return self; - }; - self.getParserConfiguration = () => parserConfig; - self.showHelp = function(level) { - argsert("[string|function]", [level], arguments.length); - if (!self.parsed) - self._parseArgs(processArgs); - if (command4.hasDefaultCommand()) { - context.resets++; - command4.runDefaultBuilderOn(self); - } - usage3.showHelp(level); - return self; - }; - let versionOpt = null; - self.version = function version(opt, msg, ver) { - const defaultVersionOpt = "version"; - argsert("[boolean|string] [string] [string]", [opt, msg, ver], arguments.length); - if (versionOpt) { - deleteFromParserHintObject(versionOpt); - usage3.version(undefined); - versionOpt = null; - } - if (arguments.length === 0) { - ver = guessVersion(); - opt = defaultVersionOpt; - } else if (arguments.length === 1) { - if (opt === false) { - return self; - } - ver = opt; - opt = defaultVersionOpt; - } else if (arguments.length === 2) { - ver = msg; - msg = undefined; - } - versionOpt = typeof opt === "string" ? opt : defaultVersionOpt; - msg = msg || usage3.deferY18nLookup("Show version number"); - usage3.version(ver || undefined); - self.boolean(versionOpt); - self.describe(versionOpt, msg); - return self; - }; - function guessVersion() { - const obj = pkgUp(); - return obj.version || "unknown"; - } - let helpOpt = null; - self.addHelpOpt = self.help = function addHelpOpt(opt, msg) { - const defaultHelpOpt = "help"; - argsert("[string|boolean] [string]", [opt, msg], arguments.length); - if (helpOpt) { - deleteFromParserHintObject(helpOpt); - helpOpt = null; - } - if (arguments.length === 1) { - if (opt === false) - return self; - } - helpOpt = typeof opt === "string" ? opt : defaultHelpOpt; - self.boolean(helpOpt); - self.describe(helpOpt, msg || usage3.deferY18nLookup("Show help")); - return self; - }; - const defaultShowHiddenOpt = "show-hidden"; - options.showHiddenOpt = defaultShowHiddenOpt; - self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt(opt, msg) { - argsert("[string|boolean] [string]", [opt, msg], arguments.length); - if (arguments.length === 1) { - if (opt === false) - return self; - } - const showHiddenOpt = typeof opt === "string" ? opt : defaultShowHiddenOpt; - self.boolean(showHiddenOpt); - self.describe(showHiddenOpt, msg || usage3.deferY18nLookup("Show hidden options")); - options.showHiddenOpt = showHiddenOpt; - return self; - }; - self.hide = function hide(key) { - argsert("", [key], arguments.length); - options.hiddenOptions.push(key); - return self; - }; - self.showHelpOnFail = function showHelpOnFail(enabled, message) { - argsert("[boolean|string] [string]", [enabled, message], arguments.length); - usage3.showHelpOnFail(enabled, message); - return self; - }; - let exitProcess = true; - self.exitProcess = function(enabled = true) { - argsert("[boolean]", [enabled], arguments.length); - exitProcess = enabled; - return self; - }; - self.getExitProcess = () => exitProcess; - self.showCompletionScript = function($0, cmd) { - argsert("[string] [string]", [$0, cmd], arguments.length); - $0 = $0 || self.$0; - _logger.log(completion3.generateCompletionScript($0, cmd || completionCommand || "completion")); - return self; - }; - self.getCompletion = function(args, done) { - argsert(" ", [args, done], arguments.length); - completion3.getCompletion(args, done); - }; - self.locale = function(locale) { - argsert("[string]", [locale], arguments.length); - if (!locale) { - guessLocale(); - return y18n3.getLocale(); - } - detectLocale = false; - y18n3.setLocale(locale); - return self; - }; - self.updateStrings = self.updateLocale = function(obj) { - argsert("", [obj], arguments.length); - detectLocale = false; - y18n3.updateLocale(obj); - return self; - }; - let detectLocale = true; - self.detectLocale = function(detect) { - argsert("", [detect], arguments.length); - detectLocale = detect; - return self; - }; - self.getDetectLocale = () => detectLocale; - const _logger = { - log(...args) { - if (!self._hasParseCallback()) - console.log(...args); - hasOutput = true; - if (output.length) - output += "\n"; - output += args.join(" "); - }, - error(...args) { - if (!self._hasParseCallback()) - console.error(...args); - hasOutput = true; - if (output.length) - output += "\n"; - output += args.join(" "); - } - }; - self._getLoggerInstance = () => _logger; - self._hasOutput = () => hasOutput; - self._setHasOutput = () => { - hasOutput = true; - }; - let recommendCommands; - self.recommendCommands = function(recommend = true) { - argsert("[boolean]", [recommend], arguments.length); - recommendCommands = recommend; - return self; - }; - self.getUsageInstance = () => usage3; - self.getValidationInstance = () => validation3; - self.getCommandInstance = () => command4; - self.terminalWidth = () => { - argsert([], 0); - return shim3.process.stdColumns; - }; - Object.defineProperty(self, "argv", { - get: () => self._parseArgs(processArgs), - enumerable: true - }); - self._parseArgs = function parseArgs(args, shortCircuit, _calledFromCommand, commandIndex) { - let skipValidation = !!_calledFromCommand; - args = args || processArgs; - options.__ = y18n3.__; - options.configuration = self.getParserConfiguration(); - const populateDoubleDash = !!options.configuration["populate--"]; - const config = Object.assign({}, options.configuration, { - "populate--": true - }); - const parsed = shim3.Parser.detailed(args, Object.assign({}, options, { - configuration: Object.assign({ "parse-positional-numbers": false }, config) - })); - let argv = parsed.argv; - if (parseContext) - argv = Object.assign({}, argv, parseContext); - const aliases = parsed.aliases; - argv.$0 = self.$0; - self.parsed = parsed; - try { - guessLocale(); - if (shortCircuit) { - return self._postProcess(argv, populateDoubleDash, _calledFromCommand); - } - if (helpOpt) { - const helpCmds = [helpOpt].concat(aliases[helpOpt] || []).filter((k) => k.length > 1); - if (~helpCmds.indexOf("" + argv._[argv._.length - 1])) { - argv._.pop(); - argv[helpOpt] = true; - } - } - const handlerKeys = command4.getCommands(); - const requestCompletions = completion3.completionKey in argv; - const skipRecommendation = argv[helpOpt] || requestCompletions; - const skipDefaultCommand = skipRecommendation && (handlerKeys.length > 1 || handlerKeys[0] !== "$0"); - if (argv._.length) { - if (handlerKeys.length) { - let firstUnknownCommand; - for (let i = commandIndex || 0, cmd;argv._[i] !== undefined; i++) { - cmd = String(argv._[i]); - if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) { - const innerArgv = command4.runCommand(cmd, self, parsed, i + 1); - return self._postProcess(innerArgv, populateDoubleDash); - } else if (!firstUnknownCommand && cmd !== completionCommand) { - firstUnknownCommand = cmd; - break; - } - } - if (command4.hasDefaultCommand() && !skipDefaultCommand) { - const innerArgv = command4.runCommand(null, self, parsed); - return self._postProcess(innerArgv, populateDoubleDash); - } - if (recommendCommands && firstUnknownCommand && !skipRecommendation) { - validation3.recommendCommands(firstUnknownCommand, handlerKeys); - } - } - if (completionCommand && ~argv._.indexOf(completionCommand) && !requestCompletions) { - if (exitProcess) - setBlocking(true); - self.showCompletionScript(); - self.exit(0); - } - } else if (command4.hasDefaultCommand() && !skipDefaultCommand) { - const innerArgv = command4.runCommand(null, self, parsed); - return self._postProcess(innerArgv, populateDoubleDash); - } - if (requestCompletions) { - if (exitProcess) - setBlocking(true); - args = [].concat(args); - const completionArgs = args.slice(args.indexOf(`--${completion3.completionKey}`) + 1); - completion3.getCompletion(completionArgs, (completions) => { - (completions || []).forEach((completion4) => { - _logger.log(completion4); - }); - self.exit(0); - }); - return self._postProcess(argv, !populateDoubleDash, _calledFromCommand); - } - if (!hasOutput) { - Object.keys(argv).forEach((key) => { - if (key === helpOpt && argv[key]) { - if (exitProcess) - setBlocking(true); - skipValidation = true; - self.showHelp("log"); - self.exit(0); - } else if (key === versionOpt && argv[key]) { - if (exitProcess) - setBlocking(true); - skipValidation = true; - usage3.showVersion(); - self.exit(0); - } - }); - } - if (!skipValidation && options.skipValidation.length > 0) { - skipValidation = Object.keys(argv).some((key) => options.skipValidation.indexOf(key) >= 0 && argv[key] === true); - } - if (!skipValidation) { - if (parsed.error) - throw new YError(parsed.error.message); - if (!requestCompletions) { - self._runValidation(argv, aliases, {}, parsed.error); - } - } - } catch (err) { - if (err instanceof YError) - usage3.fail(err.message, err); - else - throw err; - } - return self._postProcess(argv, populateDoubleDash, _calledFromCommand); - }; - self._postProcess = function(argv, populateDoubleDash, calledFromCommand = false) { - if (isPromise(argv)) - return argv; - if (calledFromCommand) - return argv; - if (!populateDoubleDash) { - argv = self._copyDoubleDash(argv); - } - const parsePositionalNumbers = self.getParserConfiguration()["parse-positional-numbers"] || self.getParserConfiguration()["parse-positional-numbers"] === undefined; - if (parsePositionalNumbers) { - argv = self._parsePositionalNumbers(argv); - } - return argv; - }; - self._copyDoubleDash = function(argv) { - if (!argv._ || !argv["--"]) - return argv; - argv._.push.apply(argv._, argv["--"]); - try { - delete argv["--"]; - } catch (_err) { - } - return argv; - }; - self._parsePositionalNumbers = function(argv) { - const args = argv["--"] ? argv["--"] : argv._; - for (let i = 0, arg;(arg = args[i]) !== undefined; i++) { - if (shim3.Parser.looksLikeNumber(arg) && Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { - args[i] = Number(arg); - } - } - return argv; - }; - self._runValidation = function runValidation(argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) { - if (parseErrors) - throw new YError(parseErrors.message); - validation3.nonOptionCount(argv); - validation3.requiredArguments(argv); - let failedStrictCommands = false; - if (strictCommands) { - failedStrictCommands = validation3.unknownCommands(argv); - } - if (strict && !failedStrictCommands) { - validation3.unknownArguments(argv, aliases, positionalMap, isDefaultCommand); - } else if (strictOptions) { - validation3.unknownArguments(argv, aliases, {}, false, false); - } - validation3.customChecks(argv, aliases); - validation3.limitedChoices(argv); - validation3.implications(argv); - validation3.conflicting(argv); - }; - function guessLocale() { - if (!detectLocale) - return; - const locale = shim3.getEnv("LC_ALL") || shim3.getEnv("LC_MESSAGES") || shim3.getEnv("LANG") || shim3.getEnv("LANGUAGE") || "en_US"; - self.locale(locale.replace(/[.:].*/, "")); - } - self.help(); - self.version(); - return self; -}; -function isYargsInstance(y) { - return !!y && typeof y._parseArgs === "function"; -} -var shim3; -var rebase = (base, dir) => shim3.path.relative(base, dir); - -// node_modules/yargs/index.mjs -var Yargs2 = YargsWithShim(esm_default); -var yargs_default = Yargs2; - -// src/output.ts -function debug(...data) { - if (conf.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } -} -function step(data) { - if (conf.verbose) { - console.error(font.gray(data)); - } -} -var kill = function(error = 1, msg = "") { - msg && console.error(+msg); - process.exit(+error); -}; -var font = {}; -font.red = font.green = font.gray = (str) => str; -var conf = null; -var outputConfig = function(_conf) { - conf = _conf; -}; -var info = function(msg, data = "") { - if (conf.quiet || conf.quietTotal) { - return; - } - if (conf.output || conf.outputMatch) - return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); - console.log.apply(this, [msg, data].filter(Boolean)); -}; -var chat = function(msg, data = "") { - if (conf.verbose) { - info(msg, data); - } else { - debug([msg, data].filter(Boolean).join(" ")); - } -}; -var error = function(msg, data = "") { - if (conf.bail) { - return die(msg, data); - } - if (!conf.quietTotal) { - console.error.apply(this, [" \u274C", font.red(msg), data].filter(Boolean)); - } - return false; -}; -var die = function(msg = "", data = "", displayHelp = false) { - if (displayHelp && !conf.quietTotal) { - conf.showHelp(); - } - msg && error(" \u274C " + msg, data); - kill(); -}; - -// src/engine.ts -function engine(_runtime, conf2 = { engine: "V8" }) { - runtime = _runtime; - outputConfig(conf2); - step("Displaying steps for:"); - step(conf2); - conf2.pattern = getPattern(conf2.pattern, conf2) || ""; - conf2.replacement = getReplacement(conf2.replacement, conf2) || ""; - if (conf2.replacementJs) - conf2.replacementOri = conf2.replacement; - conf2.regex = getRegex(conf2.pattern, conf2) || ""; - step(conf2); - conf2.files = getFilePaths(conf2); - if (!conf2.files.length) { - if (conf2.contentWasPiped) { - return doReplacement("[pipe-data]", conf2, conf2.pipeData); - } - return error(conf2.files.length + " files found"); - } - chat(conf2.files.length + " files found"); - step(conf2); - conf2.files.filter((filepath) => { - if (fs.statSync(filepath).isFile()) { - return true; - } - debug("Not a valid file:", filepath); - return false; - }).forEach((filepath) => openFile(filepath, conf2)); -} -var openFile = function(file, conf2) { - if (conf2.voidAsync) { - chat("Open sync: " + file); - var data = runtime.fileReadSync(file, conf2.encoding); - return doReplacement(file, conf2, data); - } - chat("Open async: " + file); - fs.readFile(file, conf2.encoding, function(err, data2) { - if (err) { - return error(err); - } - return doReplacement(file, conf2, data2); - }); -}; -var doReplacement = function(filePath, conf2, content) { - debug("Work on content from: " + filePath); - if (conf2.replacementJs) { - conf2.replacement = dynamicReplacement(filePath, conf2, content); - } - const result = content.replace(conf2.regex, conf2.replacement); - if (conf2.outputMatch) { - return; - } - if (conf2.output) { - debug("Output result from: " + filePath); - return process.stdout.write(result); - } - if (result === content) { - debug("Nothing changed in: " + filePath); - return; - } - content = ""; - if (conf2.simulate) - return info(filePath); - debug("Write updated content to: " + filePath); - if (conf2.voidBackup) { - return fs.writeFile(filePath, result, conf2.encoding, function(err) { - if (err) { - return error(err); - } - info(filePath); - }); - } - const oriFile = path.normalize(path.join(process.cwd(), filePath)); - const salt = new Date().toISOString().replace(re.colon, "_").replace("Z", ""); - const backupFile = oriFile + "." + salt + ".backup"; - if (conf2.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, conf2.encoding); - if (!conf2.keepBackup) { - fs.unlinkSync(backupFile); - } - } catch (e) { - return error(e); - } - return info(filePath); - } - fs.rename(oriFile, backupFile, (err) => { - if (err) { - return error(err); - } - fs.writeFile(oriFile, result, conf2.encoding, (err2) => { - if (err2) { - return error(err2); - } - if (!conf2.keepBackup) { - fs.unlink(backupFile, (err3) => { - if (err3) { - return error(err3); - } - info(filePath); - }); - } - return info(filePath); - }); - }); -}; -var getPattern = function(pattern, conf2) { - step("Get final pattern"); - pattern = replacePlaceholders(pattern, conf2); - if (conf2.literal) { - pattern = pattern.replace(re.regexSpecialChars, "\\$&"); - } - step(pattern); - return pattern; -}; -var getReplacement = function(replacement, conf2) { - step("Get final replacement"); - replacement = replacePlaceholders(replacement, conf2); - if (conf2.outputMatch) { - step("Output match"); - if (parseInt(process.versions.node) < 6) { - return die("outputMatch is only supported in node 6+"); - } - return function() { - step(arguments); - if (arguments.length === 3) { - step("Printing full match"); - process.stdout.write(arguments[0] + "\n"); - return ""; - } - for (var i = 1;i < arguments.length - 2; i++) { - process.stdout.write(arguments[i]); - } - process.stdout.write("\n"); - return ""; - }; - } - if (conf2.replacementJs && re.capturedGroupRef.test(conf2.replacement) && parseInt(process.versions.node) < 6) { - return die("Captured groups for javascript replacement is only supported in node 6+"); - } - step(replacement); - return replacement; -}; -var getRegex = function(pattern, conf2) { - step("Get final regex with engine: " + conf2.engine); - let regex; - let flags = getFlags(conf2); - switch (conf2.engine) { - case "V8": - try { - regex = new RegExp(pattern, flags); - } catch (e) { - if (conf2.debug) - throw new Error(e); - die(e.message); - } - break; - case "RE2": - try { - const RE2 = (()=>{ throw new Error(`Cannot require module "re2"`);})(); - regex = new RE2(pattern, flags); - } catch (e) { - if (conf2.debug) - throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${conf2.engine} not supported`); - } - step(regex); - return regex; -}; -var getFlags = function(conf2) { - step("Get flags"); - let flags = ""; - if (!conf2.voidGlobal) { - flags += "g"; - } - if (!conf2.voidIgnoreCase) { - flags += "i"; - } - if (!conf2.voidMultiline) { - flags += "m"; - } - if (conf2.dotAll) { - flags += "s"; - } - if (conf2.unicode) { - flags += "u"; - } - step(flags); - return flags; -}; -var readableSize = function(size) { - if (size === 1) { - return "1 Byte"; - } - const i = Math.floor(Math.log(size) / Math.log(1024)); - return (size / Math.pow(1024, i)).toFixed(i ? 1 : 0) + " " + ["Bytes", "KB", "MB", "GB", "TB"][i]; -}; -var dynamicReplacement = function(_file_rr, _config_rr, _data_rr) { - const _time_obj = now; - const _time = localTimeString(_time_obj); - const _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = " ", _nl = "\n"; - let _file = "\u274C", _file_rel = "\u274C", _dirpath = "\u274C", _dirpath_rel = "\u274C", _dirname = "\u274C", _filename = "\u274C", _name = "\u274C", _ext = "\u274C", _mtime = "\u274C", _ctime = "\u274C", _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = "\u274C", dynamicContent = new Function("require", "fs", "globs", "path", "pipe", "pipe_", "find", "find_", "text", "text_", "file", "file_", "file_rel", "file_rel_", "dirpath", "dirpath_", "dirpath_rel", "dirpath_rel_", "dirname", "dirname_", "filename", "filename_", "name", "name_", "ext", "ext_", "cwd", "cwd_", "now", "now_", "time_obj", "time", "time_", "mtime_obj", "mtime", "mtime_", "ctime_obj", "ctime", "ctime_", "bytes", "bytes_", "size", "size_", "nl", "_", "__code_rr", 'var path = require("path");var __require_ = require;var r = function(file){var result = null;try{result = __require_(file);} catch (e){' + 'var dir = /^[\\/]/.test(file) ? "" : cwd;' + "result = __require_(path.resolve(dir, file));};return result;};require = r;return eval(__code_rr);"); - const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); - const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; - if (!_config_rr.contentWasPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); - _file_rel = path.relative(_cwd, _file); - const pathInfo = path.parse(_file); - _dirpath = pathInfo.dir; - _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = (_file.match(re.folderName) || " _")[1]; - _filename = pathInfo.base; - _name = pathInfo.name; - _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - const fileStats = fs.statSync(_file); - _bytes = fileStats.size; - _size = readableSize(_bytes); - _mtime_obj = fileStats.mtime; - _ctime_obj = fileStats.ctime; - _mtime = localTimeString(_mtime_obj); - _ctime = localTimeString(_ctime_obj); - } - } - if (needsByteOrSize && _bytes === -1) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - const glob = (a, b) => fGlob.sync(a, { - unique: true, - caseSensitiveMatch: !_config_rr.voidIgnoreCase, - dot: true, - ...b - }); - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); - } - return function() { - step(arguments); - const __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname3 = _dirname, __filename2 = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; - var capturedGroups = ""; - for (var i = 0;i < arguments.length - 2; i++) { - capturedGroups += "var $" + i + "=" + JSON.stringify(arguments[i]) + "; "; - } - return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname3, __dirname3 + __, __filename2, __filename2 + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); - }; -}; -var localTimeString = function(dateObj = new Date) { - return `${dateObj.getFullYear()}-${("0" + (dateObj.getMonth() + 1)).slice(-2)}-${("0" + dateObj.getDate()).slice(-2)} ${("0" + dateObj.getHours()).slice(-2)}:${("0" + dateObj.getMinutes()).slice(-2)}:${("0" + dateObj.getSeconds()).slice(-2)}.${("00" + dateObj.getMilliseconds()).slice(-3)}`; -}; -var replacePlaceholders = function(str = "", conf2) { - if (!conf2.voidEuro) { - str = str.replace(re.euro, "$"); - } - if (!conf2.voidSection) { - str = str.replace(re.section, "\\"); - } - return str; -}; -var getFilePaths = function(conf2) { - const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf2; - let filesToInclude = fGlob.sync(includeGlob, { - ignore: excludeGlob, - onlyFiles: true, - unique: true, - caseSensitiveMatch: !voidIgnoreCase, - dot: true - }); - if (excludeRe.length) { - excludeRe.map((el) => getRegex(getPattern(el, conf2), conf2)).forEach((re) => { - filesToInclude = filesToInclude.filter((el) => !el.match(re)); - }); - } - return filesToInclude; -}; -var fs = require_lib(); -var path = import.meta.require("path"); -var fGlob = require_out4(); -var globs = require_globs(); -var now = new Date; -var re = { - euro: /\u20AC/g, - section: /\u00A7/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ -}; -var version = "PACKAGE_VERSION"; -var runtime; - -// src/cli.ts -function cli2conf(runtime2, args) { - let pattern, replacement; - let needHelp = 0; - if (args.length < 2) { - if (/-v|--?version$/i.test(args.slice(-1)[0])) { - console.log(version); - runtime2.exit(0); - } else if (/-h|--?help$/i.test(args.slice(-1)[0])) { - needHelp = 1; - } else { - needHelp = 2; - } - } else { - [pattern, replacement] = args.splice(0, 2); - } - const argv = yargs_default(args).strict().usage("RexReplace v" + version + "\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n> rexreplace pattern replacement [fileGlob|option]+").usage(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`).usage(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`).example(`> rexreplace '(f?(o))o(.*)' '$3$1\u20AC2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`).example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`).example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`).version("v", "Print rexreplace version (can be given as only argument)", version).alias("v", "version").boolean("I").describe("I", "Void case insensitive search pattern.").alias("I", "void-ignore-case").boolean("G").describe("G", "Void global search (stop looking after the first match).").alias("G", "void-global").boolean("M").describe("M", "Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.").alias("M", "void-multiline").boolean("s").describe("s", "Have `.` also match newline.").alias("s", "dot-all").boolean("u").describe("u", "Treat pattern as a sequence of unicode code points.").alias("u", "unicode").default("e", "utf8").alias("e", "encoding").describe("e", "Encoding of files/piped data.").alias("E", "engine").describe("E", "What regex engine to use:").choices("E", ["V8"]).default("E", "V8").boolean("L").describe("L", "Literal string search (no regex used when searching)").alias("L", "literal").boolean("\u20AC").describe("\u20AC", "Void having '\u20AC' as alias for '$' in pattern and replacement parameters").alias("\u20AC", "void-euro").boolean("\xA7").describe("\xA7", "Void having '\xA7' as alias for '\\' in pattern and replacement parameters").alias("\xA7", "void-section").boolean("A").alias("A", "void-async").describe("A", `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `).boolean("H").describe("H", "Halt on first error").alias("H", "halt").alias("H", "bail").default("H", false).boolean("q").describe("q", "Only display errors (no other info)").alias("q", "quiet").boolean("Q").describe("Q", "Never display errors or info").alias("Q", "quiet-total").boolean("B").describe("B", "Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.").alias("B", "void-backup").boolean("b").describe("b", "Keep the backup file with the original content.").alias("b", "keep-backup").boolean("o").describe("o", "Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.").alias("o", "output").boolean("m").describe("m", `Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). `).alias("m", "output-match").boolean("T").alias("T", "trim-pipe").describe("T", `Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. `).boolean("R").alias("R", "replacement-pipe").describe("R", `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`).conflicts("R", "g").conflicts("R", "G").boolean("g").describe("g", "Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt").alias("g", "glob-pipe").conflicts("g", "G").boolean("S").describe("S", "Simulate output without changing any files").alias("S", "simulate").string("x").describe("x", "Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.").alias("x", "exclude-re").string("X").describe("X", "Exclude files found with this glob. Can be used multiple times.").alias("X", "exclude-glob").boolean("V").describe("V", "More chatty output").alias("V", "verbose").boolean("d").describe("d", "Print debug info").alias("d", "debug").boolean("j").alias("j", "replacement-js").describe("j", `Treat replacement as javascript source code. +`;function OJ(Z,J,X,Q){return new wJ(Z,J,X,Q)}var Mz=function(Z){return Z.length<3},Lz=function(Z){return Z.length>3};class wJ{constructor(Z,J,X,Q){var Y,U,z;this.yargs=Z,this.usage=J,this.command=X,this.shim=Q,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(z=((Y=this.shim.getEnv("SHELL"))===null||Y===void 0?void 0:Y.includes("zsh"))||((U=this.shim.getEnv("ZSH_NAME"))===null||U===void 0?void 0:U.includes("zsh")))!==null&&z!==void 0?z:!1}defaultCompletion(Z,J,X,Q){const Y=this.command.getCommandHandlers();for(let z=0,$=Z.length;z<$;++z)if(Y[Z[z]]&&Y[Z[z]].builder){const V=Y[Z[z]].builder;if(d6(V)){this.indexAfterLastReset=z+1;const B=this.yargs.getInternalMethods().reset();return V(B,!0),B.argv}}const U=[];this.commandCompletions(U,Z,X),this.optionCompletions(U,Z,J,X),this.choicesFromOptionsCompletions(U,Z,J,X),this.choicesFromPositionalsCompletions(U,Z,J,X),Q(null,U)}commandCompletions(Z,J,X){const Q=this.yargs.getInternalMethods().getContext().commands;if(!X.match(/^-/)&&Q[Q.length-1]!==X&&!this.previousArgHasChoices(J))this.usage.getCommands().forEach((Y)=>{const U=q8(Y[0]).cmd;if(J.indexOf(U)===-1)if(!this.zshShell)Z.push(U);else{const z=Y[1]||"";Z.push(U.replace(/:/g,"\\:")+":"+z)}})}optionCompletions(Z,J,X,Q){if((Q.match(/^-/)||Q===""&&Z.length===0)&&!this.previousArgHasChoices(J)){const Y=this.yargs.getOptions(),U=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(Y.key).forEach((z)=>{const $=!!Y.configuration["boolean-negation"]&&Y.boolean.includes(z);if(!U.includes(z)&&!Y.hiddenOptions.includes(z)&&!this.argsContainKey(J,z,$))this.completeOptionKey(z,Z,Q,$&&!!Y.default[z])})}}choicesFromOptionsCompletions(Z,J,X,Q){if(this.previousArgHasChoices(J)){const Y=this.getPreviousArgChoices(J);if(Y&&Y.length>0)Z.push(...Y.map((U)=>U.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(Z,J,X,Q){if(Q===""&&Z.length>0&&this.previousArgHasChoices(J))return;const Y=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],U=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),z=Y[X._.length-U-1];if(!z)return;const $=this.yargs.getOptions().choices[z]||[];for(let V of $)if(V.startsWith(Q))Z.push(V.replace(/:/g,"\\:"))}getPreviousArgChoices(Z){if(Z.length<1)return;let J=Z[Z.length-1],X="";if(!J.startsWith("-")&&Z.length>1)X=J,J=Z[Z.length-2];if(!J.startsWith("-"))return;const Q=J.replace(/^-+/,""),Y=this.yargs.getOptions(),U=[Q,...this.yargs.getAliases()[Q]||[]];let z;for(let $ of U)if(Object.prototype.hasOwnProperty.call(Y.key,$)&&Array.isArray(Y.choices[$])){z=Y.choices[$];break}if(z)return z.filter(($)=>!X||$.startsWith(X))}previousArgHasChoices(Z){const J=this.getPreviousArgChoices(Z);return J!==void 0&&J.length>0}argsContainKey(Z,J,X){const Q=(Y)=>Z.indexOf((/^[^0-9]$/.test(Y)?"-":"--")+Y)!==-1;if(Q(J))return!0;if(X&&Q(`no-${J}`))return!0;if(this.aliases){for(let Y of this.aliases[J])if(Q(Y))return!0}return!1}completeOptionKey(Z,J,X,Q){var Y,U,z,$;let V=Z;if(this.zshShell){const q=this.usage.getDescriptions(),I=(U=(Y=this===null||this===void 0?void 0:this.aliases)===null||Y===void 0?void 0:Y[Z])===null||U===void 0?void 0:U.find((E)=>{const P=q[E];return typeof P==="string"&&P.length>0}),H=I?q[I]:void 0,G=($=(z=q[Z])!==null&&z!==void 0?z:H)!==null&&$!==void 0?$:"";V=`${Z.replace(/:/g,"\\:")}:${G.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}const B=(q)=>/^--/.test(q),W=(q)=>/^[^0-9]$/.test(q),N=!B(X)&&W(Z)?"-":"--";if(J.push(N+V),Q)J.push(N+"no-"+V)}customCompletion(Z,J,X,Q){if(O0(this.customCompletionFunction,null,this.shim),Mz(this.customCompletionFunction)){const Y=this.customCompletionFunction(X,J);if(W0(Y))return Y.then((U)=>{this.shim.process.nextTick(()=>{Q(null,U)})}).catch((U)=>{this.shim.process.nextTick(()=>{Q(U,void 0)})});return Q(null,Y)}else if(Lz(this.customCompletionFunction))return this.customCompletionFunction(X,J,(Y=Q)=>this.defaultCompletion(Z,J,X,Y),(Y)=>{Q(null,Y)});else return this.customCompletionFunction(X,J,(Y)=>{Q(null,Y)})}getCompletion(Z,J){const X=Z.length?Z[Z.length-1]:"",Q=this.yargs.parse(Z,!0),Y=this.customCompletionFunction?(U)=>this.customCompletion(Z,U,X,J):(U)=>this.defaultCompletion(Z,U,X,J);return W0(Q)?Q.then(Y):Y(Q)}generateCompletionScript(Z,J){let X=this.zshShell?PJ:EJ;const Q=this.shim.path.basename(Z);if(Z.match(/\.js$/))Z=`./${Z}`;return X=X.replace(/{{app_name}}/g,Q),X=X.replace(/{{completion_command}}/g,J),X.replace(/{{app_path}}/g,Z)}registerFunction(Z){this.customCompletionFunction=Z}setParsed(Z){this.aliases=Z.aliases}}function RJ(Z,J){if(Z.length===0)return J.length;if(J.length===0)return Z.length;const X=[];let Q;for(Q=0;Q<=J.length;Q++)X[Q]=[Q];let Y;for(Y=0;Y<=Z.length;Y++)X[0][Y]=Y;for(Q=1;Q<=J.length;Q++)for(Y=1;Y<=Z.length;Y++)if(J.charAt(Q-1)===Z.charAt(Y-1))X[Q][Y]=X[Q-1][Y-1];else if(Q>1&&Y>1&&J.charAt(Q-2)===Z.charAt(Y-1)&&J.charAt(Q-1)===Z.charAt(Y-2))X[Q][Y]=X[Q-2][Y-2]+1;else X[Q][Y]=Math.min(X[Q-1][Y-1]+1,Math.min(X[Q][Y-1]+1,X[Q-1][Y]+1));return X[J.length][Z.length]}function AJ(Z,J,X){const Q=X.y18n.__,Y=X.y18n.__n,U={};U.nonOptionCount=function W(N){const q=Z.getDemandedCommands(),H=N._.length+(N["--"]?N["--"].length:0)-Z.getInternalMethods().getContext().commands.length;if(q._&&(Hq._.max)){if(Hq._.max)if(q._.maxMsg!==void 0)J.fail(q._.maxMsg?q._.maxMsg.replace(/\$0/g,H.toString()).replace(/\$1/,q._.max.toString()):null);else J.fail(Y("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",H,H.toString(),q._.max.toString()))}},U.positionalCount=function W(N,q){if(q{if(!CJ.includes(b)&&!Object.prototype.hasOwnProperty.call(I,b)&&!Object.prototype.hasOwnProperty.call(Z.getInternalMethods().getParseContext(),b)&&!U.isValidAndSomeAliasIsNotNew(b,q))S.push(b)}),G&&(k.commands.length>0||P.length>0||H))N._.slice(k.commands.length).forEach((b)=>{if(!P.includes(""+b))S.push(""+b)});if(G){const l=((E=Z.getDemandedCommands()._)===null||E===void 0?void 0:E.max)||0,J0=k.commands.length+l;if(J0{if(d=String(d),!k.commands.includes(d)&&!S.includes(d))S.push(d)})}if(S.length)J.fail(Y("Unknown argument: %s","Unknown arguments: %s",S.length,S.map((b)=>b.trim()?b:`"${b}"`).join(", ")))},U.unknownCommands=function W(N){const q=Z.getInternalMethods().getCommandInstance().getCommands(),I=[],H=Z.getInternalMethods().getContext();if(H.commands.length>0||q.length>0)N._.slice(H.commands.length).forEach((G)=>{if(!q.includes(""+G))I.push(""+G)});if(I.length>0)return J.fail(Y("Unknown command: %s","Unknown commands: %s",I.length,I.join(", "))),!0;else return!1},U.isValidAndSomeAliasIsNotNew=function W(N,q){if(!Object.prototype.hasOwnProperty.call(q,N))return!1;const I=Z.parsed.newAliases;return[N,...q[N]].some((H)=>!Object.prototype.hasOwnProperty.call(I,H)||!I[N])},U.limitedChoices=function W(N){const q=Z.getOptions(),I={};if(!Object.keys(q.choices).length)return;Object.keys(N).forEach((E)=>{if(CJ.indexOf(E)===-1&&Object.prototype.hasOwnProperty.call(q.choices,E))[].concat(N[E]).forEach((P)=>{if(q.choices[E].indexOf(P)===-1&&P!==void 0)I[E]=(I[E]||[]).concat(P)})});const H=Object.keys(I);if(!H.length)return;let G=Q("Invalid values:");H.forEach((E)=>{G+=`\n ${Q("Argument: %s, Given: %s, Choices: %s",E,J.stringifiedValues(I[E]),J.stringifiedValues(q.choices[E]))}`}),J.fail(G)};let z={};U.implies=function W(N,q){if(c(" [array|number|string]",[N,q],arguments.length),typeof N==="object")Object.keys(N).forEach((I)=>{U.implies(I,N[I])});else{if(Z.global(N),!z[N])z[N]=[];if(Array.isArray(q))q.forEach((I)=>U.implies(N,I));else O0(q,void 0,X),z[N].push(q)}},U.getImplied=function W(){return z};function $(W,N){const q=Number(N);if(N=isNaN(q)?N:q,typeof N==="number")N=W._.length>=N;else if(N.match(/^--no-.+/))N=N.match(/^--no-(.+)/)[1],N=!Object.prototype.hasOwnProperty.call(W,N);else N=Object.prototype.hasOwnProperty.call(W,N);return N}U.implications=function W(N){const q=[];if(Object.keys(z).forEach((I)=>{const H=I;(z[I]||[]).forEach((G)=>{let E=H;const P=G;if(E=$(N,E),G=$(N,G),E&&!G)q.push(` ${H} -> ${P}`)})}),q.length){let I=`${Q("Implications failed:")}\n`;q.forEach((H)=>{I+=H}),J.fail(I)}};let V={};U.conflicts=function W(N,q){if(c(" [array|string]",[N,q],arguments.length),typeof N==="object")Object.keys(N).forEach((I)=>{U.conflicts(I,N[I])});else{if(Z.global(N),!V[N])V[N]=[];if(Array.isArray(q))q.forEach((I)=>U.conflicts(N,I));else V[N].push(q)}},U.getConflicting=()=>V,U.conflicting=function W(N){if(Object.keys(N).forEach((q)=>{if(V[q])V[q].forEach((I)=>{if(I&&N[q]!==void 0&&N[I]!==void 0)J.fail(Q("Arguments %s and %s are mutually exclusive",q,I))})}),Z.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(V).forEach((q)=>{V[q].forEach((I)=>{if(I&&N[X.Parser.camelCase(q)]!==void 0&&N[X.Parser.camelCase(I)]!==void 0)J.fail(Q("Arguments %s and %s are mutually exclusive",q,I))})})},U.recommendCommands=function W(N,q){q=q.sort((E,P)=>P.length-E.length);let H=null,G=Infinity;for(let E=0,P;(P=q[E])!==void 0;E++){const S=RJ(N,P);if(S<=3&&S!N[q]),V=K8(V,(q)=>!N[q]),U};const B=[];return U.freeze=function W(){B.push({implied:z,conflicting:V})},U.unfreeze=function W(){const N=B.pop();O0(N,void 0,X),{implied:z,conflicting:V}=N},U}var CJ=["$0","--","_"];function l6(Z,J,X,Q){L6=Q;let Y={};if(Object.prototype.hasOwnProperty.call(Z,"extends")){if(typeof Z.extends!=="string")return Y;const U=/\.json|\..*rc$/.test(Z.extends);let z=null;if(!U)try{z=require.resolve(Z.extends)}catch($){return Z}else z=jz(J,Z.extends);Fz(z),r5.push(z),Y=U?JSON.parse(L6.readFileSync(z,"utf8")):import.meta.require(Z.extends),delete Z.extends,Y=l6(Y,L6.path.dirname(z),X,L6)}return r5=[],X?_J(Y,Z):Object.assign({},Y,Z)}var Fz=function(Z){if(r5.indexOf(Z)>-1)throw new B0(`Circular extended configurations: '${Z}'.`)},jz=function(Z,J){return L6.path.resolve(Z,J)},_J=function(Z,J){const X={};function Q(Y){return Y&&typeof Y==="object"&&!Array.isArray(Y)}Object.assign(X,Z);for(let Y of Object.keys(J))if(Q(J[Y])&&Q(X[Y]))X[Y]=_J(Z[Y],J[Y]);else X[Y]=J[Y];return X},r5=[],L6;function rJ(Z){return(J=[],X=Z.process.cwd(),Q)=>{const Y=new sJ(J,X,Q,Z);return Object.defineProperty(Y,"argv",{get:()=>{return Y.parse()},enumerable:!0}),Y.help(),Y.version(),Y}}function jJ(Z){return!!Z&&typeof Z.getInternalMethods==="function"}var i=function(Z,J,X,Q,Y){if(Q==="m")throw new TypeError("Private method is not writable");if(Q==="a"&&!Y)throw new TypeError("Private accessor was defined without a setter");if(typeof J==="function"?Z!==J||!Y:!J.has(Z))throw new TypeError("Cannot write private member to an object whose class did not declare it");return Q==="a"?Y.call(Z,X):Y?Y.value=X:J.set(Z,X),X},K=function(Z,J,X,Q){if(X==="a"&&!Q)throw new TypeError("Private accessor was defined without a getter");if(typeof J==="function"?Z!==J||!Q:!J.has(Z))throw new TypeError("Cannot read private member from an object whose class did not declare it");return X==="m"?Q:X==="a"?Q.call(Z):Q?Q.value:J.get(Z)},H0,_8,F6,c0,k0,p6,G8,S8,n6,l0,i6,p0,Q8,y0,n0,o6,X6,j0,r,a6,r6,u0,x8,Q6,v8,H8,s6,Z0,h8,b8,k8,Q0,t6,Y8,G0,SJ=Symbol("copyDoubleDash"),xJ=Symbol("copyDoubleDash"),s5=Symbol("deleteFromParserHintObject"),vJ=Symbol("emitWarning"),hJ=Symbol("freeze"),bJ=Symbol("getDollarZero"),y8=Symbol("getParserConfiguration"),kJ=Symbol("getUsageConfiguration"),t5=Symbol("guessLocale"),yJ=Symbol("guessVersion"),uJ=Symbol("parsePositionalNumbers"),e5=Symbol("pkgUp"),I8=Symbol("populateParserHintArray"),Y6=Symbol("populateParserHintSingleValueDictionary"),Z7=Symbol("populateParserHintArrayDictionary"),J7=Symbol("populateParserHintDictionary"),X7=Symbol("sanitizeKey"),Q7=Symbol("setKey"),Y7=Symbol("unfreeze"),fJ=Symbol("validateAsync"),mJ=Symbol("getCommandInstance"),gJ=Symbol("getContext"),dJ=Symbol("getHasOutput"),cJ=Symbol("getLoggerInstance"),lJ=Symbol("getParseContext"),pJ=Symbol("getUsageInstance"),nJ=Symbol("getValidationInstance"),e6=Symbol("hasParseCallback"),iJ=Symbol("isGlobalContext"),u8=Symbol("postProcess"),oJ=Symbol("rebase"),U7=Symbol("reset"),j6=Symbol("runYargsParserAndExecuteCommands"),z7=Symbol("runValidation"),aJ=Symbol("setHasOutput"),f8=Symbol("kTrackManuallySetKeys");class sJ{constructor(Z=[],J,X,Q){this.customScriptName=!1,this.parsed=!1,H0.set(this,void 0),_8.set(this,void 0),F6.set(this,{commands:[],fullCommands:[]}),c0.set(this,null),k0.set(this,null),p6.set(this,"show-hidden"),G8.set(this,null),S8.set(this,!0),n6.set(this,{}),l0.set(this,!0),i6.set(this,[]),p0.set(this,void 0),Q8.set(this,{}),y0.set(this,!1),n0.set(this,null),o6.set(this,!0),X6.set(this,void 0),j0.set(this,""),r.set(this,void 0),a6.set(this,void 0),r6.set(this,{}),u0.set(this,null),x8.set(this,null),Q6.set(this,{}),v8.set(this,{}),H8.set(this,void 0),s6.set(this,!1),Z0.set(this,void 0),h8.set(this,!1),b8.set(this,!1),k8.set(this,!1),Q0.set(this,void 0),t6.set(this,{}),Y8.set(this,null),G0.set(this,void 0),i(this,Z0,Q,"f"),i(this,H8,Z,"f"),i(this,_8,J,"f"),i(this,a6,X,"f"),i(this,p0,new i5(this),"f"),this.$0=this[bJ](),this[U7](),i(this,H0,K(this,H0,"f"),"f"),i(this,Q0,K(this,Q0,"f"),"f"),i(this,G0,K(this,G0,"f"),"f"),i(this,r,K(this,r,"f"),"f"),K(this,r,"f").showHiddenOpt=K(this,p6,"f"),i(this,X6,this[xJ](),"f")}addHelpOpt(Z,J){if(c("[string|boolean] [string]",[Z,J],arguments.length),K(this,n0,"f"))this[s5](K(this,n0,"f")),i(this,n0,null,"f");if(Z===!1&&J===void 0)return this;return i(this,n0,typeof Z==="string"?Z:"help","f"),this.boolean(K(this,n0,"f")),this.describe(K(this,n0,"f"),J||K(this,Q0,"f").deferY18nLookup("Show help")),this}help(Z,J){return this.addHelpOpt(Z,J)}addShowHiddenOpt(Z,J){if(c("[string|boolean] [string]",[Z,J],arguments.length),Z===!1&&J===void 0)return this;const X=typeof Z==="string"?Z:K(this,p6,"f");return this.boolean(X),this.describe(X,J||K(this,Q0,"f").deferY18nLookup("Show hidden options")),K(this,r,"f").showHiddenOpt=X,this}showHidden(Z,J){return this.addShowHiddenOpt(Z,J)}alias(Z,J){return c(" [string|array]",[Z,J],arguments.length),this[Z7](this.alias.bind(this),"alias",Z,J),this}array(Z){return c("",[Z],arguments.length),this[I8]("array",Z),this[f8](Z),this}boolean(Z){return c("",[Z],arguments.length),this[I8]("boolean",Z),this[f8](Z),this}check(Z,J){return c(" [boolean]",[Z,J],arguments.length),this.middleware((X,Q)=>{return A8(()=>{return Z(X,Q.getOptions())},(Y)=>{if(!Y)K(this,Q0,"f").fail(K(this,Z0,"f").y18n.__("Argument check failed: %s",Z.toString()));else if(typeof Y==="string"||Y instanceof Error)K(this,Q0,"f").fail(Y.toString(),Y);return X},(Y)=>{return K(this,Q0,"f").fail(Y.message?Y.message:Y.toString(),Y),X})},!1,J),this}choices(Z,J){return c(" [string|array]",[Z,J],arguments.length),this[Z7](this.choices.bind(this),"choices",Z,J),this}coerce(Z,J){if(c(" [function]",[Z,J],arguments.length),Array.isArray(Z)){if(!J)throw new B0("coerce callback must be provided");for(let X of Z)this.coerce(X,J);return this}else if(typeof Z==="object"){for(let X of Object.keys(Z))this.coerce(X,Z[X]);return this}if(!J)throw new B0("coerce callback must be provided");return K(this,r,"f").key[Z]=!0,K(this,p0,"f").addCoerceMiddleware((X,Q)=>{let Y;if(!Object.prototype.hasOwnProperty.call(X,Z))return X;return A8(()=>{return Y=Q.getAliases(),J(X[Z])},(z)=>{X[Z]=z;const $=Q.getInternalMethods().getParserConfiguration()["strip-aliased"];if(Y[Z]&&$!==!0)for(let V of Y[Z])X[V]=z;return X},(z)=>{throw new B0(z.message)})},Z),this}conflicts(Z,J){return c(" [string|array]",[Z,J],arguments.length),K(this,G0,"f").conflicts(Z,J),this}config(Z="config",J,X){if(c("[object|string] [string|function] [function]",[Z,J,X],arguments.length),typeof Z==="object"&&!Array.isArray(Z))return Z=l6(Z,K(this,_8,"f"),this[y8]()["deep-merge-config"]||!1,K(this,Z0,"f")),K(this,r,"f").configObjects=(K(this,r,"f").configObjects||[]).concat(Z),this;if(typeof J==="function")X=J,J=void 0;return this.describe(Z,J||K(this,Q0,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(Z)?Z:[Z]).forEach((Q)=>{K(this,r,"f").config[Q]=X||!0}),this}completion(Z,J,X){if(c("[string] [string|boolean|function] [function]",[Z,J,X],arguments.length),typeof J==="function")X=J,J=void 0;if(i(this,k0,Z||K(this,k0,"f")||"completion","f"),!J&&J!==!1)J="generate completion script";if(this.command(K(this,k0,"f"),J),X)K(this,c0,"f").registerFunction(X);return this}command(Z,J,X,Q,Y,U){return c(" [string|boolean] [function|object] [function] [array] [boolean|string]",[Z,J,X,Q,Y,U],arguments.length),K(this,H0,"f").addHandler(Z,J,X,Q,Y,U),this}commands(Z,J,X,Q,Y,U){return this.command(Z,J,X,Q,Y,U)}commandDir(Z,J){c(" [object]",[Z,J],arguments.length);const X=K(this,a6,"f")||K(this,Z0,"f").require;return K(this,H0,"f").addDirectory(Z,X,K(this,Z0,"f").getCallerFile(),J),this}count(Z){return c("",[Z],arguments.length),this[I8]("count",Z),this[f8](Z),this}default(Z,J,X){if(c(" [*] [string]",[Z,J,X],arguments.length),X)n5(Z,K(this,Z0,"f")),K(this,r,"f").defaultDescription[Z]=X;if(typeof J==="function"){if(n5(Z,K(this,Z0,"f")),!K(this,r,"f").defaultDescription[Z])K(this,r,"f").defaultDescription[Z]=K(this,Q0,"f").functionDescription(J);J=J.call()}return this[Y6](this.default.bind(this),"default",Z,J),this}defaults(Z,J,X){return this.default(Z,J,X)}demandCommand(Z=1,J,X,Q){if(c("[number] [number|string] [string|null|undefined] [string|null|undefined]",[Z,J,X,Q],arguments.length),typeof J!=="number")X=J,J=Infinity;return this.global("_",!1),K(this,r,"f").demandedCommands._={min:Z,max:J,minMsg:X,maxMsg:Q},this}demand(Z,J,X){if(Array.isArray(J))J.forEach((Q)=>{O0(X,!0,K(this,Z0,"f")),this.demandOption(Q,X)}),J=Infinity;else if(typeof J!=="number")X=J,J=Infinity;if(typeof Z==="number")O0(X,!0,K(this,Z0,"f")),this.demandCommand(Z,J,X,X);else if(Array.isArray(Z))Z.forEach((Q)=>{O0(X,!0,K(this,Z0,"f")),this.demandOption(Q,X)});else if(typeof X==="string")this.demandOption(Z,X);else if(X===!0||typeof X==="undefined")this.demandOption(Z);return this}demandOption(Z,J){return c(" [string]",[Z,J],arguments.length),this[Y6](this.demandOption.bind(this),"demandedOptions",Z,J),this}deprecateOption(Z,J){return c(" [string|boolean]",[Z,J],arguments.length),K(this,r,"f").deprecatedOptions[Z]=J,this}describe(Z,J){return c(" [string]",[Z,J],arguments.length),this[Q7](Z,!0),K(this,Q0,"f").describe(Z,J),this}detectLocale(Z){return c("",[Z],arguments.length),i(this,S8,Z,"f"),this}env(Z){if(c("[string|boolean]",[Z],arguments.length),Z===!1)delete K(this,r,"f").envPrefix;else K(this,r,"f").envPrefix=Z||"";return this}epilogue(Z){return c("",[Z],arguments.length),K(this,Q0,"f").epilog(Z),this}epilog(Z){return this.epilogue(Z)}example(Z,J){if(c(" [string]",[Z,J],arguments.length),Array.isArray(Z))Z.forEach((X)=>this.example(...X));else K(this,Q0,"f").example(Z,J);return this}exit(Z,J){if(i(this,y0,!0,"f"),i(this,G8,J,"f"),K(this,l0,"f"))K(this,Z0,"f").process.exit(Z)}exitProcess(Z=!0){return c("[boolean]",[Z],arguments.length),i(this,l0,Z,"f"),this}fail(Z){if(c("",[Z],arguments.length),typeof Z==="boolean"&&Z!==!1)throw new B0("Invalid first argument. Expected function or boolean 'false'");return K(this,Q0,"f").failFn(Z),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(Z,J){if(c(" [function]",[Z,J],arguments.length),!J)return new Promise((X,Q)=>{K(this,c0,"f").getCompletion(Z,(Y,U)=>{if(Y)Q(Y);else X(U)})});else return K(this,c0,"f").getCompletion(Z,J)}getDemandedOptions(){return c([],0),K(this,r,"f").demandedOptions}getDemandedCommands(){return c([],0),K(this,r,"f").demandedCommands}getDeprecatedOptions(){return c([],0),K(this,r,"f").deprecatedOptions}getDetectLocale(){return K(this,S8,"f")}getExitProcess(){return K(this,l0,"f")}getGroups(){return Object.assign({},K(this,Q8,"f"),K(this,v8,"f"))}getHelp(){if(i(this,y0,!0,"f"),!K(this,Q0,"f").hasCachedHelpMessage()){if(!this.parsed){const J=this[j6](K(this,H8,"f"),void 0,void 0,0,!0);if(W0(J))return J.then(()=>{return K(this,Q0,"f").help()})}const Z=K(this,H0,"f").runDefaultBuilderOn(this);if(W0(Z))return Z.then(()=>{return K(this,Q0,"f").help()})}return Promise.resolve(K(this,Q0,"f").help())}getOptions(){return K(this,r,"f")}getStrict(){return K(this,h8,"f")}getStrictCommands(){return K(this,b8,"f")}getStrictOptions(){return K(this,k8,"f")}global(Z,J){if(c(" [boolean]",[Z,J],arguments.length),Z=[].concat(Z),J!==!1)K(this,r,"f").local=K(this,r,"f").local.filter((X)=>Z.indexOf(X)===-1);else Z.forEach((X)=>{if(!K(this,r,"f").local.includes(X))K(this,r,"f").local.push(X)});return this}group(Z,J){c(" ",[Z,J],arguments.length);const X=K(this,v8,"f")[J]||K(this,Q8,"f")[J];if(K(this,v8,"f")[J])delete K(this,v8,"f")[J];const Q={};return K(this,Q8,"f")[J]=(X||[]).concat(Z).filter((Y)=>{if(Q[Y])return!1;return Q[Y]=!0}),this}hide(Z){return c("",[Z],arguments.length),K(this,r,"f").hiddenOptions.push(Z),this}implies(Z,J){return c(" [number|string|array]",[Z,J],arguments.length),K(this,G0,"f").implies(Z,J),this}locale(Z){if(c("[string]",[Z],arguments.length),Z===void 0)return this[t5](),K(this,Z0,"f").y18n.getLocale();return i(this,S8,!1,"f"),K(this,Z0,"f").y18n.setLocale(Z),this}middleware(Z,J,X){return K(this,p0,"f").addMiddleware(Z,!!J,X)}nargs(Z,J){return c(" [number]",[Z,J],arguments.length),this[Y6](this.nargs.bind(this),"narg",Z,J),this}normalize(Z){return c("",[Z],arguments.length),this[I8]("normalize",Z),this}number(Z){return c("",[Z],arguments.length),this[I8]("number",Z),this[f8](Z),this}option(Z,J){if(c(" [object]",[Z,J],arguments.length),typeof Z==="object")Object.keys(Z).forEach((X)=>{this.options(X,Z[X])});else{if(typeof J!=="object")J={};if(this[f8](Z),K(this,Y8,"f")&&(Z==="version"||(J===null||J===void 0?void 0:J.alias)==="version"))this[vJ](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join("\n"),void 0,"versionWarning");if(K(this,r,"f").key[Z]=!0,J.alias)this.alias(Z,J.alias);const X=J.deprecate||J.deprecated;if(X)this.deprecateOption(Z,X);const Q=J.demand||J.required||J.require;if(Q)this.demand(Z,Q);if(J.demandOption)this.demandOption(Z,typeof J.demandOption==="string"?J.demandOption:void 0);if(J.conflicts)this.conflicts(Z,J.conflicts);if("default"in J)this.default(Z,J.default);if(J.implies!==void 0)this.implies(Z,J.implies);if(J.nargs!==void 0)this.nargs(Z,J.nargs);if(J.config)this.config(Z,J.configParser);if(J.normalize)this.normalize(Z);if(J.choices)this.choices(Z,J.choices);if(J.coerce)this.coerce(Z,J.coerce);if(J.group)this.group(Z,J.group);if(J.boolean||J.type==="boolean"){if(this.boolean(Z),J.alias)this.boolean(J.alias)}if(J.array||J.type==="array"){if(this.array(Z),J.alias)this.array(J.alias)}if(J.number||J.type==="number"){if(this.number(Z),J.alias)this.number(J.alias)}if(J.string||J.type==="string"){if(this.string(Z),J.alias)this.string(J.alias)}if(J.count||J.type==="count")this.count(Z);if(typeof J.global==="boolean")this.global(Z,J.global);if(J.defaultDescription)K(this,r,"f").defaultDescription[Z]=J.defaultDescription;if(J.skipValidation)this.skipValidation(Z);const Y=J.describe||J.description||J.desc,U=K(this,Q0,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(U,Z)||typeof Y==="string")this.describe(Z,Y);if(J.hidden)this.hide(Z);if(J.requiresArg)this.requiresArg(Z)}return this}options(Z,J){return this.option(Z,J)}parse(Z,J,X){if(c("[string|array] [function|boolean|object] [function]",[Z,J,X],arguments.length),this[hJ](),typeof Z==="undefined")Z=K(this,H8,"f");if(typeof J==="object")i(this,x8,J,"f"),J=X;if(typeof J==="function")i(this,u0,J,"f"),J=!1;if(!J)i(this,H8,Z,"f");if(K(this,u0,"f"))i(this,l0,!1,"f");const Q=this[j6](Z,!!J),Y=this.parsed;if(K(this,c0,"f").setParsed(this.parsed),W0(Q))return Q.then((U)=>{if(K(this,u0,"f"))K(this,u0,"f").call(this,K(this,G8,"f"),U,K(this,j0,"f"));return U}).catch((U)=>{if(K(this,u0,"f"))K(this,u0,"f")(U,this.parsed.argv,K(this,j0,"f"));throw U}).finally(()=>{this[Y7](),this.parsed=Y});else{if(K(this,u0,"f"))K(this,u0,"f").call(this,K(this,G8,"f"),Q,K(this,j0,"f"));this[Y7](),this.parsed=Y}return Q}parseAsync(Z,J,X){const Q=this.parse(Z,J,X);return!W0(Q)?Promise.resolve(Q):Q}parseSync(Z,J,X){const Q=this.parse(Z,J,X);if(W0(Q))throw new B0(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return Q}parserConfiguration(Z){return c("",[Z],arguments.length),i(this,r6,Z,"f"),this}pkgConf(Z,J){c(" [string]",[Z,J],arguments.length);let X=null;const Q=this[e5](J||K(this,_8,"f"));if(Q[Z]&&typeof Q[Z]==="object")X=l6(Q[Z],J||K(this,_8,"f"),this[y8]()["deep-merge-config"]||!1,K(this,Z0,"f")),K(this,r,"f").configObjects=(K(this,r,"f").configObjects||[]).concat(X);return this}positional(Z,J){c(" ",[Z,J],arguments.length);const X=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];J=K8(J,(U,z)=>{if(U==="type"&&!["string","number","boolean"].includes(z))return!1;return X.includes(U)});const Q=K(this,F6,"f").fullCommands[K(this,F6,"f").fullCommands.length-1],Y=Q?K(this,H0,"f").cmdToParseOptions(Q):{array:[],alias:{},default:{},demand:{}};return Z6(Y).forEach((U)=>{const z=Y[U];if(Array.isArray(z)){if(z.indexOf(Z)!==-1)J[U]=!0}else if(z[Z]&&!(U in J))J[U]=z[Z]}),this.group(Z,K(this,Q0,"f").getPositionalGroupName()),this.option(Z,J)}recommendCommands(Z=!0){return c("[boolean]",[Z],arguments.length),i(this,s6,Z,"f"),this}required(Z,J,X){return this.demand(Z,J,X)}require(Z,J,X){return this.demand(Z,J,X)}requiresArg(Z){if(c(" [number]",[Z],arguments.length),typeof Z==="string"&&K(this,r,"f").narg[Z])return this;else this[Y6](this.requiresArg.bind(this),"narg",Z,NaN);return this}showCompletionScript(Z,J){return c("[string] [string]",[Z,J],arguments.length),Z=Z||this.$0,K(this,X6,"f").log(K(this,c0,"f").generateCompletionScript(Z,J||K(this,k0,"f")||"completion")),this}showHelp(Z){if(c("[string|function]",[Z],arguments.length),i(this,y0,!0,"f"),!K(this,Q0,"f").hasCachedHelpMessage()){if(!this.parsed){const X=this[j6](K(this,H8,"f"),void 0,void 0,0,!0);if(W0(X))return X.then(()=>{K(this,Q0,"f").showHelp(Z)}),this}const J=K(this,H0,"f").runDefaultBuilderOn(this);if(W0(J))return J.then(()=>{K(this,Q0,"f").showHelp(Z)}),this}return K(this,Q0,"f").showHelp(Z),this}scriptName(Z){return this.customScriptName=!0,this.$0=Z,this}showHelpOnFail(Z,J){return c("[boolean|string] [string]",[Z,J],arguments.length),K(this,Q0,"f").showHelpOnFail(Z,J),this}showVersion(Z){return c("[string|function]",[Z],arguments.length),K(this,Q0,"f").showVersion(Z),this}skipValidation(Z){return c("",[Z],arguments.length),this[I8]("skipValidation",Z),this}strict(Z){return c("[boolean]",[Z],arguments.length),i(this,h8,Z!==!1,"f"),this}strictCommands(Z){return c("[boolean]",[Z],arguments.length),i(this,b8,Z!==!1,"f"),this}strictOptions(Z){return c("[boolean]",[Z],arguments.length),i(this,k8,Z!==!1,"f"),this}string(Z){return c("",[Z],arguments.length),this[I8]("string",Z),this[f8](Z),this}terminalWidth(){return c([],0),K(this,Z0,"f").process.stdColumns}updateLocale(Z){return this.updateStrings(Z)}updateStrings(Z){return c("",[Z],arguments.length),i(this,S8,!1,"f"),K(this,Z0,"f").y18n.updateLocale(Z),this}usage(Z,J,X,Q){if(c(" [string|boolean] [function|object] [function]",[Z,J,X,Q],arguments.length),J!==void 0)if(O0(Z,null,K(this,Z0,"f")),(Z||"").match(/^\$0( |$)/))return this.command(Z,J,X,Q);else throw new B0(".usage() description must start with $0 if being used as alias for .command()");else return K(this,Q0,"f").usage(Z),this}usageConfiguration(Z){return c("",[Z],arguments.length),i(this,t6,Z,"f"),this}version(Z,J,X){if(c("[boolean|string] [string] [string]",[Z,J,X],arguments.length),K(this,Y8,"f"))this[s5](K(this,Y8,"f")),K(this,Q0,"f").version(void 0),i(this,Y8,null,"f");if(arguments.length===0)X=this[yJ](),Z="version";else if(arguments.length===1){if(Z===!1)return this;X=Z,Z="version"}else if(arguments.length===2)X=J,J=void 0;return i(this,Y8,typeof Z==="string"?Z:"version","f"),J=J||K(this,Q0,"f").deferY18nLookup("Show version number"),K(this,Q0,"f").version(X||void 0),this.boolean(K(this,Y8,"f")),this.describe(K(this,Y8,"f"),J),this}wrap(Z){return c("",[Z],arguments.length),K(this,Q0,"f").wrap(Z),this}[(H0=new WeakMap,_8=new WeakMap,F6=new WeakMap,c0=new WeakMap,k0=new WeakMap,p6=new WeakMap,G8=new WeakMap,S8=new WeakMap,n6=new WeakMap,l0=new WeakMap,i6=new WeakMap,p0=new WeakMap,Q8=new WeakMap,y0=new WeakMap,n0=new WeakMap,o6=new WeakMap,X6=new WeakMap,j0=new WeakMap,r=new WeakMap,a6=new WeakMap,r6=new WeakMap,u0=new WeakMap,x8=new WeakMap,Q6=new WeakMap,v8=new WeakMap,H8=new WeakMap,s6=new WeakMap,Z0=new WeakMap,h8=new WeakMap,b8=new WeakMap,k8=new WeakMap,Q0=new WeakMap,t6=new WeakMap,Y8=new WeakMap,G0=new WeakMap,SJ)](Z){if(!Z._||!Z["--"])return Z;Z._.push.apply(Z._,Z["--"]);try{delete Z["--"]}catch(J){}return Z}[xJ](){return{log:(...Z)=>{if(!this[e6]())console.log(...Z);if(i(this,y0,!0,"f"),K(this,j0,"f").length)i(this,j0,K(this,j0,"f")+"\n","f");i(this,j0,K(this,j0,"f")+Z.join(" "),"f")},error:(...Z)=>{if(!this[e6]())console.error(...Z);if(i(this,y0,!0,"f"),K(this,j0,"f").length)i(this,j0,K(this,j0,"f")+"\n","f");i(this,j0,K(this,j0,"f")+Z.join(" "),"f")}}}[s5](Z){Z6(K(this,r,"f")).forEach((J)=>{if(((Q)=>Q==="configObjects")(J))return;const X=K(this,r,"f")[J];if(Array.isArray(X)){if(X.includes(Z))X.splice(X.indexOf(Z),1)}else if(typeof X==="object")delete X[Z]}),delete K(this,Q0,"f").getDescriptions()[Z]}[vJ](Z,J,X){if(!K(this,n6,"f")[X])K(this,Z0,"f").process.emitWarning(Z,J),K(this,n6,"f")[X]=!0}[hJ](){K(this,i6,"f").push({options:K(this,r,"f"),configObjects:K(this,r,"f").configObjects.slice(0),exitProcess:K(this,l0,"f"),groups:K(this,Q8,"f"),strict:K(this,h8,"f"),strictCommands:K(this,b8,"f"),strictOptions:K(this,k8,"f"),completionCommand:K(this,k0,"f"),output:K(this,j0,"f"),exitError:K(this,G8,"f"),hasOutput:K(this,y0,"f"),parsed:this.parsed,parseFn:K(this,u0,"f"),parseContext:K(this,x8,"f")}),K(this,Q0,"f").freeze(),K(this,G0,"f").freeze(),K(this,H0,"f").freeze(),K(this,p0,"f").freeze()}[bJ](){let Z="",J;if(/\b(node|iojs|electron)(\.exe)?$/.test(K(this,Z0,"f").process.argv()[0]))J=K(this,Z0,"f").process.argv().slice(1,2);else J=K(this,Z0,"f").process.argv().slice(0,1);if(Z=J.map((X)=>{const Q=this[oJ](K(this,_8,"f"),X);return X.match(/^(\/|([a-zA-Z]:)?\\)/)&&Q.length{if(z.includes("package.json"))return"package.json";else return});O0(Y,void 0,K(this,Z0,"f")),X=JSON.parse(K(this,Z0,"f").readFileSync(Y,"utf8"))}catch(Q){}return K(this,Q6,"f")[J]=X||{},K(this,Q6,"f")[J]}[I8](Z,J){J=[].concat(J),J.forEach((X)=>{X=this[X7](X),K(this,r,"f")[Z].push(X)})}[Y6](Z,J,X,Q){this[J7](Z,J,X,Q,(Y,U,z)=>{K(this,r,"f")[Y][U]=z})}[Z7](Z,J,X,Q){this[J7](Z,J,X,Q,(Y,U,z)=>{K(this,r,"f")[Y][U]=(K(this,r,"f")[Y][U]||[]).concat(z)})}[J7](Z,J,X,Q,Y){if(Array.isArray(X))X.forEach((U)=>{Z(U,Q)});else if(((U)=>typeof U==="object")(X))for(let U of Z6(X))Z(U,X[U]);else Y(J,this[X7](X),Q)}[X7](Z){if(Z==="__proto__")return"___proto___";return Z}[Q7](Z,J){return this[Y6](this[Q7].bind(this),"key",Z,J),this}[Y7](){var Z,J,X,Q,Y,U,z,$,V,B,W,N;const q=K(this,i6,"f").pop();O0(q,void 0,K(this,Z0,"f"));let I;Z=this,J=this,X=this,Q=this,Y=this,U=this,z=this,$=this,V=this,B=this,W=this,N=this,{options:{set value(H){i(Z,r,H,"f")}}.value,configObjects:I,exitProcess:{set value(H){i(J,l0,H,"f")}}.value,groups:{set value(H){i(X,Q8,H,"f")}}.value,output:{set value(H){i(Q,j0,H,"f")}}.value,exitError:{set value(H){i(Y,G8,H,"f")}}.value,hasOutput:{set value(H){i(U,y0,H,"f")}}.value,parsed:this.parsed,strict:{set value(H){i(z,h8,H,"f")}}.value,strictCommands:{set value(H){i($,b8,H,"f")}}.value,strictOptions:{set value(H){i(V,k8,H,"f")}}.value,completionCommand:{set value(H){i(B,k0,H,"f")}}.value,parseFn:{set value(H){i(W,u0,H,"f")}}.value,parseContext:{set value(H){i(N,x8,H,"f")}}.value}=q,K(this,r,"f").configObjects=I,K(this,Q0,"f").unfreeze(),K(this,G0,"f").unfreeze(),K(this,H0,"f").unfreeze(),K(this,p0,"f").unfreeze()}[fJ](Z,J){return A8(J,(X)=>{return Z(X),X})}getInternalMethods(){return{getCommandInstance:this[mJ].bind(this),getContext:this[gJ].bind(this),getHasOutput:this[dJ].bind(this),getLoggerInstance:this[cJ].bind(this),getParseContext:this[lJ].bind(this),getParserConfiguration:this[y8].bind(this),getUsageConfiguration:this[kJ].bind(this),getUsageInstance:this[pJ].bind(this),getValidationInstance:this[nJ].bind(this),hasParseCallback:this[e6].bind(this),isGlobalContext:this[iJ].bind(this),postProcess:this[u8].bind(this),reset:this[U7].bind(this),runValidation:this[z7].bind(this),runYargsParserAndExecuteCommands:this[j6].bind(this),setHasOutput:this[aJ].bind(this)}}[mJ](){return K(this,H0,"f")}[gJ](){return K(this,F6,"f")}[dJ](){return K(this,y0,"f")}[cJ](){return K(this,X6,"f")}[lJ](){return K(this,x8,"f")||{}}[pJ](){return K(this,Q0,"f")}[nJ](){return K(this,G0,"f")}[e6](){return!!K(this,u0,"f")}[iJ](){return K(this,o6,"f")}[u8](Z,J,X,Q){if(X)return Z;if(W0(Z))return Z;if(!J)Z=this[SJ](Z);if(this[y8]()["parse-positional-numbers"]||this[y8]()["parse-positional-numbers"]===void 0)Z=this[uJ](Z);if(Q)Z=C8(Z,this,K(this,p0,"f").getMiddleware(),!1);return Z}[U7](Z={}){i(this,r,K(this,r,"f")||{},"f");const J={};J.local=K(this,r,"f").local||[],J.configObjects=K(this,r,"f").configObjects||[];const X={};J.local.forEach((U)=>{X[U]=!0,(Z[U]||[]).forEach((z)=>{X[z]=!0})}),Object.assign(K(this,v8,"f"),Object.keys(K(this,Q8,"f")).reduce((U,z)=>{const $=K(this,Q8,"f")[z].filter((V)=>!(V in X));if($.length>0)U[z]=$;return U},{})),i(this,Q8,{},"f");const Q=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],Y=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(Q.forEach((U)=>{J[U]=(K(this,r,"f")[U]||[]).filter((z)=>!X[z])}),Y.forEach((U)=>{J[U]=K8(K(this,r,"f")[U],(z)=>!X[z])}),J.envPrefix=K(this,r,"f").envPrefix,i(this,r,J,"f"),i(this,Q0,K(this,Q0,"f")?K(this,Q0,"f").reset(X):TJ(this,K(this,Z0,"f")),"f"),i(this,G0,K(this,G0,"f")?K(this,G0,"f").reset(X):AJ(this,K(this,Q0,"f"),K(this,Z0,"f")),"f"),i(this,H0,K(this,H0,"f")?K(this,H0,"f").reset():FJ(K(this,Q0,"f"),K(this,G0,"f"),K(this,p0,"f"),K(this,Z0,"f")),"f"),!K(this,c0,"f"))i(this,c0,OJ(this,K(this,Q0,"f"),K(this,H0,"f"),K(this,Z0,"f")),"f");return K(this,p0,"f").reset(),i(this,k0,null,"f"),i(this,j0,"","f"),i(this,G8,null,"f"),i(this,y0,!1,"f"),this.parsed=!1,this}[oJ](Z,J){return K(this,Z0,"f").path.relative(Z,J)}[j6](Z,J,X,Q=0,Y=!1){let U=!!X||Y;Z=Z||K(this,H8,"f"),K(this,r,"f").__=K(this,Z0,"f").y18n.__,K(this,r,"f").configuration=this[y8]();const z=!!K(this,r,"f").configuration["populate--"],$=Object.assign({},K(this,r,"f").configuration,{"populate--":!0}),V=K(this,Z0,"f").Parser.detailed(Z,Object.assign({},K(this,r,"f"),{configuration:{"parse-positional-numbers":!1,...$}})),B=Object.assign(V.argv,K(this,x8,"f"));let W=void 0;const N=V.aliases;let q=!1,I=!1;if(Object.keys(B).forEach((H)=>{if(H===K(this,n0,"f")&&B[H])q=!0;else if(H===K(this,Y8,"f")&&B[H])I=!0}),B.$0=this.$0,this.parsed=V,Q===0)K(this,Q0,"f").clearCachedHelpMessage();try{if(this[t5](),J)return this[u8](B,z,!!X,!1);if(K(this,n0,"f")){if([K(this,n0,"f")].concat(N[K(this,n0,"f")]||[]).filter((S)=>S.length>1).includes(""+B._[B._.length-1]))B._.pop(),q=!0}i(this,o6,!1,"f");const H=K(this,H0,"f").getCommands(),G=K(this,c0,"f").completionKey in B,E=q||G||Y;if(B._.length){if(H.length){let P;for(let S=Q||0,k;B._[S]!==void 0;S++)if(k=String(B._[S]),H.includes(k)&&k!==K(this,k0,"f")){const b=K(this,H0,"f").runCommand(k,this,V,S+1,Y,q||I||Y);return this[u8](b,z,!!X,!1)}else if(!P&&k!==K(this,k0,"f")){P=k;break}if(!K(this,H0,"f").hasDefaultCommand()&&K(this,s6,"f")&&P&&!E)K(this,G0,"f").recommendCommands(P,H)}if(K(this,k0,"f")&&B._.includes(K(this,k0,"f"))&&!G){if(K(this,l0,"f"))N8(!0);this.showCompletionScript(),this.exit(0)}}if(K(this,H0,"f").hasDefaultCommand()&&!E){const P=K(this,H0,"f").runCommand(null,this,V,0,Y,q||I||Y);return this[u8](P,z,!!X,!1)}if(G){if(K(this,l0,"f"))N8(!0);Z=[].concat(Z);const P=Z.slice(Z.indexOf(`--${K(this,c0,"f").completionKey}`)+1);return K(this,c0,"f").getCompletion(P,(S,k)=>{if(S)throw new B0(S.message);(k||[]).forEach((b)=>{K(this,X6,"f").log(b)}),this.exit(0)}),this[u8](B,!z,!!X,!1)}if(!K(this,y0,"f")){if(q){if(K(this,l0,"f"))N8(!0);U=!0,this.showHelp("log"),this.exit(0)}else if(I){if(K(this,l0,"f"))N8(!0);U=!0,K(this,Q0,"f").showVersion("log"),this.exit(0)}}if(!U&&K(this,r,"f").skipValidation.length>0)U=Object.keys(B).some((P)=>K(this,r,"f").skipValidation.indexOf(P)>=0&&B[P]===!0);if(!U){if(V.error)throw new B0(V.error.message);if(!G){const P=this[z7](N,{},V.error);if(!X)W=C8(B,this,K(this,p0,"f").getMiddleware(),!0);if(W=this[fJ](P,W!==null&&W!==void 0?W:B),W0(W)&&!X)W=W.then(()=>{return C8(B,this,K(this,p0,"f").getMiddleware(),!1)})}}}catch(H){if(H instanceof B0)K(this,Q0,"f").fail(H.message,H);else throw H}return this[u8](W!==null&&W!==void 0?W:B,z,!!X,!0)}[z7](Z,J,X,Q){const Y={...this.getDemandedOptions()};return(U)=>{if(X)throw new B0(X.message);K(this,G0,"f").nonOptionCount(U),K(this,G0,"f").requiredArguments(U,Y);let z=!1;if(K(this,b8,"f"))z=K(this,G0,"f").unknownCommands(U);if(K(this,h8,"f")&&!z)K(this,G0,"f").unknownArguments(U,Z,J,!!Q);else if(K(this,k8,"f"))K(this,G0,"f").unknownArguments(U,Z,{},!1,!1);K(this,G0,"f").limitedChoices(U),K(this,G0,"f").implications(U),K(this,G0,"f").conflicting(U)}}[aJ](){i(this,y0,!0,"f")}[f8](Z){if(typeof Z==="string")K(this,r,"f").key[Z]=!0;else for(let J of Z)K(this,r,"f").key[J]=!0}}var Dz=rJ(NJ),$7=Dz;function d8(...Z){if(i0.debug)console.error(m8.gray(JSON.stringify(Z,null,4)))}function I0(Z){if(i0?.verbose)console.error(m8.gray(Z))}var Tz=function(Z=1,J=""){J&&console.error(+J),process.exit(+Z)},m8={};m8.red=m8.green=m8.gray=(Z)=>Z;var i0=null,tJ=function(Z){i0=Z},g8=function(Z,J=""){if(i0.quiet||i0.quietTotal)return;if(i0.output||i0.outputMatch)return console.error.apply(this,[m8.gray(Z),J].filter(Boolean));console.log.apply(this,[Z,J].filter(Boolean))},Z5=function(Z,J=""){if(i0.verbose)g8(Z,J);else d8([Z,J].filter(Boolean).join(" "))},$8=function(Z,J=""){if(i0.bail)return o0(Z,J);if(!i0.quietTotal)console.error.apply(this,[" \u274C",m8.red(Z),J].filter(Boolean));return!1},o0=function(Z="",J="",X=!1){if(X&&!i0.quietTotal)i0.showHelp();Z&&$8(" \u274C "+Z,J),Tz()};function f6(Z,J={engine:"V8"}){if(FU=Z,tJ(J),I0("Displaying steps for:"),I0(J),J.pattern=jU(J.pattern,J)||"",J.replacement=pG(J.replacement,J)||"",J.replacementJs)J.replacementOri=J.replacement;if(J.regex=DU(J.pattern,J)||"",I0(J),J.files=oG(J),!J.files.length){if(J.contentWasPiped)return dZ("[pipe-data]",J,J.pipeData);return $8(J.files.length+" files found")}Z5(J.files.length+" files found"),I0(J),J.files.filter((X)=>{if(s0.statSync(X).isFile())return!0;return d8("Not a valid file:",X),!1}).forEach((X)=>lG(X,J))}var lG=function(Z,J){if(J.voidAsync){Z5("Open sync: "+Z);var X=FU.fileReadSync(Z,J.encoding);return dZ(Z,J,X)}Z5("Open async: "+Z),s0.readFile(Z,J.encoding,function(Q,Y){if(Q)return $8(Q);return dZ(Z,J,Y)})},dZ=function(Z,J,X){if(d8("Work on content from: "+Z),J.replacementJs)J.replacement=iG(Z,J,X);const Q=X.replace(J.regex,J.replacement);if(J.outputMatch)return;if(J.output)return d8("Output result from: "+Z),process.stdout.write(Q);if(Q===X){d8("Nothing changed in: "+Z);return}if(X="",J.simulate)return g8(Z);if(d8("Write updated content to: "+Z),J.voidBackup)return s0.writeFile(Z,Q,J.encoding,function($){if($)return $8($);g8(Z)});const Y=W8.normalize(W8.join(process.cwd(),Z)),U=(new Date()).toISOString().replace(O8.colon,"_").replace("Z",""),z=Y+"."+U+".backup";if(J.voidAsync){try{if(s0.renameSync(Y,z),s0.writeFileSync(Y,Q,J.encoding),!J.keepBackup)s0.unlinkSync(z)}catch($){return $8($)}return g8(Z)}s0.rename(Y,z,($)=>{if($)return $8($);s0.writeFile(Y,Q,J.encoding,(V)=>{if(V)return $8(V);if(!J.keepBackup)s0.unlink(z,(B)=>{if(B)return $8(B);g8(Z)});return g8(Z)})})},jU=function(Z,J){if(I0("Get final pattern"),Z=TU(Z,J),J.literal)Z=Z.replace(O8.regexSpecialChars,"\\$&");return I0(Z),Z},pG=function(Z,J){if(I0("Get final replacement"),Z=TU(Z,J),J.outputMatch){if(I0("Output match"),parseInt(process.versions.node)<6)return o0("outputMatch is only supported in node 6+");return function(){if(I0(arguments),arguments.length===3)return I0("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var X=1;X{ throw new Error(`Cannot require module "re2"`);})())(Z,Q)}catch(Y){if(J.debug)throw new Error(Y);o0(Y.message)}break;default:o0(`Engine ${J.engine} not supported`)}return I0(X),X},nG=function(Z){I0("Get flags");let J="";if(!Z.voidGlobal)J+="g";if(!Z.voidIgnoreCase)J+="i";if(!Z.voidMultiline)J+="m";if(Z.dotAll)J+="s";if(Z.unicode)J+="u";return I0(J),J},MU=function(Z){if(Z===1)return"1 Byte";const J=Math.floor(Math.log(Z)/Math.log(1024));return(Z/Math.pow(1024,J)).toFixed(J?1:0)+" "+["Bytes","KB","MB","GB","TB"][J]},iG=function(Z,J,X){const Q=cG,Y=gZ(Q),U=J.pipeData,z=X,$=J.pattern,V=J.replacementOri,B=process.cwd(),W=Y;let I="\u274C",H="\u274C",G="\u274C",E="\u274C",P="\u274C",S="\u274C",k="\u274C",b="\u274C",l="\u274C",J0="\u274C",d=new Date(0),g=new Date(0),R=-1,p="\u274C",L=new Function("require","fs","globs","path","pipe","pipe_","find","find_","text","text_","file","file_","file_rel","file_rel_","dirpath","dirpath_","dirpath_rel","dirpath_rel_","dirname","dirname_","filename","filename_","name","name_","ext","ext_","cwd","cwd_","now","now_","time_obj","time","time_","mtime_obj","mtime","mtime_","ctime_obj","ctime","ctime_","bytes","bytes_","size","size_","nl","_","__code_rr",'var path = require("path");var __require_ = require;var r = function(file){var result = null;try{result = __require_(file);} catch (e){'+'var dir = /^[\\/]/.test(file) ? "" : cwd;'+"result = __require_(path.resolve(dir, file));};return result;};require = r;return eval(__code_rr);");const C=O8.byteOrSize.test(J.replacement),_=C&&50000000LU.sync(F,{unique:!0,caseSensitiveMatch:!J.voidIgnoreCase,dot:!0,...D});if(!/\$\d/.test(J.replacement))return L(require,s0,y,W8,U,U+" ",$,$+" ",z,z+" ",I,I+" ",H,H+" ",G,G+" ",E,E+" ",P,P+" ",S,S+" ",k,k+" ",b,b+" ",B,B+" ",W,W+" ",Q,Y,Y+" ",d,l,l+" ",g,J0,J0+" ",R,R+" ",p,p+" ","\n"," ",V);return function(){I0(arguments);const F=U,D=z,u=$,f=I,e=H,Y0=G,V0=E,T0=P,t=S,_0=k,h0=b,h=B,U0=W,K0=Q,A=Y,X0=d,x=l,o=g,z0=J0,M=R,j=p,v="\n",w=" ",T=V;var n="";for(var m=0;mDU(jU(z,Z),Z)).forEach((z)=>{U=U.filter(($)=>!$.match(z))});return U},s0=w7(),W8=import.meta.require("path"),LU=TY(),WF=IU(),cG=new Date,O8={euro:/\u20AC/g,section:/\u00A7/g,mctime:/[mc]time/,colon:/:/g,capturedGroupRef:/\$\d/,regexSpecialChars:/[-\[\]{}()*+?.,\/\\^$|#\s]/g,byteOrSize:/bytes|size/,folderName:/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/},cZ="PACKAGE_VERSION",FU;function EU(Z,J){let X,Q,Y=0;if(J.length<2)if(/-v|--?version$/i.test(J.slice(-1)[0]))console.log(cZ),Z.exit(0);else if(/-h|--?help$/i.test(J.slice(-1)[0]))Y=1;else Y=2;else[X,Q]=J.splice(0,2);const U=$7(J).example("> rexreplace '(f?(o))o(.*)' '$3$1\u20AC2' myfile.md","'foobar' in myfile.md will become 'barfoo'").example("> rexreplace '^#' '##' *.md","All markdown files in this dir got all headlines moved one level deeper").example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ","Provide multiple files or globs if needed").version("v","Print rexreplace version (can be given as only argument)",cZ).alias("v","version").boolean("I").describe("I","Void case insensitive search pattern.").alias("I","void-ignore-case").boolean("G").describe("G","Void global search (stop looking after the first match).").alias("G","void-global").boolean("M").describe("M","Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.").alias("M","void-multiline").boolean("s").describe("s","Have `.` also match newline.").alias("s","dot-all").boolean("u").describe("u","Treat pattern as a sequence of unicode code points.").alias("u","unicode").default("e","utf8").alias("e","encoding").describe("e","Encoding of files/piped data.").alias("E","engine").describe("E","What regex engine to use:").choices("E",["V8"]).default("E","V8").boolean("L").describe("L","Literal string search (no regex used when searching)").alias("L","literal").boolean("\u20AC").describe("\u20AC","Void having '\u20AC' as alias for '$' in pattern and replacement parameters").alias("\u20AC","void-euro").boolean("\xA7").describe("\xA7","Void having '\xA7' as alias for '\\' in pattern and replacement parameters").alias("\xA7","void-section").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").boolean("H").describe("H","Halt on first error").alias("H","halt").alias("H","bail").default("H",!1).boolean("q").describe("q","Only display errors (no other info)").alias("q","quiet").boolean("Q").describe("Q","Never display errors or info").alias("Q","quiet-total").boolean("B").describe("B","Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.").alias("B","void-backup").boolean("b").describe("b","Keep the backup file with the original content.").alias("b","keep-backup").boolean("o").describe("o","Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.").alias("o","output").boolean("m").describe("m","Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ").alias("m","output-match").boolean("T").alias("T","trim-pipe").describe("T","Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ").boolean("R").alias("R","replacement-pipe").describe("R","Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.").conflicts("R","g").conflicts("R","G").boolean("g").describe("g","Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt").alias("g","glob-pipe").conflicts("g","G").boolean("S").describe("S","Simulate output without changing any files").alias("S","simulate").array("x").describe("x","Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.").alias("x","exclude-re").array("X").describe("X","Exclude files found with this glob. Can be used multiple times.").alias("X","exclude-glob").boolean("V").describe("V","More chatty output").alias("V","verbose").boolean("d").describe("d","Print debug info").alias("d","debug").boolean("j").alias("j","replacement-js").describe("j",`Treat replacement as javascript source code. The statement from the last expression will become the replacement string. Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. @@ -14426,117 +110,4 @@ function cli2conf(runtime2, args) { \`ctime_obj\`: date object representing \`ctime\`. All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `).help("h").describe("h", "Display help.").alias("h", "help").epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).parseSync(); - let conf2 = {}; - Object.keys(argv).forEach((key) => { - if (1 < key.length && key.indexOf("-") < 0) { - conf2[key] = argv[key]; - } - }); - conf2.showHelp = yargs_default.showHelp; - conf2.needHelp = needHelp; - conf2.pattern = pattern; - conf2.replacement = replacement; - conf2.includeGlob = argv._; - conf2.excludeGlob = [...argv.excludeGlob].filter(Boolean); - conf2.excludeRe = [...argv.excludeRe].filter(Boolean); - if (!conf2.replacementJs) { - conf2.replacement = unescapeString(conf2.replacement); - } - return conf2; -} -var unescapeString = function(str = "") { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -}; -function executeReplacement(runtime2, conf2, pipeData = null) { - if (0 < conf2.needHelp) { - runtime2.exit(conf2.needHelp - 1); - } - if (pipeData === null) - return engine(runtime2, conf2); - if (conf2.trimPipe) { - pipeData = pipeData.trim(); - } - if (conf2.replacementPipe) { - step("Replacement from pipe"); - if (pipeData === null) { - return die("You asked the piped data to be used as replacement - but no data arrived."); - } - conf2.replacement = pipeData; - if (conf2.replacementJs) - conf2.pipeData = pipeData; - return engine(runtime2, conf2); - } - if (conf2.globPipe) { - step("globs from pipe"); - if (conf2.pipeData === null) { - return die("You asked the piped data to be use as files/globs to include - but no data arrived."); - } - if (conf2.includeGlob.length) { - return die("Please pipe file/globs to include OR provide them as as parameters. Not both."); - } - conf2.globs = pipeData.split(/\r?\n/).filter(Boolean); - if (conf2.replacementJs) - conf2.pipeData = pipeData; - return engine(runtime2, conf2); - } - if (conf2.includeGlob.length) { - return die("Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters"); - } - step("Content being piped"); - conf2.pipeData = pipeData; - conf2.output = true; - process.stdout.setDefaultEncoding(conf2.encoding); - return engine(runtime2, conf2); -} - -// src/env/bun.ts -var import_fs_extra = __toESM(require_lib(), 1); -var runtime2 = { - fileReadSync: (path2, encoding = "utf8") => import_fs_extra.default.readFileSync(path2, { encoding }), - fileReadAsync: async (path2, encoding = "utf8") => { - const file = Bun.file(path2); - return file.text(); - }, - fileWriteSync: async (path2, data, encoding = "utf8") => { - await Bun.write(path2, data); - }, - fileWriteAsync: (path2, data, encoding = "utf8") => { - return Bun.write(path2, data); - }, - fileDeleteSync: (path2) => import_fs_extra.default.unlinkSync(path2), - fileDeleteAsync: (path2) => import_fs_extra.default.unlink(path2), - fileCopySync: async (originalPath, destinationPath) => { - const input = Bun.file(originalPath); - const output3 = Bun.file(destinationPath); - await Bun.write(output3, input); - }, - fileCopyAsync: (originalPath, destinationPath) => { - const input = Bun.file(originalPath); - const output3 = Bun.file(destinationPath); - return Bun.write(output3, input); - }, - exit: process.exit -}; -(() => { - let conf2 = cli2conf(runtime2, process.argv.slice(2)); - if (Boolean(process.stdin.isTTY)) - return executeReplacement(runtime2, conf2); - process.stdin.setEncoding(conf2.encoding); - let pipeData = ""; - process.stdin.on("readable", () => { - let chunk = process.stdin.read(); - if (chunk !== null) { - pipeData += chunk; - while (chunk = process.stdin.read()) { - pipeData += chunk; - } - } - }); - process.stdin.on("end", () => { - return executeReplacement(runtime2, conf2, pipeData); - }); -})(); -export { - runtime2 as runtime -}; + `).help("h").describe("h","Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)").parseSync();let z={};if(Object.keys(U).forEach(($)=>{if(1<$.length&&$.indexOf("-")<0)z[$]=U[$]}),z.showHelp=$7.showHelp,z.needHelp=Y,z.pattern=X,z.replacement=Q,z.includeGlob=U._,z.excludeGlob=U.excludeGlob?U.excludeGlob?.filter(Boolean):[],z.excludeGlob=U.excludeRe?U.excludeRe?.filter(Boolean):[],!z.replacementJs)z.replacement=rG(z.replacement);return z}var rG=function(Z=""){return new Function(`return '${Z.replace(/'/g,"\\'")}'`)()};function lZ(Z,J,X=null){if(0y5.default.readFileSync(Z,{encoding:J}),fileReadAsync:async(Z,J="utf8")=>{return Bun.file(Z).text()},fileWriteSync:async(Z,J,X="utf8")=>{await Bun.write(Z,J)},fileWriteAsync:(Z,J,X="utf8")=>{return Bun.write(Z,J)},fileDeleteSync:(Z)=>y5.default.unlinkSync(Z),fileDeleteAsync:(Z)=>y5.default.unlink(Z),fileCopySync:async(Z,J)=>{const X=Bun.file(Z),Q=Bun.file(J);await Bun.write(Q,X)},fileCopyAsync:(Z,J)=>{const X=Bun.file(Z),Q=Bun.file(J);return Bun.write(Q,X)},exit:process.exit};(()=>{let Z=EU(pZ,process.argv.slice(2));if(Boolean(process.stdin.isTTY))return lZ(pZ,Z);process.stdin.setEncoding(Z.encoding);let J="";process.stdin.on("readable",()=>{let X=process.stdin.read();if(X!==null){J+=X;while(X=process.stdin.read())J+=X}}),process.stdin.on("end",()=>{return lZ(pZ,Z,J)})})();export{pZ as runtime}; diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js new file mode 100755 index 00000000..45cbb6b3 --- /dev/null +++ b/bin/rexreplace.cli.min.js @@ -0,0 +1,15185 @@ +#!/usr/bin/env node +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getProtoOf = Object.getPrototypeOf; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __toESM = (mod, isNodeMode, target) => { + target = mod != null ? __create(__getProtoOf(mod)) : {}; + const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target; + for (let key of __getOwnPropNames(mod)) + if (!__hasOwnProp.call(to, key)) + __defProp(to, key, { + get: () => mod[key], + enumerable: true + }); + return to; +}; +var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); +var __require = (id) => { + return import.meta.require(id); +}; + +// node_modules/universalify/index.js +var require_universalify = __commonJS((exports) => { + exports.fromCallback = function(fn) { + return Object.defineProperty(function(...args) { + if (typeof args[args.length - 1] === "function") + fn.apply(this, args); + else { + return new Promise((resolve5, reject) => { + fn.call(this, ...args, (err, res) => err != null ? reject(err) : resolve5(res)); + }); + } + }, "name", { value: fn.name }); + }; + exports.fromPromise = function(fn) { + return Object.defineProperty(function(...args) { + const cb = args[args.length - 1]; + if (typeof cb !== "function") + return fn.apply(this, args); + else + fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb); + }, "name", { value: fn.name }); + }; +}); + +// node_modules/graceful-fs/polyfills.js +var require_polyfills = __commonJS((exports, module) => { + var patch = function(fs) { + if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs); + } + if (!fs.lutimes) { + patchLutimes(fs); + } + fs.chown = chownFix(fs.chown); + fs.fchown = chownFix(fs.fchown); + fs.lchown = chownFix(fs.lchown); + fs.chmod = chmodFix(fs.chmod); + fs.fchmod = chmodFix(fs.fchmod); + fs.lchmod = chmodFix(fs.lchmod); + fs.chownSync = chownFixSync(fs.chownSync); + fs.fchownSync = chownFixSync(fs.fchownSync); + fs.lchownSync = chownFixSync(fs.lchownSync); + fs.chmodSync = chmodFixSync(fs.chmodSync); + fs.fchmodSync = chmodFixSync(fs.fchmodSync); + fs.lchmodSync = chmodFixSync(fs.lchmodSync); + fs.stat = statFix(fs.stat); + fs.fstat = statFix(fs.fstat); + fs.lstat = statFix(fs.lstat); + fs.statSync = statFixSync(fs.statSync); + fs.fstatSync = statFixSync(fs.fstatSync); + fs.lstatSync = statFixSync(fs.lstatSync); + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function(path, mode, cb) { + if (cb) + process.nextTick(cb); + }; + fs.lchmodSync = function() { + }; + } + if (fs.chown && !fs.lchown) { + fs.lchown = function(path, uid, gid, cb) { + if (cb) + process.nextTick(cb); + }; + fs.lchownSync = function() { + }; + } + if (platform === "win32") { + fs.rename = typeof fs.rename !== "function" ? fs.rename : function(fs$rename) { + function rename(from, to, cb) { + var start = Date.now(); + var backoff = 0; + fs$rename(from, to, function CB(er) { + if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function(stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er); + }); + }, backoff); + if (backoff < 100) + backoff += 10; + return; + } + if (cb) + cb(er); + }); + } + if (Object.setPrototypeOf) + Object.setPrototypeOf(rename, fs$rename); + return rename; + }(fs.rename); + } + fs.read = typeof fs.read !== "function" ? fs.read : function(fs$read) { + function read(fd, buffer, offset, length, position, callback_) { + var callback; + if (callback_ && typeof callback_ === "function") { + var eagCounter = 0; + callback = function(er, _, __) { + if (er && er.code === "EAGAIN" && eagCounter < 10) { + eagCounter++; + return fs$read.call(fs, fd, buffer, offset, length, position, callback); + } + callback_.apply(this, arguments); + }; + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback); + } + if (Object.setPrototypeOf) + Object.setPrototypeOf(read, fs$read); + return read; + }(fs.read); + fs.readSync = typeof fs.readSync !== "function" ? fs.readSync : function(fs$readSync) { + return function(fd, buffer, offset, length, position) { + var eagCounter = 0; + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position); + } catch (er) { + if (er.code === "EAGAIN" && eagCounter < 10) { + eagCounter++; + continue; + } + throw er; + } + } + }; + }(fs.readSync); + function patchLchmod(fs2) { + fs2.lchmod = function(path, mode, callback) { + fs2.open(path, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) { + if (err) { + if (callback) + callback(err); + return; + } + fs2.fchmod(fd, mode, function(err2) { + fs2.close(fd, function(err22) { + if (callback) + callback(err2 || err22); + }); + }); + }); + }; + fs2.lchmodSync = function(path, mode) { + var fd = fs2.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode); + var threw = true; + var ret; + try { + ret = fs2.fchmodSync(fd, mode); + threw = false; + } finally { + if (threw) { + try { + fs2.closeSync(fd); + } catch (er) { + } + } else { + fs2.closeSync(fd); + } + } + return ret; + }; + } + function patchLutimes(fs2) { + if (constants.hasOwnProperty("O_SYMLINK") && fs2.futimes) { + fs2.lutimes = function(path, at, mt, cb) { + fs2.open(path, constants.O_SYMLINK, function(er, fd) { + if (er) { + if (cb) + cb(er); + return; + } + fs2.futimes(fd, at, mt, function(er2) { + fs2.close(fd, function(er22) { + if (cb) + cb(er2 || er22); + }); + }); + }); + }; + fs2.lutimesSync = function(path, at, mt) { + var fd = fs2.openSync(path, constants.O_SYMLINK); + var ret; + var threw = true; + try { + ret = fs2.futimesSync(fd, at, mt); + threw = false; + } finally { + if (threw) { + try { + fs2.closeSync(fd); + } catch (er) { + } + } else { + fs2.closeSync(fd); + } + } + return ret; + }; + } else if (fs2.futimes) { + fs2.lutimes = function(_a2, _b2, _c2, cb) { + if (cb) + process.nextTick(cb); + }; + fs2.lutimesSync = function() { + }; + } + } + function chmodFix(orig) { + if (!orig) + return orig; + return function(target, mode, cb) { + return orig.call(fs, target, mode, function(er) { + if (chownErOk(er)) + er = null; + if (cb) + cb.apply(this, arguments); + }); + }; + } + function chmodFixSync(orig) { + if (!orig) + return orig; + return function(target, mode) { + try { + return orig.call(fs, target, mode); + } catch (er) { + if (!chownErOk(er)) + throw er; + } + }; + } + function chownFix(orig) { + if (!orig) + return orig; + return function(target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function(er) { + if (chownErOk(er)) + er = null; + if (cb) + cb.apply(this, arguments); + }); + }; + } + function chownFixSync(orig) { + if (!orig) + return orig; + return function(target, uid, gid) { + try { + return orig.call(fs, target, uid, gid); + } catch (er) { + if (!chownErOk(er)) + throw er; + } + }; + } + function statFix(orig) { + if (!orig) + return orig; + return function(target, options, cb) { + if (typeof options === "function") { + cb = options; + options = null; + } + function callback(er, stats) { + if (stats) { + if (stats.uid < 0) + stats.uid += 4294967296; + if (stats.gid < 0) + stats.gid += 4294967296; + } + if (cb) + cb.apply(this, arguments); + } + return options ? orig.call(fs, target, options, callback) : orig.call(fs, target, callback); + }; + } + function statFixSync(orig) { + if (!orig) + return orig; + return function(target, options) { + var stats = options ? orig.call(fs, target, options) : orig.call(fs, target); + if (stats) { + if (stats.uid < 0) + stats.uid += 4294967296; + if (stats.gid < 0) + stats.gid += 4294967296; + } + return stats; + }; + } + function chownErOk(er) { + if (!er) + return true; + if (er.code === "ENOSYS") + return true; + var nonroot = !process.getuid || process.getuid() !== 0; + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true; + } + return false; + } + }; + var constants = __require("constants"); + var origCwd = process.cwd; + var cwd = null; + var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform; + process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process); + return cwd; + }; + try { + process.cwd(); + } catch (er) { + } + if (typeof process.chdir === "function") { + chdir = process.chdir; + process.chdir = function(d) { + cwd = null; + chdir.call(process, d); + }; + if (Object.setPrototypeOf) + Object.setPrototypeOf(process.chdir, chdir); + } + var chdir; + module.exports = patch; +}); + +// node_modules/graceful-fs/legacy-streams.js +var require_legacy_streams = __commonJS((exports, module) => { + var legacy = function(fs) { + return { + ReadStream, + WriteStream + }; + function ReadStream(path, options) { + if (!(this instanceof ReadStream)) + return new ReadStream(path, options); + Stream.call(this); + var self = this; + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + this.flags = "r"; + this.mode = 438; + this.bufferSize = 64 * 1024; + options = options || {}; + var keys = Object.keys(options); + for (var index = 0, length = keys.length;index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + if (this.encoding) + this.setEncoding(this.encoding); + if (this.start !== undefined) { + if (typeof this.start !== "number") { + throw TypeError("start must be a Number"); + } + if (this.end === undefined) { + this.end = Infinity; + } else if (typeof this.end !== "number") { + throw TypeError("end must be a Number"); + } + if (this.start > this.end) { + throw new Error("start must be <= end"); + } + this.pos = this.start; + } + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + fs.open(this.path, this.flags, this.mode, function(err, fd) { + if (err) { + self.emit("error", err); + self.readable = false; + return; + } + self.fd = fd; + self.emit("open", fd); + self._read(); + }); + } + function WriteStream(path, options) { + if (!(this instanceof WriteStream)) + return new WriteStream(path, options); + Stream.call(this); + this.path = path; + this.fd = null; + this.writable = true; + this.flags = "w"; + this.encoding = "binary"; + this.mode = 438; + this.bytesWritten = 0; + options = options || {}; + var keys = Object.keys(options); + for (var index = 0, length = keys.length;index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + if (this.start !== undefined) { + if (typeof this.start !== "number") { + throw TypeError("start must be a Number"); + } + if (this.start < 0) { + throw new Error("start must be >= zero"); + } + this.pos = this.start; + } + this.busy = false; + this._queue = []; + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } + }; + var Stream = __require("stream").Stream; + module.exports = legacy; +}); + +// node_modules/graceful-fs/clone.js +var require_clone = __commonJS((exports, module) => { + var clone = function(obj) { + if (obj === null || typeof obj !== "object") + return obj; + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) }; + else + var copy = Object.create(null); + Object.getOwnPropertyNames(obj).forEach(function(key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)); + }); + return copy; + }; + module.exports = clone; + var getPrototypeOf = Object.getPrototypeOf || function(obj) { + return obj.__proto__; + }; +}); + +// node_modules/graceful-fs/graceful-fs.js +var require_graceful_fs = __commonJS((exports, module) => { + var noop = function() { + }; + var publishQueue = function(context, queue2) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue2; + } + }); + }; + var patch = function(fs2) { + polyfills(fs2); + fs2.gracefulify = patch; + fs2.createReadStream = createReadStream; + fs2.createWriteStream = createWriteStream; + var fs$readFile = fs2.readFile; + fs2.readFile = readFile; + function readFile(path, options, cb) { + if (typeof options === "function") + cb = options, options = null; + return go$readFile(path, options, cb); + function go$readFile(path2, options2, cb2, startTime) { + return fs$readFile(path2, options2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$readFile, [path2, options2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$writeFile = fs2.writeFile; + fs2.writeFile = writeFile2; + function writeFile2(path, data, options, cb) { + if (typeof options === "function") + cb = options, options = null; + return go$writeFile(path, data, options, cb); + function go$writeFile(path2, data2, options2, cb2, startTime) { + return fs$writeFile(path2, data2, options2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$writeFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$appendFile = fs2.appendFile; + if (fs$appendFile) + fs2.appendFile = appendFile; + function appendFile(path, data, options, cb) { + if (typeof options === "function") + cb = options, options = null; + return go$appendFile(path, data, options, cb); + function go$appendFile(path2, data2, options2, cb2, startTime) { + return fs$appendFile(path2, data2, options2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$appendFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$copyFile = fs2.copyFile; + if (fs$copyFile) + fs2.copyFile = copyFile; + function copyFile(src, dest, flags, cb) { + if (typeof flags === "function") { + cb = flags; + flags = 0; + } + return go$copyFile(src, dest, flags, cb); + function go$copyFile(src2, dest2, flags2, cb2, startTime) { + return fs$copyFile(src2, dest2, flags2, function(err) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + var fs$readdir = fs2.readdir; + fs2.readdir = readdir; + var noReaddirOptionVersions = /^v[0-5]\./; + function readdir(path, options, cb) { + if (typeof options === "function") + cb = options, options = null; + var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir(path2, options2, cb2, startTime) { + return fs$readdir(path2, fs$readdirCallback(path2, options2, cb2, startTime)); + } : function go$readdir(path2, options2, cb2, startTime) { + return fs$readdir(path2, options2, fs$readdirCallback(path2, options2, cb2, startTime)); + }; + return go$readdir(path, options, cb); + function fs$readdirCallback(path2, options2, cb2, startTime) { + return function(err, files) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([ + go$readdir, + [path2, options2, cb2], + err, + startTime || Date.now(), + Date.now() + ]); + else { + if (files && files.sort) + files.sort(); + if (typeof cb2 === "function") + cb2.call(this, err, files); + } + }; + } + } + if (process.version.substr(0, 4) === "v0.8") { + var legStreams = legacy(fs2); + ReadStream = legStreams.ReadStream; + WriteStream = legStreams.WriteStream; + } + var fs$ReadStream = fs2.ReadStream; + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype); + ReadStream.prototype.open = ReadStream$open; + } + var fs$WriteStream = fs2.WriteStream; + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype); + WriteStream.prototype.open = WriteStream$open; + } + Object.defineProperty(fs2, "ReadStream", { + get: function() { + return ReadStream; + }, + set: function(val) { + ReadStream = val; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(fs2, "WriteStream", { + get: function() { + return WriteStream; + }, + set: function(val) { + WriteStream = val; + }, + enumerable: true, + configurable: true + }); + var FileReadStream = ReadStream; + Object.defineProperty(fs2, "FileReadStream", { + get: function() { + return FileReadStream; + }, + set: function(val) { + FileReadStream = val; + }, + enumerable: true, + configurable: true + }); + var FileWriteStream = WriteStream; + Object.defineProperty(fs2, "FileWriteStream", { + get: function() { + return FileWriteStream; + }, + set: function(val) { + FileWriteStream = val; + }, + enumerable: true, + configurable: true + }); + function ReadStream(path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this; + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments); + } + function ReadStream$open() { + var that = this; + open(that.path, that.flags, that.mode, function(err, fd) { + if (err) { + if (that.autoClose) + that.destroy(); + that.emit("error", err); + } else { + that.fd = fd; + that.emit("open", fd); + that.read(); + } + }); + } + function WriteStream(path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this; + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments); + } + function WriteStream$open() { + var that = this; + open(that.path, that.flags, that.mode, function(err, fd) { + if (err) { + that.destroy(); + that.emit("error", err); + } else { + that.fd = fd; + that.emit("open", fd); + } + }); + } + function createReadStream(path, options) { + return new fs2.ReadStream(path, options); + } + function createWriteStream(path, options) { + return new fs2.WriteStream(path, options); + } + var fs$open = fs2.open; + fs2.open = open; + function open(path, flags, mode, cb) { + if (typeof mode === "function") + cb = mode, mode = null; + return go$open(path, flags, mode, cb); + function go$open(path2, flags2, mode2, cb2, startTime) { + return fs$open(path2, flags2, mode2, function(err, fd) { + if (err && (err.code === "EMFILE" || err.code === "ENFILE")) + enqueue([go$open, [path2, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]); + else { + if (typeof cb2 === "function") + cb2.apply(this, arguments); + } + }); + } + } + return fs2; + }; + var enqueue = function(elem) { + debug2("ENQUEUE", elem[0].name, elem[1]); + fs[gracefulQueue].push(elem); + retry(); + }; + var resetQueue = function() { + var now = Date.now(); + for (var i = 0;i < fs[gracefulQueue].length; ++i) { + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now; + fs[gracefulQueue][i][4] = now; + } + } + retry(); + }; + var retry = function() { + clearTimeout(retryTimer); + retryTimer = undefined; + if (fs[gracefulQueue].length === 0) + return; + var elem = fs[gracefulQueue].shift(); + var fn = elem[0]; + var args = elem[1]; + var err = elem[2]; + var startTime = elem[3]; + var lastTime = elem[4]; + if (startTime === undefined) { + debug2("RETRY", fn.name, args); + fn.apply(null, args); + } else if (Date.now() - startTime >= 60000) { + debug2("TIMEOUT", fn.name, args); + var cb = args.pop(); + if (typeof cb === "function") + cb.call(null, err); + } else { + var sinceAttempt = Date.now() - lastTime; + var sinceStart = Math.max(lastTime - startTime, 1); + var desiredDelay = Math.min(sinceStart * 1.2, 100); + if (sinceAttempt >= desiredDelay) { + debug2("RETRY", fn.name, args); + fn.apply(null, args.concat([startTime])); + } else { + fs[gracefulQueue].push(elem); + } + } + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0); + } + }; + var fs = __require("fs"); + var polyfills = require_polyfills(); + var legacy = require_legacy_streams(); + var clone = require_clone(); + var util = __require("util"); + var gracefulQueue; + var previousSymbol; + if (typeof Symbol === "function" && typeof Symbol.for === "function") { + gracefulQueue = Symbol.for("graceful-fs.queue"); + previousSymbol = Symbol.for("graceful-fs.previous"); + } else { + gracefulQueue = "___graceful-fs.queue"; + previousSymbol = "___graceful-fs.previous"; + } + var debug2 = noop; + if (util.debuglog) + debug2 = util.debuglog("gfs4"); + else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) + debug2 = function() { + var m = util.format.apply(util, arguments); + m = "GFS4: " + m.split(/\n/).join("\nGFS4: "); + console.error(m); + }; + if (!fs[gracefulQueue]) { + queue = global[gracefulQueue] || []; + publishQueue(fs, queue); + fs.close = function(fs$close) { + function close(fd, cb) { + return fs$close.call(fs, fd, function(err) { + if (!err) { + resetQueue(); + } + if (typeof cb === "function") + cb.apply(this, arguments); + }); + } + Object.defineProperty(close, previousSymbol, { + value: fs$close + }); + return close; + }(fs.close); + fs.closeSync = function(fs$closeSync) { + function closeSync(fd) { + fs$closeSync.apply(fs, arguments); + resetQueue(); + } + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }); + return closeSync; + }(fs.closeSync); + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) { + process.on("exit", function() { + debug2(fs[gracefulQueue]); + __require("assert").equal(fs[gracefulQueue].length, 0); + }); + } + } + var queue; + if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); + } + module.exports = patch(clone(fs)); + if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs); + fs.__patched = true; + } + var retryTimer; +}); + +// node_modules/fs-extra/lib/fs/index.js +var require_fs = __commonJS((exports) => { + var u = require_universalify().fromCallback; + var fs = require_graceful_fs(); + var api = [ + "access", + "appendFile", + "chmod", + "chown", + "close", + "copyFile", + "fchmod", + "fchown", + "fdatasync", + "fstat", + "fsync", + "ftruncate", + "futimes", + "lchmod", + "lchown", + "link", + "lstat", + "mkdir", + "mkdtemp", + "open", + "opendir", + "readdir", + "readFile", + "readlink", + "realpath", + "rename", + "rm", + "rmdir", + "stat", + "symlink", + "truncate", + "unlink", + "utimes", + "writeFile" + ].filter((key) => { + return typeof fs[key] === "function"; + }); + Object.assign(exports, fs); + api.forEach((method) => { + exports[method] = u(fs[method]); + }); + exports.exists = function(filename, callback) { + if (typeof callback === "function") { + return fs.exists(filename, callback); + } + return new Promise((resolve5) => { + return fs.exists(filename, resolve5); + }); + }; + exports.read = function(fd, buffer, offset, length, position, callback) { + if (typeof callback === "function") { + return fs.read(fd, buffer, offset, length, position, callback); + } + return new Promise((resolve5, reject) => { + fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => { + if (err) + return reject(err); + resolve5({ bytesRead, buffer: buffer2 }); + }); + }); + }; + exports.write = function(fd, buffer, ...args) { + if (typeof args[args.length - 1] === "function") { + return fs.write(fd, buffer, ...args); + } + return new Promise((resolve5, reject) => { + fs.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => { + if (err) + return reject(err); + resolve5({ bytesWritten, buffer: buffer2 }); + }); + }); + }; + exports.readv = function(fd, buffers, ...args) { + if (typeof args[args.length - 1] === "function") { + return fs.readv(fd, buffers, ...args); + } + return new Promise((resolve5, reject) => { + fs.readv(fd, buffers, ...args, (err, bytesRead, buffers2) => { + if (err) + return reject(err); + resolve5({ bytesRead, buffers: buffers2 }); + }); + }); + }; + exports.writev = function(fd, buffers, ...args) { + if (typeof args[args.length - 1] === "function") { + return fs.writev(fd, buffers, ...args); + } + return new Promise((resolve5, reject) => { + fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => { + if (err) + return reject(err); + resolve5({ bytesWritten, buffers: buffers2 }); + }); + }); + }; + if (typeof fs.realpath.native === "function") { + exports.realpath.native = u(fs.realpath.native); + } else { + process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?", "Warning", "fs-extra-WARN0003"); + } +}); + +// node_modules/fs-extra/lib/mkdirs/utils.js +var require_utils = __commonJS((exports, module) => { + var path = __require("path"); + exports.checkPath = function checkPath(pth) { + if (process.platform === "win32") { + const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, "")); + if (pathHasInvalidWinCharacters) { + const error2 = new Error(`Path contains invalid characters: ${pth}`); + error2.code = "EINVAL"; + throw error2; + } + } + }; +}); + +// node_modules/fs-extra/lib/mkdirs/make-dir.js +var require_make_dir = __commonJS((exports, module) => { + var fs = require_fs(); + var { checkPath } = require_utils(); + var getMode = (options) => { + const defaults = { mode: 511 }; + if (typeof options === "number") + return options; + return { ...defaults, ...options }.mode; + }; + exports.makeDir = async (dir, options) => { + checkPath(dir); + return fs.mkdir(dir, { + mode: getMode(options), + recursive: true + }); + }; + exports.makeDirSync = (dir, options) => { + checkPath(dir); + return fs.mkdirSync(dir, { + mode: getMode(options), + recursive: true + }); + }; +}); + +// node_modules/fs-extra/lib/mkdirs/index.js +var require_mkdirs = __commonJS((exports, module) => { + var u = require_universalify().fromPromise; + var { makeDir: _makeDir, makeDirSync } = require_make_dir(); + var makeDir = u(_makeDir); + module.exports = { + mkdirs: makeDir, + mkdirsSync: makeDirSync, + mkdirp: makeDir, + mkdirpSync: makeDirSync, + ensureDir: makeDir, + ensureDirSync: makeDirSync + }; +}); + +// node_modules/fs-extra/lib/path-exists/index.js +var require_path_exists = __commonJS((exports, module) => { + var pathExists = function(path) { + return fs.access(path).then(() => true).catch(() => false); + }; + var u = require_universalify().fromPromise; + var fs = require_fs(); + module.exports = { + pathExists: u(pathExists), + pathExistsSync: fs.existsSync + }; +}); + +// node_modules/fs-extra/lib/util/utimes.js +var require_utimes = __commonJS((exports, module) => { + var utimesMillis = function(path, atime, mtime, callback) { + fs.open(path, "r+", (err, fd) => { + if (err) + return callback(err); + fs.futimes(fd, atime, mtime, (futimesErr) => { + fs.close(fd, (closeErr) => { + if (callback) + callback(futimesErr || closeErr); + }); + }); + }); + }; + var utimesMillisSync = function(path, atime, mtime) { + const fd = fs.openSync(path, "r+"); + fs.futimesSync(fd, atime, mtime); + return fs.closeSync(fd); + }; + var fs = require_graceful_fs(); + module.exports = { + utimesMillis, + utimesMillisSync + }; +}); + +// node_modules/fs-extra/lib/util/stat.js +var require_stat = __commonJS((exports, module) => { + var getStats = function(src, dest, opts) { + const statFunc = opts.dereference ? (file) => fs.stat(file, { bigint: true }) : (file) => fs.lstat(file, { bigint: true }); + return Promise.all([ + statFunc(src), + statFunc(dest).catch((err) => { + if (err.code === "ENOENT") + return null; + throw err; + }) + ]).then(([srcStat, destStat]) => ({ srcStat, destStat })); + }; + var getStatsSync = function(src, dest, opts) { + let destStat; + const statFunc = opts.dereference ? (file) => fs.statSync(file, { bigint: true }) : (file) => fs.lstatSync(file, { bigint: true }); + const srcStat = statFunc(src); + try { + destStat = statFunc(dest); + } catch (err) { + if (err.code === "ENOENT") + return { srcStat, destStat: null }; + throw err; + } + return { srcStat, destStat }; + }; + var checkPaths = function(src, dest, funcName, opts, cb) { + util.callbackify(getStats)(src, dest, opts, (err, stats) => { + if (err) + return cb(err); + const { srcStat, destStat } = stats; + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path.basename(src); + const destBaseName = path.basename(dest); + if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return cb(null, { srcStat, destStat, isChangingCase: true }); + } + return cb(new Error("Source and destination must not be the same.")); + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)); + } + } + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + return cb(new Error(errMsg(src, dest, funcName))); + } + return cb(null, { srcStat, destStat }); + }); + }; + var checkPathsSync = function(src, dest, funcName, opts) { + const { srcStat, destStat } = getStatsSync(src, dest, opts); + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path.basename(src); + const destBaseName = path.basename(dest); + if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return { srcStat, destStat, isChangingCase: true }; + } + throw new Error("Source and destination must not be the same."); + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`); + } + } + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + throw new Error(errMsg(src, dest, funcName)); + } + return { srcStat, destStat }; + }; + var checkParentPaths = function(src, srcStat, dest, funcName, cb) { + const srcParent = path.resolve(path.dirname(src)); + const destParent = path.resolve(path.dirname(dest)); + if (destParent === srcParent || destParent === path.parse(destParent).root) + return cb(); + fs.stat(destParent, { bigint: true }, (err, destStat) => { + if (err) { + if (err.code === "ENOENT") + return cb(); + return cb(err); + } + if (areIdentical(srcStat, destStat)) { + return cb(new Error(errMsg(src, dest, funcName))); + } + return checkParentPaths(src, srcStat, destParent, funcName, cb); + }); + }; + var checkParentPathsSync = function(src, srcStat, dest, funcName) { + const srcParent = path.resolve(path.dirname(src)); + const destParent = path.resolve(path.dirname(dest)); + if (destParent === srcParent || destParent === path.parse(destParent).root) + return; + let destStat; + try { + destStat = fs.statSync(destParent, { bigint: true }); + } catch (err) { + if (err.code === "ENOENT") + return; + throw err; + } + if (areIdentical(srcStat, destStat)) { + throw new Error(errMsg(src, dest, funcName)); + } + return checkParentPathsSync(src, srcStat, destParent, funcName); + }; + var areIdentical = function(srcStat, destStat) { + return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev; + }; + var isSrcSubdir = function(src, dest) { + const srcArr = path.resolve(src).split(path.sep).filter((i) => i); + const destArr = path.resolve(dest).split(path.sep).filter((i) => i); + return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); + }; + var errMsg = function(src, dest, funcName) { + return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; + }; + var fs = require_fs(); + var path = __require("path"); + var util = __require("util"); + module.exports = { + checkPaths, + checkPathsSync, + checkParentPaths, + checkParentPathsSync, + isSrcSubdir, + areIdentical + }; +}); + +// node_modules/fs-extra/lib/copy/copy.js +var require_copy = __commonJS((exports, module) => { + var copy = function(src, dest, opts, cb) { + if (typeof opts === "function" && !cb) { + cb = opts; + opts = {}; + } else if (typeof opts === "function") { + opts = { filter: opts }; + } + cb = cb || function() { + }; + opts = opts || {}; + opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; + opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; + if (opts.preserveTimestamps && process.arch === "ia32") { + process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0001"); + } + stat.checkPaths(src, dest, "copy", opts, (err, stats) => { + if (err) + return cb(err); + const { srcStat, destStat } = stats; + stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => { + if (err2) + return cb(err2); + runFilter(src, dest, opts, (err3, include) => { + if (err3) + return cb(err3); + if (!include) + return cb(); + checkParentDir(destStat, src, dest, opts, cb); + }); + }); + }); + }; + var checkParentDir = function(destStat, src, dest, opts, cb) { + const destParent = path.dirname(dest); + pathExists(destParent, (err, dirExists) => { + if (err) + return cb(err); + if (dirExists) + return getStats(destStat, src, dest, opts, cb); + mkdirs(destParent, (err2) => { + if (err2) + return cb(err2); + return getStats(destStat, src, dest, opts, cb); + }); + }); + }; + var runFilter = function(src, dest, opts, cb) { + if (!opts.filter) + return cb(null, true); + Promise.resolve(opts.filter(src, dest)).then((include) => cb(null, include), (error2) => cb(error2)); + }; + var getStats = function(destStat, src, dest, opts, cb) { + const stat2 = opts.dereference ? fs.stat : fs.lstat; + stat2(src, (err, srcStat) => { + if (err) + return cb(err); + if (srcStat.isDirectory()) + return onDir(srcStat, destStat, src, dest, opts, cb); + else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) + return onFile(srcStat, destStat, src, dest, opts, cb); + else if (srcStat.isSymbolicLink()) + return onLink(destStat, src, dest, opts, cb); + else if (srcStat.isSocket()) + return cb(new Error(`Cannot copy a socket file: ${src}`)); + else if (srcStat.isFIFO()) + return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)); + return cb(new Error(`Unknown file: ${src}`)); + }); + }; + var onFile = function(srcStat, destStat, src, dest, opts, cb) { + if (!destStat) + return copyFile(srcStat, src, dest, opts, cb); + return mayCopyFile(srcStat, src, dest, opts, cb); + }; + var mayCopyFile = function(srcStat, src, dest, opts, cb) { + if (opts.overwrite) { + fs.unlink(dest, (err) => { + if (err) + return cb(err); + return copyFile(srcStat, src, dest, opts, cb); + }); + } else if (opts.errorOnExist) { + return cb(new Error(`'${dest}' already exists`)); + } else + return cb(); + }; + var copyFile = function(srcStat, src, dest, opts, cb) { + fs.copyFile(src, dest, (err) => { + if (err) + return cb(err); + if (opts.preserveTimestamps) + return handleTimestampsAndMode(srcStat.mode, src, dest, cb); + return setDestMode(dest, srcStat.mode, cb); + }); + }; + var handleTimestampsAndMode = function(srcMode, src, dest, cb) { + if (fileIsNotWritable(srcMode)) { + return makeFileWritable(dest, srcMode, (err) => { + if (err) + return cb(err); + return setDestTimestampsAndMode(srcMode, src, dest, cb); + }); + } + return setDestTimestampsAndMode(srcMode, src, dest, cb); + }; + var fileIsNotWritable = function(srcMode) { + return (srcMode & 128) === 0; + }; + var makeFileWritable = function(dest, srcMode, cb) { + return setDestMode(dest, srcMode | 128, cb); + }; + var setDestTimestampsAndMode = function(srcMode, src, dest, cb) { + setDestTimestamps(src, dest, (err) => { + if (err) + return cb(err); + return setDestMode(dest, srcMode, cb); + }); + }; + var setDestMode = function(dest, srcMode, cb) { + return fs.chmod(dest, srcMode, cb); + }; + var setDestTimestamps = function(src, dest, cb) { + fs.stat(src, (err, updatedSrcStat) => { + if (err) + return cb(err); + return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb); + }); + }; + var onDir = function(srcStat, destStat, src, dest, opts, cb) { + if (!destStat) + return mkDirAndCopy(srcStat.mode, src, dest, opts, cb); + return copyDir(src, dest, opts, cb); + }; + var mkDirAndCopy = function(srcMode, src, dest, opts, cb) { + fs.mkdir(dest, (err) => { + if (err) + return cb(err); + copyDir(src, dest, opts, (err2) => { + if (err2) + return cb(err2); + return setDestMode(dest, srcMode, cb); + }); + }); + }; + var copyDir = function(src, dest, opts, cb) { + fs.readdir(src, (err, items) => { + if (err) + return cb(err); + return copyDirItems(items, src, dest, opts, cb); + }); + }; + var copyDirItems = function(items, src, dest, opts, cb) { + const item = items.pop(); + if (!item) + return cb(); + return copyDirItem(items, item, src, dest, opts, cb); + }; + var copyDirItem = function(items, item, src, dest, opts, cb) { + const srcItem = path.join(src, item); + const destItem = path.join(dest, item); + runFilter(srcItem, destItem, opts, (err, include) => { + if (err) + return cb(err); + if (!include) + return copyDirItems(items, src, dest, opts, cb); + stat.checkPaths(srcItem, destItem, "copy", opts, (err2, stats) => { + if (err2) + return cb(err2); + const { destStat } = stats; + getStats(destStat, srcItem, destItem, opts, (err3) => { + if (err3) + return cb(err3); + return copyDirItems(items, src, dest, opts, cb); + }); + }); + }); + }; + var onLink = function(destStat, src, dest, opts, cb) { + fs.readlink(src, (err, resolvedSrc) => { + if (err) + return cb(err); + if (opts.dereference) { + resolvedSrc = path.resolve(process.cwd(), resolvedSrc); + } + if (!destStat) { + return fs.symlink(resolvedSrc, dest, cb); + } else { + fs.readlink(dest, (err2, resolvedDest) => { + if (err2) { + if (err2.code === "EINVAL" || err2.code === "UNKNOWN") + return fs.symlink(resolvedSrc, dest, cb); + return cb(err2); + } + if (opts.dereference) { + resolvedDest = path.resolve(process.cwd(), resolvedDest); + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); + } + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); + } + return copyLink(resolvedSrc, dest, cb); + }); + } + }); + }; + var copyLink = function(resolvedSrc, dest, cb) { + fs.unlink(dest, (err) => { + if (err) + return cb(err); + return fs.symlink(resolvedSrc, dest, cb); + }); + }; + var fs = require_graceful_fs(); + var path = __require("path"); + var mkdirs = require_mkdirs().mkdirs; + var pathExists = require_path_exists().pathExists; + var utimesMillis = require_utimes().utimesMillis; + var stat = require_stat(); + module.exports = copy; +}); + +// node_modules/fs-extra/lib/copy/copy-sync.js +var require_copy_sync = __commonJS((exports, module) => { + var copySync = function(src, dest, opts) { + if (typeof opts === "function") { + opts = { filter: opts }; + } + opts = opts || {}; + opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; + opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; + if (opts.preserveTimestamps && process.arch === "ia32") { + process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0002"); + } + const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy", opts); + stat.checkParentPathsSync(src, srcStat, dest, "copy"); + if (opts.filter && !opts.filter(src, dest)) + return; + const destParent = path.dirname(dest); + if (!fs.existsSync(destParent)) + mkdirsSync(destParent); + return getStats(destStat, src, dest, opts); + }; + var getStats = function(destStat, src, dest, opts) { + const statSync3 = opts.dereference ? fs.statSync : fs.lstatSync; + const srcStat = statSync3(src); + if (srcStat.isDirectory()) + return onDir(srcStat, destStat, src, dest, opts); + else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) + return onFile(srcStat, destStat, src, dest, opts); + else if (srcStat.isSymbolicLink()) + return onLink(destStat, src, dest, opts); + else if (srcStat.isSocket()) + throw new Error(`Cannot copy a socket file: ${src}`); + else if (srcStat.isFIFO()) + throw new Error(`Cannot copy a FIFO pipe: ${src}`); + throw new Error(`Unknown file: ${src}`); + }; + var onFile = function(srcStat, destStat, src, dest, opts) { + if (!destStat) + return copyFile(srcStat, src, dest, opts); + return mayCopyFile(srcStat, src, dest, opts); + }; + var mayCopyFile = function(srcStat, src, dest, opts) { + if (opts.overwrite) { + fs.unlinkSync(dest); + return copyFile(srcStat, src, dest, opts); + } else if (opts.errorOnExist) { + throw new Error(`'${dest}' already exists`); + } + }; + var copyFile = function(srcStat, src, dest, opts) { + fs.copyFileSync(src, dest); + if (opts.preserveTimestamps) + handleTimestamps(srcStat.mode, src, dest); + return setDestMode(dest, srcStat.mode); + }; + var handleTimestamps = function(srcMode, src, dest) { + if (fileIsNotWritable(srcMode)) + makeFileWritable(dest, srcMode); + return setDestTimestamps(src, dest); + }; + var fileIsNotWritable = function(srcMode) { + return (srcMode & 128) === 0; + }; + var makeFileWritable = function(dest, srcMode) { + return setDestMode(dest, srcMode | 128); + }; + var setDestMode = function(dest, srcMode) { + return fs.chmodSync(dest, srcMode); + }; + var setDestTimestamps = function(src, dest) { + const updatedSrcStat = fs.statSync(src); + return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime); + }; + var onDir = function(srcStat, destStat, src, dest, opts) { + if (!destStat) + return mkDirAndCopy(srcStat.mode, src, dest, opts); + return copyDir(src, dest, opts); + }; + var mkDirAndCopy = function(srcMode, src, dest, opts) { + fs.mkdirSync(dest); + copyDir(src, dest, opts); + return setDestMode(dest, srcMode); + }; + var copyDir = function(src, dest, opts) { + fs.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts)); + }; + var copyDirItem = function(item, src, dest, opts) { + const srcItem = path.join(src, item); + const destItem = path.join(dest, item); + if (opts.filter && !opts.filter(srcItem, destItem)) + return; + const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy", opts); + return getStats(destStat, srcItem, destItem, opts); + }; + var onLink = function(destStat, src, dest, opts) { + let resolvedSrc = fs.readlinkSync(src); + if (opts.dereference) { + resolvedSrc = path.resolve(process.cwd(), resolvedSrc); + } + if (!destStat) { + return fs.symlinkSync(resolvedSrc, dest); + } else { + let resolvedDest; + try { + resolvedDest = fs.readlinkSync(dest); + } catch (err) { + if (err.code === "EINVAL" || err.code === "UNKNOWN") + return fs.symlinkSync(resolvedSrc, dest); + throw err; + } + if (opts.dereference) { + resolvedDest = path.resolve(process.cwd(), resolvedDest); + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); + } + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); + } + return copyLink(resolvedSrc, dest); + } + }; + var copyLink = function(resolvedSrc, dest) { + fs.unlinkSync(dest); + return fs.symlinkSync(resolvedSrc, dest); + }; + var fs = require_graceful_fs(); + var path = __require("path"); + var mkdirsSync = require_mkdirs().mkdirsSync; + var utimesMillisSync = require_utimes().utimesMillisSync; + var stat = require_stat(); + module.exports = copySync; +}); + +// node_modules/fs-extra/lib/copy/index.js +var require_copy2 = __commonJS((exports, module) => { + var u = require_universalify().fromCallback; + module.exports = { + copy: u(require_copy()), + copySync: require_copy_sync() + }; +}); + +// node_modules/fs-extra/lib/remove/index.js +var require_remove = __commonJS((exports, module) => { + var remove = function(path, callback) { + fs.rm(path, { recursive: true, force: true }, callback); + }; + var removeSync = function(path) { + fs.rmSync(path, { recursive: true, force: true }); + }; + var fs = require_graceful_fs(); + var u = require_universalify().fromCallback; + module.exports = { + remove: u(remove), + removeSync + }; +}); + +// node_modules/fs-extra/lib/empty/index.js +var require_empty = __commonJS((exports, module) => { + var emptyDirSync = function(dir) { + let items; + try { + items = fs.readdirSync(dir); + } catch { + return mkdir.mkdirsSync(dir); + } + items.forEach((item) => { + item = path.join(dir, item); + remove.removeSync(item); + }); + }; + var u = require_universalify().fromPromise; + var fs = require_fs(); + var path = __require("path"); + var mkdir = require_mkdirs(); + var remove = require_remove(); + var emptyDir = u(async function emptyDir(dir) { + let items; + try { + items = await fs.readdir(dir); + } catch { + return mkdir.mkdirs(dir); + } + return Promise.all(items.map((item) => remove.remove(path.join(dir, item)))); + }); + module.exports = { + emptyDirSync, + emptydirSync: emptyDirSync, + emptyDir, + emptydir: emptyDir + }; +}); + +// node_modules/fs-extra/lib/ensure/file.js +var require_file = __commonJS((exports, module) => { + var createFile = function(file, callback) { + function makeFile() { + fs.writeFile(file, "", (err) => { + if (err) + return callback(err); + callback(); + }); + } + fs.stat(file, (err, stats) => { + if (!err && stats.isFile()) + return callback(); + const dir = path.dirname(file); + fs.stat(dir, (err2, stats2) => { + if (err2) { + if (err2.code === "ENOENT") { + return mkdir.mkdirs(dir, (err3) => { + if (err3) + return callback(err3); + makeFile(); + }); + } + return callback(err2); + } + if (stats2.isDirectory()) + makeFile(); + else { + fs.readdir(dir, (err3) => { + if (err3) + return callback(err3); + }); + } + }); + }); + }; + var createFileSync = function(file) { + let stats; + try { + stats = fs.statSync(file); + } catch { + } + if (stats && stats.isFile()) + return; + const dir = path.dirname(file); + try { + if (!fs.statSync(dir).isDirectory()) { + fs.readdirSync(dir); + } + } catch (err) { + if (err && err.code === "ENOENT") + mkdir.mkdirsSync(dir); + else + throw err; + } + fs.writeFileSync(file, ""); + }; + var u = require_universalify().fromCallback; + var path = __require("path"); + var fs = require_graceful_fs(); + var mkdir = require_mkdirs(); + module.exports = { + createFile: u(createFile), + createFileSync + }; +}); + +// node_modules/fs-extra/lib/ensure/link.js +var require_link = __commonJS((exports, module) => { + var createLink = function(srcpath, dstpath, callback) { + function makeLink(srcpath2, dstpath2) { + fs.link(srcpath2, dstpath2, (err) => { + if (err) + return callback(err); + callback(null); + }); + } + fs.lstat(dstpath, (_, dstStat) => { + fs.lstat(srcpath, (err, srcStat) => { + if (err) { + err.message = err.message.replace("lstat", "ensureLink"); + return callback(err); + } + if (dstStat && areIdentical(srcStat, dstStat)) + return callback(null); + const dir = path.dirname(dstpath); + pathExists(dir, (err2, dirExists) => { + if (err2) + return callback(err2); + if (dirExists) + return makeLink(srcpath, dstpath); + mkdir.mkdirs(dir, (err3) => { + if (err3) + return callback(err3); + makeLink(srcpath, dstpath); + }); + }); + }); + }); + }; + var createLinkSync = function(srcpath, dstpath) { + let dstStat; + try { + dstStat = fs.lstatSync(dstpath); + } catch { + } + try { + const srcStat = fs.lstatSync(srcpath); + if (dstStat && areIdentical(srcStat, dstStat)) + return; + } catch (err) { + err.message = err.message.replace("lstat", "ensureLink"); + throw err; + } + const dir = path.dirname(dstpath); + const dirExists = fs.existsSync(dir); + if (dirExists) + return fs.linkSync(srcpath, dstpath); + mkdir.mkdirsSync(dir); + return fs.linkSync(srcpath, dstpath); + }; + var u = require_universalify().fromCallback; + var path = __require("path"); + var fs = require_graceful_fs(); + var mkdir = require_mkdirs(); + var pathExists = require_path_exists().pathExists; + var { areIdentical } = require_stat(); + module.exports = { + createLink: u(createLink), + createLinkSync + }; +}); + +// node_modules/fs-extra/lib/ensure/symlink-paths.js +var require_symlink_paths = __commonJS((exports, module) => { + var symlinkPaths = function(srcpath, dstpath, callback) { + if (path.isAbsolute(srcpath)) { + return fs.lstat(srcpath, (err) => { + if (err) { + err.message = err.message.replace("lstat", "ensureSymlink"); + return callback(err); + } + return callback(null, { + toCwd: srcpath, + toDst: srcpath + }); + }); + } else { + const dstdir = path.dirname(dstpath); + const relativeToDst = path.join(dstdir, srcpath); + return pathExists(relativeToDst, (err, exists) => { + if (err) + return callback(err); + if (exists) { + return callback(null, { + toCwd: relativeToDst, + toDst: srcpath + }); + } else { + return fs.lstat(srcpath, (err2) => { + if (err2) { + err2.message = err2.message.replace("lstat", "ensureSymlink"); + return callback(err2); + } + return callback(null, { + toCwd: srcpath, + toDst: path.relative(dstdir, srcpath) + }); + }); + } + }); + } + }; + var symlinkPathsSync = function(srcpath, dstpath) { + let exists; + if (path.isAbsolute(srcpath)) { + exists = fs.existsSync(srcpath); + if (!exists) + throw new Error("absolute srcpath does not exist"); + return { + toCwd: srcpath, + toDst: srcpath + }; + } else { + const dstdir = path.dirname(dstpath); + const relativeToDst = path.join(dstdir, srcpath); + exists = fs.existsSync(relativeToDst); + if (exists) { + return { + toCwd: relativeToDst, + toDst: srcpath + }; + } else { + exists = fs.existsSync(srcpath); + if (!exists) + throw new Error("relative srcpath does not exist"); + return { + toCwd: srcpath, + toDst: path.relative(dstdir, srcpath) + }; + } + } + }; + var path = __require("path"); + var fs = require_graceful_fs(); + var pathExists = require_path_exists().pathExists; + module.exports = { + symlinkPaths, + symlinkPathsSync + }; +}); + +// node_modules/fs-extra/lib/ensure/symlink-type.js +var require_symlink_type = __commonJS((exports, module) => { + var symlinkType = function(srcpath, type, callback) { + callback = typeof type === "function" ? type : callback; + type = typeof type === "function" ? false : type; + if (type) + return callback(null, type); + fs.lstat(srcpath, (err, stats) => { + if (err) + return callback(null, "file"); + type = stats && stats.isDirectory() ? "dir" : "file"; + callback(null, type); + }); + }; + var symlinkTypeSync = function(srcpath, type) { + let stats; + if (type) + return type; + try { + stats = fs.lstatSync(srcpath); + } catch { + return "file"; + } + return stats && stats.isDirectory() ? "dir" : "file"; + }; + var fs = require_graceful_fs(); + module.exports = { + symlinkType, + symlinkTypeSync + }; +}); + +// node_modules/fs-extra/lib/ensure/symlink.js +var require_symlink = __commonJS((exports, module) => { + var createSymlink = function(srcpath, dstpath, type, callback) { + callback = typeof type === "function" ? type : callback; + type = typeof type === "function" ? false : type; + fs.lstat(dstpath, (err, stats) => { + if (!err && stats.isSymbolicLink()) { + Promise.all([ + fs.stat(srcpath), + fs.stat(dstpath) + ]).then(([srcStat, dstStat]) => { + if (areIdentical(srcStat, dstStat)) + return callback(null); + _createSymlink(srcpath, dstpath, type, callback); + }); + } else + _createSymlink(srcpath, dstpath, type, callback); + }); + }; + var _createSymlink = function(srcpath, dstpath, type, callback) { + symlinkPaths(srcpath, dstpath, (err, relative2) => { + if (err) + return callback(err); + srcpath = relative2.toDst; + symlinkType(relative2.toCwd, type, (err2, type2) => { + if (err2) + return callback(err2); + const dir = path.dirname(dstpath); + pathExists(dir, (err3, dirExists) => { + if (err3) + return callback(err3); + if (dirExists) + return fs.symlink(srcpath, dstpath, type2, callback); + mkdirs(dir, (err4) => { + if (err4) + return callback(err4); + fs.symlink(srcpath, dstpath, type2, callback); + }); + }); + }); + }); + }; + var createSymlinkSync = function(srcpath, dstpath, type) { + let stats; + try { + stats = fs.lstatSync(dstpath); + } catch { + } + if (stats && stats.isSymbolicLink()) { + const srcStat = fs.statSync(srcpath); + const dstStat = fs.statSync(dstpath); + if (areIdentical(srcStat, dstStat)) + return; + } + const relative2 = symlinkPathsSync(srcpath, dstpath); + srcpath = relative2.toDst; + type = symlinkTypeSync(relative2.toCwd, type); + const dir = path.dirname(dstpath); + const exists = fs.existsSync(dir); + if (exists) + return fs.symlinkSync(srcpath, dstpath, type); + mkdirsSync(dir); + return fs.symlinkSync(srcpath, dstpath, type); + }; + var u = require_universalify().fromCallback; + var path = __require("path"); + var fs = require_fs(); + var _mkdirs = require_mkdirs(); + var mkdirs = _mkdirs.mkdirs; + var mkdirsSync = _mkdirs.mkdirsSync; + var _symlinkPaths = require_symlink_paths(); + var symlinkPaths = _symlinkPaths.symlinkPaths; + var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; + var _symlinkType = require_symlink_type(); + var symlinkType = _symlinkType.symlinkType; + var symlinkTypeSync = _symlinkType.symlinkTypeSync; + var pathExists = require_path_exists().pathExists; + var { areIdentical } = require_stat(); + module.exports = { + createSymlink: u(createSymlink), + createSymlinkSync + }; +}); + +// node_modules/fs-extra/lib/ensure/index.js +var require_ensure = __commonJS((exports, module) => { + var { createFile, createFileSync } = require_file(); + var { createLink, createLinkSync } = require_link(); + var { createSymlink, createSymlinkSync } = require_symlink(); + module.exports = { + createFile, + createFileSync, + ensureFile: createFile, + ensureFileSync: createFileSync, + createLink, + createLinkSync, + ensureLink: createLink, + ensureLinkSync: createLinkSync, + createSymlink, + createSymlinkSync, + ensureSymlink: createSymlink, + ensureSymlinkSync: createSymlinkSync + }; +}); + +// node_modules/jsonfile/utils.js +var require_utils2 = __commonJS((exports, module) => { + var stringify = function(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) { + const EOF = finalEOL ? EOL : ""; + const str = JSON.stringify(obj, replacer, spaces); + return str.replace(/\n/g, EOL) + EOF; + }; + var stripBom = function(content) { + if (Buffer.isBuffer(content)) + content = content.toString("utf8"); + return content.replace(/^\uFEFF/, ""); + }; + module.exports = { stringify, stripBom }; +}); + +// node_modules/jsonfile/index.js +var require_jsonfile = __commonJS((exports, module) => { + async function _readFile(file, options = {}) { + if (typeof options === "string") { + options = { encoding: options }; + } + const fs = options.fs || _fs; + const shouldThrow = "throws" in options ? options.throws : true; + let data = await universalify.fromCallback(fs.readFile)(file, options); + data = stripBom(data); + let obj; + try { + obj = JSON.parse(data, options ? options.reviver : null); + } catch (err) { + if (shouldThrow) { + err.message = `${file}: ${err.message}`; + throw err; + } else { + return null; + } + } + return obj; + } + var readFileSync4 = function(file, options = {}) { + if (typeof options === "string") { + options = { encoding: options }; + } + const fs = options.fs || _fs; + const shouldThrow = "throws" in options ? options.throws : true; + try { + let content = fs.readFileSync(file, options); + content = stripBom(content); + return JSON.parse(content, options.reviver); + } catch (err) { + if (shouldThrow) { + err.message = `${file}: ${err.message}`; + throw err; + } else { + return null; + } + } + }; + async function _writeFile(file, obj, options = {}) { + const fs = options.fs || _fs; + const str = stringify(obj, options); + await universalify.fromCallback(fs.writeFile)(file, str, options); + } + var writeFileSync = function(file, obj, options = {}) { + const fs = options.fs || _fs; + const str = stringify(obj, options); + return fs.writeFileSync(file, str, options); + }; + var _fs; + try { + _fs = require_graceful_fs(); + } catch (_) { + _fs = __require("fs"); + } + var universalify = require_universalify(); + var { stringify, stripBom } = require_utils2(); + var readFile = universalify.fromPromise(_readFile); + var writeFile2 = universalify.fromPromise(_writeFile); + var jsonfile = { + readFile, + readFileSync: readFileSync4, + writeFile: writeFile2, + writeFileSync + }; + module.exports = jsonfile; +}); + +// node_modules/fs-extra/lib/json/jsonfile.js +var require_jsonfile2 = __commonJS((exports, module) => { + var jsonFile = require_jsonfile(); + module.exports = { + readJson: jsonFile.readFile, + readJsonSync: jsonFile.readFileSync, + writeJson: jsonFile.writeFile, + writeJsonSync: jsonFile.writeFileSync + }; +}); + +// node_modules/fs-extra/lib/output-file/index.js +var require_output_file = __commonJS((exports, module) => { + var outputFile = function(file, data, encoding, callback) { + if (typeof encoding === "function") { + callback = encoding; + encoding = "utf8"; + } + const dir = path.dirname(file); + pathExists(dir, (err, itDoes) => { + if (err) + return callback(err); + if (itDoes) + return fs.writeFile(file, data, encoding, callback); + mkdir.mkdirs(dir, (err2) => { + if (err2) + return callback(err2); + fs.writeFile(file, data, encoding, callback); + }); + }); + }; + var outputFileSync = function(file, ...args) { + const dir = path.dirname(file); + if (fs.existsSync(dir)) { + return fs.writeFileSync(file, ...args); + } + mkdir.mkdirsSync(dir); + fs.writeFileSync(file, ...args); + }; + var u = require_universalify().fromCallback; + var fs = require_graceful_fs(); + var path = __require("path"); + var mkdir = require_mkdirs(); + var pathExists = require_path_exists().pathExists; + module.exports = { + outputFile: u(outputFile), + outputFileSync + }; +}); + +// node_modules/fs-extra/lib/json/output-json.js +var require_output_json = __commonJS((exports, module) => { + async function outputJson(file, data, options = {}) { + const str = stringify(data, options); + await outputFile(file, str, options); + } + var { stringify } = require_utils2(); + var { outputFile } = require_output_file(); + module.exports = outputJson; +}); + +// node_modules/fs-extra/lib/json/output-json-sync.js +var require_output_json_sync = __commonJS((exports, module) => { + var outputJsonSync = function(file, data, options) { + const str = stringify(data, options); + outputFileSync(file, str, options); + }; + var { stringify } = require_utils2(); + var { outputFileSync } = require_output_file(); + module.exports = outputJsonSync; +}); + +// node_modules/fs-extra/lib/json/index.js +var require_json = __commonJS((exports, module) => { + var u = require_universalify().fromPromise; + var jsonFile = require_jsonfile2(); + jsonFile.outputJson = u(require_output_json()); + jsonFile.outputJsonSync = require_output_json_sync(); + jsonFile.outputJSON = jsonFile.outputJson; + jsonFile.outputJSONSync = jsonFile.outputJsonSync; + jsonFile.writeJSON = jsonFile.writeJson; + jsonFile.writeJSONSync = jsonFile.writeJsonSync; + jsonFile.readJSON = jsonFile.readJson; + jsonFile.readJSONSync = jsonFile.readJsonSync; + module.exports = jsonFile; +}); + +// node_modules/fs-extra/lib/move/move.js +var require_move = __commonJS((exports, module) => { + var move = function(src, dest, opts, cb) { + if (typeof opts === "function") { + cb = opts; + opts = {}; + } + opts = opts || {}; + const overwrite = opts.overwrite || opts.clobber || false; + stat.checkPaths(src, dest, "move", opts, (err, stats) => { + if (err) + return cb(err); + const { srcStat, isChangingCase = false } = stats; + stat.checkParentPaths(src, srcStat, dest, "move", (err2) => { + if (err2) + return cb(err2); + if (isParentRoot(dest)) + return doRename(src, dest, overwrite, isChangingCase, cb); + mkdirp(path.dirname(dest), (err3) => { + if (err3) + return cb(err3); + return doRename(src, dest, overwrite, isChangingCase, cb); + }); + }); + }); + }; + var isParentRoot = function(dest) { + const parent = path.dirname(dest); + const parsedPath = path.parse(parent); + return parsedPath.root === parent; + }; + var doRename = function(src, dest, overwrite, isChangingCase, cb) { + if (isChangingCase) + return rename(src, dest, overwrite, cb); + if (overwrite) { + return remove(dest, (err) => { + if (err) + return cb(err); + return rename(src, dest, overwrite, cb); + }); + } + pathExists(dest, (err, destExists) => { + if (err) + return cb(err); + if (destExists) + return cb(new Error("dest already exists.")); + return rename(src, dest, overwrite, cb); + }); + }; + var rename = function(src, dest, overwrite, cb) { + fs.rename(src, dest, (err) => { + if (!err) + return cb(); + if (err.code !== "EXDEV") + return cb(err); + return moveAcrossDevice(src, dest, overwrite, cb); + }); + }; + var moveAcrossDevice = function(src, dest, overwrite, cb) { + const opts = { + overwrite, + errorOnExist: true, + preserveTimestamps: true + }; + copy(src, dest, opts, (err) => { + if (err) + return cb(err); + return remove(src, cb); + }); + }; + var fs = require_graceful_fs(); + var path = __require("path"); + var copy = require_copy2().copy; + var remove = require_remove().remove; + var mkdirp = require_mkdirs().mkdirp; + var pathExists = require_path_exists().pathExists; + var stat = require_stat(); + module.exports = move; +}); + +// node_modules/fs-extra/lib/move/move-sync.js +var require_move_sync = __commonJS((exports, module) => { + var moveSync = function(src, dest, opts) { + opts = opts || {}; + const overwrite = opts.overwrite || opts.clobber || false; + const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, "move", opts); + stat.checkParentPathsSync(src, srcStat, dest, "move"); + if (!isParentRoot(dest)) + mkdirpSync(path.dirname(dest)); + return doRename(src, dest, overwrite, isChangingCase); + }; + var isParentRoot = function(dest) { + const parent = path.dirname(dest); + const parsedPath = path.parse(parent); + return parsedPath.root === parent; + }; + var doRename = function(src, dest, overwrite, isChangingCase) { + if (isChangingCase) + return rename(src, dest, overwrite); + if (overwrite) { + removeSync(dest); + return rename(src, dest, overwrite); + } + if (fs.existsSync(dest)) + throw new Error("dest already exists."); + return rename(src, dest, overwrite); + }; + var rename = function(src, dest, overwrite) { + try { + fs.renameSync(src, dest); + } catch (err) { + if (err.code !== "EXDEV") + throw err; + return moveAcrossDevice(src, dest, overwrite); + } + }; + var moveAcrossDevice = function(src, dest, overwrite) { + const opts = { + overwrite, + errorOnExist: true, + preserveTimestamps: true + }; + copySync(src, dest, opts); + return removeSync(src); + }; + var fs = require_graceful_fs(); + var path = __require("path"); + var copySync = require_copy2().copySync; + var removeSync = require_remove().removeSync; + var mkdirpSync = require_mkdirs().mkdirpSync; + var stat = require_stat(); + module.exports = moveSync; +}); + +// node_modules/fs-extra/lib/move/index.js +var require_move2 = __commonJS((exports, module) => { + var u = require_universalify().fromCallback; + module.exports = { + move: u(require_move()), + moveSync: require_move_sync() + }; +}); + +// node_modules/fs-extra/lib/index.js +var require_lib = __commonJS((exports, module) => { + module.exports = { + ...require_fs(), + ...require_copy2(), + ...require_empty(), + ...require_ensure(), + ...require_json(), + ...require_mkdirs(), + ...require_move2(), + ...require_output_file(), + ...require_path_exists(), + ...require_remove() + }; +}); + +// node_modules/fast-glob/out/utils/array.js +var require_array = __commonJS((exports) => { + var flatten = function(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); + }; + var splitWhen = function(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } else { + result[groupIndex].push(item); + } + } + return result; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.splitWhen = exports.flatten = undefined; + exports.flatten = flatten; + exports.splitWhen = splitWhen; +}); + +// node_modules/fast-glob/out/utils/errno.js +var require_errno = __commonJS((exports) => { + var isEnoentCodeError = function(error2) { + return error2.code === "ENOENT"; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isEnoentCodeError = undefined; + exports.isEnoentCodeError = isEnoentCodeError; +}); + +// node_modules/fast-glob/out/utils/fs.js +var require_fs2 = __commonJS((exports) => { + var createDirentFromStats = function(name, stats) { + return new DirentFromStats(name, stats); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createDirentFromStats = undefined; + + class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } + } + exports.createDirentFromStats = createDirentFromStats; +}); + +// node_modules/fast-glob/out/utils/path.js +var require_path = __commonJS((exports) => { + var unixify = function(filepath) { + return filepath.replace(/\\/g, "/"); + }; + var makeAbsolute = function(cwd, filepath) { + return path.resolve(cwd, filepath); + }; + var removeLeadingDotSegment = function(entry) { + if (entry.charAt(0) === ".") { + const secondCharactery = entry.charAt(1); + if (secondCharactery === "/" || secondCharactery === "\\") { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; + }; + var escapeWindowsPath = function(pattern) { + return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); + }; + var escapePosixPath = function(pattern) { + return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); + }; + var convertWindowsPathToPattern = function(filepath) { + return escapeWindowsPath(filepath).replace(DOS_DEVICE_PATH_RE, "//$1").replace(WINDOWS_BACKSLASHES_RE, "/"); + }; + var convertPosixPathToPattern = function(filepath) { + return escapePosixPath(filepath); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = undefined; + var os = __require("os"); + var path = __require("path"); + var IS_WINDOWS_PLATFORM = os.platform() === "win32"; + var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; + var POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; + var WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([(){}]|^!|[!+@](?=\())/g; + var DOS_DEVICE_PATH_RE = /^\\\\([.?])/; + var WINDOWS_BACKSLASHES_RE = /\\(?![!()+@{}])/g; + exports.unixify = unixify; + exports.makeAbsolute = makeAbsolute; + exports.removeLeadingDotSegment = removeLeadingDotSegment; + exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; + exports.escapeWindowsPath = escapeWindowsPath; + exports.escapePosixPath = escapePosixPath; + exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; + exports.convertWindowsPathToPattern = convertWindowsPathToPattern; + exports.convertPosixPathToPattern = convertPosixPathToPattern; +}); + +// node_modules/is-extglob/index.js +var require_is_extglob = __commonJS((exports, module) => { + /*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ + module.exports = function isExtglob(str) { + if (typeof str !== "string" || str === "") { + return false; + } + var match; + while (match = /(\\).|([@?!+*]\(.*\))/g.exec(str)) { + if (match[2]) + return true; + str = str.slice(match.index + match[0].length); + } + return false; + }; +}); + +// node_modules/is-glob/index.js +var require_is_glob = __commonJS((exports, module) => { + /*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + var isExtglob = require_is_extglob(); + var chars = { "{": "}", "(": ")", "[": "]" }; + var strictCheck = function(str) { + if (str[0] === "!") { + return true; + } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str.length) { + if (str[index] === "*") { + return true; + } + if (str[index + 1] === "?" && /[\].+)]/.test(str[index])) { + return true; + } + if (closeSquareIndex !== -1 && str[index] === "[" && str[index + 1] !== "]") { + if (closeSquareIndex < index) { + closeSquareIndex = str.indexOf("]", index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } + if (closeCurlyIndex !== -1 && str[index] === "{" && str[index + 1] !== "}") { + closeCurlyIndex = str.indexOf("}", index); + if (closeCurlyIndex > index) { + backSlashIndex = str.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } + if (closeParenIndex !== -1 && str[index] === "(" && str[index + 1] === "?" && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ")") { + closeParenIndex = str.indexOf(")", index); + if (closeParenIndex > index) { + backSlashIndex = str.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + if (pipeIndex !== -1 && str[index] === "(" && str[index + 1] !== "|") { + if (pipeIndex < index) { + pipeIndex = str.indexOf("|", index); + } + if (pipeIndex !== -1 && str[pipeIndex + 1] !== ")") { + closeParenIndex = str.indexOf(")", pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str.indexOf("\\", pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } + if (str[index] === "\\") { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + if (str[index] === "!") { + return true; + } + } else { + index++; + } + } + return false; + }; + var relaxedCheck = function(str) { + if (str[0] === "!") { + return true; + } + var index = 0; + while (index < str.length) { + if (/[*?{}()[\]]/.test(str[index])) { + return true; + } + if (str[index] === "\\") { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + if (str[index] === "!") { + return true; + } + } else { + index++; + } + } + return false; + }; + module.exports = function isGlob(str, options) { + if (typeof str !== "string" || str === "") { + return false; + } + if (isExtglob(str)) { + return true; + } + var check = strictCheck; + if (options && options.strict === false) { + check = relaxedCheck; + } + return check(str); + }; +}); + +// node_modules/glob-parent/index.js +var require_glob_parent = __commonJS((exports, module) => { + var isGlob = require_is_glob(); + var pathPosixDirname = __require("path").posix.dirname; + var isWin32 = __require("os").platform() === "win32"; + var slash = "/"; + var backslash = /\\/g; + var enclosure = /[\{\[].*[\}\]]$/; + var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; + var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + if (enclosure.test(str)) { + str += slash; + } + str += "a"; + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); + return str.replace(escaped, "$1"); + }; +}); + +// node_modules/braces/lib/utils.js +var require_utils3 = __commonJS((exports) => { + exports.isInteger = (num) => { + if (typeof num === "number") { + return Number.isInteger(num); + } + if (typeof num === "string" && num.trim() !== "") { + return Number.isInteger(Number(num)); + } + return false; + }; + exports.find = (node2, type) => node2.nodes.find((node3) => node3.type === type); + exports.exceedsLimit = (min, max, step2 = 1, limit) => { + if (limit === false) + return false; + if (!exports.isInteger(min) || !exports.isInteger(max)) + return false; + return (Number(max) - Number(min)) / Number(step2) >= limit; + }; + exports.escapeNode = (block, n = 0, type) => { + let node2 = block.nodes[n]; + if (!node2) + return; + if (type && node2.type === type || node2.type === "open" || node2.type === "close") { + if (node2.escaped !== true) { + node2.value = "\\" + node2.value; + node2.escaped = true; + } + } + }; + exports.encloseBrace = (node2) => { + if (node2.type !== "brace") + return false; + if (node2.commas >> 0 + node2.ranges >> 0 === 0) { + node2.invalid = true; + return true; + } + return false; + }; + exports.isInvalidBrace = (block) => { + if (block.type !== "brace") + return false; + if (block.invalid === true || block.dollar) + return true; + if (block.commas >> 0 + block.ranges >> 0 === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; + }; + exports.isOpenOrClose = (node2) => { + if (node2.type === "open" || node2.type === "close") { + return true; + } + return node2.open === true || node2.close === true; + }; + exports.reduce = (nodes) => nodes.reduce((acc, node2) => { + if (node2.type === "text") + acc.push(node2.value); + if (node2.type === "range") + node2.type = "text"; + return acc; + }, []); + exports.flatten = (...args) => { + const result = []; + const flat = (arr) => { + for (let i = 0;i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele, result) : ele !== undefined && result.push(ele); + } + return result; + }; + flat(args); + return result; + }; +}); + +// node_modules/braces/lib/stringify.js +var require_stringify = __commonJS((exports, module) => { + var utils = require_utils3(); + module.exports = (ast, options = {}) => { + let stringify = (node2, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); + let invalidNode = node2.invalid === true && options.escapeInvalid === true; + let output = ""; + if (node2.value) { + if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node2)) { + return "\\" + node2.value; + } + return node2.value; + } + if (node2.value) { + return node2.value; + } + if (node2.nodes) { + for (let child of node2.nodes) { + output += stringify(child); + } + } + return output; + }; + return stringify(ast); + }; +}); + +// node_modules/is-number/index.js +var require_is_number = __commonJS((exports, module) => { + /*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + module.exports = function(num) { + if (typeof num === "number") { + return num - num === 0; + } + if (typeof num === "string" && num.trim() !== "") { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; + }; +}); + +// node_modules/to-regex-range/index.js +var require_to_regex_range = __commonJS((exports, module) => { + var collatePatterns = function(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, "-", false, options) || []; + let onlyPositive = filterPatterns(pos, neg, "", false, options) || []; + let intersected = filterPatterns(neg, pos, "-?", true, options) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join("|"); + }; + var splitToRanges = function(min, max) { + let nines = 1; + let zeros = 1; + let stop = countNines(min, nines); + let stops = new Set([max]); + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + stop = countZeros(max + 1, zeros) - 1; + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } + stops = [...stops]; + stops.sort(compare); + return stops; + }; + var rangeToPattern = function(start, stop, options) { + if (start === stop) { + return { pattern: start, count: [], digits: 0 }; + } + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ""; + let count = 0; + for (let i = 0;i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; + if (startDigit === stopDigit) { + pattern += startDigit; + } else if (startDigit !== "0" || stopDigit !== "9") { + pattern += toCharacterClass(startDigit, stopDigit, options); + } else { + count++; + } + } + if (count) { + pattern += options.shorthand === true ? "\\d" : "[0-9]"; + } + return { pattern, count: [count], digits }; + }; + var splitToPatterns = function(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; + for (let i = 0;i < ranges.length; i++) { + let max2 = ranges[i]; + let obj = rangeToPattern(String(start), String(max2), options); + let zeros = ""; + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max2 + 1; + continue; + } + if (tok.isPadded) { + zeros = padZeros(max2, tok, options); + } + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max2 + 1; + prev = obj; + } + return tokens; + }; + var filterPatterns = function(arr, comparison, prefix, intersection, options) { + let result = []; + for (let ele of arr) { + let { string } = ele; + if (!intersection && !contains(comparison, "string", string)) { + result.push(prefix + string); + } + if (intersection && contains(comparison, "string", string)) { + result.push(prefix + string); + } + } + return result; + }; + var zip = function(a, b) { + let arr = []; + for (let i = 0;i < a.length; i++) + arr.push([a[i], b[i]]); + return arr; + }; + var compare = function(a, b) { + return a > b ? 1 : b > a ? -1 : 0; + }; + var contains = function(arr, key, val) { + return arr.some((ele) => ele[key] === val); + }; + var countNines = function(min, len) { + return Number(String(min).slice(0, -len) + "9".repeat(len)); + }; + var countZeros = function(integer, zeros) { + return integer - integer % Math.pow(10, zeros); + }; + var toQuantifier = function(digits) { + let [start = 0, stop = ""] = digits; + if (stop || start > 1) { + return `{${start + (stop ? "," + stop : "")}}`; + } + return ""; + }; + var toCharacterClass = function(a, b, options) { + return `[${a}${b - a === 1 ? "" : "-"}${b}]`; + }; + var hasPadding = function(str) { + return /^-?(0+)\d/.test(str); + }; + var padZeros = function(value, tok, options) { + if (!tok.isPadded) { + return value; + } + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; + switch (diff) { + case 0: + return ""; + case 1: + return relax ? "0?" : "0"; + case 2: + return relax ? "0{0,2}" : "00"; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; + } + } + }; + /*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ + var isNumber = require_is_number(); + var toRegexRange = (min, max, options) => { + if (isNumber(min) === false) { + throw new TypeError("toRegexRange: expected the first argument to be a number"); + } + if (max === undefined || min === max) { + return String(min); + } + if (isNumber(max) === false) { + throw new TypeError("toRegexRange: expected the second argument to be a number."); + } + let opts = { relaxZeros: true, ...options }; + if (typeof opts.strictZeros === "boolean") { + opts.relaxZeros = opts.strictZeros === false; + } + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap2 = String(opts.wrap); + let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap2; + if (toRegexRange.cache.hasOwnProperty(cacheKey)) { + return toRegexRange.cache[cacheKey].result; + } + let a = Math.min(min, max); + let b = Math.max(min, max); + if (Math.abs(a - b) === 1) { + let result = min + "|" + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + let isPadded = hasPadding(min) || hasPadding(max); + let state = { min, max, a, b }; + let positives = []; + let negatives = []; + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; + } + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives, opts); + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && positives.length + negatives.length > 1) { + state.result = `(?:${state.result})`; + } + toRegexRange.cache[cacheKey] = state; + return state.result; + }; + toRegexRange.cache = {}; + toRegexRange.clearCache = () => toRegexRange.cache = {}; + module.exports = toRegexRange; +}); + +// node_modules/fill-range/index.js +var require_fill_range = __commonJS((exports, module) => { + /*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + var util = __require("util"); + var toRegexRange = require_to_regex_range(); + var isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); + var transform = (toNumber) => { + return (value) => toNumber === true ? Number(value) : String(value); + }; + var isValidValue = (value) => { + return typeof value === "number" || typeof value === "string" && value !== ""; + }; + var isNumber = (num) => Number.isInteger(+num); + var zeros = (input) => { + let value = `${input}`; + let index = -1; + if (value[0] === "-") + value = value.slice(1); + if (value === "0") + return false; + while (value[++index] === "0") + ; + return index > 0; + }; + var stringify = (start, end, options) => { + if (typeof start === "string" || typeof end === "string") { + return true; + } + return options.stringify === true; + }; + var pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === "-" ? "-" : ""; + if (dash) + input = input.slice(1); + input = dash + input.padStart(dash ? maxLength - 1 : maxLength, "0"); + } + if (toNumber === false) { + return String(input); + } + return input; + }; + var toMaxLen = (input, maxLength) => { + let negative = input[0] === "-" ? "-" : ""; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) + input = "0" + input; + return negative ? "-" + input : input; + }; + var toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + let prefix = options.capture ? "" : "?:"; + let positives = ""; + let negatives = ""; + let result; + if (parts.positives.length) { + positives = parts.positives.join("|"); + } + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join("|")})`; + } + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + if (options.wrap) { + return `(${prefix}${result})`; + } + return result; + }; + var toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); + } + let start = String.fromCharCode(a); + if (a === b) + return start; + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; + }; + var toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap2 = options.wrap === true; + let prefix = options.capture ? "" : "?:"; + return wrap2 ? `(${prefix}${start.join("|")})` : start.join("|"); + } + return toRegexRange(start, end, options); + }; + var rangeError = (...args) => { + return new RangeError("Invalid range arguments: " + util.inspect(...args)); + }; + var invalidRange = (start, end, options) => { + if (options.strictRanges === true) + throw rangeError([start, end]); + return []; + }; + var invalidStep = (step2, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step2}" to be a number`); + } + return []; + }; + var fillNumbers = (start, end, step2 = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) + throw rangeError([start, end]); + return []; + } + if (a === 0) + a = 0; + if (b === 0) + b = 0; + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step2); + step2 = Math.max(Math.abs(step2), 1); + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format3 = options.transform || transform(toNumber); + if (options.toRegex && step2 === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + let parts = { negatives: [], positives: [] }; + let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num)); + let range = []; + let index = 0; + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step2 > 1) { + push(a); + } else { + range.push(pad(format3(a, index), maxLen, toNumber)); + } + a = descending ? a - step2 : a + step2; + index++; + } + if (options.toRegex === true) { + return step2 > 1 ? toSequence(parts, options) : toRegex(range, null, { wrap: false, ...options }); + } + return range; + }; + var fillLetters = (start, end, step2 = 1, options = {}) => { + if (!isNumber(start) && start.length > 1 || !isNumber(end) && end.length > 1) { + return invalidRange(start, end, options); + } + let format3 = options.transform || ((val) => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + if (options.toRegex && step2 === 1) { + return toRange(min, max, false, options); + } + let range = []; + let index = 0; + while (descending ? a >= b : a <= b) { + range.push(format3(a, index)); + a = descending ? a - step2 : a + step2; + index++; + } + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + return range; + }; + var fill = (start, end, step2, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + if (typeof step2 === "function") { + return fill(start, end, 1, { transform: step2 }); + } + if (isObject(step2)) { + return fill(start, end, 0, step2); + } + let opts = { ...options }; + if (opts.capture === true) + opts.wrap = true; + step2 = step2 || opts.step || 1; + if (!isNumber(step2)) { + if (step2 != null && !isObject(step2)) + return invalidStep(step2, opts); + return fill(start, end, 1, step2); + } + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step2, opts); + } + return fillLetters(start, end, Math.max(Math.abs(step2), 1), opts); + }; + module.exports = fill; +}); + +// node_modules/braces/lib/compile.js +var require_compile = __commonJS((exports, module) => { + var fill = require_fill_range(); + var utils = require_utils3(); + var compile = (ast, options = {}) => { + let walk = (node2, parent = {}) => { + let invalidBlock = utils.isInvalidBrace(parent); + let invalidNode = node2.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? "\\" : ""; + let output = ""; + if (node2.isOpen === true) { + return prefix + node2.value; + } + if (node2.isClose === true) { + return prefix + node2.value; + } + if (node2.type === "open") { + return invalid ? prefix + node2.value : "("; + } + if (node2.type === "close") { + return invalid ? prefix + node2.value : ")"; + } + if (node2.type === "comma") { + return node2.prev.type === "comma" ? "" : invalid ? node2.value : "|"; + } + if (node2.value) { + return node2.value; + } + if (node2.nodes && node2.ranges > 0) { + let args = utils.reduce(node2.nodes); + let range = fill(...args, { ...options, wrap: false, toRegex: true }); + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + if (node2.nodes) { + for (let child of node2.nodes) { + output += walk(child, node2); + } + } + return output; + }; + return walk(ast); + }; + module.exports = compile; +}); + +// node_modules/braces/lib/expand.js +var require_expand = __commonJS((exports, module) => { + var fill = require_fill_range(); + var stringify = require_stringify(); + var utils = require_utils3(); + var append = (queue = "", stash = "", enclose = false) => { + let result = []; + queue = [].concat(queue); + stash = [].concat(stash); + if (!stash.length) + return queue; + if (!queue.length) { + return enclose ? utils.flatten(stash).map((ele) => `{${ele}}`) : stash; + } + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === "string") + ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele); + } + } + } + return utils.flatten(result); + }; + var expand = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit; + let walk = (node2, parent = {}) => { + node2.queue = []; + let p = parent; + let q = parent.queue; + while (p.type !== "brace" && p.type !== "root" && p.parent) { + p = p.parent; + q = p.queue; + } + if (node2.invalid || node2.dollar) { + q.push(append(q.pop(), stringify(node2, options))); + return; + } + if (node2.type === "brace" && node2.invalid !== true && node2.nodes.length === 2) { + q.push(append(q.pop(), ["{}"])); + return; + } + if (node2.nodes && node2.ranges > 0) { + let args = utils.reduce(node2.nodes); + if (utils.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit."); + } + let range = fill(...args, options); + if (range.length === 0) { + range = stringify(node2, options); + } + q.push(append(q.pop(), range)); + node2.nodes = []; + return; + } + let enclose = utils.encloseBrace(node2); + let queue = node2.queue; + let block = node2; + while (block.type !== "brace" && block.type !== "root" && block.parent) { + block = block.parent; + queue = block.queue; + } + for (let i = 0;i < node2.nodes.length; i++) { + let child = node2.nodes[i]; + if (child.type === "comma" && node2.type === "brace") { + if (i === 1) + queue.push(""); + queue.push(""); + continue; + } + if (child.type === "close") { + q.push(append(q.pop(), queue, enclose)); + continue; + } + if (child.value && child.type !== "open") { + queue.push(append(queue.pop(), child.value)); + continue; + } + if (child.nodes) { + walk(child, node2); + } + } + return queue; + }; + return utils.flatten(walk(ast)); + }; + module.exports = expand; +}); + +// node_modules/braces/lib/constants.js +var require_constants = __commonJS((exports, module) => { + module.exports = { + MAX_LENGTH: 1024 * 64, + CHAR_0: "0", + CHAR_9: "9", + CHAR_UPPERCASE_A: "A", + CHAR_LOWERCASE_A: "a", + CHAR_UPPERCASE_Z: "Z", + CHAR_LOWERCASE_Z: "z", + CHAR_LEFT_PARENTHESES: "(", + CHAR_RIGHT_PARENTHESES: ")", + CHAR_ASTERISK: "*", + CHAR_AMPERSAND: "&", + CHAR_AT: "@", + CHAR_BACKSLASH: "\\", + CHAR_BACKTICK: "`", + CHAR_CARRIAGE_RETURN: "\r", + CHAR_CIRCUMFLEX_ACCENT: "^", + CHAR_COLON: ":", + CHAR_COMMA: ",", + CHAR_DOLLAR: "$", + CHAR_DOT: ".", + CHAR_DOUBLE_QUOTE: '"', + CHAR_EQUAL: "=", + CHAR_EXCLAMATION_MARK: "!", + CHAR_FORM_FEED: "\f", + CHAR_FORWARD_SLASH: "/", + CHAR_HASH: "#", + CHAR_HYPHEN_MINUS: "-", + CHAR_LEFT_ANGLE_BRACKET: "<", + CHAR_LEFT_CURLY_BRACE: "{", + CHAR_LEFT_SQUARE_BRACKET: "[", + CHAR_LINE_FEED: "\n", + CHAR_NO_BREAK_SPACE: "\xA0", + CHAR_PERCENT: "%", + CHAR_PLUS: "+", + CHAR_QUESTION_MARK: "?", + CHAR_RIGHT_ANGLE_BRACKET: ">", + CHAR_RIGHT_CURLY_BRACE: "}", + CHAR_RIGHT_SQUARE_BRACKET: "]", + CHAR_SEMICOLON: ";", + CHAR_SINGLE_QUOTE: "\'", + CHAR_SPACE: " ", + CHAR_TAB: "\t", + CHAR_UNDERSCORE: "_", + CHAR_VERTICAL_LINE: "|", + CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF" + }; +}); + +// node_modules/braces/lib/parse.js +var require_parse = __commonJS((exports, module) => { + var stringify = require_stringify(); + var { + MAX_LENGTH, + CHAR_BACKSLASH, + CHAR_BACKTICK, + CHAR_COMMA, + CHAR_DOT, + CHAR_LEFT_PARENTHESES, + CHAR_RIGHT_PARENTHESES, + CHAR_LEFT_CURLY_BRACE, + CHAR_RIGHT_CURLY_BRACE, + CHAR_LEFT_SQUARE_BRACKET, + CHAR_RIGHT_SQUARE_BRACKET, + CHAR_DOUBLE_QUOTE, + CHAR_SINGLE_QUOTE, + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE + } = require_constants(); + var parse = (input, options = {}) => { + if (typeof input !== "string") { + throw new TypeError("Expected a string"); + } + let opts = options || {}; + let max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + let ast = { type: "root", input, nodes: [] }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + let memo = {}; + const advance = () => input[index++]; + const push = (node2) => { + if (node2.type === "text" && prev.type === "dot") { + prev.type = "text"; + } + if (prev && prev.type === "text" && node2.type === "text") { + prev.value += node2.value; + return; + } + block.nodes.push(node2); + node2.parent = block; + node2.prev = prev; + prev = node2; + return node2; + }; + push({ type: "bos" }); + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + if (value === CHAR_BACKSLASH) { + push({ type: "text", value: (options.keepEscaping ? value : "") + advance() }); + continue; + } + if (value === CHAR_RIGHT_SQUARE_BRACKET) { + push({ type: "text", value: "\\" + value }); + continue; + } + if (value === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + let closed = true; + let next; + while (index < length && (next = advance())) { + value += next; + if (next === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + continue; + } + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + brackets--; + if (brackets === 0) { + break; + } + } + } + push({ type: "text", value }); + continue; + } + if (value === CHAR_LEFT_PARENTHESES) { + block = push({ type: "paren", nodes: [] }); + stack.push(block); + push({ type: "text", value }); + continue; + } + if (value === CHAR_RIGHT_PARENTHESES) { + if (block.type !== "paren") { + push({ type: "text", value }); + continue; + } + block = stack.pop(); + push({ type: "text", value }); + block = stack[stack.length - 1]; + continue; + } + if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { + let open = value; + let next; + if (options.keepQuotes !== true) { + value = ""; + } + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + if (next === open) { + if (options.keepQuotes === true) + value += next; + break; + } + value += next; + } + push({ type: "text", value }); + continue; + } + if (value === CHAR_LEFT_CURLY_BRACE) { + depth++; + let dollar = prev.value && prev.value.slice(-1) === "$" || block.dollar === true; + let brace = { + type: "brace", + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + block = push(brace); + stack.push(block); + push({ type: "open", value }); + continue; + } + if (value === CHAR_RIGHT_CURLY_BRACE) { + if (block.type !== "brace") { + push({ type: "text", value }); + continue; + } + let type = "close"; + block = stack.pop(); + block.close = true; + push({ type, value }); + depth--; + block = stack[stack.length - 1]; + continue; + } + if (value === CHAR_COMMA && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { type: "text", value: stringify(block) }]; + } + push({ type: "comma", value }); + block.commas++; + continue; + } + if (value === CHAR_DOT && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + if (depth === 0 || siblings.length === 0) { + push({ type: "text", value }); + continue; + } + if (prev.type === "dot") { + block.range = []; + prev.value += value; + prev.type = "range"; + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = "text"; + continue; + } + block.ranges++; + block.args = []; + continue; + } + if (prev.type === "range") { + siblings.pop(); + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + push({ type: "dot", value }); + continue; + } + push({ type: "text", value }); + } + do { + block = stack.pop(); + if (block.type !== "root") { + block.nodes.forEach((node2) => { + if (!node2.nodes) { + if (node2.type === "open") + node2.isOpen = true; + if (node2.type === "close") + node2.isClose = true; + if (!node2.nodes) + node2.type = "text"; + node2.invalid = true; + } + }); + let parent = stack[stack.length - 1]; + let index2 = parent.nodes.indexOf(block); + parent.nodes.splice(index2, 1, ...block.nodes); + } + } while (stack.length > 0); + push({ type: "eos" }); + return ast; + }; + module.exports = parse; +}); + +// node_modules/braces/index.js +var require_braces = __commonJS((exports, module) => { + var stringify = require_stringify(); + var compile = require_compile(); + var expand = require_expand(); + var parse = require_parse(); + var braces = (input, options = {}) => { + let output = []; + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; + }; + braces.parse = (input, options = {}) => parse(input, options); + braces.stringify = (input, options = {}) => { + if (typeof input === "string") { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); + }; + braces.compile = (input, options = {}) => { + if (typeof input === "string") { + input = braces.parse(input, options); + } + return compile(input, options); + }; + braces.expand = (input, options = {}) => { + if (typeof input === "string") { + input = braces.parse(input, options); + } + let result = expand(input, options); + if (options.noempty === true) { + result = result.filter(Boolean); + } + if (options.nodupes === true) { + result = [...new Set(result)]; + } + return result; + }; + braces.create = (input, options = {}) => { + if (input === "" || input.length < 3) { + return [input]; + } + return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); + }; + module.exports = braces; +}); + +// node_modules/picomatch/lib/constants.js +var require_constants2 = __commonJS((exports, module) => { + var path = __require("path"); + var WIN_SLASH = "\\\\/"; + var WIN_NO_SLASH = `[^${WIN_SLASH}]`; + var DOT_LITERAL = "\\."; + var PLUS_LITERAL = "\\+"; + var QMARK_LITERAL = "\\?"; + var SLASH_LITERAL = "\\/"; + var ONE_CHAR = "(?=.)"; + var QMARK = "[^/]"; + var END_ANCHOR = `(?:${SLASH_LITERAL}|\$)`; + var START_ANCHOR = `(?:^|${SLASH_LITERAL})`; + var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; + var NO_DOT = `(?!${DOT_LITERAL})`; + var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; + var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; + var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; + var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; + var STAR = `${QMARK}*?`; + var POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR + }; + var WINDOWS_CHARS = { + ...POSIX_CHARS, + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|\$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|\$)` + }; + var POSIX_REGEX_SOURCE = { + alnum: "a-zA-Z0-9", + alpha: "a-zA-Z", + ascii: "\\x00-\\x7F", + blank: " \\t", + cntrl: "\\x00-\\x1F\\x7F", + digit: "0-9", + graph: "\\x21-\\x7E", + lower: "a-z", + print: "\\x20-\\x7E ", + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: " \\t\\r\\n\\v\\f", + upper: "A-Z", + word: "A-Za-z0-9_", + xdigit: "A-Fa-f0-9" + }; + module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, + REPLACEMENTS: { + "***": "*", + "**/**": "**", + "**/**/**": "**" + }, + CHAR_0: 48, + CHAR_9: 57, + CHAR_UPPERCASE_A: 65, + CHAR_LOWERCASE_A: 97, + CHAR_UPPERCASE_Z: 90, + CHAR_LOWERCASE_Z: 122, + CHAR_LEFT_PARENTHESES: 40, + CHAR_RIGHT_PARENTHESES: 41, + CHAR_ASTERISK: 42, + CHAR_AMPERSAND: 38, + CHAR_AT: 64, + CHAR_BACKWARD_SLASH: 92, + CHAR_CARRIAGE_RETURN: 13, + CHAR_CIRCUMFLEX_ACCENT: 94, + CHAR_COLON: 58, + CHAR_COMMA: 44, + CHAR_DOT: 46, + CHAR_DOUBLE_QUOTE: 34, + CHAR_EQUAL: 61, + CHAR_EXCLAMATION_MARK: 33, + CHAR_FORM_FEED: 12, + CHAR_FORWARD_SLASH: 47, + CHAR_GRAVE_ACCENT: 96, + CHAR_HASH: 35, + CHAR_HYPHEN_MINUS: 45, + CHAR_LEFT_ANGLE_BRACKET: 60, + CHAR_LEFT_CURLY_BRACE: 123, + CHAR_LEFT_SQUARE_BRACKET: 91, + CHAR_LINE_FEED: 10, + CHAR_NO_BREAK_SPACE: 160, + CHAR_PERCENT: 37, + CHAR_PLUS: 43, + CHAR_QUESTION_MARK: 63, + CHAR_RIGHT_ANGLE_BRACKET: 62, + CHAR_RIGHT_CURLY_BRACE: 125, + CHAR_RIGHT_SQUARE_BRACKET: 93, + CHAR_SEMICOLON: 59, + CHAR_SINGLE_QUOTE: 39, + CHAR_SPACE: 32, + CHAR_TAB: 9, + CHAR_UNDERSCORE: 95, + CHAR_VERTICAL_LINE: 124, + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, + SEP: path.sep, + extglobChars(chars) { + return { + "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` }, + "?": { type: "qmark", open: "(?:", close: ")?" }, + "+": { type: "plus", open: "(?:", close: ")+" }, + "*": { type: "star", open: "(?:", close: ")*" }, + "@": { type: "at", open: "(?:", close: ")" } + }; + }, + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; + } + }; +}); + +// node_modules/picomatch/lib/utils.js +var require_utils4 = __commonJS((exports) => { + var path = __require("path"); + var win32 = process.platform === "win32"; + var { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL + } = require_constants2(); + exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); + exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str); + exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str); + exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1"); + exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/"); + exports.removeBackslashes = (str) => { + return str.replace(REGEX_REMOVE_BACKSLASH, (match) => { + return match === "\\" ? "" : match; + }); + }; + exports.supportsLookbehinds = () => { + const segs = process.version.slice(1).split(".").map(Number); + if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) { + return true; + } + return false; + }; + exports.isWindows = (options) => { + if (options && typeof options.windows === "boolean") { + return options.windows; + } + return win32 === true || path.sep === "\\"; + }; + exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) + return input; + if (input[idx - 1] === "\\") + return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; + }; + exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith("./")) { + output = output.slice(2); + state.prefix = "./"; + } + return output; + }; + exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? "" : "^"; + const append = options.contains ? "" : "$"; + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*\$)`; + } + return output; + }; +}); + +// node_modules/picomatch/lib/scan.js +var require_scan = __commonJS((exports, module) => { + var utils = require_utils4(); + var { + CHAR_ASTERISK, + CHAR_AT, + CHAR_BACKWARD_SLASH, + CHAR_COMMA, + CHAR_DOT, + CHAR_EXCLAMATION_MARK, + CHAR_FORWARD_SLASH, + CHAR_LEFT_CURLY_BRACE, + CHAR_LEFT_PARENTHESES, + CHAR_LEFT_SQUARE_BRACKET, + CHAR_PLUS, + CHAR_QUESTION_MARK, + CHAR_RIGHT_CURLY_BRACE, + CHAR_RIGHT_PARENTHESES, + CHAR_RIGHT_SQUARE_BRACKET + } = require_constants2(); + var isPathSeparator = (code) => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; + }; + var depth = (token) => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; + } + }; + var scan = (input, options) => { + const opts = options || {}; + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: "", depth: 0, isGlob: false }; + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); + }; + while (index < length) { + code = advance(); + let next; + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: "", depth: 0, isGlob: false }; + if (finished === true) + continue; + if (prev === CHAR_DOT && index === start + 1) { + start += 2; + continue; + } + lastIndex = index + 1; + continue; + } + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK; + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) + isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } + } + if (scanToEnd === true) { + continue; + } + break; + } + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + if (isGlob === true) { + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + } + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } + let base = str; + let prefix = ""; + let glob = ""; + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ""; + glob = str; + } else { + base = str; + } + if (base && base !== "" && base !== "/" && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + if (opts.unescape === true) { + if (glob) + glob = utils.removeBackslashes(glob); + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } + if (opts.parts === true || opts.tokens === true) { + let prevIndex; + for (let idx = 0;idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== "") { + parts.push(value); + } + prevIndex = i; + } + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } + state.slashes = slashes; + state.parts = parts; + } + return state; + }; + module.exports = scan; +}); + +// node_modules/picomatch/lib/parse.js +var require_parse2 = __commonJS((exports, module) => { + var constants = require_constants2(); + var utils = require_utils4(); + var { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS + } = constants; + var expandRange = (args, options) => { + if (typeof options.expandRange === "function") { + return options.expandRange(...args, options); + } + args.sort(); + const value = `[${args.join("-")}]`; + try { + new RegExp(value); + } catch (ex) { + return args.map((v) => utils.escapeRegex(v)).join(".."); + } + return value; + }; + var syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; + }; + var parse = (input, options) => { + if (typeof input !== "string") { + throw new TypeError("Expected a string"); + } + input = REPLACEMENTS[input] || input; + const opts = { ...options }; + const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + const bos = { type: "bos", value: "", output: opts.prepend || "" }; + const tokens = [bos]; + const capture = opts.capture ? "" : "?:"; + const win32 = utils.isWindows(options); + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; + const globstar = (opts2) => { + return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + const nodot = opts.dot ? "" : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; + if (opts.capture) { + star = `(${star})`; + } + if (typeof opts.noext === "boolean") { + opts.noextglob = opts.noext; + } + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: "", + output: "", + prefix: "", + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; + input = utils.removePrefix(input, state); + len = input.length; + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ""; + const remaining = () => input.slice(state.index + 1); + const consume = (value2 = "", num = 0) => { + state.consumed += value2; + state.index += num; + }; + const append = (token) => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; + const negate = () => { + let count = 1; + while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) { + advance(); + state.start++; + count++; + } + if (count % 2 === 0) { + return false; + } + state.negated = true; + state.start++; + return true; + }; + const increment2 = (type) => { + state[type]++; + stack.push(type); + }; + const decrement = (type) => { + state[type]--; + stack.pop(); + }; + const push = (tok) => { + if (prev.type === "globstar") { + const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace"); + const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren"); + if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = "star"; + prev.value = "*"; + prev.output = star; + state.output += prev.output; + } + } + if (extglobs.length && tok.type !== "paren") { + extglobs[extglobs.length - 1].inner += tok.value; + } + if (tok.value || tok.output) + append(tok); + if (prev && prev.type === "text" && tok.type === "text") { + prev.value += tok.value; + prev.output = (prev.output || "") + tok.value; + return; + } + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; + const extglobOpen = (type, value2) => { + const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" }; + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? "(" : "") + token.open; + increment2("parens"); + push({ type, value: value2, output: state.output ? "" : ONE_CHAR }); + push({ type: "paren", extglob: true, value: advance(), output }); + extglobs.push(token); + }; + const extglobClose = (token) => { + let output = token.close + (opts.capture ? ")" : ""); + let rest; + if (token.type === "negate") { + let extglobStar = star; + if (token.inner && token.inner.length > 1 && token.inner.includes("/")) { + extglobStar = globstar(opts); + } + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)\$))${extglobStar}`; + } + if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + const expression = parse(rest, { ...options, fastpaths: false }).output; + output = token.close = `)${expression})${extglobStar})`; + } + if (token.prev.type === "bos") { + state.negatedExtglob = true; + } + } + push({ type: "paren", extglob: true, value, output }); + decrement("parens"); + }; + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === "\\") { + backslashes = true; + return m; + } + if (first === "?") { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ""); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ""); + } + return QMARK.repeat(chars.length); + } + if (first === ".") { + return DOT_LITERAL.repeat(chars.length); + } + if (first === "*") { + if (esc) { + return esc + first + (rest ? star : ""); + } + return star; + } + return esc ? m : `\\${m}`; + }); + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ""); + } else { + output = output.replace(/\\+/g, (m) => { + return m.length % 2 === 0 ? "\\\\" : m ? "\\" : ""; + }); + } + } + if (output === input && opts.contains === true) { + state.output = input; + return state; + } + state.output = utils.wrapOutput(output, state, options); + return state; + } + while (!eos()) { + value = advance(); + if (value === "\0") { + continue; + } + if (value === "\\") { + const next = peek(); + if (next === "/" && opts.bash !== true) { + continue; + } + if (next === "." || next === ";") { + continue; + } + if (!next) { + value += "\\"; + push({ type: "text", value }); + continue; + } + const match = /^\\+/.exec(remaining()); + let slashes = 0; + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += "\\"; + } + } + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); + } + if (state.brackets === 0) { + push({ type: "text", value }); + continue; + } + } + if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) { + if (opts.posix !== false && value === ":") { + const inner = prev.value.slice(1); + if (inner.includes("[")) { + prev.posix = true; + if (inner.includes(":")) { + const idx = prev.value.lastIndexOf("["); + const pre = prev.value.slice(0, idx); + const rest2 = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest2]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } + if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") { + value = `\\${value}`; + } + if (value === "]" && (prev.value === "[" || prev.value === "[^")) { + value = `\\${value}`; + } + if (opts.posix === true && value === "!" && prev.value === "[") { + value = "^"; + } + prev.value += value; + append({ value }); + continue; + } + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: "text", value }); + } + continue; + } + if (value === "(") { + increment2("parens"); + push({ type: "paren", value }); + continue; + } + if (value === ")") { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("opening", "(")); + } + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + push({ type: "paren", value, output: state.parens ? ")" : "\\)" }); + decrement("parens"); + continue; + } + if (value === "[") { + if (opts.nobracket === true || !remaining().includes("]")) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("closing", "]")); + } + value = `\\${value}`; + } else { + increment2("brackets"); + } + push({ type: "bracket", value }); + continue; + } + if (value === "]") { + if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) { + push({ type: "text", value, output: `\\${value}` }); + continue; + } + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("opening", "[")); + } + push({ type: "text", value, output: `\\${value}` }); + continue; + } + decrement("brackets"); + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) { + value = `/${value}`; + } + prev.value += value; + append({ value }); + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } + if (value === "{" && opts.nobrace !== true) { + increment2("braces"); + const open = { + type: "brace", + value, + output: "(", + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; + braces.push(open); + push(open); + continue; + } + if (value === "}") { + const brace = braces[braces.length - 1]; + if (opts.nobrace === true || !brace) { + push({ type: "text", value, output: value }); + continue; + } + let output = ")"; + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; + for (let i = arr.length - 1;i >= 0; i--) { + tokens.pop(); + if (arr[i].type === "brace") { + break; + } + if (arr[i].type !== "dots") { + range.unshift(arr[i].value); + } + } + output = expandRange(range, opts); + state.backtrack = true; + } + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = "\\{"; + value = output = "\\}"; + state.output = out; + for (const t of toks) { + state.output += t.output || t.value; + } + } + push({ type: "brace", value, output }); + decrement("braces"); + braces.pop(); + continue; + } + if (value === "|") { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: "text", value }); + continue; + } + if (value === ",") { + let output = value; + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === "braces") { + brace.comma = true; + output = "|"; + } + push({ type: "comma", value, output }); + continue; + } + if (value === "/") { + if (prev.type === "dot" && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ""; + state.output = ""; + tokens.pop(); + prev = bos; + continue; + } + push({ type: "slash", value, output: SLASH_LITERAL }); + continue; + } + if (value === ".") { + if (state.braces > 0 && prev.type === "dot") { + if (prev.value === ".") + prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = "dots"; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } + if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") { + push({ type: "text", value, output: DOT_LITERAL }); + continue; + } + push({ type: "dot", value, output: DOT_LITERAL }); + continue; + } + if (value === "?") { + const isGroup = prev && prev.value === "("; + if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + extglobOpen("qmark", value); + continue; + } + if (prev && prev.type === "paren") { + const next = peek(); + let output = value; + if (next === "<" && !utils.supportsLookbehinds()) { + throw new Error("Node.js v10 or higher is required for regex lookbehinds"); + } + if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) { + output = `\\${value}`; + } + push({ type: "text", value, output }); + continue; + } + if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) { + push({ type: "qmark", value, output: QMARK_NO_DOT }); + continue; + } + push({ type: "qmark", value, output: QMARK }); + continue; + } + if (value === "!") { + if (opts.noextglob !== true && peek() === "(") { + if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) { + extglobOpen("negate", value); + continue; + } + } + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } + if (value === "+") { + if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + extglobOpen("plus", value); + continue; + } + if (prev && prev.value === "(" || opts.regex === false) { + push({ type: "plus", value, output: PLUS_LITERAL }); + continue; + } + if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) { + push({ type: "plus", value }); + continue; + } + push({ type: "plus", value: PLUS_LITERAL }); + continue; + } + if (value === "@") { + if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + push({ type: "at", extglob: true, value, output: "" }); + continue; + } + push({ type: "text", value }); + continue; + } + if (value !== "*") { + if (value === "$" || value === "^") { + value = `\\${value}`; + } + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } + push({ type: "text", value }); + continue; + } + if (prev && (prev.type === "globstar" || prev.star === true)) { + prev.type = "star"; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen("star", value); + continue; + } + if (prev.type === "star") { + if (opts.noglobstar === true) { + consume(value); + continue; + } + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === "slash" || prior.type === "bos"; + const afterStar = before && (before.type === "star" || before.type === "globstar"); + if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) { + push({ type: "star", value, output: "" }); + continue; + } + const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace"); + const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren"); + if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) { + push({ type: "star", value, output: "" }); + continue; + } + while (rest.slice(0, 3) === "/**") { + const after = input[state.index + 4]; + if (after && after !== "/") { + break; + } + rest = rest.slice(3); + consume("/**", 3); + } + if (prior.type === "bos" && eos()) { + prev.type = "globstar"; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } + if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + prev.type = "globstar"; + prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)"); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } + if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") { + const end = rest[1] !== undefined ? "|$" : ""; + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + prev.type = "globstar"; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; + state.output += prior.output + prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: "slash", value: "/", output: "" }); + continue; + } + if (prior.type === "bos" && rest[0] === "/") { + prev.type = "globstar"; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: "slash", value: "/", output: "" }); + continue; + } + state.output = state.output.slice(0, -prev.output.length); + prev.type = "globstar"; + prev.output = globstar(opts); + prev.value += value; + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } + const token = { type: "star", value, output: star }; + if (opts.bash === true) { + token.output = ".*?"; + if (prev.type === "bos" || prev.type === "slash") { + token.output = nodot + token.output; + } + push(token); + continue; + } + if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) { + token.output = value; + push(token); + continue; + } + if (state.index === state.start || prev.type === "slash" || prev.type === "dot") { + if (prev.type === "dot") { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; + } else { + state.output += nodot; + prev.output += nodot; + } + if (peek() !== "*") { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } + push(token); + } + while (state.brackets > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", "]")); + state.output = utils.escapeLast(state.output, "["); + decrement("brackets"); + } + while (state.parens > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", ")")); + state.output = utils.escapeLast(state.output, "("); + decrement("parens"); + } + while (state.braces > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", "}")); + state.output = utils.escapeLast(state.output, "{"); + decrement("braces"); + } + if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) { + push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` }); + } + if (state.backtrack === true) { + state.output = ""; + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; + if (token.suffix) { + state.output += token.suffix; + } + } + } + return state; + }; + parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? "" : "?:"; + const state = { negated: false, prefix: "" }; + let star = opts.bash === true ? ".*?" : STAR; + if (opts.capture) { + star = `(${star})`; + } + const globstar = (opts2) => { + if (opts2.noglobstar === true) + return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + const create = (str) => { + switch (str) { + case "*": + return `${nodot}${ONE_CHAR}${star}`; + case ".*": + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + case "*.*": + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + case "*/*": + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + case "**": + return nodot + globstar(opts); + case "**/*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; + case "**/*.*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + case "**/.*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) + return; + const source2 = create(match[1]); + if (!source2) + return; + return source2 + DOT_LITERAL + match[2]; + } + } + }; + const output = utils.removePrefix(input, state); + let source = create(output); + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; + } + return source; + }; + module.exports = parse; +}); + +// node_modules/picomatch/lib/picomatch.js +var require_picomatch = __commonJS((exports, module) => { + var path = __require("path"); + var scan = require_scan(); + var parse = require_parse2(); + var utils = require_utils4(); + var constants = require_constants2(); + var isObject = (val) => val && typeof val === "object" && !Array.isArray(val); + var picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map((input) => picomatch(input, options, returnState)); + const arrayMatcher = (str) => { + for (const isMatch of fns) { + const state2 = isMatch(str); + if (state2) + return state2; + } + return false; + }; + return arrayMatcher; + } + const isState = isObject(glob) && glob.tokens && glob.input; + if (glob === "" || typeof glob !== "string" && !isState) { + throw new TypeError("Expected pattern to be a non-empty string"); + } + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); + const state = regex.state; + delete regex.state; + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; + if (typeof opts.onResult === "function") { + opts.onResult(result); + } + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } + if (isIgnored(input)) { + if (typeof opts.onIgnore === "function") { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } + if (typeof opts.onMatch === "function") { + opts.onMatch(result); + } + return returnObject ? result : true; + }; + if (returnState) { + matcher.state = state; + } + return matcher; + }; + picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== "string") { + throw new TypeError("Expected input to be a string"); + } + if (input === "") { + return { isMatch: false, output: "" }; + } + const opts = options || {}; + const format3 = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = match && format3 ? format3(input) : input; + if (match === false) { + output = format3 ? format3(input) : input; + match = output === glob; + } + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } + return { isMatch: Boolean(match), match, output }; + }; + picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path.basename(input)); + }; + picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) + return pattern.map((p) => picomatch.parse(p, options)); + return parse(pattern, { ...options, fastpaths: false }); + }; + picomatch.scan = (input, options) => scan(input, options); + picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; + } + const opts = options || {}; + const prepend = opts.contains ? "" : "^"; + const append = opts.contains ? "" : "$"; + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*\$`; + } + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } + return regex; + }; + picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== "string") { + throw new TypeError("Expected a non-empty string"); + } + let parsed = { negated: false, fastpaths: true }; + if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) { + parsed.output = parse.fastpaths(input, options); + } + if (!parsed.output) { + parsed = parse(input, options); + } + return picomatch.compileRe(parsed, options, returnOutput, returnState); + }; + picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? "i" : "")); + } catch (err) { + if (options && options.debug === true) + throw err; + return /$^/; + } + }; + picomatch.constants = constants; + module.exports = picomatch; +}); + +// node_modules/micromatch/index.js +var require_micromatch = __commonJS((exports, module) => { + var util = __require("util"); + var braces = require_braces(); + var picomatch = require_picomatch(); + var utils = require_utils4(); + var isEmptyString = (val) => val === "" || val === "./"; + var micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); + let omit = new Set; + let keep = new Set; + let items = new Set; + let negatives = 0; + let onResult = (state) => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); + } + }; + for (let i = 0;i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) + negatives++; + for (let item of list) { + let matched = isMatch(item, true); + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) + continue; + if (negated) { + omit.add(matched.output); + } else { + omit.delete(matched.output); + keep.add(matched.output); + } + } + } + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter((item) => !omit.has(item)); + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(", ")}"`); + } + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map((p) => p.replace(/\\/g, "")) : patterns; + } + } + return matches; + }; + micromatch.match = micromatch; + micromatch.matcher = (pattern, options) => picomatch(pattern, options); + micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + micromatch.any = micromatch.isMatch; + micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set; + let items = []; + let onResult = (state) => { + if (options.onResult) + options.onResult(state); + items.push(state.output); + }; + let matches = new Set(micromatch(list, patterns, { ...options, onResult })); + for (let item of items) { + if (!matches.has(item)) { + result.add(item); + } + } + return [...result]; + }; + micromatch.contains = (str, pattern, options) => { + if (typeof str !== "string") { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + if (Array.isArray(pattern)) { + return pattern.some((p) => micromatch.contains(str, p, options)); + } + if (typeof pattern === "string") { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; + } + if (str.includes(pattern) || str.startsWith("./") && str.slice(2).includes(pattern)) { + return true; + } + } + return micromatch.isMatch(str, pattern, { ...options, contains: true }); + }; + micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError("Expected the first argument to be an object"); + } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) + res[key] = obj[key]; + return res; + }; + micromatch.some = (list, patterns, options) => { + let items = [].concat(list); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some((item) => isMatch(item))) { + return true; + } + } + return false; + }; + micromatch.every = (list, patterns, options) => { + let items = [].concat(list); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every((item) => isMatch(item))) { + return false; + } + } + return true; + }; + micromatch.all = (str, patterns, options) => { + if (typeof str !== "string") { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + } + return [].concat(patterns).every((p) => picomatch(p, options)(str)); + }; + micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); + if (match) { + return match.slice(1).map((v) => v === undefined ? "" : v); + } + }; + micromatch.makeRe = (...args) => picomatch.makeRe(...args); + micromatch.scan = (...args) => picomatch.scan(...args); + micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } + } + return res; + }; + micromatch.braces = (pattern, options) => { + if (typeof pattern !== "string") + throw new TypeError("Expected a string"); + if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { + return [pattern]; + } + return braces(pattern, options); + }; + micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== "string") + throw new TypeError("Expected a string"); + return micromatch.braces(pattern, { ...options, expand: true }); + }; + module.exports = micromatch; +}); + +// node_modules/fast-glob/out/utils/pattern.js +var require_pattern = __commonJS((exports) => { + var isStaticPattern = function(pattern, options = {}) { + return !isDynamicPattern(pattern, options); + }; + var isDynamicPattern = function(pattern, options = {}) { + if (pattern === "") { + return false; + } + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { + return true; + } + return false; + }; + var hasBraceExpansion = function(pattern) { + const openingBraceIndex = pattern.indexOf("{"); + if (openingBraceIndex === -1) { + return false; + } + const closingBraceIndex = pattern.indexOf("}", openingBraceIndex + 1); + if (closingBraceIndex === -1) { + return false; + } + const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); + return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); + }; + var convertToPositivePattern = function(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; + }; + var convertToNegativePattern = function(pattern) { + return "!" + pattern; + }; + var isNegativePattern = function(pattern) { + return pattern.startsWith("!") && pattern[1] !== "("; + }; + var isPositivePattern = function(pattern) { + return !isNegativePattern(pattern); + }; + var getNegativePatterns = function(patterns) { + return patterns.filter(isNegativePattern); + }; + var getPositivePatterns = function(patterns) { + return patterns.filter(isPositivePattern); + }; + var getPatternsInsideCurrentDirectory = function(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); + }; + var getPatternsOutsideCurrentDirectory = function(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); + }; + var isPatternRelatedToParentDirectory = function(pattern) { + return pattern.startsWith("..") || pattern.startsWith("./.."); + }; + var getBaseDirectory = function(pattern) { + return globParent(pattern, { flipBackslashes: false }); + }; + var hasGlobStar = function(pattern) { + return pattern.includes(GLOBSTAR); + }; + var endsWithSlashGlobStar = function(pattern) { + return pattern.endsWith("/" + GLOBSTAR); + }; + var isAffectDepthOfReadingPattern = function(pattern) { + const basename2 = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename2); + }; + var expandPatternsWithBraceExpansion = function(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); + }; + var expandBraceExpansion = function(pattern) { + const patterns = micromatch.braces(pattern, { expand: true, nodupes: true }); + patterns.sort((a, b) => a.length - b.length); + return patterns.filter((pattern2) => pattern2 !== ""); + }; + var getPatternParts = function(pattern, options) { + let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); + if (parts.length === 0) { + parts = [pattern]; + } + if (parts[0].startsWith("/")) { + parts[0] = parts[0].slice(1); + parts.unshift(""); + } + return parts; + }; + var makeRe = function(pattern, options) { + return micromatch.makeRe(pattern, options); + }; + var convertPatternsToRe = function(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); + }; + var matchAny = function(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); + }; + var removeDuplicateSlashes = function(pattern) { + return pattern.replace(DOUBLE_SLASH_RE, "/"); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = undefined; + var path = __require("path"); + var globParent = require_glob_parent(); + var micromatch = require_micromatch(); + var GLOBSTAR = "**"; + var ESCAPE_SYMBOL = "\\"; + var COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; + var REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; + var REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; + var GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; + var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; + var DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; + exports.isStaticPattern = isStaticPattern; + exports.isDynamicPattern = isDynamicPattern; + exports.convertToPositivePattern = convertToPositivePattern; + exports.convertToNegativePattern = convertToNegativePattern; + exports.isNegativePattern = isNegativePattern; + exports.isPositivePattern = isPositivePattern; + exports.getNegativePatterns = getNegativePatterns; + exports.getPositivePatterns = getPositivePatterns; + exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; + exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; + exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; + exports.getBaseDirectory = getBaseDirectory; + exports.hasGlobStar = hasGlobStar; + exports.endsWithSlashGlobStar = endsWithSlashGlobStar; + exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; + exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; + exports.expandBraceExpansion = expandBraceExpansion; + exports.getPatternParts = getPatternParts; + exports.makeRe = makeRe; + exports.convertPatternsToRe = convertPatternsToRe; + exports.matchAny = matchAny; + exports.removeDuplicateSlashes = removeDuplicateSlashes; +}); + +// node_modules/merge2/index.js +var require_merge2 = __commonJS((exports, module) => { + var merge2 = function() { + const streamsQueue = []; + const args = slice.call(arguments); + let merging = false; + let options = args[args.length - 1]; + if (options && !Array.isArray(options) && options.pipe == null) { + args.pop(); + } else { + options = {}; + } + const doEnd = options.end !== false; + const doPipeError = options.pipeError === true; + if (options.objectMode == null) { + options.objectMode = true; + } + if (options.highWaterMark == null) { + options.highWaterMark = 64 * 1024; + } + const mergedStream = PassThrough(options); + function addStream() { + for (let i = 0, len = arguments.length;i < len; i++) { + streamsQueue.push(pauseStreams(arguments[i], options)); + } + mergeStream(); + return this; + } + function mergeStream() { + if (merging) { + return; + } + merging = true; + let streams = streamsQueue.shift(); + if (!streams) { + process.nextTick(endStream); + return; + } + if (!Array.isArray(streams)) { + streams = [streams]; + } + let pipesCount = streams.length + 1; + function next() { + if (--pipesCount > 0) { + return; + } + merging = false; + mergeStream(); + } + function pipe(stream) { + function onend() { + stream.removeListener("merge2UnpipeEnd", onend); + stream.removeListener("end", onend); + if (doPipeError) { + stream.removeListener("error", onerror); + } + next(); + } + function onerror(err) { + mergedStream.emit("error", err); + } + if (stream._readableState.endEmitted) { + return next(); + } + stream.on("merge2UnpipeEnd", onend); + stream.on("end", onend); + if (doPipeError) { + stream.on("error", onerror); + } + stream.pipe(mergedStream, { end: false }); + stream.resume(); + } + for (let i = 0;i < streams.length; i++) { + pipe(streams[i]); + } + next(); + } + function endStream() { + merging = false; + mergedStream.emit("queueDrain"); + if (doEnd) { + mergedStream.end(); + } + } + mergedStream.setMaxListeners(0); + mergedStream.add = addStream; + mergedStream.on("unpipe", function(stream) { + stream.emit("merge2UnpipeEnd"); + }); + if (args.length) { + addStream.apply(null, args); + } + return mergedStream; + }; + var pauseStreams = function(streams, options) { + if (!Array.isArray(streams)) { + if (!streams._readableState && streams.pipe) { + streams = streams.pipe(PassThrough(options)); + } + if (!streams._readableState || !streams.pause || !streams.pipe) { + throw new Error("Only readable stream can be merged."); + } + streams.pause(); + } else { + for (let i = 0, len = streams.length;i < len; i++) { + streams[i] = pauseStreams(streams[i], options); + } + } + return streams; + }; + var Stream = __require("stream"); + var PassThrough = Stream.PassThrough; + var slice = Array.prototype.slice; + module.exports = merge2; +}); + +// node_modules/fast-glob/out/utils/stream.js +var require_stream = __commonJS((exports) => { + var merge = function(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once("error", (error2) => mergedStream.emit("error", error2)); + }); + mergedStream.once("close", () => propagateCloseEventToSources(streams)); + mergedStream.once("end", () => propagateCloseEventToSources(streams)); + return mergedStream; + }; + var propagateCloseEventToSources = function(streams) { + streams.forEach((stream) => stream.emit("close")); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.merge = undefined; + var merge2 = require_merge2(); + exports.merge = merge; +}); + +// node_modules/fast-glob/out/utils/string.js +var require_string = __commonJS((exports) => { + var isString = function(input) { + return typeof input === "string"; + }; + var isEmpty = function(input) { + return input === ""; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isEmpty = exports.isString = undefined; + exports.isString = isString; + exports.isEmpty = isEmpty; +}); + +// node_modules/fast-glob/out/utils/index.js +var require_utils5 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = undefined; + var array = require_array(); + exports.array = array; + var errno = require_errno(); + exports.errno = errno; + var fs = require_fs2(); + exports.fs = fs; + var path = require_path(); + exports.path = path; + var pattern = require_pattern(); + exports.pattern = pattern; + var stream = require_stream(); + exports.stream = stream; + var string = require_string(); + exports.string = string; +}); + +// node_modules/fast-glob/out/managers/tasks.js +var require_tasks = __commonJS((exports) => { + var generate = function(input, settings) { + const patterns = processPatterns(input, settings); + const ignore = processPatterns(settings.ignore, settings); + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, true); + return staticTasks.concat(dynamicTasks); + }; + var processPatterns = function(input, settings) { + let patterns = input; + if (settings.braceExpansion) { + patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); + } + if (settings.baseNameMatch) { + patterns = patterns.map((pattern) => pattern.includes("/") ? pattern : `**/${pattern}`); + } + return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); + }; + var convertPatternsToTasks = function(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + if ("." in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask(".", patternsInsideCurrentDirectory, negative, dynamic)); + } else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + } + return tasks; + }; + var getPositivePatterns = function(patterns) { + return utils.pattern.getPositivePatterns(patterns); + }; + var getNegativePatternsAsPositive = function(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; + }; + var groupPatternsByBaseDirectory = function(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } else { + collection[base] = [pattern]; + } + return collection; + }, group); + }; + var convertPatternGroupsToTasks = function(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); + }; + var convertPatternGroupToTask = function(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = undefined; + var utils = require_utils5(); + exports.generate = generate; + exports.convertPatternsToTasks = convertPatternsToTasks; + exports.getPositivePatterns = getPositivePatterns; + exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; + exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; + exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; + exports.convertPatternGroupToTask = convertPatternGroupToTask; +}); + +// node_modules/@nodelib/fs.stat/out/providers/async.js +var require_async = __commonJS((exports) => { + var read = function(path, settings, callback) { + settings.fs.lstat(path, (lstatError, lstat) => { + if (lstatError !== null) { + callFailureCallback(callback, lstatError); + return; + } + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + callSuccessCallback(callback, lstat); + return; + } + settings.fs.stat(path, (statError, stat) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + callFailureCallback(callback, statError); + return; + } + callSuccessCallback(callback, lstat); + return; + } + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + callSuccessCallback(callback, stat); + }); + }); + }; + var callFailureCallback = function(callback, error2) { + callback(error2); + }; + var callSuccessCallback = function(callback, result) { + callback(null, result); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.read = undefined; + exports.read = read; +}); + +// node_modules/@nodelib/fs.stat/out/providers/sync.js +var require_sync = __commonJS((exports) => { + var read = function(path, settings) { + const lstat = settings.fs.lstatSync(path); + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return lstat; + } + try { + const stat = settings.fs.statSync(path); + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + return stat; + } catch (error2) { + if (!settings.throwErrorOnBrokenSymbolicLink) { + return lstat; + } + throw error2; + } + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.read = undefined; + exports.read = read; +}); + +// node_modules/@nodelib/fs.stat/out/adapters/fs.js +var require_fs3 = __commonJS((exports) => { + var createFileSystemAdapter = function(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; + var fs = __require("fs"); + exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync + }; + exports.createFileSystemAdapter = createFileSystemAdapter; +}); + +// node_modules/@nodelib/fs.stat/out/settings.js +var require_settings = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fs = require_fs3(); + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + } + _getValue(option, value) { + return option !== null && option !== undefined ? option : value; + } + } + exports.default = Settings; +}); + +// node_modules/@nodelib/fs.stat/out/index.js +var require_out = __commonJS((exports) => { + var stat = function(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); + }; + var statSync3 = function(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync2.read(path, settings); + }; + var getSettings = function(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.statSync = exports.stat = exports.Settings = undefined; + var async = require_async(); + var sync2 = require_sync(); + var settings_1 = require_settings(); + exports.Settings = settings_1.default; + exports.stat = stat; + exports.statSync = statSync3; +}); + +// node_modules/queue-microtask/index.js +var require_queue_microtask = __commonJS((exports, module) => { + /*! queue-microtask. MIT License. Feross Aboukhadijeh */ + var promise; + module.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => { + throw err; + }, 0)); +}); + +// node_modules/run-parallel/index.js +var require_run_parallel = __commonJS((exports, module) => { + var runParallel = function(tasks, cb) { + let results, pending, keys; + let isSync = true; + if (Array.isArray(tasks)) { + results = []; + pending = tasks.length; + } else { + keys = Object.keys(tasks); + results = {}; + pending = keys.length; + } + function done(err) { + function end() { + if (cb) + cb(err, results); + cb = null; + } + if (isSync) + queueMicrotask2(end); + else + end(); + } + function each(i, err, result) { + results[i] = result; + if (--pending === 0 || err) { + done(err); + } + } + if (!pending) { + done(null); + } else if (keys) { + keys.forEach(function(key) { + tasks[key](function(err, result) { + each(key, err, result); + }); + }); + } else { + tasks.forEach(function(task, i) { + task(function(err, result) { + each(i, err, result); + }); + }); + } + isSync = false; + }; + /*! run-parallel. MIT License. Feross Aboukhadijeh */ + module.exports = runParallel; + var queueMicrotask2 = require_queue_microtask(); +}); + +// node_modules/@nodelib/fs.scandir/out/constants.js +var require_constants3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = undefined; + var NODE_PROCESS_VERSION_PARTS = process.versions.node.split("."); + if (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) { + throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); + } + var MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); + var MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); + var SUPPORTED_MAJOR_VERSION = 10; + var SUPPORTED_MINOR_VERSION = 10; + var IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; + var IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; + exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; +}); + +// node_modules/@nodelib/fs.scandir/out/utils/fs.js +var require_fs4 = __commonJS((exports) => { + var createDirentFromStats = function(name, stats) { + return new DirentFromStats(name, stats); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createDirentFromStats = undefined; + + class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } + } + exports.createDirentFromStats = createDirentFromStats; +}); + +// node_modules/@nodelib/fs.scandir/out/utils/index.js +var require_utils6 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fs = undefined; + var fs = require_fs4(); + exports.fs = fs; +}); + +// node_modules/@nodelib/fs.scandir/out/providers/common.js +var require_common = __commonJS((exports) => { + var joinPathSegments = function(a, b, separator) { + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.joinPathSegments = undefined; + exports.joinPathSegments = joinPathSegments; +}); + +// node_modules/@nodelib/fs.scandir/out/providers/async.js +var require_async2 = __commonJS((exports) => { + var read = function(directory, settings, callback) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + readdirWithFileTypes(directory, settings, callback); + return; + } + readdir(directory, settings, callback); + }; + var readdirWithFileTypes = function(directory, settings, callback) { + settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const entries = dirents.map((dirent) => ({ + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + })); + if (!settings.followSymbolicLinks) { + callSuccessCallback(callback, entries); + return; + } + const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); + rpl(tasks, (rplError, rplEntries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, rplEntries); + }); + }); + }; + var makeRplTaskEntry = function(entry, settings) { + return (done) => { + if (!entry.dirent.isSymbolicLink()) { + done(null, entry); + return; + } + settings.fs.stat(entry.path, (statError, stats) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + done(statError); + return; + } + done(null, entry); + return; + } + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + done(null, entry); + }); + }; + }; + var readdir = function(directory, settings, callback) { + settings.fs.readdir(directory, (readdirError, names) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const tasks = names.map((name) => { + const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + return (done) => { + fsStat.stat(path, settings.fsStatSettings, (error2, stats) => { + if (error2 !== null) { + done(error2); + return; + } + const entry = { + name, + path, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + done(null, entry); + }); + }; + }); + rpl(tasks, (rplError, entries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, entries); + }); + }); + }; + var callFailureCallback = function(callback, error2) { + callback(error2); + }; + var callSuccessCallback = function(callback, result) { + callback(null, result); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; + var fsStat = require_out(); + var rpl = require_run_parallel(); + var constants_1 = require_constants3(); + var utils = require_utils6(); + var common = require_common(); + exports.read = read; + exports.readdirWithFileTypes = readdirWithFileTypes; + exports.readdir = readdir; +}); + +// node_modules/@nodelib/fs.scandir/out/providers/sync.js +var require_sync2 = __commonJS((exports) => { + var read = function(directory, settings) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings); + } + return readdir(directory, settings); + }; + var readdirWithFileTypes = function(directory, settings) { + const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); + return dirents.map((dirent) => { + const entry = { + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + }; + if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { + try { + const stats = settings.fs.statSync(entry.path); + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + } catch (error2) { + if (settings.throwErrorOnBrokenSymbolicLink) { + throw error2; + } + } + } + return entry; + }); + }; + var readdir = function(directory, settings) { + const names = settings.fs.readdirSync(directory); + return names.map((name) => { + const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + const stats = fsStat.statSync(entryPath, settings.fsStatSettings); + const entry = { + name, + path: entryPath, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + return entry; + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; + var fsStat = require_out(); + var constants_1 = require_constants3(); + var utils = require_utils6(); + var common = require_common(); + exports.read = read; + exports.readdirWithFileTypes = readdirWithFileTypes; + exports.readdir = readdir; +}); + +// node_modules/@nodelib/fs.scandir/out/adapters/fs.js +var require_fs5 = __commonJS((exports) => { + var createFileSystemAdapter = function(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; + var fs = __require("fs"); + exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync + }; + exports.createFileSystemAdapter = createFileSystemAdapter; +}); + +// node_modules/@nodelib/fs.scandir/out/settings.js +var require_settings2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = __require("path"); + var fsStat = require_out(); + var fs = require_fs5(); + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.stats = this._getValue(this._options.stats, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + this.fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this.followSymbolicLinks, + fs: this.fs, + throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== undefined ? option : value; + } + } + exports.default = Settings; +}); + +// node_modules/@nodelib/fs.scandir/out/index.js +var require_out2 = __commonJS((exports) => { + var scandir = function(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); + }; + var scandirSync = function(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync2.read(path, settings); + }; + var getSettings = function(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Settings = exports.scandirSync = exports.scandir = undefined; + var async = require_async2(); + var sync2 = require_sync2(); + var settings_1 = require_settings2(); + exports.Settings = settings_1.default; + exports.scandir = scandir; + exports.scandirSync = scandirSync; +}); + +// node_modules/reusify/reusify.js +var require_reusify = __commonJS((exports, module) => { + var reusify = function(Constructor) { + var head = new Constructor; + var tail = head; + function get() { + var current = head; + if (current.next) { + head = current.next; + } else { + head = new Constructor; + tail = head; + } + current.next = null; + return current; + } + function release(obj) { + tail.next = obj; + tail = obj; + } + return { + get, + release + }; + }; + module.exports = reusify; +}); + +// node_modules/fastq/queue.js +var require_queue = __commonJS((exports, module) => { + var fastqueue = function(context, worker, concurrency) { + if (typeof context === "function") { + concurrency = worker; + worker = context; + context = null; + } + if (concurrency < 1) { + throw new Error("fastqueue concurrency must be greater than 1"); + } + var cache = reusify(Task); + var queueHead = null; + var queueTail = null; + var _running = 0; + var errorHandler = null; + var self = { + push, + drain: noop, + saturated: noop, + pause, + paused: false, + concurrency, + running, + resume, + idle, + length, + getQueue, + unshift, + empty: noop, + kill: kill2, + killAndDrain, + error: error2 + }; + return self; + function running() { + return _running; + } + function pause() { + self.paused = true; + } + function length() { + var current = queueHead; + var counter = 0; + while (current) { + current = current.next; + counter++; + } + return counter; + } + function getQueue() { + var current = queueHead; + var tasks = []; + while (current) { + tasks.push(current.value); + current = current.next; + } + return tasks; + } + function resume() { + if (!self.paused) + return; + self.paused = false; + for (var i = 0;i < self.concurrency; i++) { + _running++; + release(); + } + } + function idle() { + return _running === 0 && self.length() === 0; + } + function push(value, done) { + var current = cache.get(); + current.context = context; + current.release = release; + current.value = value; + current.callback = done || noop; + current.errorHandler = errorHandler; + if (_running === self.concurrency || self.paused) { + if (queueTail) { + queueTail.next = current; + queueTail = current; + } else { + queueHead = current; + queueTail = current; + self.saturated(); + } + } else { + _running++; + worker.call(context, current.value, current.worked); + } + } + function unshift(value, done) { + var current = cache.get(); + current.context = context; + current.release = release; + current.value = value; + current.callback = done || noop; + if (_running === self.concurrency || self.paused) { + if (queueHead) { + current.next = queueHead; + queueHead = current; + } else { + queueHead = current; + queueTail = current; + self.saturated(); + } + } else { + _running++; + worker.call(context, current.value, current.worked); + } + } + function release(holder) { + if (holder) { + cache.release(holder); + } + var next = queueHead; + if (next) { + if (!self.paused) { + if (queueTail === queueHead) { + queueTail = null; + } + queueHead = next.next; + next.next = null; + worker.call(context, next.value, next.worked); + if (queueTail === null) { + self.empty(); + } + } else { + _running--; + } + } else if (--_running === 0) { + self.drain(); + } + } + function kill2() { + queueHead = null; + queueTail = null; + self.drain = noop; + } + function killAndDrain() { + queueHead = null; + queueTail = null; + self.drain(); + self.drain = noop; + } + function error2(handler) { + errorHandler = handler; + } + }; + var noop = function() { + }; + var Task = function() { + this.value = null; + this.callback = noop; + this.next = null; + this.release = noop; + this.context = null; + this.errorHandler = null; + var self = this; + this.worked = function worked(err, result) { + var callback = self.callback; + var errorHandler = self.errorHandler; + var val = self.value; + self.value = null; + self.callback = noop; + if (self.errorHandler) { + errorHandler(err, val); + } + callback.call(self.context, err, result); + self.release(self); + }; + }; + var queueAsPromised = function(context, worker, concurrency) { + if (typeof context === "function") { + concurrency = worker; + worker = context; + context = null; + } + function asyncWrapper(arg, cb) { + worker.call(this, arg).then(function(res) { + cb(null, res); + }, cb); + } + var queue = fastqueue(context, asyncWrapper, concurrency); + var pushCb = queue.push; + var unshiftCb = queue.unshift; + queue.push = push; + queue.unshift = unshift; + queue.drained = drained; + return queue; + function push(value) { + var p = new Promise(function(resolve5, reject) { + pushCb(value, function(err, result) { + if (err) { + reject(err); + return; + } + resolve5(result); + }); + }); + p.catch(noop); + return p; + } + function unshift(value) { + var p = new Promise(function(resolve5, reject) { + unshiftCb(value, function(err, result) { + if (err) { + reject(err); + return; + } + resolve5(result); + }); + }); + p.catch(noop); + return p; + } + function drained() { + if (queue.idle()) { + return new Promise(function(resolve5) { + resolve5(); + }); + } + var previousDrain = queue.drain; + var p = new Promise(function(resolve5) { + queue.drain = function() { + previousDrain(); + resolve5(); + }; + }); + return p; + } + }; + var reusify = require_reusify(); + module.exports = fastqueue; + module.exports.promise = queueAsPromised; +}); + +// node_modules/@nodelib/fs.walk/out/readers/common.js +var require_common2 = __commonJS((exports) => { + var isFatalError = function(settings, error2) { + if (settings.errorFilter === null) { + return true; + } + return !settings.errorFilter(error2); + }; + var isAppliedFilter = function(filter, value) { + return filter === null || filter(value); + }; + var replacePathSegmentSeparator = function(filepath, separator) { + return filepath.split(/[/\\]/).join(separator); + }; + var joinPathSegments = function(a, b, separator) { + if (a === "") { + return b; + } + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = undefined; + exports.isFatalError = isFatalError; + exports.isAppliedFilter = isAppliedFilter; + exports.replacePathSegmentSeparator = replacePathSegmentSeparator; + exports.joinPathSegments = joinPathSegments; +}); + +// node_modules/@nodelib/fs.walk/out/readers/reader.js +var require_reader = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var common = require_common2(); + + class Reader { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); + } + } + exports.default = Reader; +}); + +// node_modules/@nodelib/fs.walk/out/readers/async.js +var require_async3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var events_1 = __require("events"); + var fsScandir = require_out2(); + var fastq = require_queue(); + var common = require_common2(); + var reader_1 = require_reader(); + + class AsyncReader extends reader_1.default { + constructor(_root, _settings) { + super(_root, _settings); + this._settings = _settings; + this._scandir = fsScandir.scandir; + this._emitter = new events_1.EventEmitter; + this._queue = fastq(this._worker.bind(this), this._settings.concurrency); + this._isFatalError = false; + this._isDestroyed = false; + this._queue.drain = () => { + if (!this._isFatalError) { + this._emitter.emit("end"); + } + }; + } + read() { + this._isFatalError = false; + this._isDestroyed = false; + setImmediate(() => { + this._pushToQueue(this._root, this._settings.basePath); + }); + return this._emitter; + } + get isDestroyed() { + return this._isDestroyed; + } + destroy() { + if (this._isDestroyed) { + throw new Error("The reader is already destroyed"); + } + this._isDestroyed = true; + this._queue.killAndDrain(); + } + onEntry(callback) { + this._emitter.on("entry", callback); + } + onError(callback) { + this._emitter.once("error", callback); + } + onEnd(callback) { + this._emitter.once("end", callback); + } + _pushToQueue(directory, base) { + const queueItem = { directory, base }; + this._queue.push(queueItem, (error2) => { + if (error2 !== null) { + this._handleError(error2); + } + }); + } + _worker(item, done) { + this._scandir(item.directory, this._settings.fsScandirSettings, (error2, entries) => { + if (error2 !== null) { + done(error2, undefined); + return; + } + for (const entry of entries) { + this._handleEntry(entry, item.base); + } + done(null, undefined); + }); + } + _handleError(error2) { + if (this._isDestroyed || !common.isFatalError(this._settings, error2)) { + return; + } + this._isFatalError = true; + this._isDestroyed = true; + this._emitter.emit("error", error2); + } + _handleEntry(entry, base) { + if (this._isDestroyed || this._isFatalError) { + return; + } + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._emitEntry(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _emitEntry(entry) { + this._emitter.emit("entry", entry); + } + } + exports.default = AsyncReader; +}); + +// node_modules/@nodelib/fs.walk/out/providers/async.js +var require_async4 = __commonJS((exports) => { + var callFailureCallback = function(callback, error2) { + callback(error2); + }; + var callSuccessCallback = function(callback, entries) { + callback(null, entries); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + var async_1 = require_async3(); + + class AsyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._storage = []; + } + read(callback) { + this._reader.onError((error2) => { + callFailureCallback(callback, error2); + }); + this._reader.onEntry((entry) => { + this._storage.push(entry); + }); + this._reader.onEnd(() => { + callSuccessCallback(callback, this._storage); + }); + this._reader.read(); + } + } + exports.default = AsyncProvider; +}); + +// node_modules/@nodelib/fs.walk/out/providers/stream.js +var require_stream2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var stream_1 = __require("stream"); + var async_1 = require_async3(); + + class StreamProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._stream = new stream_1.Readable({ + objectMode: true, + read: () => { + }, + destroy: () => { + if (!this._reader.isDestroyed) { + this._reader.destroy(); + } + } + }); + } + read() { + this._reader.onError((error2) => { + this._stream.emit("error", error2); + }); + this._reader.onEntry((entry) => { + this._stream.push(entry); + }); + this._reader.onEnd(() => { + this._stream.push(null); + }); + this._reader.read(); + return this._stream; + } + } + exports.default = StreamProvider; +}); + +// node_modules/@nodelib/fs.walk/out/readers/sync.js +var require_sync3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fsScandir = require_out2(); + var common = require_common2(); + var reader_1 = require_reader(); + + class SyncReader extends reader_1.default { + constructor() { + super(...arguments); + this._scandir = fsScandir.scandirSync; + this._storage = []; + this._queue = new Set; + } + read() { + this._pushToQueue(this._root, this._settings.basePath); + this._handleQueue(); + return this._storage; + } + _pushToQueue(directory, base) { + this._queue.add({ directory, base }); + } + _handleQueue() { + for (const item of this._queue.values()) { + this._handleDirectory(item.directory, item.base); + } + } + _handleDirectory(directory, base) { + try { + const entries = this._scandir(directory, this._settings.fsScandirSettings); + for (const entry of entries) { + this._handleEntry(entry, base); + } + } catch (error2) { + this._handleError(error2); + } + } + _handleError(error2) { + if (!common.isFatalError(this._settings, error2)) { + return; + } + throw error2; + } + _handleEntry(entry, base) { + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._pushToStorage(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _pushToStorage(entry) { + this._storage.push(entry); + } + } + exports.default = SyncReader; +}); + +// node_modules/@nodelib/fs.walk/out/providers/sync.js +var require_sync4 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var sync_1 = require_sync3(); + + class SyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new sync_1.default(this._root, this._settings); + } + read() { + return this._reader.read(); + } + } + exports.default = SyncProvider; +}); + +// node_modules/@nodelib/fs.walk/out/settings.js +var require_settings3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = __require("path"); + var fsScandir = require_out2(); + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.basePath = this._getValue(this._options.basePath, undefined); + this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); + this.deepFilter = this._getValue(this._options.deepFilter, null); + this.entryFilter = this._getValue(this._options.entryFilter, null); + this.errorFilter = this._getValue(this._options.errorFilter, null); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.fsScandirSettings = new fsScandir.Settings({ + followSymbolicLinks: this._options.followSymbolicLinks, + fs: this._options.fs, + pathSegmentSeparator: this._options.pathSegmentSeparator, + stats: this._options.stats, + throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== undefined ? option : value; + } + } + exports.default = Settings; +}); + +// node_modules/@nodelib/fs.walk/out/index.js +var require_out3 = __commonJS((exports) => { + var walk = function(directory, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); + return; + } + new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); + }; + var walkSync = function(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new sync_1.default(directory, settings); + return provider.read(); + }; + var walkStream = function(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new stream_1.default(directory, settings); + return provider.read(); + }; + var getSettings = function(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Settings = exports.walkStream = exports.walkSync = exports.walk = undefined; + var async_1 = require_async4(); + var stream_1 = require_stream2(); + var sync_1 = require_sync4(); + var settings_1 = require_settings3(); + exports.Settings = settings_1.default; + exports.walk = walk; + exports.walkSync = walkSync; + exports.walkStream = walkStream; +}); + +// node_modules/fast-glob/out/readers/reader.js +var require_reader2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = __require("path"); + var fsStat = require_out(); + var utils = require_utils5(); + + class Reader { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error2) { + return !utils.errno.isEnoentCodeError(error2) && !this._settings.suppressErrors; + } + } + exports.default = Reader; +}); + +// node_modules/fast-glob/out/readers/stream.js +var require_stream3 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var stream_1 = __require("stream"); + var fsStat = require_out(); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + + class ReaderStream extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ objectMode: true }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options).then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }).catch(done); + }; + for (let i = 0;i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath).then((stats) => this._makeEntry(stats, pattern)).catch((error2) => { + if (options.errorFilter(error2)) { + return null; + } + throw error2; + }); + } + _getStat(filepath) { + return new Promise((resolve5, reject) => { + this._stat(filepath, this._fsStatSettings, (error2, stats) => { + return error2 === null ? resolve5(stats) : reject(error2); + }); + }); + } + } + exports.default = ReaderStream; +}); + +// node_modules/fast-glob/out/readers/async.js +var require_async5 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + var stream_1 = require_stream3(); + + class ReaderAsync extends reader_1.default { + constructor() { + super(...arguments); + this._walkAsync = fsWalk.walk; + this._readerStream = new stream_1.default(this._settings); + } + dynamic(root, options) { + return new Promise((resolve5, reject) => { + this._walkAsync(root, options, (error2, entries) => { + if (error2 === null) { + resolve5(entries); + } else { + reject(error2); + } + }); + }); + } + async static(patterns, options) { + const entries = []; + const stream = this._readerStream.static(patterns, options); + return new Promise((resolve5, reject) => { + stream.once("error", reject); + stream.on("data", (entry) => entries.push(entry)); + stream.once("end", () => resolve5(entries)); + }); + } + } + exports.default = ReaderAsync; +}); + +// node_modules/fast-glob/out/providers/matchers/matcher.js +var require_matcher = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class Matcher { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); + } + _fillStorage() { + for (const pattern of this._patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); + } + } + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); + } + } + exports.default = Matcher; +}); + +// node_modules/fast-glob/out/providers/matchers/partial.js +var require_partial = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var matcher_1 = require_matcher(); + + class PartialMatcher extends matcher_1.default { + match(filepath) { + const parts = filepath.split("/"); + const levels = parts.length; + const patterns = this._storage.filter((info2) => !info2.complete || info2.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } + } + exports.default = PartialMatcher; +}); + +// node_modules/fast-glob/out/providers/filters/deep.js +var require_deep = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + var partial_1 = require_partial(); + + class DeepFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + } + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); + } + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; + } + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); + } + _isSkippedByDeep(basePath, entryPath) { + if (this._settings.deep === Infinity) { + return false; + } + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split("/").length; + if (basePath === "") { + return entryPathDepth; + } + const basePathDepth = basePath.split("/").length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } + } + exports.default = DeepFilter; +}); + +// node_modules/fast-glob/out/providers/filters/entry.js +var require_entry = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class EntryFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = new Map; + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._settings.unique && this._isDuplicateEntry(filepath)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) { + return false; + } + const isDirectory = entry.dirent.isDirectory(); + const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory); + if (this._settings.unique && isMatched) { + this._createIndexRecord(filepath); + } + return isMatched; + } + _isDuplicateEntry(filepath) { + return this.index.has(filepath); + } + _createIndexRecord(filepath) { + this.index.set(filepath, undefined); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(filepath, patternsRe, isDirectory) { + const isMatched = utils.pattern.matchAny(filepath, patternsRe); + if (!isMatched && isDirectory) { + return utils.pattern.matchAny(filepath + "/", patternsRe); + } + return isMatched; + } + } + exports.default = EntryFilter; +}); + +// node_modules/fast-glob/out/providers/filters/error.js +var require_error = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class ErrorFilter { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error2) => this._isNonFatalError(error2); + } + _isNonFatalError(error2) { + return utils.errno.isEnoentCodeError(error2) || this._settings.suppressErrors; + } + } + exports.default = ErrorFilter; +}); + +// node_modules/fast-glob/out/providers/transformers/entry.js +var require_entry2 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var utils = require_utils5(); + + class EntryTransformer { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += "/"; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { path: filepath }); + } + } + exports.default = EntryTransformer; +}); + +// node_modules/fast-glob/out/providers/provider.js +var require_provider = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var path = __require("path"); + var deep_1 = require_deep(); + var entry_1 = require_entry(); + var error_1 = require_error(); + var entry_2 = require_entry2(); + + class Provider { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === "." ? "" : task.base; + return { + basePath, + pathSegmentSeparator: "/", + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; + } + } + exports.default = Provider; +}); + +// node_modules/fast-glob/out/providers/async.js +var require_async6 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var async_1 = require_async5(); + var provider_1 = require_provider(); + + class ProviderAsync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new async_1.default(this._settings); + } + async read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = await this.api(root, task, options); + return entries.map((entry) => options.transform(entry)); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + } + exports.default = ProviderAsync; +}); + +// node_modules/fast-glob/out/providers/stream.js +var require_stream4 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var stream_1 = __require("stream"); + var stream_2 = require_stream3(); + var provider_1 = require_provider(); + + class ProviderStream extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ objectMode: true, read: () => { + } }); + source.once("error", (error2) => destination.emit("error", error2)).on("data", (entry) => destination.emit("data", options.transform(entry))).once("end", () => destination.emit("end")); + destination.once("close", () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + } + exports.default = ProviderStream; +}); + +// node_modules/fast-glob/out/readers/sync.js +var require_sync5 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var fsStat = require_out(); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + + class ReaderSync extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } catch (error2) { + if (options.errorFilter(error2)) { + return null; + } + throw error2; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } + } + exports.default = ReaderSync; +}); + +// node_modules/fast-glob/out/providers/sync.js +var require_sync6 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + var sync_1 = require_sync5(); + var provider_1 = require_provider(); + + class ProviderSync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + } + exports.default = ProviderSync; +}); + +// node_modules/fast-glob/out/settings.js +var require_settings4 = __commonJS((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DEFAULT_FILE_SYSTEM_ADAPTER = undefined; + var fs = __require("fs"); + var os = __require("os"); + var CPU_COUNT = Math.max(os.cpus().length, 1); + exports.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + lstatSync: fs.lstatSync, + stat: fs.stat, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync + }; + + class Settings { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + this.ignore = [].concat(this.ignore); + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } + } + exports.default = Settings; +}); + +// node_modules/fast-glob/out/index.js +var require_out4 = __commonJS((exports, module) => { + async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); + } + var getWorks = function(source, _Provider, options) { + const patterns = [].concat(source); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); + }; + var assertPatternsInput = function(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError("Patterns must be a string (non empty) or an array of strings"); + } + }; + var taskManager = require_tasks(); + var async_1 = require_async6(); + var stream_1 = require_stream4(); + var sync_1 = require_sync6(); + var settings_1 = require_settings4(); + var utils = require_utils5(); + (function(FastGlob2) { + FastGlob2.glob = FastGlob2; + FastGlob2.globSync = sync2; + FastGlob2.globStream = stream; + FastGlob2.async = FastGlob2; + function sync2(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob2.sync = sync2; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + return utils.stream.merge(works); + } + FastGlob2.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = [].concat(source); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob2.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob2.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob2.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertPathToPattern(source); + } + FastGlob2.convertPathToPattern = convertPathToPattern; + let posix; + (function(posix2) { + function escapePath2(source) { + assertPatternsInput(source); + return utils.path.escapePosixPath(source); + } + posix2.escapePath = escapePath2; + function convertPathToPattern2(source) { + assertPatternsInput(source); + return utils.path.convertPosixPathToPattern(source); + } + posix2.convertPathToPattern = convertPathToPattern2; + })(posix = FastGlob2.posix || (FastGlob2.posix = {})); + let win32; + (function(win322) { + function escapePath2(source) { + assertPatternsInput(source); + return utils.path.escapeWindowsPath(source); + } + win322.escapePath = escapePath2; + function convertPathToPattern2(source) { + assertPatternsInput(source); + return utils.path.convertWindowsPathToPattern(source); + } + win322.convertPathToPattern = convertPathToPattern2; + })(win32 = FastGlob2.win32 || (FastGlob2.win32 = {})); + })(FastGlob || (FastGlob = {})); + module.exports = FastGlob; +}); + +// node_modules/fs.realpath/old.js +var require_old = __commonJS((exports) => { + var rethrow = function() { + var callback; + if (DEBUG) { + var backtrace = new Error; + callback = debugCallback; + } else + callback = missingCallback; + return callback; + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; + else if (!process.noDeprecation) { + var msg = "fs: missing callback " + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } + }; + var maybeCallback = function(cb) { + return typeof cb === "function" ? cb : rethrow(); + }; + var pathModule = __require("path"); + var isWindows = process.platform === "win32"; + var fs = __require("fs"); + var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); + var normalize2 = pathModule.normalize; + if (isWindows) { + nextPartRe = /(.*?)(?:[\/\\]+|$)/g; + } else { + nextPartRe = /(.*?)(?:[\/]+|$)/g; + } + var nextPartRe; + if (isWindows) { + splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; + } else { + splitRootRe = /^[\/]*/; + } + var splitRootRe; + exports.realpathSync = function realpathSync(p, cache) { + p = pathModule.resolve(p); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } + var original = p, seenLinks = {}, knownHard = {}; + var pos; + var current; + var base; + var previous; + start(); + function start() { + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ""; + if (isWindows && !knownHard[base]) { + fs.lstatSync(base); + knownHard[base] = true; + } + } + while (pos < p.length) { + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + if (knownHard[base] || cache && cache[base] === base) { + continue; + } + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + resolvedLink = cache[base]; + } else { + var stat = fs.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) + cache[base] = base; + continue; + } + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs.statSync(base); + linkTarget = fs.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + if (cache) + cache[base] = resolvedLink; + if (!isWindows) + seenLinks[id] = linkTarget; + } + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + if (cache) + cache[original] = p; + return p; + }; + exports.realpath = function realpath(p, cache, cb) { + if (typeof cb !== "function") { + cb = maybeCallback(cache); + cache = null; + } + p = pathModule.resolve(p); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } + var original = p, seenLinks = {}, knownHard = {}; + var pos; + var current; + var base; + var previous; + start(); + function start() { + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ""; + if (isWindows && !knownHard[base]) { + fs.lstat(base, function(err) { + if (err) + return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } + function LOOP() { + if (pos >= p.length) { + if (cache) + cache[original] = p; + return cb(null, p); + } + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + if (knownHard[base] || cache && cache[base] === base) { + return process.nextTick(LOOP); + } + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + return gotResolvedLink(cache[base]); + } + return fs.lstat(base, gotStat); + } + function gotStat(err, stat) { + if (err) + return cb(err); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) + cache[base] = base; + return process.nextTick(LOOP); + } + if (!isWindows) { + var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs.stat(base, function(err2) { + if (err2) + return cb(err2); + fs.readlink(base, function(err3, target) { + if (!isWindows) + seenLinks[id] = target; + gotTarget(err3, target); + }); + }); + } + function gotTarget(err, target, base2) { + if (err) + return cb(err); + var resolvedLink = pathModule.resolve(previous, target); + if (cache) + cache[base2] = resolvedLink; + gotResolvedLink(resolvedLink); + } + function gotResolvedLink(resolvedLink) { + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + }; +}); + +// node_modules/fs.realpath/index.js +var require_fs6 = __commonJS((exports, module) => { + var newError = function(er) { + return er && er.syscall === "realpath" && (er.code === "ELOOP" || er.code === "ENOMEM" || er.code === "ENAMETOOLONG"); + }; + var realpath = function(p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb); + } + if (typeof cache === "function") { + cb = cache; + cache = null; + } + origRealpath(p, cache, function(er, result) { + if (newError(er)) { + old.realpath(p, cache, cb); + } else { + cb(er, result); + } + }); + }; + var realpathSync = function(p, cache) { + if (ok) { + return origRealpathSync(p, cache); + } + try { + return origRealpathSync(p, cache); + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache); + } else { + throw er; + } + } + }; + var monkeypatch = function() { + fs.realpath = realpath; + fs.realpathSync = realpathSync; + }; + var unmonkeypatch = function() { + fs.realpath = origRealpath; + fs.realpathSync = origRealpathSync; + }; + module.exports = realpath; + realpath.realpath = realpath; + realpath.sync = realpathSync; + realpath.realpathSync = realpathSync; + realpath.monkeypatch = monkeypatch; + realpath.unmonkeypatch = unmonkeypatch; + var fs = __require("fs"); + var origRealpath = fs.realpath; + var origRealpathSync = fs.realpathSync; + var version = process.version; + var ok = /^v[0-5]\./.test(version); + var old = require_old(); +}); + +// node_modules/concat-map/index.js +var require_concat_map = __commonJS((exports, module) => { + module.exports = function(xs, fn) { + var res = []; + for (var i = 0;i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) + res.push.apply(res, x); + else + res.push(x); + } + return res; + }; + var isArray = Array.isArray || function(xs) { + return Object.prototype.toString.call(xs) === "[object Array]"; + }; +}); + +// node_modules/balanced-match/index.js +var require_balanced_match = __commonJS((exports, module) => { + var balanced = function(a, b, str) { + if (a instanceof RegExp) + a = maybeMatch(a, str); + if (b instanceof RegExp) + b = maybeMatch(b, str); + var r = range(a, b, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; + }; + var maybeMatch = function(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; + }; + var range = function(a, b, str) { + var begs, beg, left2, right2, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left2 = str.length; + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [begs.pop(), bi]; + } else { + beg = begs.pop(); + if (beg < left2) { + left2 = beg; + right2 = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length) { + result = [left2, right2]; + } + } + return result; + }; + module.exports = balanced; + balanced.range = range; +}); + +// node_modules/globs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +var require_brace_expansion = __commonJS((exports, module) => { + var numeric = function(str) { + return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); + }; + var escapeBraces = function(str) { + return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); + }; + var unescapeBraces = function(str) { + return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); + }; + var parseCommaParts = function(str) { + if (!str) + return [""]; + var parts = []; + var m = balanced("{", "}", str); + if (!m) + return str.split(","); + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(","); + p[p.length - 1] += "{" + body + "}"; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; + }; + var expandTop = function(str) { + if (!str) + return []; + if (str.substr(0, 2) === "{}") { + str = "\\{\\}" + str.substr(2); + } + return expand(escapeBraces(str), true).map(unescapeBraces); + }; + var embrace = function(str) { + return "{" + str + "}"; + }; + var isPadded = function(el) { + return /^-?0\d/.test(el); + }; + var lte = function(i, y) { + return i <= y; + }; + var gte = function(i, y) { + return i >= y; + }; + var expand = function(str, isTop) { + var expansions = []; + var m = balanced("{", "}", str); + if (!m || /\$$/.test(m.pre)) + return [str]; + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(",") >= 0; + if (!isSequence && !isOptions) { + if (m.post.match(/,.*\}/)) { + str = m.pre + "{" + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length ? expand(m.post, false) : [""]; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + var pre = m.pre; + var post = m.post.length ? expand(m.post, false) : [""]; + var N; + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + N = []; + for (var i = x;test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === "\\") + c = ""; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join("0"); + if (i < 0) + c = "-" + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { + return expand(el, false); + }); + } + for (var j = 0;j < N.length; j++) { + for (var k = 0;k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + return expansions; + }; + var concatMap = require_concat_map(); + var balanced = require_balanced_match(); + module.exports = expandTop; + var escSlash = "\0SLASH" + Math.random() + "\0"; + var escOpen = "\0OPEN" + Math.random() + "\0"; + var escClose = "\0CLOSE" + Math.random() + "\0"; + var escComma = "\0COMMA" + Math.random() + "\0"; + var escPeriod = "\0PERIOD" + Math.random() + "\0"; +}); + +// node_modules/globs/node_modules/glob/node_modules/minimatch/minimatch.js +var require_minimatch = __commonJS((exports, module) => { + var charSet = function(s) { + return s.split("").reduce(function(set, c) { + set[c] = true; + return set; + }, {}); + }; + var filter = function(pattern, options) { + options = options || {}; + return function(p, i, list) { + return minimatch(p, pattern, options); + }; + }; + var ext = function(a, b) { + b = b || {}; + var t = {}; + Object.keys(a).forEach(function(k) { + t[k] = a[k]; + }); + Object.keys(b).forEach(function(k) { + t[k] = b[k]; + }); + return t; + }; + var minimatch = function(p, pattern, options) { + assertValidPattern(pattern); + if (!options) + options = {}; + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + return new Minimatch(pattern, options).match(p); + }; + var Minimatch = function(pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options); + } + assertValidPattern(pattern); + if (!options) + options = {}; + pattern = pattern.trim(); + if (!options.allowWindowsEscape && path.sep !== "/") { + pattern = pattern.split(path.sep).join("/"); + } + this.options = options; + this.set = []; + this.pattern = pattern; + this.regexp = null; + this.negate = false; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.make(); + }; + var make = function() { + var pattern = this.pattern; + var options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + var set = this.globSet = this.braceExpand(); + if (options.debug) + this.debug = function debug() { + console.error.apply(console, arguments); + }; + this.debug(this.pattern, set); + set = this.globParts = set.map(function(s) { + return s.split(slashSplit); + }); + this.debug(this.pattern, set); + set = set.map(function(s, si, set2) { + return s.map(this.parse, this); + }, this); + this.debug(this.pattern, set); + set = set.filter(function(s) { + return s.indexOf(false) === -1; + }); + this.debug(this.pattern, set); + this.set = set; + }; + var parseNegate = function() { + var pattern = this.pattern; + var negate = false; + var options = this.options; + var negateOffset = 0; + if (options.nonegate) + return; + for (var i = 0, l = pattern.length;i < l && pattern.charAt(i) === "!"; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.substr(negateOffset); + this.negate = negate; + }; + var braceExpand = function(pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options; + } else { + options = {}; + } + } + pattern = typeof pattern === "undefined" ? this.pattern : pattern; + assertValidPattern(pattern); + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + return [pattern]; + } + return expand(pattern); + }; + var parse = function(pattern, isSub) { + assertValidPattern(pattern); + var options = this.options; + if (pattern === "**") { + if (!options.noglobstar) + return GLOBSTAR; + else + pattern = "*"; + } + if (pattern === "") + return ""; + var re = ""; + var hasMagic = !!options.nocase; + var escaping = false; + var patternListStack = []; + var negativeLists = []; + var stateChar; + var inClass = false; + var reClassStart = -1; + var classStart = -1; + var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; + var self = this; + function clearStateChar() { + if (stateChar) { + switch (stateChar) { + case "*": + re += star; + hasMagic = true; + break; + case "?": + re += qmark; + hasMagic = true; + break; + default: + re += "\\" + stateChar; + break; + } + self.debug("clearStateChar %j %j", stateChar, re); + stateChar = false; + } + } + for (var i = 0, len = pattern.length, c;i < len && (c = pattern.charAt(i)); i++) { + this.debug("%s\t%s %s %j", pattern, i, re, c); + if (escaping && reSpecials[c]) { + re += "\\" + c; + escaping = false; + continue; + } + switch (c) { + case "/": { + return false; + } + case "\\": + clearStateChar(); + escaping = true; + continue; + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c); + if (inClass) { + this.debug(" in class"); + if (c === "!" && i === classStart + 1) + c = "^"; + re += c; + continue; + } + self.debug("call clearStateChar %j", stateChar); + clearStateChar(); + stateChar = c; + if (options.noext) + clearStateChar(); + continue; + case "(": + if (inClass) { + re += "("; + continue; + } + if (!stateChar) { + re += "\\("; + continue; + } + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }); + re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; + this.debug("plType %j %j", stateChar, re); + stateChar = false; + continue; + case ")": + if (inClass || !patternListStack.length) { + re += "\\)"; + continue; + } + clearStateChar(); + hasMagic = true; + var pl = patternListStack.pop(); + re += pl.close; + if (pl.type === "!") { + negativeLists.push(pl); + } + pl.reEnd = re.length; + continue; + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|"; + escaping = false; + continue; + } + clearStateChar(); + re += "|"; + continue; + case "[": + clearStateChar(); + if (inClass) { + re += "\\" + c; + continue; + } + inClass = true; + classStart = i; + reClassStart = re.length; + re += c; + continue; + case "]": + if (i === classStart + 1 || !inClass) { + re += "\\" + c; + escaping = false; + continue; + } + var cs = pattern.substring(classStart + 1, i); + try { + RegExp("[" + cs + "]"); + } catch (er) { + var sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; + hasMagic = hasMagic || sp[1]; + inClass = false; + continue; + } + hasMagic = true; + inClass = false; + re += c; + continue; + default: + clearStateChar(); + if (escaping) { + escaping = false; + } else if (reSpecials[c] && !(c === "^" && inClass)) { + re += "\\"; + } + re += c; + } + } + if (inClass) { + cs = pattern.substr(classStart + 1); + sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0]; + hasMagic = hasMagic || sp[1]; + } + for (pl = patternListStack.pop();pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length); + this.debug("setting tail", re, pl); + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { + if (!$2) { + $2 = "\\"; + } + return $1 + $1 + $2 + "|"; + }); + this.debug("tail=%j\n %s", tail, tail, pl, re); + var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; + hasMagic = true; + re = re.slice(0, pl.reStart) + t + "\\(" + tail; + } + clearStateChar(); + if (escaping) { + re += "\\\\"; + } + var addPatternStart = false; + switch (re.charAt(0)) { + case "[": + case ".": + case "(": + addPatternStart = true; + } + for (var n = negativeLists.length - 1;n > -1; n--) { + var nl = negativeLists[n]; + var nlBefore = re.slice(0, nl.reStart); + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); + var nlAfter = re.slice(nl.reEnd); + nlLast += nlAfter; + var openParensBefore = nlBefore.split("(").length - 1; + var cleanAfter = nlAfter; + for (i = 0;i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); + } + nlAfter = cleanAfter; + var dollar = ""; + if (nlAfter === "" && isSub !== SUBPARSE) { + dollar = "$"; + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; + re = newRe; + } + if (re !== "" && hasMagic) { + re = "(?=.)" + re; + } + if (addPatternStart) { + re = patternStart + re; + } + if (isSub === SUBPARSE) { + return [re, hasMagic]; + } + if (!hasMagic) { + return globUnescape(pattern); + } + var flags = options.nocase ? "i" : ""; + try { + var regExp = new RegExp("^" + re + "$", flags); + } catch (er) { + return new RegExp("$."); + } + regExp._glob = pattern; + regExp._src = re; + return regExp; + }; + var makeRe = function() { + if (this.regexp || this.regexp === false) + return this.regexp; + var set = this.set; + if (!set.length) { + this.regexp = false; + return this.regexp; + } + var options = this.options; + var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; + var flags = options.nocase ? "i" : ""; + var re = set.map(function(pattern) { + return pattern.map(function(p) { + return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; + }).join("\\/"); + }).join("|"); + re = "^(?:" + re + ")$"; + if (this.negate) + re = "^(?!" + re + ").*$"; + try { + this.regexp = new RegExp(re, flags); + } catch (ex) { + this.regexp = false; + } + return this.regexp; + }; + var globUnescape = function(s) { + return s.replace(/\\(.)/g, "$1"); + }; + var regExpEscape = function(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + module.exports = minimatch; + minimatch.Minimatch = Minimatch; + var path = function() { + try { + return __require("path"); + } catch (e) { + } + }() || { + sep: "/" + }; + minimatch.sep = path.sep; + var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; + var expand = require_brace_expansion(); + var plTypes = { + "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, + "?": { open: "(?:", close: ")?" }, + "+": { open: "(?:", close: ")+" }, + "*": { open: "(?:", close: ")*" }, + "@": { open: "(?:", close: ")" } + }; + var qmark = "[^/]"; + var star = qmark + "*?"; + var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; + var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; + var reSpecials = charSet("().*{}+?[]^$\\!"); + var slashSplit = /\/+/; + minimatch.filter = filter; + minimatch.defaults = function(def) { + if (!def || typeof def !== "object" || !Object.keys(def).length) { + return minimatch; + } + var orig = minimatch; + var m = function minimatch(p, pattern, options) { + return orig(p, pattern, ext(def, options)); + }; + m.Minimatch = function Minimatch(pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)); + }; + m.Minimatch.defaults = function defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + }; + m.filter = function filter(pattern, options) { + return orig.filter(pattern, ext(def, options)); + }; + m.defaults = function defaults(options) { + return orig.defaults(ext(def, options)); + }; + m.makeRe = function makeRe(pattern, options) { + return orig.makeRe(pattern, ext(def, options)); + }; + m.braceExpand = function braceExpand(pattern, options) { + return orig.braceExpand(pattern, ext(def, options)); + }; + m.match = function(list, pattern, options) { + return orig.match(list, pattern, ext(def, options)); + }; + return m; + }; + Minimatch.defaults = function(def) { + return minimatch.defaults(def).Minimatch; + }; + Minimatch.prototype.debug = function() { + }; + Minimatch.prototype.make = make; + Minimatch.prototype.parseNegate = parseNegate; + minimatch.braceExpand = function(pattern, options) { + return braceExpand(pattern, options); + }; + Minimatch.prototype.braceExpand = braceExpand; + var MAX_PATTERN_LENGTH = 1024 * 64; + var assertValidPattern = function(pattern) { + if (typeof pattern !== "string") { + throw new TypeError("invalid pattern"); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError("pattern is too long"); + } + }; + Minimatch.prototype.parse = parse; + var SUBPARSE = {}; + minimatch.makeRe = function(pattern, options) { + return new Minimatch(pattern, options || {}).makeRe(); + }; + Minimatch.prototype.makeRe = makeRe; + minimatch.match = function(list, pattern, options) { + options = options || {}; + var mm = new Minimatch(pattern, options); + list = list.filter(function(f) { + return mm.match(f); + }); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + Minimatch.prototype.match = function match(f, partial) { + if (typeof partial === "undefined") + partial = this.partial; + this.debug("match", f, this.pattern); + if (this.comment) + return false; + if (this.empty) + return f === ""; + if (f === "/" && partial) + return true; + var options = this.options; + if (path.sep !== "/") { + f = f.split(path.sep).join("/"); + } + f = f.split(slashSplit); + this.debug(this.pattern, "split", f); + var set = this.set; + this.debug(this.pattern, "set", set); + var filename; + var i; + for (i = f.length - 1;i >= 0; i--) { + filename = f[i]; + if (filename) + break; + } + for (i = 0;i < set.length; i++) { + var pattern = set[i]; + var file = f; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + var hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) + return true; + return !this.negate; + } + } + if (options.flipNegate) + return false; + return this.negate; + }; + Minimatch.prototype.matchOne = function(file, pattern, partial) { + var options = this.options; + this.debug("matchOne", { this: this, file, pattern }); + this.debug("matchOne", file.length, pattern.length); + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length;fi < fl && pi < pl; fi++, pi++) { + this.debug("matchOne loop"); + var p = pattern[pi]; + var f = file[fi]; + this.debug(pattern, p, f); + if (p === false) + return false; + if (p === GLOBSTAR) { + this.debug("GLOBSTAR", [pattern, p, f]); + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug("** at the end"); + for (;fi < fl; fi++) { + if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") + return false; + } + return true; + } + while (fr < fl) { + var swallowee = file[fr]; + this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug("globstar found match!", fr, fl, swallowee); + return true; + } else { + if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { + this.debug("dot detected!", file, fr, pattern, pr); + break; + } + this.debug("globstar swallow a segment, and continue"); + fr++; + } + } + if (partial) { + this.debug("\n>>> no match, partial?", file, fr, pattern, pr); + if (fr === fl) + return true; + } + return false; + } + var hit; + if (typeof p === "string") { + hit = f === p; + this.debug("string match", p, f, hit); + } else { + hit = f.match(p); + this.debug("pattern match", p, f, hit); + } + if (!hit) + return false; + } + if (fi === fl && pi === pl) { + return true; + } else if (fi === fl) { + return partial; + } else if (pi === pl) { + return fi === fl - 1 && file[fi] === ""; + } + throw new Error("wtf?"); + }; +}); + +// node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS((exports, module) => { + if (typeof Object.create === "function") { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor; + ctor.prototype.constructor = ctor; + } + }; + } +}); + +// node_modules/inherits/inherits.js +var require_inherits = __commonJS((exports, module) => { + try { + util = __require("util"); + if (typeof util.inherits !== "function") + throw ""; + module.exports = util.inherits; + } catch (e) { + module.exports = require_inherits_browser(); + } + var util; +}); + +// node_modules/path-is-absolute/index.js +var require_path_is_absolute = __commonJS((exports, module) => { + var posix = function(path) { + return path.charAt(0) === "/"; + }; + var win32 = function(path) { + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ""; + var isUnc = Boolean(device && device.charAt(1) !== ":"); + return Boolean(result[2] || isUnc); + }; + module.exports = process.platform === "win32" ? win32 : posix; + module.exports.posix = posix; + module.exports.win32 = win32; +}); + +// node_modules/globs/node_modules/glob/common.js +var require_common3 = __commonJS((exports) => { + var ownProp = function(obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field); + }; + var alphasort = function(a, b) { + return a.localeCompare(b, "en"); + }; + var setupIgnores = function(self, options) { + self.ignore = options.ignore || []; + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore]; + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap); + } + }; + var ignoreMap = function(pattern) { + var gmatcher = null; + if (pattern.slice(-3) === "/**") { + var gpattern = pattern.replace(/(\/\*\*)+$/, ""); + gmatcher = new Minimatch(gpattern, { dot: true }); + } + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher + }; + }; + var setopts = function(self, pattern, options) { + if (!options) + options = {}; + if (options.matchBase && pattern.indexOf("/") === -1) { + if (options.noglobstar) { + throw new Error("base matching requires globstar"); + } + pattern = "**/" + pattern; + } + self.silent = !!options.silent; + self.pattern = pattern; + self.strict = options.strict !== false; + self.realpath = !!options.realpath; + self.realpathCache = options.realpathCache || Object.create(null); + self.follow = !!options.follow; + self.dot = !!options.dot; + self.mark = !!options.mark; + self.nodir = !!options.nodir; + if (self.nodir) + self.mark = true; + self.sync = !!options.sync; + self.nounique = !!options.nounique; + self.nonull = !!options.nonull; + self.nosort = !!options.nosort; + self.nocase = !!options.nocase; + self.stat = !!options.stat; + self.noprocess = !!options.noprocess; + self.absolute = !!options.absolute; + self.fs = options.fs || fs; + self.maxLength = options.maxLength || Infinity; + self.cache = options.cache || Object.create(null); + self.statCache = options.statCache || Object.create(null); + self.symlinks = options.symlinks || Object.create(null); + setupIgnores(self, options); + self.changedCwd = false; + var cwd = process.cwd(); + if (!ownProp(options, "cwd")) + self.cwd = cwd; + else { + self.cwd = path.resolve(options.cwd); + self.changedCwd = self.cwd !== cwd; + } + self.root = options.root || path.resolve(self.cwd, "/"); + self.root = path.resolve(self.root); + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/"); + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd); + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); + self.nomount = !!options.nomount; + options.nonegate = true; + options.nocomment = true; + options.allowWindowsEscape = false; + self.minimatch = new Minimatch(pattern, options); + self.options = self.minimatch.options; + }; + var finish = function(self) { + var nou = self.nounique; + var all = nou ? [] : Object.create(null); + for (var i = 0, l = self.matches.length;i < l; i++) { + var matches = self.matches[i]; + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + var literal = self.minimatch.globSet[i]; + if (nou) + all.push(literal); + else + all[literal] = true; + } + } else { + var m = Object.keys(matches); + if (nou) + all.push.apply(all, m); + else + m.forEach(function(m2) { + all[m2] = true; + }); + } + } + if (!nou) + all = Object.keys(all); + if (!self.nosort) + all = all.sort(alphasort); + if (self.mark) { + for (var i = 0;i < all.length; i++) { + all[i] = self._mark(all[i]); + } + if (self.nodir) { + all = all.filter(function(e) { + var notDir = !/\/$/.test(e); + var c = self.cache[e] || self.cache[makeAbs(self, e)]; + if (notDir && c) + notDir = c !== "DIR" && !Array.isArray(c); + return notDir; + }); + } + } + if (self.ignore.length) + all = all.filter(function(m2) { + return !isIgnored(self, m2); + }); + self.found = all; + }; + var mark = function(self, p) { + var abs = makeAbs(self, p); + var c = self.cache[abs]; + var m = p; + if (c) { + var isDir = c === "DIR" || Array.isArray(c); + var slash = p.slice(-1) === "/"; + if (isDir && !slash) + m += "/"; + else if (!isDir && slash) + m = m.slice(0, -1); + if (m !== p) { + var mabs = makeAbs(self, m); + self.statCache[mabs] = self.statCache[abs]; + self.cache[mabs] = self.cache[abs]; + } + } + return m; + }; + var makeAbs = function(self, f) { + var abs = f; + if (f.charAt(0) === "/") { + abs = path.join(self.root, f); + } else if (isAbsolute(f) || f === "") { + abs = f; + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f); + } else { + abs = path.resolve(f); + } + if (process.platform === "win32") + abs = abs.replace(/\\/g, "/"); + return abs; + }; + var isIgnored = function(self, path2) { + if (!self.ignore.length) + return false; + return self.ignore.some(function(item) { + return item.matcher.match(path2) || !!(item.gmatcher && item.gmatcher.match(path2)); + }); + }; + var childrenIgnored = function(self, path2) { + if (!self.ignore.length) + return false; + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path2)); + }); + }; + exports.setopts = setopts; + exports.ownProp = ownProp; + exports.makeAbs = makeAbs; + exports.finish = finish; + exports.mark = mark; + exports.isIgnored = isIgnored; + exports.childrenIgnored = childrenIgnored; + var fs = __require("fs"); + var path = __require("path"); + var minimatch = require_minimatch(); + var isAbsolute = require_path_is_absolute(); + var Minimatch = minimatch.Minimatch; +}); + +// node_modules/globs/node_modules/glob/sync.js +var require_sync7 = __commonJS((exports, module) => { + var globSync = function(pattern, options) { + if (typeof options === "function" || arguments.length === 3) + throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); + return new GlobSync(pattern, options).found; + }; + var GlobSync = function(pattern, options) { + if (!pattern) + throw new Error("must provide pattern"); + if (typeof options === "function" || arguments.length === 3) + throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options); + setopts(this, pattern, options); + if (this.noprocess) + return this; + var n = this.minimatch.set.length; + this.matches = new Array(n); + for (var i = 0;i < n; i++) { + this._process(this.minimatch.set[i], i, false); + } + this._finish(); + }; + module.exports = globSync; + globSync.GlobSync = GlobSync; + var rp = require_fs6(); + var minimatch = require_minimatch(); + var Minimatch = minimatch.Minimatch; + var Glob = require_glob().Glob; + var util = __require("util"); + var path = __require("path"); + var assert = __require("assert"); + var isAbsolute = require_path_is_absolute(); + var common = require_common3(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; + GlobSync.prototype._finish = function() { + assert.ok(this instanceof GlobSync); + if (this.realpath) { + var self = this; + this.matches.forEach(function(matchset, index) { + var set = self.matches[index] = Object.create(null); + for (var p in matchset) { + try { + p = self._makeAbs(p); + var real = rp.realpathSync(p, self.realpathCache); + set[real] = true; + } catch (er) { + if (er.syscall === "stat") + set[self._makeAbs(p)] = true; + else + throw er; + } + } + }); + } + common.finish(this); + }; + GlobSync.prototype._process = function(pattern, index, inGlobStar) { + assert.ok(this instanceof GlobSync); + var n = 0; + while (typeof pattern[n] === "string") { + n++; + } + var prefix; + switch (n) { + case pattern.length: + this._processSimple(pattern.join("/"), index); + return; + case 0: + prefix = null; + break; + default: + prefix = pattern.slice(0, n).join("/"); + break; + } + var remain = pattern.slice(n); + var read; + if (prefix === null) + read = "."; + else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { + return typeof p === "string" ? p : "[*]"; + }).join("/"))) { + if (!prefix || !isAbsolute(prefix)) + prefix = "/" + prefix; + read = prefix; + } else + read = prefix; + var abs = this._makeAbs(read); + if (childrenIgnored(this, read)) + return; + var isGlobStar = remain[0] === minimatch.GLOBSTAR; + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar); + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar); + }; + GlobSync.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar); + if (!entries) + return; + var pn = remain[0]; + var negate = !!this.minimatch.negate; + var rawGlob = pn._glob; + var dotOk = this.dot || rawGlob.charAt(0) === "."; + var matchedEntries = []; + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (e.charAt(0) !== "." || dotOk) { + var m; + if (negate && !prefix) { + m = !e.match(pn); + } else { + m = e.match(pn); + } + if (m) + matchedEntries.push(e); + } + } + var len = matchedEntries.length; + if (len === 0) + return; + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + if (prefix) { + if (prefix.slice(-1) !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path.join(this.root, e); + } + this._emitMatch(index, e); + } + return; + } + remain.shift(); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + var newPattern; + if (prefix) + newPattern = [prefix, e]; + else + newPattern = [e]; + this._process(newPattern.concat(remain), index, inGlobStar); + } + }; + GlobSync.prototype._emitMatch = function(index, e) { + if (isIgnored(this, e)) + return; + var abs = this._makeAbs(e); + if (this.mark) + e = this._mark(e); + if (this.absolute) { + e = abs; + } + if (this.matches[index][e]) + return; + if (this.nodir) { + var c = this.cache[abs]; + if (c === "DIR" || Array.isArray(c)) + return; + } + this.matches[index][e] = true; + if (this.stat) + this._stat(e); + }; + GlobSync.prototype._readdirInGlobStar = function(abs) { + if (this.follow) + return this._readdir(abs, false); + var entries; + var lstat; + var stat; + try { + lstat = this.fs.lstatSync(abs); + } catch (er) { + if (er.code === "ENOENT") { + return null; + } + } + var isSym = lstat && lstat.isSymbolicLink(); + this.symlinks[abs] = isSym; + if (!isSym && lstat && !lstat.isDirectory()) + this.cache[abs] = "FILE"; + else + entries = this._readdir(abs, false); + return entries; + }; + GlobSync.prototype._readdir = function(abs, inGlobStar) { + var entries; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (!c || c === "FILE") + return null; + if (Array.isArray(c)) + return c; + } + try { + return this._readdirEntries(abs, this.fs.readdirSync(abs)); + } catch (er) { + this._readdirError(abs, er); + return null; + } + }; + GlobSync.prototype._readdirEntries = function(abs, entries) { + if (!this.mark && !this.stat) { + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (abs === "/") + e = abs + e; + else + e = abs + "/" + e; + this.cache[e] = true; + } + } + this.cache[abs] = entries; + return entries; + }; + GlobSync.prototype._readdirError = function(f, er) { + switch (er.code) { + case "ENOTSUP": + case "ENOTDIR": + var abs = this._makeAbs(f); + this.cache[abs] = "FILE"; + if (abs === this.cwdAbs) { + var error2 = new Error(er.code + " invalid cwd " + this.cwd); + error2.path = this.cwd; + error2.code = er.code; + throw error2; + } + break; + case "ENOENT": + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[this._makeAbs(f)] = false; + break; + default: + this.cache[this._makeAbs(f)] = false; + if (this.strict) + throw er; + if (!this.silent) + console.error("glob error", er); + break; + } + }; + GlobSync.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar); + if (!entries) + return; + var remainWithoutGlobStar = remain.slice(1); + var gspref = prefix ? [prefix] : []; + var noGlobStar = gspref.concat(remainWithoutGlobStar); + this._process(noGlobStar, index, false); + var len = entries.length; + var isSym = this.symlinks[abs]; + if (isSym && inGlobStar) + return; + for (var i = 0;i < len; i++) { + var e = entries[i]; + if (e.charAt(0) === "." && !this.dot) + continue; + var instead = gspref.concat(entries[i], remainWithoutGlobStar); + this._process(instead, index, true); + var below = gspref.concat(entries[i], remain); + this._process(below, index, true); + } + }; + GlobSync.prototype._processSimple = function(prefix, index) { + var exists = this._stat(prefix); + if (!this.matches[index]) + this.matches[index] = Object.create(null); + if (!exists) + return; + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix); + if (prefix.charAt(0) === "/") { + prefix = path.join(this.root, prefix); + } else { + prefix = path.resolve(this.root, prefix); + if (trail) + prefix += "/"; + } + } + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/"); + this._emitMatch(index, prefix); + }; + GlobSync.prototype._stat = function(f) { + var abs = this._makeAbs(f); + var needDir = f.slice(-1) === "/"; + if (f.length > this.maxLength) + return false; + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (Array.isArray(c)) + c = "DIR"; + if (!needDir || c === "DIR") + return c; + if (needDir && c === "FILE") + return false; + } + var exists; + var stat = this.statCache[abs]; + if (!stat) { + var lstat; + try { + lstat = this.fs.lstatSync(abs); + } catch (er) { + if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { + this.statCache[abs] = false; + return false; + } + } + if (lstat && lstat.isSymbolicLink()) { + try { + stat = this.fs.statSync(abs); + } catch (er) { + stat = lstat; + } + } else { + stat = lstat; + } + } + this.statCache[abs] = stat; + var c = true; + if (stat) + c = stat.isDirectory() ? "DIR" : "FILE"; + this.cache[abs] = this.cache[abs] || c; + if (needDir && c === "FILE") + return false; + return c; + }; + GlobSync.prototype._mark = function(p) { + return common.mark(this, p); + }; + GlobSync.prototype._makeAbs = function(f) { + return common.makeAbs(this, f); + }; +}); + +// node_modules/wrappy/wrappy.js +var require_wrappy = __commonJS((exports, module) => { + var wrappy = function(fn, cb) { + if (fn && cb) + return wrappy(fn)(cb); + if (typeof fn !== "function") + throw new TypeError("need wrapper function"); + Object.keys(fn).forEach(function(k) { + wrapper[k] = fn[k]; + }); + return wrapper; + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0;i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb2 = args[args.length - 1]; + if (typeof ret === "function" && ret !== cb2) { + Object.keys(cb2).forEach(function(k) { + ret[k] = cb2[k]; + }); + } + return ret; + } + }; + module.exports = wrappy; +}); + +// node_modules/once/once.js +var require_once = __commonJS((exports, module) => { + var once = function(fn) { + var f = function() { + if (f.called) + return f.value; + f.called = true; + return f.value = fn.apply(this, arguments); + }; + f.called = false; + return f; + }; + var onceStrict = function(fn) { + var f = function() { + if (f.called) + throw new Error(f.onceError); + f.called = true; + return f.value = fn.apply(this, arguments); + }; + var name = fn.name || "Function wrapped with `once`"; + f.onceError = name + " shouldn't be called more than once"; + f.called = false; + return f; + }; + var wrappy = require_wrappy(); + module.exports = wrappy(once); + module.exports.strict = wrappy(onceStrict); + once.proto = once(function() { + Object.defineProperty(Function.prototype, "once", { + value: function() { + return once(this); + }, + configurable: true + }); + Object.defineProperty(Function.prototype, "onceStrict", { + value: function() { + return onceStrict(this); + }, + configurable: true + }); + }); +}); + +// node_modules/inflight/inflight.js +var require_inflight = __commonJS((exports, module) => { + var inflight = function(key, cb) { + if (reqs[key]) { + reqs[key].push(cb); + return null; + } else { + reqs[key] = [cb]; + return makeres(key); + } + }; + var makeres = function(key) { + return once(function RES() { + var cbs = reqs[key]; + var len = cbs.length; + var args = slice(arguments); + try { + for (var i = 0;i < len; i++) { + cbs[i].apply(null, args); + } + } finally { + if (cbs.length > len) { + cbs.splice(0, len); + process.nextTick(function() { + RES.apply(null, args); + }); + } else { + delete reqs[key]; + } + } + }); + }; + var slice = function(args) { + var length = args.length; + var array = []; + for (var i = 0;i < length; i++) + array[i] = args[i]; + return array; + }; + var wrappy = require_wrappy(); + var reqs = Object.create(null); + var once = require_once(); + module.exports = wrappy(inflight); +}); + +// node_modules/globs/node_modules/glob/glob.js +var require_glob = __commonJS((exports, module) => { + var glob = function(pattern, options, cb) { + if (typeof options === "function") + cb = options, options = {}; + if (!options) + options = {}; + if (options.sync) { + if (cb) + throw new TypeError("callback provided to sync glob"); + return globSync(pattern, options); + } + return new Glob(pattern, options, cb); + }; + var extend = function(origin, add) { + if (add === null || typeof add !== "object") { + return origin; + } + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; + }; + var Glob = function(pattern, options, cb) { + if (typeof options === "function") { + cb = options; + options = null; + } + if (options && options.sync) { + if (cb) + throw new TypeError("callback provided to sync glob"); + return new GlobSync(pattern, options); + } + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb); + setopts(this, pattern, options); + this._didRealPath = false; + var n = this.minimatch.set.length; + this.matches = new Array(n); + if (typeof cb === "function") { + cb = once(cb); + this.on("error", cb); + this.on("end", function(matches) { + cb(null, matches); + }); + } + var self = this; + this._processing = 0; + this._emitQueue = []; + this._processQueue = []; + this.paused = false; + if (this.noprocess) + return this; + if (n === 0) + return done(); + var sync2 = true; + for (var i = 0;i < n; i++) { + this._process(this.minimatch.set[i], i, false, done); + } + sync2 = false; + function done() { + --self._processing; + if (self._processing <= 0) { + if (sync2) { + process.nextTick(function() { + self._finish(); + }); + } else { + self._finish(); + } + } + } + }; + var readdirCb = function(self, abs, cb) { + return function(er, entries) { + if (er) + self._readdirError(abs, er, cb); + else + self._readdirEntries(abs, entries, cb); + }; + }; + module.exports = glob; + var rp = require_fs6(); + var minimatch = require_minimatch(); + var Minimatch = minimatch.Minimatch; + var inherits = require_inherits(); + var EE = __require("events").EventEmitter; + var path = __require("path"); + var assert = __require("assert"); + var isAbsolute = require_path_is_absolute(); + var globSync = require_sync7(); + var common = require_common3(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var inflight = require_inflight(); + var util = __require("util"); + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; + var once = require_once(); + glob.sync = globSync; + var GlobSync = glob.GlobSync = globSync.GlobSync; + glob.glob = glob; + glob.hasMagic = function(pattern, options_) { + var options = extend({}, options_); + options.noprocess = true; + var g = new Glob(pattern, options); + var set = g.minimatch.set; + if (!pattern) + return false; + if (set.length > 1) + return true; + for (var j = 0;j < set[0].length; j++) { + if (typeof set[0][j] !== "string") + return true; + } + return false; + }; + glob.Glob = Glob; + inherits(Glob, EE); + Glob.prototype._finish = function() { + assert(this instanceof Glob); + if (this.aborted) + return; + if (this.realpath && !this._didRealpath) + return this._realpath(); + common.finish(this); + this.emit("end", this.found); + }; + Glob.prototype._realpath = function() { + if (this._didRealpath) + return; + this._didRealpath = true; + var n = this.matches.length; + if (n === 0) + return this._finish(); + var self = this; + for (var i = 0;i < this.matches.length; i++) + this._realpathSet(i, next); + function next() { + if (--n === 0) + self._finish(); + } + }; + Glob.prototype._realpathSet = function(index, cb) { + var matchset = this.matches[index]; + if (!matchset) + return cb(); + var found = Object.keys(matchset); + var self = this; + var n = found.length; + if (n === 0) + return cb(); + var set = this.matches[index] = Object.create(null); + found.forEach(function(p, i) { + p = self._makeAbs(p); + rp.realpath(p, self.realpathCache, function(er, real) { + if (!er) + set[real] = true; + else if (er.syscall === "stat") + set[p] = true; + else + self.emit("error", er); + if (--n === 0) { + self.matches[index] = set; + cb(); + } + }); + }); + }; + Glob.prototype._mark = function(p) { + return common.mark(this, p); + }; + Glob.prototype._makeAbs = function(f) { + return common.makeAbs(this, f); + }; + Glob.prototype.abort = function() { + this.aborted = true; + this.emit("abort"); + }; + Glob.prototype.pause = function() { + if (!this.paused) { + this.paused = true; + this.emit("pause"); + } + }; + Glob.prototype.resume = function() { + if (this.paused) { + this.emit("resume"); + this.paused = false; + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0); + this._emitQueue.length = 0; + for (var i = 0;i < eq.length; i++) { + var e = eq[i]; + this._emitMatch(e[0], e[1]); + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0); + this._processQueue.length = 0; + for (var i = 0;i < pq.length; i++) { + var p = pq[i]; + this._processing--; + this._process(p[0], p[1], p[2], p[3]); + } + } + } + }; + Glob.prototype._process = function(pattern, index, inGlobStar, cb) { + assert(this instanceof Glob); + assert(typeof cb === "function"); + if (this.aborted) + return; + this._processing++; + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]); + return; + } + var n = 0; + while (typeof pattern[n] === "string") { + n++; + } + var prefix; + switch (n) { + case pattern.length: + this._processSimple(pattern.join("/"), index, cb); + return; + case 0: + prefix = null; + break; + default: + prefix = pattern.slice(0, n).join("/"); + break; + } + var remain = pattern.slice(n); + var read; + if (prefix === null) + read = "."; + else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { + return typeof p === "string" ? p : "[*]"; + }).join("/"))) { + if (!prefix || !isAbsolute(prefix)) + prefix = "/" + prefix; + read = prefix; + } else + read = prefix; + var abs = this._makeAbs(read); + if (childrenIgnored(this, read)) + return cb(); + var isGlobStar = remain[0] === minimatch.GLOBSTAR; + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb); + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb); + }; + Glob.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this; + this._readdir(abs, inGlobStar, function(er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb); + }); + }; + Glob.prototype._processReaddir2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { + if (!entries) + return cb(); + var pn = remain[0]; + var negate = !!this.minimatch.negate; + var rawGlob = pn._glob; + var dotOk = this.dot || rawGlob.charAt(0) === "."; + var matchedEntries = []; + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (e.charAt(0) !== "." || dotOk) { + var m; + if (negate && !prefix) { + m = !e.match(pn); + } else { + m = e.match(pn); + } + if (m) + matchedEntries.push(e); + } + } + var len = matchedEntries.length; + if (len === 0) + return cb(); + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + if (prefix) { + if (prefix !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path.join(this.root, e); + } + this._emitMatch(index, e); + } + return cb(); + } + remain.shift(); + for (var i = 0;i < len; i++) { + var e = matchedEntries[i]; + var newPattern; + if (prefix) { + if (prefix !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + this._process([e].concat(remain), index, inGlobStar, cb); + } + cb(); + }; + Glob.prototype._emitMatch = function(index, e) { + if (this.aborted) + return; + if (isIgnored(this, e)) + return; + if (this.paused) { + this._emitQueue.push([index, e]); + return; + } + var abs = isAbsolute(e) ? e : this._makeAbs(e); + if (this.mark) + e = this._mark(e); + if (this.absolute) + e = abs; + if (this.matches[index][e]) + return; + if (this.nodir) { + var c = this.cache[abs]; + if (c === "DIR" || Array.isArray(c)) + return; + } + this.matches[index][e] = true; + var st = this.statCache[abs]; + if (st) + this.emit("stat", e, st); + this.emit("match", e); + }; + Glob.prototype._readdirInGlobStar = function(abs, cb) { + if (this.aborted) + return; + if (this.follow) + return this._readdir(abs, false, cb); + var lstatkey = "lstat\0" + abs; + var self = this; + var lstatcb = inflight(lstatkey, lstatcb_); + if (lstatcb) + self.fs.lstat(abs, lstatcb); + function lstatcb_(er, lstat) { + if (er && er.code === "ENOENT") + return cb(); + var isSym = lstat && lstat.isSymbolicLink(); + self.symlinks[abs] = isSym; + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = "FILE"; + cb(); + } else + self._readdir(abs, false, cb); + } + }; + Glob.prototype._readdir = function(abs, inGlobStar, cb) { + if (this.aborted) + return; + cb = inflight("readdir\0" + abs + "\0" + inGlobStar, cb); + if (!cb) + return; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (!c || c === "FILE") + return cb(); + if (Array.isArray(c)) + return cb(null, c); + } + var self = this; + self.fs.readdir(abs, readdirCb(this, abs, cb)); + }; + Glob.prototype._readdirEntries = function(abs, entries, cb) { + if (this.aborted) + return; + if (!this.mark && !this.stat) { + for (var i = 0;i < entries.length; i++) { + var e = entries[i]; + if (abs === "/") + e = abs + e; + else + e = abs + "/" + e; + this.cache[e] = true; + } + } + this.cache[abs] = entries; + return cb(null, entries); + }; + Glob.prototype._readdirError = function(f, er, cb) { + if (this.aborted) + return; + switch (er.code) { + case "ENOTSUP": + case "ENOTDIR": + var abs = this._makeAbs(f); + this.cache[abs] = "FILE"; + if (abs === this.cwdAbs) { + var error2 = new Error(er.code + " invalid cwd " + this.cwd); + error2.path = this.cwd; + error2.code = er.code; + this.emit("error", error2); + this.abort(); + } + break; + case "ENOENT": + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[this._makeAbs(f)] = false; + break; + default: + this.cache[this._makeAbs(f)] = false; + if (this.strict) { + this.emit("error", er); + this.abort(); + } + if (!this.silent) + console.error("glob error", er); + break; + } + return cb(); + }; + Glob.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this; + this._readdir(abs, inGlobStar, function(er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb); + }); + }; + Glob.prototype._processGlobStar2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { + if (!entries) + return cb(); + var remainWithoutGlobStar = remain.slice(1); + var gspref = prefix ? [prefix] : []; + var noGlobStar = gspref.concat(remainWithoutGlobStar); + this._process(noGlobStar, index, false, cb); + var isSym = this.symlinks[abs]; + var len = entries.length; + if (isSym && inGlobStar) + return cb(); + for (var i = 0;i < len; i++) { + var e = entries[i]; + if (e.charAt(0) === "." && !this.dot) + continue; + var instead = gspref.concat(entries[i], remainWithoutGlobStar); + this._process(instead, index, true, cb); + var below = gspref.concat(entries[i], remain); + this._process(below, index, true, cb); + } + cb(); + }; + Glob.prototype._processSimple = function(prefix, index, cb) { + var self = this; + this._stat(prefix, function(er, exists) { + self._processSimple2(prefix, index, er, exists, cb); + }); + }; + Glob.prototype._processSimple2 = function(prefix, index, er, exists, cb) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + if (!exists) + return cb(); + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix); + if (prefix.charAt(0) === "/") { + prefix = path.join(this.root, prefix); + } else { + prefix = path.resolve(this.root, prefix); + if (trail) + prefix += "/"; + } + } + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/"); + this._emitMatch(index, prefix); + cb(); + }; + Glob.prototype._stat = function(f, cb) { + var abs = this._makeAbs(f); + var needDir = f.slice(-1) === "/"; + if (f.length > this.maxLength) + return cb(); + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (Array.isArray(c)) + c = "DIR"; + if (!needDir || c === "DIR") + return cb(null, c); + if (needDir && c === "FILE") + return cb(); + } + var exists; + var stat = this.statCache[abs]; + if (stat !== undefined) { + if (stat === false) + return cb(null, stat); + else { + var type = stat.isDirectory() ? "DIR" : "FILE"; + if (needDir && type === "FILE") + return cb(); + else + return cb(null, type, stat); + } + } + var self = this; + var statcb = inflight("stat\0" + abs, lstatcb_); + if (statcb) + self.fs.lstat(abs, statcb); + function lstatcb_(er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + return self.fs.stat(abs, function(er2, stat2) { + if (er2) + self._stat2(f, abs, null, lstat, cb); + else + self._stat2(f, abs, er2, stat2, cb); + }); + } else { + self._stat2(f, abs, er, lstat, cb); + } + } + }; + Glob.prototype._stat2 = function(f, abs, er, stat, cb) { + if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { + this.statCache[abs] = false; + return cb(); + } + var needDir = f.slice(-1) === "/"; + this.statCache[abs] = stat; + if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) + return cb(null, false, stat); + var c = true; + if (stat) + c = stat.isDirectory() ? "DIR" : "FILE"; + this.cache[abs] = this.cache[abs] || c; + if (needDir && c === "FILE") + return cb(); + return cb(null, c, stat); + }; +}); + +// node_modules/globs/index.js +var require_globs = __commonJS((exports, module) => { + var glob = require_glob(); + var globs = module.exports = function(patterns, options, callback) { + var pending, groups = []; + if (!Array.isArray(patterns)) { + patterns = [patterns]; + } + pending = patterns.length; + if (typeof options === "function") { + callback = options; + options = {}; + } + if (!pending) { + return process.nextTick(function() { + callback(null, []); + }); + } + patterns.forEach(function(pattern) { + glob(pattern, options, function(err, files) { + if (err) { + return callback(err); + } + groups = groups.concat(files); + pending -= 1; + if (!pending) { + return callback(null, groups); + } + }); + }); + }; + globs.sync = function(patterns, options) { + options = options || {}; + var groups = [], index, length; + if (!Array.isArray(patterns)) { + patterns = [patterns]; + } + for (index = 0, length = patterns.length;index < length; index++) { + groups = groups.concat(glob.sync(patterns[index], options)); + } + return groups; + }; +}); + +// node_modules/yargs/lib/platform-shims/esm.mjs +import {notStrictEqual, strictEqual} from "assert"; + +// node_modules/cliui/build/lib/index.js +var addBorder = function(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ""; + } + if (ts.trim().length !== 0) { + return style; + } + return " "; + } + return ""; +}; +var _minWidth = function(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +}; +var getWindowWidth = function() { + if (typeof process === "object" && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +}; +var alignRight = function(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return " ".repeat(width - strWidth) + str; + } + return str; +}; +var alignCenter = function(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth >= width) { + return str; + } + return " ".repeat(width - strWidth >> 1) + str; +}; +function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + width: (opts === null || opts === undefined ? undefined : opts.width) || getWindowWidth(), + wrap: opts === null || opts === undefined ? undefined : opts.wrap + }); +} +var align = { + right: alignRight, + center: alignCenter +}; +var top = 0; +var right = 1; +var bottom = 2; +var left = 3; + +class UI { + constructor(opts) { + var _a; + this.width = opts.width; + this.wrap = (_a = opts.wrap) !== null && _a !== undefined ? _a : true; + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(""); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === "string") { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map((arg) => { + if (typeof arg === "string") { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === "string" && /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split("\n").map((row) => row.split("\t")); + let leftColumnWidth = 0; + rows.forEach((columns) => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + rows.forEach((columns) => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: i === 0 && columns.length > 1 ? leftColumnWidth : undefined + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach((row) => { + this.rowToString(row, lines); + }); + return lines.filter((line) => !line.hidden).map((line) => line.text).join("\n"); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ""; + rrow.forEach((col, c) => { + const { width } = row[c]; + const wrapWidth = this.negatePadding(row[c]); + let ts = col; + if (wrapWidth > mixin.stringWidth(col)) { + ts += " ".repeat(wrapWidth - mixin.stringWidth(col)); + } + if (row[c].align && row[c].align !== "left" && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + ts += " ".repeat((width || 0) - mixin.stringWidth(ts) - 1); + } + } + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += " ".repeat(padding[left]); + } + str += addBorder(row[c], ts, "| "); + str += ts; + str += addBorder(row[c], ts, " |"); + if (padding[right]) { + str += " ".repeat(padding[right]); + } + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + lines.push({ + text: str.replace(/ +$/, ""), + span: row.span + }); + }); + return lines; + } + renderInline(source, previousLine) { + const match = source.match(/^ */); + const leadingWhitespace = match ? match[0].length : 0; + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimRight()); + if (!previousLine.span) { + return source; + } + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimRight() + " ".repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + row.forEach((col, c) => { + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split("\n"); + } else { + wrapped = col.text.split("\n"); + } + if (col.border) { + wrapped.unshift("." + "-".repeat(this.negatePadding(col) + 2) + "."); + wrapped.push("'" + "-".repeat(this.negatePadding(col) + 2) + "'"); + } + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill("")); + wrapped.push(...new Array(col.padding[bottom] || 0).fill("")); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0;i < c; i++) { + if (rrow[i] === undefined) { + rrow.push(""); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + let wrapWidth = col.width || 0; + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map((col) => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + const widths = row.map((col) => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return; + }); + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + return widths.map((w, i) => { + if (w === undefined) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +} +var mixin; + +// node_modules/cliui/build/lib/string-utils.js +function stripAnsi(str) { + return str.replace(ansi, ""); +} +function wrap(str, width) { + const [start, end] = str.match(ansi) || ["", ""]; + str = stripAnsi(str); + let wrapped = ""; + for (let i = 0;i < str.length; i++) { + if (i !== 0 && i % width === 0) { + wrapped += "\n"; + } + wrapped += str.charAt(i); + } + if (start && end) { + wrapped = `${start}${wrapped}${end}`; + } + return wrapped; +} +var ansi = new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|" + "\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g"); + +// node_modules/cliui/index.mjs +function ui(opts) { + return cliui(opts, { + stringWidth: (str) => { + return [...str].length; + }, + stripAnsi, + wrap + }); +} + +// node_modules/escalade/sync/index.mjs +import {dirname, resolve} from "path"; +import {readdirSync, statSync} from "fs"; +function sync_default(start, callback) { + let dir = resolve(".", start); + let tmp, stats = statSync(dir); + if (!stats.isDirectory()) { + dir = dirname(dir); + } + while (true) { + tmp = callback(dir, readdirSync(dir)); + if (tmp) + return resolve(dir, tmp); + dir = dirname(tmp = dir); + if (tmp === dir) + break; + } +} + +// node_modules/yargs/lib/platform-shims/esm.mjs +import {inspect} from "util"; +import {readFileSync as readFileSync3} from "fs"; +import {fileURLToPath} from "url"; + +// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js +import {format} from "util"; +import {normalize, resolve as resolve2} from "path"; + +// node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js +function camelCase(str) { + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf("-") === -1 && str.indexOf("_") === -1) { + return str; + } else { + let camelcase = ""; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0;i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === "-" || chr === "_")) { + nextChrUpper = true; + } else if (chr !== "-" && chr !== "_") { + camelcase += chr; + } + } + return camelcase; + } +} +function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || "-"; + let notCamelcase = ""; + for (let i = 0;i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +function looksLikeNumber(x) { + if (x === null || x === undefined) + return false; + if (typeof x === "number") + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +// node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js +function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map((e) => typeof e !== "string" ? e + "" : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0;ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === " " && !opening) { + if (!(prevC === " ")) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ""; + args[i] += c; + } + return args; +} + +// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js +var DefaultValuesForTypeKey; +(function(DefaultValuesForTypeKey2) { + DefaultValuesForTypeKey2["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey2["STRING"] = "string"; + DefaultValuesForTypeKey2["NUMBER"] = "number"; + DefaultValuesForTypeKey2["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + +// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js +var combineAliases = function(aliases) { + const aliasArrays = []; + const combined = Object.create(null); + let change = true; + Object.keys(aliases).forEach(function(key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0;i < aliasArrays.length; i++) { + for (let ii = i + 1;ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function(v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function(aliasArray) { + aliasArray = aliasArray.filter(function(v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== undefined && typeof lastAlias === "string") { + combined[lastAlias] = aliasArray; + } + }); + return combined; +}; +var increment = function(orig) { + return orig !== undefined ? orig + 1 : 1; +}; +var sanitizeKey = function(key) { + if (key === "__proto__") + return "___proto___"; + return key; +}; +var stripQuotes = function(val) { + return typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0] ? val.substring(1, val.length - 1) : val; +}; +var mixin2; + +class YargsParser { + constructor(_mixin) { + mixin2 = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: undefined, + array: undefined, + boolean: undefined, + config: undefined, + configObjects: undefined, + configuration: undefined, + coerce: undefined, + count: undefined, + default: undefined, + envPrefix: undefined, + narg: undefined, + normalize: undefined, + string: undefined, + number: undefined, + __: undefined, + key: undefined + }, options); + const args = tokenizeArgString(argsInput); + const inputIsString = typeof argsInput === "string"; + const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); + const configuration = Object.assign({ + "boolean-negation": true, + "camel-case-expansion": true, + "combine-arrays": false, + "dot-notation": true, + "duplicate-arguments-array": true, + "flatten-duplicate-arrays": true, + "greedy-arrays": true, + "halt-at-non-option": false, + "nargs-eats-options": false, + "negation-prefix": "no-", + "parse-numbers": true, + "parse-positional-numbers": true, + "populate--": false, + "set-placeholder-key": false, + "short-option-groups": true, + "strip-aliased": false, + "strip-dashed": false, + "unknown-options-as-args": false + }, opts.configuration); + const defaults = Object.assign(Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration["populate--"]; + const notFlagsArgv = notFlagsOption ? "--" : "_"; + const newAliases = Object.create(null); + const defaulted = Object.create(null); + const __ = opts.__ || mixin2.format; + const flags = { + aliases: Object.create(null), + arrays: Object.create(null), + bools: Object.create(null), + strings: Object.create(null), + numbers: Object.create(null), + counts: Object.create(null), + normalize: Object.create(null), + configs: Object.create(null), + nargs: Object.create(null), + coercions: Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)"); + [].concat(opts.array || []).filter(Boolean).forEach(function(opt) { + const key = typeof opt === "object" ? opt.key : opt; + const assignment = Object.keys(opt).map(function(key2) { + const arrayFlagKeys = { + boolean: "bools", + string: "strings", + number: "numbers" + }; + return arrayFlagKeys[key2]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function(key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function(key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function(key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === "object") { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === "number") { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === "object") { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === "function") { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== "undefined") { + if (Array.isArray(opts.config) || typeof opts.config === "string") { + [].concat(opts.config).filter(Boolean).forEach(function(key) { + flags.configs[key] = true; + }); + } else if (typeof opts.config === "object") { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === "boolean" || typeof value === "function") { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults).forEach(function(key) { + (flags.aliases[key] || []).forEach(function(alias) { + defaults[alias] = defaults[key]; + }); + }); + let error = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0;i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, "---"); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } else if (truncatedArg.match(/^---+(=|$)/)) { + pushPositional(arg); + continue; + } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } else { + setArg(m[1], m[2], true); + } + } + } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== undefined && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== undefined && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(""); + broken = false; + for (let j = 0;j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === "=") { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } else { + setArg(key, value); + } + broken = true; + break; + } + if (next === "-") { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== "-") { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== undefined && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } else if (arg === "--") { + notFlags = args.slice(i + 1); + break; + } else if (configuration["halt-at-non-option"]) { + notFlags = args.slice(i); + break; + } else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration["set-placeholder-key"]) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function(key) { + if (!hasKey(argv, key.split("."))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function(key) { + argv[notFlagsArgv].push(key); + }); + if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) { + Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => { + delete argv[key]; + }); + } + if (configuration["strip-aliased"]) { + [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => { + if (configuration["camel-case-expansion"] && alias.includes("-")) { + delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber("_", arg); + if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args2, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error = Error(__("Argument unexpected for: %s", key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration["nargs-eats-options"]) { + if (args2.length - (i + 1) + available < toEat) { + error = Error(__("Not enough arguments following: %s", key)); + } + available = toEat; + } else { + for (ii = i + 1;ii < args2.length; ii++) { + if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii])) + available++; + else + break; + } + if (available < toEat) + error = Error(__("Not enough arguments following: %s", key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1;ii < consumed + i + 1; ii++) { + setArg(key, args2[ii]); + } + return i + consumed; + } + function eatArray(i, key, args2, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args2[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) { + argsToSet.push(true); + } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) { + if (defaults[key] !== undefined) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign, true)); + } + for (let ii = i + 1;ii < args2.length; ii++) { + if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) + break; + next = args2[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next, inputIsString)); + } + } + if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) { + error = Error(__("Not enough arguments following: %s", key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val, shouldStripQuotes = inputIsString) { + if (/-/.test(key) && configuration["camel-case-expansion"]) { + const alias = key.split(".").map(function(prop) { + return camelCase(prop); + }).join("."); + addNewAlias(key, alias); + } + const value = processValue(key, val, shouldStripQuotes); + const splitKey = key.split("."); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function(x) { + const keyProperties = x.split("."); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration["dot-notation"]) { + (flags.aliases[splitKey[0]] || []).forEach(function(x) { + let keyProperties = x.split("."); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function(key2) { + Object.defineProperty(argvReturn, key2, { + enumerable: true, + get() { + return val; + }, + set(value2) { + val = typeof value2 === "string" ? mixin2.normalize(value2) : value2; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val, shouldStripQuotes) { + if (shouldStripQuotes) { + val = stripQuotes(val); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === "string") + val = val === "true"; + } + let value = Array.isArray(val) ? val.map(function(v) { + return maybeCoerceNumber(key, v); + }) : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val2) => { + return mixin2.normalize(val2); + }); + else + value = mixin2.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration["parse-positional-numbers"] && key === "_") + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))); + if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) { + value = Number(value); + } + } + return value; + } + function setConfig(argv2) { + const configLookup = Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function(configKey) { + const configPath = argv2[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin2.resolve(mixin2.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === "function") { + try { + config = resolveConfig(resolvedConfigPath); + } catch (e) { + config = e; + } + if (config instanceof Error) { + error = config; + return; + } + } else { + config = mixin2.require(resolvedConfigPath); + } + setConfigObject(config); + } catch (ex) { + if (ex.name === "PermissionDenied") + error = ex; + else if (argv2[configKey]) + error = Error(__("Invalid JSON config file: %s", configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function(key) { + const value = config[key]; + const fullKey = prev ? prev + "." + key : key; + if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) { + setConfigObject(value, fullKey); + } else { + if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== "undefined") { + configObjects.forEach(function(configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv2, configOnly) { + if (typeof envPrefix === "undefined") + return; + const prefix = typeof envPrefix === "string" ? envPrefix : ""; + const env = mixin2.env(); + Object.keys(env).forEach(function(envVar) { + if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split("__").map(function(key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) { + setArg(keys.join("."), env[envVar]); + } + } + }); + } + function applyCoercions(argv2) { + let coerce; + const applied = new Set; + Object.keys(argv2).forEach(function(key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === "function") { + try { + const value = maybeCoerceNumber(key, coerce(argv2[key])); + [].concat(flags.aliases[key] || [], key).forEach((ali) => { + applied.add(ali); + argv2[ali] = value; + }); + } catch (err) { + error = err; + } + } + } + }); + } + function setPlaceholderKeys(argv2) { + flags.keys.forEach((key) => { + if (~key.indexOf(".")) + return; + if (typeof argv2[key] === "undefined") + argv2[key] = undefined; + }); + return argv2; + } + function applyDefaultsAndAliases(obj, aliases2, defaults2, canLog = false) { + Object.keys(defaults2).forEach(function(key) { + if (!hasKey(obj, key.split("."))) { + setKey(obj, key.split("."), defaults2[key]); + if (canLog) + defaulted[key] = true; + (aliases2[key] || []).forEach(function(x) { + if (hasKey(obj, x.split("."))) + return; + setKey(obj, x.split("."), defaults2[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + o = o[key2] || {}; + }); + const key = keys[keys.length - 1]; + if (typeof o !== "object") + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + key2 = sanitizeKey(key2); + if (typeof o === "object" && o[key2] === undefined) { + o[key2] = {}; + } + if (typeof o[key2] !== "object" || Array.isArray(o[key2])) { + if (Array.isArray(o[key2])) { + o[key2].push({}); + } else { + o[key2] = [o[key2], {}]; + } + o = o[key2][o[key2].length - 1]; + } else { + o = o[key2]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join("."), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration["duplicate-arguments-array"]; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) { + o[key] = undefined; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } else { + o[key] = o[key].concat([value]); + } + } else if (o[key] === undefined && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } else if (duplicate && !(o[key] === undefined || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } else { + o[key] = value; + } + } + function extendAliases(...args2) { + args2.forEach(function(obj) { + Object.keys(obj || {}).forEach(function(key) { + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function(x) { + if (/-/.test(x) && configuration["camel-case-expansion"]) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function(x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) { + const c = decamelize(x, "-"); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function(x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find((key2) => keys.includes(key2)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map((k) => flags[k])); + return toCheck.some(function(flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function(pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(""); + for (let j = 0;j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration["unknown-options-as-args"] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, "--"); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && (`${key}` in defaults)) { + return defaults[key]; + } else { + return defaultForType(guessType(key)); + } + } + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: "", + [DefaultValuesForTypeKey.NUMBER]: undefined, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + function guessType(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === undefined; + } + function checkConfiguration() { + Object.keys(flags.counts).find((key) => { + if (checkAllAliases(key, flags.arrays)) { + error = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key)); + return true; + } else if (checkAllAliases(key, flags.nargs)) { + error = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration, + defaulted: Object.assign({}, defaulted), + error, + newAliases: Object.assign({}, newAliases) + }; + } +} + +// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js +import {readFileSync} from "fs"; +var _a; +var _b; +var _c; +var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12; +var nodeVersion = (_b = (_a = process === null || process === undefined ? undefined : process.versions) === null || _a === undefined ? undefined : _a.node) !== null && _b !== undefined ? _b : (_c = process === null || process === undefined ? undefined : process.version) === null || _c === undefined ? undefined : _c.slice(1); +if (nodeVersion) { + const major = Number(nodeVersion.match(/^([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +var env = process ? process.env : {}; +var parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format, + normalize, + resolve: resolve2, + require: (path) => { + if (typeof require !== "undefined") { + return require(path); + } else if (path.match(/\.json$/)) { + return JSON.parse(readFileSync(path, "utf8")); + } else { + throw Error("only .json config files are supported in ESM"); + } + } +}); +var yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function(args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; +var lib_default = yargsParser; + +// node_modules/yargs/lib/platform-shims/esm.mjs +import {basename, dirname as dirname2, extname, relative, resolve as resolve4} from "path"; + +// node_modules/yargs/build/lib/utils/process-argv.js +var getProcessArgvBinIndex = function() { + if (isBundledElectronApp()) + return 0; + return 1; +}; +var isBundledElectronApp = function() { + return isElectronApp() && !process.defaultApp; +}; +var isElectronApp = function() { + return !!process.versions.electron; +}; +function getProcessArgvBin() { + return process.argv[getProcessArgvBinIndex()]; +} + +// node_modules/yargs/build/lib/yerror.js +class YError extends Error { + constructor(msg) { + super(msg || "yargs error"); + this.name = "YError"; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, YError); + } + } +} + +// node_modules/y18n/build/lib/platform-shims/node.js +import {readFileSync as readFileSync2, statSync as statSync2, writeFile} from "fs"; +import {format as format2} from "util"; +import {resolve as resolve3} from "path"; +var node_default = { + fs: { + readFileSync: readFileSync2, + writeFile + }, + format: format2, + resolve: resolve3, + exists: (file) => { + try { + return statSync2(file).isFile(); + } catch (err) { + return false; + } + } +}; + +// node_modules/y18n/build/lib/index.js +function y18n(opts, _shim) { + shim = _shim; + const y18n2 = new Y18N(opts); + return { + __: y18n2.__.bind(y18n2), + __n: y18n2.__n.bind(y18n2), + setLocale: y18n2.setLocale.bind(y18n2), + getLocale: y18n2.getLocale.bind(y18n2), + updateLocale: y18n2.updateLocale.bind(y18n2), + locale: y18n2.locale + }; +} +var shim; + +class Y18N { + constructor(opts) { + opts = opts || {}; + this.directory = opts.directory || "./locales"; + this.updateFiles = typeof opts.updateFiles === "boolean" ? opts.updateFiles : true; + this.locale = opts.locale || "en"; + this.fallbackToLanguage = typeof opts.fallbackToLanguage === "boolean" ? opts.fallbackToLanguage : true; + this.cache = Object.create(null); + this.writeQueue = []; + } + __(...args) { + if (typeof arguments[0] !== "string") { + return this._taggedLiteral(arguments[0], ...arguments); + } + const str = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + cb = cb || function() { + }; + if (!this.cache[this.locale]) + this._readLocaleFile(); + if (!this.cache[this.locale][str] && this.updateFiles) { + this.cache[this.locale][str] = str; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); + } + __n() { + const args = Array.prototype.slice.call(arguments); + const singular = args.shift(); + const plural = args.shift(); + const quantity = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + if (!this.cache[this.locale]) + this._readLocaleFile(); + let str = quantity === 1 ? singular : plural; + if (this.cache[this.locale][singular]) { + const entry = this.cache[this.locale][singular]; + str = entry[quantity === 1 ? "one" : "other"]; + } + if (!this.cache[this.locale][singular] && this.updateFiles) { + this.cache[this.locale][singular] = { + one: singular, + other: plural + }; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + const values = [str]; + if (~str.indexOf("%d")) + values.push(quantity); + return shim.format.apply(shim.format, values.concat(args)); + } + setLocale(locale) { + this.locale = locale; + } + getLocale() { + return this.locale; + } + updateLocale(obj) { + if (!this.cache[this.locale]) + this._readLocaleFile(); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + this.cache[this.locale][key] = obj[key]; + } + } + } + _taggedLiteral(parts, ...args) { + let str = ""; + parts.forEach(function(part, i) { + const arg = args[i + 1]; + str += part; + if (typeof arg !== "undefined") { + str += "%s"; + } + }); + return this.__.apply(this, [str].concat([].slice.call(args, 1))); + } + _enqueueWrite(work) { + this.writeQueue.push(work); + if (this.writeQueue.length === 1) + this._processWriteQueue(); + } + _processWriteQueue() { + const _this = this; + const work = this.writeQueue[0]; + const directory = work.directory; + const locale = work.locale; + const cb = work.cb; + const languageFile = this._resolveLocaleFile(directory, locale); + const serializedLocale = JSON.stringify(this.cache[locale], null, 2); + shim.fs.writeFile(languageFile, serializedLocale, "utf-8", function(err) { + _this.writeQueue.shift(); + if (_this.writeQueue.length > 0) + _this._processWriteQueue(); + cb(err); + }); + } + _readLocaleFile() { + let localeLookup = {}; + const languageFile = this._resolveLocaleFile(this.directory, this.locale); + try { + if (shim.fs.readFileSync) { + localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, "utf-8")); + } + } catch (err) { + if (err instanceof SyntaxError) { + err.message = "syntax error in " + languageFile; + } + if (err.code === "ENOENT") + localeLookup = {}; + else + throw err; + } + this.cache[this.locale] = localeLookup; + } + _resolveLocaleFile(directory, locale) { + let file = shim.resolve(directory, "./", locale + ".json"); + if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf("_")) { + const languageFile = shim.resolve(directory, "./", locale.split("_")[0] + ".json"); + if (this._fileExistsSync(languageFile)) + file = languageFile; + } + return file; + } + _fileExistsSync(file) { + return shim.exists(file); + } +} + +// node_modules/y18n/index.mjs +var y18n2 = (opts) => { + return y18n(opts, node_default); +}; +var y18n_default = y18n2; + +// node_modules/yargs/lib/platform-shims/esm.mjs +var REQUIRE_ERROR = "require is not supported by ESM"; +var REQUIRE_DIRECTORY_ERROR = "loading a directory of commands is not supported yet for ESM"; +var __dirname2; +try { + __dirname2 = fileURLToPath(import.meta.url); +} catch (e) { + __dirname2 = process.cwd(); +} +var mainFilename = __dirname2.substring(0, __dirname2.lastIndexOf("node_modules")); +var esm_default = { + assert: { + notStrictEqual, + strictEqual + }, + cliui: ui, + findUp: sync_default, + getEnv: (key) => { + return process.env[key]; + }, + inspect, + getCallerFile: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR); + }, + getProcessArgvBin, + mainFilename: mainFilename || process.cwd(), + Parser: lib_default, + path: { + basename, + dirname: dirname2, + extname, + relative, + resolve: resolve4 + }, + 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: readFileSync3, + require: () => { + throw new YError(REQUIRE_ERROR); + }, + requireDirectory: () => { + throw new YError(REQUIRE_DIRECTORY_ERROR); + }, + stringWidth: (str) => { + return [...str].length; + }, + y18n: y18n_default({ + directory: resolve4(__dirname2, "../../../locales"), + updateFiles: false + }) +}; + +// node_modules/yargs/build/lib/typings/common-types.js +function assertNotStrictEqual(actual, expected, shim2, message) { + shim2.assert.notStrictEqual(actual, expected, message); +} +function assertSingleKey(actual, shim2) { + shim2.assert.strictEqual(typeof actual, "string"); +} +function objectKeys(object) { + return Object.keys(object); +} + +// node_modules/yargs/build/lib/utils/is-promise.js +function isPromise(maybePromise) { + return !!maybePromise && !!maybePromise.then && typeof maybePromise.then === "function"; +} + +// node_modules/yargs/build/lib/parse-command.js +function parseCommand(cmd) { + const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, " "); + const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); + const bregex = /\.*[\][<>]/g; + const firstCommand = splitCommand.shift(); + if (!firstCommand) + throw new Error(`No command found in: ${cmd}`); + const parsedCommand = { + cmd: firstCommand.replace(bregex, ""), + demanded: [], + optional: [] + }; + splitCommand.forEach((cmd2, i) => { + let variadic = false; + cmd2 = cmd2.replace(/\s/g, ""); + if (/\.+[\]>]/.test(cmd2) && i === splitCommand.length - 1) + variadic = true; + if (/^\[/.test(cmd2)) { + parsedCommand.optional.push({ + cmd: cmd2.replace(bregex, "").split("|"), + variadic + }); + } else { + parsedCommand.demanded.push({ + cmd: cmd2.replace(bregex, "").split("|"), + variadic + }); + } + }); + return parsedCommand; +} + +// node_modules/yargs/build/lib/argsert.js +function argsert(arg1, arg2, arg3) { + function parseArgs() { + return typeof arg1 === "object" ? [{ demanded: [], optional: [] }, arg1, arg2] : [ + parseCommand(`cmd ${arg1}`), + arg2, + arg3 + ]; + } + try { + let position = 0; + const [parsed, callerArguments, _length] = parseArgs(); + const args = [].slice.call(callerArguments); + while (args.length && args[args.length - 1] === undefined) + args.pop(); + const length = _length || args.length; + if (length < parsed.demanded.length) { + throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); + } + const totalCommands = parsed.demanded.length + parsed.optional.length; + if (length > totalCommands) { + throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); + } + parsed.demanded.forEach((demanded) => { + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = demanded.cmd.filter((type) => type === observedType || type === "*"); + if (matchingTypes.length === 0) + argumentTypeError(observedType, demanded.cmd, position); + position += 1; + }); + parsed.optional.forEach((optional) => { + if (args.length === 0) + return; + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = optional.cmd.filter((type) => type === observedType || type === "*"); + if (matchingTypes.length === 0) + argumentTypeError(observedType, optional.cmd, position); + position += 1; + }); + } catch (err) { + console.warn(err.stack); + } +} +var guessType = function(arg) { + if (Array.isArray(arg)) { + return "array"; + } else if (arg === null) { + return "null"; + } + return typeof arg; +}; +var argumentTypeError = function(observedType, allowedTypes, position) { + throw new YError(`Invalid ${positionName[position] || "manyith"} argument. Expected ${allowedTypes.join(" or ")} but received ${observedType}.`); +}; +var positionName = ["first", "second", "third", "fourth", "fifth", "sixth"]; + +// node_modules/yargs/build/lib/middleware.js +function commandMiddlewareFactory(commandMiddleware) { + if (!commandMiddleware) + return []; + return commandMiddleware.map((middleware) => { + middleware.applyBeforeValidation = false; + return middleware; + }); +} +function applyMiddleware(argv, yargs, middlewares, beforeValidation) { + return middlewares.reduce((acc, middleware) => { + if (middleware.applyBeforeValidation !== beforeValidation) { + return acc; + } + if (middleware.mutates) { + if (middleware.applied) + return acc; + middleware.applied = true; + } + if (isPromise(acc)) { + return acc.then((initialObj) => Promise.all([initialObj, middleware(initialObj, yargs)])).then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); + } else { + const result = middleware(acc, yargs); + return isPromise(result) ? result.then((middlewareObj) => Object.assign(acc, middlewareObj)) : Object.assign(acc, result); + } + }, argv); +} + +class GlobalMiddleware { + constructor(yargs) { + this.globalMiddleware = []; + this.frozens = []; + this.yargs = yargs; + } + addMiddleware(callback, applyBeforeValidation, global2 = true, mutates = false) { + argsert(" [boolean] [boolean] [boolean]", [callback, applyBeforeValidation, global2], arguments.length); + if (Array.isArray(callback)) { + for (let i = 0;i < callback.length; i++) { + if (typeof callback[i] !== "function") { + throw Error("middleware must be a function"); + } + const m = callback[i]; + m.applyBeforeValidation = applyBeforeValidation; + m.global = global2; + } + Array.prototype.push.apply(this.globalMiddleware, callback); + } else if (typeof callback === "function") { + const m = callback; + m.applyBeforeValidation = applyBeforeValidation; + m.global = global2; + m.mutates = mutates; + this.globalMiddleware.push(callback); + } + return this.yargs; + } + addCoerceMiddleware(callback, option) { + const aliases = this.yargs.getAliases(); + this.globalMiddleware = this.globalMiddleware.filter((m) => { + const toCheck = [...aliases[option] || [], option]; + if (!m.option) + return true; + else + return !toCheck.includes(m.option); + }); + callback.option = option; + return this.addMiddleware(callback, true, true, true); + } + getMiddleware() { + return this.globalMiddleware; + } + freeze() { + this.frozens.push([...this.globalMiddleware]); + } + unfreeze() { + const frozen = this.frozens.pop(); + if (frozen !== undefined) + this.globalMiddleware = frozen; + } + reset() { + this.globalMiddleware = this.globalMiddleware.filter((m) => m.global); + } +} + +// node_modules/yargs/build/lib/utils/maybe-async-result.js +function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => { + throw err; +}) { + try { + const result = isFunction(getResult) ? getResult() : getResult; + return isPromise(result) ? result.then((result2) => resultHandler(result2)) : resultHandler(result); + } catch (err) { + return errorHandler(err); + } +} +var isFunction = function(arg) { + return typeof arg === "function"; +}; + +// node_modules/yargs/build/lib/utils/which-module.js +function whichModule(exported) { + if (typeof require === "undefined") + return null; + for (let i = 0, files = Object.keys(require.cache), mod;i < files.length; i++) { + mod = require.cache[files[i]]; + if (mod.exports === exported) + return mod; + } + return null; +} + +// node_modules/yargs/build/lib/command.js +function command(usage, validation, globalMiddleware, shim2) { + return new CommandInstance(usage, validation, globalMiddleware, shim2); +} +function isCommandBuilderDefinition(builder) { + return typeof builder === "object" && !!builder.builder && typeof builder.handler === "function"; +} +var isCommandAndAliases = function(cmd) { + return cmd.every((c) => typeof c === "string"); +}; +function isCommandBuilderCallback(builder) { + return typeof builder === "function"; +} +var isCommandBuilderOptionDefinitions = function(builder) { + return typeof builder === "object"; +}; +function isCommandHandlerDefinition(cmd) { + return typeof cmd === "object" && !Array.isArray(cmd); +} +var DEFAULT_MARKER = /(^\*)|(^\$0)/; + +class CommandInstance { + constructor(usage, validation, globalMiddleware, shim2) { + this.requireCache = new Set; + this.handlers = {}; + this.aliasMap = {}; + this.frozens = []; + this.shim = shim2; + this.usage = usage; + this.globalMiddleware = globalMiddleware; + this.validation = validation; + } + addDirectory(dir, req, callerFile, opts) { + opts = opts || {}; + if (typeof opts.recurse !== "boolean") + opts.recurse = false; + if (!Array.isArray(opts.extensions)) + opts.extensions = ["js"]; + const parentVisit = typeof opts.visit === "function" ? opts.visit : (o) => o; + opts.visit = (obj, joined, filename) => { + const visited = parentVisit(obj, joined, filename); + if (visited) { + if (this.requireCache.has(joined)) + return visited; + else + this.requireCache.add(joined); + this.addHandler(visited); + } + return visited; + }; + this.shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); + } + addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { + let aliases = []; + const middlewares = commandMiddlewareFactory(commandMiddleware); + handler = handler || (() => { + }); + if (Array.isArray(cmd)) { + if (isCommandAndAliases(cmd)) { + [cmd, ...aliases] = cmd; + } else { + for (const command2 of cmd) { + this.addHandler(command2); + } + } + } else if (isCommandHandlerDefinition(cmd)) { + let command2 = Array.isArray(cmd.command) || typeof cmd.command === "string" ? cmd.command : this.moduleName(cmd); + if (cmd.aliases) + command2 = [].concat(command2).concat(cmd.aliases); + this.addHandler(command2, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); + return; + } else if (isCommandBuilderDefinition(builder)) { + this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); + return; + } + if (typeof cmd === "string") { + const parsedCommand = parseCommand(cmd); + aliases = aliases.map((alias) => parseCommand(alias).cmd); + let isDefault = false; + const parsedAliases = [parsedCommand.cmd].concat(aliases).filter((c) => { + if (DEFAULT_MARKER.test(c)) { + isDefault = true; + return false; + } + return true; + }); + if (parsedAliases.length === 0 && isDefault) + parsedAliases.push("$0"); + if (isDefault) { + parsedCommand.cmd = parsedAliases[0]; + aliases = parsedAliases.slice(1); + cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); + } + aliases.forEach((alias) => { + this.aliasMap[alias] = parsedCommand.cmd; + }); + if (description !== false) { + this.usage.command(cmd, description, isDefault, aliases, deprecated); + } + this.handlers[parsedCommand.cmd] = { + original: cmd, + description, + handler, + builder: builder || {}, + middlewares, + deprecated, + demanded: parsedCommand.demanded, + optional: parsedCommand.optional + }; + if (isDefault) + this.defaultCommand = this.handlers[parsedCommand.cmd]; + } + } + getCommandHandlers() { + return this.handlers; + } + getCommands() { + return Object.keys(this.handlers).concat(Object.keys(this.aliasMap)); + } + hasDefaultCommand() { + return !!this.defaultCommand; + } + runCommand(command2, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) { + const commandHandler = this.handlers[command2] || this.handlers[this.aliasMap[command2]] || this.defaultCommand; + const currentContext = yargs.getInternalMethods().getContext(); + const parentCommands = currentContext.commands.slice(); + const isDefaultCommand = !command2; + if (command2) { + currentContext.commands.push(command2); + currentContext.fullCommands.push(commandHandler.original); + } + const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet); + return isPromise(builderResult) ? builderResult.then((result) => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs)) : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs); + } + applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) { + const builder = commandHandler.builder; + let innerYargs = yargs; + if (isCommandBuilderCallback(builder)) { + yargs.getInternalMethods().getUsageInstance().freeze(); + const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet); + if (isPromise(builderOutput)) { + return builderOutput.then((output) => { + innerYargs = isYargsInstance(output) ? output : yargs; + return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); + }); + } + } else if (isCommandBuilderOptionDefinitions(builder)) { + yargs.getInternalMethods().getUsageInstance().freeze(); + innerYargs = yargs.getInternalMethods().reset(aliases); + Object.keys(commandHandler.builder).forEach((key) => { + innerYargs.option(key, builder[key]); + }); + } + return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); + } + parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) { + if (isDefaultCommand) + innerYargs.getInternalMethods().getUsageInstance().unfreeze(true); + if (this.shouldUpdateUsage(innerYargs)) { + innerYargs.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + const innerArgv = innerYargs.getInternalMethods().runYargsParserAndExecuteCommands(null, undefined, true, commandIndex, helpOnly); + return isPromise(innerArgv) ? innerArgv.then((argv) => ({ + aliases: innerYargs.parsed.aliases, + innerArgv: argv + })) : { + aliases: innerYargs.parsed.aliases, + innerArgv + }; + } + shouldUpdateUsage(yargs) { + return !yargs.getInternalMethods().getUsageInstance().getUsageDisabled() && yargs.getInternalMethods().getUsageInstance().getUsage().length === 0; + } + usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { + const c = DEFAULT_MARKER.test(commandHandler.original) ? commandHandler.original.replace(DEFAULT_MARKER, "").trim() : commandHandler.original; + const pc = parentCommands.filter((c2) => { + return !DEFAULT_MARKER.test(c2); + }); + pc.push(c); + return `\$0 ${pc.join(" ")}`; + } + handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) { + if (!yargs.getInternalMethods().getHasOutput()) { + const validation = yargs.getInternalMethods().runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand); + innerArgv = maybeAsyncResult(innerArgv, (result) => { + validation(result); + return result; + }); + } + if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) { + yargs.getInternalMethods().setHasOutput(); + const populateDoubleDash = !!yargs.getOptions().configuration["populate--"]; + yargs.getInternalMethods().postProcess(innerArgv, populateDoubleDash, false, false); + innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); + innerArgv = maybeAsyncResult(innerArgv, (result) => { + const handlerResult = commandHandler.handler(result); + return isPromise(handlerResult) ? handlerResult.then(() => result) : result; + }); + if (!isDefaultCommand) { + yargs.getInternalMethods().getUsageInstance().cacheHelpMessage(); + } + if (isPromise(innerArgv) && !yargs.getInternalMethods().hasParseCallback()) { + innerArgv.catch((error) => { + try { + yargs.getInternalMethods().getUsageInstance().fail(null, error); + } catch (_err) { + } + }); + } + } + if (!isDefaultCommand) { + currentContext.commands.pop(); + currentContext.fullCommands.pop(); + } + return innerArgv; + } + applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) { + let positionalMap = {}; + if (helpOnly) + return innerArgv; + if (!yargs.getInternalMethods().getHasOutput()) { + positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs); + } + const middlewares = this.globalMiddleware.getMiddleware().slice(0).concat(commandHandler.middlewares); + const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true); + return isPromise(maybePromiseArgv) ? maybePromiseArgv.then((resolvedInnerArgv) => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap)) : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap); + } + populatePositionals(commandHandler, argv, context, yargs) { + argv._ = argv._.slice(context.commands.length); + const demanded = commandHandler.demanded.slice(0); + const optional = commandHandler.optional.slice(0); + const positionalMap = {}; + this.validation.positionalCount(demanded.length, argv._.length); + while (demanded.length) { + const demand = demanded.shift(); + this.populatePositional(demand, argv, positionalMap); + } + while (optional.length) { + const maybe = optional.shift(); + this.populatePositional(maybe, argv, positionalMap); + } + argv._ = context.commands.concat(argv._.map((a) => "" + a)); + this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs); + return positionalMap; + } + populatePositional(positional, argv, positionalMap) { + const cmd = positional.cmd[0]; + if (positional.variadic) { + positionalMap[cmd] = argv._.splice(0).map(String); + } else { + if (argv._.length) + positionalMap[cmd] = [String(argv._.shift())]; + } + } + cmdToParseOptions(cmdString) { + const parseOptions = { + array: [], + default: {}, + alias: {}, + demand: {} + }; + const parsed = parseCommand(cmdString); + parsed.demanded.forEach((d) => { + const [cmd, ...aliases] = d.cmd; + if (d.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + parseOptions.demand[cmd] = true; + }); + parsed.optional.forEach((o) => { + const [cmd, ...aliases] = o.cmd; + if (o.variadic) { + parseOptions.array.push(cmd); + parseOptions.default[cmd] = []; + } + parseOptions.alias[cmd] = aliases; + }); + return parseOptions; + } + postProcessPositionals(argv, positionalMap, parseOptions, yargs) { + const options = Object.assign({}, yargs.getOptions()); + options.default = Object.assign(parseOptions.default, options.default); + for (const key of Object.keys(parseOptions.alias)) { + options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); + } + options.array = options.array.concat(parseOptions.array); + options.config = {}; + const unparsed = []; + Object.keys(positionalMap).forEach((key) => { + positionalMap[key].map((value) => { + if (options.configuration["unknown-options-as-args"]) + options.key[key] = true; + unparsed.push(`--${key}`); + unparsed.push(value); + }); + }); + if (!unparsed.length) + return; + const config = Object.assign({}, options.configuration, { + "populate--": false + }); + const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, { + configuration: config + })); + if (parsed.error) { + yargs.getInternalMethods().getUsageInstance().fail(parsed.error.message, parsed.error); + } else { + const positionalKeys = Object.keys(positionalMap); + Object.keys(positionalMap).forEach((key) => { + positionalKeys.push(...parsed.aliases[key]); + }); + Object.keys(parsed.argv).forEach((key) => { + if (positionalKeys.includes(key)) { + if (!positionalMap[key]) + positionalMap[key] = parsed.argv[key]; + if (!this.isInConfigs(yargs, key) && !this.isDefaulted(yargs, key) && Object.prototype.hasOwnProperty.call(argv, key) && Object.prototype.hasOwnProperty.call(parsed.argv, key) && (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) { + argv[key] = [].concat(argv[key], parsed.argv[key]); + } else { + argv[key] = parsed.argv[key]; + } + } + }); + } + } + isDefaulted(yargs, key) { + const { default: defaults } = yargs.getOptions(); + return Object.prototype.hasOwnProperty.call(defaults, key) || Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key)); + } + isInConfigs(yargs, key) { + const { configObjects } = yargs.getOptions(); + return configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, key)) || configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key))); + } + runDefaultBuilderOn(yargs) { + if (!this.defaultCommand) + return; + if (this.shouldUpdateUsage(yargs)) { + const commandString = DEFAULT_MARKER.test(this.defaultCommand.original) ? this.defaultCommand.original : this.defaultCommand.original.replace(/^[^[\]<>]*/, "$0 "); + yargs.getInternalMethods().getUsageInstance().usage(commandString, this.defaultCommand.description); + } + const builder = this.defaultCommand.builder; + if (isCommandBuilderCallback(builder)) { + return builder(yargs, true); + } else if (!isCommandBuilderDefinition(builder)) { + Object.keys(builder).forEach((key) => { + yargs.option(key, builder[key]); + }); + } + return; + } + moduleName(obj) { + const mod = whichModule(obj); + if (!mod) + throw new Error(`No command name given for module: ${this.shim.inspect(obj)}`); + return this.commandFromFilename(mod.filename); + } + commandFromFilename(filename) { + return this.shim.path.basename(filename, this.shim.path.extname(filename)); + } + extractDesc({ describe, description, desc }) { + for (const test of [describe, description, desc]) { + if (typeof test === "string" || test === false) + return test; + assertNotStrictEqual(test, true, this.shim); + } + return false; + } + freeze() { + this.frozens.push({ + handlers: this.handlers, + aliasMap: this.aliasMap, + defaultCommand: this.defaultCommand + }); + } + unfreeze() { + const frozen = this.frozens.pop(); + assertNotStrictEqual(frozen, undefined, this.shim); + ({ + handlers: this.handlers, + aliasMap: this.aliasMap, + defaultCommand: this.defaultCommand + } = frozen); + } + reset() { + this.handlers = {}; + this.aliasMap = {}; + this.defaultCommand = undefined; + this.requireCache = new Set; + return this; + } +} + +// node_modules/yargs/build/lib/utils/obj-filter.js +function objFilter(original = {}, filter = () => true) { + const obj = {}; + objectKeys(original).forEach((key) => { + if (filter(key, original[key])) { + obj[key] = original[key]; + } + }); + return obj; +} + +// node_modules/yargs/build/lib/utils/set-blocking.js +function setBlocking(blocking) { + if (typeof process === "undefined") + return; + [process.stdout, process.stderr].forEach((_stream) => { + const stream = _stream; + if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === "function") { + stream._handle.setBlocking(blocking); + } + }); +} + +// node_modules/yargs/build/lib/usage.js +var isBoolean = function(fail) { + return typeof fail === "boolean"; +}; +function usage(yargs, shim2) { + const __ = shim2.y18n.__; + const self = {}; + const fails = []; + self.failFn = function failFn(f) { + fails.push(f); + }; + let failMessage = null; + let globalFailMessage = null; + let showHelpOnFail = true; + self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { + const [enabled, message] = typeof arg1 === "string" ? [true, arg1] : [arg1, arg2]; + if (yargs.getInternalMethods().isGlobalContext()) { + globalFailMessage = message; + } + failMessage = message; + showHelpOnFail = enabled; + return self; + }; + let failureOutput = false; + self.fail = function fail(msg, err) { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (fails.length) { + for (let i = fails.length - 1;i >= 0; --i) { + const fail = fails[i]; + if (isBoolean(fail)) { + if (err) + throw err; + else if (msg) + throw Error(msg); + } else { + fail(msg, err, self); + } + } + } else { + if (yargs.getExitProcess()) + setBlocking(true); + if (!failureOutput) { + failureOutput = true; + if (showHelpOnFail) { + yargs.showHelp("error"); + logger.error(); + } + if (msg || err) + logger.error(msg || err); + const globalOrCommandFailMessage = failMessage || globalFailMessage; + if (globalOrCommandFailMessage) { + if (msg || err) + logger.error(""); + logger.error(globalOrCommandFailMessage); + } + } + err = err || new YError(msg); + if (yargs.getExitProcess()) { + return yargs.exit(1); + } else if (yargs.getInternalMethods().hasParseCallback()) { + return yargs.exit(1, err); + } else { + throw err; + } + } + }; + let usages = []; + let usageDisabled = false; + self.usage = (msg, description) => { + if (msg === null) { + usageDisabled = true; + usages = []; + return self; + } + usageDisabled = false; + usages.push([msg, description || ""]); + return self; + }; + self.getUsage = () => { + return usages; + }; + self.getUsageDisabled = () => { + return usageDisabled; + }; + self.getPositionalGroupName = () => { + return __("Positionals:"); + }; + let examples = []; + self.example = (cmd, description) => { + examples.push([cmd, description || ""]); + }; + let commands = []; + self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { + if (isDefault) { + commands = commands.map((cmdArray) => { + cmdArray[2] = false; + return cmdArray; + }); + } + commands.push([cmd, description || "", isDefault, aliases, deprecated]); + }; + self.getCommands = () => commands; + let descriptions = {}; + self.describe = function describe(keyOrKeys, desc) { + if (Array.isArray(keyOrKeys)) { + keyOrKeys.forEach((k) => { + self.describe(k, desc); + }); + } else if (typeof keyOrKeys === "object") { + Object.keys(keyOrKeys).forEach((k) => { + self.describe(k, keyOrKeys[k]); + }); + } else { + descriptions[keyOrKeys] = desc; + } + }; + self.getDescriptions = () => descriptions; + let epilogs = []; + self.epilog = (msg) => { + epilogs.push(msg); + }; + let wrapSet = false; + let wrap2; + self.wrap = (cols) => { + wrapSet = true; + wrap2 = cols; + }; + self.getWrap = () => { + if (shim2.getEnv("YARGS_DISABLE_WRAP")) { + return null; + } + if (!wrapSet) { + wrap2 = windowWidth(); + wrapSet = true; + } + return wrap2; + }; + const deferY18nLookupPrefix = "__yargsString__:"; + self.deferY18nLookup = (str) => deferY18nLookupPrefix + str; + self.help = function help() { + if (cachedHelpMessage) + return cachedHelpMessage; + normalizeAliases(); + const base$0 = yargs.customScriptName ? yargs.$0 : shim2.path.basename(yargs.$0); + const demandedOptions = yargs.getDemandedOptions(); + const demandedCommands = yargs.getDemandedCommands(); + const deprecatedOptions = yargs.getDeprecatedOptions(); + const groups = yargs.getGroups(); + const options = yargs.getOptions(); + let keys = []; + keys = keys.concat(Object.keys(descriptions)); + keys = keys.concat(Object.keys(demandedOptions)); + keys = keys.concat(Object.keys(demandedCommands)); + keys = keys.concat(Object.keys(options.default)); + keys = keys.filter(filterHiddenOptions); + keys = Object.keys(keys.reduce((acc, key) => { + if (key !== "_") + acc[key] = true; + return acc; + }, {})); + const theWrap = self.getWrap(); + const ui2 = shim2.cliui({ + width: theWrap, + wrap: !!theWrap + }); + if (!usageDisabled) { + if (usages.length) { + usages.forEach((usage2) => { + ui2.div({ text: `${usage2[0].replace(/\$0/g, base$0)}` }); + if (usage2[1]) { + ui2.div({ text: `${usage2[1]}`, padding: [1, 0, 0, 0] }); + } + }); + ui2.div(); + } else if (commands.length) { + let u = null; + if (demandedCommands._) { + u = `${base$0} <${__("command")}>\n`; + } else { + u = `${base$0} [${__("command")}]\n`; + } + ui2.div(`${u}`); + } + } + if (commands.length > 1 || commands.length === 1 && !commands[0][2]) { + ui2.div(__("Commands:")); + const context = yargs.getInternalMethods().getContext(); + const parentCommands = context.commands.length ? `${context.commands.join(" ")} ` : ""; + if (yargs.getInternalMethods().getParserConfiguration()["sort-commands"] === true) { + commands = commands.sort((a, b) => a[0].localeCompare(b[0])); + } + const prefix = base$0 ? `${base$0} ` : ""; + commands.forEach((command2) => { + const commandString = `${prefix}${parentCommands}${command2[0].replace(/^\$0 ?/, "")}`; + ui2.span({ + text: commandString, + padding: [0, 2, 0, 2], + width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4 + }, { text: command2[1] }); + const hints = []; + if (command2[2]) + hints.push(`[${__("default")}]`); + if (command2[3] && command2[3].length) { + hints.push(`[${__("aliases:")} ${command2[3].join(", ")}]`); + } + if (command2[4]) { + if (typeof command2[4] === "string") { + hints.push(`[${__("deprecated: %s", command2[4])}]`); + } else { + hints.push(`[${__("deprecated")}]`); + } + } + if (hints.length) { + ui2.div({ + text: hints.join(" "), + padding: [0, 0, 0, 2], + align: "right" + }); + } else { + ui2.div(); + } + }); + ui2.div(); + } + const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); + keys = keys.filter((key) => !yargs.parsed.newAliases[key] && aliasKeys.every((alias) => (options.alias[alias] || []).indexOf(key) === -1)); + const defaultGroup = __("Options:"); + if (!groups[defaultGroup]) + groups[defaultGroup] = []; + addUngroupedKeys(keys, options.alias, groups, defaultGroup); + const isLongSwitch = (sw) => /^--/.test(getText(sw)); + const displayedGroups = Object.keys(groups).filter((groupName) => groups[groupName].length > 0).map((groupName) => { + const normalizedKeys = groups[groupName].filter(filterHiddenOptions).map((key) => { + if (aliasKeys.includes(key)) + return key; + for (let i = 0, aliasKey;(aliasKey = aliasKeys[i]) !== undefined; i++) { + if ((options.alias[aliasKey] || []).includes(key)) + return aliasKey; + } + return key; + }); + return { groupName, normalizedKeys }; + }).filter(({ normalizedKeys }) => normalizedKeys.length > 0).map(({ groupName, normalizedKeys }) => { + const switches = normalizedKeys.reduce((acc, key) => { + acc[key] = [key].concat(options.alias[key] || []).map((sw) => { + if (groupName === self.getPositionalGroupName()) + return sw; + else { + return (/^[0-9]$/.test(sw) ? options.boolean.includes(key) ? "-" : "--" : sw.length > 1 ? "--" : "-") + sw; + } + }).sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) ? 0 : isLongSwitch(sw1) ? 1 : -1).join(", "); + return acc; + }, {}); + return { groupName, normalizedKeys, switches }; + }); + const shortSwitchesUsed = displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).some(({ normalizedKeys, switches }) => !normalizedKeys.every((key) => isLongSwitch(switches[key]))); + if (shortSwitchesUsed) { + displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).forEach(({ normalizedKeys, switches }) => { + normalizedKeys.forEach((key) => { + if (isLongSwitch(switches[key])) { + switches[key] = addIndentation(switches[key], "-x, ".length); + } + }); + }); + } + displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { + ui2.div(groupName); + normalizedKeys.forEach((key) => { + const kswitch = switches[key]; + let desc = descriptions[key] || ""; + let type = null; + if (desc.includes(deferY18nLookupPrefix)) + desc = __(desc.substring(deferY18nLookupPrefix.length)); + if (options.boolean.includes(key)) + type = `[${__("boolean")}]`; + if (options.count.includes(key)) + type = `[${__("count")}]`; + if (options.string.includes(key)) + type = `[${__("string")}]`; + if (options.normalize.includes(key)) + type = `[${__("string")}]`; + if (options.array.includes(key)) + type = `[${__("array")}]`; + if (options.number.includes(key)) + type = `[${__("number")}]`; + const deprecatedExtra = (deprecated) => typeof deprecated === "string" ? `[${__("deprecated: %s", deprecated)}]` : `[${__("deprecated")}]`; + const extra = [ + key in deprecatedOptions ? deprecatedExtra(deprecatedOptions[key]) : null, + type, + key in demandedOptions ? `[${__("required")}]` : null, + options.choices && options.choices[key] ? `[${__("choices:")} ${self.stringifiedValues(options.choices[key])}]` : null, + defaultString(options.default[key], options.defaultDescription[key]) + ].filter(Boolean).join(" "); + ui2.span({ + text: getText(kswitch), + padding: [0, 2, 0, 2 + getIndentation(kswitch)], + width: maxWidth(switches, theWrap) + 4 + }, desc); + const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()["hide-types"] === true; + if (extra && !shouldHideOptionExtras) + ui2.div({ text: extra, padding: [0, 0, 0, 2], align: "right" }); + else + ui2.div(); + }); + ui2.div(); + }); + if (examples.length) { + ui2.div(__("Examples:")); + examples.forEach((example) => { + example[0] = example[0].replace(/\$0/g, base$0); + }); + examples.forEach((example) => { + if (example[1] === "") { + ui2.div({ + text: example[0], + padding: [0, 2, 0, 2] + }); + } else { + ui2.div({ + text: example[0], + padding: [0, 2, 0, 2], + width: maxWidth(examples, theWrap) + 4 + }, { + text: example[1] + }); + } + }); + ui2.div(); + } + if (epilogs.length > 0) { + const e = epilogs.map((epilog) => epilog.replace(/\$0/g, base$0)).join("\n"); + ui2.div(`${e}\n`); + } + return ui2.toString().replace(/\s*$/, ""); + }; + function maxWidth(table, theWrap, modifier) { + let width = 0; + if (!Array.isArray(table)) { + table = Object.values(table).map((v) => [v]); + } + table.forEach((v) => { + width = Math.max(shim2.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); + }); + if (theWrap) + width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); + return width; + } + function normalizeAliases() { + const demandedOptions = yargs.getDemandedOptions(); + const options = yargs.getOptions(); + (Object.keys(options.alias) || []).forEach((key) => { + options.alias[key].forEach((alias) => { + if (descriptions[alias]) + self.describe(key, descriptions[alias]); + if (alias in demandedOptions) + yargs.demandOption(key, demandedOptions[alias]); + if (options.boolean.includes(alias)) + yargs.boolean(key); + if (options.count.includes(alias)) + yargs.count(key); + if (options.string.includes(alias)) + yargs.string(key); + if (options.normalize.includes(alias)) + yargs.normalize(key); + if (options.array.includes(alias)) + yargs.array(key); + if (options.number.includes(alias)) + yargs.number(key); + }); + }); + } + let cachedHelpMessage; + self.cacheHelpMessage = function() { + cachedHelpMessage = this.help(); + }; + self.clearCachedHelpMessage = function() { + cachedHelpMessage = undefined; + }; + self.hasCachedHelpMessage = function() { + return !!cachedHelpMessage; + }; + function addUngroupedKeys(keys, aliases, groups, defaultGroup) { + let groupedKeys = []; + let toCheck = null; + Object.keys(groups).forEach((group) => { + groupedKeys = groupedKeys.concat(groups[group]); + }); + keys.forEach((key) => { + toCheck = [key].concat(aliases[key]); + if (!toCheck.some((k) => groupedKeys.indexOf(k) !== -1)) { + groups[defaultGroup].push(key); + } + }); + return groupedKeys; + } + function filterHiddenOptions(key) { + return yargs.getOptions().hiddenOptions.indexOf(key) < 0 || yargs.parsed.argv[yargs.getOptions().showHiddenOpt]; + } + self.showHelp = (level) => { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (!level) + level = "error"; + const emit = typeof level === "function" ? level : logger[level]; + emit(self.help()); + }; + self.functionDescription = (fn) => { + const description = fn.name ? shim2.Parser.decamelize(fn.name, "-") : __("generated-value"); + return ["(", description, ")"].join(""); + }; + self.stringifiedValues = function stringifiedValues(values, separator) { + let string = ""; + const sep = separator || ", "; + const array = [].concat(values); + if (!values || !array.length) + return string; + array.forEach((value) => { + if (string.length) + string += sep; + string += JSON.stringify(value); + }); + return string; + }; + function defaultString(value, defaultDescription) { + let string = `[${__("default:")} `; + if (value === undefined && !defaultDescription) + return null; + if (defaultDescription) { + string += defaultDescription; + } else { + switch (typeof value) { + case "string": + string += `"${value}"`; + break; + case "object": + string += JSON.stringify(value); + break; + default: + string += value; + } + } + return `${string}]`; + } + function windowWidth() { + const maxWidth2 = 80; + if (shim2.process.stdColumns) { + return Math.min(maxWidth2, shim2.process.stdColumns); + } else { + return maxWidth2; + } + } + let version = null; + self.version = (ver) => { + version = ver; + }; + self.showVersion = (level) => { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (!level) + level = "error"; + const emit = typeof level === "function" ? level : logger[level]; + emit(version); + }; + self.reset = function reset(localLookup) { + failMessage = null; + failureOutput = false; + usages = []; + usageDisabled = false; + epilogs = []; + examples = []; + commands = []; + descriptions = objFilter(descriptions, (k) => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions + }); + }; + self.unfreeze = function unfreeze(defaultCommand = false) { + const frozen = frozens.pop(); + if (!frozen) + return; + if (defaultCommand) { + descriptions = { ...frozen.descriptions, ...descriptions }; + commands = [...frozen.commands, ...commands]; + usages = [...frozen.usages, ...usages]; + examples = [...frozen.examples, ...examples]; + epilogs = [...frozen.epilogs, ...epilogs]; + } else { + ({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions + } = frozen); + } + }; + return self; +} +var isIndentedText = function(text) { + return typeof text === "object"; +}; +var addIndentation = function(text, indent) { + return isIndentedText(text) ? { text: text.text, indentation: text.indentation + indent } : { text, indentation: indent }; +}; +var getIndentation = function(text) { + return isIndentedText(text) ? text.indentation : 0; +}; +var getText = function(text) { + return isIndentedText(text) ? text.text : text; +}; + +// node_modules/yargs/build/lib/completion-templates.js +var completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local cur_word args type_list + + cur_word="\${COMP_WORDS[COMP_CWORD]}" + args=("\${COMP_WORDS[@]}") + + # ask yargs to generate completions. + type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") + + COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) + + # if no match was found, fall back to filename completion + if [ \${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=() + fi + + return 0 +} +complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +var completionZshTemplate = `#compdef {{app_name}} +###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$' +' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; + +// node_modules/yargs/build/lib/completion.js +function completion(yargs, usage2, command3, shim2) { + return new Completion(yargs, usage2, command3, shim2); +} +var isSyncCompletionFunction = function(completionFunction) { + return completionFunction.length < 3; +}; +var isFallbackCompletionFunction = function(completionFunction) { + return completionFunction.length > 3; +}; + +class Completion { + constructor(yargs, usage2, command3, shim2) { + var _a2, _b2, _c2; + this.yargs = yargs; + this.usage = usage2; + this.command = command3; + this.shim = shim2; + this.completionKey = "get-yargs-completions"; + this.aliases = null; + this.customCompletionFunction = null; + this.indexAfterLastReset = 0; + this.zshShell = (_c2 = ((_a2 = this.shim.getEnv("SHELL")) === null || _a2 === undefined ? undefined : _a2.includes("zsh")) || ((_b2 = this.shim.getEnv("ZSH_NAME")) === null || _b2 === undefined ? undefined : _b2.includes("zsh"))) !== null && _c2 !== undefined ? _c2 : false; + } + defaultCompletion(args, argv, current, done) { + const handlers = this.command.getCommandHandlers(); + for (let i = 0, ii = args.length;i < ii; ++i) { + if (handlers[args[i]] && handlers[args[i]].builder) { + const builder = handlers[args[i]].builder; + if (isCommandBuilderCallback(builder)) { + this.indexAfterLastReset = i + 1; + const y = this.yargs.getInternalMethods().reset(); + builder(y, true); + return y.argv; + } + } + } + const completions = []; + this.commandCompletions(completions, args, current); + this.optionCompletions(completions, args, argv, current); + this.choicesFromOptionsCompletions(completions, args, argv, current); + this.choicesFromPositionalsCompletions(completions, args, argv, current); + done(null, completions); + } + commandCompletions(completions, args, current) { + const parentCommands = this.yargs.getInternalMethods().getContext().commands; + if (!current.match(/^-/) && parentCommands[parentCommands.length - 1] !== current && !this.previousArgHasChoices(args)) { + this.usage.getCommands().forEach((usageCommand) => { + const commandName = parseCommand(usageCommand[0]).cmd; + if (args.indexOf(commandName) === -1) { + if (!this.zshShell) { + completions.push(commandName); + } else { + const desc = usageCommand[1] || ""; + completions.push(commandName.replace(/:/g, "\\:") + ":" + desc); + } + } + }); + } + } + optionCompletions(completions, args, argv, current) { + if ((current.match(/^-/) || current === "" && completions.length === 0) && !this.previousArgHasChoices(args)) { + const options = this.yargs.getOptions(); + const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + Object.keys(options.key).forEach((key) => { + const negable = !!options.configuration["boolean-negation"] && options.boolean.includes(key); + const isPositionalKey = positionalKeys.includes(key); + if (!isPositionalKey && !options.hiddenOptions.includes(key) && !this.argsContainKey(args, key, negable)) { + this.completeOptionKey(key, completions, current, negable && !!options.default[key]); + } + }); + } + } + choicesFromOptionsCompletions(completions, args, argv, current) { + if (this.previousArgHasChoices(args)) { + const choices = this.getPreviousArgChoices(args); + if (choices && choices.length > 0) { + completions.push(...choices.map((c) => c.replace(/:/g, "\\:"))); + } + } + } + choicesFromPositionalsCompletions(completions, args, argv, current) { + if (current === "" && completions.length > 0 && this.previousArgHasChoices(args)) { + return; + } + const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length + 1); + const positionalKey = positionalKeys[argv._.length - offset - 1]; + if (!positionalKey) { + return; + } + const choices = this.yargs.getOptions().choices[positionalKey] || []; + for (const choice of choices) { + if (choice.startsWith(current)) { + completions.push(choice.replace(/:/g, "\\:")); + } + } + } + getPreviousArgChoices(args) { + if (args.length < 1) + return; + let previousArg = args[args.length - 1]; + let filter = ""; + if (!previousArg.startsWith("-") && args.length > 1) { + filter = previousArg; + previousArg = args[args.length - 2]; + } + if (!previousArg.startsWith("-")) + return; + const previousArgKey = previousArg.replace(/^-+/, ""); + const options = this.yargs.getOptions(); + const possibleAliases = [ + previousArgKey, + ...this.yargs.getAliases()[previousArgKey] || [] + ]; + let choices; + for (const possibleAlias of possibleAliases) { + if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) && Array.isArray(options.choices[possibleAlias])) { + choices = options.choices[possibleAlias]; + break; + } + } + if (choices) { + return choices.filter((choice) => !filter || choice.startsWith(filter)); + } + } + previousArgHasChoices(args) { + const choices = this.getPreviousArgChoices(args); + return choices !== undefined && choices.length > 0; + } + argsContainKey(args, key, negable) { + const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? "-" : "--") + s) !== -1; + if (argsContains(key)) + return true; + if (negable && argsContains(`no-${key}`)) + return true; + if (this.aliases) { + for (const alias of this.aliases[key]) { + if (argsContains(alias)) + return true; + } + } + return false; + } + completeOptionKey(key, completions, current, negable) { + var _a2, _b2, _c2, _d; + let keyWithDesc = key; + if (this.zshShell) { + const descs = this.usage.getDescriptions(); + const aliasKey = (_b2 = (_a2 = this === null || this === undefined ? undefined : this.aliases) === null || _a2 === undefined ? undefined : _a2[key]) === null || _b2 === undefined ? undefined : _b2.find((alias) => { + const desc2 = descs[alias]; + return typeof desc2 === "string" && desc2.length > 0; + }); + const descFromAlias = aliasKey ? descs[aliasKey] : undefined; + const desc = (_d = (_c2 = descs[key]) !== null && _c2 !== undefined ? _c2 : descFromAlias) !== null && _d !== undefined ? _d : ""; + keyWithDesc = `${key.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "").replace(/(\r\n|\n|\r)/gm, " ")}`; + } + const startsByTwoDashes = (s) => /^--/.test(s); + const isShortOption = (s) => /^[^0-9]$/.test(s); + const dashes = !startsByTwoDashes(current) && isShortOption(key) ? "-" : "--"; + completions.push(dashes + keyWithDesc); + if (negable) { + completions.push(dashes + "no-" + keyWithDesc); + } + } + customCompletion(args, argv, current, done) { + assertNotStrictEqual(this.customCompletionFunction, null, this.shim); + if (isSyncCompletionFunction(this.customCompletionFunction)) { + const result = this.customCompletionFunction(current, argv); + if (isPromise(result)) { + return result.then((list) => { + this.shim.process.nextTick(() => { + done(null, list); + }); + }).catch((err) => { + this.shim.process.nextTick(() => { + done(err, undefined); + }); + }); + } + return done(null, result); + } else if (isFallbackCompletionFunction(this.customCompletionFunction)) { + return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), (completions) => { + done(null, completions); + }); + } else { + return this.customCompletionFunction(current, argv, (completions) => { + done(null, completions); + }); + } + } + getCompletion(args, done) { + const current = args.length ? args[args.length - 1] : ""; + const argv = this.yargs.parse(args, true); + const completionFunction = this.customCompletionFunction ? (argv2) => this.customCompletion(args, argv2, current, done) : (argv2) => this.defaultCompletion(args, argv2, current, done); + return isPromise(argv) ? argv.then(completionFunction) : completionFunction(argv); + } + generateCompletionScript($0, cmd) { + let script = this.zshShell ? completionZshTemplate : completionShTemplate; + const name = this.shim.path.basename($0); + if ($0.match(/\.js$/)) + $0 = `./${$0}`; + script = script.replace(/{{app_name}}/g, name); + script = script.replace(/{{completion_command}}/g, cmd); + return script.replace(/{{app_path}}/g, $0); + } + registerFunction(fn) { + this.customCompletionFunction = fn; + } + setParsed(parsed) { + this.aliases = parsed.aliases; + } +} + +// node_modules/yargs/build/lib/utils/levenshtein.js +function levenshtein(a, b) { + if (a.length === 0) + return b.length; + if (b.length === 0) + return a.length; + const matrix = []; + let i; + for (i = 0;i <= b.length; i++) { + matrix[i] = [i]; + } + let j; + for (j = 0;j <= a.length; j++) { + matrix[0][j] = j; + } + for (i = 1;i <= b.length; i++) { + for (j = 1;j <= a.length; j++) { + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } else { + if (i > 1 && j > 1 && b.charAt(i - 2) === a.charAt(j - 1) && b.charAt(i - 1) === a.charAt(j - 2)) { + matrix[i][j] = matrix[i - 2][j - 2] + 1; + } else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } + } + } + } + return matrix[b.length][a.length]; +} + +// node_modules/yargs/build/lib/validation.js +function validation(yargs, usage2, shim2) { + const __ = shim2.y18n.__; + const __n = shim2.y18n.__n; + const self = {}; + self.nonOptionCount = function nonOptionCount(argv) { + const demandedCommands = yargs.getDemandedCommands(); + const positionalCount = argv._.length + (argv["--"] ? argv["--"].length : 0); + const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length; + if (demandedCommands._ && (_s < demandedCommands._.min || _s > demandedCommands._.max)) { + if (_s < demandedCommands._.min) { + if (demandedCommands._.minMsg !== undefined) { + usage2.fail(demandedCommands._.minMsg ? demandedCommands._.minMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.min.toString()) : null); + } else { + usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", _s, _s.toString(), demandedCommands._.min.toString())); + } + } else if (_s > demandedCommands._.max) { + if (demandedCommands._.maxMsg !== undefined) { + usage2.fail(demandedCommands._.maxMsg ? demandedCommands._.maxMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.max.toString()) : null); + } else { + usage2.fail(__n("Too many non-option arguments: got %s, maximum of %s", "Too many non-option arguments: got %s, maximum of %s", _s, _s.toString(), demandedCommands._.max.toString())); + } + } + } + }; + self.positionalCount = function positionalCount(required, observed) { + if (observed < required) { + usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", observed, observed + "", required + "")); + } + }; + self.requiredArguments = function requiredArguments(argv, demandedOptions) { + let missing = null; + for (const key of Object.keys(demandedOptions)) { + if (!Object.prototype.hasOwnProperty.call(argv, key) || typeof argv[key] === "undefined") { + missing = missing || {}; + missing[key] = demandedOptions[key]; + } + } + if (missing) { + const customMsgs = []; + for (const key of Object.keys(missing)) { + const msg = missing[key]; + if (msg && customMsgs.indexOf(msg) < 0) { + customMsgs.push(msg); + } + } + const customMsg = customMsgs.length ? `\n${customMsgs.join("\n")}` : ""; + usage2.fail(__n("Missing required argument: %s", "Missing required arguments: %s", Object.keys(missing).length, Object.keys(missing).join(", ") + customMsg)); + } + }; + self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { + var _a2; + const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getInternalMethods().getContext(); + Object.keys(argv).forEach((key) => { + if (!specialKeys.includes(key) && !Object.prototype.hasOwnProperty.call(positionalMap, key) && !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) && !self.isValidAndSomeAliasIsNotNew(key, aliases)) { + unknown.push(key); + } + }); + if (checkPositionals && (currentContext.commands.length > 0 || commandKeys.length > 0 || isDefaultCommand)) { + argv._.slice(currentContext.commands.length).forEach((key) => { + if (!commandKeys.includes("" + key)) { + unknown.push("" + key); + } + }); + } + if (checkPositionals) { + const demandedCommands = yargs.getDemandedCommands(); + const maxNonOptDemanded = ((_a2 = demandedCommands._) === null || _a2 === undefined ? undefined : _a2.max) || 0; + const expected = currentContext.commands.length + maxNonOptDemanded; + if (expected < argv._.length) { + argv._.slice(expected).forEach((key) => { + key = String(key); + if (!currentContext.commands.includes(key) && !unknown.includes(key)) { + unknown.push(key); + } + }); + } + } + if (unknown.length) { + usage2.fail(__n("Unknown argument: %s", "Unknown arguments: %s", unknown.length, unknown.map((s) => s.trim() ? s : `"${s}"`).join(", "))); + } + }; + self.unknownCommands = function unknownCommands(argv) { + const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getInternalMethods().getContext(); + if (currentContext.commands.length > 0 || commandKeys.length > 0) { + argv._.slice(currentContext.commands.length).forEach((key) => { + if (!commandKeys.includes("" + key)) { + unknown.push("" + key); + } + }); + } + if (unknown.length > 0) { + usage2.fail(__n("Unknown command: %s", "Unknown commands: %s", unknown.length, unknown.join(", "))); + return true; + } else { + return false; + } + }; + self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { + if (!Object.prototype.hasOwnProperty.call(aliases, key)) { + return false; + } + const newAliases = yargs.parsed.newAliases; + return [key, ...aliases[key]].some((a) => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]); + }; + self.limitedChoices = function limitedChoices(argv) { + const options = yargs.getOptions(); + const invalid = {}; + if (!Object.keys(options.choices).length) + return; + Object.keys(argv).forEach((key) => { + if (specialKeys.indexOf(key) === -1 && Object.prototype.hasOwnProperty.call(options.choices, key)) { + [].concat(argv[key]).forEach((value) => { + if (options.choices[key].indexOf(value) === -1 && value !== undefined) { + invalid[key] = (invalid[key] || []).concat(value); + } + }); + } + }); + const invalidKeys = Object.keys(invalid); + if (!invalidKeys.length) + return; + let msg = __("Invalid values:"); + invalidKeys.forEach((key) => { + msg += `\n ${__("Argument: %s, Given: %s, Choices: %s", key, usage2.stringifiedValues(invalid[key]), usage2.stringifiedValues(options.choices[key]))}`; + }); + usage2.fail(msg); + }; + let implied = {}; + self.implies = function implies(key, value) { + argsert(" [array|number|string]", [key, value], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.implies(k, key[k]); + }); + } else { + yargs.global(key); + if (!implied[key]) { + implied[key] = []; + } + if (Array.isArray(value)) { + value.forEach((i) => self.implies(key, i)); + } else { + assertNotStrictEqual(value, undefined, shim2); + implied[key].push(value); + } + } + }; + self.getImplied = function getImplied() { + return implied; + }; + function keyExists(argv, val) { + const num = Number(val); + val = isNaN(num) ? val : num; + if (typeof val === "number") { + val = argv._.length >= val; + } else if (val.match(/^--no-.+/)) { + val = val.match(/^--no-(.+)/)[1]; + val = !Object.prototype.hasOwnProperty.call(argv, val); + } else { + val = Object.prototype.hasOwnProperty.call(argv, val); + } + return val; + } + self.implications = function implications(argv) { + const implyFail = []; + Object.keys(implied).forEach((key) => { + const origKey = key; + (implied[key] || []).forEach((value) => { + let key2 = origKey; + const origValue = value; + key2 = keyExists(argv, key2); + value = keyExists(argv, value); + if (key2 && !value) { + implyFail.push(` ${origKey} -> ${origValue}`); + } + }); + }); + if (implyFail.length) { + let msg = `${__("Implications failed:")}\n`; + implyFail.forEach((value) => { + msg += value; + }); + usage2.fail(msg); + } + }; + let conflicting = {}; + self.conflicts = function conflicts(key, value) { + argsert(" [array|string]", [key, value], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.conflicts(k, key[k]); + }); + } else { + yargs.global(key); + if (!conflicting[key]) { + conflicting[key] = []; + } + if (Array.isArray(value)) { + value.forEach((i) => self.conflicts(key, i)); + } else { + conflicting[key].push(value); + } + } + }; + self.getConflicting = () => conflicting; + self.conflicting = function conflictingFn(argv) { + Object.keys(argv).forEach((key) => { + if (conflicting[key]) { + conflicting[key].forEach((value) => { + if (value && argv[key] !== undefined && argv[value] !== undefined) { + usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); + } + }); + } + }); + if (yargs.getInternalMethods().getParserConfiguration()["strip-dashed"]) { + Object.keys(conflicting).forEach((key) => { + conflicting[key].forEach((value) => { + if (value && argv[shim2.Parser.camelCase(key)] !== undefined && argv[shim2.Parser.camelCase(value)] !== undefined) { + usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); + } + }); + }); + } + }; + self.recommendCommands = function recommendCommands(cmd, potentialCommands) { + const threshold = 3; + potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); + let recommended = null; + let bestDistance = Infinity; + for (let i = 0, candidate;(candidate = potentialCommands[i]) !== undefined; i++) { + const d = levenshtein(cmd, candidate); + if (d <= threshold && d < bestDistance) { + bestDistance = d; + recommended = candidate; + } + } + if (recommended) + usage2.fail(__("Did you mean %s?", recommended)); + }; + self.reset = function reset(localLookup) { + implied = objFilter(implied, (k) => !localLookup[k]); + conflicting = objFilter(conflicting, (k) => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + implied, + conflicting + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, undefined, shim2); + ({ implied, conflicting } = frozen); + }; + return self; +} +var specialKeys = ["$0", "--", "_"]; + +// node_modules/yargs/build/lib/utils/apply-extends.js +function applyExtends(config, cwd, mergeExtends, _shim) { + shim2 = _shim; + let defaultConfig = {}; + if (Object.prototype.hasOwnProperty.call(config, "extends")) { + if (typeof config.extends !== "string") + return defaultConfig; + const isPath = /\.json|\..*rc$/.test(config.extends); + let pathToDefault = null; + if (!isPath) { + try { + pathToDefault = require.resolve(config.extends); + } catch (_err) { + return config; + } + } else { + pathToDefault = getPathToDefaultConfig(cwd, config.extends); + } + checkForCircularExtends(pathToDefault); + previouslyVisitedConfigs.push(pathToDefault); + defaultConfig = isPath ? JSON.parse(shim2.readFileSync(pathToDefault, "utf8")) : require(config.extends); + delete config.extends; + defaultConfig = applyExtends(defaultConfig, shim2.path.dirname(pathToDefault), mergeExtends, shim2); + } + previouslyVisitedConfigs = []; + return mergeExtends ? mergeDeep(defaultConfig, config) : Object.assign({}, defaultConfig, config); +} +var checkForCircularExtends = function(cfgPath) { + if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { + throw new YError(`Circular extended configurations: '${cfgPath}'.`); + } +}; +var getPathToDefaultConfig = function(cwd, pathToExtend) { + return shim2.path.resolve(cwd, pathToExtend); +}; +var mergeDeep = function(config1, config2) { + const target = {}; + function isObject(obj) { + return obj && typeof obj === "object" && !Array.isArray(obj); + } + Object.assign(target, config1); + for (const key of Object.keys(config2)) { + if (isObject(config2[key]) && isObject(target[key])) { + target[key] = mergeDeep(config1[key], config2[key]); + } else { + target[key] = config2[key]; + } + } + return target; +}; +var previouslyVisitedConfigs = []; +var shim2; + +// node_modules/yargs/build/lib/yargs-factory.js +function YargsFactory(_shim) { + return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => { + const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim); + Object.defineProperty(yargs, "argv", { + get: () => { + return yargs.parse(); + }, + enumerable: true + }); + yargs.help(); + yargs.version(); + return yargs; + }; +} +function isYargsInstance(y) { + return !!y && typeof y.getInternalMethods === "function"; +} +var __classPrivateFieldSet = function(receiver, state, value, kind, f) { + if (kind === "m") + throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; +}; +var __classPrivateFieldGet = function(receiver, state, kind, f) { + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _YargsInstance_command; +var _YargsInstance_cwd; +var _YargsInstance_context; +var _YargsInstance_completion; +var _YargsInstance_completionCommand; +var _YargsInstance_defaultShowHiddenOpt; +var _YargsInstance_exitError; +var _YargsInstance_detectLocale; +var _YargsInstance_emittedWarnings; +var _YargsInstance_exitProcess; +var _YargsInstance_frozens; +var _YargsInstance_globalMiddleware; +var _YargsInstance_groups; +var _YargsInstance_hasOutput; +var _YargsInstance_helpOpt; +var _YargsInstance_isGlobalContext; +var _YargsInstance_logger; +var _YargsInstance_output; +var _YargsInstance_options; +var _YargsInstance_parentRequire; +var _YargsInstance_parserConfig; +var _YargsInstance_parseFn; +var _YargsInstance_parseContext; +var _YargsInstance_pkgs; +var _YargsInstance_preservedGroups; +var _YargsInstance_processArgs; +var _YargsInstance_recommendCommands; +var _YargsInstance_shim; +var _YargsInstance_strict; +var _YargsInstance_strictCommands; +var _YargsInstance_strictOptions; +var _YargsInstance_usage; +var _YargsInstance_usageConfig; +var _YargsInstance_versionOpt; +var _YargsInstance_validation; +var kCopyDoubleDash = Symbol("copyDoubleDash"); +var kCreateLogger = Symbol("copyDoubleDash"); +var kDeleteFromParserHintObject = Symbol("deleteFromParserHintObject"); +var kEmitWarning = Symbol("emitWarning"); +var kFreeze = Symbol("freeze"); +var kGetDollarZero = Symbol("getDollarZero"); +var kGetParserConfiguration = Symbol("getParserConfiguration"); +var kGetUsageConfiguration = Symbol("getUsageConfiguration"); +var kGuessLocale = Symbol("guessLocale"); +var kGuessVersion = Symbol("guessVersion"); +var kParsePositionalNumbers = Symbol("parsePositionalNumbers"); +var kPkgUp = Symbol("pkgUp"); +var kPopulateParserHintArray = Symbol("populateParserHintArray"); +var kPopulateParserHintSingleValueDictionary = Symbol("populateParserHintSingleValueDictionary"); +var kPopulateParserHintArrayDictionary = Symbol("populateParserHintArrayDictionary"); +var kPopulateParserHintDictionary = Symbol("populateParserHintDictionary"); +var kSanitizeKey = Symbol("sanitizeKey"); +var kSetKey = Symbol("setKey"); +var kUnfreeze = Symbol("unfreeze"); +var kValidateAsync = Symbol("validateAsync"); +var kGetCommandInstance = Symbol("getCommandInstance"); +var kGetContext = Symbol("getContext"); +var kGetHasOutput = Symbol("getHasOutput"); +var kGetLoggerInstance = Symbol("getLoggerInstance"); +var kGetParseContext = Symbol("getParseContext"); +var kGetUsageInstance = Symbol("getUsageInstance"); +var kGetValidationInstance = Symbol("getValidationInstance"); +var kHasParseCallback = Symbol("hasParseCallback"); +var kIsGlobalContext = Symbol("isGlobalContext"); +var kPostProcess = Symbol("postProcess"); +var kRebase = Symbol("rebase"); +var kReset = Symbol("reset"); +var kRunYargsParserAndExecuteCommands = Symbol("runYargsParserAndExecuteCommands"); +var kRunValidation = Symbol("runValidation"); +var kSetHasOutput = Symbol("setHasOutput"); +var kTrackManuallySetKeys = Symbol("kTrackManuallySetKeys"); + +class YargsInstance { + constructor(processArgs = [], cwd, parentRequire, shim3) { + this.customScriptName = false; + this.parsed = false; + _YargsInstance_command.set(this, undefined); + _YargsInstance_cwd.set(this, undefined); + _YargsInstance_context.set(this, { commands: [], fullCommands: [] }); + _YargsInstance_completion.set(this, null); + _YargsInstance_completionCommand.set(this, null); + _YargsInstance_defaultShowHiddenOpt.set(this, "show-hidden"); + _YargsInstance_exitError.set(this, null); + _YargsInstance_detectLocale.set(this, true); + _YargsInstance_emittedWarnings.set(this, {}); + _YargsInstance_exitProcess.set(this, true); + _YargsInstance_frozens.set(this, []); + _YargsInstance_globalMiddleware.set(this, undefined); + _YargsInstance_groups.set(this, {}); + _YargsInstance_hasOutput.set(this, false); + _YargsInstance_helpOpt.set(this, null); + _YargsInstance_isGlobalContext.set(this, true); + _YargsInstance_logger.set(this, undefined); + _YargsInstance_output.set(this, ""); + _YargsInstance_options.set(this, undefined); + _YargsInstance_parentRequire.set(this, undefined); + _YargsInstance_parserConfig.set(this, {}); + _YargsInstance_parseFn.set(this, null); + _YargsInstance_parseContext.set(this, null); + _YargsInstance_pkgs.set(this, {}); + _YargsInstance_preservedGroups.set(this, {}); + _YargsInstance_processArgs.set(this, undefined); + _YargsInstance_recommendCommands.set(this, false); + _YargsInstance_shim.set(this, undefined); + _YargsInstance_strict.set(this, false); + _YargsInstance_strictCommands.set(this, false); + _YargsInstance_strictOptions.set(this, false); + _YargsInstance_usage.set(this, undefined); + _YargsInstance_usageConfig.set(this, {}); + _YargsInstance_versionOpt.set(this, null); + _YargsInstance_validation.set(this, undefined); + __classPrivateFieldSet(this, _YargsInstance_shim, shim3, "f"); + __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, "f"); + __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, "f"); + __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, "f"); + __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), "f"); + this.$0 = this[kGetDollarZero](); + this[kReset](); + __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f"), "f"); + __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); + __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), "f"); + } + addHelpOpt(opt, msg) { + const defaultHelpOpt = "help"; + argsert("[string|boolean] [string]", [opt, msg], arguments.length); + if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { + this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); + __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, "f"); + } + if (opt === false && msg === undefined) + return this; + __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === "string" ? opt : defaultHelpOpt, "f"); + this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); + this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show help")); + return this; + } + help(opt, msg) { + return this.addHelpOpt(opt, msg); + } + addShowHiddenOpt(opt, msg) { + argsert("[string|boolean] [string]", [opt, msg], arguments.length); + if (opt === false && msg === undefined) + return this; + const showHiddenOpt = typeof opt === "string" ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); + this.boolean(showHiddenOpt); + this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show hidden options")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = showHiddenOpt; + return this; + } + showHidden(opt, msg) { + return this.addShowHiddenOpt(opt, msg); + } + alias(key, value) { + argsert(" [string|array]", [key, value], arguments.length); + this[kPopulateParserHintArrayDictionary](this.alias.bind(this), "alias", key, value); + return this; + } + array(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("array", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + boolean(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("boolean", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + check(f, global2) { + argsert(" [boolean]", [f, global2], arguments.length); + this.middleware((argv, _yargs) => { + return maybeAsyncResult(() => { + return f(argv, _yargs.getOptions()); + }, (result) => { + if (!result) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(__classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__("Argument check failed: %s", f.toString())); + } else if (typeof result === "string" || result instanceof Error) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(result.toString(), result); + } + return argv; + }, (err) => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message ? err.message : err.toString(), err); + return argv; + }); + }, false, global2); + return this; + } + choices(key, value) { + argsert(" [string|array]", [key, value], arguments.length); + this[kPopulateParserHintArrayDictionary](this.choices.bind(this), "choices", key, value); + return this; + } + coerce(keys, value) { + argsert(" [function]", [keys, value], arguments.length); + if (Array.isArray(keys)) { + if (!value) { + throw new YError("coerce callback must be provided"); + } + for (const key of keys) { + this.coerce(key, value); + } + return this; + } else if (typeof keys === "object") { + for (const key of Object.keys(keys)) { + this.coerce(key, keys[key]); + } + return this; + } + if (!value) { + throw new YError("coerce callback must be provided"); + } + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addCoerceMiddleware((argv, yargs) => { + let aliases; + const shouldCoerce = Object.prototype.hasOwnProperty.call(argv, keys); + if (!shouldCoerce) { + return argv; + } + return maybeAsyncResult(() => { + aliases = yargs.getAliases(); + return value(argv[keys]); + }, (result) => { + argv[keys] = result; + const stripAliased = yargs.getInternalMethods().getParserConfiguration()["strip-aliased"]; + if (aliases[keys] && stripAliased !== true) { + for (const alias of aliases[keys]) { + argv[alias] = result; + } + } + return argv; + }, (err) => { + throw new YError(err.message); + }); + }, keys); + return this; + } + conflicts(key1, key2) { + argsert(" [string|array]", [key1, key2], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicts(key1, key2); + return this; + } + config(key = "config", msg, parseFn) { + argsert("[object|string] [string|function] [function]", [key, msg, parseFn], arguments.length); + if (typeof key === "object" && !Array.isArray(key)) { + key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()["deep-merge-config"] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(key); + return this; + } + if (typeof msg === "function") { + parseFn = msg; + msg = undefined; + } + this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Path to JSON config file")); + (Array.isArray(key) ? key : [key]).forEach((k) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f").config[k] = parseFn || true; + }); + return this; + } + completion(cmd, desc, fn) { + argsert("[string] [string|boolean|function] [function]", [cmd, desc, fn], arguments.length); + if (typeof desc === "function") { + fn = desc; + desc = undefined; + } + __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || "completion", "f"); + if (!desc && desc !== false) { + desc = "generate completion script"; + } + this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), desc); + if (fn) + __classPrivateFieldGet(this, _YargsInstance_completion, "f").registerFunction(fn); + return this; + } + command(cmd, description, builder, handler, middlewares, deprecated) { + argsert(" [string|boolean] [function|object] [function] [array] [boolean|string]", [cmd, description, builder, handler, middlewares, deprecated], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_command, "f").addHandler(cmd, description, builder, handler, middlewares, deprecated); + return this; + } + commands(cmd, description, builder, handler, middlewares, deprecated) { + return this.command(cmd, description, builder, handler, middlewares, deprecated); + } + commandDir(dir, opts) { + argsert(" [object]", [dir, opts], arguments.length); + const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, "f") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").require; + __classPrivateFieldGet(this, _YargsInstance_command, "f").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, "f").getCallerFile(), opts); + return this; + } + count(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("count", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + default(key, value, defaultDescription) { + argsert(" [*] [string]", [key, value, defaultDescription], arguments.length); + if (defaultDescription) { + assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = defaultDescription; + } + if (typeof value === "function") { + assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key]) + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = __classPrivateFieldGet(this, _YargsInstance_usage, "f").functionDescription(value); + value = value.call(); + } + this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), "default", key, value); + return this; + } + defaults(key, value, defaultDescription) { + return this.default(key, value, defaultDescription); + } + demandCommand(min = 1, max, minMsg, maxMsg) { + argsert("[number] [number|string] [string|null|undefined] [string|null|undefined]", [min, max, minMsg, maxMsg], arguments.length); + if (typeof max !== "number") { + minMsg = max; + max = Infinity; + } + this.global("_", false); + __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands._ = { + min, + max, + minMsg, + maxMsg + }; + return this; + } + demand(keys, max, msg) { + if (Array.isArray(max)) { + max.forEach((key) => { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandOption(key, msg); + }); + max = Infinity; + } else if (typeof max !== "number") { + msg = max; + max = Infinity; + } + if (typeof keys === "number") { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandCommand(keys, max, msg, msg); + } else if (Array.isArray(keys)) { + keys.forEach((key) => { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandOption(key, msg); + }); + } else { + if (typeof msg === "string") { + this.demandOption(keys, msg); + } else if (msg === true || typeof msg === "undefined") { + this.demandOption(keys); + } + } + return this; + } + demandOption(keys, msg) { + argsert(" [string]", [keys, msg], arguments.length); + this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), "demandedOptions", keys, msg); + return this; + } + deprecateOption(option, message) { + argsert(" [string|boolean]", [option, message], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions[option] = message; + return this; + } + describe(keys, description) { + argsert(" [string]", [keys, description], arguments.length); + this[kSetKey](keys, true); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").describe(keys, description); + return this; + } + detectLocale(detect) { + argsert("", [detect], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, "f"); + return this; + } + env(prefix) { + argsert("[string|boolean]", [prefix], arguments.length); + if (prefix === false) + delete __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; + else + __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix = prefix || ""; + return this; + } + epilogue(msg) { + argsert("", [msg], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").epilog(msg); + return this; + } + epilog(msg) { + return this.epilogue(msg); + } + example(cmd, description) { + argsert(" [string]", [cmd, description], arguments.length); + if (Array.isArray(cmd)) { + cmd.forEach((exampleParams) => this.example(...exampleParams)); + } else { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").example(cmd, description); + } + return this; + } + exit(code, err) { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + __classPrivateFieldSet(this, _YargsInstance_exitError, err, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.exit(code); + } + exitProcess(enabled = true) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, "f"); + return this; + } + fail(f) { + argsert("", [f], arguments.length); + if (typeof f === "boolean" && f !== false) { + throw new YError("Invalid first argument. Expected function or boolean 'false'"); + } + __classPrivateFieldGet(this, _YargsInstance_usage, "f").failFn(f); + return this; + } + getAliases() { + return this.parsed ? this.parsed.aliases : {}; + } + async getCompletion(args, done) { + argsert(" [function]", [args, done], arguments.length); + if (!done) { + return new Promise((resolve5, reject) => { + __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, (err, completions) => { + if (err) + reject(err); + else + resolve5(completions); + }); + }); + } else { + return __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, done); + } + } + getDemandedOptions() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedOptions; + } + getDemandedCommands() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands; + } + getDeprecatedOptions() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions; + } + getDetectLocale() { + return __classPrivateFieldGet(this, _YargsInstance_detectLocale, "f"); + } + getExitProcess() { + return __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"); + } + getGroups() { + return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, "f"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")); + } + getHelp() { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true); + if (isPromise(parse)) { + return parse.then(() => { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); + }); + } + } + const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); + if (isPromise(builderResponse)) { + return builderResponse.then(() => { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); + }); + } + } + return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, "f").help()); + } + getOptions() { + return __classPrivateFieldGet(this, _YargsInstance_options, "f"); + } + getStrict() { + return __classPrivateFieldGet(this, _YargsInstance_strict, "f"); + } + getStrictCommands() { + return __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"); + } + getStrictOptions() { + return __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"); + } + global(globals, global2) { + argsert(" [boolean]", [globals, global2], arguments.length); + globals = [].concat(globals); + if (global2 !== false) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter((l) => globals.indexOf(l) === -1); + } else { + globals.forEach((g) => { + if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").local.includes(g)) + __classPrivateFieldGet(this, _YargsInstance_options, "f").local.push(g); + }); + } + return this; + } + group(opts, groupName) { + argsert(" ", [opts, groupName], arguments.length); + const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName]; + if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]) { + delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]; + } + const seen = {}; + __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName] = (existing || []).concat(opts).filter((key) => { + if (seen[key]) + return false; + return seen[key] = true; + }); + return this; + } + hide(key) { + argsert("", [key], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_options, "f").hiddenOptions.push(key); + return this; + } + implies(key, value) { + argsert(" [number|string|array]", [key, value], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").implies(key, value); + return this; + } + locale(locale) { + argsert("[string]", [locale], arguments.length); + if (locale === undefined) { + this[kGuessLocale](); + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.getLocale(); + } + __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(locale); + return this; + } + middleware(callback, applyBeforeValidation, global2) { + return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global2); + } + nargs(key, value) { + argsert(" [number]", [key, value], arguments.length); + this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), "narg", key, value); + return this; + } + normalize(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("normalize", keys); + return this; + } + number(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("number", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + option(key, opt) { + argsert(" [object]", [key, opt], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + this.options(k, key[k]); + }); + } else { + if (typeof opt !== "object") { + opt = {}; + } + this[kTrackManuallySetKeys](key); + if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && (key === "version" || (opt === null || opt === undefined ? undefined : opt.alias) === "version")) { + this[kEmitWarning]([ + '"version" is a reserved word.', + "Please do one of the following:", + '- Disable version with `yargs.version(false)` if using "version" as an option', + "- Use the built-in `yargs.version` method instead (if applicable)", + "- Use a different option key", + "https://yargs.js.org/docs/#api-reference-version" + ].join("\n"), undefined, "versionWarning"); + } + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[key] = true; + if (opt.alias) + this.alias(key, opt.alias); + const deprecate = opt.deprecate || opt.deprecated; + if (deprecate) { + this.deprecateOption(key, deprecate); + } + const demand = opt.demand || opt.required || opt.require; + if (demand) { + this.demand(key, demand); + } + if (opt.demandOption) { + this.demandOption(key, typeof opt.demandOption === "string" ? opt.demandOption : undefined); + } + if (opt.conflicts) { + this.conflicts(key, opt.conflicts); + } + if ("default" in opt) { + this.default(key, opt.default); + } + if (opt.implies !== undefined) { + this.implies(key, opt.implies); + } + if (opt.nargs !== undefined) { + this.nargs(key, opt.nargs); + } + if (opt.config) { + this.config(key, opt.configParser); + } + if (opt.normalize) { + this.normalize(key); + } + if (opt.choices) { + this.choices(key, opt.choices); + } + if (opt.coerce) { + this.coerce(key, opt.coerce); + } + if (opt.group) { + this.group(key, opt.group); + } + if (opt.boolean || opt.type === "boolean") { + this.boolean(key); + if (opt.alias) + this.boolean(opt.alias); + } + if (opt.array || opt.type === "array") { + this.array(key); + if (opt.alias) + this.array(opt.alias); + } + if (opt.number || opt.type === "number") { + this.number(key); + if (opt.alias) + this.number(opt.alias); + } + if (opt.string || opt.type === "string") { + this.string(key); + if (opt.alias) + this.string(opt.alias); + } + if (opt.count || opt.type === "count") { + this.count(key); + } + if (typeof opt.global === "boolean") { + this.global(key, opt.global); + } + if (opt.defaultDescription) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = opt.defaultDescription; + } + if (opt.skipValidation) { + this.skipValidation(key); + } + const desc = opt.describe || opt.description || opt.desc; + const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions(); + if (!Object.prototype.hasOwnProperty.call(descriptions, key) || typeof desc === "string") { + this.describe(key, desc); + } + if (opt.hidden) { + this.hide(key); + } + if (opt.requiresArg) { + this.requiresArg(key); + } + } + return this; + } + options(key, opt) { + return this.option(key, opt); + } + parse(args, shortCircuit, _parseFn) { + argsert("[string|array] [function|boolean|object] [function]", [args, shortCircuit, _parseFn], arguments.length); + this[kFreeze](); + if (typeof args === "undefined") { + args = __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); + } + if (typeof shortCircuit === "object") { + __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, "f"); + shortCircuit = _parseFn; + } + if (typeof shortCircuit === "function") { + __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, "f"); + shortCircuit = false; + } + if (!shortCircuit) + __classPrivateFieldSet(this, _YargsInstance_processArgs, args, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, "f"); + const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit); + const tmpParsed = this.parsed; + __classPrivateFieldGet(this, _YargsInstance_completion, "f").setParsed(this.parsed); + if (isPromise(parsed)) { + return parsed.then((argv) => { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + return argv; + }).catch((err) => { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) { + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + } + throw err; + }).finally(() => { + this[kUnfreeze](); + this.parsed = tmpParsed; + }); + } else { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + this[kUnfreeze](); + this.parsed = tmpParsed; + } + return parsed; + } + parseAsync(args, shortCircuit, _parseFn) { + const maybePromise = this.parse(args, shortCircuit, _parseFn); + return !isPromise(maybePromise) ? Promise.resolve(maybePromise) : maybePromise; + } + parseSync(args, shortCircuit, _parseFn) { + const maybePromise = this.parse(args, shortCircuit, _parseFn); + if (isPromise(maybePromise)) { + throw new YError(".parseSync() must not be used with asynchronous builders, handlers, or middleware"); + } + return maybePromise; + } + parserConfiguration(config) { + argsert("", [config], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, "f"); + return this; + } + pkgConf(key, rootPath) { + argsert(" [string]", [key, rootPath], arguments.length); + let conf = null; + const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f")); + if (obj[key] && typeof obj[key] === "object") { + conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()["deep-merge-config"] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(conf); + } + return this; + } + positional(key, opts) { + argsert(" ", [key, opts], arguments.length); + const supportedOpts = [ + "default", + "defaultDescription", + "implies", + "normalize", + "choices", + "conflicts", + "coerce", + "type", + "describe", + "desc", + "description", + "alias" + ]; + opts = objFilter(opts, (k, v) => { + if (k === "type" && !["string", "number", "boolean"].includes(v)) + return false; + return supportedOpts.includes(k); + }); + const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands.length - 1]; + const parseOptions = fullCommand ? __classPrivateFieldGet(this, _YargsInstance_command, "f").cmdToParseOptions(fullCommand) : { + array: [], + alias: {}, + default: {}, + demand: {} + }; + objectKeys(parseOptions).forEach((pk) => { + const parseOption = parseOptions[pk]; + if (Array.isArray(parseOption)) { + if (parseOption.indexOf(key) !== -1) + opts[pk] = true; + } else { + if (parseOption[key] && !(pk in opts)) + opts[pk] = parseOption[key]; + } + }); + this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, "f").getPositionalGroupName()); + return this.option(key, opts); + } + recommendCommands(recommend = true) { + argsert("[boolean]", [recommend], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, "f"); + return this; + } + required(keys, max, msg) { + return this.demand(keys, max, msg); + } + require(keys, max, msg) { + return this.demand(keys, max, msg); + } + requiresArg(keys) { + argsert(" [number]", [keys], arguments.length); + if (typeof keys === "string" && __classPrivateFieldGet(this, _YargsInstance_options, "f").narg[keys]) { + return this; + } else { + this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), "narg", keys, NaN); + } + return this; + } + showCompletionScript($0, cmd) { + argsert("[string] [string]", [$0, cmd], arguments.length); + $0 = $0 || this.$0; + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(__classPrivateFieldGet(this, _YargsInstance_completion, "f").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || "completion")); + return this; + } + showHelp(level) { + argsert("[string|function]", [level], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true); + if (isPromise(parse)) { + parse.then(() => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + }); + return this; + } + } + const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); + if (isPromise(builderResponse)) { + builderResponse.then(() => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + }); + return this; + } + } + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + return this; + } + scriptName(scriptName) { + this.customScriptName = true; + this.$0 = scriptName; + return this; + } + showHelpOnFail(enabled, message) { + argsert("[boolean|string] [string]", [enabled, message], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelpOnFail(enabled, message); + return this; + } + showVersion(level) { + argsert("[string|function]", [level], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion(level); + return this; + } + skipValidation(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("skipValidation", keys); + return this; + } + strict(enabled) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, "f"); + return this; + } + strictCommands(enabled) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, "f"); + return this; + } + strictOptions(enabled) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, "f"); + return this; + } + string(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("string", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + terminalWidth() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.stdColumns; + } + updateLocale(obj) { + return this.updateStrings(obj); + } + updateStrings(obj) { + argsert("", [obj], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.updateLocale(obj); + return this; + } + usage(msg, description, builder, handler) { + argsert(" [string|boolean] [function|object] [function]", [msg, description, builder, handler], arguments.length); + if (description !== undefined) { + assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + if ((msg || "").match(/^\$0( |$)/)) { + return this.command(msg, description, builder, handler); + } else { + throw new YError(".usage() description must start with $0 if being used as alias for .command()"); + } + } else { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").usage(msg); + return this; + } + } + usageConfiguration(config) { + argsert("", [config], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_usageConfig, config, "f"); + return this; + } + version(opt, msg, ver) { + const defaultVersionOpt = "version"; + argsert("[boolean|string] [string] [string]", [opt, msg, ver], arguments.length); + if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")) { + this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(undefined); + __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, "f"); + } + if (arguments.length === 0) { + ver = this[kGuessVersion](); + opt = defaultVersionOpt; + } else if (arguments.length === 1) { + if (opt === false) { + return this; + } + ver = opt; + opt = defaultVersionOpt; + } else if (arguments.length === 2) { + ver = msg; + msg = undefined; + } + __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === "string" ? opt : defaultVersionOpt, "f"); + msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show version number"); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(ver || undefined); + this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); + this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"), msg); + return this; + } + wrap(cols) { + argsert("", [cols], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").wrap(cols); + return this; + } + [(_YargsInstance_command = new WeakMap, _YargsInstance_cwd = new WeakMap, _YargsInstance_context = new WeakMap, _YargsInstance_completion = new WeakMap, _YargsInstance_completionCommand = new WeakMap, _YargsInstance_defaultShowHiddenOpt = new WeakMap, _YargsInstance_exitError = new WeakMap, _YargsInstance_detectLocale = new WeakMap, _YargsInstance_emittedWarnings = new WeakMap, _YargsInstance_exitProcess = new WeakMap, _YargsInstance_frozens = new WeakMap, _YargsInstance_globalMiddleware = new WeakMap, _YargsInstance_groups = new WeakMap, _YargsInstance_hasOutput = new WeakMap, _YargsInstance_helpOpt = new WeakMap, _YargsInstance_isGlobalContext = new WeakMap, _YargsInstance_logger = new WeakMap, _YargsInstance_output = new WeakMap, _YargsInstance_options = new WeakMap, _YargsInstance_parentRequire = new WeakMap, _YargsInstance_parserConfig = new WeakMap, _YargsInstance_parseFn = new WeakMap, _YargsInstance_parseContext = new WeakMap, _YargsInstance_pkgs = new WeakMap, _YargsInstance_preservedGroups = new WeakMap, _YargsInstance_processArgs = new WeakMap, _YargsInstance_recommendCommands = new WeakMap, _YargsInstance_shim = new WeakMap, _YargsInstance_strict = new WeakMap, _YargsInstance_strictCommands = new WeakMap, _YargsInstance_strictOptions = new WeakMap, _YargsInstance_usage = new WeakMap, _YargsInstance_usageConfig = new WeakMap, _YargsInstance_versionOpt = new WeakMap, _YargsInstance_validation = new WeakMap, kCopyDoubleDash)](argv) { + if (!argv._ || !argv["--"]) + return argv; + argv._.push.apply(argv._, argv["--"]); + try { + delete argv["--"]; + } catch (_err) { + } + return argv; + } + [kCreateLogger]() { + return { + log: (...args) => { + if (!this[kHasParseCallback]()) + console.log(...args); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + "\n", "f"); + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(" "), "f"); + }, + error: (...args) => { + if (!this[kHasParseCallback]()) + console.error(...args); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + "\n", "f"); + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(" "), "f"); + } + }; + } + [kDeleteFromParserHintObject](optionKey) { + objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, "f")).forEach((hintKey) => { + if (((key) => key === "configObjects")(hintKey)) + return; + const hint = __classPrivateFieldGet(this, _YargsInstance_options, "f")[hintKey]; + if (Array.isArray(hint)) { + if (hint.includes(optionKey)) + hint.splice(hint.indexOf(optionKey), 1); + } else if (typeof hint === "object") { + delete hint[optionKey]; + } + }); + delete __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions()[optionKey]; + } + [kEmitWarning](warning, type, deduplicationId) { + if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId]) { + __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.emitWarning(warning, type); + __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId] = true; + } + } + [kFreeze]() { + __classPrivateFieldGet(this, _YargsInstance_frozens, "f").push({ + options: __classPrivateFieldGet(this, _YargsInstance_options, "f"), + configObjects: __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects.slice(0), + exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"), + groups: __classPrivateFieldGet(this, _YargsInstance_groups, "f"), + strict: __classPrivateFieldGet(this, _YargsInstance_strict, "f"), + strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"), + strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"), + completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), + output: __classPrivateFieldGet(this, _YargsInstance_output, "f"), + exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), + hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"), + parsed: this.parsed, + parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, "f"), + parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") + }); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_command, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").freeze(); + } + [kGetDollarZero]() { + let $0 = ""; + let default$0; + if (/\b(node|iojs|electron)(\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv()[0])) { + default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(1, 2); + } else { + default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(0, 1); + } + $0 = default$0.map((x) => { + const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, "f"), x); + return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; + }).join(" ").trim(); + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_") && __classPrivateFieldGet(this, _YargsInstance_shim, "f").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_")) { + $0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_").replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.execPath())}/`, ""); + } + return $0; + } + [kGetParserConfiguration]() { + return __classPrivateFieldGet(this, _YargsInstance_parserConfig, "f"); + } + [kGetUsageConfiguration]() { + return __classPrivateFieldGet(this, _YargsInstance_usageConfig, "f"); + } + [kGuessLocale]() { + if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, "f")) + return; + const locale = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LC_ALL") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LC_MESSAGES") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LANG") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LANGUAGE") || "en_US"; + this.locale(locale.replace(/[.:].*/, "")); + } + [kGuessVersion]() { + const obj = this[kPkgUp](); + return obj.version || "unknown"; + } + [kParsePositionalNumbers](argv) { + const args = argv["--"] ? argv["--"] : argv._; + for (let i = 0, arg;(arg = args[i]) !== undefined; i++) { + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.looksLikeNumber(arg) && Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { + args[i] = Number(arg); + } + } + return argv; + } + [kPkgUp](rootPath) { + const npath = rootPath || "*"; + if (__classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]) + return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; + let obj = {}; + try { + let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, "f").mainFilename; + if (!rootPath && __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.extname(startDir)) { + startDir = __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(startDir); + } + const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, "f").findUp(startDir, (dir, names) => { + if (names.includes("package.json")) { + return "package.json"; + } else { + return; + } + }); + assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, "f").readFileSync(pkgJsonPath, "utf8")); + } catch (_noop) { + } + __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath] = obj || {}; + return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; + } + [kPopulateParserHintArray](type, keys) { + keys = [].concat(keys); + keys.forEach((key) => { + key = this[kSanitizeKey](key); + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type].push(key); + }); + } + [kPopulateParserHintSingleValueDictionary](builder, type, key, value) { + this[kPopulateParserHintDictionary](builder, type, key, value, (type2, key2, value2) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] = value2; + }); + } + [kPopulateParserHintArrayDictionary](builder, type, key, value) { + this[kPopulateParserHintDictionary](builder, type, key, value, (type2, key2, value2) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] || []).concat(value2); + }); + } + [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) { + if (Array.isArray(key)) { + key.forEach((k) => { + builder(k, value); + }); + } else if (((key2) => typeof key2 === "object")(key)) { + for (const k of objectKeys(key)) { + builder(k, key[k]); + } + } else { + singleKeyHandler(type, this[kSanitizeKey](key), value); + } + } + [kSanitizeKey](key) { + if (key === "__proto__") + return "___proto___"; + return key; + } + [kSetKey](key, set) { + this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), "key", key, set); + return this; + } + [kUnfreeze]() { + var _a2, _b2, _c2, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, "f").pop(); + assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + let configObjects; + _a2 = this, _b2 = this, _c2 = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, { + options: { set value(_o) { + __classPrivateFieldSet(_a2, _YargsInstance_options, _o, "f"); + } }.value, + configObjects, + exitProcess: { set value(_o) { + __classPrivateFieldSet(_b2, _YargsInstance_exitProcess, _o, "f"); + } }.value, + groups: { set value(_o) { + __classPrivateFieldSet(_c2, _YargsInstance_groups, _o, "f"); + } }.value, + output: { set value(_o) { + __classPrivateFieldSet(_d, _YargsInstance_output, _o, "f"); + } }.value, + exitError: { set value(_o) { + __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, "f"); + } }.value, + hasOutput: { set value(_o) { + __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, "f"); + } }.value, + parsed: this.parsed, + strict: { set value(_o) { + __classPrivateFieldSet(_g, _YargsInstance_strict, _o, "f"); + } }.value, + strictCommands: { set value(_o) { + __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, "f"); + } }.value, + strictOptions: { set value(_o) { + __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, "f"); + } }.value, + completionCommand: { set value(_o) { + __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, "f"); + } }.value, + parseFn: { set value(_o) { + __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, "f"); + } }.value, + parseContext: { set value(_o) { + __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, "f"); + } }.value + } = frozen; + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = configObjects; + __classPrivateFieldGet(this, _YargsInstance_usage, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_command, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").unfreeze(); + } + [kValidateAsync](validation3, argv) { + return maybeAsyncResult(argv, (result) => { + validation3(result); + return result; + }); + } + getInternalMethods() { + return { + getCommandInstance: this[kGetCommandInstance].bind(this), + getContext: this[kGetContext].bind(this), + getHasOutput: this[kGetHasOutput].bind(this), + getLoggerInstance: this[kGetLoggerInstance].bind(this), + getParseContext: this[kGetParseContext].bind(this), + getParserConfiguration: this[kGetParserConfiguration].bind(this), + getUsageConfiguration: this[kGetUsageConfiguration].bind(this), + getUsageInstance: this[kGetUsageInstance].bind(this), + getValidationInstance: this[kGetValidationInstance].bind(this), + hasParseCallback: this[kHasParseCallback].bind(this), + isGlobalContext: this[kIsGlobalContext].bind(this), + postProcess: this[kPostProcess].bind(this), + reset: this[kReset].bind(this), + runValidation: this[kRunValidation].bind(this), + runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this), + setHasOutput: this[kSetHasOutput].bind(this) + }; + } + [kGetCommandInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_command, "f"); + } + [kGetContext]() { + return __classPrivateFieldGet(this, _YargsInstance_context, "f"); + } + [kGetHasOutput]() { + return __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"); + } + [kGetLoggerInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_logger, "f"); + } + [kGetParseContext]() { + return __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") || {}; + } + [kGetUsageInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f"); + } + [kGetValidationInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_validation, "f"); + } + [kHasParseCallback]() { + return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"); + } + [kIsGlobalContext]() { + return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, "f"); + } + [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) { + if (calledFromCommand) + return argv; + if (isPromise(argv)) + return argv; + if (!populateDoubleDash) { + argv = this[kCopyDoubleDash](argv); + } + const parsePositionalNumbers = this[kGetParserConfiguration]()["parse-positional-numbers"] || this[kGetParserConfiguration]()["parse-positional-numbers"] === undefined; + if (parsePositionalNumbers) { + argv = this[kParsePositionalNumbers](argv); + } + if (runGlobalMiddleware) { + argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); + } + return argv; + } + [kReset](aliases = {}) { + __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f") || {}, "f"); + const tmpOptions = {}; + tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local || []; + tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []; + const localLookup = {}; + tmpOptions.local.forEach((l) => { + localLookup[l] = true; + (aliases[l] || []).forEach((a) => { + localLookup[a] = true; + }); + }); + Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, "f")).reduce((acc, groupName) => { + const keys = __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName].filter((key) => !(key in localLookup)); + if (keys.length > 0) { + acc[groupName] = keys; + } + return acc; + }, {})); + __classPrivateFieldSet(this, _YargsInstance_groups, {}, "f"); + const arrayOptions = [ + "array", + "boolean", + "string", + "skipValidation", + "count", + "normalize", + "number", + "hiddenOptions" + ]; + const objectOptions = [ + "narg", + "key", + "alias", + "default", + "defaultDescription", + "config", + "choices", + "demandedOptions", + "demandedCommands", + "deprecatedOptions" + ]; + arrayOptions.forEach((k) => { + tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[k] || []).filter((k2) => !localLookup[k2]); + }); + objectOptions.forEach((k) => { + tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, "f")[k], (k2) => !localLookup[k2]); + }); + tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; + __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, "f"); + __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f") ? __classPrivateFieldGet(this, _YargsInstance_usage, "f").reset(localLookup) : usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f") ? __classPrivateFieldGet(this, _YargsInstance_validation, "f").reset(localLookup) : validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f") ? __classPrivateFieldGet(this, _YargsInstance_command, "f").reset() : command(__classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_validation, "f"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_completion, "f")) + __classPrivateFieldSet(this, _YargsInstance_completion, completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_command, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").reset(); + __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, "f"); + __classPrivateFieldSet(this, _YargsInstance_output, "", "f"); + __classPrivateFieldSet(this, _YargsInstance_exitError, null, "f"); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, "f"); + this.parsed = false; + return this; + } + [kRebase](base, dir) { + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.relative(base, dir); + } + [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) { + let skipValidation = !!calledFromCommand || helpOnly; + args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); + __classPrivateFieldGet(this, _YargsInstance_options, "f").__ = __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__; + __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration = this[kGetParserConfiguration](); + const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, "f").configuration["populate--"]; + const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration, { + "populate--": true + }); + const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f"), { + configuration: { "parse-positional-numbers": false, ...config } + })); + const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, "f")); + let argvPromise = undefined; + const aliases = parsed.aliases; + let helpOptSet = false; + let versionOptSet = false; + Object.keys(argv).forEach((key) => { + if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, "f") && argv[key]) { + helpOptSet = true; + } else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && argv[key]) { + versionOptSet = true; + } + }); + argv.$0 = this.$0; + this.parsed = parsed; + if (commandIndex === 0) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").clearCachedHelpMessage(); + } + try { + this[kGuessLocale](); + if (shortCircuit) { + return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false); + } + if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { + const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")].concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")] || []).filter((k) => k.length > 1); + if (helpCmds.includes("" + argv._[argv._.length - 1])) { + argv._.pop(); + helpOptSet = true; + } + } + __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, "f"); + const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, "f").getCommands(); + const requestCompletions = __classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey in argv; + const skipRecommendation = helpOptSet || requestCompletions || helpOnly; + if (argv._.length) { + if (handlerKeys.length) { + let firstUnknownCommand; + for (let i = commandIndex || 0, cmd;argv._[i] !== undefined; i++) { + cmd = String(argv._[i]); + if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { + const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly); + return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); + } else if (!firstUnknownCommand && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { + firstUnknownCommand = cmd; + break; + } + } + if (!__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && __classPrivateFieldGet(this, _YargsInstance_recommendCommands, "f") && firstUnknownCommand && !skipRecommendation) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").recommendCommands(firstUnknownCommand, handlerKeys); + } + } + if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") && argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) && !requestCompletions) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + this.showCompletionScript(); + this.exit(0); + } + } + if (__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && !skipRecommendation) { + const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly); + return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); + } + if (requestCompletions) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + args = [].concat(args); + const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey}`) + 1); + __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(completionArgs, (err, completions) => { + if (err) + throw new YError(err.message); + (completions || []).forEach((completion3) => { + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(completion3); + }); + this.exit(0); + }); + return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false); + } + if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, "f")) { + if (helpOptSet) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + skipValidation = true; + this.showHelp("log"); + this.exit(0); + } else if (versionOptSet) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + skipValidation = true; + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion("log"); + this.exit(0); + } + } + if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.length > 0) { + skipValidation = Object.keys(argv).some((key) => __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.indexOf(key) >= 0 && argv[key] === true); + } + if (!skipValidation) { + if (parsed.error) + throw new YError(parsed.error.message); + if (!requestCompletions) { + const validation3 = this[kRunValidation](aliases, {}, parsed.error); + if (!calledFromCommand) { + argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), true); + } + argvPromise = this[kValidateAsync](validation3, argvPromise !== null && argvPromise !== undefined ? argvPromise : argv); + if (isPromise(argvPromise) && !calledFromCommand) { + argvPromise = argvPromise.then(() => { + return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); + }); + } + } + } + } catch (err) { + if (err instanceof YError) + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message, err); + else + throw err; + } + return this[kPostProcess](argvPromise !== null && argvPromise !== undefined ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true); + } + [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) { + const demandedOptions = { ...this.getDemandedOptions() }; + return (argv) => { + if (parseErrors) + throw new YError(parseErrors.message); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").nonOptionCount(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").requiredArguments(argv, demandedOptions); + let failedStrictCommands = false; + if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, "f")) { + failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownCommands(argv); + } + if (__classPrivateFieldGet(this, _YargsInstance_strict, "f") && !failedStrictCommands) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand); + } else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, "f")) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, {}, false, false); + } + __classPrivateFieldGet(this, _YargsInstance_validation, "f").limitedChoices(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").implications(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicting(argv); + }; + } + [kSetHasOutput]() { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + } + [kTrackManuallySetKeys](keys) { + if (typeof keys === "string") { + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; + } else { + for (const k of keys) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[k] = true; + } + } + } +} + +// node_modules/yargs/index.mjs +var Yargs = YargsFactory(esm_default); +var yargs_default = Yargs; + +// src/output.ts +function debug(...data) { + if (conf.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } +} +function step(data) { + if (conf?.verbose) { + console.error(font.gray(data)); + } +} +var kill = function(error = 1, msg = "") { + msg && console.error(+msg); + process.exit(+error); +}; +var font = {}; +font.red = font.green = font.gray = (str) => str; +var conf = null; +var outputConfig = function(_conf) { + conf = _conf; +}; +var info = function(msg, data = "") { + if (conf.quiet || conf.quietTotal) { + return; + } + if (conf.output || conf.outputMatch) + return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); + console.log.apply(this, [msg, data].filter(Boolean)); +}; +var chat = function(msg, data = "") { + if (conf.verbose) { + info(msg, data); + } else { + debug([msg, data].filter(Boolean).join(" ")); + } +}; +var error = function(msg, data = "") { + if (conf.bail) { + return die(msg, data); + } + if (!conf.quietTotal) { + console.error.apply(this, [" \u274C", font.red(msg), data].filter(Boolean)); + } + return false; +}; +var die = function(msg = "", data = "", displayHelp = false) { + if (displayHelp && !conf.quietTotal) { + conf.showHelp(); + } + msg && error(" \u274C " + msg, data); + kill(); +}; + +// src/engine.ts +function engine(_runtime, conf2 = { engine: "V8" }) { + runtime = _runtime; + outputConfig(conf2); + step("Displaying steps for:"); + step(conf2); + conf2.pattern = getPattern(conf2.pattern, conf2) || ""; + conf2.replacement = getReplacement(conf2.replacement, conf2) || ""; + if (conf2.replacementJs) + conf2.replacementOri = conf2.replacement; + conf2.regex = getRegex(conf2.pattern, conf2) || ""; + step(conf2); + conf2.files = getFilePaths(conf2); + if (!conf2.files.length) { + if (conf2.contentWasPiped) { + return doReplacement("[pipe-data]", conf2, conf2.pipeData); + } + return error(conf2.files.length + " files found"); + } + chat(conf2.files.length + " files found"); + step(conf2); + conf2.files.filter((filepath) => { + if (fs.statSync(filepath).isFile()) { + return true; + } + debug("Not a valid file:", filepath); + return false; + }).forEach((filepath) => openFile(filepath, conf2)); +} +var openFile = function(file, conf2) { + if (conf2.voidAsync) { + chat("Open sync: " + file); + var data = runtime.fileReadSync(file, conf2.encoding); + return doReplacement(file, conf2, data); + } + chat("Open async: " + file); + fs.readFile(file, conf2.encoding, function(err, data2) { + if (err) { + return error(err); + } + return doReplacement(file, conf2, data2); + }); +}; +var doReplacement = function(filePath, conf2, content) { + debug("Work on content from: " + filePath); + if (conf2.replacementJs) { + conf2.replacement = dynamicReplacement(filePath, conf2, content); + } + const result = content.replace(conf2.regex, conf2.replacement); + if (conf2.outputMatch) { + return; + } + if (conf2.output) { + debug("Output result from: " + filePath); + return process.stdout.write(result); + } + if (result === content) { + debug("Nothing changed in: " + filePath); + return; + } + content = ""; + if (conf2.simulate) + return info(filePath); + debug("Write updated content to: " + filePath); + if (conf2.voidBackup) { + return fs.writeFile(filePath, result, conf2.encoding, function(err) { + if (err) { + return error(err); + } + info(filePath); + }); + } + const oriFile = path.normalize(path.join(process.cwd(), filePath)); + const salt = new Date().toISOString().replace(re.colon, "_").replace("Z", ""); + const backupFile = oriFile + "." + salt + ".backup"; + if (conf2.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, conf2.encoding); + if (!conf2.keepBackup) { + fs.unlinkSync(backupFile); + } + } catch (e) { + return error(e); + } + return info(filePath); + } + fs.rename(oriFile, backupFile, (err) => { + if (err) { + return error(err); + } + fs.writeFile(oriFile, result, conf2.encoding, (err2) => { + if (err2) { + return error(err2); + } + if (!conf2.keepBackup) { + fs.unlink(backupFile, (err3) => { + if (err3) { + return error(err3); + } + info(filePath); + }); + } + return info(filePath); + }); + }); +}; +var getPattern = function(pattern, conf2) { + step("Get final pattern"); + pattern = replacePlaceholders(pattern, conf2); + if (conf2.literal) { + pattern = pattern.replace(re.regexSpecialChars, "\\$&"); + } + step(pattern); + return pattern; +}; +var getReplacement = function(replacement, conf2) { + step("Get final replacement"); + replacement = replacePlaceholders(replacement, conf2); + if (conf2.outputMatch) { + step("Output match"); + if (parseInt(process.versions.node) < 6) { + return die("outputMatch is only supported in node 6+"); + } + return function() { + step(arguments); + if (arguments.length === 3) { + step("Printing full match"); + process.stdout.write(arguments[0] + "\n"); + return ""; + } + for (var i = 1;i < arguments.length - 2; i++) { + process.stdout.write(arguments[i]); + } + process.stdout.write("\n"); + return ""; + }; + } + if (conf2.replacementJs && re.capturedGroupRef.test(conf2.replacement) && parseInt(process.versions.node) < 6) { + return die("Captured groups for javascript replacement is only supported in node 6+"); + } + step(replacement); + return replacement; +}; +var getRegex = function(pattern, conf2) { + step("Get final regex with engine: " + conf2.engine); + let regex; + let flags = getFlags(conf2); + switch (conf2.engine) { + case "V8": + try { + regex = new RegExp(pattern, flags); + } catch (e) { + if (conf2.debug) + throw new Error(e); + die(e.message); + } + break; + case "RE2": + try { + const RE2 = (()=>{ throw new Error(`Cannot require module "re2"`);})(); + regex = new RE2(pattern, flags); + } catch (e) { + if (conf2.debug) + throw new Error(e); + die(e.message); + } + break; + default: + die(`Engine ${conf2.engine} not supported`); + } + step(regex); + return regex; +}; +var getFlags = function(conf2) { + step("Get flags"); + let flags = ""; + if (!conf2.voidGlobal) { + flags += "g"; + } + if (!conf2.voidIgnoreCase) { + flags += "i"; + } + if (!conf2.voidMultiline) { + flags += "m"; + } + if (conf2.dotAll) { + flags += "s"; + } + if (conf2.unicode) { + flags += "u"; + } + step(flags); + return flags; +}; +var readableSize = function(size) { + if (size === 1) { + return "1 Byte"; + } + const i = Math.floor(Math.log(size) / Math.log(1024)); + return (size / Math.pow(1024, i)).toFixed(i ? 1 : 0) + " " + ["Bytes", "KB", "MB", "GB", "TB"][i]; +}; +var dynamicReplacement = function(_file_rr, _config_rr, _data_rr) { + const _time_obj = now; + const _time = localTimeString(_time_obj); + const _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = " ", _nl = "\n"; + let _file = "\u274C", _file_rel = "\u274C", _dirpath = "\u274C", _dirpath_rel = "\u274C", _dirname = "\u274C", _filename = "\u274C", _name = "\u274C", _ext = "\u274C", _mtime = "\u274C", _ctime = "\u274C", _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = "\u274C", dynamicContent = new Function("require", "fs", "globs", "path", "pipe", "pipe_", "find", "find_", "text", "text_", "file", "file_", "file_rel", "file_rel_", "dirpath", "dirpath_", "dirpath_rel", "dirpath_rel_", "dirname", "dirname_", "filename", "filename_", "name", "name_", "ext", "ext_", "cwd", "cwd_", "now", "now_", "time_obj", "time", "time_", "mtime_obj", "mtime", "mtime_", "ctime_obj", "ctime", "ctime_", "bytes", "bytes_", "size", "size_", "nl", "_", "__code_rr", 'var path = require("path");var __require_ = require;var r = function(file){var result = null;try{result = __require_(file);} catch (e){' + 'var dir = /^[\\/]/.test(file) ? "" : cwd;' + "result = __require_(path.resolve(dir, file));};return result;};require = r;return eval(__code_rr);"); + const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); + const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; + if (!_config_rr.contentWasPiped) { + _file = path.normalize(path.join(_cwd, _file_rr)); + _file_rel = path.relative(_cwd, _file); + const pathInfo = path.parse(_file); + _dirpath = pathInfo.dir; + _dirpath_rel = path.relative(_cwd, _dirpath); + _dirname = (_file.match(re.folderName) || " _")[1]; + _filename = pathInfo.base; + _name = pathInfo.name; + _ext = pathInfo.ext; + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { + const fileStats = fs.statSync(_file); + _bytes = fileStats.size; + _size = readableSize(_bytes); + _mtime_obj = fileStats.mtime; + _ctime_obj = fileStats.ctime; + _mtime = localTimeString(_mtime_obj); + _ctime = localTimeString(_ctime_obj); + } + } + if (needsByteOrSize && _bytes === -1) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + const glob = (a, b) => fGlob.sync(a, { + unique: true, + caseSensitiveMatch: !_config_rr.voidIgnoreCase, + dot: true, + ...b + }); + if (!/\$\d/.test(_config_rr.replacement)) { + return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); + } + return function() { + step(arguments); + const __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname3 = _dirname, __filename2 = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; + var capturedGroups = ""; + for (var i = 0;i < arguments.length - 2; i++) { + capturedGroups += "var $" + i + "=" + JSON.stringify(arguments[i]) + "; "; + } + return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname3, __dirname3 + __, __filename2, __filename2 + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); + }; +}; +var localTimeString = function(dateObj = new Date) { + return `${dateObj.getFullYear()}-${("0" + (dateObj.getMonth() + 1)).slice(-2)}-${("0" + dateObj.getDate()).slice(-2)} ${("0" + dateObj.getHours()).slice(-2)}:${("0" + dateObj.getMinutes()).slice(-2)}:${("0" + dateObj.getSeconds()).slice(-2)}.${("00" + dateObj.getMilliseconds()).slice(-3)}`; +}; +var replacePlaceholders = function(str = "", conf2) { + if (!conf2.voidEuro) { + str = str.replace(re.euro, "$"); + } + if (!conf2.voidSection) { + str = str.replace(re.section, "\\"); + } + return str; +}; +var getFilePaths = function(conf2) { + const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf2; + let filesToInclude = fGlob.sync(includeGlob, { + ignore: excludeGlob, + onlyFiles: true, + unique: true, + caseSensitiveMatch: !voidIgnoreCase, + dot: true + }); + if (excludeRe) { + excludeRe.map((el) => getRegex(getPattern(el, conf2), conf2)).forEach((re) => { + filesToInclude = filesToInclude.filter((el) => !el.match(re)); + }); + } + return filesToInclude; +}; +var fs = require_lib(); +var path = __require("path"); +var fGlob = require_out4(); +var globs = require_globs(); +var now = new Date; +var re = { + euro: /€/g, + section: /§/g, + mctime: /[mc]time/, + colon: /:/g, + capturedGroupRef: /\$\d/, + regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, + byteOrSize: /bytes|size/, + folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ +}; +var version = "PACKAGE_VERSION"; +var runtime; + +// src/cli.ts +function cli2conf(runtime2, args) { + let pattern, replacement; + let needHelp = 0; + if (args.length < 2) { + if (/-v|--?version$/i.test(args.slice(-1)[0])) { + console.log(version); + runtime2.exit(0); + } else if (/-h|--?help$/i.test(args.slice(-1)[0])) { + needHelp = 1; + } else { + needHelp = 2; + } + } else { + [pattern, replacement] = args.splice(0, 2); + } + const argv = yargs_default(args).example(`> rexreplace '(f?(o))o(.*)' '$3$1\u20AC2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`).example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`).example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`).version("v", "Print rexreplace version (can be given as only argument)", version).alias("v", "version").boolean("I").describe("I", "Void case insensitive search pattern.").alias("I", "void-ignore-case").boolean("G").describe("G", "Void global search (stop looking after the first match).").alias("G", "void-global").boolean("M").describe("M", "Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.").alias("M", "void-multiline").boolean("s").describe("s", "Have `.` also match newline.").alias("s", "dot-all").boolean("u").describe("u", "Treat pattern as a sequence of unicode code points.").alias("u", "unicode").default("e", "utf8").alias("e", "encoding").describe("e", "Encoding of files/piped data.").alias("E", "engine").describe("E", "What regex engine to use:").choices("E", ["V8"]).default("E", "V8").boolean("L").describe("L", "Literal string search (no regex used when searching)").alias("L", "literal").boolean("\u20AC").describe("\u20AC", "Void having '\u20AC' as alias for '$' in pattern and replacement parameters").alias("\u20AC", "void-euro").boolean("\xA7").describe("\xA7", "Void having '\xA7' as alias for '\\' in pattern and replacement parameters").alias("\xA7", "void-section").boolean("A").alias("A", "void-async").describe("A", `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `).boolean("H").describe("H", "Halt on first error").alias("H", "halt").alias("H", "bail").default("H", false).boolean("q").describe("q", "Only display errors (no other info)").alias("q", "quiet").boolean("Q").describe("Q", "Never display errors or info").alias("Q", "quiet-total").boolean("B").describe("B", "Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.").alias("B", "void-backup").boolean("b").describe("b", "Keep the backup file with the original content.").alias("b", "keep-backup").boolean("o").describe("o", "Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.").alias("o", "output").boolean("m").describe("m", `Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). `).alias("m", "output-match").boolean("T").alias("T", "trim-pipe").describe("T", `Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. `).boolean("R").alias("R", "replacement-pipe").describe("R", `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`).conflicts("R", "g").conflicts("R", "G").boolean("g").describe("g", "Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt").alias("g", "glob-pipe").conflicts("g", "G").boolean("S").describe("S", "Simulate output without changing any files").alias("S", "simulate").array("x").describe("x", "Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.").alias("x", "exclude-re").array("X").describe("X", "Exclude files found with this glob. Can be used multiple times.").alias("X", "exclude-glob").boolean("V").describe("V", "More chatty output").alias("V", "verbose").boolean("d").describe("d", "Print debug info").alias("d", "debug").boolean("j").alias("j", "replacement-js").describe("j", `Treat replacement as javascript source code. + The statement from the last expression will become the replacement string. + Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. + The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. + At some point, the $ char _will_ give you a headache when used from the command line, so use \u20AC0, \u20AC1, \u20AC2, \u20AC3... instead. + If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. + + The code has access to the following variables: + \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, + \`fs\` from node, + \`path\` from node, + \`glob\` proxy name for the .sync function of fast-glob from npm, + \`pipe\`: the data piped into the command (null if no piped data), + \`find\`: pattern searched for (the needle), + \`text\`: full text being searched i.e. file content or piped data (the haystack), + \`bytes\`: total size of the haystack in bytes, + \`size\`: human-friendly representation of the total size of the haystack, + \`time\`: String representing the local time when the command was invoked, + \`time_obj\`: date object representing \`time\`, + \`now\`: alias for \`time\`, + \`cwd\`: current process working dir, + \`nl\`: a new-line char, + \`_\`: a single space char (for easy string concatenation). + + The following values defaults to \`\u274C\` if haystack does not originate from a file: + \`file\`: contains the full path of the active file being searched (including full filename), + \`file_rel\`: contains \`file\` relative to current process working dir, + \`dirpath\`: contains the full path without filename of the active file being searched, + \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, + \`filename\`: is the full filename of the active file being searched without path, + \`name\`: filename of the active file being searched with no extension, + \`ext\`: extension of the filename including leading dot, + \`mtime\`: ISO inspired representation of the last local modification time of the current file, + \`ctime\`: ISO representation of the local creation time of the current file. + \`mtime_obj\`: date object representing \`mtime\`, + \`ctime_obj\`: date object representing \`ctime\`. + + All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). + `).help("h").describe("h", "Display help.").alias("h", "help").epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).parseSync(); + let conf2 = {}; + Object.keys(argv).forEach((key) => { + if (1 < key.length && key.indexOf("-") < 0) { + conf2[key] = argv[key]; + } + }); + conf2.showHelp = yargs_default.showHelp; + conf2.needHelp = needHelp; + conf2.pattern = pattern; + conf2.replacement = replacement; + conf2.includeGlob = argv._; + conf2.excludeGlob = argv.excludeGlob ? argv.excludeGlob?.filter(Boolean) : []; + conf2.excludeGlob = argv.excludeRe ? argv.excludeRe?.filter(Boolean) : []; + if (!conf2.replacementJs) { + conf2.replacement = unescapeString(conf2.replacement); + } + return conf2; +} +var unescapeString = function(str = "") { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); +}; +function executeReplacement(runtime2, conf2, pipeData = null) { + if (0 < conf2.needHelp) { + runtime2.exit(conf2.needHelp - 1); + } + if (pipeData === null) + return engine(runtime2, conf2); + if (conf2.trimPipe) { + pipeData = pipeData.trim(); + } + if (conf2.replacementPipe) { + step("Replacement from pipe"); + if (pipeData === null) { + return die("You asked the piped data to be used as replacement - but no data arrived."); + } + conf2.replacement = pipeData; + if (conf2.replacementJs) + conf2.pipeData = pipeData; + return engine(runtime2, conf2); + } + if (conf2.globPipe) { + step("globs from pipe"); + if (conf2.pipeData === null) { + return die("You asked the piped data to be use as files/globs to include - but no data arrived."); + } + if (conf2.includeGlob.length) { + return die("Please pipe file/globs to include OR provide them as as parameters. Not both."); + } + conf2.globs = pipeData.split(/\r?\n/).filter(Boolean); + if (conf2.replacementJs) + conf2.pipeData = pipeData; + return engine(runtime2, conf2); + } + if (conf2.includeGlob.length) { + return die("Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters"); + } + step("Content being piped"); + conf2.pipeData = pipeData; + conf2.output = true; + process.stdout.setDefaultEncoding(conf2.encoding); + return engine(runtime2, conf2); +} + +// src/env/node.ts +var import_fs_extra = __toESM(require_lib(), 1); +var runtime2 = { + fileReadSync: (path2, encoding = "utf8") => import_fs_extra.default.readFileSync(path2, { encoding }), + fileReadAsync: (path2, encoding = "utf8") => import_fs_extra.default.readFile(path2, { encoding }), + fileWriteSync: (path2, data, encoding = "utf8") => import_fs_extra.default.writeFileSync(path2, data, { encoding }), + fileWriteAsync: (path2, data, encoding = "utf8") => import_fs_extra.default.writeFile(path2, data, { encoding }), + fileDeleteSync: (path2) => import_fs_extra.default.unlinkSync(path2), + fileDeleteAsync: (path2) => import_fs_extra.default.unlink(path2), + fileCopySync: (originalPath, destinationPath) => { + import_fs_extra.default.copySync(originalPath, destinationPath); + }, + fileCopyAsync: async (originalPath, destinationPath) => { + return import_fs_extra.default.copy(originalPath, destinationPath); + }, + exit: process.exit +}; +(() => { + let conf2 = cli2conf(runtime2, process.argv.slice(2)); + if (Boolean(process.stdin.isTTY)) + return executeReplacement(runtime2, conf2); + process.stdin.setEncoding(conf2.encoding); + let pipeData = ""; + process.stdin.on("readable", () => { + let chunk = process.stdin.read(); + if (chunk !== null) { + pipeData += chunk; + while (chunk = process.stdin.read()) { + pipeData += chunk; + } + } + }); + process.stdin.on("end", () => { + return executeReplacement(runtime2, conf2, pipeData); + }); +})(); +export { + runtime2 as runtime +}; diff --git a/bun.lockb b/bun.lockb index 2ce9140e8f3bb5a385900e6259cd508fedefdf3b..dfafc6f893ad254e07ad224f071603a5c59515aa 100755 GIT binary patch delta 9276 zcmeI2cT`l@+Q!d5)I$|PVdz*QsG!tAkzyACHC7ZcjEIy_6l|yjEU`swN3*emEowxQ z5JhjSF(%g-H5yc~V9(NPA*QM^@;&dIO|B~|H|zW3Ti;#lu6yM1-S6+byYI7SX3rek zuI%|pSr*_|@iI9xxyRj~#^s;w)YEe5yoRF>FU@W>#BuP99GiDs`($lQlqI@WE+63~ zf420)Y2}Jbp&>uL0PJ%nNj8#HlA4`4ITOC>V&%=Asa>r4w(>}lBx~GiF6;#V?7URN zq%_#foXkm5^U>-itJfTSk|oIwVUEH!sC8D+#X%{O1pw>vzF~P^@<@=`@QZo*W)$&!np~Wppk))Q0Zv#uU+QYVhHG!pmoIo7P z?OO5)s-X&Z!cs%Vrb&_u>;PCN*n^_L%mV*hL#`yvle7X(spqV{ig%_G!P2p$Vdalt6h8Fods zR(pDO9y%-)O9|#$0Sj@13PL5uW{;gbHXA*VqR?dO?={$Vum@p%VC^SJQft^dd6Lut z_Cs(QhOC0Lf>h+oPfO1#NKeaM3GM;D2$mY2lbMT2EtnJvUqRPPe2}1VGNk6^BPrEY zG24xb%hCt8cIrzW{~DS8^|+byv)Z_{n`@{k4;oZe-txH|=Z!!~3g39pl)--R+VUK- z<-(3WI(#RSyiXKOv!pIa)@f)NE^T#6QaXY$ASD!3DsZN^%tH{JAAiLU)* zW~ttE)mPQJf90&+(T7ykhJ4*g^=;F+s&?F5re4)`lQTxBuC7t?juGk__bBDc2ubRO z^32tno%M=yq9pZ#heF)+N)o&Q@Jx)}4tRr%kp|o|9f|RUC#wb@y)p=1h%wT~Pp`~{ z*A<=_HAOiLua7a3yyl}MDGZ*eF<(D;;lJN2f!7fpL%;OOE_j{cQ7`q%Rguq3rP_V* zxKZsW1>Sh!nH#+=@Tg2J@+v&4&%{`t$7n5|Wb~5YQIE7z-iJr^Y5A_eqf$)NiUE41 z6P{bmGbHHE(&6<|liebe_bG)aZ4{(2l7z(%k6PRxo|flkh+dfuk0Q}GjMwMzqTrd* z$l99XG3ySG=GjyA@t`@iH0ur8RlVjJp%f!Uqid{%omX|a(PlkUBq>f!_KHxdkfQNr z#@?G6w33PmL7_ABvlL3zkHB~D-Fa+>u z2+%a#GsR-3p@WB}O^26g^k{m|!=q`!y*I)w$2Yaw&{nUEhDRfVz6YT0@#^J*D5V~- zA7BgPfV_rXiW={v`h@D0G4SHyVQG5mS&dpZDOzcPeTxRrOs#O&E0f_-D=~?ldZij( z1Uzj3zlVqCrNo|=kGwKdb)6EW$XSwv8mSG`NqF6iUWLD2-jbzWM#z0YZKx@vHTF5` zD;_KKbtXKj-2@Y_S3ZSDkysd5CNJP=W8^bduXM#WHxT!9#;L7@C&m_~Jc36PZAmRN z^T?seSsxOijGz>_vHfPt;q{{>#U875h0#iXY+6)?sp``XbAat|iWZCII~^XHjhr+p zK@%hi!PH5#s~p~2P4{HqiR!2sQA*xKNeTj#)SIDtxniPv8L$p;EFd-%lo^r#`{0D? z&8ET&SJ$_RQ1&22t;C}jpjS-rDo69JJ(fe@QL*M~1&V#UplVIgc_r3DlB9DC{|RdX zTO)k3l)NB(vXs0i>?Og;GBtUnb0BU?mjxwj4*v$M40}s(vXs0{R`pomTntCLEAEoD zg#U={!af$9EF~L+PnJr3BK%h^q3;DJYX<)pVP6Q#keNbc8LxkIAz=h2u%_@WsB~c| z&{Fth$ybC=mXg-OCrkHjgtdjGTlV;m%5@}1SQ_k>a-5dI88-;H!cvU8u%56~pclbE zSc-2Y?ze_DRUfT#E~YsRfJb)&MXpyZl@=s8S@MI0|7VuU>nh?RU}-#Kgx_7{BTL=u zP2))!;sI#-2a5o*lpHGjS1mPQnBcEk;==`h)e;{8PFB3#G+Oc{scO`sHUC}M|6SPs zaSL0$_3oQ7k7}w;J4HQh^Qs$DsMc`nV&zX-`@g%sA@TF=&G2fX#oX!r!1=O^3EnP zX6;HhcG%UhY=7eqgMK#kzw}GTgqhnLKU@3ky;E}h(QW5)gTD0mabm`@)ZEEy#=e}} zqG4M4&^^2QJ{~yC(c@{?Ukz2m)*khaDO=KV_wt9?t=x}Ak9M9l^6-(6?tK>>KGAXT z_j4+|c;ntLVv1*;D0z`GCFP+>&RIj{`0JmVS1xN8XIM5i-sAbYOI5=T9_=2}>80PG z;J^tN5B7cH|8{b>@%3Sej{E12x?Gvm|LZ-=+T=K2I&&sq$=wInQ>7_(hf#NwEK)k!vj`^wCg z`!o1mcp(F*C2);E1ox8x7MK8($^enPjzG96K%@ykG+$@}aF4(v0^NBRQ-Crvfc2&T zJ^6hC{mcOp%m8}x)n))s3H(N&FOM|`*lqz(X$}y}pAks31W2|3h~qmf04x;%TT6fh zKGG6kKY>F8269CK$gl#)Q2<`&2MD-WGuvW|gMD&GPMMi^VR7S%QFa~Q$j{#>JDtzC zmvClr)QZym?_A$EVD~?sSJ)MX_C4+Po&P*D&yPOcb+|@vWnR6<+U{)|APBS3OLCwV@9cO;GVMq`5lYZQ}_X`GJ>)mil zns?3S$8U~2skwUQ`_c8`PqtjJtE~6a?aQ~j<-702oL9y^k1I|nHlqdV$#FtG6ZruG zE-e8(S^yOA%oYHDCvcj;WUgxoFwGgDs3pKuev*K%3xK~fKp`)52B;-)jlc}<=K`=m z2THv!QLLI<80*?sH;$2(;%G?0fy8_JN_X+fK2S{)Oc$=?w19(c{ zHv;o{tUJJV4}eN{fQ9@SfkaP$WDkIM_zn*MOD_OhPk>TB(i31mfkOnAa>WZE!y6#S z3t%}v0Kiso2X7d)I@6o&apC3RtQ&Xf!fZzNz{hPnykDl(i$j~d%yIZU^B0WXr(_lQ z7aDT1CDT#=%=`nQyF3gFSM>3n@g*czF7Bw}U_544wVq+Ko4Hb)eJ87p| zf7N3e+or>)yPQQcNA?${_%1%4(K!}nYdVwi#0MxV!J5ve#)DBD!Z3B(nbrRRYyH0{ zu)02)HN>kE+`RuFM=Q%^+P3MwiXW}V8hNmo`Ekcm7TcEkLvOONEREMB1X3)$A-C6% zG?~vTWsb#D#4UO&jx#^wHB~VBeB~n8G{Gd>guh&{xnNYD6SM@Pk0A53xMDiHrE@Xk=acy&GtPIVzM?}51fv1FhBWnIp}O^shHm@CrnBTd&5SW3DbWYIH`1LU>iJ5+e2^Xv(Y1<(8h=tNhyrOe-W9Ah(l~-ME(ec|}Qp`Nc3&=2YMNYk}mu=Yrw zg=jQ32-X4V6o{^kg3(kOARnk4jHbjNN`vUyB;o>)&ZKj0x;6{g32CZ`dcH+48Wm#H z^R0pf3PwGrxyBzIqe!7hP|x2JEEs9ZPd(o*7*5oTj5@x9p?=C73I!lRJ;w>Pk>Oxf zx&zTgi-+R$P*a0;35N4G<1|svD+TK!;;2!(1;ZJT@kxY{_JGmIL{R^!cT~uSA`mBR zQYq4OeI!^U()4IiAytCm@Jymdix@rX_>-a`T6}cv6)XnnHwD`VOBMH9r2*M@9rs+# zTJdJ3%#`<9!BS%B)PQy!+GRqZP>6OHJ>(1dLG7UqP)CT)Lg+;22k1xWC+KJB34gSL zeNs$EAhb#15JKt$(R1A&ii7Cjq8k(mMMHG(L5C!rpw1AT<5)o+kOR~ldWxc-LC>LI zAv&D;7P<%BhyDRQfNnrH8NMpIjzk?a8r`N-u?tWQk6g))zfR{N3D5v&AT$Vi9irKw z!x=M(&W4;IJBSXd=sk2J)EhB$02T{N$7i+BMgICKcDn@~qtMaH5QvVZ`XJ;skA0WT zVRx!ezsrJIk8ogbh<4-S&>Do4L9{*6Lh^#>6eSjlf_{TfyC3a#U&4OPcvuI3zK210ERLeFRd()8HG!^S}!Alftrz!IbM+fWM9wDhx} zG-w#)3O)`t6&ec-hYS$Kj)6up>`Eh$NQ6c~$4~%}O+ca%7xkh5>3oQKMQkF{MbJ!WI#dWvhUnfj*s0JI zh#EZuqWIYml~Do}LrvvV*|hi5ivo?zEci~eE76QlMiru6h6-N+yBwmI#tDd-3eijF z+t3n-cCE$GB4|D|4_XKnC?JTh-NMSe^a1(+?6OVYUN?OkDYG%*0i6Q^`QWWA z9hv^Nm31}?48T9$u$8T0f!yW{bFbdEjV)==8ZNkn68^9|Zp z;1BmiRyge)hSL^fV^PyF{_6$oW@mV(i%jSCFG^^N)3F1*2yx7qOXvQl#dfC2Lxw_&vo0~6JRps)yMz&G`U$`$yRrk5OFxMbeZ>4| zfq&j6%nS_zH?3tse^G=ss9LjhTAN#%qG)3~b#AA|8{Zn1?7Ux65PrSWahcHuM%PY$ z+*%chH+!s6CAVky z`HXrNVb$-pwta2CLmv)f=rvB-cb%m$tJ*u-9iCX7b%RwiGvju}U%SO7@xV@Uo9e^2 z*aF$ixK&lh-DMx^u-)BgWInvIk=a#uYGgaYSa5Y+sB9tgje6OPJKtiC-1!c3BiDy- zxW&AA_+9K;zgWs{)i?BVe+!;!BYX4y(XuN)agTXd&yALkSn!*Th>VVx?W^<9aU zw}QRFzS;>FKOU*wa0#oopUjvSv_oKOe7EFmN(g>+$&AYKStTs3jIl8I31DY%B$$#o zQfef(4@_-+I>qSpE~#$>Q(OY-^8??SY9u?kyb|4G*(}$=sNf1tP%qJlp5*wMZf_n?a|_tc)YvT9u(W+RI-Gd zdZCDe<{4*Ir;lW;KRhQbFVL#)hW89SJKeJz#n@0i@xJ5oo~BzRQD zq*2R@;8Dx=y7!Uv9CYs?JgU!#Od4yHv(wv}4Uft(-P;Y1dSldL!YxDX8RZh;Q7v}b ziD#^8<72NW*Qy?bMM*s6R#Udygd=iRl&>I`+!1jc$Br%=rycvLBdJOo29@o}O!R|t=W z4v8YQlki6A9u4x-xbbMJxIS_7;TZ$dghAc|j|K+kENHw$`@AMyO`gP9CPW{7L>k~x z_TC!J-(Gk*@NjL0S-C|!JTpVB#41BqsEKY8^%y)#Q=tge6Dvk4JYxiN;NhldaHmw1 zA4)an+39LN79Z4#5X$xtyk3SEV^toOX`dscAJ!owX$q->N1e6PJNq>}Y8`hOh9wva z4@KJR*U1QYayG|X)z$EZ;9P)4bL&`c8(bQ)LGWm%o%GCRmut>*)74!NA74bKoA5Ge z%6O)Bcy5Ne39Apyj=h%GIoTfT&n*4kI|&OZp*u7h%dwzApaI5x{xiGZv3Q6~^GvcTzf@_TLrj>?*m#Ie`n|9Qo*a}!tLX&1WUZ}Js;X8S37Tm7)B<=k z(Z)Tw10Ge2J3G;;T&!++VZoQGmb1*Mo-@Xd&_Bs!9>qW6HmMVn`Gw?Tl8=*!<4Jaa z|21?4+%C@(lX+V58Odik>k64M7=Ob~P_D?pt8`wwz09wks=X$opJbA*OP$yR|F+~i zlK&HoKX#A)Nhb3?{@H^cNS&C>htek|^ATtDAl=aW$0-{e#1x=Nwgb~C6aG=fDmjwv zz^?Eq-V7$+1560jqyOD0{$`}089;p$iOGr5qc-+c3SQWe)=>=%P3;1 zzKit#9#iR985akp@l2AwRhA>B)>FY0-xo~NpDE81lbNlsF(BP|%#^@j8TcfVo+I@q zne<%f#Lvj{#JuIef(`$=lrbzcGXJ`iF$g%Gyrlohm+}a`0bJ9MnFjvJOPEfOPx_OW zFzMuz{x_Ghc3;$p^_&mZ_O3OHyD(Zjnj`H*t^%uJ-R|(-ZJQTu>@oU!{3oMKOLq+Y z%gF^xhtEHm_0yfJ!(GRG5;^QoQCGDGwLio)#d{_XUG;%?*v5aj+PPK1msh&Hbor~E$38p#u$DX3fDCyFdPK2oezAndS% zU={aC$h3n{U=JZhY_o@Oj|8&`LaG>Tg0R&d!T}P}gz5lclnFwG1B49m9tlnk5JDUw z^buu_5cZPLMnXRk-~^%65kj34gaP6(3I0wHVpIrgjEXC#~_Axm^|hES_QSm6v| zusBUZv@?V>7YMnc(FH;~3AZ8S4x#yyhyCiW3*O&Xc<9WBlkTp5^VGKbzs?(*;I%7c zUv5dwIq%Usrk8(sDf7m;{r#O@SX41B;ePy}>_c^fy6(R*GJ4v+t{oiqi8>eVpL6TX zH`~3OO26DPrfz*!vB$NXYjLl>WqmmM`0<>=pS%YC`Qe12Z@*qMV_p8cTjstvFL$r{ zUD5DU*E_88>~TA5;!gJZV=X* zA?$F2FjCwnA=3>)fjflJVw*dJdnA}WAdD5GJs@m#hj4&|0-<_B807(>!V|(c@g50I zo)AJhKqwYv9U$x_p^bzIBESnmX$S5m7I^V&ULp>Y;O~Wq7;i*O7IVBId`7}~63Rpu z9|*PH5LWnL=%+q8^y{}?8S%$#>(pCeB^jSa&wAsPm%Y;0P5fk5*3H2k^Gj9^>6~(S zWy+1l=DvG2HhQ<+`F_FfCCBe{OT3(Tqjr?}{I%^O#E1KfG+#7SAsT(rP`eKrx=li* zNb!TP%ooCXKM2#s4HA<5AmsW(m?4_|AzUZn0SPljRse*x{t$KqK$tD=laLtzp&$^# z9I-7B!aWkqK@jGN(LoTl20}PMLY+{9A&d%wP!SBFUc5(wQ!s>(5C{uJSqOx^B(#yR zSOkPZC=G#77YbpiI81_nD1?|W2)`3^!XSJ`!g&%JMVD|0wP6reghO~yoF*YU970+I zgcYJO0zx|pw@FwjQaVCd7QxM}>pSv|{$hSAcYSspUL@QYYoNPfTJf~XvWblSBaIfx zDKlc`6jzk9LcEaL%Koago=N3N_VrirF5n_7w(U#&A8Pe_kNzJTmhE;oc4Gcfk7+1v z8z&heuMhXa0{NR%pCNZesF(}hIcRWe@owP^HfE({23{fAN6={Z1SV$cpQd&FUstGz zxES6|I~CNebwgkNa*ngd3gf2tcv*b05>Ex!RXj77B>Jg|3rIg^Kp>5Nmbx1ftC1T0 z1jT-pe$12_{RY4um43_;udm`>X|v@i^qwWtkl?758b*nwNNtYPFoNu9sm&EXqKf)? z@{}2;_QIy0=JTaSnZ6I3jykDPrt5VDZ+=qqfd9JG=vO-a^z1iEtwCxX;5SKaAv9!C zPuqL!C4joTSO$8-ej1=IFOeGd5?PweeW}#2-^jj#P02qmH5wx9<>sE;V{m?bj8?XkPKhf`Nlldr4{`@IRK?N~wjyUky;t zS4k}lb}T?0Z?X+nI2_|w8DlTYzzAp*NTZ=its`vg9O)OrYNH*c`zk=kR;gj{Q7=pV-)3m_ z%nFBQhB~`l24b5@52U2tl3EIEy20r91DFN_dop?-sg6I&xK!A38DVcr4O=GqJwkQt zlv*0>CA>Fob{M;)h&>|xk^!-Iq?Q5O_G6?48a3RTt~DIq%_3?Ij}n<{_{1!FC#Kbe zR*$YgH-J`+7$6h~1Hyp_pd&!9`m|qh1Na`e3ETp%iMwm~`}OpK9|X`Vb}xW#;@&_X zfL_bvfdn8Cpx1hO;g1BOfJdl?fxQ4nzzO&P+Mj{{0Dc5$92KM2@+&^{W<@&(SpfaO9f*+ABCnY*=4V<@HS+|XWWgz4fY#hsae6I4 z%OKqsv_jCnKnBnQcmSW4xv@-Szs5s(jwpMLf9Tws?oAx?-=N9s7|{TC9xxp!2WYa( zfIMI*Fr;GB6%^7NE7P7+eI51BL;G0L6|4M$jhMb1;SjBY`o%XkZjT z8u|H>={!|H@l=70C&H%K3BV+vMA{TjKqIwb#Rj?}o>J@3z zV9y2S0JDKvKs7+;W`b*g82}|+3s8JLKy}msw7}Tvr@Co{rq!HAW&wO}w6D(#6$vMvD@1J48WL|z6^%p#PbdZ_HqH(=n{bHQNe zUSs2v3T7sYlbiWE9xJAA;W<1`e6WQF@OaU_g~vm5d6T!<#aWWX**E!GyCh4zs5;5_ ziP&wtS&Ti!Lt4Mv#$W0xUU{1b@?otS6dr8*7CIvD$TP(r?|!QA!X!(q1<%jfW5m&~ zd5%&(Rs?>-Cn**AV$nA|UYVCK_Q1#MbVxf7AUC-k$(Y5`cAgOAJI?q~xsWFooTdwtWfRernYAKfSo~ zd07RXJj=(4Dnta?zL{1wFS))c^rOqN4m4sG8&C6G<>5F{c$WL)h1lf`4+uJ1WPAp_ z^>*6p-n)lK|5{^^$T)+nql=BKLxLaFH*LRmSXPMV&oHq9HE=yHfP0C9zk0!cx7t_> z9-Bzi1MS=L2)2Ff%_zJx>*szO{vhi|q|7wvwH0voU*&X<3YfPXUKqh7TggyNEVz()KS{BP1 z&?I{C+(nGvt*K(!Mc&`}-c+M$^z!SA{9QQ!JV9)}#0OvqZeGF=%&QP?moWq@D@62V z+*WHV#47l~wr|_B{#qXQXh-E5y_p`A#}5_algm6l$o4Mx#i#MqRLTm6K>yem)1pg%D*M?*w%=iilfr{MK2}WQFKt1 kaFN_!2^3M?mGIW;{>q1rBK{5!7cqH?duvgSa?JI=09+cVJ^%m! diff --git a/package.json b/package.json index d262b742..914aef99 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "postbuild": "cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", "version": "yarn build-minify", "build": "yarn build-only", - "build-only": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js", - "build-minify": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js --minify", + "build-only": "bun build --target bun src/env/bun.ts --outfile bin/rexreplace.cli.js", + "build-minify": "bun build --target bun src/env/bun.ts --outfile bin/rexreplace.cli.min.js --minify", "prebuild": "rm -fr bin && yarn format", "test-js": "echo todo: async mocha", "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", @@ -54,9 +54,9 @@ "@types/yargs": "^17.0.24", "assert": "^2.0.0", "bun-types": "^1.0.2", - "magic-string": "0.30.2", + "magic-string": "0.30.3", "mocha": "10.2.0", - "prettier": "3.0.0", + "prettier": "3.0.3", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", @@ -64,7 +64,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "1.1.3", - "typescript": "5.1.6", + "typescript": "5.2.2", "version-bump-prompt": "6.1.0", "yarn": "1.22.19" }, @@ -79,7 +79,7 @@ "fast-glob": "^3.3.1", "fs-extra": "^11.1.1", "globs": "0.1.4", - "yargs": "16.2.0" + "yargs": "17.7.2" }, "prettier": { "useTabs": true, diff --git a/slet.tmp b/slet.tmp deleted file mode 100644 index 8b751c2d..00000000 --- a/slet.tmp +++ /dev/null @@ -1 +0,0 @@ -my.file diff --git a/src/cli.ts b/src/cli.ts index da847b06..313a4ba2 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -31,9 +31,8 @@ export function cli2conf(runtime: Runtime, args: string[]) { } const argv = yargs(args) - .strict() - - .usage( + //.strict() + /* .usage( 'RexReplace v' + rexreplace.version + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + @@ -42,6 +41,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .usage(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) .usage(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + */ .example( `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'` @@ -274,7 +274,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. - + The code has access to the following variables: \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, \`fs\` from node, @@ -291,7 +291,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { \`cwd\`: current process working dir, \`nl\`: a new-line char, \`_\`: a single space char (for easy string concatenation). - + The following values defaults to \`❌\` if haystack does not originate from a file: \`file\`: contains the full path of the active file being searched (including full filename), \`file_rel\`: contains \`file\` relative to current process working dir, @@ -304,9 +304,9 @@ export function cli2conf(runtime: Runtime, args: string[]) { \`ctime\`: ISO representation of the local creation time of the current file. \`mtime_obj\`: date object representing \`mtime\`, \`ctime_obj\`: date object representing \`ctime\`. - + All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - ` + `.replaceAll(/\s+/g, ' ') ) .help('h') .describe('h', 'Display help.') @@ -330,8 +330,12 @@ export function cli2conf(runtime: Runtime, args: string[]) { conf.pattern = pattern; conf.replacement = replacement; conf.includeGlob = argv._; - conf.excludeGlob = [...argv.excludeGlob].filter(Boolean); - conf.excludeRe = [...argv.excludeRe].filter(Boolean); + conf.excludeGlob = ( + Array.isArray(argv.excludeGlob) ? argv.excludeGlob : [argv.excludeGlob] + ).filter(Boolean); + conf.excludeRe = (Array.isArray(argv.excludeRe) ? argv.excludeRe : [argv.excludeRe]).filter( + Boolean + ); if (!conf.replacementJs) { conf.replacement = unescapeString(conf.replacement); diff --git a/src/engine.ts b/src/engine.ts index d8e94f34..fc211c15 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -633,7 +633,7 @@ function getFilePaths(conf) { dot: true, }); - if (excludeRe.length) { + if (excludeRe) { excludeRe .map((el) => getRegex(getPattern(el, conf), conf)) .forEach((re) => { diff --git a/src/output.ts b/src/output.ts index 477a8867..52ef92c5 100644 --- a/src/output.ts +++ b/src/output.ts @@ -54,7 +54,7 @@ export function debug(...data) { } export function step(data) { - if (conf.verbose) { + if (conf?.verbose) { console.error(font.gray(data)); } } diff --git a/stderr.txt b/stderr.txt deleted file mode 100644 index 2c391bee..00000000 --- a/stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -"1 files found" -"Open async: my.file" -"Work on content from: my.file" -"Output result from: my.file" diff --git a/stdout.txt b/stdout.txt deleted file mode 100644 index 323fae03..00000000 --- a/stdout.txt +++ /dev/null @@ -1 +0,0 @@ -foobar diff --git a/yarn.lock b/yarn.lock index a9eaa8b1..2de01927 100644 --- a/yarn.lock +++ b/yarn.lock @@ -640,6 +640,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1540,10 +1549,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@0.30.2: - version "0.30.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca" - integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== +magic-string@0.30.3: + version "0.30.3" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.3.tgz#403755dfd9d6b398dfa40635d52e96c5ac095b85" + integrity sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -2006,10 +2015,10 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -prettier@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" - integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== +prettier@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== process-nextick-args@~2.0.0: version "2.0.1" @@ -2408,7 +2417,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2557,10 +2566,10 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +typescript@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== typical@^4.0.0: version "4.0.0" @@ -2749,6 +2758,11 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -2772,6 +2786,19 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yarn@1.22.19: version "1.22.19" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" From 99e04a5c5d370ae65d7036c1fb1074e681f5f485 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sat, 30 Sep 2023 00:38:12 +1000 Subject: [PATCH 08/17] WIP --- .gitignore | 2 + bin/rexreplace.cli.js | 113 - bin/rexreplace.cli.min.js | 15185 ------------------------------------ test/cli/run.sh | 8 +- 4 files changed, 9 insertions(+), 15299 deletions(-) delete mode 100755 bin/rexreplace.cli.js delete mode 100755 bin/rexreplace.cli.min.js diff --git a/.gitignore b/.gitignore index a12d85ce..8f8f0866 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ myfile tmp/* package-lock.json .vscode +bin/ +dist/ \ No newline at end of file diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js deleted file mode 100755 index cc0d3055..00000000 --- a/bin/rexreplace.cli.js +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env bun -// @bun -var PU=Object.create;var{defineProperty:nZ,getPrototypeOf:wU,getOwnPropertyNames:OU}=Object;var RU=Object.prototype.hasOwnProperty;var CU=(Z,J,X)=>{X=Z!=null?PU(wU(Z)):{};const Q=J||!Z||!Z.__esModule?nZ(X,"default",{value:Z,enumerable:!0}):X;for(let Y of OU(Z))if(!RU.call(Q,Y))nZ(Q,Y,{get:()=>Z[Y],enumerable:!0});return Q};var O=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var a=(Z)=>{return import.meta.require(Z)};var S0=O((Ez)=>{Ez.fromCallback=function(Z){return Object.defineProperty(function(...J){if(typeof J[J.length-1]==="function")Z.apply(this,J);else return new Promise((X,Q)=>{Z.call(this,...J,(Y,U)=>Y!=null?Q(Y):X(U))})},"name",{value:Z.name})};Ez.fromPromise=function(Z){return Object.defineProperty(function(...J){const X=J[J.length-1];if(typeof X!=="function")return Z.apply(this,J);else Z.apply(this,J.slice(0,-1)).then((Q)=>X(null,Q),X)},"name",{value:Z.name})}});var Z1=O((nI,eJ)=>{var Cz=function(Z){if(M8.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))J(Z);if(!Z.lutimes)X(Z);if(Z.chown=U(Z.chown),Z.fchown=U(Z.fchown),Z.lchown=U(Z.lchown),Z.chmod=Q(Z.chmod),Z.fchmod=Q(Z.fchmod),Z.lchmod=Q(Z.lchmod),Z.chownSync=z(Z.chownSync),Z.fchownSync=z(Z.fchownSync),Z.lchownSync=z(Z.lchownSync),Z.chmodSync=Y(Z.chmodSync),Z.fchmodSync=Y(Z.fchmodSync),Z.lchmodSync=Y(Z.lchmodSync),Z.stat=$(Z.stat),Z.fstat=$(Z.fstat),Z.lstat=$(Z.lstat),Z.statSync=V(Z.statSync),Z.fstatSync=V(Z.fstatSync),Z.lstatSync=V(Z.lstatSync),Z.chmod&&!Z.lchmod)Z.lchmod=function(W,N,q){if(q)process.nextTick(q)},Z.lchmodSync=function(){};if(Z.chown&&!Z.lchown)Z.lchown=function(W,N,q,I){if(I)process.nextTick(I)},Z.lchownSync=function(){};if(Rz==="win32")Z.rename=typeof Z.rename!=="function"?Z.rename:function(W){function N(q,I,H){var G=Date.now(),E=0;W(q,I,function P(S){if(S&&(S.code==="EACCES"||S.code==="EPERM"||S.code==="EBUSY")&&Date.now()-G<60000){if(setTimeout(function(){Z.stat(I,function(k,b){if(k&&k.code==="ENOENT")W(q,I,P);else H(S)})},E),E<100)E+=10;return}if(H)H(S)})}if(Object.setPrototypeOf)Object.setPrototypeOf(N,W);return N}(Z.rename);Z.read=typeof Z.read!=="function"?Z.read:function(W){function N(q,I,H,G,E,P){var S;if(P&&typeof P==="function"){var k=0;S=function(b,l,J0){if(b&&b.code==="EAGAIN"&&k<10)return k++,W.call(Z,q,I,H,G,E,S);P.apply(this,arguments)}}return W.call(Z,q,I,H,G,E,S)}if(Object.setPrototypeOf)Object.setPrototypeOf(N,W);return N}(Z.read),Z.readSync=typeof Z.readSync!=="function"?Z.readSync:function(W){return function(N,q,I,H,G){var E=0;while(!0)try{return W.call(Z,N,q,I,H,G)}catch(P){if(P.code==="EAGAIN"&&E<10){E++;continue}throw P}}}(Z.readSync);function J(W){W.lchmod=function(N,q,I){W.open(N,M8.O_WRONLY|M8.O_SYMLINK,q,function(H,G){if(H){if(I)I(H);return}W.fchmod(G,q,function(E){W.close(G,function(P){if(I)I(E||P)})})})},W.lchmodSync=function(N,q){var I=W.openSync(N,M8.O_WRONLY|M8.O_SYMLINK,q),H=!0,G;try{G=W.fchmodSync(I,q),H=!1}finally{if(H)try{W.closeSync(I)}catch(E){}else W.closeSync(I)}return G}}function X(W){if(M8.hasOwnProperty("O_SYMLINK")&&W.futimes)W.lutimes=function(N,q,I,H){W.open(N,M8.O_SYMLINK,function(G,E){if(G){if(H)H(G);return}W.futimes(E,q,I,function(P){W.close(E,function(S){if(H)H(P||S)})})})},W.lutimesSync=function(N,q,I){var H=W.openSync(N,M8.O_SYMLINK),G,E=!0;try{G=W.futimesSync(H,q,I),E=!1}finally{if(E)try{W.closeSync(H)}catch(P){}else W.closeSync(H)}return G};else if(W.futimes)W.lutimes=function(N,q,I,H){if(H)process.nextTick(H)},W.lutimesSync=function(){}}function Q(W){if(!W)return W;return function(N,q,I){return W.call(Z,N,q,function(H){if(B(H))H=null;if(I)I.apply(this,arguments)})}}function Y(W){if(!W)return W;return function(N,q){try{return W.call(Z,N,q)}catch(I){if(!B(I))throw I}}}function U(W){if(!W)return W;return function(N,q,I,H){return W.call(Z,N,q,I,function(G){if(B(G))G=null;if(H)H.apply(this,arguments)})}}function z(W){if(!W)return W;return function(N,q,I){try{return W.call(Z,N,q,I)}catch(H){if(!B(H))throw H}}}function $(W){if(!W)return W;return function(N,q,I){if(typeof q==="function")I=q,q=null;function H(G,E){if(E){if(E.uid<0)E.uid+=4294967296;if(E.gid<0)E.gid+=4294967296}if(I)I.apply(this,arguments)}return q?W.call(Z,N,q,H):W.call(Z,N,H)}}function V(W){if(!W)return W;return function(N,q){var I=q?W.call(Z,N,q):W.call(Z,N);if(I){if(I.uid<0)I.uid+=4294967296;if(I.gid<0)I.gid+=4294967296}return I}}function B(W){if(!W)return!0;if(W.code==="ENOSYS")return!0;var N=!process.getuid||process.getuid()!==0;if(N){if(W.code==="EINVAL"||W.code==="EPERM")return!0}return!1}},M8=import.meta.require("constants"),Oz=process.cwd,J5=null,Rz=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!J5)J5=Oz.call(process);return J5};try{process.cwd()}catch(Z){}if(typeof process.chdir==="function"){if(V7=process.chdir,process.chdir=function(Z){J5=null,V7.call(process,Z)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,V7)}var V7;eJ.exports=Cz});var Q1=O((iI,X1)=>{var Az=function(Z){return{ReadStream:J,WriteStream:X};function J(Q,Y){if(!(this instanceof J))return new J(Q,Y);J1.call(this);var U=this;this.path=Q,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,Y=Y||{};var z=Object.keys(Y);for(var $=0,V=z.length;$this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){U._read()});return}Z.open(this.path,this.flags,this.mode,function(W,N){if(W){U.emit("error",W),U.readable=!1;return}U.fd=N,U.emit("open",N),U._read()})}function X(Q,Y){if(!(this instanceof X))return new X(Q,Y);J1.call(this),this.path=Q,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,Y=Y||{};var U=Object.keys(Y);for(var z=0,$=U.length;z<$;z++){var V=U[z];this[V]=Y[V]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=Z.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}},J1=import.meta.require("stream").Stream;X1.exports=Az});var U1=O((oI,Y1)=>{var Sz=function(Z){if(Z===null||typeof Z!=="object")return Z;if(Z instanceof Object)var J={__proto__:_z(Z)};else var J=Object.create(null);return Object.getOwnPropertyNames(Z).forEach(function(X){Object.defineProperty(J,X,Object.getOwnPropertyDescriptor(Z,X))}),J};Y1.exports=Sz;var _z=Object.getPrototypeOf||function(Z){return Z.__proto__}});var x0=O((aI,q7)=>{var bz=function(){},V1=function(Z,J){Object.defineProperty(Z,E0,{get:function(){return J}})},B7=function(Z){xz(Z),Z.gracefulify=B7,Z.createReadStream=l,Z.createWriteStream=J0;var J=Z.readFile;Z.readFile=X;function X(R,p,L){if(typeof p==="function")L=p,p=null;return C(R,p,L);function C(_,y,F,D){return J(_,y,function(u){if(u&&(u.code==="EMFILE"||u.code==="ENFILE"))U6([C,[_,y,F],u,D||Date.now(),Date.now()]);else if(typeof F==="function")F.apply(this,arguments)})}}var Q=Z.writeFile;Z.writeFile=Y;function Y(R,p,L,C){if(typeof L==="function")C=L,L=null;return _(R,p,L,C);function _(y,F,D,u,f){return Q(y,F,D,function(e){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var U=Z.appendFile;if(U)Z.appendFile=z;function z(R,p,L,C){if(typeof L==="function")C=L,L=null;return _(R,p,L,C);function _(y,F,D,u,f){return U(y,F,D,function(e){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var $=Z.copyFile;if($)Z.copyFile=V;function V(R,p,L,C){if(typeof L==="function")C=L,L=0;return _(R,p,L,C);function _(y,F,D,u,f){return $(y,F,D,function(e){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}var B=Z.readdir;Z.readdir=N;var W=/^v[0-5]\./;function N(R,p,L){if(typeof p==="function")L=p,p=null;var C=W.test(process.version)?function y(F,D,u,f){return B(F,_(F,D,u,f))}:function y(F,D,u,f){return B(F,D,_(F,D,u,f))};return C(R,p,L);function _(y,F,D,u){return function(f,e){if(f&&(f.code==="EMFILE"||f.code==="ENFILE"))U6([C,[y,F,D],f,u||Date.now(),Date.now()]);else{if(e&&e.sort)e.sort();if(typeof D==="function")D.call(this,f,e)}}}}if(process.version.substr(0,4)==="v0.8"){var q=vz(Z);P=q.ReadStream,k=q.WriteStream}var I=Z.ReadStream;if(I)P.prototype=Object.create(I.prototype),P.prototype.open=S;var H=Z.WriteStream;if(H)k.prototype=Object.create(H.prototype),k.prototype.open=b;Object.defineProperty(Z,"ReadStream",{get:function(){return P},set:function(R){P=R},enumerable:!0,configurable:!0}),Object.defineProperty(Z,"WriteStream",{get:function(){return k},set:function(R){k=R},enumerable:!0,configurable:!0});var G=P;Object.defineProperty(Z,"FileReadStream",{get:function(){return G},set:function(R){G=R},enumerable:!0,configurable:!0});var E=k;Object.defineProperty(Z,"FileWriteStream",{get:function(){return E},set:function(R){E=R},enumerable:!0,configurable:!0});function P(R,p){if(this instanceof P)return I.apply(this,arguments),this;else return P.apply(Object.create(P.prototype),arguments)}function S(){var R=this;g(R.path,R.flags,R.mode,function(p,L){if(p){if(R.autoClose)R.destroy();R.emit("error",p)}else R.fd=L,R.emit("open",L),R.read()})}function k(R,p){if(this instanceof k)return H.apply(this,arguments),this;else return k.apply(Object.create(k.prototype),arguments)}function b(){var R=this;g(R.path,R.flags,R.mode,function(p,L){if(p)R.destroy(),R.emit("error",p);else R.fd=L,R.emit("open",L)})}function l(R,p){return new Z.ReadStream(R,p)}function J0(R,p){return new Z.WriteStream(R,p)}var d=Z.open;Z.open=g;function g(R,p,L,C){if(typeof L==="function")C=L,L=null;return _(R,p,L,C);function _(y,F,D,u,f){return d(y,F,D,function(e,Y0){if(e&&(e.code==="EMFILE"||e.code==="ENFILE"))U6([_,[y,F,D,u],e,f||Date.now(),Date.now()]);else if(typeof u==="function")u.apply(this,arguments)})}}return Z},U6=function(Z){c8("ENQUEUE",Z[0].name,Z[1]),N0[E0].push(Z),W7()},$1=function(){var Z=Date.now();for(var J=0;J2)N0[E0][J][3]=Z,N0[E0][J][4]=Z;W7()},W7=function(){if(clearTimeout(Q5),Q5=void 0,N0[E0].length===0)return;var Z=N0[E0].shift(),J=Z[0],X=Z[1],Q=Z[2],Y=Z[3],U=Z[4];if(Y===void 0)c8("RETRY",J.name,X),J.apply(null,X);else if(Date.now()-Y>=60000){c8("TIMEOUT",J.name,X);var z=X.pop();if(typeof z==="function")z.call(null,Q)}else{var $=Date.now()-U,V=Math.max(U-Y,1),B=Math.min(V*1.2,100);if($>=B)c8("RETRY",J.name,X),J.apply(null,X.concat([Y]));else N0[E0].push(Z)}if(Q5===void 0)Q5=setTimeout(W7,0)},N0=import.meta.require("fs"),xz=Z1(),vz=Q1(),hz=U1(),X5=import.meta.require("util"),E0,Y5;if(typeof Symbol==="function"&&typeof Symbol.for==="function")E0=Symbol.for("graceful-fs.queue"),Y5=Symbol.for("graceful-fs.previous");else E0="___graceful-fs.queue",Y5="___graceful-fs.previous";var c8=bz;if(X5.debuglog)c8=X5.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))c8=function(){var Z=X5.format.apply(X5,arguments);Z="GFS4: "+Z.split(/\n/).join("\nGFS4: "),console.error(Z)};if(!N0[E0]){if(z1=global[E0]||[],V1(N0,z1),N0.close=function(Z){function J(X,Q){return Z.call(N0,X,function(Y){if(!Y)$1();if(typeof Q==="function")Q.apply(this,arguments)})}return Object.defineProperty(J,Y5,{value:Z}),J}(N0.close),N0.closeSync=function(Z){function J(X){Z.apply(N0,arguments),$1()}return Object.defineProperty(J,Y5,{value:Z}),J}(N0.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){c8(N0[E0]),import.meta.require("assert").equal(N0[E0].length,0)})}var z1;if(!global[E0])V1(global,N0[E0]);q7.exports=B7(hz(N0));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!N0.__patched)q7.exports=B7(N0),N0.__patched=!0;var Q5});var l8=O((K7)=>{var B1=S0().fromCallback,R0=x0(),kz=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((Z)=>{return typeof R0[Z]==="function"});Object.assign(K7,R0);kz.forEach((Z)=>{K7[Z]=B1(R0[Z])});K7.exists=function(Z,J){if(typeof J==="function")return R0.exists(Z,J);return new Promise((X)=>{return R0.exists(Z,X)})};K7.read=function(Z,J,X,Q,Y,U){if(typeof U==="function")return R0.read(Z,J,X,Q,Y,U);return new Promise((z,$)=>{R0.read(Z,J,X,Q,Y,(V,B,W)=>{if(V)return $(V);z({bytesRead:B,buffer:W})})})};K7.write=function(Z,J,...X){if(typeof X[X.length-1]==="function")return R0.write(Z,J,...X);return new Promise((Q,Y)=>{R0.write(Z,J,...X,(U,z,$)=>{if(U)return Y(U);Q({bytesWritten:z,buffer:$})})})};K7.readv=function(Z,J,...X){if(typeof X[X.length-1]==="function")return R0.readv(Z,J,...X);return new Promise((Q,Y)=>{R0.readv(Z,J,...X,(U,z,$)=>{if(U)return Y(U);Q({bytesRead:z,buffers:$})})})};K7.writev=function(Z,J,...X){if(typeof X[X.length-1]==="function")return R0.writev(Z,J,...X);return new Promise((Q,Y)=>{R0.writev(Z,J,...X,(U,z,$)=>{if(U)return Y(U);Q({bytesWritten:z,buffers:$})})})};if(typeof R0.realpath.native==="function")K7.realpath.native=B1(R0.realpath.native);else process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var q1=O((cz,W1)=>{var dz=import.meta.require("path");cz.checkPath=function Z(J){if(process.platform==="win32"){if(/[<>:"|?*]/.test(J.replace(dz.parse(J).root,""))){const Q=new Error(`Path contains invalid characters: ${J}`);throw Q.code="EINVAL",Q}}}});var H1=O((pz,N7)=>{var K1=l8(),{checkPath:N1}=q1(),G1=(Z)=>{const J={mode:511};if(typeof Z==="number")return Z;return{...J,...Z}.mode};pz.makeDir=async(Z,J)=>{return N1(Z),K1.mkdir(Z,{mode:G1(J),recursive:!0})};pz.makeDirSync=(Z,J)=>{return N1(Z),K1.mkdirSync(Z,{mode:G1(J),recursive:!0})}});var e0=O((tI,I1)=>{var oz=S0().fromPromise,{makeDir:az,makeDirSync:G7}=H1(),H7=oz(az);I1.exports={mkdirs:H7,mkdirsSync:G7,mkdirp:H7,mkdirpSync:G7,ensureDir:H7,ensureDirSync:G7}});var L8=O((eI,L1)=>{var sz=function(Z){return M1.access(Z).then(()=>!0).catch(()=>!1)},rz=S0().fromPromise,M1=l8();L1.exports={pathExists:rz(sz),pathExistsSync:M1.existsSync}});var I7=O((ZM,F1)=>{var tz=function(Z,J,X,Q){z6.open(Z,"r+",(Y,U)=>{if(Y)return Q(Y);z6.futimes(U,J,X,(z)=>{z6.close(U,($)=>{if(Q)Q(z||$)})})})},ez=function(Z,J,X){const Q=z6.openSync(Z,"r+");return z6.futimesSync(Q,J,X),z6.closeSync(Q)},z6=x0();F1.exports={utimesMillis:tz,utimesMillisSync:ez}});var p8=O((JM,T1)=>{var J$=function(Z,J,X){const Q=X.dereference?(Y)=>$6.stat(Y,{bigint:!0}):(Y)=>$6.lstat(Y,{bigint:!0});return Promise.all([Q(Z),Q(J).catch((Y)=>{if(Y.code==="ENOENT")return null;throw Y})]).then(([Y,U])=>({srcStat:Y,destStat:U}))},X$=function(Z,J,X){let Q;const Y=X.dereference?(z)=>$6.statSync(z,{bigint:!0}):(z)=>$6.lstatSync(z,{bigint:!0}),U=Y(Z);try{Q=Y(J)}catch(z){if(z.code==="ENOENT")return{srcStat:U,destStat:null};throw z}return{srcStat:U,destStat:Q}},Q$=function(Z,J,X,Q,Y){Z$.callbackify(J$)(Z,J,Q,(U,z)=>{if(U)return Y(U);const{srcStat:$,destStat:V}=z;if(V){if(D6($,V)){const B=D0.basename(Z),W=D0.basename(J);if(X==="move"&&B!==W&&B.toLowerCase()===W.toLowerCase())return Y(null,{srcStat:$,destStat:V,isChangingCase:!0});return Y(new Error("Source and destination must not be the same."))}if($.isDirectory()&&!V.isDirectory())return Y(new Error(`Cannot overwrite non-directory '${J}' with directory '${Z}'.`));if(!$.isDirectory()&&V.isDirectory())return Y(new Error(`Cannot overwrite directory '${J}' with non-directory '${Z}'.`))}if($.isDirectory()&&M7(Z,J))return Y(new Error(U5(Z,J,X)));return Y(null,{srcStat:$,destStat:V})})},Y$=function(Z,J,X,Q){const{srcStat:Y,destStat:U}=X$(Z,J,Q);if(U){if(D6(Y,U)){const z=D0.basename(Z),$=D0.basename(J);if(X==="move"&&z!==$&&z.toLowerCase()===$.toLowerCase())return{srcStat:Y,destStat:U,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(Y.isDirectory()&&!U.isDirectory())throw new Error(`Cannot overwrite non-directory '${J}' with directory '${Z}'.`);if(!Y.isDirectory()&&U.isDirectory())throw new Error(`Cannot overwrite directory '${J}' with non-directory '${Z}'.`)}if(Y.isDirectory()&&M7(Z,J))throw new Error(U5(Z,J,X));return{srcStat:Y,destStat:U}},j1=function(Z,J,X,Q,Y){const U=D0.resolve(D0.dirname(Z)),z=D0.resolve(D0.dirname(X));if(z===U||z===D0.parse(z).root)return Y();$6.stat(z,{bigint:!0},($,V)=>{if($){if($.code==="ENOENT")return Y();return Y($)}if(D6(J,V))return Y(new Error(U5(Z,X,Q)));return j1(Z,J,z,Q,Y)})},D1=function(Z,J,X,Q){const Y=D0.resolve(D0.dirname(Z)),U=D0.resolve(D0.dirname(X));if(U===Y||U===D0.parse(U).root)return;let z;try{z=$6.statSync(U,{bigint:!0})}catch($){if($.code==="ENOENT")return;throw $}if(D6(J,z))throw new Error(U5(Z,X,Q));return D1(Z,J,U,Q)},D6=function(Z,J){return J.ino&&J.dev&&J.ino===Z.ino&&J.dev===Z.dev},M7=function(Z,J){const X=D0.resolve(Z).split(D0.sep).filter((Y)=>Y),Q=D0.resolve(J).split(D0.sep).filter((Y)=>Y);return X.reduce((Y,U,z)=>Y&&Q[z]===U,!0)},U5=function(Z,J,X){return`Cannot ${X} '${Z}' to a subdirectory of itself, '${J}'.`},$6=l8(),D0=import.meta.require("path"),Z$=import.meta.require("util");T1.exports={checkPaths:Q$,checkPathsSync:Y$,checkParentPaths:j1,checkParentPathsSync:D1,isSrcSubdir:M7,areIdentical:D6}});var C1=O((XM,R1)=>{var V$=function(Z,J,X,Q){if(typeof X==="function"&&!Q)Q=X,X={};else if(typeof X==="function")X={filter:X};if(Q=Q||function(){},X=X||{},X.clobber=("clobber"in X)?!!X.clobber:!0,X.overwrite=("overwrite"in X)?!!X.overwrite:X.clobber,X.preserveTimestamps&&process.arch==="ia32")process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269","Warning","fs-extra-WARN0001");E6.checkPaths(Z,J,"copy",X,(Y,U)=>{if(Y)return Q(Y);const{srcStat:z,destStat:$}=U;E6.checkParentPaths(Z,z,J,"copy",(V)=>{if(V)return Q(V);P1(Z,J,X,(B,W)=>{if(B)return Q(B);if(!W)return Q();B$($,Z,J,X,Q)})})})},B$=function(Z,J,X,Q,Y){const U=T6.dirname(X);z$(U,(z,$)=>{if(z)return Y(z);if($)return L7(Z,J,X,Q,Y);U$(U,(V)=>{if(V)return Y(V);return L7(Z,J,X,Q,Y)})})},P1=function(Z,J,X,Q){if(!X.filter)return Q(null,!0);Promise.resolve(X.filter(Z,J)).then((Y)=>Q(null,Y),(Y)=>Q(Y))},L7=function(Z,J,X,Q,Y){(Q.dereference?v0.stat:v0.lstat)(J,(z,$)=>{if(z)return Y(z);if($.isDirectory())return I$($,Z,J,X,Q,Y);else if($.isFile()||$.isCharacterDevice()||$.isBlockDevice())return W$($,Z,J,X,Q,Y);else if($.isSymbolicLink())return F$(Z,J,X,Q,Y);else if($.isSocket())return Y(new Error(`Cannot copy a socket file: ${J}`));else if($.isFIFO())return Y(new Error(`Cannot copy a FIFO pipe: ${J}`));return Y(new Error(`Unknown file: ${J}`))})},W$=function(Z,J,X,Q,Y,U){if(!J)return w1(Z,X,Q,Y,U);return q$(Z,X,Q,Y,U)},q$=function(Z,J,X,Q,Y){if(Q.overwrite)v0.unlink(X,(U)=>{if(U)return Y(U);return w1(Z,J,X,Q,Y)});else if(Q.errorOnExist)return Y(new Error(`'${X}' already exists`));else return Y()},w1=function(Z,J,X,Q,Y){v0.copyFile(J,X,(U)=>{if(U)return Y(U);if(Q.preserveTimestamps)return K$(Z.mode,J,X,Y);return z5(X,Z.mode,Y)})},K$=function(Z,J,X,Q){if(N$(Z))return G$(X,Z,(Y)=>{if(Y)return Q(Y);return E1(Z,J,X,Q)});return E1(Z,J,X,Q)},N$=function(Z){return(Z&128)===0},G$=function(Z,J,X){return z5(Z,J|128,X)},E1=function(Z,J,X,Q){H$(J,X,(Y)=>{if(Y)return Q(Y);return z5(X,Z,Q)})},z5=function(Z,J,X){return v0.chmod(Z,J,X)},H$=function(Z,J,X){v0.stat(Z,(Q,Y)=>{if(Q)return X(Q);return $$(J,Y.atime,Y.mtime,X)})},I$=function(Z,J,X,Q,Y,U){if(!J)return M$(Z.mode,X,Q,Y,U);return O1(X,Q,Y,U)},M$=function(Z,J,X,Q,Y){v0.mkdir(X,(U)=>{if(U)return Y(U);O1(J,X,Q,(z)=>{if(z)return Y(z);return z5(X,Z,Y)})})},O1=function(Z,J,X,Q){v0.readdir(Z,(Y,U)=>{if(Y)return Q(Y);return F7(U,Z,J,X,Q)})},F7=function(Z,J,X,Q,Y){const U=Z.pop();if(!U)return Y();return L$(Z,U,J,X,Q,Y)},L$=function(Z,J,X,Q,Y,U){const z=T6.join(X,J),$=T6.join(Q,J);P1(z,$,Y,(V,B)=>{if(V)return U(V);if(!B)return F7(Z,X,Q,Y,U);E6.checkPaths(z,$,"copy",Y,(W,N)=>{if(W)return U(W);const{destStat:q}=N;L7(q,z,$,Y,(I)=>{if(I)return U(I);return F7(Z,X,Q,Y,U)})})})},F$=function(Z,J,X,Q,Y){v0.readlink(J,(U,z)=>{if(U)return Y(U);if(Q.dereference)z=T6.resolve(process.cwd(),z);if(!Z)return v0.symlink(z,X,Y);else v0.readlink(X,($,V)=>{if($){if($.code==="EINVAL"||$.code==="UNKNOWN")return v0.symlink(z,X,Y);return Y($)}if(Q.dereference)V=T6.resolve(process.cwd(),V);if(E6.isSrcSubdir(z,V))return Y(new Error(`Cannot copy '${z}' to a subdirectory of itself, '${V}'.`));if(E6.isSrcSubdir(V,z))return Y(new Error(`Cannot overwrite '${V}' with '${z}'.`));return j$(z,X,Y)})})},j$=function(Z,J,X){v0.unlink(J,(Q)=>{if(Q)return X(Q);return v0.symlink(Z,J,X)})},v0=x0(),T6=import.meta.require("path"),U$=e0().mkdirs,z$=L8().pathExists,$$=I7().utimesMillis,E6=p8();R1.exports=V$});var v1=O((QM,x1)=>{var E$=function(Z,J,X){if(typeof X==="function")X={filter:X};if(X=X||{},X.clobber=("clobber"in X)?!!X.clobber:!0,X.overwrite=("overwrite"in X)?!!X.overwrite:X.clobber,X.preserveTimestamps&&process.arch==="ia32")process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269","Warning","fs-extra-WARN0002");const{srcStat:Q,destStat:Y}=w6.checkPathsSync(Z,J,"copy",X);if(w6.checkParentPathsSync(Z,Q,J,"copy"),X.filter&&!X.filter(Z,J))return;const U=P6.dirname(J);if(!C0.existsSync(U))D$(U);return A1(Y,Z,J,X)},A1=function(Z,J,X,Q){const U=(Q.dereference?C0.statSync:C0.lstatSync)(J);if(U.isDirectory())return _$(U,Z,J,X,Q);else if(U.isFile()||U.isCharacterDevice()||U.isBlockDevice())return P$(U,Z,J,X,Q);else if(U.isSymbolicLink())return v$(Z,J,X,Q);else if(U.isSocket())throw new Error(`Cannot copy a socket file: ${J}`);else if(U.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${J}`);throw new Error(`Unknown file: ${J}`)},P$=function(Z,J,X,Q,Y){if(!J)return _1(Z,X,Q,Y);return w$(Z,X,Q,Y)},w$=function(Z,J,X,Q){if(Q.overwrite)return C0.unlinkSync(X),_1(Z,J,X,Q);else if(Q.errorOnExist)throw new Error(`'${X}' already exists`)},_1=function(Z,J,X,Q){if(C0.copyFileSync(J,X),Q.preserveTimestamps)O$(Z.mode,J,X);return j7(X,Z.mode)},O$=function(Z,J,X){if(R$(Z))C$(X,Z);return A$(J,X)},R$=function(Z){return(Z&128)===0},C$=function(Z,J){return j7(Z,J|128)},j7=function(Z,J){return C0.chmodSync(Z,J)},A$=function(Z,J){const X=C0.statSync(Z);return T$(J,X.atime,X.mtime)},_$=function(Z,J,X,Q,Y){if(!J)return S$(Z.mode,X,Q,Y);return S1(X,Q,Y)},S$=function(Z,J,X,Q){return C0.mkdirSync(X),S1(J,X,Q),j7(X,Z)},S1=function(Z,J,X){C0.readdirSync(Z).forEach((Q)=>x$(Q,Z,J,X))},x$=function(Z,J,X,Q){const Y=P6.join(J,Z),U=P6.join(X,Z);if(Q.filter&&!Q.filter(Y,U))return;const{destStat:z}=w6.checkPathsSync(Y,U,"copy",Q);return A1(z,Y,U,Q)},v$=function(Z,J,X,Q){let Y=C0.readlinkSync(J);if(Q.dereference)Y=P6.resolve(process.cwd(),Y);if(!Z)return C0.symlinkSync(Y,X);else{let U;try{U=C0.readlinkSync(X)}catch(z){if(z.code==="EINVAL"||z.code==="UNKNOWN")return C0.symlinkSync(Y,X);throw z}if(Q.dereference)U=P6.resolve(process.cwd(),U);if(w6.isSrcSubdir(Y,U))throw new Error(`Cannot copy '${Y}' to a subdirectory of itself, '${U}'.`);if(w6.isSrcSubdir(U,Y))throw new Error(`Cannot overwrite '${U}' with '${Y}'.`);return h$(Y,X)}},h$=function(Z,J){return C0.unlinkSync(J),C0.symlinkSync(Z,J)},C0=x0(),P6=import.meta.require("path"),D$=e0().mkdirsSync,T$=I7().utimesMillisSync,w6=p8();x1.exports=E$});var $5=O((YM,h1)=>{var b$=S0().fromCallback;h1.exports={copy:b$(C1()),copySync:v1()}});var O6=O((UM,k1)=>{var y$=function(Z,J){b1.rm(Z,{recursive:!0,force:!0},J)},u$=function(Z){b1.rmSync(Z,{recursive:!0,force:!0})},b1=x0(),k$=S0().fromCallback;k1.exports={remove:k$(y$),removeSync:u$}});var l1=O((zM,c1)=>{var u1=function(Z){let J;try{J=f1.readdirSync(Z)}catch{return g1.mkdirsSync(Z)}J.forEach((X)=>{X=m1.join(Z,X),d1.removeSync(X)})},f$=S0().fromPromise,f1=l8(),m1=import.meta.require("path"),g1=e0(),d1=O6(),y1=f$(async function Z(J){let X;try{X=await f1.readdir(J)}catch{return g1.mkdirs(J)}return Promise.all(X.map((Q)=>d1.remove(m1.join(J,Q))))});c1.exports={emptyDirSync:u1,emptydirSync:u1,emptyDir:y1,emptydir:y1}});var o1=O(($M,i1)=>{var g$=function(Z,J){function X(){F8.writeFile(Z,"",(Q)=>{if(Q)return J(Q);J()})}F8.stat(Z,(Q,Y)=>{if(!Q&&Y.isFile())return J();const U=p1.dirname(Z);F8.stat(U,(z,$)=>{if(z){if(z.code==="ENOENT")return n1.mkdirs(U,(V)=>{if(V)return J(V);X()});return J(z)}if($.isDirectory())X();else F8.readdir(U,(V)=>{if(V)return J(V)})})})},d$=function(Z){let J;try{J=F8.statSync(Z)}catch{}if(J&&J.isFile())return;const X=p1.dirname(Z);try{if(!F8.statSync(X).isDirectory())F8.readdirSync(X)}catch(Q){if(Q&&Q.code==="ENOENT")n1.mkdirsSync(X);else throw Q}F8.writeFileSync(Z,"")},m$=S0().fromCallback,p1=import.meta.require("path"),F8=x0(),n1=e0();i1.exports={createFile:m$(g$),createFileSync:d$}});var e1=O((VM,t1)=>{var p$=function(Z,J,X){function Q(Y,U){j8.link(Y,U,(z)=>{if(z)return X(z);X(null)})}j8.lstat(J,(Y,U)=>{j8.lstat(Z,(z,$)=>{if(z)return z.message=z.message.replace("lstat","ensureLink"),X(z);if(U&&s1($,U))return X(null);const V=a1.dirname(J);l$(V,(B,W)=>{if(B)return X(B);if(W)return Q(Z,J);r1.mkdirs(V,(N)=>{if(N)return X(N);Q(Z,J)})})})})},n$=function(Z,J){let X;try{X=j8.lstatSync(J)}catch{}try{const U=j8.lstatSync(Z);if(X&&s1(U,X))return}catch(U){throw U.message=U.message.replace("lstat","ensureLink"),U}const Q=a1.dirname(J);if(j8.existsSync(Q))return j8.linkSync(Z,J);return r1.mkdirsSync(Q),j8.linkSync(Z,J)},c$=S0().fromCallback,a1=import.meta.require("path"),j8=x0(),r1=e0(),l$=L8().pathExists,{areIdentical:s1}=p8();t1.exports={createLink:c$(p$),createLinkSync:n$}});var J4=O((BM,Z4)=>{var o$=function(Z,J,X){if(D8.isAbsolute(Z))return R6.lstat(Z,(Q)=>{if(Q)return Q.message=Q.message.replace("lstat","ensureSymlink"),X(Q);return X(null,{toCwd:Z,toDst:Z})});else{const Q=D8.dirname(J),Y=D8.join(Q,Z);return i$(Y,(U,z)=>{if(U)return X(U);if(z)return X(null,{toCwd:Y,toDst:Z});else return R6.lstat(Z,($)=>{if($)return $.message=$.message.replace("lstat","ensureSymlink"),X($);return X(null,{toCwd:Z,toDst:D8.relative(Q,Z)})})})}},a$=function(Z,J){let X;if(D8.isAbsolute(Z)){if(X=R6.existsSync(Z),!X)throw new Error("absolute srcpath does not exist");return{toCwd:Z,toDst:Z}}else{const Q=D8.dirname(J),Y=D8.join(Q,Z);if(X=R6.existsSync(Y),X)return{toCwd:Y,toDst:Z};else{if(X=R6.existsSync(Z),!X)throw new Error("relative srcpath does not exist");return{toCwd:Z,toDst:D8.relative(Q,Z)}}}},D8=import.meta.require("path"),R6=x0(),i$=L8().pathExists;Z4.exports={symlinkPaths:o$,symlinkPathsSync:a$}});var Y4=O((WM,Q4)=>{var r$=function(Z,J,X){if(X=typeof J==="function"?J:X,J=typeof J==="function"?!1:J,J)return X(null,J);X4.lstat(Z,(Q,Y)=>{if(Q)return X(null,"file");J=Y&&Y.isDirectory()?"dir":"file",X(null,J)})},s$=function(Z,J){let X;if(J)return J;try{X=X4.lstatSync(Z)}catch{return"file"}return X&&X.isDirectory()?"dir":"file"},X4=x0();Q4.exports={symlinkType:r$,symlinkTypeSync:s$}});var K4=O((qM,q4)=>{var z2=function(Z,J,X,Q){Q=typeof X==="function"?X:Q,X=typeof X==="function"?!1:X,Z8.lstat(J,(Y,U)=>{if(!Y&&U.isSymbolicLink())Promise.all([Z8.stat(Z),Z8.stat(J)]).then(([z,$])=>{if(W4(z,$))return Q(null);U4(Z,J,X,Q)});else U4(Z,J,X,Q)})},U4=function(Z,J,X,Q){J2(Z,J,(Y,U)=>{if(Y)return Q(Y);Z=U.toDst,Q2(U.toCwd,X,(z,$)=>{if(z)return Q(z);const V=z4.dirname(J);U2(V,(B,W)=>{if(B)return Q(B);if(W)return Z8.symlink(Z,J,$,Q);e$(V,(N)=>{if(N)return Q(N);Z8.symlink(Z,J,$,Q)})})})})},$2=function(Z,J,X){let Q;try{Q=Z8.lstatSync(J)}catch{}if(Q&&Q.isSymbolicLink()){const $=Z8.statSync(Z),V=Z8.statSync(J);if(W4($,V))return}const Y=X2(Z,J);Z=Y.toDst,X=Y2(Y.toCwd,X);const U=z4.dirname(J);if(Z8.existsSync(U))return Z8.symlinkSync(Z,J,X);return Z2(U),Z8.symlinkSync(Z,J,X)},t$=S0().fromCallback,z4=import.meta.require("path"),Z8=l8(),$4=e0(),e$=$4.mkdirs,Z2=$4.mkdirsSync,V4=J4(),J2=V4.symlinkPaths,X2=V4.symlinkPathsSync,B4=Y4(),Q2=B4.symlinkType,Y2=B4.symlinkTypeSync,U2=L8().pathExists,{areIdentical:W4}=p8();q4.exports={createSymlink:t$(z2),createSymlinkSync:$2}});var j4=O((KM,F4)=>{var{createFile:N4,createFileSync:G4}=o1(),{createLink:H4,createLinkSync:I4}=e1(),{createSymlink:M4,createSymlinkSync:L4}=K4();F4.exports={createFile:N4,createFileSync:G4,ensureFile:N4,ensureFileSync:G4,createLink:H4,createLinkSync:I4,ensureLink:H4,ensureLinkSync:I4,createSymlink:M4,createSymlinkSync:L4,ensureSymlink:M4,ensureSymlinkSync:L4}});var V5=O((NM,D4)=>{var V2=function(Z,{EOL:J="\n",finalEOL:X=!0,replacer:Q=null,spaces:Y}={}){const U=X?J:"";return JSON.stringify(Z,Q,Y).replace(/\n/g,J)+U},B2=function(Z){if(Buffer.isBuffer(Z))Z=Z.toString("utf8");return Z.replace(/^\uFEFF/,"")};D4.exports={stringify:V2,stripBom:B2}});var w4=O((GM,P4)=>{async function W2(Z,J={}){if(typeof J==="string")J={encoding:J};const X=J.fs||V6,Q="throws"in J?J.throws:!0;let Y=await B5.fromCallback(X.readFile)(Z,J);Y=E4(Y);let U;try{U=JSON.parse(Y,J?J.reviver:null)}catch(z){if(Q)throw z.message=`${Z}: ${z.message}`,z;else return null}return U}var K2=function(Z,J={}){if(typeof J==="string")J={encoding:J};const X=J.fs||V6,Q="throws"in J?J.throws:!0;try{let Y=X.readFileSync(Z,J);return Y=E4(Y),JSON.parse(Y,J.reviver)}catch(Y){if(Q)throw Y.message=`${Z}: ${Y.message}`,Y;else return null}};async function N2(Z,J,X={}){const Q=X.fs||V6,Y=T4(J,X);await B5.fromCallback(Q.writeFile)(Z,Y,X)}var H2=function(Z,J,X={}){const Q=X.fs||V6,Y=T4(J,X);return Q.writeFileSync(Z,Y,X)},V6;try{V6=x0()}catch(Z){V6=import.meta.require("fs")}var B5=S0(),{stringify:T4,stripBom:E4}=V5(),q2=B5.fromPromise(W2),G2=B5.fromPromise(N2),I2={readFile:q2,readFileSync:K2,writeFile:G2,writeFileSync:H2};P4.exports=I2});var R4=O((HM,O4)=>{var W5=w4();O4.exports={readJson:W5.readFile,readJsonSync:W5.readFileSync,writeJson:W5.writeFile,writeJsonSync:W5.writeFileSync}});var q5=O((IM,_4)=>{var F2=function(Z,J,X,Q){if(typeof X==="function")Q=X,X="utf8";const Y=C4.dirname(Z);L2(Y,(U,z)=>{if(U)return Q(U);if(z)return C6.writeFile(Z,J,X,Q);A4.mkdirs(Y,($)=>{if($)return Q($);C6.writeFile(Z,J,X,Q)})})},j2=function(Z,...J){const X=C4.dirname(Z);if(C6.existsSync(X))return C6.writeFileSync(Z,...J);A4.mkdirsSync(X),C6.writeFileSync(Z,...J)},M2=S0().fromCallback,C6=x0(),C4=import.meta.require("path"),A4=e0(),L2=L8().pathExists;_4.exports={outputFile:M2(F2),outputFileSync:j2}});var x4=O((MM,S4)=>{async function E2(Z,J,X={}){const Q=D2(J,X);await T2(Z,Q,X)}var{stringify:D2}=V5(),{outputFile:T2}=q5();S4.exports=E2});var h4=O((LM,v4)=>{var O2=function(Z,J,X){const Q=P2(J,X);w2(Z,Q,X)},{stringify:P2}=V5(),{outputFileSync:w2}=q5();v4.exports=O2});var k4=O((FM,b4)=>{var R2=S0().fromPromise,A0=R4();A0.outputJson=R2(x4());A0.outputJsonSync=h4();A0.outputJSON=A0.outputJson;A0.outputJSONSync=A0.outputJsonSync;A0.writeJSON=A0.writeJson;A0.writeJSONSync=A0.writeJsonSync;A0.readJSON=A0.readJson;A0.readJSONSync=A0.readJsonSync;b4.exports=A0});var g4=O((jM,m4)=>{var x2=function(Z,J,X,Q){if(typeof X==="function")Q=X,X={};X=X||{};const Y=X.overwrite||X.clobber||!1;y4.checkPaths(Z,J,"move",X,(U,z)=>{if(U)return Q(U);const{srcStat:$,isChangingCase:V=!1}=z;y4.checkParentPaths(Z,$,J,"move",(B)=>{if(B)return Q(B);if(v2(J))return u4(Z,J,Y,V,Q);_2(T7.dirname(J),(W)=>{if(W)return Q(W);return u4(Z,J,Y,V,Q)})})})},v2=function(Z){const J=T7.dirname(Z);return T7.parse(J).root===J},u4=function(Z,J,X,Q,Y){if(Q)return D7(Z,J,X,Y);if(X)return f4(J,(U)=>{if(U)return Y(U);return D7(Z,J,X,Y)});S2(J,(U,z)=>{if(U)return Y(U);if(z)return Y(new Error("dest already exists."));return D7(Z,J,X,Y)})},D7=function(Z,J,X,Q){C2.rename(Z,J,(Y)=>{if(!Y)return Q();if(Y.code!=="EXDEV")return Q(Y);return h2(Z,J,X,Q)})},h2=function(Z,J,X,Q){A2(Z,J,{overwrite:X,errorOnExist:!0,preserveTimestamps:!0},(U)=>{if(U)return Q(U);return f4(Z,Q)})},C2=x0(),T7=import.meta.require("path"),A2=$5().copy,f4=O6().remove,_2=e0().mkdirp,S2=L8().pathExists,y4=p8();m4.exports=x2});var n4=O((DM,p4)=>{var y2=function(Z,J,X){X=X||{};const Q=X.overwrite||X.clobber||!1,{srcStat:Y,isChangingCase:U=!1}=d4.checkPathsSync(Z,J,"move",X);if(d4.checkParentPathsSync(Z,Y,J,"move"),!u2(J))k2(P7.dirname(J));return f2(Z,J,Q,U)},u2=function(Z){const J=P7.dirname(Z);return P7.parse(J).root===J},f2=function(Z,J,X,Q){if(Q)return E7(Z,J,X);if(X)return l4(J),E7(Z,J,X);if(c4.existsSync(J))throw new Error("dest already exists.");return E7(Z,J,X)},E7=function(Z,J,X){try{c4.renameSync(Z,J)}catch(Q){if(Q.code!=="EXDEV")throw Q;return m2(Z,J,X)}},m2=function(Z,J,X){return b2(Z,J,{overwrite:X,errorOnExist:!0,preserveTimestamps:!0}),l4(Z)},c4=x0(),P7=import.meta.require("path"),b2=$5().copySync,l4=O6().removeSync,k2=e0().mkdirpSync,d4=p8();p4.exports=y2});var o4=O((TM,i4)=>{var g2=S0().fromCallback;i4.exports={move:g2(g4()),moveSync:n4()}});var w7=O((EM,a4)=>{a4.exports={...l8(),...$5(),...l1(),...j4(),...k4(),...e0(),...o4(),...q5(),...L8(),...O6()}});var t4=O((r4)=>{var d2=function(Z){return Z.reduce((J,X)=>[].concat(J,X),[])},c2=function(Z,J){const X=[[]];let Q=0;for(let Y of Z)if(J(Y))Q++,X[Q]=[];else X[Q].push(Y);return X};Object.defineProperty(r4,"__esModule",{value:!0});r4.splitWhen=r4.flatten=void 0;r4.flatten=d2;r4.splitWhen=c2});var J9=O((e4)=>{var p2=function(Z){return Z.code==="ENOENT"};Object.defineProperty(e4,"__esModule",{value:!0});e4.isEnoentCodeError=void 0;e4.isEnoentCodeError=p2});var U9=O((Q9)=>{var n2=function(Z,J){return new X9(Z,J)};Object.defineProperty(Q9,"__esModule",{value:!0});Q9.createDirentFromStats=void 0;class X9{constructor(Z,J){this.name=Z,this.isBlockDevice=J.isBlockDevice.bind(J),this.isCharacterDevice=J.isCharacterDevice.bind(J),this.isDirectory=J.isDirectory.bind(J),this.isFIFO=J.isFIFO.bind(J),this.isFile=J.isFile.bind(J),this.isSocket=J.isSocket.bind(J),this.isSymbolicLink=J.isSymbolicLink.bind(J)}}Q9.createDirentFromStats=n2});var q9=O((B9)=>{var ZV=function(Z){return Z.replace(/\\/g,"/")},JV=function(Z,J){return o2.resolve(Z,J)},XV=function(Z){if(Z.charAt(0)==="."){const J=Z.charAt(1);if(J==="/"||J==="\\")return Z.slice(a2)}return Z},O7=function(Z){return Z.replace(s2,"\\$2")},R7=function(Z){return Z.replace(r2,"\\$2")},$9=function(Z){return O7(Z).replace(t2,"//$1").replace(e2,"/")},V9=function(Z){return R7(Z)};Object.defineProperty(B9,"__esModule",{value:!0});B9.convertPosixPathToPattern=B9.convertWindowsPathToPattern=B9.convertPathToPattern=B9.escapePosixPath=B9.escapeWindowsPath=B9.escape=B9.removeLeadingDotSegment=B9.makeAbsolute=B9.unixify=void 0;var i2=import.meta.require("os"),o2=import.meta.require("path"),z9=i2.platform()==="win32",a2=2,r2=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,s2=/(\\?)([(){}]|^!|[!+@](?=\())/g,t2=/^\\\\([.?])/,e2=/\\(?![!()+@{}])/g;B9.unixify=ZV;B9.makeAbsolute=JV;B9.removeLeadingDotSegment=XV;B9.escape=z9?O7:R7;B9.escapeWindowsPath=O7;B9.escapePosixPath=R7;B9.convertPathToPattern=z9?$9:V9;B9.convertWindowsPathToPattern=$9;B9.convertPosixPathToPattern=V9});var N9=O((CM,K9)=>{/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */K9.exports=function Z(J){if(typeof J!=="string"||J==="")return!1;var X;while(X=/(\\).|([@?!+*]\(.*\))/g.exec(J)){if(X[2])return!0;J=J.slice(X.index+X[0].length)}return!1}});var I9=O((AM,H9)=>{/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */var qV=N9(),G9={"{":"}","(":")","[":"]"},KV=function(Z){if(Z[0]==="!")return!0;var J=0,X=-2,Q=-2,Y=-2,U=-2,z=-2;while(JJ){if(z===-1||z>Q)return!0;if(z=Z.indexOf("\\",J),z===-1||z>Q)return!0}}if(Y!==-1&&Z[J]==="{"&&Z[J+1]!=="}"){if(Y=Z.indexOf("}",J),Y>J){if(z=Z.indexOf("\\",J),z===-1||z>Y)return!0}}if(U!==-1&&Z[J]==="("&&Z[J+1]==="?"&&/[:!=]/.test(Z[J+2])&&Z[J+3]!==")"){if(U=Z.indexOf(")",J),U>J){if(z=Z.indexOf("\\",J),z===-1||z>U)return!0}}if(X!==-1&&Z[J]==="("&&Z[J+1]!=="|"){if(XX){if(z=Z.indexOf("\\",X),z===-1||z>U)return!0}}}if(Z[J]==="\\"){var $=Z[J+1];J+=2;var V=G9[$];if(V){var B=Z.indexOf(V,J);if(B!==-1)J=B+1}if(Z[J]==="!")return!0}else J++}return!1},NV=function(Z){if(Z[0]==="!")return!0;var J=0;while(J{var GV=I9(),HV=import.meta.require("path").posix.dirname,IV=import.meta.require("os").platform()==="win32",C7="/",MV=/\\/g,LV=/[\{\[].*[\}\]]$/,FV=/(^|[^\\])([\{\[]|\([^\)]+$)/,jV=/\\([\!\*\?\|\[\]\(\)\{\}])/g;M9.exports=function Z(J,X){var Q=Object.assign({flipBackslashes:!0},X);if(Q.flipBackslashes&&IV&&J.indexOf(C7)<0)J=J.replace(MV,C7);if(LV.test(J))J+=C7;J+="a";do J=HV(J);while(GV(J)||FV.test(J));return J.replace(jV,"$1")}});var K5=O((DV)=>{DV.isInteger=(Z)=>{if(typeof Z==="number")return Number.isInteger(Z);if(typeof Z==="string"&&Z.trim()!=="")return Number.isInteger(Number(Z));return!1};DV.find=(Z,J)=>Z.nodes.find((X)=>X.type===J);DV.exceedsLimit=(Z,J,X=1,Q)=>{if(Q===!1)return!1;if(!DV.isInteger(Z)||!DV.isInteger(J))return!1;return(Number(J)-Number(Z))/Number(X)>=Q};DV.escapeNode=(Z,J=0,X)=>{let Q=Z.nodes[J];if(!Q)return;if(X&&Q.type===X||Q.type==="open"||Q.type==="close"){if(Q.escaped!==!0)Q.value="\\"+Q.value,Q.escaped=!0}};DV.encloseBrace=(Z)=>{if(Z.type!=="brace")return!1;if(Z.commas>>0+Z.ranges>>0===0)return Z.invalid=!0,!0;return!1};DV.isInvalidBrace=(Z)=>{if(Z.type!=="brace")return!1;if(Z.invalid===!0||Z.dollar)return!0;if(Z.commas>>0+Z.ranges>>0===0)return Z.invalid=!0,!0;if(Z.open!==!0||Z.close!==!0)return Z.invalid=!0,!0;return!1};DV.isOpenOrClose=(Z)=>{if(Z.type==="open"||Z.type==="close")return!0;return Z.open===!0||Z.close===!0};DV.reduce=(Z)=>Z.reduce((J,X)=>{if(X.type==="text")J.push(X.value);if(X.type==="range")X.type="text";return J},[]);DV.flatten=(...Z)=>{const J=[],X=(Q)=>{for(let Y=0;Y{var F9=K5();j9.exports=(Z,J={})=>{let X=(Q,Y={})=>{let U=J.escapeInvalid&&F9.isInvalidBrace(Y),z=Q.invalid===!0&&J.escapeInvalid===!0,$="";if(Q.value){if((U||z)&&F9.isOpenOrClose(Q))return"\\"+Q.value;return Q.value}if(Q.value)return Q.value;if(Q.nodes)for(let V of Q.nodes)$+=X(V);return $};return X(Z)}});var T9=O((vM,D9)=>{/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */D9.exports=function(Z){if(typeof Z==="number")return Z-Z===0;if(typeof Z==="string"&&Z.trim()!=="")return Number.isFinite?Number.isFinite(+Z):isFinite(+Z);return!1}});var S9=O((hM,_9)=>{var _V=function(Z,J,X){let Q=_7(Z,J,"-",!1,X)||[],Y=_7(J,Z,"",!1,X)||[],U=_7(Z,J,"-?",!0,X)||[];return Q.concat(U).concat(Y).join("|")},SV=function(Z,J){let X=1,Q=1,Y=O9(Z,X),U=new Set([J]);while(Z<=Y&&Y<=J)U.add(Y),X+=1,Y=O9(Z,X);Y=R9(J+1,Q)-1;while(Z1)$.count.pop();$.count.push(W.count[0]),$.string=$.pattern+C9($.count),z=B+1;continue}if(X.isPadded)N=kV(B,X,Q);W.string=N+W.pattern+C9(W.count),U.push(W),z=B+1,$=W}return U},_7=function(Z,J,X,Q,Y){let U=[];for(let z of Z){let{string:$}=z;if(!Q&&!w9(J,"string",$))U.push(X+$);if(Q&&w9(J,"string",$))U.push(X+$)}return U},vV=function(Z,J){let X=[];for(let Q=0;QJ?1:J>Z?-1:0},w9=function(Z,J,X){return Z.some((Q)=>Q[J]===X)},O9=function(Z,J){return Number(String(Z).slice(0,-J)+"9".repeat(J))},R9=function(Z,J){return Z-Z%Math.pow(10,J)},C9=function(Z){let[J=0,X=""]=Z;if(X||J>1)return`{${J+(X?","+X:"")}}`;return""},bV=function(Z,J,X){return`[${Z}${J-Z===1?"":"-"}${J}]`},A9=function(Z){return/^-?(0+)\d/.test(Z)},kV=function(Z,J,X){if(!J.isPadded)return Z;let Q=Math.abs(J.maxLen-String(Z).length),Y=X.relaxZeros!==!1;switch(Q){case 0:return"";case 1:return Y?"0?":"0";case 2:return Y?"0{0,2}":"00";default:return Y?`0{0,${Q}}`:`0{${Q}}`}};/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */var E9=T9(),n8=(Z,J,X)=>{if(E9(Z)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(J===void 0||Z===J)return String(Z);if(E9(J)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let Q={relaxZeros:!0,...X};if(typeof Q.strictZeros==="boolean")Q.relaxZeros=Q.strictZeros===!1;let Y=String(Q.relaxZeros),U=String(Q.shorthand),z=String(Q.capture),$=String(Q.wrap),V=Z+":"+J+"="+Y+U+z+$;if(n8.cache.hasOwnProperty(V))return n8.cache[V].result;let B=Math.min(Z,J),W=Math.max(Z,J);if(Math.abs(B-W)===1){let G=Z+"|"+J;if(Q.capture)return`(${G})`;if(Q.wrap===!1)return G;return`(?:${G})`}let N=A9(Z)||A9(J),q={min:Z,max:J,a:B,b:W},I=[],H=[];if(N)q.isPadded=N,q.maxLen=String(q.max).length;if(B<0){let G=W<0?Math.abs(W):1;H=P9(G,Math.abs(B),q,Q),B=q.a=0}if(W>=0)I=P9(B,W,q,Q);if(q.negatives=H,q.positives=I,q.result=_V(H,I,Q),Q.capture===!0)q.result=`(${q.result})`;else if(Q.wrap!==!1&&I.length+H.length>1)q.result=`(?:${q.result})`;return n8.cache[V]=q,q.result};n8.cache={};n8.clearCache=()=>n8.cache={};_9.exports=n8});var v7=O((bM,f9)=>{/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */var yV=import.meta.require("util"),h9=S9(),x9=(Z)=>Z!==null&&typeof Z==="object"&&!Array.isArray(Z),uV=(Z)=>{return(J)=>Z===!0?Number(J):String(J)},S7=(Z)=>{return typeof Z==="number"||typeof Z==="string"&&Z!==""},A6=(Z)=>Number.isInteger(+Z),x7=(Z)=>{let J=`${Z}`,X=-1;if(J[0]==="-")J=J.slice(1);if(J==="0")return!1;while(J[++X]==="0");return X>0},fV=(Z,J,X)=>{if(typeof Z==="string"||typeof J==="string")return!0;return X.stringify===!0},mV=(Z,J,X)=>{if(J>0){let Q=Z[0]==="-"?"-":"";if(Q)Z=Z.slice(1);Z=Q+Z.padStart(Q?J-1:J,"0")}if(X===!1)return String(Z);return Z},v9=(Z,J)=>{let X=Z[0]==="-"?"-":"";if(X)Z=Z.slice(1),J--;while(Z.length{Z.negatives.sort((z,$)=>z<$?-1:z>$?1:0),Z.positives.sort((z,$)=>z<$?-1:z>$?1:0);let X=J.capture?"":"?:",Q="",Y="",U;if(Z.positives.length)Q=Z.positives.join("|");if(Z.negatives.length)Y=`-(${X}${Z.negatives.join("|")})`;if(Q&&Y)U=`${Q}|${Y}`;else U=Q||Y;if(J.wrap)return`(${X}${U})`;return U},b9=(Z,J,X,Q)=>{if(X)return h9(Z,J,{wrap:!1,...Q});let Y=String.fromCharCode(Z);if(Z===J)return Y;let U=String.fromCharCode(J);return`[${Y}-${U}]`},k9=(Z,J,X)=>{if(Array.isArray(Z)){let Q=X.wrap===!0,Y=X.capture?"":"?:";return Q?`(${Y}${Z.join("|")})`:Z.join("|")}return h9(Z,J,X)},y9=(...Z)=>{return new RangeError("Invalid range arguments: "+yV.inspect(...Z))},u9=(Z,J,X)=>{if(X.strictRanges===!0)throw y9([Z,J]);return[]},dV=(Z,J)=>{if(J.strictRanges===!0)throw new TypeError(`Expected step "${Z}" to be a number`);return[]},cV=(Z,J,X=1,Q={})=>{let Y=Number(Z),U=Number(J);if(!Number.isInteger(Y)||!Number.isInteger(U)){if(Q.strictRanges===!0)throw y9([Z,J]);return[]}if(Y===0)Y=0;if(U===0)U=0;let z=Y>U,$=String(Z),V=String(J),B=String(X);X=Math.max(Math.abs(X),1);let W=x7($)||x7(V)||x7(B),N=W?Math.max($.length,V.length,B.length):0,q=W===!1&&fV(Z,J,Q)===!1,I=Q.transform||uV(q);if(Q.toRegex&&X===1)return b9(v9(Z,N),v9(J,N),!0,Q);let H={negatives:[],positives:[]},G=(S)=>H[S<0?"negatives":"positives"].push(Math.abs(S)),E=[],P=0;while(z?Y>=U:Y<=U){if(Q.toRegex===!0&&X>1)G(Y);else E.push(mV(I(Y,P),N,q));Y=z?Y-X:Y+X,P++}if(Q.toRegex===!0)return X>1?gV(H,Q):k9(E,null,{wrap:!1,...Q});return E},lV=(Z,J,X=1,Q={})=>{if(!A6(Z)&&Z.length>1||!A6(J)&&J.length>1)return u9(Z,J,Q);let Y=Q.transform||((q)=>String.fromCharCode(q)),U=`${Z}`.charCodeAt(0),z=`${J}`.charCodeAt(0),$=U>z,V=Math.min(U,z),B=Math.max(U,z);if(Q.toRegex&&X===1)return b9(V,B,!1,Q);let W=[],N=0;while($?U>=z:U<=z)W.push(Y(U,N)),U=$?U-X:U+X,N++;if(Q.toRegex===!0)return k9(W,null,{wrap:!1,options:Q});return W},G5=(Z,J,X,Q={})=>{if(J==null&&S7(Z))return[Z];if(!S7(Z)||!S7(J))return u9(Z,J,Q);if(typeof X==="function")return G5(Z,J,1,{transform:X});if(x9(X))return G5(Z,J,0,X);let Y={...Q};if(Y.capture===!0)Y.wrap=!0;if(X=X||Y.step||1,!A6(X)){if(X!=null&&!x9(X))return dV(X,Y);return G5(Z,J,1,X)}if(A6(Z)&&A6(J))return cV(Z,J,X,Y);return lV(Z,J,Math.max(Math.abs(X),1),Y)};f9.exports=G5});var d9=O((kM,g9)=>{var pV=v7(),m9=K5(),nV=(Z,J={})=>{let X=(Q,Y={})=>{let U=m9.isInvalidBrace(Y),z=Q.invalid===!0&&J.escapeInvalid===!0,$=U===!0||z===!0,V=J.escapeInvalid===!0?"\\":"",B="";if(Q.isOpen===!0)return V+Q.value;if(Q.isClose===!0)return V+Q.value;if(Q.type==="open")return $?V+Q.value:"(";if(Q.type==="close")return $?V+Q.value:")";if(Q.type==="comma")return Q.prev.type==="comma"?"":$?Q.value:"|";if(Q.value)return Q.value;if(Q.nodes&&Q.ranges>0){let W=m9.reduce(Q.nodes),N=pV(...W,{...J,wrap:!1,toRegex:!0});if(N.length!==0)return W.length>1&&N.length>1?`(${N})`:N}if(Q.nodes)for(let W of Q.nodes)B+=X(W,Q);return B};return X(Z)};g9.exports=nV});var p9=O((yM,l9)=>{var iV=v7(),c9=N5(),B6=K5(),i8=(Z="",J="",X=!1)=>{let Q=[];if(Z=[].concat(Z),J=[].concat(J),!J.length)return Z;if(!Z.length)return X?B6.flatten(J).map((Y)=>`{${Y}}`):J;for(let Y of Z)if(Array.isArray(Y))for(let U of Y)Q.push(i8(U,J,X));else for(let U of J){if(X===!0&&typeof U==="string")U=`{${U}}`;Q.push(Array.isArray(U)?i8(Y,U,X):Y+U)}return B6.flatten(Q)},oV=(Z,J={})=>{let X=J.rangeLimit===void 0?1000:J.rangeLimit,Q=(Y,U={})=>{Y.queue=[];let z=U,$=U.queue;while(z.type!=="brace"&&z.type!=="root"&&z.parent)z=z.parent,$=z.queue;if(Y.invalid||Y.dollar){$.push(i8($.pop(),c9(Y,J)));return}if(Y.type==="brace"&&Y.invalid!==!0&&Y.nodes.length===2){$.push(i8($.pop(),["{}"]));return}if(Y.nodes&&Y.ranges>0){let N=B6.reduce(Y.nodes);if(B6.exceedsLimit(...N,J.step,X))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let q=iV(...N,J);if(q.length===0)q=c9(Y,J);$.push(i8($.pop(),q)),Y.nodes=[];return}let V=B6.encloseBrace(Y),B=Y.queue,W=Y;while(W.type!=="brace"&&W.type!=="root"&&W.parent)W=W.parent,B=W.queue;for(let N=0;N{n9.exports={MAX_LENGTH:65536,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:"\n",CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"\'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var t9=O((fM,s9)=>{var aV=N5(),{MAX_LENGTH:o9,CHAR_BACKSLASH:h7,CHAR_BACKTICK:rV,CHAR_COMMA:sV,CHAR_DOT:tV,CHAR_LEFT_PARENTHESES:eV,CHAR_RIGHT_PARENTHESES:ZB,CHAR_LEFT_CURLY_BRACE:JB,CHAR_RIGHT_CURLY_BRACE:XB,CHAR_LEFT_SQUARE_BRACKET:a9,CHAR_RIGHT_SQUARE_BRACKET:r9,CHAR_DOUBLE_QUOTE:QB,CHAR_SINGLE_QUOTE:YB,CHAR_NO_BREAK_SPACE:UB,CHAR_ZERO_WIDTH_NOBREAK_SPACE:zB}=i9(),$B=(Z,J={})=>{if(typeof Z!=="string")throw new TypeError("Expected a string");let X=J||{},Q=typeof X.maxLength==="number"?Math.min(o9,X.maxLength):o9;if(Z.length>Q)throw new SyntaxError(`Input length (${Z.length}), exceeds max characters (${Q})`);let Y={type:"root",input:Z,nodes:[]},U=[Y],z=Y,$=Y,V=0,B=Z.length,W=0,N=0,q,I={};const H=()=>Z[W++],G=(E)=>{if(E.type==="text"&&$.type==="dot")$.type="text";if($&&$.type==="text"&&E.type==="text"){$.value+=E.value;return}return z.nodes.push(E),E.parent=z,E.prev=$,$=E,E};G({type:"bos"});while(W0){if(z.ranges>0){z.ranges=0;let E=z.nodes.shift();z.nodes=[E,{type:"text",value:aV(z)}]}G({type:"comma",value:q}),z.commas++;continue}if(q===tV&&N>0&&z.commas===0){let E=z.nodes;if(N===0||E.length===0){G({type:"text",value:q});continue}if($.type==="dot"){if(z.range=[],$.value+=q,$.type="range",z.nodes.length!==3&&z.nodes.length!==5){z.invalid=!0,z.ranges=0,$.type="text";continue}z.ranges++,z.args=[];continue}if($.type==="range"){E.pop();let P=E[E.length-1];P.value+=$.value+q,$=P,z.ranges--;continue}G({type:"dot",value:q});continue}G({type:"text",value:q})}do if(z=U.pop(),z.type!=="root"){z.nodes.forEach((S)=>{if(!S.nodes){if(S.type==="open")S.isOpen=!0;if(S.type==="close")S.isClose=!0;if(!S.nodes)S.type="text";S.invalid=!0}});let E=U[U.length-1],P=E.nodes.indexOf(z);E.nodes.splice(P,1,...z.nodes)}while(U.length>0);return G({type:"eos"}),Y};s9.exports=$B});var JX=O((mM,ZX)=>{var e9=N5(),VB=d9(),BB=p9(),WB=t9(),f0=(Z,J={})=>{let X=[];if(Array.isArray(Z))for(let Q of Z){let Y=f0.create(Q,J);if(Array.isArray(Y))X.push(...Y);else X.push(Y)}else X=[].concat(f0.create(Z,J));if(J&&J.expand===!0&&J.nodupes===!0)X=[...new Set(X)];return X};f0.parse=(Z,J={})=>WB(Z,J);f0.stringify=(Z,J={})=>{if(typeof Z==="string")return e9(f0.parse(Z,J),J);return e9(Z,J)};f0.compile=(Z,J={})=>{if(typeof Z==="string")Z=f0.parse(Z,J);return VB(Z,J)};f0.expand=(Z,J={})=>{if(typeof Z==="string")Z=f0.parse(Z,J);let X=BB(Z,J);if(J.noempty===!0)X=X.filter(Boolean);if(J.nodupes===!0)X=[...new Set(X)];return X};f0.create=(Z,J={})=>{if(Z===""||Z.length<3)return[Z];return J.expand!==!0?f0.compile(Z,J):f0.expand(Z,J)};ZX.exports=f0});var _6=O((gM,QX)=>{var qB=import.meta.require("path"),XX={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},KB={...XX,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"},NB={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:'\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~',space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};QX.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:NB,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:qB.sep,extglobChars(Z){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${Z.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(Z){return Z===!0?KB:XX}}});var S6=O((jB)=>{var GB=import.meta.require("path"),HB=process.platform==="win32",{REGEX_BACKSLASH:IB,REGEX_REMOVE_BACKSLASH:MB,REGEX_SPECIAL_CHARS:LB,REGEX_SPECIAL_CHARS_GLOBAL:FB}=_6();jB.isObject=(Z)=>Z!==null&&typeof Z==="object"&&!Array.isArray(Z);jB.hasRegexChars=(Z)=>LB.test(Z);jB.isRegexChar=(Z)=>Z.length===1&&jB.hasRegexChars(Z);jB.escapeRegex=(Z)=>Z.replace(FB,"\\$1");jB.toPosixSlashes=(Z)=>Z.replace(IB,"/");jB.removeBackslashes=(Z)=>{return Z.replace(MB,(J)=>{return J==="\\"?"":J})};jB.supportsLookbehinds=()=>{const Z=process.version.slice(1).split(".").map(Number);if(Z.length===3&&Z[0]>=9||Z[0]===8&&Z[1]>=10)return!0;return!1};jB.isWindows=(Z)=>{if(Z&&typeof Z.windows==="boolean")return Z.windows;return HB===!0||GB.sep==="\\"};jB.escapeLast=(Z,J,X)=>{const Q=Z.lastIndexOf(J,X);if(Q===-1)return Z;if(Z[Q-1]==="\\")return jB.escapeLast(Z,J,Q-1);return`${Z.slice(0,Q)}\\${Z.slice(Q)}`};jB.removePrefix=(Z,J={})=>{let X=Z;if(X.startsWith("./"))X=X.slice(2),J.prefix="./";return X};jB.wrapOutput=(Z,J={},X={})=>{const Q=X.contains?"":"^",Y=X.contains?"":"$";let U=`${Q}(?:${Z})${Y}`;if(J.negated===!0)U=`(?:^(?!${U}).*\$)`;return U}});var NX=O((cM,KX)=>{var zX=S6(),{CHAR_ASTERISK:b7,CHAR_AT:_B,CHAR_BACKWARD_SLASH:x6,CHAR_COMMA:SB,CHAR_DOT:k7,CHAR_EXCLAMATION_MARK:y7,CHAR_FORWARD_SLASH:qX,CHAR_LEFT_CURLY_BRACE:u7,CHAR_LEFT_PARENTHESES:f7,CHAR_LEFT_SQUARE_BRACKET:xB,CHAR_PLUS:vB,CHAR_QUESTION_MARK:$X,CHAR_RIGHT_CURLY_BRACE:hB,CHAR_RIGHT_PARENTHESES:VX,CHAR_RIGHT_SQUARE_BRACKET:bB}=_6(),BX=(Z)=>{return Z===qX||Z===x6},WX=(Z)=>{if(Z.isPrefix!==!0)Z.depth=Z.isGlobstar?Infinity:1},kB=(Z,J)=>{const X=J||{},Q=Z.length-1,Y=X.parts===!0||X.scanToEnd===!0,U=[],z=[],$=[];let V=Z,B=-1,W=0,N=0,q=!1,I=!1,H=!1,G=!1,E=!1,P=!1,S=!1,k=!1,b=!1,l=!1,J0=0,d,g,R={value:"",depth:0,isGlob:!1};const p=()=>B>=Q,L=()=>V.charCodeAt(B+1),C=()=>{return d=g,V.charCodeAt(++B)};while(B0)y=V.slice(0,W),V=V.slice(W),N-=W;if(_&&H===!0&&N>0)_=V.slice(0,N),F=V.slice(N);else if(H===!0)_="",F=V;else _=V;if(_&&_!==""&&_!=="/"&&_!==V){if(BX(_.charCodeAt(_.length-1)))_=_.slice(0,-1)}if(X.unescape===!0){if(F)F=zX.removeBackslashes(F);if(_&&S===!0)_=zX.removeBackslashes(_)}const D={prefix:y,input:Z,start:W,base:_,glob:F,isBrace:q,isBracket:I,isGlob:H,isExtglob:G,isGlobstar:E,negated:k,negatedExtglob:b};if(X.tokens===!0){if(D.maxDepth=0,!BX(g))z.push(R);D.tokens=z}if(X.parts===!0||X.tokens===!0){let u;for(let f=0;f{var H5=_6(),m0=S6(),{MAX_LENGTH:I5,POSIX_REGEX_SOURCE:yB,REGEX_NON_SPECIAL_CHARS:uB,REGEX_SPECIAL_CHARS_BACKREF:fB,REPLACEMENTS:GX}=H5,mB=(Z,J)=>{if(typeof J.expandRange==="function")return J.expandRange(...Z,J);Z.sort();const X=`[${Z.join("-")}]`;try{new RegExp(X)}catch(Q){return Z.map((Y)=>m0.escapeRegex(Y)).join("..")}return X},W6=(Z,J)=>{return`Missing ${Z}: "${J}" - use "\\\\${J}" to match literal characters`},m7=(Z,J)=>{if(typeof Z!=="string")throw new TypeError("Expected a string");Z=GX[Z]||Z;const X={...J},Q=typeof X.maxLength==="number"?Math.min(I5,X.maxLength):I5;let Y=Z.length;if(Y>Q)throw new SyntaxError(`Input length: ${Y}, exceeds maximum allowed length: ${Q}`);const U={type:"bos",value:"",output:X.prepend||""},z=[U],$=X.capture?"":"?:",V=m0.isWindows(J),B=H5.globChars(V),W=H5.extglobChars(B),{DOT_LITERAL:N,PLUS_LITERAL:q,SLASH_LITERAL:I,ONE_CHAR:H,DOTS_SLASH:G,NO_DOT:E,NO_DOT_SLASH:P,NO_DOTS_SLASH:S,QMARK:k,QMARK_NO_DOT:b,STAR:l,START_ANCHOR:J0}=B,d=(A)=>{return`(${$}(?:(?!${J0}${A.dot?G:N}).)*?)`},g=X.dot?"":E,R=X.dot?k:b;let p=X.bash===!0?d(X):l;if(X.capture)p=`(${p})`;if(typeof X.noext==="boolean")X.noextglob=X.noext;const L={input:Z,index:-1,start:0,dot:X.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:z};Z=m0.removePrefix(Z,L),Y=Z.length;const C=[],_=[],y=[];let F=U,D;const u=()=>L.index===Y-1,f=L.peek=(A=1)=>Z[L.index+A],e=L.advance=()=>Z[++L.index]||"",Y0=()=>Z.slice(L.index+1),V0=(A="",X0=0)=>{L.consumed+=A,L.index+=X0},T0=(A)=>{L.output+=A.output!=null?A.output:A.value,V0(A.value)},t=()=>{let A=1;while(f()==="!"&&(f(2)!=="("||f(3)==="?"))e(),L.start++,A++;if(A%2===0)return!1;return L.negated=!0,L.start++,!0},_0=(A)=>{L[A]++,y.push(A)},h0=(A)=>{L[A]--,y.pop()},h=(A)=>{if(F.type==="globstar"){const X0=L.braces>0&&(A.type==="comma"||A.type==="brace"),x=A.extglob===!0||C.length&&(A.type==="pipe"||A.type==="paren");if(A.type!=="slash"&&A.type!=="paren"&&!X0&&!x)L.output=L.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=p,L.output+=F.output}if(C.length&&A.type!=="paren")C[C.length-1].inner+=A.value;if(A.value||A.output)T0(A);if(F&&F.type==="text"&&A.type==="text"){F.value+=A.value,F.output=(F.output||"")+A.value;return}A.prev=F,z.push(A),F=A},U0=(A,X0)=>{const x={...W[X0],conditions:1,inner:""};x.prev=F,x.parens=L.parens,x.output=L.output;const o=(X.capture?"(":"")+x.open;_0("parens"),h({type:A,value:X0,output:L.output?"":H}),h({type:"paren",extglob:!0,value:e(),output:o}),C.push(x)},K0=(A)=>{let X0=A.close+(X.capture?")":""),x;if(A.type==="negate"){let o=p;if(A.inner&&A.inner.length>1&&A.inner.includes("/"))o=d(X);if(o!==p||u()||/^\)+$/.test(Y0()))X0=A.close=`)\$))${o}`;if(A.inner.includes("*")&&(x=Y0())&&/^\.[^\\/.]+$/.test(x)){const z0=m7(x,{...J,fastpaths:!1}).output;X0=A.close=`)${z0})${o})`}if(A.prev.type==="bos")L.negatedExtglob=!0}h({type:"paren",extglob:!0,value:D,output:X0}),h0("parens")};if(X.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(Z)){let A=!1,X0=Z.replace(fB,(x,o,z0,M,j,v)=>{if(M==="\\")return A=!0,x;if(M==="?"){if(o)return o+M+(j?k.repeat(j.length):"");if(v===0)return R+(j?k.repeat(j.length):"");return k.repeat(z0.length)}if(M===".")return N.repeat(z0.length);if(M==="*"){if(o)return o+M+(j?p:"");return p}return o?x:`\\${x}`});if(A===!0)if(X.unescape===!0)X0=X0.replace(/\\/g,"");else X0=X0.replace(/\\+/g,(x)=>{return x.length%2===0?"\\\\":x?"\\":""});if(X0===Z&&X.contains===!0)return L.output=Z,L;return L.output=m0.wrapOutput(X0,L,J),L}while(!u()){if(D=e(),D==="\0")continue;if(D==="\\"){const x=f();if(x==="/"&&X.bash!==!0)continue;if(x==="."||x===";")continue;if(!x){D+="\\",h({type:"text",value:D});continue}const o=/^\\+/.exec(Y0());let z0=0;if(o&&o[0].length>2){if(z0=o[0].length,L.index+=z0,z0%2!==0)D+="\\"}if(X.unescape===!0)D=e();else D+=e();if(L.brackets===0){h({type:"text",value:D});continue}}if(L.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(X.posix!==!1&&D===":"){const x=F.value.slice(1);if(x.includes("[")){if(F.posix=!0,x.includes(":")){const o=F.value.lastIndexOf("["),z0=F.value.slice(0,o),M=F.value.slice(o+2),j=yB[M];if(j){if(F.value=z0+j,L.backtrack=!0,e(),!U.output&&z.indexOf(F)===1)U.output=H;continue}}}}if(D==="["&&f()!==":"||D==="-"&&f()==="]")D=`\\${D}`;if(D==="]"&&(F.value==="["||F.value==="[^"))D=`\\${D}`;if(X.posix===!0&&D==="!"&&F.value==="[")D="^";F.value+=D,T0({value:D});continue}if(L.quotes===1&&D!=='"'){D=m0.escapeRegex(D),F.value+=D,T0({value:D});continue}if(D==='"'){if(L.quotes=L.quotes===1?0:1,X.keepQuotes===!0)h({type:"text",value:D});continue}if(D==="("){_0("parens"),h({type:"paren",value:D});continue}if(D===")"){if(L.parens===0&&X.strictBrackets===!0)throw new SyntaxError(W6("opening","("));const x=C[C.length-1];if(x&&L.parens===x.parens+1){K0(C.pop());continue}h({type:"paren",value:D,output:L.parens?")":"\\)"}),h0("parens");continue}if(D==="["){if(X.nobracket===!0||!Y0().includes("]")){if(X.nobracket!==!0&&X.strictBrackets===!0)throw new SyntaxError(W6("closing","]"));D=`\\${D}`}else _0("brackets");h({type:"bracket",value:D});continue}if(D==="]"){if(X.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){h({type:"text",value:D,output:`\\${D}`});continue}if(L.brackets===0){if(X.strictBrackets===!0)throw new SyntaxError(W6("opening","["));h({type:"text",value:D,output:`\\${D}`});continue}h0("brackets");const x=F.value.slice(1);if(F.posix!==!0&&x[0]==="^"&&!x.includes("/"))D=`/${D}`;if(F.value+=D,T0({value:D}),X.literalBrackets===!1||m0.hasRegexChars(x))continue;const o=m0.escapeRegex(F.value);if(L.output=L.output.slice(0,-F.value.length),X.literalBrackets===!0){L.output+=o,F.value=o;continue}F.value=`(${$}${o}|${F.value})`,L.output+=F.value;continue}if(D==="{"&&X.nobrace!==!0){_0("braces");const x={type:"brace",value:D,output:"(",outputIndex:L.output.length,tokensIndex:L.tokens.length};_.push(x),h(x);continue}if(D==="}"){const x=_[_.length-1];if(X.nobrace===!0||!x){h({type:"text",value:D,output:D});continue}let o=")";if(x.dots===!0){const z0=z.slice(),M=[];for(let j=z0.length-1;j>=0;j--){if(z.pop(),z0[j].type==="brace")break;if(z0[j].type!=="dots")M.unshift(z0[j].value)}o=mB(M,X),L.backtrack=!0}if(x.comma!==!0&&x.dots!==!0){const z0=L.output.slice(0,x.outputIndex),M=L.tokens.slice(x.tokensIndex);x.value=x.output="\\{",D=o="\\}",L.output=z0;for(let j of M)L.output+=j.output||j.value}h({type:"brace",value:D,output:o}),h0("braces"),_.pop();continue}if(D==="|"){if(C.length>0)C[C.length-1].conditions++;h({type:"text",value:D});continue}if(D===","){let x=D;const o=_[_.length-1];if(o&&y[y.length-1]==="braces")o.comma=!0,x="|";h({type:"comma",value:D,output:x});continue}if(D==="/"){if(F.type==="dot"&&L.index===L.start+1){L.start=L.index+1,L.consumed="",L.output="",z.pop(),F=U;continue}h({type:"slash",value:D,output:I});continue}if(D==="."){if(L.braces>0&&F.type==="dot"){if(F.value===".")F.output=N;const x=_[_.length-1];F.type="dots",F.output+=D,F.value+=D,x.dots=!0;continue}if(L.braces+L.parens===0&&F.type!=="bos"&&F.type!=="slash"){h({type:"text",value:D,output:N});continue}h({type:"dot",value:D,output:N});continue}if(D==="?"){if(!(F&&F.value==="(")&&X.noextglob!==!0&&f()==="("&&f(2)!=="?"){U0("qmark",D);continue}if(F&&F.type==="paren"){const o=f();let z0=D;if(o==="<"&&!m0.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");if(F.value==="("&&!/[!=<:]/.test(o)||o==="<"&&!/<([!=]|\w+>)/.test(Y0()))z0=`\\${D}`;h({type:"text",value:D,output:z0});continue}if(X.dot!==!0&&(F.type==="slash"||F.type==="bos")){h({type:"qmark",value:D,output:b});continue}h({type:"qmark",value:D,output:k});continue}if(D==="!"){if(X.noextglob!==!0&&f()==="("){if(f(2)!=="?"||!/[!=<:]/.test(f(3))){U0("negate",D);continue}}if(X.nonegate!==!0&&L.index===0){t();continue}}if(D==="+"){if(X.noextglob!==!0&&f()==="("&&f(2)!=="?"){U0("plus",D);continue}if(F&&F.value==="("||X.regex===!1){h({type:"plus",value:D,output:q});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||L.parens>0){h({type:"plus",value:D});continue}h({type:"plus",value:q});continue}if(D==="@"){if(X.noextglob!==!0&&f()==="("&&f(2)!=="?"){h({type:"at",extglob:!0,value:D,output:""});continue}h({type:"text",value:D});continue}if(D!=="*"){if(D==="$"||D==="^")D=`\\${D}`;const x=uB.exec(Y0());if(x)D+=x[0],L.index+=x[0].length;h({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=p,L.backtrack=!0,L.globstar=!0,V0(D);continue}let A=Y0();if(X.noextglob!==!0&&/^\([^?]/.test(A)){U0("star",D);continue}if(F.type==="star"){if(X.noglobstar===!0){V0(D);continue}const x=F.prev,o=x.prev,z0=x.type==="slash"||x.type==="bos",M=o&&(o.type==="star"||o.type==="globstar");if(X.bash===!0&&(!z0||A[0]&&A[0]!=="/")){h({type:"star",value:D,output:""});continue}const j=L.braces>0&&(x.type==="comma"||x.type==="brace"),v=C.length&&(x.type==="pipe"||x.type==="paren");if(!z0&&x.type!=="paren"&&!j&&!v){h({type:"star",value:D,output:""});continue}while(A.slice(0,3)==="/**"){const w=Z[L.index+4];if(w&&w!=="/")break;A=A.slice(3),V0("/**",3)}if(x.type==="bos"&&u()){F.type="globstar",F.value+=D,F.output=d(X),L.output=F.output,L.globstar=!0,V0(D);continue}if(x.type==="slash"&&x.prev.type!=="bos"&&!M&&u()){L.output=L.output.slice(0,-(x.output+F.output).length),x.output=`(?:${x.output}`,F.type="globstar",F.output=d(X)+(X.strictSlashes?")":"|$)"),F.value+=D,L.globstar=!0,L.output+=x.output+F.output,V0(D);continue}if(x.type==="slash"&&x.prev.type!=="bos"&&A[0]==="/"){const w=A[1]!==void 0?"|$":"";L.output=L.output.slice(0,-(x.output+F.output).length),x.output=`(?:${x.output}`,F.type="globstar",F.output=`${d(X)}${I}|${I}${w})`,F.value+=D,L.output+=x.output+F.output,L.globstar=!0,V0(D+e()),h({type:"slash",value:"/",output:""});continue}if(x.type==="bos"&&A[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${I}|${d(X)}${I})`,L.output=F.output,L.globstar=!0,V0(D+e()),h({type:"slash",value:"/",output:""});continue}L.output=L.output.slice(0,-F.output.length),F.type="globstar",F.output=d(X),F.value+=D,L.output+=F.output,L.globstar=!0,V0(D);continue}const X0={type:"star",value:D,output:p};if(X.bash===!0){if(X0.output=".*?",F.type==="bos"||F.type==="slash")X0.output=g+X0.output;h(X0);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&X.regex===!0){X0.output=D,h(X0);continue}if(L.index===L.start||F.type==="slash"||F.type==="dot"){if(F.type==="dot")L.output+=P,F.output+=P;else if(X.dot===!0)L.output+=S,F.output+=S;else L.output+=g,F.output+=g;if(f()!=="*")L.output+=H,F.output+=H}h(X0)}while(L.brackets>0){if(X.strictBrackets===!0)throw new SyntaxError(W6("closing","]"));L.output=m0.escapeLast(L.output,"["),h0("brackets")}while(L.parens>0){if(X.strictBrackets===!0)throw new SyntaxError(W6("closing",")"));L.output=m0.escapeLast(L.output,"("),h0("parens")}while(L.braces>0){if(X.strictBrackets===!0)throw new SyntaxError(W6("closing","}"));L.output=m0.escapeLast(L.output,"{"),h0("braces")}if(X.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket"))h({type:"maybe_slash",value:"",output:`${I}?`});if(L.backtrack===!0){L.output="";for(let A of L.tokens)if(L.output+=A.output!=null?A.output:A.value,A.suffix)L.output+=A.suffix}return L};m7.fastpaths=(Z,J)=>{const X={...J},Q=typeof X.maxLength==="number"?Math.min(I5,X.maxLength):I5,Y=Z.length;if(Y>Q)throw new SyntaxError(`Input length: ${Y}, exceeds maximum allowed length: ${Q}`);Z=GX[Z]||Z;const U=m0.isWindows(J),{DOT_LITERAL:z,SLASH_LITERAL:$,ONE_CHAR:V,DOTS_SLASH:B,NO_DOT:W,NO_DOTS:N,NO_DOTS_SLASH:q,STAR:I,START_ANCHOR:H}=H5.globChars(U),G=X.dot?N:W,E=X.dot?q:W,P=X.capture?"":"?:",S={negated:!1,prefix:""};let k=X.bash===!0?".*?":I;if(X.capture)k=`(${k})`;const b=(g)=>{if(g.noglobstar===!0)return k;return`(${P}(?:(?!${H}${g.dot?B:z}).)*?)`},l=(g)=>{switch(g){case"*":return`${G}${V}${k}`;case".*":return`${z}${V}${k}`;case"*.*":return`${G}${k}${z}${V}${k}`;case"*/*":return`${G}${k}${$}${V}${E}${k}`;case"**":return G+b(X);case"**/*":return`(?:${G}${b(X)}${$})?${E}${V}${k}`;case"**/*.*":return`(?:${G}${b(X)}${$})?${E}${k}${z}${V}${k}`;case"**/.*":return`(?:${G}${b(X)}${$})?${z}${V}${k}`;default:{const R=/^(.*?)\.(\w+)$/.exec(g);if(!R)return;const p=l(R[1]);if(!p)return;return p+z+R[2]}}},J0=m0.removePrefix(Z,S);let d=l(J0);if(d&&X.strictSlashes!==!0)d+=`${$}?`;return d};HX.exports=m7});var LX=O((pM,MX)=>{var gB=import.meta.require("path"),dB=NX(),g7=IX(),d7=S6(),cB=_6(),lB=(Z)=>Z&&typeof Z==="object"&&!Array.isArray(Z),M0=(Z,J,X=!1)=>{if(Array.isArray(Z)){const W=Z.map((q)=>M0(q,J,X));return(q)=>{for(let I of W){const H=I(q);if(H)return H}return!1}}const Q=lB(Z)&&Z.tokens&&Z.input;if(Z===""||typeof Z!=="string"&&!Q)throw new TypeError("Expected pattern to be a non-empty string");const Y=J||{},U=d7.isWindows(J),z=Q?M0.compileRe(Z,J):M0.makeRe(Z,J,!1,!0),$=z.state;delete z.state;let V=()=>!1;if(Y.ignore){const W={...J,ignore:null,onMatch:null,onResult:null};V=M0(Y.ignore,W,X)}const B=(W,N=!1)=>{const{isMatch:q,match:I,output:H}=M0.test(W,z,J,{glob:Z,posix:U}),G={glob:Z,state:$,regex:z,posix:U,input:W,output:H,match:I,isMatch:q};if(typeof Y.onResult==="function")Y.onResult(G);if(q===!1)return G.isMatch=!1,N?G:!1;if(V(W)){if(typeof Y.onIgnore==="function")Y.onIgnore(G);return G.isMatch=!1,N?G:!1}if(typeof Y.onMatch==="function")Y.onMatch(G);return N?G:!0};if(X)B.state=$;return B};M0.test=(Z,J,X,{glob:Q,posix:Y}={})=>{if(typeof Z!=="string")throw new TypeError("Expected input to be a string");if(Z==="")return{isMatch:!1,output:""};const U=X||{},z=U.format||(Y?d7.toPosixSlashes:null);let $=Z===Q,V=$&&z?z(Z):Z;if($===!1)V=z?z(Z):Z,$=V===Q;if($===!1||U.capture===!0)if(U.matchBase===!0||U.basename===!0)$=M0.matchBase(Z,J,X,Y);else $=J.exec(V);return{isMatch:Boolean($),match:$,output:V}};M0.matchBase=(Z,J,X,Q=d7.isWindows(X))=>{return(J instanceof RegExp?J:M0.makeRe(J,X)).test(gB.basename(Z))};M0.isMatch=(Z,J,X)=>M0(J,X)(Z);M0.parse=(Z,J)=>{if(Array.isArray(Z))return Z.map((X)=>M0.parse(X,J));return g7(Z,{...J,fastpaths:!1})};M0.scan=(Z,J)=>dB(Z,J);M0.compileRe=(Z,J,X=!1,Q=!1)=>{if(X===!0)return Z.output;const Y=J||{},U=Y.contains?"":"^",z=Y.contains?"":"$";let $=`${U}(?:${Z.output})${z}`;if(Z&&Z.negated===!0)$=`^(?!${$}).*\$`;const V=M0.toRegex($,J);if(Q===!0)V.state=Z;return V};M0.makeRe=(Z,J={},X=!1,Q=!1)=>{if(!Z||typeof Z!=="string")throw new TypeError("Expected a non-empty string");let Y={negated:!1,fastpaths:!0};if(J.fastpaths!==!1&&(Z[0]==="."||Z[0]==="*"))Y.output=g7.fastpaths(Z,J);if(!Y.output)Y=g7(Z,J);return M0.compileRe(Y,J,X,Q)};M0.toRegex=(Z,J)=>{try{const X=J||{};return new RegExp(Z,X.flags||(X.nocase?"i":""))}catch(X){if(J&&J.debug===!0)throw X;return/$^/}};M0.constants=cB;MX.exports=M0});var EX=O((nM,TX)=>{var jX=import.meta.require("util"),DX=JX(),U8=LX(),c7=S6(),FX=(Z)=>Z===""||Z==="./",q0=(Z,J,X)=>{J=[].concat(J),Z=[].concat(Z);let Q=new Set,Y=new Set,U=new Set,z=0,$=(W)=>{if(U.add(W.output),X&&X.onResult)X.onResult(W)};for(let W=0;W!Q.has(W));if(X&&B.length===0){if(X.failglob===!0)throw new Error(`No matches found for "${J.join(", ")}"`);if(X.nonull===!0||X.nullglob===!0)return X.unescape?J.map((W)=>W.replace(/\\/g,"")):J}return B};q0.match=q0;q0.matcher=(Z,J)=>U8(Z,J);q0.isMatch=(Z,J,X)=>U8(J,X)(Z);q0.any=q0.isMatch;q0.not=(Z,J,X={})=>{J=[].concat(J).map(String);let Q=new Set,Y=[],z=new Set(q0(Z,J,{...X,onResult:($)=>{if(X.onResult)X.onResult($);Y.push($.output)}}));for(let $ of Y)if(!z.has($))Q.add($);return[...Q]};q0.contains=(Z,J,X)=>{if(typeof Z!=="string")throw new TypeError(`Expected a string: "${jX.inspect(Z)}"`);if(Array.isArray(J))return J.some((Q)=>q0.contains(Z,Q,X));if(typeof J==="string"){if(FX(Z)||FX(J))return!1;if(Z.includes(J)||Z.startsWith("./")&&Z.slice(2).includes(J))return!0}return q0.isMatch(Z,J,{...X,contains:!0})};q0.matchKeys=(Z,J,X)=>{if(!c7.isObject(Z))throw new TypeError("Expected the first argument to be an object");let Q=q0(Object.keys(Z),J,X),Y={};for(let U of Q)Y[U]=Z[U];return Y};q0.some=(Z,J,X)=>{let Q=[].concat(Z);for(let Y of[].concat(J)){let U=U8(String(Y),X);if(Q.some((z)=>U(z)))return!0}return!1};q0.every=(Z,J,X)=>{let Q=[].concat(Z);for(let Y of[].concat(J)){let U=U8(String(Y),X);if(!Q.every((z)=>U(z)))return!1}return!0};q0.all=(Z,J,X)=>{if(typeof Z!=="string")throw new TypeError(`Expected a string: "${jX.inspect(Z)}"`);return[].concat(J).every((Q)=>U8(Q,X)(Z))};q0.capture=(Z,J,X)=>{let Q=c7.isWindows(X),U=U8.makeRe(String(Z),{...X,capture:!0}).exec(Q?c7.toPosixSlashes(J):J);if(U)return U.slice(1).map((z)=>z===void 0?"":z)};q0.makeRe=(...Z)=>U8.makeRe(...Z);q0.scan=(...Z)=>U8.scan(...Z);q0.parse=(Z,J)=>{let X=[];for(let Q of[].concat(Z||[]))for(let Y of DX(String(Q),J))X.push(U8.parse(Y,J));return X};q0.braces=(Z,J)=>{if(typeof Z!=="string")throw new TypeError("Expected a string");if(J&&J.nobrace===!0||!/\{.*\}/.test(Z))return[Z];return DX(Z,J)};q0.braceExpand=(Z,J)=>{if(typeof Z!=="string")throw new TypeError("Expected a string");return q0.braces(Z,{...J,expand:!0})};TX.exports=q0});var vX=O((SX)=>{var wX=function(Z,J={}){return!OX(Z,J)},OX=function(Z,J={}){if(Z==="")return!1;if(J.caseSensitiveMatch===!1||Z.includes(iB))return!0;if(oB.test(Z)||aB.test(Z)||rB.test(Z))return!0;if(J.extglob!==!1&&sB.test(Z))return!0;if(J.braceExpansion!==!1&&ZW(Z))return!0;return!1},ZW=function(Z){const J=Z.indexOf("{");if(J===-1)return!1;const X=Z.indexOf("}",J+1);if(X===-1)return!1;const Q=Z.slice(J,X);return tB.test(Q)},JW=function(Z){return M5(Z)?Z.slice(1):Z},XW=function(Z){return"!"+Z},M5=function(Z){return Z.startsWith("!")&&Z[1]!=="("},RX=function(Z){return!M5(Z)},QW=function(Z){return Z.filter(M5)},YW=function(Z){return Z.filter(RX)},UW=function(Z){return Z.filter((J)=>!p7(J))},zW=function(Z){return Z.filter(p7)},p7=function(Z){return Z.startsWith("..")||Z.startsWith("./..")},$W=function(Z){return nB(Z,{flipBackslashes:!1})},VW=function(Z){return Z.includes(PX)},CX=function(Z){return Z.endsWith("/"+PX)},BW=function(Z){const J=pB.basename(Z);return CX(Z)||wX(J)},WW=function(Z){return Z.reduce((J,X)=>{return J.concat(AX(X))},[])},AX=function(Z){const J=l7.braces(Z,{expand:!0,nodupes:!0});return J.sort((X,Q)=>X.length-Q.length),J.filter((X)=>X!=="")},qW=function(Z,J){let{parts:X}=l7.scan(Z,Object.assign(Object.assign({},J),{parts:!0}));if(X.length===0)X=[Z];if(X[0].startsWith("/"))X[0]=X[0].slice(1),X.unshift("");return X},_X=function(Z,J){return l7.makeRe(Z,J)},KW=function(Z,J){return Z.map((X)=>_X(X,J))},NW=function(Z,J){return J.some((X)=>X.test(Z))},GW=function(Z){return Z.replace(eB,"/")};Object.defineProperty(SX,"__esModule",{value:!0});SX.removeDuplicateSlashes=SX.matchAny=SX.convertPatternsToRe=SX.makeRe=SX.getPatternParts=SX.expandBraceExpansion=SX.expandPatternsWithBraceExpansion=SX.isAffectDepthOfReadingPattern=SX.endsWithSlashGlobStar=SX.hasGlobStar=SX.getBaseDirectory=SX.isPatternRelatedToParentDirectory=SX.getPatternsOutsideCurrentDirectory=SX.getPatternsInsideCurrentDirectory=SX.getPositivePatterns=SX.getNegativePatterns=SX.isPositivePattern=SX.isNegativePattern=SX.convertToNegativePattern=SX.convertToPositivePattern=SX.isDynamicPattern=SX.isStaticPattern=void 0;var pB=import.meta.require("path"),nB=L9(),l7=EX(),PX="**",iB="\\",oB=/[*?]|^!/,aB=/\[[^[]*]/,rB=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,sB=/[!*+?@]\([^(]*\)/,tB=/,|\.\./,eB=/(?!^)\/{2,}/g;SX.isStaticPattern=wX;SX.isDynamicPattern=OX;SX.convertToPositivePattern=JW;SX.convertToNegativePattern=XW;SX.isNegativePattern=M5;SX.isPositivePattern=RX;SX.getNegativePatterns=QW;SX.getPositivePatterns=YW;SX.getPatternsInsideCurrentDirectory=UW;SX.getPatternsOutsideCurrentDirectory=zW;SX.isPatternRelatedToParentDirectory=p7;SX.getBaseDirectory=$W;SX.hasGlobStar=VW;SX.endsWithSlashGlobStar=CX;SX.isAffectDepthOfReadingPattern=BW;SX.expandPatternsWithBraceExpansion=WW;SX.expandBraceExpansion=AX;SX.getPatternParts=qW;SX.makeRe=_X;SX.convertPatternsToRe=KW;SX.matchAny=NW;SX.removeDuplicateSlashes=GW});var yX=O((oM,kX)=>{var uW=function(){const Z=[],J=yW.call(arguments);let X=!1,Q=J[J.length-1];if(Q&&!Array.isArray(Q)&&Q.pipe==null)J.pop();else Q={};const Y=Q.end!==!1,U=Q.pipeError===!0;if(Q.objectMode==null)Q.objectMode=!0;if(Q.highWaterMark==null)Q.highWaterMark=65536;const z=hX(Q);function $(){for(let W=0,N=arguments.length;W0)return;X=!1,V()}function I(H){function G(){if(H.removeListener("merge2UnpipeEnd",G),H.removeListener("end",G),U)H.removeListener("error",E);q()}function E(P){z.emit("error",P)}if(H._readableState.endEmitted)return q();if(H.on("merge2UnpipeEnd",G),H.on("end",G),U)H.on("error",E);H.pipe(z,{end:!1}),H.resume()}for(let H=0;H{var mW=function(Z){const J=fW(Z);return Z.forEach((X)=>{X.once("error",(Q)=>J.emit("error",Q))}),J.once("close",()=>uX(Z)),J.once("end",()=>uX(Z)),J},uX=function(Z){Z.forEach((J)=>J.emit("close"))};Object.defineProperty(fX,"__esModule",{value:!0});fX.merge=void 0;var fW=yX();fX.merge=mW});var lX=O((dX)=>{var gW=function(Z){return typeof Z==="string"},dW=function(Z){return Z===""};Object.defineProperty(dX,"__esModule",{value:!0});dX.isEmpty=dX.isString=void 0;dX.isString=gW;dX.isEmpty=dW});var V8=O((pX)=>{Object.defineProperty(pX,"__esModule",{value:!0});pX.string=pX.stream=pX.pattern=pX.path=pX.fs=pX.errno=pX.array=void 0;var lW=t4();pX.array=lW;var pW=J9();pX.errno=pW;var nW=U9();pX.fs=nW;var iW=q9();pX.path=iW;var oW=vX();pX.pattern=oW;var aW=gX();pX.stream=aW;var rW=lX();pX.string=rW});var tX=O((rX)=>{var Qq=function(Z,J){const X=iX(Z,J),Q=iX(J.ignore,J),Y=oX(X),U=aX(X,Q),z=Y.filter((W)=>J8.pattern.isStaticPattern(W,J)),$=Y.filter((W)=>J8.pattern.isDynamicPattern(W,J)),V=n7(z,U,!1),B=n7($,U,!0);return V.concat(B)},iX=function(Z,J){let X=Z;if(J.braceExpansion)X=J8.pattern.expandPatternsWithBraceExpansion(X);if(J.baseNameMatch)X=X.map((Q)=>Q.includes("/")?Q:`**/${Q}`);return X.map((Q)=>J8.pattern.removeDuplicateSlashes(Q))},n7=function(Z,J,X){const Q=[],Y=J8.pattern.getPatternsOutsideCurrentDirectory(Z),U=J8.pattern.getPatternsInsideCurrentDirectory(Z),z=i7(Y),$=i7(U);if(Q.push(...o7(z,J,X)),("."in $))Q.push(a7(".",U,J,X));else Q.push(...o7($,J,X));return Q},oX=function(Z){return J8.pattern.getPositivePatterns(Z)},aX=function(Z,J){return J8.pattern.getNegativePatterns(Z).concat(J).map(J8.pattern.convertToPositivePattern)},i7=function(Z){const J={};return Z.reduce((X,Q)=>{const Y=J8.pattern.getBaseDirectory(Q);if(Y in X)X[Y].push(Q);else X[Y]=[Q];return X},J)},o7=function(Z,J,X){return Object.keys(Z).map((Q)=>{return a7(Q,Z[Q],J,X)})},a7=function(Z,J,X,Q){return{dynamic:Q,positive:J,negative:X,base:Z,patterns:[].concat(J,X.map(J8.pattern.convertToNegativePattern))}};Object.defineProperty(rX,"__esModule",{value:!0});rX.convertPatternGroupToTask=rX.convertPatternGroupsToTasks=rX.groupPatternsByBaseDirectory=rX.getNegativePatternsAsPositive=rX.getPositivePatterns=rX.convertPatternsToTasks=rX.generate=void 0;var J8=V8();rX.generate=Qq;rX.convertPatternsToTasks=n7;rX.getPositivePatterns=oX;rX.getNegativePatternsAsPositive=aX;rX.groupPatternsByBaseDirectory=i7;rX.convertPatternGroupsToTasks=o7;rX.convertPatternGroupToTask=a7});var X3=O((Z3)=>{var Wq=function(Z,J,X){J.fs.lstat(Z,(Q,Y)=>{if(Q!==null){eX(X,Q);return}if(!Y.isSymbolicLink()||!J.followSymbolicLink){r7(X,Y);return}J.fs.stat(Z,(U,z)=>{if(U!==null){if(J.throwErrorOnBrokenSymbolicLink){eX(X,U);return}r7(X,Y);return}if(J.markSymbolicLink)z.isSymbolicLink=()=>!0;r7(X,z)})})},eX=function(Z,J){Z(J)},r7=function(Z,J){Z(null,J)};Object.defineProperty(Z3,"__esModule",{value:!0});Z3.read=void 0;Z3.read=Wq});var U3=O((Q3)=>{var qq=function(Z,J){const X=J.fs.lstatSync(Z);if(!X.isSymbolicLink()||!J.followSymbolicLink)return X;try{const Q=J.fs.statSync(Z);if(J.markSymbolicLink)Q.isSymbolicLink=()=>!0;return Q}catch(Q){if(!J.throwErrorOnBrokenSymbolicLink)return X;throw Q}};Object.defineProperty(Q3,"__esModule",{value:!0});Q3.read=void 0;Q3.read=qq});var V3=O((z3)=>{var Kq=function(Z){if(Z===void 0)return z3.FILE_SYSTEM_ADAPTER;return Object.assign(Object.assign({},z3.FILE_SYSTEM_ADAPTER),Z)};Object.defineProperty(z3,"__esModule",{value:!0});z3.createFileSystemAdapter=z3.FILE_SYSTEM_ADAPTER=void 0;var L5=import.meta.require("fs");z3.FILE_SYSTEM_ADAPTER={lstat:L5.lstat,stat:L5.stat,lstatSync:L5.lstatSync,statSync:L5.statSync};z3.createFileSystemAdapter=Kq});var q3=O((W3)=>{Object.defineProperty(W3,"__esModule",{value:!0});var Nq=V3();class B3{constructor(Z={}){this._options=Z,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Nq.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(Z,J){return Z!==null&&Z!==void 0?Z:J}}W3.default=B3});var o8=O((N3)=>{var Iq=function(Z,J,X){if(typeof J==="function"){K3.read(Z,e7(),J);return}K3.read(Z,e7(J),X)},Mq=function(Z,J){const X=e7(J);return Hq.read(Z,X)},e7=function(Z={}){if(Z instanceof t7.default)return Z;return new t7.default(Z)};Object.defineProperty(N3,"__esModule",{value:!0});N3.statSync=N3.stat=N3.Settings=void 0;var K3=X3(),Hq=U3(),t7=q3();N3.Settings=t7.default;N3.stat=Iq;N3.statSync=Mq});var M3=O((YL,I3)=>{/*! queue-microtask. MIT License. Feross Aboukhadijeh */var H3;I3.exports=typeof queueMicrotask==="function"?queueMicrotask.bind(typeof window!=="undefined"?window:global):(Z)=>(H3||(H3=Promise.resolve())).then(Z).catch((J)=>setTimeout(()=>{throw J},0))});var F3=O((UL,L3)=>{var Dq=function(Z,J){let X,Q,Y,U=!0;if(Array.isArray(Z))X=[],Q=Z.length;else Y=Object.keys(Z),X={},Q=Y.length;function z(V){function B(){if(J)J(V,X);J=null}if(U)jq(B);else B()}function $(V,B,W){if(X[V]=W,--Q===0||B)z(B)}if(!Q)z(null);else if(Y)Y.forEach(function(V){Z[V](function(B,W){$(V,B,W)})});else Z.forEach(function(V,B){V(function(W,N){$(B,W,N)})});U=!1};/*! run-parallel. MIT License. Feross Aboukhadijeh */L3.exports=Dq;var jq=M3()});var ZZ=O((T3)=>{Object.defineProperty(T3,"__esModule",{value:!0});T3.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var F5=process.versions.node.split(".");if(F5[0]===void 0||F5[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var j3=Number.parseInt(F5[0],10),Tq=Number.parseInt(F5[1],10),D3=10,Eq=10,Pq=j3>D3,wq=j3===D3&&Tq>=Eq;T3.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Pq||wq});var R3=O((w3)=>{var Oq=function(Z,J){return new P3(Z,J)};Object.defineProperty(w3,"__esModule",{value:!0});w3.createDirentFromStats=void 0;class P3{constructor(Z,J){this.name=Z,this.isBlockDevice=J.isBlockDevice.bind(J),this.isCharacterDevice=J.isCharacterDevice.bind(J),this.isDirectory=J.isDirectory.bind(J),this.isFIFO=J.isFIFO.bind(J),this.isFile=J.isFile.bind(J),this.isSocket=J.isSocket.bind(J),this.isSymbolicLink=J.isSymbolicLink.bind(J)}}w3.createDirentFromStats=Oq});var JZ=O((C3)=>{Object.defineProperty(C3,"__esModule",{value:!0});C3.fs=void 0;var Rq=R3();C3.fs=Rq});var XZ=O((_3)=>{var Cq=function(Z,J,X){if(Z.endsWith(X))return Z+J;return Z+X+J};Object.defineProperty(_3,"__esModule",{value:!0});_3.joinPathSegments=void 0;_3.joinPathSegments=Cq});var f3=O((y3)=>{var Sq=function(Z,J,X){if(!J.stats&&_q.IS_SUPPORT_READDIR_WITH_FILE_TYPES){b3(Z,J,X);return}k3(Z,J,X)},b3=function(Z,J,X){J.fs.readdir(Z,{withFileTypes:!0},(Q,Y)=>{if(Q!==null){j5(X,Q);return}const U=Y.map(($)=>({dirent:$,name:$.name,path:h3.joinPathSegments(Z,$.name,J.pathSegmentSeparator)}));if(!J.followSymbolicLinks){QZ(X,U);return}const z=U.map(($)=>xq($,J));x3(z,($,V)=>{if($!==null){j5(X,$);return}QZ(X,V)})})},xq=function(Z,J){return(X)=>{if(!Z.dirent.isSymbolicLink()){X(null,Z);return}J.fs.stat(Z.path,(Q,Y)=>{if(Q!==null){if(J.throwErrorOnBrokenSymbolicLink){X(Q);return}X(null,Z);return}Z.dirent=v3.fs.createDirentFromStats(Z.name,Y),X(null,Z)})}},k3=function(Z,J,X){J.fs.readdir(Z,(Q,Y)=>{if(Q!==null){j5(X,Q);return}const U=Y.map((z)=>{const $=h3.joinPathSegments(Z,z,J.pathSegmentSeparator);return(V)=>{Aq.stat($,J.fsStatSettings,(B,W)=>{if(B!==null){V(B);return}const N={name:z,path:$,dirent:v3.fs.createDirentFromStats(z,W)};if(J.stats)N.stats=W;V(null,N)})}});x3(U,(z,$)=>{if(z!==null){j5(X,z);return}QZ(X,$)})})},j5=function(Z,J){Z(J)},QZ=function(Z,J){Z(null,J)};Object.defineProperty(y3,"__esModule",{value:!0});y3.readdir=y3.readdirWithFileTypes=y3.read=void 0;var Aq=o8(),x3=F3(),_q=ZZ(),v3=JZ(),h3=XZ();y3.read=Sq;y3.readdirWithFileTypes=b3;y3.readdir=k3});var n3=O((l3)=>{var yq=function(Z,J){if(!J.stats&&kq.IS_SUPPORT_READDIR_WITH_FILE_TYPES)return d3(Z,J);return c3(Z,J)},d3=function(Z,J){return J.fs.readdirSync(Z,{withFileTypes:!0}).map((Q)=>{const Y={dirent:Q,name:Q.name,path:g3.joinPathSegments(Z,Q.name,J.pathSegmentSeparator)};if(Y.dirent.isSymbolicLink()&&J.followSymbolicLinks)try{const U=J.fs.statSync(Y.path);Y.dirent=m3.fs.createDirentFromStats(Y.name,U)}catch(U){if(J.throwErrorOnBrokenSymbolicLink)throw U}return Y})},c3=function(Z,J){return J.fs.readdirSync(Z).map((Q)=>{const Y=g3.joinPathSegments(Z,Q,J.pathSegmentSeparator),U=bq.statSync(Y,J.fsStatSettings),z={name:Q,path:Y,dirent:m3.fs.createDirentFromStats(Q,U)};if(J.stats)z.stats=U;return z})};Object.defineProperty(l3,"__esModule",{value:!0});l3.readdir=l3.readdirWithFileTypes=l3.read=void 0;var bq=o8(),kq=ZZ(),m3=JZ(),g3=XZ();l3.read=yq;l3.readdirWithFileTypes=d3;l3.readdir=c3});var a3=O((i3)=>{var mq=function(Z){if(Z===void 0)return i3.FILE_SYSTEM_ADAPTER;return Object.assign(Object.assign({},i3.FILE_SYSTEM_ADAPTER),Z)};Object.defineProperty(i3,"__esModule",{value:!0});i3.createFileSystemAdapter=i3.FILE_SYSTEM_ADAPTER=void 0;var q6=import.meta.require("fs");i3.FILE_SYSTEM_ADAPTER={lstat:q6.lstat,stat:q6.stat,lstatSync:q6.lstatSync,statSync:q6.statSync,readdir:q6.readdir,readdirSync:q6.readdirSync};i3.createFileSystemAdapter=mq});var t3=O((s3)=>{Object.defineProperty(s3,"__esModule",{value:!0});var gq=import.meta.require("path"),dq=o8(),cq=a3();class r3{constructor(Z={}){this._options=Z,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=cq.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,gq.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new dq.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(Z,J){return Z!==null&&Z!==void 0?Z:J}}s3.default=r3});var D5=O((ZQ)=>{var nq=function(Z,J,X){if(typeof J==="function"){e3.read(Z,zZ(),J);return}e3.read(Z,zZ(J),X)},iq=function(Z,J){const X=zZ(J);return pq.read(Z,X)},zZ=function(Z={}){if(Z instanceof UZ.default)return Z;return new UZ.default(Z)};Object.defineProperty(ZQ,"__esModule",{value:!0});ZQ.Settings=ZQ.scandirSync=ZQ.scandir=void 0;var e3=f3(),pq=n3(),UZ=t3();ZQ.Settings=UZ.default;ZQ.scandir=nq;ZQ.scandirSync=iq});var QQ=O((HL,XQ)=>{var rq=function(Z){var J=new Z,X=J;function Q(){var U=J;if(U.next)J=U.next;else J=new Z,X=J;return U.next=null,U}function Y(U){X.next=U,X=U}return{get:Q,release:Y}};XQ.exports=rq});var UQ=O((IL,$Z)=>{var YQ=function(Z,J,X){if(typeof Z==="function")X=J,J=Z,Z=null;if(X<1)throw new Error("fastqueue concurrency must be greater than 1");var Q=sq(tq),Y=null,U=null,z=0,$=null,V={push:G,drain:a0,saturated:a0,pause:W,paused:!1,concurrency:X,running:B,resume:I,idle:H,length:N,getQueue:q,unshift:E,empty:a0,kill:S,killAndDrain:k,error:b};return V;function B(){return z}function W(){V.paused=!0}function N(){var l=Y,J0=0;while(l)l=l.next,J0++;return J0}function q(){var l=Y,J0=[];while(l)J0.push(l.value),l=l.next;return J0}function I(){if(!V.paused)return;V.paused=!1;for(var l=0;l{var ZK=function(Z,J){if(Z.errorFilter===null)return!0;return!Z.errorFilter(J)},JK=function(Z,J){return Z===null||Z(J)},XK=function(Z,J){return Z.split(/[/\\]/).join(J)},QK=function(Z,J,X){if(Z==="")return J;if(Z.endsWith(X))return Z+J;return Z+X+J};Object.defineProperty(zQ,"__esModule",{value:!0});zQ.joinPathSegments=zQ.replacePathSegmentSeparator=zQ.isAppliedFilter=zQ.isFatalError=void 0;zQ.isFatalError=ZK;zQ.isAppliedFilter=JK;zQ.replacePathSegmentSeparator=XK;zQ.joinPathSegments=QK});var VZ=O((BQ)=>{Object.defineProperty(BQ,"__esModule",{value:!0});var $K=T5();class VQ{constructor(Z,J){this._root=Z,this._settings=J,this._root=$K.replacePathSegmentSeparator(Z,J.pathSegmentSeparator)}}BQ.default=VQ});var BZ=O((qQ)=>{Object.defineProperty(qQ,"__esModule",{value:!0});var BK=import.meta.require("events"),WK=D5(),qK=UQ(),E5=T5(),KK=VZ();class WQ extends KK.default{constructor(Z,J){super(Z,J);this._settings=J,this._scandir=WK.scandir,this._emitter=new BK.EventEmitter,this._queue=qK(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{if(!this._isFatalError)this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(Z){this._emitter.on("entry",Z)}onError(Z){this._emitter.once("error",Z)}onEnd(Z){this._emitter.once("end",Z)}_pushToQueue(Z,J){const X={directory:Z,base:J};this._queue.push(X,(Q)=>{if(Q!==null)this._handleError(Q)})}_worker(Z,J){this._scandir(Z.directory,this._settings.fsScandirSettings,(X,Q)=>{if(X!==null){J(X,void 0);return}for(let Y of Q)this._handleEntry(Y,Z.base);J(null,void 0)})}_handleError(Z){if(this._isDestroyed||!E5.isFatalError(this._settings,Z))return;this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",Z)}_handleEntry(Z,J){if(this._isDestroyed||this._isFatalError)return;const X=Z.path;if(J!==void 0)Z.path=E5.joinPathSegments(J,Z.name,this._settings.pathSegmentSeparator);if(E5.isAppliedFilter(this._settings.entryFilter,Z))this._emitEntry(Z);if(Z.dirent.isDirectory()&&E5.isAppliedFilter(this._settings.deepFilter,Z))this._pushToQueue(X,J===void 0?void 0:Z.path)}_emitEntry(Z){this._emitter.emit("entry",Z)}}qQ.default=WQ});var GQ=O((NQ)=>{var HK=function(Z,J){Z(J)},IK=function(Z,J){Z(null,J)};Object.defineProperty(NQ,"__esModule",{value:!0});var GK=BZ();class KQ{constructor(Z,J){this._root=Z,this._settings=J,this._reader=new GK.default(this._root,this._settings),this._storage=[]}read(Z){this._reader.onError((J)=>{HK(Z,J)}),this._reader.onEntry((J)=>{this._storage.push(J)}),this._reader.onEnd(()=>{IK(Z,this._storage)}),this._reader.read()}}NQ.default=KQ});var MQ=O((IQ)=>{Object.defineProperty(IQ,"__esModule",{value:!0});var LK=import.meta.require("stream"),FK=BZ();class HQ{constructor(Z,J){this._root=Z,this._settings=J,this._reader=new FK.default(this._root,this._settings),this._stream=new LK.Readable({objectMode:!0,read:()=>{},destroy:()=>{if(!this._reader.isDestroyed)this._reader.destroy()}})}read(){return this._reader.onError((Z)=>{this._stream.emit("error",Z)}),this._reader.onEntry((Z)=>{this._stream.push(Z)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}}IQ.default=HQ});var jQ=O((FQ)=>{Object.defineProperty(FQ,"__esModule",{value:!0});var DK=D5(),P5=T5(),TK=VZ();class LQ extends TK.default{constructor(){super(...arguments);this._scandir=DK.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(Z,J){this._queue.add({directory:Z,base:J})}_handleQueue(){for(let Z of this._queue.values())this._handleDirectory(Z.directory,Z.base)}_handleDirectory(Z,J){try{const X=this._scandir(Z,this._settings.fsScandirSettings);for(let Q of X)this._handleEntry(Q,J)}catch(X){this._handleError(X)}}_handleError(Z){if(!P5.isFatalError(this._settings,Z))return;throw Z}_handleEntry(Z,J){const X=Z.path;if(J!==void 0)Z.path=P5.joinPathSegments(J,Z.name,this._settings.pathSegmentSeparator);if(P5.isAppliedFilter(this._settings.entryFilter,Z))this._pushToStorage(Z);if(Z.dirent.isDirectory()&&P5.isAppliedFilter(this._settings.deepFilter,Z))this._pushToQueue(X,J===void 0?void 0:Z.path)}_pushToStorage(Z){this._storage.push(Z)}}FQ.default=LQ});var EQ=O((TQ)=>{Object.defineProperty(TQ,"__esModule",{value:!0});var PK=jQ();class DQ{constructor(Z,J){this._root=Z,this._settings=J,this._reader=new PK.default(this._root,this._settings)}read(){return this._reader.read()}}TQ.default=DQ});var OQ=O((wQ)=>{Object.defineProperty(wQ,"__esModule",{value:!0});var OK=import.meta.require("path"),RK=D5();class PQ{constructor(Z={}){this._options=Z,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,OK.sep),this.fsScandirSettings=new RK.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(Z,J){return Z!==null&&Z!==void 0?Z:J}}wQ.default=PQ});var O5=O((CQ)=>{var SK=function(Z,J,X){if(typeof J==="function"){new RQ.default(Z,w5()).read(J);return}new RQ.default(Z,w5(J)).read(X)},xK=function(Z,J){const X=w5(J);return new _K.default(Z,X).read()},vK=function(Z,J){const X=w5(J);return new AK.default(Z,X).read()},w5=function(Z={}){if(Z instanceof WZ.default)return Z;return new WZ.default(Z)};Object.defineProperty(CQ,"__esModule",{value:!0});CQ.Settings=CQ.walkStream=CQ.walkSync=CQ.walk=void 0;var RQ=GQ(),AK=MQ(),_K=EQ(),WZ=OQ();CQ.Settings=WZ.default;CQ.walk=SK;CQ.walkSync=xK;CQ.walkStream=vK});var R5=O((xQ)=>{Object.defineProperty(xQ,"__esModule",{value:!0});var yK=import.meta.require("path"),uK=o8(),_Q=V8();class SQ{constructor(Z){this._settings=Z,this._fsStatSettings=new uK.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(Z){return yK.resolve(this._settings.cwd,Z)}_makeEntry(Z,J){const X={name:J,path:J,dirent:_Q.fs.createDirentFromStats(J,Z)};if(this._settings.stats)X.stats=Z;return X}_isFatalError(Z){return!_Q.errno.isEnoentCodeError(Z)&&!this._settings.suppressErrors}}xQ.default=SQ});var qZ=O((hQ)=>{Object.defineProperty(hQ,"__esModule",{value:!0});var mK=import.meta.require("stream"),gK=o8(),dK=O5(),cK=R5();class vQ extends cK.default{constructor(){super(...arguments);this._walkStream=dK.walkStream,this._stat=gK.stat}dynamic(Z,J){return this._walkStream(Z,J)}static(Z,J){const X=Z.map(this._getFullEntryPath,this),Q=new mK.PassThrough({objectMode:!0});Q._write=(Y,U,z)=>{return this._getEntry(X[Y],Z[Y],J).then(($)=>{if($!==null&&J.entryFilter($))Q.push($);if(Y===X.length-1)Q.end();z()}).catch(z)};for(let Y=0;Ythis._makeEntry(Q,J)).catch((Q)=>{if(X.errorFilter(Q))return null;throw Q})}_getStat(Z){return new Promise((J,X)=>{this._stat(Z,this._fsStatSettings,(Q,Y)=>{return Q===null?J(Y):X(Q)})})}}hQ.default=vQ});var yQ=O((kQ)=>{Object.defineProperty(kQ,"__esModule",{value:!0});var pK=O5(),nK=R5(),iK=qZ();class bQ extends nK.default{constructor(){super(...arguments);this._walkAsync=pK.walk,this._readerStream=new iK.default(this._settings)}dynamic(Z,J){return new Promise((X,Q)=>{this._walkAsync(Z,J,(Y,U)=>{if(Y===null)X(U);else Q(Y)})})}async static(Z,J){const X=[],Q=this._readerStream.static(Z,J);return new Promise((Y,U)=>{Q.once("error",U),Q.on("data",(z)=>X.push(z)),Q.once("end",()=>Y(X))})}}kQ.default=bQ});var mQ=O((fQ)=>{Object.defineProperty(fQ,"__esModule",{value:!0});var v6=V8();class uQ{constructor(Z,J,X){this._patterns=Z,this._settings=J,this._micromatchOptions=X,this._storage=[],this._fillStorage()}_fillStorage(){for(let Z of this._patterns){const J=this._getPatternSegments(Z),X=this._splitSegmentsIntoSections(J);this._storage.push({complete:X.length<=1,pattern:Z,segments:J,sections:X})}}_getPatternSegments(Z){return v6.pattern.getPatternParts(Z,this._micromatchOptions).map((X)=>{if(!v6.pattern.isDynamicPattern(X,this._settings))return{dynamic:!1,pattern:X};return{dynamic:!0,pattern:X,patternRe:v6.pattern.makeRe(X,this._micromatchOptions)}})}_splitSegmentsIntoSections(Z){return v6.array.splitWhen(Z,(J)=>J.dynamic&&v6.pattern.hasGlobStar(J.pattern))}}fQ.default=uQ});var cQ=O((dQ)=>{Object.defineProperty(dQ,"__esModule",{value:!0});var rK=mQ();class gQ extends rK.default{match(Z){const J=Z.split("/"),X=J.length,Q=this._storage.filter((Y)=>!Y.complete||Y.segments.length>X);for(let Y of Q){const U=Y.sections[0];if(!Y.complete&&X>U.length)return!0;if(J.every(($,V)=>{const B=Y.segments[V];if(B.dynamic&&B.patternRe.test($))return!0;if(!B.dynamic&&B.pattern===$)return!0;return!1}))return!0}return!1}}dQ.default=gQ});var nQ=O((pQ)=>{Object.defineProperty(pQ,"__esModule",{value:!0});var C5=V8(),tK=cQ();class lQ{constructor(Z,J){this._settings=Z,this._micromatchOptions=J}getFilter(Z,J,X){const Q=this._getMatcher(J),Y=this._getNegativePatternsRe(X);return(U)=>this._filter(Z,U,Q,Y)}_getMatcher(Z){return new tK.default(Z,this._settings,this._micromatchOptions)}_getNegativePatternsRe(Z){const J=Z.filter(C5.pattern.isAffectDepthOfReadingPattern);return C5.pattern.convertPatternsToRe(J,this._micromatchOptions)}_filter(Z,J,X,Q){if(this._isSkippedByDeep(Z,J.path))return!1;if(this._isSkippedSymbolicLink(J))return!1;const Y=C5.path.removeLeadingDotSegment(J.path);if(this._isSkippedByPositivePatterns(Y,X))return!1;return this._isSkippedByNegativePatterns(Y,Q)}_isSkippedByDeep(Z,J){if(this._settings.deep===Infinity)return!1;return this._getEntryLevel(Z,J)>=this._settings.deep}_getEntryLevel(Z,J){const X=J.split("/").length;if(Z==="")return X;const Q=Z.split("/").length;return X-Q}_isSkippedSymbolicLink(Z){return!this._settings.followSymbolicLinks&&Z.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(Z,J){return!this._settings.baseNameMatch&&!J.match(Z)}_isSkippedByNegativePatterns(Z,J){return!C5.pattern.matchAny(Z,J)}}pQ.default=lQ});var aQ=O((oQ)=>{Object.defineProperty(oQ,"__esModule",{value:!0});var a8=V8();class iQ{constructor(Z,J){this._settings=Z,this._micromatchOptions=J,this.index=new Map}getFilter(Z,J){const X=a8.pattern.convertPatternsToRe(Z,this._micromatchOptions),Q=a8.pattern.convertPatternsToRe(J,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return(Y)=>this._filter(Y,X,Q)}_filter(Z,J,X){const Q=a8.path.removeLeadingDotSegment(Z.path);if(this._settings.unique&&this._isDuplicateEntry(Q))return!1;if(this._onlyFileFilter(Z)||this._onlyDirectoryFilter(Z))return!1;if(this._isSkippedByAbsoluteNegativePatterns(Q,X))return!1;const Y=Z.dirent.isDirectory(),U=this._isMatchToPatterns(Q,J,Y)&&!this._isMatchToPatterns(Q,X,Y);if(this._settings.unique&&U)this._createIndexRecord(Q);return U}_isDuplicateEntry(Z){return this.index.has(Z)}_createIndexRecord(Z){this.index.set(Z,void 0)}_onlyFileFilter(Z){return this._settings.onlyFiles&&!Z.dirent.isFile()}_onlyDirectoryFilter(Z){return this._settings.onlyDirectories&&!Z.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(Z,J){if(!this._settings.absolute)return!1;const X=a8.path.makeAbsolute(this._settings.cwd,Z);return a8.pattern.matchAny(X,J)}_isMatchToPatterns(Z,J,X){const Q=a8.pattern.matchAny(Z,J);if(!Q&&X)return a8.pattern.matchAny(Z+"/",J);return Q}}oQ.default=iQ});var tQ=O((sQ)=>{Object.defineProperty(sQ,"__esModule",{value:!0});var JN=V8();class rQ{constructor(Z){this._settings=Z}getFilter(){return(Z)=>this._isNonFatalError(Z)}_isNonFatalError(Z){return JN.errno.isEnoentCodeError(Z)||this._settings.suppressErrors}}sQ.default=rQ});var XY=O((JY)=>{Object.defineProperty(JY,"__esModule",{value:!0});var eQ=V8();class ZY{constructor(Z){this._settings=Z}getTransformer(){return(Z)=>this._transform(Z)}_transform(Z){let J=Z.path;if(this._settings.absolute)J=eQ.path.makeAbsolute(this._settings.cwd,J),J=eQ.path.unixify(J);if(this._settings.markDirectories&&Z.dirent.isDirectory())J+="/";if(!this._settings.objectMode)return J;return Object.assign(Object.assign({},Z),{path:J})}}JY.default=ZY});var A5=O((YY)=>{Object.defineProperty(YY,"__esModule",{value:!0});var YN=import.meta.require("path"),UN=nQ(),zN=aQ(),$N=tQ(),VN=XY();class QY{constructor(Z){this._settings=Z,this.errorFilter=new $N.default(this._settings),this.entryFilter=new zN.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new UN.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new VN.default(this._settings)}_getRootDirectory(Z){return YN.resolve(this._settings.cwd,Z.base)}_getReaderOptions(Z){const J=Z.base==="."?"":Z.base;return{basePath:J,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(J,Z.positive,Z.negative),entryFilter:this.entryFilter.getFilter(Z.positive,Z.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}}YY.default=QY});var $Y=O((zY)=>{Object.defineProperty(zY,"__esModule",{value:!0});var WN=yQ(),qN=A5();class UY extends qN.default{constructor(){super(...arguments);this._reader=new WN.default(this._settings)}async read(Z){const J=this._getRootDirectory(Z),X=this._getReaderOptions(Z);return(await this.api(J,Z,X)).map((Y)=>X.transform(Y))}api(Z,J,X){if(J.dynamic)return this._reader.dynamic(Z,X);return this._reader.static(J.patterns,X)}}zY.default=UY});var WY=O((BY)=>{Object.defineProperty(BY,"__esModule",{value:!0});var NN=import.meta.require("stream"),GN=qZ(),HN=A5();class VY extends HN.default{constructor(){super(...arguments);this._reader=new GN.default(this._settings)}read(Z){const J=this._getRootDirectory(Z),X=this._getReaderOptions(Z),Q=this.api(J,Z,X),Y=new NN.Readable({objectMode:!0,read:()=>{}});return Q.once("error",(U)=>Y.emit("error",U)).on("data",(U)=>Y.emit("data",X.transform(U))).once("end",()=>Y.emit("end")),Y.once("close",()=>Q.destroy()),Y}api(Z,J,X){if(J.dynamic)return this._reader.dynamic(Z,X);return this._reader.static(J.patterns,X)}}BY.default=VY});var NY=O((KY)=>{Object.defineProperty(KY,"__esModule",{value:!0});var MN=o8(),LN=O5(),FN=R5();class qY extends FN.default{constructor(){super(...arguments);this._walkSync=LN.walkSync,this._statSync=MN.statSync}dynamic(Z,J){return this._walkSync(Z,J)}static(Z,J){const X=[];for(let Q of Z){const Y=this._getFullEntryPath(Q),U=this._getEntry(Y,Q,J);if(U===null||!J.entryFilter(U))continue;X.push(U)}return X}_getEntry(Z,J,X){try{const Q=this._getStat(Z);return this._makeEntry(Q,J)}catch(Q){if(X.errorFilter(Q))return null;throw Q}}_getStat(Z){return this._statSync(Z,this._fsStatSettings)}}KY.default=qY});var IY=O((HY)=>{Object.defineProperty(HY,"__esModule",{value:!0});var DN=NY(),TN=A5();class GY extends TN.default{constructor(){super(...arguments);this._reader=new DN.default(this._settings)}read(Z){const J=this._getRootDirectory(Z),X=this._getReaderOptions(Z);return this.api(J,Z,X).map(X.transform)}api(Z,J,X){if(J.dynamic)return this._reader.dynamic(Z,X);return this._reader.static(J.patterns,X)}}HY.default=GY});var FY=O((LY)=>{Object.defineProperty(LY,"__esModule",{value:!0});LY.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var K6=import.meta.require("fs"),PN=import.meta.require("os"),wN=Math.max(PN.cpus().length,1);LY.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:K6.lstat,lstatSync:K6.lstatSync,stat:K6.stat,statSync:K6.statSync,readdir:K6.readdir,readdirSync:K6.readdirSync};class MY{constructor(Z={}){if(this._options=Z,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,wN),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories)this.onlyFiles=!1;if(this.stats)this.objectMode=!0;this.ignore=[].concat(this.ignore)}_getValue(Z,J){return Z===void 0?J:Z}_getFileSystemMethods(Z={}){return Object.assign(Object.assign({},LY.DEFAULT_FILE_SYSTEM_ADAPTER),Z)}}LY.default=MY});var TY=O((gL,DY)=>{async function GZ(Z,J){X8(Z);const X=HZ(Z,RN.default,J),Q=await Promise.all(X);return r0.array.flatten(Q)}var HZ=function(Z,J,X){const Q=[].concat(Z),Y=new NZ.default(X),U=jY.generate(Q,Y),z=new J(Y);return U.map(z.read,z)},X8=function(Z){if(![].concat(Z).every((Q)=>r0.string.isString(Q)&&!r0.string.isEmpty(Q)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")},jY=tX(),RN=$Y(),CN=WY(),AN=IY(),NZ=FY(),r0=V8();(function(Z){Z.glob=Z,Z.globSync=J,Z.globStream=X,Z.async=Z;function J(B,W){X8(B);const N=HZ(B,AN.default,W);return r0.array.flatten(N)}Z.sync=J;function X(B,W){X8(B);const N=HZ(B,CN.default,W);return r0.stream.merge(N)}Z.stream=X;function Q(B,W){X8(B);const N=[].concat(B),q=new NZ.default(W);return jY.generate(N,q)}Z.generateTasks=Q;function Y(B,W){X8(B);const N=new NZ.default(W);return r0.pattern.isDynamicPattern(B,N)}Z.isDynamicPattern=Y;function U(B){return X8(B),r0.path.escape(B)}Z.escapePath=U;function z(B){return X8(B),r0.path.convertPathToPattern(B)}Z.convertPathToPattern=z;let $;(function(B){function W(q){return X8(q),r0.path.escapePosixPath(q)}B.escapePath=W;function N(q){return X8(q),r0.path.convertPosixPathToPattern(q)}B.convertPathToPattern=N})($=Z.posix||(Z.posix={}));let V;(function(B){function W(q){return X8(q),r0.path.escapeWindowsPath(q)}B.escapePath=W;function N(q){return X8(q),r0.path.convertWindowsPathToPattern(q)}B.convertPathToPattern=N})(V=Z.win32||(Z.win32={}))})(GZ||(GZ={}));DY.exports=GZ});var EY=O((vN)=>{var SN=function(){var Z;if(_N){var J=new Error;Z=X}else Z=Q;return Z;function X(Y){if(Y)J.message=Y.message,Y=J,Q(Y)}function Q(Y){if(Y){if(process.throwDeprecation)throw Y;else if(!process.noDeprecation){var U="fs: missing callback "+(Y.stack||Y.message);if(process.traceDeprecation)console.trace(U);else console.error(U)}}}},xN=function(Z){return typeof Z==="function"?Z:SN()},r8=import.meta.require("path"),E8=process.platform==="win32",T8=import.meta.require("fs"),_N=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG),dL=r8.normalize;if(E8)B8=/(.*?)(?:[\/\\]+|$)/g;else B8=/(.*?)(?:[\/]+|$)/g;var B8;if(E8)h6=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;else h6=/^[\/]*/;var h6;vN.realpathSync=function Z(J,X){if(J=r8.resolve(J),X&&Object.prototype.hasOwnProperty.call(X,J))return X[J];var Q=J,Y={},U={},z,$,V,B;W();function W(){var E=h6.exec(J);if(z=E[0].length,$=E[0],V=E[0],B="",E8&&!U[V])T8.lstatSync(V),U[V]=!0}while(z=J.length){if(X)X[Y]=J;return Q(null,J)}B8.lastIndex=$;var E=B8.exec(J);if(W=V,V+=E[0],B=W+E[1],$=B8.lastIndex,z[B]||X&&X[B]===B)return process.nextTick(q);if(X&&Object.prototype.hasOwnProperty.call(X,B))return G(X[B]);return T8.lstat(B,I)}function I(E,P){if(E)return Q(E);if(!P.isSymbolicLink()){if(z[B]=!0,X)X[B]=B;return process.nextTick(q)}if(!E8){var S=P.dev.toString(32)+":"+P.ino.toString(32);if(U.hasOwnProperty(S))return H(null,U[S],B)}T8.stat(B,function(k){if(k)return Q(k);T8.readlink(B,function(b,l){if(!E8)U[S]=l;H(b,l)})})}function H(E,P,S){if(E)return Q(E);var k=r8.resolve(W,P);if(X)X[S]=k;G(k)}function G(E){J=r8.resolve(E,J.slice($)),N()}}});var FZ=O((lL,RY)=>{var OY=function(Z){return Z&&Z.syscall==="realpath"&&(Z.code==="ELOOP"||Z.code==="ENOMEM"||Z.code==="ENAMETOOLONG")},P8=function(Z,J,X){if(PY)return IZ(Z,J,X);if(typeof J==="function")X=J,J=null;IZ(Z,J,function(Q,Y){if(OY(Q))wY.realpath(Z,J,X);else X(Q,Y)})},LZ=function(Z,J){if(PY)return MZ(Z,J);try{return MZ(Z,J)}catch(X){if(OY(X))return wY.realpathSync(Z,J);else throw X}},yN=function(){N6.realpath=P8,N6.realpathSync=LZ},uN=function(){N6.realpath=IZ,N6.realpathSync=MZ};RY.exports=P8;P8.realpath=P8;P8.sync=LZ;P8.realpathSync=LZ;P8.monkeypatch=yN;P8.unmonkeypatch=uN;var N6=import.meta.require("fs"),IZ=N6.realpath,MZ=N6.realpathSync,kN=process.version,PY=/^v[0-5]\./.test(kN),wY=EY()});var AY=O((pL,CY)=>{CY.exports=function(Z,J){var X=[];for(var Q=0;Q{var SY=function(Z,J,X){if(Z instanceof RegExp)Z=_Y(Z,X);if(J instanceof RegExp)J=_Y(J,X);var Q=xY(Z,J,X);return Q&&{start:Q[0],end:Q[1],pre:X.slice(0,Q[0]),body:X.slice(Q[0]+Z.length,Q[1]),post:X.slice(Q[1]+J.length)}},_Y=function(Z,J){var X=J.match(Z);return X?X[0]:null},xY=function(Z,J,X){var Q,Y,U,z,$,V=X.indexOf(Z),B=X.indexOf(J,V+1),W=V;if(V>=0&&B>0){if(Z===J)return[V,B];Q=[],U=X.length;while(W>=0&&!$){if(W==V)Q.push(W),V=X.indexOf(Z,W+1);else if(Q.length==1)$=[Q.pop(),B];else{if(Y=Q.pop(),Y=0?V:B}if(Q.length)$=[U,z]}return $};vY.exports=SY;SY.range=xY});var dY=O((iL,gY)=>{var jZ=function(Z){return parseInt(Z,10)==Z?parseInt(Z,10):Z.charCodeAt(0)},gN=function(Z){return Z.split("\\\\").join(kY).split("\\{").join(yY).split("\\}").join(DZ).split("\\,").join(uY).split("\\.").join(fY)},dN=function(Z){return Z.split(kY).join("\\").split(yY).join("{").split(DZ).join("}").split(uY).join(",").split(fY).join(".")},mY=function(Z){if(!Z)return[""];var J=[],X=bY("{","}",Z);if(!X)return Z.split(",");var{pre:Q,body:Y,post:U}=X,z=Q.split(",");z[z.length-1]+="{"+Y+"}";var $=mY(U);if(U.length)z[z.length-1]+=$.shift(),z.push.apply(z,$);return J.push.apply(J,z),J},cN=function(Z){if(!Z)return[];if(Z.substr(0,2)==="{}")Z="\\{\\}"+Z.substr(2);return G6(gN(Z),!0).map(dN)},lN=function(Z){return"{"+Z+"}"},pN=function(Z){return/^-?0\d/.test(Z)},nN=function(Z,J){return Z<=J},iN=function(Z,J){return Z>=J},G6=function(Z,J){var X=[],Q=bY("{","}",Z);if(!Q||/\$$/.test(Q.pre))return[Z];var Y=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(Q.body),U=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(Q.body),z=Y||U,$=Q.body.indexOf(",")>=0;if(!z&&!$){if(Q.post.match(/,.*\}/))return Z=Q.pre+"{"+Q.body+DZ+Q.post,G6(Z);return[Z]}var V;if(z)V=Q.body.split(/\.\./);else if(V=mY(Q.body),V.length===1){if(V=G6(V[0],!1).map(lN),V.length===1){var W=Q.post.length?G6(Q.post,!1):[""];return W.map(function(L){return Q.pre+V[0]+L})}}var B=Q.pre,W=Q.post.length?G6(Q.post,!1):[""],N;if(z){var q=jZ(V[0]),I=jZ(V[1]),H=Math.max(V[0].length,V[1].length),G=V.length==3?Math.abs(jZ(V[2])):1,E=nN,P=I0){var J0=new Array(l+1).join("0");if(k<0)b="-"+J0+b.slice(1);else b=J0+b}}N.push(b)}}else N=mN(V,function(p){return G6(p,!1)});for(var d=0;d{var sN=function(Z){return Z.split("").reduce(function(J,X){return J[X]=!0,J},{})},tN=function(Z,J){return J=J||{},function(X,Q,Y){return g0(X,Z,J)}},w8=function(Z,J){J=J||{};var X={};return Object.keys(Z).forEach(function(Q){X[Q]=Z[Q]}),Object.keys(J).forEach(function(Q){X[Q]=J[Q]}),X},g0=function(Z,J,X){if(S5(J),!X)X={};if(!X.nocomment&&J.charAt(0)==="#")return!1;return new P0(J,X).match(Z)},P0=function(Z,J){if(!(this instanceof P0))return new P0(Z,J);if(S5(Z),!J)J={};if(Z=Z.trim(),!J.allowWindowsEscape&&b6.sep!=="/")Z=Z.split(b6.sep).join("/");this.options=J,this.set=[],this.pattern=Z,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!J.partial,this.make()},eN=function(){var Z=this.pattern,J=this.options;if(!J.nocomment&&Z.charAt(0)==="#"){this.comment=!0;return}if(!Z){this.empty=!0;return}this.parseNegate();var X=this.globSet=this.braceExpand();if(J.debug)this.debug=function Q(){console.error.apply(console,arguments)};this.debug(this.pattern,X),X=this.globParts=X.map(function(Q){return Q.split(pY)}),this.debug(this.pattern,X),X=X.map(function(Q,Y,U){return Q.map(this.parse,this)},this),this.debug(this.pattern,X),X=X.filter(function(Q){return Q.indexOf(!1)===-1}),this.debug(this.pattern,X),this.set=X},ZG=function(){var Z=this.pattern,J=!1,X=this.options,Q=0;if(X.nonegate)return;for(var Y=0,U=Z.length;Y-1;g--){var R=$[g],p=Q.slice(0,R.reStart),L=Q.slice(R.reStart,R.reEnd-8),C=Q.slice(R.reEnd-8,R.reEnd),_=Q.slice(R.reEnd);C+=_;var y=p.split("(").length-1,F=_;for(G=0;GJG)throw new TypeError("pattern is too long")};P0.prototype.parse=XG;var _5={};g0.makeRe=function(Z,J){return new P0(Z,J||{}).makeRe()};P0.prototype.makeRe=QG;g0.match=function(Z,J,X){X=X||{};var Q=new P0(J,X);if(Z=Z.filter(function(Y){return Q.match(Y)}),Q.options.nonull&&!Z.length)Z.push(J);return Z};P0.prototype.match=function Z(J,X){if(typeof X==="undefined")X=this.partial;if(this.debug("match",J,this.pattern),this.comment)return!1;if(this.empty)return J==="";if(J==="/"&&X)return!0;var Q=this.options;if(b6.sep!=="/")J=J.split(b6.sep).join("/");J=J.split(pY),this.debug(this.pattern,"split",J);var Y=this.set;this.debug(this.pattern,"set",Y);var U,z;for(z=J.length-1;z>=0;z--)if(U=J[z],U)break;for(z=0;z>> no match, partial?",Z,W,J,N),W===z)return!0}return!1}var I;if(typeof V==="string")I=B===V,this.debug("string match",V,B,I);else I=B.match(V),this.debug("pattern match",V,B,I);if(!I)return!1}if(Y===z&&U===$)return!0;else if(Y===z)return X;else if(U===$)return Y===z-1&&Z[Y]==="";throw new Error("wtf?")}});var oY=O((aL,wZ)=>{if(typeof Object.create==="function")wZ.exports=function Z(J,X){if(X)J.super_=X,J.prototype=Object.create(X.prototype,{constructor:{value:J,enumerable:!1,writable:!0,configurable:!0}})};else wZ.exports=function Z(J,X){if(X){J.super_=X;var Q=function(){};Q.prototype=X.prototype,J.prototype=new Q,J.prototype.constructor=J}}});var aY=O((rL,RZ)=>{try{if(OZ=import.meta.require("util"),typeof OZ.inherits!=="function")throw"";RZ.exports=OZ.inherits}catch(Z){RZ.exports=oY()}var OZ});var h5=O((sL,v5)=>{var rY=function(Z){return Z.charAt(0)==="/"},sY=function(Z){var J=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,X=J.exec(Z),Q=X[1]||"",Y=Boolean(Q&&Q.charAt(1)!==":");return Boolean(X[2]||Y)};v5.exports=process.platform==="win32"?sY:rY;v5.exports.posix=rY;v5.exports.win32=sY});var AZ=O((HG)=>{var tY=function(Z,J){return Object.prototype.hasOwnProperty.call(Z,J)},VG=function(Z,J){return Z.localeCompare(J,"en")},BG=function(Z,J){if(Z.ignore=J.ignore||[],!Array.isArray(Z.ignore))Z.ignore=[Z.ignore];if(Z.ignore.length)Z.ignore=Z.ignore.map(WG)},WG=function(Z){var J=null;if(Z.slice(-3)==="/**"){var X=Z.replace(/(\/\*\*)+$/,"");J=new CZ(X,{dot:!0})}return{matcher:new CZ(Z,{dot:!0}),gmatcher:J}},qG=function(Z,J,X){if(!X)X={};if(X.matchBase&&J.indexOf("/")===-1){if(X.noglobstar)throw new Error("base matching requires globstar");J="**/"+J}if(Z.silent=!!X.silent,Z.pattern=J,Z.strict=X.strict!==!1,Z.realpath=!!X.realpath,Z.realpathCache=X.realpathCache||Object.create(null),Z.follow=!!X.follow,Z.dot=!!X.dot,Z.mark=!!X.mark,Z.nodir=!!X.nodir,Z.nodir)Z.mark=!0;Z.sync=!!X.sync,Z.nounique=!!X.nounique,Z.nonull=!!X.nonull,Z.nosort=!!X.nosort,Z.nocase=!!X.nocase,Z.stat=!!X.stat,Z.noprocess=!!X.noprocess,Z.absolute=!!X.absolute,Z.fs=X.fs||zG,Z.maxLength=X.maxLength||Infinity,Z.cache=X.cache||Object.create(null),Z.statCache=X.statCache||Object.create(null),Z.symlinks=X.symlinks||Object.create(null),BG(Z,X),Z.changedCwd=!1;var Q=process.cwd();if(!tY(X,"cwd"))Z.cwd=Q;else Z.cwd=H6.resolve(X.cwd),Z.changedCwd=Z.cwd!==Q;if(Z.root=X.root||H6.resolve(Z.cwd,"/"),Z.root=H6.resolve(Z.root),process.platform==="win32")Z.root=Z.root.replace(/\\/g,"/");if(Z.cwdAbs=eY(Z.cwd)?Z.cwd:k6(Z,Z.cwd),process.platform==="win32")Z.cwdAbs=Z.cwdAbs.replace(/\\/g,"/");Z.nomount=!!X.nomount,X.nonegate=!0,X.nocomment=!0,X.allowWindowsEscape=!1,Z.minimatch=new CZ(J,X),Z.options=Z.minimatch.options},KG=function(Z){var J=Z.nounique,X=J?[]:Object.create(null);for(var Q=0,Y=Z.matches.length;Q{var QU=function(Z,J){if(typeof J==="function"||arguments.length===3)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new L0(Z,J).found},L0=function(Z,J){if(!Z)throw new Error("must provide pattern");if(typeof J==="function"||arguments.length===3)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof L0))return new L0(Z,J);if(PG(this,Z,J),this.noprocess)return this;var X=this.minimatch.set.length;this.matches=new Array(X);for(var Q=0;Qthis.maxLength)return!1;if(!this.stat&&SZ(this.cache,J)){var z=this.cache[J];if(Array.isArray(z))z="DIR";if(!X||z==="DIR")return z;if(X&&z==="FILE")return!1}var Q,Y=this.statCache[J];if(!Y){var U;try{U=this.fs.lstatSync(J)}catch($){if($&&($.code==="ENOENT"||$.code==="ENOTDIR"))return this.statCache[J]=!1,!1}if(U&&U.isSymbolicLink())try{Y=this.fs.statSync(J)}catch($){Y=U}else Y=U}this.statCache[J]=Y;var z=!0;if(Y)z=Y.isDirectory()?"DIR":"FILE";if(this.cache[J]=this.cache[J]||z,X&&z==="FILE")return!1;return z};L0.prototype._mark=function(Z){return s8.mark(this,Z)};L0.prototype._makeAbs=function(Z){return s8.makeAbs(this,Z)}});var vZ=O((QF,$U)=>{var zU=function(Z,J){if(Z&&J)return zU(Z)(J);if(typeof Z!=="function")throw new TypeError("need wrapper function");return Object.keys(Z).forEach(function(Q){X[Q]=Z[Q]}),X;function X(){var Q=new Array(arguments.length);for(var Y=0;Y{var k5=function(Z){var J=function(){if(J.called)return J.value;return J.called=!0,J.value=Z.apply(this,arguments)};return J.called=!1,J},BU=function(Z){var J=function(){if(J.called)throw new Error(J.onceError);return J.called=!0,J.value=Z.apply(this,arguments)},X=Z.name||"Function wrapped with `once`";return J.onceError=X+" shouldn't be called more than once",J.called=!1,J},VU=vZ();hZ.exports=VU(k5);hZ.exports.strict=VU(BU);k5.proto=k5(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return k5(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return BU(this)},configurable:!0})})});var qU=O((UF,WU)=>{var AG=function(Z,J){if(y6[Z])return y6[Z].push(J),null;else return y6[Z]=[J],_G(Z)},_G=function(Z){return CG(function J(){var X=y6[Z],Q=X.length,Y=SG(arguments);try{for(var U=0;UQ)X.splice(0,Q),process.nextTick(function(){J.apply(null,Y)});else delete y6[Z]}})},SG=function(Z){var J=Z.length,X=[];for(var Q=0;Q{var t8=function(Z,J,X){if(typeof J==="function")X=J,J={};if(!J)J={};if(J.sync){if(X)throw new TypeError("callback provided to sync glob");return fZ(Z,J)}return new $0(Z,J,X)},mG=function(Z,J){if(J===null||typeof J!=="object")return Z;var X=Object.keys(J),Q=X.length;while(Q--)Z[X[Q]]=J[X[Q]];return Z},$0=function(Z,J,X){if(typeof J==="function")X=J,J=null;if(J&&J.sync){if(X)throw new TypeError("callback provided to sync glob");return new fG(Z,J)}if(!(this instanceof $0))return new $0(Z,J,X);bG(this,Z,J),this._didRealPath=!1;var Q=this.minimatch.set.length;if(this.matches=new Array(Q),typeof X==="function")X=uG(X),this.on("error",X),this.on("end",function(V){X(null,V)});var Y=this;if(this._processing=0,this._emitQueue=[],this._processQueue=[],this.paused=!1,this.noprocess)return this;if(Q===0)return $();var U=!0;for(var z=0;z1)return!0;for(var U=0;Uthis.maxLength)return J();if(!this.stat&&uZ(this.cache,X)){var Y=this.cache[X];if(Array.isArray(Y))Y="DIR";if(!Q||Y==="DIR")return J(null,Y);if(Q&&Y==="FILE")return J()}var U,z=this.statCache[X];if(z!==void 0)if(z===!1)return J(null,z);else{var $=z.isDirectory()?"DIR":"FILE";if(Q&&$==="FILE")return J();else return J(null,$,z)}var V=this,B=mZ("stat\0"+X,W);if(B)V.fs.lstat(X,B);function W(N,q){if(q&&q.isSymbolicLink())return V.fs.stat(X,function(I,H){if(I)V._stat2(Z,X,null,q,J);else V._stat2(Z,X,I,H,J)});else V._stat2(Z,X,N,q,J)}};$0.prototype._stat2=function(Z,J,X,Q,Y){if(X&&(X.code==="ENOENT"||X.code==="ENOTDIR"))return this.statCache[J]=!1,Y();var U=Z.slice(-1)==="/";if(this.statCache[J]=Q,J.slice(-1)==="/"&&Q&&!Q.isDirectory())return Y(null,!1,Q);var z=!0;if(Q)z=Q.isDirectory()?"DIR":"FILE";if(this.cache[J]=this.cache[J]||z,U&&z==="FILE")return Y();return Y(null,z,Q)}});var IU=O((BF,HU)=>{var GU=xZ(),dG=HU.exports=function(Z,J,X){var Q,Y=[];if(!Array.isArray(Z))Z=[Z];if(Q=Z.length,typeof J==="function")X=J,J={};if(!Q)return process.nextTick(function(){X(null,[])});Z.forEach(function(U){GU(U,J,function(z,$){if(z)return X(z);if(Y=Y.concat($),Q-=1,!Q)return X(null,Y)})})};dG.sync=function(Z,J){J=J||{};var X=[],Q,Y;if(!Array.isArray(Z))Z=[Z];for(Q=0,Y=Z.length;Q=J)return Z;return" ".repeat(J-X>>1)+Z};function aZ(Z,J){return b0=J,new oZ({width:(Z===null||Z===void 0?void 0:Z.width)||SU(),wrap:Z===null||Z===void 0?void 0:Z.wrap})}var AU={right:xU,center:vU};class oZ{constructor(Z){var J;this.width=Z.width,this.wrap=(J=Z.wrap)!==null&&J!==void 0?J:!0,this.rows=[]}span(...Z){const J=this.div(...Z);J.span=!0}resetOutput(){this.rows=[]}div(...Z){if(Z.length===0)this.div("");if(this.wrap&&this.shouldApplyLayoutDSL(...Z)&&typeof Z[0]==="string")return this.applyLayoutDSL(Z[0]);const J=Z.map((X)=>{if(typeof X==="string")return this.colFromString(X);return X});return this.rows.push(J),J}shouldApplyLayoutDSL(...Z){return Z.length===1&&typeof Z[0]==="string"&&/[\t\n]/.test(Z[0])}applyLayoutDSL(Z){const J=Z.split("\n").map((Q)=>Q.split("\t"));let X=0;return J.forEach((Q)=>{if(Q.length>1&&b0.stringWidth(Q[0])>X)X=Math.min(Math.floor(this.width*0.5),b0.stringWidth(Q[0]))}),J.forEach((Q)=>{this.div(...Q.map((Y,U)=>{return{text:Y.trim(),padding:this.measurePadding(Y),width:U===0&&Q.length>1?X:void 0}}))}),this.rows[this.rows.length-1]}colFromString(Z){return{text:Z,padding:this.measurePadding(Z)}}measurePadding(Z){const J=b0.stripAnsi(Z);return[0,J.match(/\s*$/)[0].length,0,J.match(/^\s*/)[0].length]}toString(){const Z=[];return this.rows.forEach((J)=>{this.rowToString(J,Z)}),Z.filter((J)=>!J.hidden).map((J)=>J.text).join("\n")}rowToString(Z,J){return this.rasterize(Z).forEach((X,Q)=>{let Y="";X.forEach((U,z)=>{const{width:$}=Z[z],V=this.negatePadding(Z[z]);let B=U;if(V>b0.stringWidth(U))B+=" ".repeat(V-b0.stringWidth(U));if(Z[z].align&&Z[z].align!=="left"&&this.wrap){const N=AU[Z[z].align];if(B=N(B,V),b0.stringWidth(B)0)Y=this.renderInline(Y,J[J.length-1])}),J.push({text:Y.replace(/ +$/,""),span:Z.span})}),J}renderInline(Z,J){const X=Z.match(/^ */),Q=X?X[0].length:0,Y=J.text,U=b0.stringWidth(Y.trimRight());if(!J.span)return Z;if(!this.wrap)return J.hidden=!0,Y+Z;if(Q{if(Y.width=X[U],this.wrap)Q=b0.wrap(Y.text,this.negatePadding(Y),{hard:!0}).split("\n");else Q=Y.text.split("\n");if(Y.border)Q.unshift("."+"-".repeat(this.negatePadding(Y)+2)+"."),Q.push("'"+"-".repeat(this.negatePadding(Y)+2)+"'");if(Y.padding)Q.unshift(...new Array(Y.padding[0]||0).fill("")),Q.push(...new Array(Y.padding[2]||0).fill(""));Q.forEach((z,$)=>{if(!J[$])J.push([]);const V=J[$];for(let B=0;B{return U.width||b0.stringWidth(U.text)});let J=Z.length,X=this.width;const Q=Z.map((U)=>{if(U.width)return J--,X-=U.width,U.width;return}),Y=J?Math.floor(X/J):0;return Q.map((U,z)=>{if(U===void 0)return Math.max(Y,_U(Z[z]));return U})}}var b0;function u5(Z){return Z.replace(rZ,"")}function sZ(Z,J){const[X,Q]=Z.match(rZ)||["",""];Z=u5(Z);let Y="";for(let U=0;U{return[...J].length},stripAnsi:u5,wrap:sZ})}import{dirname as tZ,resolve as eZ} from"path";import{readdirSync as hU,statSync as bU} from"fs";function m5(Z,J){let X=eZ(".",Z),Q;if(!bU(X).isDirectory())X=tZ(X);while(!0){if(Q=J(X,hU(X)),Q)return eZ(X,Q);if(X=tZ(Q=X),Q===X)break}}import{inspect as Zz} from"util";import{readFileSync as Jz} from"fs";import{fileURLToPath as Xz} from"url";import{format as uU} from"util";import{normalize as fU,resolve as mU} from"path";function R8(Z){if(!(Z!==Z.toLowerCase()&&Z!==Z.toUpperCase()))Z=Z.toLowerCase();if(Z.indexOf("-")===-1&&Z.indexOf("_")===-1)return Z;else{let X="",Q=!1;const Y=Z.match(/^-+/);for(let U=Y?Y[0].length:0;U0)Q+=`${J}${X.charAt(Y)}`;else Q+=z}return Q}function g6(Z){if(Z===null||Z===void 0)return!1;if(typeof Z==="number")return!0;if(/^0x[0-9a-f]+$/i.test(Z))return!0;if(/^0[^.]/.test(Z))return!1;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(Z)}function ZJ(Z){if(Array.isArray(Z))return Z.map((z)=>typeof z!=="string"?z+"":z);Z=Z.trim();let J=0,X=null,Q=null,Y=null;const U=[];for(let z=0;z{if(typeof j==="number")G.nargs[M]=j,G.keys.push(M)});if(typeof X.coerce==="object")Object.entries(X.coerce).forEach(([M,j])=>{if(typeof j==="function")G.coercions[M]=j,G.keys.push(M)});if(typeof X.config!=="undefined"){if(Array.isArray(X.config)||typeof X.config==="string")[].concat(X.config).filter(Boolean).forEach(function(M){G.configs[M]=!0});else if(typeof X.config==="object")Object.entries(X.config).forEach(([M,j])=>{if(typeof j==="boolean"||typeof j==="function")G.configs[M]=j})}T0(X.key,U,X.default,G.arrays),Object.keys($).forEach(function(M){(G.aliases[M]||[]).forEach(function(j){$[j]=$[M]})});let S=null;z0();let k=[];const b=Object.assign(Object.create(null),{_:[]}),l={};for(let M=0;M=3)if(t(m[1],G.arrays))M=g(M,m[1],Q,m[2]);else if(t(m[1],G.nargs)!==!1)M=d(M,m[1],Q,m[2]);else R(m[1],m[2],!0)}else if(j.match(P)&&z["boolean-negation"]){if(m=j.match(P),m!==null&&Array.isArray(m)&&m.length>=2)T=m[1],R(T,t(T,G.arrays)?[!1]:!1)}else if(j.match(/^--.+/)||!z["short-option-groups"]&&j.match(/^-[^-]+/)){if(m=j.match(/^--?(.+)/),m!==null&&Array.isArray(m)&&m.length>=2)if(T=m[1],t(T,G.arrays))M=g(M,T,Q);else if(t(T,G.nargs)!==!1)M=d(M,T,Q);else if(s=Q[M+1],s!==void 0&&(!s.match(/^-/)||s.match(E))&&!t(T,G.bools)&&!t(T,G.counts))R(T,s),M++;else if(/^(true|false)$/.test(s))R(T,s),M++;else R(T,A(T))}else if(j.match(/^-.\..+=/)){if(m=j.match(/^-([^=]+)=([\s\S]*)$/),m!==null&&Array.isArray(m)&&m.length>=3)R(m[1],m[2])}else if(j.match(/^-.\..+/)&&!j.match(E)){if(s=Q[M+1],m=j.match(/^-(.\..+)/),m!==null&&Array.isArray(m)&&m.length>=2)if(T=m[1],s!==void 0&&!s.match(/^-/)&&!t(T,G.bools)&&!t(T,G.counts))R(T,s),M++;else R(T,A(T))}else if(j.match(/^-[^-]+/)&&!j.match(E)){n=j.slice(1,-1).split(""),w=!1;for(let w0=0;w0M!=="--"&&M.includes("-")).forEach((M)=>{delete b[M]});if(z["strip-aliased"])[].concat(...Object.keys(U).map((M)=>U[M])).forEach((M)=>{if(z["camel-case-expansion"]&&M.includes("-"))delete b[M.split(".").map((j)=>R8(j)).join(".")];delete b[M]});function J0(M){const j=C("_",M);if(typeof j==="string"||typeof j==="number")b._.push(j)}function d(M,j,v,w){let T,n=t(j,G.nargs);if(n=typeof n!=="number"||isNaN(n)?1:n,n===0){if(!o(w))S=Error(H("Argument unexpected for: %s",j));return R(j,A(j)),M}let m=o(w)?0:1;if(z["nargs-eats-options"]){if(v.length-(M+1)+m0)R(j,w),s--;for(T=M+1;T0||m&&typeof m==="number"&&T.length>=m)break;if(n=v[s],/^-/.test(n)&&!E.test(n)&&!U0(n))break;M=s,T.push(L(j,n,Y))}}if(typeof m==="number"&&(m&&T.length1&&z["dot-notation"])(G.aliases[T[0]]||[]).forEach(function(n){let m=n.split(".");const s=[].concat(T);if(s.shift(),m=m.concat(s),!(G.aliases[M]||[]).includes(m.join(".")))V0(b,m,w)});if(t(M,G.normalize)&&!t(M,G.arrays))[M].concat(G.aliases[M]||[]).forEach(function(m){Object.defineProperty(l,m,{enumerable:!0,get(){return j},set(s){j=typeof s==="string"?z8.normalize(s):s}})})}function p(M,j){if(!(G.aliases[M]&&G.aliases[M].length))G.aliases[M]=[j],q[j]=!0;if(!(G.aliases[j]&&G.aliases[j].length))p(j,M)}function L(M,j,v){if(v)j=yU(j);if(t(M,G.bools)||t(M,G.counts)){if(typeof j==="string")j=j==="true"}let w=Array.isArray(j)?j.map(function(T){return C(M,T)}):C(M,j);if(t(M,G.counts)&&(o(w)||typeof w==="boolean"))w=g5();if(t(M,G.normalize)&&t(M,G.arrays))if(Array.isArray(j))w=j.map((T)=>{return z8.normalize(T)});else w=z8.normalize(j);return w}function C(M,j){if(!z["parse-positional-numbers"]&&M==="_")return j;if(!t(M,G.strings)&&!t(M,G.bools)&&!Array.isArray(j)){if(g6(j)&&z["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${j}`)))||!o(j)&&t(M,G.numbers))j=Number(j)}return j}function _(M){const j=Object.create(null);e(j,G.aliases,$),Object.keys(G.configs).forEach(function(v){const w=M[v]||j[v];if(w)try{let T=null;const n=z8.resolve(z8.cwd(),w),m=G.configs[v];if(typeof m==="function"){try{T=m(n)}catch(s){T=s}if(T instanceof Error){S=T;return}}else T=z8.require(n);y(T)}catch(T){if(T.name==="PermissionDenied")S=T;else if(M[v])S=Error(H("Invalid JSON config file: %s",w))}})}function y(M,j){Object.keys(M).forEach(function(v){const w=M[v],T=j?j+"."+v:v;if(typeof w==="object"&&w!==null&&!Array.isArray(w)&&z["dot-notation"])y(w,T);else if(!Y0(b,T.split("."))||t(T,G.arrays)&&z["combine-arrays"])R(T,w)})}function F(){if(typeof V!=="undefined")V.forEach(function(M){y(M)})}function D(M,j){if(typeof B==="undefined")return;const v=typeof B==="string"?B:"",w=z8.env();Object.keys(w).forEach(function(T){if(v===""||T.lastIndexOf(v,0)===0){const n=T.split("__").map(function(m,s){if(s===0)m=m.substring(v.length);return R8(m)});if((j&&G.configs[n.join(".")]||!j)&&!Y0(M,n))R(n.join("."),w[T])}})}function u(M){let j;const v=new Set;Object.keys(M).forEach(function(w){if(!v.has(w)){if(j=t(w,G.coercions),typeof j==="function")try{const T=C(w,j(M[w]));[].concat(G.aliases[w]||[],w).forEach((n)=>{v.add(n),M[n]=T})}catch(T){S=T}}})}function f(M){return G.keys.forEach((j)=>{if(~j.indexOf("."))return;if(typeof M[j]==="undefined")M[j]=void 0}),M}function e(M,j,v,w=!1){Object.keys(v).forEach(function(T){if(!Y0(M,T.split("."))){if(V0(M,T.split("."),v[T]),w)I[T]=!0;(j[T]||[]).forEach(function(n){if(Y0(M,n.split(".")))return;V0(M,n.split("."),v[T])})}})}function Y0(M,j){let v=M;if(!z["dot-notation"])j=[j.join(".")];j.slice(0,-1).forEach(function(T){v=v[T]||{}});const w=j[j.length-1];if(typeof v!=="object")return!1;else return w in v}function V0(M,j,v){let w=M;if(!z["dot-notation"])j=[j.join(".")];j.slice(0,-1).forEach(function(F0){if(F0=JJ(F0),typeof w==="object"&&w[F0]===void 0)w[F0]={};if(typeof w[F0]!=="object"||Array.isArray(w[F0])){if(Array.isArray(w[F0]))w[F0].push({});else w[F0]=[w[F0],{}];w=w[F0][w[F0].length-1]}else w=w[F0]});const T=JJ(j[j.length-1]),n=t(j.join("."),G.arrays),m=Array.isArray(v);let s=z["duplicate-arguments-array"];if(!s&&t(T,G.nargs)){if(s=!0,!o(w[T])&&G.nargs[T]===1||Array.isArray(w[T])&&w[T].length===G.nargs[T])w[T]=void 0}if(v===g5())w[T]=g5(w[T]);else if(Array.isArray(w[T]))if(s&&n&&m)w[T]=z["flatten-duplicate-arrays"]?w[T].concat(v):(Array.isArray(w[T][0])?w[T]:[w[T]]).concat([v]);else if(!s&&Boolean(n)===Boolean(m))w[T]=v;else w[T]=w[T].concat([v]);else if(w[T]===void 0&&n)w[T]=m?v:[v];else if(s&&!(w[T]===void 0||t(T,G.counts)||t(T,G.bools)))w[T]=[w[T],v];else w[T]=v}function T0(...M){M.forEach(function(j){Object.keys(j||{}).forEach(function(v){if(G.aliases[v])return;G.aliases[v]=[].concat(U[v]||[]),G.aliases[v].concat(v).forEach(function(w){if(/-/.test(w)&&z["camel-case-expansion"]){const T=R8(w);if(T!==v&&G.aliases[v].indexOf(T)===-1)G.aliases[v].push(T),q[T]=!0}}),G.aliases[v].concat(v).forEach(function(w){if(w.length>1&&/[A-Z]/.test(w)&&z["camel-case-expansion"]){const T=m6(w,"-");if(T!==v&&G.aliases[v].indexOf(T)===-1)G.aliases[v].push(T),q[T]=!0}}),G.aliases[v].forEach(function(w){G.aliases[w]=[v].concat(G.aliases[v].filter(function(T){return w!==T}))})})})}function t(M,j){const v=[].concat(G.aliases[M]||[],M),w=Object.keys(j),T=v.find((n)=>w.includes(n));return T?j[T]:!1}function _0(M){const j=Object.keys(G);return[].concat(j.map((w)=>G[w])).some(function(w){return Array.isArray(w)?w.includes(M):w[M]})}function h0(M,...j){return[].concat(...j).some(function(w){const T=M.match(w);return T&&_0(T[1])})}function h(M){if(M.match(E)||!M.match(/^-[^-]+/))return!1;let j=!0,v;const w=M.slice(1).split("");for(let T=0;T{if(t(M,G.arrays))return S=Error(H("Invalid configuration: %s, opts.count excludes opts.array.",M)),!0;else if(t(M,G.nargs))return S=Error(H("Invalid configuration: %s, opts.count excludes opts.narg.",M)),!0;return!1})}return{aliases:Object.assign({},G.aliases),argv:Object.assign(l,b),configuration:z,defaulted:Object.assign({},I),error:S,newAliases:Object.assign({},q)}}}import{readFileSync as gU} from"fs";var c5,l5,p5,XJ=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12,QJ=(l5=(c5=process===null||process===void 0?void 0:process.versions)===null||c5===void 0?void 0:c5.node)!==null&&l5!==void 0?l5:(p5=process===null||process===void 0?void 0:process.version)===null||p5===void 0?void 0:p5.slice(1);if(QJ){if(Number(QJ.match(/^([^.]+)/)[1]){return dU},format:uU,normalize:fU,resolve:mU,require:(Z)=>{if(typeof require!=="undefined")returnimport.meta.require(Z);else if(Z.match(/\.json$/))return JSON.parse(gU(Z,"utf8"));else throw Error("only .json config files are supported in ESM")}}),I6=function Z(J,X){return YJ.parse(J.slice(),X).argv};I6.detailed=function(Z,J){return YJ.parse(Z.slice(),J)};I6.camelCase=R8;I6.decamelize=m6;I6.looksLikeNumber=g6;var UJ=I6;import{basename as Qz,dirname as Yz,extname as Uz,relative as zz,resolve as qJ} from"path";var cU=function(){if(lU())return 0;return 1},lU=function(){return pU()&&!process.defaultApp},pU=function(){return!!process.versions.electron};function zJ(){return process.argv[cU()]}class B0 extends Error{constructor(Z){super(Z||"yargs error");if(this.name="YError",Error.captureStackTrace)Error.captureStackTrace(this,B0)}}import{readFileSync as nU,statSync as iU,writeFile as oU} from"fs";import{format as aU} from"util";import{resolve as rU} from"path";var $J={fs:{readFileSync:nU,writeFile:oU},format:aU,resolve:rU,exists:(Z)=>{try{return iU(Z).isFile()}catch(J){return!1}}};function BJ(Z,J){t0=J;const X=new VJ(Z);return{__:X.__.bind(X),__n:X.__n.bind(X),setLocale:X.setLocale.bind(X),getLocale:X.getLocale.bind(X),updateLocale:X.updateLocale.bind(X),locale:X.locale}}var t0;class VJ{constructor(Z){Z=Z||{},this.directory=Z.directory||"./locales",this.updateFiles=typeof Z.updateFiles==="boolean"?Z.updateFiles:!0,this.locale=Z.locale||"en",this.fallbackToLanguage=typeof Z.fallbackToLanguage==="boolean"?Z.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...Z){if(typeof arguments[0]!=="string")return this._taggedLiteral(arguments[0],...arguments);const J=Z.shift();let X=function(){};if(typeof Z[Z.length-1]==="function")X=Z.pop();if(X=X||function(){},!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][J]&&this.updateFiles)this.cache[this.locale][J]=J,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:X});else X();return t0.format.apply(t0.format,[this.cache[this.locale][J]||J].concat(Z))}__n(){const Z=Array.prototype.slice.call(arguments),J=Z.shift(),X=Z.shift(),Q=Z.shift();let Y=function(){};if(typeof Z[Z.length-1]==="function")Y=Z.pop();if(!this.cache[this.locale])this._readLocaleFile();let U=Q===1?J:X;if(this.cache[this.locale][J])U=this.cache[this.locale][J][Q===1?"one":"other"];if(!this.cache[this.locale][J]&&this.updateFiles)this.cache[this.locale][J]={one:J,other:X},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:Y});else Y();const z=[U];if(~U.indexOf("%d"))z.push(Q);return t0.format.apply(t0.format,z.concat(Z))}setLocale(Z){this.locale=Z}getLocale(){return this.locale}updateLocale(Z){if(!this.cache[this.locale])this._readLocaleFile();for(let J in Z)if(Object.prototype.hasOwnProperty.call(Z,J))this.cache[this.locale][J]=Z[J]}_taggedLiteral(Z,...J){let X="";return Z.forEach(function(Q,Y){const U=J[Y+1];if(X+=Q,typeof U!=="undefined")X+="%s"}),this.__.apply(this,[X].concat([].slice.call(J,1)))}_enqueueWrite(Z){if(this.writeQueue.push(Z),this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){const Z=this,J=this.writeQueue[0],X=J.directory,Q=J.locale,Y=J.cb,U=this._resolveLocaleFile(X,Q),z=JSON.stringify(this.cache[Q],null,2);t0.fs.writeFile(U,z,"utf-8",function($){if(Z.writeQueue.shift(),Z.writeQueue.length>0)Z._processWriteQueue();Y($)})}_readLocaleFile(){let Z={};const J=this._resolveLocaleFile(this.directory,this.locale);try{if(t0.fs.readFileSync)Z=JSON.parse(t0.fs.readFileSync(J,"utf-8"))}catch(X){if(X instanceof SyntaxError)X.message="syntax error in "+J;if(X.code==="ENOENT")Z={};else throw X}this.cache[this.locale]=Z}_resolveLocaleFile(Z,J){let X=t0.resolve(Z,"./",J+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(X)&&~J.lastIndexOf("_")){const Q=t0.resolve(Z,"./",J.split("_")[0]+".json");if(this._fileExistsSync(Q))X=Q}return X}_fileExistsSync(Z){return t0.exists(Z)}}var sU=(Z)=>{return BJ(Z,$J)},WJ=sU;var $z="require is not supported by ESM",KJ="loading a directory of commands is not supported yet for ESM",M6;try{M6=Xz(import.meta.url)}catch(Z){M6=process.cwd()}var Vz=M6.substring(0,M6.lastIndexOf("node_modules")),NJ={assert:{notStrictEqual:tU,strictEqual:eU},cliui:f5,findUp:m5,getEnv:(Z)=>{return process.env[Z]},inspect:Zz,getCallerFile:()=>{throw new B0(KJ)},getProcessArgvBin:zJ,mainFilename:Vz||process.cwd(),Parser:UJ,path:{basename:Qz,dirname:Yz,extname:Uz,relative:zz,resolve:qJ},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(Z,J)=>process.emitWarning(Z,J),execPath:()=>process.execPath,exit:process.exit,nextTick:process.nextTick,stdColumns:typeof process.stdout.columns!=="undefined"?process.stdout.columns:null},readFileSync:Jz,require:()=>{throw new B0($z)},requireDirectory:()=>{throw new B0(KJ)},stringWidth:(Z)=>{return[...Z].length},y18n:WJ({directory:qJ(M6,"../../../locales"),updateFiles:!1})};function O0(Z,J,X,Q){X.assert.notStrictEqual(Z,J,Q)}function n5(Z,J){J.assert.strictEqual(typeof Z,"string")}function Z6(Z){return Object.keys(Z)}function W0(Z){return!!Z&&!!Z.then&&typeof Z.then==="function"}function q8(Z){const X=Z.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),Q=/\.*[\][<>]/g,Y=X.shift();if(!Y)throw new Error(`No command found in: ${Z}`);const U={cmd:Y.replace(Q,""),demanded:[],optional:[]};return X.forEach((z,$)=>{let V=!1;if(z=z.replace(/\s/g,""),/\.+[\]>]/.test(z)&&$===X.length-1)V=!0;if(/^\[/.test(z))U.optional.push({cmd:z.replace(Q,"").split("|"),variadic:V});else U.demanded.push({cmd:z.replace(Q,"").split("|"),variadic:V})}),U}function c(Z,J,X){function Q(){return typeof Z==="object"?[{demanded:[],optional:[]},Z,J]:[q8(`cmd ${Z}`),J,X]}try{let Y=0;const[U,z,$]=Q(),V=[].slice.call(z);while(V.length&&V[V.length-1]===void 0)V.pop();const B=$||V.length;if(BW)throw new B0(`Too many arguments provided. Expected max ${W} but received ${B}.`);U.demanded.forEach((N)=>{const q=V.shift(),I=GJ(q);if(N.cmd.filter((G)=>G===I||G==="*").length===0)HJ(I,N.cmd,Y);Y+=1}),U.optional.forEach((N)=>{if(V.length===0)return;const q=V.shift(),I=GJ(q);if(N.cmd.filter((G)=>G===I||G==="*").length===0)HJ(I,N.cmd,Y);Y+=1})}catch(Y){console.warn(Y.stack)}}var GJ=function(Z){if(Array.isArray(Z))return"array";else if(Z===null)return"null";return typeof Z},HJ=function(Z,J,X){throw new B0(`Invalid ${Bz[X]||"manyith"} argument. Expected ${J.join(" or ")} but received ${Z}.`)},Bz=["first","second","third","fourth","fifth","sixth"];function IJ(Z){if(!Z)return[];return Z.map((J)=>{return J.applyBeforeValidation=!1,J})}function C8(Z,J,X,Q){return X.reduce((Y,U)=>{if(U.applyBeforeValidation!==Q)return Y;if(U.mutates){if(U.applied)return Y;U.applied=!0}if(W0(Y))return Y.then((z)=>Promise.all([z,U(z,J)])).then(([z,$])=>Object.assign(z,$));else{const z=U(Y,J);return W0(z)?z.then(($)=>Object.assign(Y,$)):Object.assign(Y,z)}},Z)}class i5{constructor(Z){this.globalMiddleware=[],this.frozens=[],this.yargs=Z}addMiddleware(Z,J,X=!0,Q=!1){if(c(" [boolean] [boolean] [boolean]",[Z,J,X],arguments.length),Array.isArray(Z)){for(let Y=0;Y{const Y=[...X[J]||[],J];if(!Q.option)return!0;else return!Y.includes(Q.option)}),Z.option=J,this.addMiddleware(Z,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){const Z=this.frozens.pop();if(Z!==void 0)this.globalMiddleware=Z}reset(){this.globalMiddleware=this.globalMiddleware.filter((Z)=>Z.global)}}function A8(Z,J,X=(Q)=>{throw Q}){try{const Q=Wz(Z)?Z():Z;return W0(Q)?Q.then((Y)=>J(Y)):J(Q)}catch(Q){return X(Q)}}var Wz=function(Z){return typeof Z==="function"};function o5(Z){if(typeof require==="undefined")return null;for(let J=0,X=Object.keys(require.cache),Q;Jtypeof J==="string")};function d6(Z){return typeof Z==="function"}var Kz=function(Z){return typeof Z==="object"};function Nz(Z){return typeof Z==="object"&&!Array.isArray(Z)}var J6=/(^\*)|(^\$0)/;class LJ{constructor(Z,J,X,Q){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=Q,this.usage=Z,this.globalMiddleware=X,this.validation=J}addDirectory(Z,J,X,Q){if(Q=Q||{},typeof Q.recurse!=="boolean")Q.recurse=!1;if(!Array.isArray(Q.extensions))Q.extensions=["js"];const Y=typeof Q.visit==="function"?Q.visit:(U)=>U;Q.visit=(U,z,$)=>{const V=Y(U,z,$);if(V){if(this.requireCache.has(z))return V;else this.requireCache.add(z);this.addHandler(V)}return V},this.shim.requireDirectory({require:J,filename:X},Z,Q)}addHandler(Z,J,X,Q,Y,U){let z=[];const $=IJ(Y);if(Q=Q||(()=>{}),Array.isArray(Z))if(qz(Z))[Z,...z]=Z;else for(let V of Z)this.addHandler(V);else if(Nz(Z)){let V=Array.isArray(Z.command)||typeof Z.command==="string"?Z.command:this.moduleName(Z);if(Z.aliases)V=[].concat(V).concat(Z.aliases);this.addHandler(V,this.extractDesc(Z),Z.builder,Z.handler,Z.middlewares,Z.deprecated);return}else if(MJ(X)){this.addHandler([Z].concat(z),J,X.builder,X.handler,X.middlewares,X.deprecated);return}if(typeof Z==="string"){const V=q8(Z);z=z.map((N)=>q8(N).cmd);let B=!1;const W=[V.cmd].concat(z).filter((N)=>{if(J6.test(N))return B=!0,!1;return!0});if(W.length===0&&B)W.push("$0");if(B)V.cmd=W[0],z=W.slice(1),Z=Z.replace(J6,V.cmd);if(z.forEach((N)=>{this.aliasMap[N]=V.cmd}),J!==!1)this.usage.command(Z,J,B,z,U);if(this.handlers[V.cmd]={original:Z,description:J,handler:Q,builder:X||{},middlewares:$,deprecated:U,demanded:V.demanded,optional:V.optional},B)this.defaultCommand=this.handlers[V.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(Z,J,X,Q,Y,U){const z=this.handlers[Z]||this.handlers[this.aliasMap[Z]]||this.defaultCommand,$=J.getInternalMethods().getContext(),V=$.commands.slice(),B=!Z;if(Z)$.commands.push(Z),$.fullCommands.push(z.original);const W=this.applyBuilderUpdateUsageAndParse(B,z,J,X.aliases,V,Q,Y,U);return W0(W)?W.then((N)=>this.applyMiddlewareAndGetResult(B,z,N.innerArgv,$,Y,N.aliases,J)):this.applyMiddlewareAndGetResult(B,z,W.innerArgv,$,Y,W.aliases,J)}applyBuilderUpdateUsageAndParse(Z,J,X,Q,Y,U,z,$){const V=J.builder;let B=X;if(d6(V)){X.getInternalMethods().getUsageInstance().freeze();const W=V(X.getInternalMethods().reset(Q),$);if(W0(W))return W.then((N)=>{return B=jJ(N)?N:X,this.parseAndUpdateUsage(Z,J,B,Y,U,z)})}else if(Kz(V))X.getInternalMethods().getUsageInstance().freeze(),B=X.getInternalMethods().reset(Q),Object.keys(J.builder).forEach((W)=>{B.option(W,V[W])});return this.parseAndUpdateUsage(Z,J,B,Y,U,z)}parseAndUpdateUsage(Z,J,X,Q,Y,U){if(Z)X.getInternalMethods().getUsageInstance().unfreeze(!0);if(this.shouldUpdateUsage(X))X.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(Q,J),J.description);const z=X.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,Y,U);return W0(z)?z.then(($)=>({aliases:X.parsed.aliases,innerArgv:$})):{aliases:X.parsed.aliases,innerArgv:z}}shouldUpdateUsage(Z){return!Z.getInternalMethods().getUsageInstance().getUsageDisabled()&&Z.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(Z,J){const X=J6.test(J.original)?J.original.replace(J6,"").trim():J.original,Q=Z.filter((Y)=>{return!J6.test(Y)});return Q.push(X),`\$0 ${Q.join(" ")}`}handleValidationAndGetResult(Z,J,X,Q,Y,U,z,$){if(!U.getInternalMethods().getHasOutput()){const V=U.getInternalMethods().runValidation(Y,$,U.parsed.error,Z);X=A8(X,(B)=>{return V(B),B})}if(J.handler&&!U.getInternalMethods().getHasOutput()){U.getInternalMethods().setHasOutput();const V=!!U.getOptions().configuration["populate--"];if(U.getInternalMethods().postProcess(X,V,!1,!1),X=C8(X,U,z,!1),X=A8(X,(B)=>{const W=J.handler(B);return W0(W)?W.then(()=>B):B}),!Z)U.getInternalMethods().getUsageInstance().cacheHelpMessage();if(W0(X)&&!U.getInternalMethods().hasParseCallback())X.catch((B)=>{try{U.getInternalMethods().getUsageInstance().fail(null,B)}catch(W){}})}if(!Z)Q.commands.pop(),Q.fullCommands.pop();return X}applyMiddlewareAndGetResult(Z,J,X,Q,Y,U,z){let $={};if(Y)return X;if(!z.getInternalMethods().getHasOutput())$=this.populatePositionals(J,X,Q,z);const V=this.globalMiddleware.getMiddleware().slice(0).concat(J.middlewares),B=C8(X,z,V,!0);return W0(B)?B.then((W)=>this.handleValidationAndGetResult(Z,J,W,Q,U,z,V,$)):this.handleValidationAndGetResult(Z,J,B,Q,U,z,V,$)}populatePositionals(Z,J,X,Q){J._=J._.slice(X.commands.length);const Y=Z.demanded.slice(0),U=Z.optional.slice(0),z={};this.validation.positionalCount(Y.length,J._.length);while(Y.length){const $=Y.shift();this.populatePositional($,J,z)}while(U.length){const $=U.shift();this.populatePositional($,J,z)}return J._=X.commands.concat(J._.map(($)=>""+$)),this.postProcessPositionals(J,z,this.cmdToParseOptions(Z.original),Q),z}populatePositional(Z,J,X){const Q=Z.cmd[0];if(Z.variadic)X[Q]=J._.splice(0).map(String);else if(J._.length)X[Q]=[String(J._.shift())]}cmdToParseOptions(Z){const J={array:[],default:{},alias:{},demand:{}},X=q8(Z);return X.demanded.forEach((Q)=>{const[Y,...U]=Q.cmd;if(Q.variadic)J.array.push(Y),J.default[Y]=[];J.alias[Y]=U,J.demand[Y]=!0}),X.optional.forEach((Q)=>{const[Y,...U]=Q.cmd;if(Q.variadic)J.array.push(Y),J.default[Y]=[];J.alias[Y]=U}),J}postProcessPositionals(Z,J,X,Q){const Y=Object.assign({},Q.getOptions());Y.default=Object.assign(X.default,Y.default);for(let V of Object.keys(X.alias))Y.alias[V]=(Y.alias[V]||[]).concat(X.alias[V]);Y.array=Y.array.concat(X.array),Y.config={};const U=[];if(Object.keys(J).forEach((V)=>{J[V].map((B)=>{if(Y.configuration["unknown-options-as-args"])Y.key[V]=!0;U.push(`--${V}`),U.push(B)})}),!U.length)return;const z=Object.assign({},Y.configuration,{"populate--":!1}),$=this.shim.Parser.detailed(U,Object.assign({},Y,{configuration:z}));if($.error)Q.getInternalMethods().getUsageInstance().fail($.error.message,$.error);else{const V=Object.keys(J);Object.keys(J).forEach((B)=>{V.push(...$.aliases[B])}),Object.keys($.argv).forEach((B)=>{if(V.includes(B)){if(!J[B])J[B]=$.argv[B];if(!this.isInConfigs(Q,B)&&!this.isDefaulted(Q,B)&&Object.prototype.hasOwnProperty.call(Z,B)&&Object.prototype.hasOwnProperty.call($.argv,B)&&(Array.isArray(Z[B])||Array.isArray($.argv[B])))Z[B]=[].concat(Z[B],$.argv[B]);else Z[B]=$.argv[B]}})}}isDefaulted(Z,J){const{default:X}=Z.getOptions();return Object.prototype.hasOwnProperty.call(X,J)||Object.prototype.hasOwnProperty.call(X,this.shim.Parser.camelCase(J))}isInConfigs(Z,J){const{configObjects:X}=Z.getOptions();return X.some((Q)=>Object.prototype.hasOwnProperty.call(Q,J))||X.some((Q)=>Object.prototype.hasOwnProperty.call(Q,this.shim.Parser.camelCase(J)))}runDefaultBuilderOn(Z){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(Z)){const X=J6.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");Z.getInternalMethods().getUsageInstance().usage(X,this.defaultCommand.description)}const J=this.defaultCommand.builder;if(d6(J))return J(Z,!0);else if(!MJ(J))Object.keys(J).forEach((X)=>{Z.option(X,J[X])});return}moduleName(Z){const J=o5(Z);if(!J)throw new Error(`No command name given for module: ${this.shim.inspect(Z)}`);return this.commandFromFilename(J.filename)}commandFromFilename(Z){return this.shim.path.basename(Z,this.shim.path.extname(Z))}extractDesc({describe:Z,description:J,desc:X}){for(let Q of[Z,J,X]){if(typeof Q==="string"||Q===!1)return Q;O0(Q,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){const Z=this.frozens.pop();O0(Z,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=Z}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}}function K8(Z={},J=()=>!0){const X={};return Z6(Z).forEach((Q)=>{if(J(Q,Z[Q]))X[Q]=Z[Q]}),X}function N8(Z){if(typeof process==="undefined")return;[process.stdout,process.stderr].forEach((J)=>{const X=J;if(X._handle&&X.isTTY&&typeof X._handle.setBlocking==="function")X._handle.setBlocking(Z)})}var Gz=function(Z){return typeof Z==="boolean"};function TJ(Z,J){const X=J.y18n.__,Q={},Y=[];Q.failFn=function L(C){Y.push(C)};let U=null,z=null,$=!0;Q.showHelpOnFail=function L(C=!0,_){const[y,F]=typeof C==="string"?[!0,C]:[C,_];if(Z.getInternalMethods().isGlobalContext())z=F;return U=F,$=y,Q};let V=!1;Q.fail=function L(C,_){const y=Z.getInternalMethods().getLoggerInstance();if(Y.length)for(let F=Y.length-1;F>=0;--F){const D=Y[F];if(Gz(D)){if(_)throw _;else if(C)throw Error(C)}else D(C,_,Q)}else{if(Z.getExitProcess())N8(!0);if(!V){if(V=!0,$)Z.showHelp("error"),y.error();if(C||_)y.error(C||_);const F=U||z;if(F){if(C||_)y.error("");y.error(F)}}if(_=_||new B0(C),Z.getExitProcess())return Z.exit(1);else if(Z.getInternalMethods().hasParseCallback())return Z.exit(1,_);else throw _}};let B=[],W=!1;Q.usage=(L,C)=>{if(L===null)return W=!0,B=[],Q;return W=!1,B.push([L,C||""]),Q},Q.getUsage=()=>{return B},Q.getUsageDisabled=()=>{return W},Q.getPositionalGroupName=()=>{return X("Positionals:")};let N=[];Q.example=(L,C)=>{N.push([L,C||""])};let q=[];Q.command=function L(C,_,y,F,D=!1){if(y)q=q.map((u)=>{return u[2]=!1,u});q.push([C,_||"",y,F,D])},Q.getCommands=()=>q;let I={};Q.describe=function L(C,_){if(Array.isArray(C))C.forEach((y)=>{Q.describe(y,_)});else if(typeof C==="object")Object.keys(C).forEach((y)=>{Q.describe(y,C[y])});else I[C]=_},Q.getDescriptions=()=>I;let H=[];Q.epilog=(L)=>{H.push(L)};let G=!1,E;Q.wrap=(L)=>{G=!0,E=L},Q.getWrap=()=>{if(J.getEnv("YARGS_DISABLE_WRAP"))return null;if(!G)E=g(),G=!0;return E};const P="__yargsString__:";Q.deferY18nLookup=(L)=>P+L,Q.help=function L(){if(b)return b;k();const C=Z.customScriptName?Z.$0:J.path.basename(Z.$0),_=Z.getDemandedOptions(),y=Z.getDemandedCommands(),F=Z.getDeprecatedOptions(),D=Z.getGroups(),u=Z.getOptions();let f=[];f=f.concat(Object.keys(I)),f=f.concat(Object.keys(_)),f=f.concat(Object.keys(y)),f=f.concat(Object.keys(u.default)),f=f.filter(J0),f=Object.keys(f.reduce((h,U0)=>{if(U0!=="_")h[U0]=!0;return h},{}));const e=Q.getWrap(),Y0=J.cliui({width:e,wrap:!!e});if(!W){if(B.length)B.forEach((h)=>{if(Y0.div({text:`${h[0].replace(/\$0/g,C)}`}),h[1])Y0.div({text:`${h[1]}`,padding:[1,0,0,0]})}),Y0.div();else if(q.length){let h=null;if(y._)h=`${C} <${X("command")}>\n`;else h=`${C} [${X("command")}]\n`;Y0.div(`${h}`)}}if(q.length>1||q.length===1&&!q[0][2]){Y0.div(X("Commands:"));const h=Z.getInternalMethods().getContext(),U0=h.commands.length?`${h.commands.join(" ")} `:"";if(Z.getInternalMethods().getParserConfiguration()["sort-commands"]===!0)q=q.sort((A,X0)=>A[0].localeCompare(X0[0]));const K0=C?`${C} `:"";q.forEach((A)=>{const X0=`${K0}${U0}${A[0].replace(/^\$0 ?/,"")}`;Y0.span({text:X0,padding:[0,2,0,2],width:S(q,e,`${C}${U0}`)+4},{text:A[1]});const x=[];if(A[2])x.push(`[${X("default")}]`);if(A[3]&&A[3].length)x.push(`[${X("aliases:")} ${A[3].join(", ")}]`);if(A[4])if(typeof A[4]==="string")x.push(`[${X("deprecated: %s",A[4])}]`);else x.push(`[${X("deprecated")}]`);if(x.length)Y0.div({text:x.join(" "),padding:[0,0,0,2],align:"right"});else Y0.div()}),Y0.div()}const V0=(Object.keys(u.alias)||[]).concat(Object.keys(Z.parsed.newAliases)||[]);f=f.filter((h)=>!Z.parsed.newAliases[h]&&V0.every((U0)=>(u.alias[U0]||[]).indexOf(h)===-1));const T0=X("Options:");if(!D[T0])D[T0]=[];l(f,u.alias,D,T0);const t=(h)=>/^--/.test(c6(h)),_0=Object.keys(D).filter((h)=>D[h].length>0).map((h)=>{const U0=D[h].filter(J0).map((K0)=>{if(V0.includes(K0))return K0;for(let A=0,X0;(X0=V0[A])!==void 0;A++)if((u.alias[X0]||[]).includes(K0))return X0;return K0});return{groupName:h,normalizedKeys:U0}}).filter(({normalizedKeys:h})=>h.length>0).map(({groupName:h,normalizedKeys:U0})=>{const K0=U0.reduce((A,X0)=>{return A[X0]=[X0].concat(u.alias[X0]||[]).map((x)=>{if(h===Q.getPositionalGroupName())return x;else return(/^[0-9]$/.test(x)?u.boolean.includes(X0)?"-":"--":x.length>1?"--":"-")+x}).sort((x,o)=>t(x)===t(o)?0:t(x)?1:-1).join(", "),A},{});return{groupName:h,normalizedKeys:U0,switches:K0}});if(_0.filter(({groupName:h})=>h!==Q.getPositionalGroupName()).some(({normalizedKeys:h,switches:U0})=>!h.every((K0)=>t(U0[K0]))))_0.filter(({groupName:h})=>h!==Q.getPositionalGroupName()).forEach(({normalizedKeys:h,switches:U0})=>{h.forEach((K0)=>{if(t(U0[K0]))U0[K0]=Hz(U0[K0],"-x, ".length)})});if(_0.forEach(({groupName:h,normalizedKeys:U0,switches:K0})=>{Y0.div(h),U0.forEach((A)=>{const X0=K0[A];let x=I[A]||"",o=null;if(x.includes(P))x=X(x.substring(P.length));if(u.boolean.includes(A))o=`[${X("boolean")}]`;if(u.count.includes(A))o=`[${X("count")}]`;if(u.string.includes(A))o=`[${X("string")}]`;if(u.normalize.includes(A))o=`[${X("string")}]`;if(u.array.includes(A))o=`[${X("array")}]`;if(u.number.includes(A))o=`[${X("number")}]`;const z0=(v)=>typeof v==="string"?`[${X("deprecated: %s",v)}]`:`[${X("deprecated")}]`,M=[A in F?z0(F[A]):null,o,A in _?`[${X("required")}]`:null,u.choices&&u.choices[A]?`[${X("choices:")} ${Q.stringifiedValues(u.choices[A])}]`:null,d(u.default[A],u.defaultDescription[A])].filter(Boolean).join(" ");Y0.span({text:c6(X0),padding:[0,2,0,2+DJ(X0)],width:S(K0,e)+4},x);const j=Z.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;if(M&&!j)Y0.div({text:M,padding:[0,0,0,2],align:"right"});else Y0.div()}),Y0.div()}),N.length)Y0.div(X("Examples:")),N.forEach((h)=>{h[0]=h[0].replace(/\$0/g,C)}),N.forEach((h)=>{if(h[1]==="")Y0.div({text:h[0],padding:[0,2,0,2]});else Y0.div({text:h[0],padding:[0,2,0,2],width:S(N,e)+4},{text:h[1]})}),Y0.div();if(H.length>0){const h=H.map((U0)=>U0.replace(/\$0/g,C)).join("\n");Y0.div(`${h}\n`)}return Y0.toString().replace(/\s*$/,"")};function S(L,C,_){let y=0;if(!Array.isArray(L))L=Object.values(L).map((F)=>[F]);if(L.forEach((F)=>{y=Math.max(J.stringWidth(_?`${_} ${c6(F[0])}`:c6(F[0]))+DJ(F[0]),y)}),C)y=Math.min(y,parseInt((C*0.5).toString(),10));return y}function k(){const L=Z.getDemandedOptions(),C=Z.getOptions();(Object.keys(C.alias)||[]).forEach((_)=>{C.alias[_].forEach((y)=>{if(I[y])Q.describe(_,I[y]);if(y in L)Z.demandOption(_,L[y]);if(C.boolean.includes(y))Z.boolean(_);if(C.count.includes(y))Z.count(_);if(C.string.includes(y))Z.string(_);if(C.normalize.includes(y))Z.normalize(_);if(C.array.includes(y))Z.array(_);if(C.number.includes(y))Z.number(_)})})}let b;Q.cacheHelpMessage=function(){b=this.help()},Q.clearCachedHelpMessage=function(){b=void 0},Q.hasCachedHelpMessage=function(){return!!b};function l(L,C,_,y){let F=[],D=null;return Object.keys(_).forEach((u)=>{F=F.concat(_[u])}),L.forEach((u)=>{if(D=[u].concat(C[u]),!D.some((f)=>F.indexOf(f)!==-1))_[y].push(u)}),F}function J0(L){return Z.getOptions().hiddenOptions.indexOf(L)<0||Z.parsed.argv[Z.getOptions().showHiddenOpt]}Q.showHelp=(L)=>{const C=Z.getInternalMethods().getLoggerInstance();if(!L)L="error";(typeof L==="function"?L:C[L])(Q.help())},Q.functionDescription=(L)=>{return["(",L.name?J.Parser.decamelize(L.name,"-"):X("generated-value"),")"].join("")},Q.stringifiedValues=function L(C,_){let y="";const F=_||", ",D=[].concat(C);if(!C||!D.length)return y;return D.forEach((u)=>{if(y.length)y+=F;y+=JSON.stringify(u)}),y};function d(L,C){let _=`[${X("default:")} `;if(L===void 0&&!C)return null;if(C)_+=C;else switch(typeof L){case"string":_+=`"${L}"`;break;case"object":_+=JSON.stringify(L);break;default:_+=L}return`${_}]`}function g(){if(J.process.stdColumns)return Math.min(80,J.process.stdColumns);else return 80}let R=null;Q.version=(L)=>{R=L},Q.showVersion=(L)=>{const C=Z.getInternalMethods().getLoggerInstance();if(!L)L="error";(typeof L==="function"?L:C[L])(R)},Q.reset=function L(C){return U=null,V=!1,B=[],W=!1,H=[],N=[],q=[],I=K8(I,(_)=>!C[_]),Q};const p=[];return Q.freeze=function L(){p.push({failMessage:U,failureOutput:V,usages:B,usageDisabled:W,epilogs:H,examples:N,commands:q,descriptions:I})},Q.unfreeze=function L(C=!1){const _=p.pop();if(!_)return;if(C)I={..._.descriptions,...I},q=[..._.commands,...q],B=[..._.usages,...B],N=[..._.examples,...N],H=[..._.epilogs,...H];else({failMessage:U,failureOutput:V,usages:B,usageDisabled:W,epilogs:H,examples:N,commands:q,descriptions:I}=_)},Q}var a5=function(Z){return typeof Z==="object"},Hz=function(Z,J){return a5(Z)?{text:Z.text,indentation:Z.indentation+J}:{text:Z,indentation:J}},DJ=function(Z){return a5(Z)?Z.indentation:0},c6=function(Z){return a5(Z)?Z.text:Z};var EJ=`###-begin-{{app_name}}-completions-### -# -# yargs command completion script -# -# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc -# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. -# -_{{app_name}}_yargs_completions() -{ - local cur_word args type_list - - cur_word="\${COMP_WORDS[COMP_CWORD]}" - args=("\${COMP_WORDS[@]}") - - # ask yargs to generate completions. - type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") - - COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) - - # if no match was found, fall back to filename completion - if [ \${#COMPREPLY[@]} -eq 0 ]; then - COMPREPLY=() - fi - - return 0 -} -complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}} -###-end-{{app_name}}-completions-### -`,PJ=`#compdef {{app_name}} -###-begin-{{app_name}}-completions-### -# -# yargs command completion script -# -# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc -# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. -# -_{{app_name}}_yargs_completions() -{ - local reply - local si=$IFS - IFS=$' -' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) - IFS=$si - _describe 'values' reply -} -compdef _{{app_name}}_yargs_completions {{app_name}} -###-end-{{app_name}}-completions-### -`;function OJ(Z,J,X,Q){return new wJ(Z,J,X,Q)}var Mz=function(Z){return Z.length<3},Lz=function(Z){return Z.length>3};class wJ{constructor(Z,J,X,Q){var Y,U,z;this.yargs=Z,this.usage=J,this.command=X,this.shim=Q,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(z=((Y=this.shim.getEnv("SHELL"))===null||Y===void 0?void 0:Y.includes("zsh"))||((U=this.shim.getEnv("ZSH_NAME"))===null||U===void 0?void 0:U.includes("zsh")))!==null&&z!==void 0?z:!1}defaultCompletion(Z,J,X,Q){const Y=this.command.getCommandHandlers();for(let z=0,$=Z.length;z<$;++z)if(Y[Z[z]]&&Y[Z[z]].builder){const V=Y[Z[z]].builder;if(d6(V)){this.indexAfterLastReset=z+1;const B=this.yargs.getInternalMethods().reset();return V(B,!0),B.argv}}const U=[];this.commandCompletions(U,Z,X),this.optionCompletions(U,Z,J,X),this.choicesFromOptionsCompletions(U,Z,J,X),this.choicesFromPositionalsCompletions(U,Z,J,X),Q(null,U)}commandCompletions(Z,J,X){const Q=this.yargs.getInternalMethods().getContext().commands;if(!X.match(/^-/)&&Q[Q.length-1]!==X&&!this.previousArgHasChoices(J))this.usage.getCommands().forEach((Y)=>{const U=q8(Y[0]).cmd;if(J.indexOf(U)===-1)if(!this.zshShell)Z.push(U);else{const z=Y[1]||"";Z.push(U.replace(/:/g,"\\:")+":"+z)}})}optionCompletions(Z,J,X,Q){if((Q.match(/^-/)||Q===""&&Z.length===0)&&!this.previousArgHasChoices(J)){const Y=this.yargs.getOptions(),U=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(Y.key).forEach((z)=>{const $=!!Y.configuration["boolean-negation"]&&Y.boolean.includes(z);if(!U.includes(z)&&!Y.hiddenOptions.includes(z)&&!this.argsContainKey(J,z,$))this.completeOptionKey(z,Z,Q,$&&!!Y.default[z])})}}choicesFromOptionsCompletions(Z,J,X,Q){if(this.previousArgHasChoices(J)){const Y=this.getPreviousArgChoices(J);if(Y&&Y.length>0)Z.push(...Y.map((U)=>U.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(Z,J,X,Q){if(Q===""&&Z.length>0&&this.previousArgHasChoices(J))return;const Y=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],U=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),z=Y[X._.length-U-1];if(!z)return;const $=this.yargs.getOptions().choices[z]||[];for(let V of $)if(V.startsWith(Q))Z.push(V.replace(/:/g,"\\:"))}getPreviousArgChoices(Z){if(Z.length<1)return;let J=Z[Z.length-1],X="";if(!J.startsWith("-")&&Z.length>1)X=J,J=Z[Z.length-2];if(!J.startsWith("-"))return;const Q=J.replace(/^-+/,""),Y=this.yargs.getOptions(),U=[Q,...this.yargs.getAliases()[Q]||[]];let z;for(let $ of U)if(Object.prototype.hasOwnProperty.call(Y.key,$)&&Array.isArray(Y.choices[$])){z=Y.choices[$];break}if(z)return z.filter(($)=>!X||$.startsWith(X))}previousArgHasChoices(Z){const J=this.getPreviousArgChoices(Z);return J!==void 0&&J.length>0}argsContainKey(Z,J,X){const Q=(Y)=>Z.indexOf((/^[^0-9]$/.test(Y)?"-":"--")+Y)!==-1;if(Q(J))return!0;if(X&&Q(`no-${J}`))return!0;if(this.aliases){for(let Y of this.aliases[J])if(Q(Y))return!0}return!1}completeOptionKey(Z,J,X,Q){var Y,U,z,$;let V=Z;if(this.zshShell){const q=this.usage.getDescriptions(),I=(U=(Y=this===null||this===void 0?void 0:this.aliases)===null||Y===void 0?void 0:Y[Z])===null||U===void 0?void 0:U.find((E)=>{const P=q[E];return typeof P==="string"&&P.length>0}),H=I?q[I]:void 0,G=($=(z=q[Z])!==null&&z!==void 0?z:H)!==null&&$!==void 0?$:"";V=`${Z.replace(/:/g,"\\:")}:${G.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}const B=(q)=>/^--/.test(q),W=(q)=>/^[^0-9]$/.test(q),N=!B(X)&&W(Z)?"-":"--";if(J.push(N+V),Q)J.push(N+"no-"+V)}customCompletion(Z,J,X,Q){if(O0(this.customCompletionFunction,null,this.shim),Mz(this.customCompletionFunction)){const Y=this.customCompletionFunction(X,J);if(W0(Y))return Y.then((U)=>{this.shim.process.nextTick(()=>{Q(null,U)})}).catch((U)=>{this.shim.process.nextTick(()=>{Q(U,void 0)})});return Q(null,Y)}else if(Lz(this.customCompletionFunction))return this.customCompletionFunction(X,J,(Y=Q)=>this.defaultCompletion(Z,J,X,Y),(Y)=>{Q(null,Y)});else return this.customCompletionFunction(X,J,(Y)=>{Q(null,Y)})}getCompletion(Z,J){const X=Z.length?Z[Z.length-1]:"",Q=this.yargs.parse(Z,!0),Y=this.customCompletionFunction?(U)=>this.customCompletion(Z,U,X,J):(U)=>this.defaultCompletion(Z,U,X,J);return W0(Q)?Q.then(Y):Y(Q)}generateCompletionScript(Z,J){let X=this.zshShell?PJ:EJ;const Q=this.shim.path.basename(Z);if(Z.match(/\.js$/))Z=`./${Z}`;return X=X.replace(/{{app_name}}/g,Q),X=X.replace(/{{completion_command}}/g,J),X.replace(/{{app_path}}/g,Z)}registerFunction(Z){this.customCompletionFunction=Z}setParsed(Z){this.aliases=Z.aliases}}function RJ(Z,J){if(Z.length===0)return J.length;if(J.length===0)return Z.length;const X=[];let Q;for(Q=0;Q<=J.length;Q++)X[Q]=[Q];let Y;for(Y=0;Y<=Z.length;Y++)X[0][Y]=Y;for(Q=1;Q<=J.length;Q++)for(Y=1;Y<=Z.length;Y++)if(J.charAt(Q-1)===Z.charAt(Y-1))X[Q][Y]=X[Q-1][Y-1];else if(Q>1&&Y>1&&J.charAt(Q-2)===Z.charAt(Y-1)&&J.charAt(Q-1)===Z.charAt(Y-2))X[Q][Y]=X[Q-2][Y-2]+1;else X[Q][Y]=Math.min(X[Q-1][Y-1]+1,Math.min(X[Q][Y-1]+1,X[Q-1][Y]+1));return X[J.length][Z.length]}function AJ(Z,J,X){const Q=X.y18n.__,Y=X.y18n.__n,U={};U.nonOptionCount=function W(N){const q=Z.getDemandedCommands(),H=N._.length+(N["--"]?N["--"].length:0)-Z.getInternalMethods().getContext().commands.length;if(q._&&(Hq._.max)){if(Hq._.max)if(q._.maxMsg!==void 0)J.fail(q._.maxMsg?q._.maxMsg.replace(/\$0/g,H.toString()).replace(/\$1/,q._.max.toString()):null);else J.fail(Y("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",H,H.toString(),q._.max.toString()))}},U.positionalCount=function W(N,q){if(q{if(!CJ.includes(b)&&!Object.prototype.hasOwnProperty.call(I,b)&&!Object.prototype.hasOwnProperty.call(Z.getInternalMethods().getParseContext(),b)&&!U.isValidAndSomeAliasIsNotNew(b,q))S.push(b)}),G&&(k.commands.length>0||P.length>0||H))N._.slice(k.commands.length).forEach((b)=>{if(!P.includes(""+b))S.push(""+b)});if(G){const l=((E=Z.getDemandedCommands()._)===null||E===void 0?void 0:E.max)||0,J0=k.commands.length+l;if(J0{if(d=String(d),!k.commands.includes(d)&&!S.includes(d))S.push(d)})}if(S.length)J.fail(Y("Unknown argument: %s","Unknown arguments: %s",S.length,S.map((b)=>b.trim()?b:`"${b}"`).join(", ")))},U.unknownCommands=function W(N){const q=Z.getInternalMethods().getCommandInstance().getCommands(),I=[],H=Z.getInternalMethods().getContext();if(H.commands.length>0||q.length>0)N._.slice(H.commands.length).forEach((G)=>{if(!q.includes(""+G))I.push(""+G)});if(I.length>0)return J.fail(Y("Unknown command: %s","Unknown commands: %s",I.length,I.join(", "))),!0;else return!1},U.isValidAndSomeAliasIsNotNew=function W(N,q){if(!Object.prototype.hasOwnProperty.call(q,N))return!1;const I=Z.parsed.newAliases;return[N,...q[N]].some((H)=>!Object.prototype.hasOwnProperty.call(I,H)||!I[N])},U.limitedChoices=function W(N){const q=Z.getOptions(),I={};if(!Object.keys(q.choices).length)return;Object.keys(N).forEach((E)=>{if(CJ.indexOf(E)===-1&&Object.prototype.hasOwnProperty.call(q.choices,E))[].concat(N[E]).forEach((P)=>{if(q.choices[E].indexOf(P)===-1&&P!==void 0)I[E]=(I[E]||[]).concat(P)})});const H=Object.keys(I);if(!H.length)return;let G=Q("Invalid values:");H.forEach((E)=>{G+=`\n ${Q("Argument: %s, Given: %s, Choices: %s",E,J.stringifiedValues(I[E]),J.stringifiedValues(q.choices[E]))}`}),J.fail(G)};let z={};U.implies=function W(N,q){if(c(" [array|number|string]",[N,q],arguments.length),typeof N==="object")Object.keys(N).forEach((I)=>{U.implies(I,N[I])});else{if(Z.global(N),!z[N])z[N]=[];if(Array.isArray(q))q.forEach((I)=>U.implies(N,I));else O0(q,void 0,X),z[N].push(q)}},U.getImplied=function W(){return z};function $(W,N){const q=Number(N);if(N=isNaN(q)?N:q,typeof N==="number")N=W._.length>=N;else if(N.match(/^--no-.+/))N=N.match(/^--no-(.+)/)[1],N=!Object.prototype.hasOwnProperty.call(W,N);else N=Object.prototype.hasOwnProperty.call(W,N);return N}U.implications=function W(N){const q=[];if(Object.keys(z).forEach((I)=>{const H=I;(z[I]||[]).forEach((G)=>{let E=H;const P=G;if(E=$(N,E),G=$(N,G),E&&!G)q.push(` ${H} -> ${P}`)})}),q.length){let I=`${Q("Implications failed:")}\n`;q.forEach((H)=>{I+=H}),J.fail(I)}};let V={};U.conflicts=function W(N,q){if(c(" [array|string]",[N,q],arguments.length),typeof N==="object")Object.keys(N).forEach((I)=>{U.conflicts(I,N[I])});else{if(Z.global(N),!V[N])V[N]=[];if(Array.isArray(q))q.forEach((I)=>U.conflicts(N,I));else V[N].push(q)}},U.getConflicting=()=>V,U.conflicting=function W(N){if(Object.keys(N).forEach((q)=>{if(V[q])V[q].forEach((I)=>{if(I&&N[q]!==void 0&&N[I]!==void 0)J.fail(Q("Arguments %s and %s are mutually exclusive",q,I))})}),Z.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(V).forEach((q)=>{V[q].forEach((I)=>{if(I&&N[X.Parser.camelCase(q)]!==void 0&&N[X.Parser.camelCase(I)]!==void 0)J.fail(Q("Arguments %s and %s are mutually exclusive",q,I))})})},U.recommendCommands=function W(N,q){q=q.sort((E,P)=>P.length-E.length);let H=null,G=Infinity;for(let E=0,P;(P=q[E])!==void 0;E++){const S=RJ(N,P);if(S<=3&&S!N[q]),V=K8(V,(q)=>!N[q]),U};const B=[];return U.freeze=function W(){B.push({implied:z,conflicting:V})},U.unfreeze=function W(){const N=B.pop();O0(N,void 0,X),{implied:z,conflicting:V}=N},U}var CJ=["$0","--","_"];function l6(Z,J,X,Q){L6=Q;let Y={};if(Object.prototype.hasOwnProperty.call(Z,"extends")){if(typeof Z.extends!=="string")return Y;const U=/\.json|\..*rc$/.test(Z.extends);let z=null;if(!U)try{z=require.resolve(Z.extends)}catch($){return Z}else z=jz(J,Z.extends);Fz(z),r5.push(z),Y=U?JSON.parse(L6.readFileSync(z,"utf8")):import.meta.require(Z.extends),delete Z.extends,Y=l6(Y,L6.path.dirname(z),X,L6)}return r5=[],X?_J(Y,Z):Object.assign({},Y,Z)}var Fz=function(Z){if(r5.indexOf(Z)>-1)throw new B0(`Circular extended configurations: '${Z}'.`)},jz=function(Z,J){return L6.path.resolve(Z,J)},_J=function(Z,J){const X={};function Q(Y){return Y&&typeof Y==="object"&&!Array.isArray(Y)}Object.assign(X,Z);for(let Y of Object.keys(J))if(Q(J[Y])&&Q(X[Y]))X[Y]=_J(Z[Y],J[Y]);else X[Y]=J[Y];return X},r5=[],L6;function rJ(Z){return(J=[],X=Z.process.cwd(),Q)=>{const Y=new sJ(J,X,Q,Z);return Object.defineProperty(Y,"argv",{get:()=>{return Y.parse()},enumerable:!0}),Y.help(),Y.version(),Y}}function jJ(Z){return!!Z&&typeof Z.getInternalMethods==="function"}var i=function(Z,J,X,Q,Y){if(Q==="m")throw new TypeError("Private method is not writable");if(Q==="a"&&!Y)throw new TypeError("Private accessor was defined without a setter");if(typeof J==="function"?Z!==J||!Y:!J.has(Z))throw new TypeError("Cannot write private member to an object whose class did not declare it");return Q==="a"?Y.call(Z,X):Y?Y.value=X:J.set(Z,X),X},K=function(Z,J,X,Q){if(X==="a"&&!Q)throw new TypeError("Private accessor was defined without a getter");if(typeof J==="function"?Z!==J||!Q:!J.has(Z))throw new TypeError("Cannot read private member from an object whose class did not declare it");return X==="m"?Q:X==="a"?Q.call(Z):Q?Q.value:J.get(Z)},H0,_8,F6,c0,k0,p6,G8,S8,n6,l0,i6,p0,Q8,y0,n0,o6,X6,j0,r,a6,r6,u0,x8,Q6,v8,H8,s6,Z0,h8,b8,k8,Q0,t6,Y8,G0,SJ=Symbol("copyDoubleDash"),xJ=Symbol("copyDoubleDash"),s5=Symbol("deleteFromParserHintObject"),vJ=Symbol("emitWarning"),hJ=Symbol("freeze"),bJ=Symbol("getDollarZero"),y8=Symbol("getParserConfiguration"),kJ=Symbol("getUsageConfiguration"),t5=Symbol("guessLocale"),yJ=Symbol("guessVersion"),uJ=Symbol("parsePositionalNumbers"),e5=Symbol("pkgUp"),I8=Symbol("populateParserHintArray"),Y6=Symbol("populateParserHintSingleValueDictionary"),Z7=Symbol("populateParserHintArrayDictionary"),J7=Symbol("populateParserHintDictionary"),X7=Symbol("sanitizeKey"),Q7=Symbol("setKey"),Y7=Symbol("unfreeze"),fJ=Symbol("validateAsync"),mJ=Symbol("getCommandInstance"),gJ=Symbol("getContext"),dJ=Symbol("getHasOutput"),cJ=Symbol("getLoggerInstance"),lJ=Symbol("getParseContext"),pJ=Symbol("getUsageInstance"),nJ=Symbol("getValidationInstance"),e6=Symbol("hasParseCallback"),iJ=Symbol("isGlobalContext"),u8=Symbol("postProcess"),oJ=Symbol("rebase"),U7=Symbol("reset"),j6=Symbol("runYargsParserAndExecuteCommands"),z7=Symbol("runValidation"),aJ=Symbol("setHasOutput"),f8=Symbol("kTrackManuallySetKeys");class sJ{constructor(Z=[],J,X,Q){this.customScriptName=!1,this.parsed=!1,H0.set(this,void 0),_8.set(this,void 0),F6.set(this,{commands:[],fullCommands:[]}),c0.set(this,null),k0.set(this,null),p6.set(this,"show-hidden"),G8.set(this,null),S8.set(this,!0),n6.set(this,{}),l0.set(this,!0),i6.set(this,[]),p0.set(this,void 0),Q8.set(this,{}),y0.set(this,!1),n0.set(this,null),o6.set(this,!0),X6.set(this,void 0),j0.set(this,""),r.set(this,void 0),a6.set(this,void 0),r6.set(this,{}),u0.set(this,null),x8.set(this,null),Q6.set(this,{}),v8.set(this,{}),H8.set(this,void 0),s6.set(this,!1),Z0.set(this,void 0),h8.set(this,!1),b8.set(this,!1),k8.set(this,!1),Q0.set(this,void 0),t6.set(this,{}),Y8.set(this,null),G0.set(this,void 0),i(this,Z0,Q,"f"),i(this,H8,Z,"f"),i(this,_8,J,"f"),i(this,a6,X,"f"),i(this,p0,new i5(this),"f"),this.$0=this[bJ](),this[U7](),i(this,H0,K(this,H0,"f"),"f"),i(this,Q0,K(this,Q0,"f"),"f"),i(this,G0,K(this,G0,"f"),"f"),i(this,r,K(this,r,"f"),"f"),K(this,r,"f").showHiddenOpt=K(this,p6,"f"),i(this,X6,this[xJ](),"f")}addHelpOpt(Z,J){if(c("[string|boolean] [string]",[Z,J],arguments.length),K(this,n0,"f"))this[s5](K(this,n0,"f")),i(this,n0,null,"f");if(Z===!1&&J===void 0)return this;return i(this,n0,typeof Z==="string"?Z:"help","f"),this.boolean(K(this,n0,"f")),this.describe(K(this,n0,"f"),J||K(this,Q0,"f").deferY18nLookup("Show help")),this}help(Z,J){return this.addHelpOpt(Z,J)}addShowHiddenOpt(Z,J){if(c("[string|boolean] [string]",[Z,J],arguments.length),Z===!1&&J===void 0)return this;const X=typeof Z==="string"?Z:K(this,p6,"f");return this.boolean(X),this.describe(X,J||K(this,Q0,"f").deferY18nLookup("Show hidden options")),K(this,r,"f").showHiddenOpt=X,this}showHidden(Z,J){return this.addShowHiddenOpt(Z,J)}alias(Z,J){return c(" [string|array]",[Z,J],arguments.length),this[Z7](this.alias.bind(this),"alias",Z,J),this}array(Z){return c("",[Z],arguments.length),this[I8]("array",Z),this[f8](Z),this}boolean(Z){return c("",[Z],arguments.length),this[I8]("boolean",Z),this[f8](Z),this}check(Z,J){return c(" [boolean]",[Z,J],arguments.length),this.middleware((X,Q)=>{return A8(()=>{return Z(X,Q.getOptions())},(Y)=>{if(!Y)K(this,Q0,"f").fail(K(this,Z0,"f").y18n.__("Argument check failed: %s",Z.toString()));else if(typeof Y==="string"||Y instanceof Error)K(this,Q0,"f").fail(Y.toString(),Y);return X},(Y)=>{return K(this,Q0,"f").fail(Y.message?Y.message:Y.toString(),Y),X})},!1,J),this}choices(Z,J){return c(" [string|array]",[Z,J],arguments.length),this[Z7](this.choices.bind(this),"choices",Z,J),this}coerce(Z,J){if(c(" [function]",[Z,J],arguments.length),Array.isArray(Z)){if(!J)throw new B0("coerce callback must be provided");for(let X of Z)this.coerce(X,J);return this}else if(typeof Z==="object"){for(let X of Object.keys(Z))this.coerce(X,Z[X]);return this}if(!J)throw new B0("coerce callback must be provided");return K(this,r,"f").key[Z]=!0,K(this,p0,"f").addCoerceMiddleware((X,Q)=>{let Y;if(!Object.prototype.hasOwnProperty.call(X,Z))return X;return A8(()=>{return Y=Q.getAliases(),J(X[Z])},(z)=>{X[Z]=z;const $=Q.getInternalMethods().getParserConfiguration()["strip-aliased"];if(Y[Z]&&$!==!0)for(let V of Y[Z])X[V]=z;return X},(z)=>{throw new B0(z.message)})},Z),this}conflicts(Z,J){return c(" [string|array]",[Z,J],arguments.length),K(this,G0,"f").conflicts(Z,J),this}config(Z="config",J,X){if(c("[object|string] [string|function] [function]",[Z,J,X],arguments.length),typeof Z==="object"&&!Array.isArray(Z))return Z=l6(Z,K(this,_8,"f"),this[y8]()["deep-merge-config"]||!1,K(this,Z0,"f")),K(this,r,"f").configObjects=(K(this,r,"f").configObjects||[]).concat(Z),this;if(typeof J==="function")X=J,J=void 0;return this.describe(Z,J||K(this,Q0,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(Z)?Z:[Z]).forEach((Q)=>{K(this,r,"f").config[Q]=X||!0}),this}completion(Z,J,X){if(c("[string] [string|boolean|function] [function]",[Z,J,X],arguments.length),typeof J==="function")X=J,J=void 0;if(i(this,k0,Z||K(this,k0,"f")||"completion","f"),!J&&J!==!1)J="generate completion script";if(this.command(K(this,k0,"f"),J),X)K(this,c0,"f").registerFunction(X);return this}command(Z,J,X,Q,Y,U){return c(" [string|boolean] [function|object] [function] [array] [boolean|string]",[Z,J,X,Q,Y,U],arguments.length),K(this,H0,"f").addHandler(Z,J,X,Q,Y,U),this}commands(Z,J,X,Q,Y,U){return this.command(Z,J,X,Q,Y,U)}commandDir(Z,J){c(" [object]",[Z,J],arguments.length);const X=K(this,a6,"f")||K(this,Z0,"f").require;return K(this,H0,"f").addDirectory(Z,X,K(this,Z0,"f").getCallerFile(),J),this}count(Z){return c("",[Z],arguments.length),this[I8]("count",Z),this[f8](Z),this}default(Z,J,X){if(c(" [*] [string]",[Z,J,X],arguments.length),X)n5(Z,K(this,Z0,"f")),K(this,r,"f").defaultDescription[Z]=X;if(typeof J==="function"){if(n5(Z,K(this,Z0,"f")),!K(this,r,"f").defaultDescription[Z])K(this,r,"f").defaultDescription[Z]=K(this,Q0,"f").functionDescription(J);J=J.call()}return this[Y6](this.default.bind(this),"default",Z,J),this}defaults(Z,J,X){return this.default(Z,J,X)}demandCommand(Z=1,J,X,Q){if(c("[number] [number|string] [string|null|undefined] [string|null|undefined]",[Z,J,X,Q],arguments.length),typeof J!=="number")X=J,J=Infinity;return this.global("_",!1),K(this,r,"f").demandedCommands._={min:Z,max:J,minMsg:X,maxMsg:Q},this}demand(Z,J,X){if(Array.isArray(J))J.forEach((Q)=>{O0(X,!0,K(this,Z0,"f")),this.demandOption(Q,X)}),J=Infinity;else if(typeof J!=="number")X=J,J=Infinity;if(typeof Z==="number")O0(X,!0,K(this,Z0,"f")),this.demandCommand(Z,J,X,X);else if(Array.isArray(Z))Z.forEach((Q)=>{O0(X,!0,K(this,Z0,"f")),this.demandOption(Q,X)});else if(typeof X==="string")this.demandOption(Z,X);else if(X===!0||typeof X==="undefined")this.demandOption(Z);return this}demandOption(Z,J){return c(" [string]",[Z,J],arguments.length),this[Y6](this.demandOption.bind(this),"demandedOptions",Z,J),this}deprecateOption(Z,J){return c(" [string|boolean]",[Z,J],arguments.length),K(this,r,"f").deprecatedOptions[Z]=J,this}describe(Z,J){return c(" [string]",[Z,J],arguments.length),this[Q7](Z,!0),K(this,Q0,"f").describe(Z,J),this}detectLocale(Z){return c("",[Z],arguments.length),i(this,S8,Z,"f"),this}env(Z){if(c("[string|boolean]",[Z],arguments.length),Z===!1)delete K(this,r,"f").envPrefix;else K(this,r,"f").envPrefix=Z||"";return this}epilogue(Z){return c("",[Z],arguments.length),K(this,Q0,"f").epilog(Z),this}epilog(Z){return this.epilogue(Z)}example(Z,J){if(c(" [string]",[Z,J],arguments.length),Array.isArray(Z))Z.forEach((X)=>this.example(...X));else K(this,Q0,"f").example(Z,J);return this}exit(Z,J){if(i(this,y0,!0,"f"),i(this,G8,J,"f"),K(this,l0,"f"))K(this,Z0,"f").process.exit(Z)}exitProcess(Z=!0){return c("[boolean]",[Z],arguments.length),i(this,l0,Z,"f"),this}fail(Z){if(c("",[Z],arguments.length),typeof Z==="boolean"&&Z!==!1)throw new B0("Invalid first argument. Expected function or boolean 'false'");return K(this,Q0,"f").failFn(Z),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(Z,J){if(c(" [function]",[Z,J],arguments.length),!J)return new Promise((X,Q)=>{K(this,c0,"f").getCompletion(Z,(Y,U)=>{if(Y)Q(Y);else X(U)})});else return K(this,c0,"f").getCompletion(Z,J)}getDemandedOptions(){return c([],0),K(this,r,"f").demandedOptions}getDemandedCommands(){return c([],0),K(this,r,"f").demandedCommands}getDeprecatedOptions(){return c([],0),K(this,r,"f").deprecatedOptions}getDetectLocale(){return K(this,S8,"f")}getExitProcess(){return K(this,l0,"f")}getGroups(){return Object.assign({},K(this,Q8,"f"),K(this,v8,"f"))}getHelp(){if(i(this,y0,!0,"f"),!K(this,Q0,"f").hasCachedHelpMessage()){if(!this.parsed){const J=this[j6](K(this,H8,"f"),void 0,void 0,0,!0);if(W0(J))return J.then(()=>{return K(this,Q0,"f").help()})}const Z=K(this,H0,"f").runDefaultBuilderOn(this);if(W0(Z))return Z.then(()=>{return K(this,Q0,"f").help()})}return Promise.resolve(K(this,Q0,"f").help())}getOptions(){return K(this,r,"f")}getStrict(){return K(this,h8,"f")}getStrictCommands(){return K(this,b8,"f")}getStrictOptions(){return K(this,k8,"f")}global(Z,J){if(c(" [boolean]",[Z,J],arguments.length),Z=[].concat(Z),J!==!1)K(this,r,"f").local=K(this,r,"f").local.filter((X)=>Z.indexOf(X)===-1);else Z.forEach((X)=>{if(!K(this,r,"f").local.includes(X))K(this,r,"f").local.push(X)});return this}group(Z,J){c(" ",[Z,J],arguments.length);const X=K(this,v8,"f")[J]||K(this,Q8,"f")[J];if(K(this,v8,"f")[J])delete K(this,v8,"f")[J];const Q={};return K(this,Q8,"f")[J]=(X||[]).concat(Z).filter((Y)=>{if(Q[Y])return!1;return Q[Y]=!0}),this}hide(Z){return c("",[Z],arguments.length),K(this,r,"f").hiddenOptions.push(Z),this}implies(Z,J){return c(" [number|string|array]",[Z,J],arguments.length),K(this,G0,"f").implies(Z,J),this}locale(Z){if(c("[string]",[Z],arguments.length),Z===void 0)return this[t5](),K(this,Z0,"f").y18n.getLocale();return i(this,S8,!1,"f"),K(this,Z0,"f").y18n.setLocale(Z),this}middleware(Z,J,X){return K(this,p0,"f").addMiddleware(Z,!!J,X)}nargs(Z,J){return c(" [number]",[Z,J],arguments.length),this[Y6](this.nargs.bind(this),"narg",Z,J),this}normalize(Z){return c("",[Z],arguments.length),this[I8]("normalize",Z),this}number(Z){return c("",[Z],arguments.length),this[I8]("number",Z),this[f8](Z),this}option(Z,J){if(c(" [object]",[Z,J],arguments.length),typeof Z==="object")Object.keys(Z).forEach((X)=>{this.options(X,Z[X])});else{if(typeof J!=="object")J={};if(this[f8](Z),K(this,Y8,"f")&&(Z==="version"||(J===null||J===void 0?void 0:J.alias)==="version"))this[vJ](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join("\n"),void 0,"versionWarning");if(K(this,r,"f").key[Z]=!0,J.alias)this.alias(Z,J.alias);const X=J.deprecate||J.deprecated;if(X)this.deprecateOption(Z,X);const Q=J.demand||J.required||J.require;if(Q)this.demand(Z,Q);if(J.demandOption)this.demandOption(Z,typeof J.demandOption==="string"?J.demandOption:void 0);if(J.conflicts)this.conflicts(Z,J.conflicts);if("default"in J)this.default(Z,J.default);if(J.implies!==void 0)this.implies(Z,J.implies);if(J.nargs!==void 0)this.nargs(Z,J.nargs);if(J.config)this.config(Z,J.configParser);if(J.normalize)this.normalize(Z);if(J.choices)this.choices(Z,J.choices);if(J.coerce)this.coerce(Z,J.coerce);if(J.group)this.group(Z,J.group);if(J.boolean||J.type==="boolean"){if(this.boolean(Z),J.alias)this.boolean(J.alias)}if(J.array||J.type==="array"){if(this.array(Z),J.alias)this.array(J.alias)}if(J.number||J.type==="number"){if(this.number(Z),J.alias)this.number(J.alias)}if(J.string||J.type==="string"){if(this.string(Z),J.alias)this.string(J.alias)}if(J.count||J.type==="count")this.count(Z);if(typeof J.global==="boolean")this.global(Z,J.global);if(J.defaultDescription)K(this,r,"f").defaultDescription[Z]=J.defaultDescription;if(J.skipValidation)this.skipValidation(Z);const Y=J.describe||J.description||J.desc,U=K(this,Q0,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(U,Z)||typeof Y==="string")this.describe(Z,Y);if(J.hidden)this.hide(Z);if(J.requiresArg)this.requiresArg(Z)}return this}options(Z,J){return this.option(Z,J)}parse(Z,J,X){if(c("[string|array] [function|boolean|object] [function]",[Z,J,X],arguments.length),this[hJ](),typeof Z==="undefined")Z=K(this,H8,"f");if(typeof J==="object")i(this,x8,J,"f"),J=X;if(typeof J==="function")i(this,u0,J,"f"),J=!1;if(!J)i(this,H8,Z,"f");if(K(this,u0,"f"))i(this,l0,!1,"f");const Q=this[j6](Z,!!J),Y=this.parsed;if(K(this,c0,"f").setParsed(this.parsed),W0(Q))return Q.then((U)=>{if(K(this,u0,"f"))K(this,u0,"f").call(this,K(this,G8,"f"),U,K(this,j0,"f"));return U}).catch((U)=>{if(K(this,u0,"f"))K(this,u0,"f")(U,this.parsed.argv,K(this,j0,"f"));throw U}).finally(()=>{this[Y7](),this.parsed=Y});else{if(K(this,u0,"f"))K(this,u0,"f").call(this,K(this,G8,"f"),Q,K(this,j0,"f"));this[Y7](),this.parsed=Y}return Q}parseAsync(Z,J,X){const Q=this.parse(Z,J,X);return!W0(Q)?Promise.resolve(Q):Q}parseSync(Z,J,X){const Q=this.parse(Z,J,X);if(W0(Q))throw new B0(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return Q}parserConfiguration(Z){return c("",[Z],arguments.length),i(this,r6,Z,"f"),this}pkgConf(Z,J){c(" [string]",[Z,J],arguments.length);let X=null;const Q=this[e5](J||K(this,_8,"f"));if(Q[Z]&&typeof Q[Z]==="object")X=l6(Q[Z],J||K(this,_8,"f"),this[y8]()["deep-merge-config"]||!1,K(this,Z0,"f")),K(this,r,"f").configObjects=(K(this,r,"f").configObjects||[]).concat(X);return this}positional(Z,J){c(" ",[Z,J],arguments.length);const X=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];J=K8(J,(U,z)=>{if(U==="type"&&!["string","number","boolean"].includes(z))return!1;return X.includes(U)});const Q=K(this,F6,"f").fullCommands[K(this,F6,"f").fullCommands.length-1],Y=Q?K(this,H0,"f").cmdToParseOptions(Q):{array:[],alias:{},default:{},demand:{}};return Z6(Y).forEach((U)=>{const z=Y[U];if(Array.isArray(z)){if(z.indexOf(Z)!==-1)J[U]=!0}else if(z[Z]&&!(U in J))J[U]=z[Z]}),this.group(Z,K(this,Q0,"f").getPositionalGroupName()),this.option(Z,J)}recommendCommands(Z=!0){return c("[boolean]",[Z],arguments.length),i(this,s6,Z,"f"),this}required(Z,J,X){return this.demand(Z,J,X)}require(Z,J,X){return this.demand(Z,J,X)}requiresArg(Z){if(c(" [number]",[Z],arguments.length),typeof Z==="string"&&K(this,r,"f").narg[Z])return this;else this[Y6](this.requiresArg.bind(this),"narg",Z,NaN);return this}showCompletionScript(Z,J){return c("[string] [string]",[Z,J],arguments.length),Z=Z||this.$0,K(this,X6,"f").log(K(this,c0,"f").generateCompletionScript(Z,J||K(this,k0,"f")||"completion")),this}showHelp(Z){if(c("[string|function]",[Z],arguments.length),i(this,y0,!0,"f"),!K(this,Q0,"f").hasCachedHelpMessage()){if(!this.parsed){const X=this[j6](K(this,H8,"f"),void 0,void 0,0,!0);if(W0(X))return X.then(()=>{K(this,Q0,"f").showHelp(Z)}),this}const J=K(this,H0,"f").runDefaultBuilderOn(this);if(W0(J))return J.then(()=>{K(this,Q0,"f").showHelp(Z)}),this}return K(this,Q0,"f").showHelp(Z),this}scriptName(Z){return this.customScriptName=!0,this.$0=Z,this}showHelpOnFail(Z,J){return c("[boolean|string] [string]",[Z,J],arguments.length),K(this,Q0,"f").showHelpOnFail(Z,J),this}showVersion(Z){return c("[string|function]",[Z],arguments.length),K(this,Q0,"f").showVersion(Z),this}skipValidation(Z){return c("",[Z],arguments.length),this[I8]("skipValidation",Z),this}strict(Z){return c("[boolean]",[Z],arguments.length),i(this,h8,Z!==!1,"f"),this}strictCommands(Z){return c("[boolean]",[Z],arguments.length),i(this,b8,Z!==!1,"f"),this}strictOptions(Z){return c("[boolean]",[Z],arguments.length),i(this,k8,Z!==!1,"f"),this}string(Z){return c("",[Z],arguments.length),this[I8]("string",Z),this[f8](Z),this}terminalWidth(){return c([],0),K(this,Z0,"f").process.stdColumns}updateLocale(Z){return this.updateStrings(Z)}updateStrings(Z){return c("",[Z],arguments.length),i(this,S8,!1,"f"),K(this,Z0,"f").y18n.updateLocale(Z),this}usage(Z,J,X,Q){if(c(" [string|boolean] [function|object] [function]",[Z,J,X,Q],arguments.length),J!==void 0)if(O0(Z,null,K(this,Z0,"f")),(Z||"").match(/^\$0( |$)/))return this.command(Z,J,X,Q);else throw new B0(".usage() description must start with $0 if being used as alias for .command()");else return K(this,Q0,"f").usage(Z),this}usageConfiguration(Z){return c("",[Z],arguments.length),i(this,t6,Z,"f"),this}version(Z,J,X){if(c("[boolean|string] [string] [string]",[Z,J,X],arguments.length),K(this,Y8,"f"))this[s5](K(this,Y8,"f")),K(this,Q0,"f").version(void 0),i(this,Y8,null,"f");if(arguments.length===0)X=this[yJ](),Z="version";else if(arguments.length===1){if(Z===!1)return this;X=Z,Z="version"}else if(arguments.length===2)X=J,J=void 0;return i(this,Y8,typeof Z==="string"?Z:"version","f"),J=J||K(this,Q0,"f").deferY18nLookup("Show version number"),K(this,Q0,"f").version(X||void 0),this.boolean(K(this,Y8,"f")),this.describe(K(this,Y8,"f"),J),this}wrap(Z){return c("",[Z],arguments.length),K(this,Q0,"f").wrap(Z),this}[(H0=new WeakMap,_8=new WeakMap,F6=new WeakMap,c0=new WeakMap,k0=new WeakMap,p6=new WeakMap,G8=new WeakMap,S8=new WeakMap,n6=new WeakMap,l0=new WeakMap,i6=new WeakMap,p0=new WeakMap,Q8=new WeakMap,y0=new WeakMap,n0=new WeakMap,o6=new WeakMap,X6=new WeakMap,j0=new WeakMap,r=new WeakMap,a6=new WeakMap,r6=new WeakMap,u0=new WeakMap,x8=new WeakMap,Q6=new WeakMap,v8=new WeakMap,H8=new WeakMap,s6=new WeakMap,Z0=new WeakMap,h8=new WeakMap,b8=new WeakMap,k8=new WeakMap,Q0=new WeakMap,t6=new WeakMap,Y8=new WeakMap,G0=new WeakMap,SJ)](Z){if(!Z._||!Z["--"])return Z;Z._.push.apply(Z._,Z["--"]);try{delete Z["--"]}catch(J){}return Z}[xJ](){return{log:(...Z)=>{if(!this[e6]())console.log(...Z);if(i(this,y0,!0,"f"),K(this,j0,"f").length)i(this,j0,K(this,j0,"f")+"\n","f");i(this,j0,K(this,j0,"f")+Z.join(" "),"f")},error:(...Z)=>{if(!this[e6]())console.error(...Z);if(i(this,y0,!0,"f"),K(this,j0,"f").length)i(this,j0,K(this,j0,"f")+"\n","f");i(this,j0,K(this,j0,"f")+Z.join(" "),"f")}}}[s5](Z){Z6(K(this,r,"f")).forEach((J)=>{if(((Q)=>Q==="configObjects")(J))return;const X=K(this,r,"f")[J];if(Array.isArray(X)){if(X.includes(Z))X.splice(X.indexOf(Z),1)}else if(typeof X==="object")delete X[Z]}),delete K(this,Q0,"f").getDescriptions()[Z]}[vJ](Z,J,X){if(!K(this,n6,"f")[X])K(this,Z0,"f").process.emitWarning(Z,J),K(this,n6,"f")[X]=!0}[hJ](){K(this,i6,"f").push({options:K(this,r,"f"),configObjects:K(this,r,"f").configObjects.slice(0),exitProcess:K(this,l0,"f"),groups:K(this,Q8,"f"),strict:K(this,h8,"f"),strictCommands:K(this,b8,"f"),strictOptions:K(this,k8,"f"),completionCommand:K(this,k0,"f"),output:K(this,j0,"f"),exitError:K(this,G8,"f"),hasOutput:K(this,y0,"f"),parsed:this.parsed,parseFn:K(this,u0,"f"),parseContext:K(this,x8,"f")}),K(this,Q0,"f").freeze(),K(this,G0,"f").freeze(),K(this,H0,"f").freeze(),K(this,p0,"f").freeze()}[bJ](){let Z="",J;if(/\b(node|iojs|electron)(\.exe)?$/.test(K(this,Z0,"f").process.argv()[0]))J=K(this,Z0,"f").process.argv().slice(1,2);else J=K(this,Z0,"f").process.argv().slice(0,1);if(Z=J.map((X)=>{const Q=this[oJ](K(this,_8,"f"),X);return X.match(/^(\/|([a-zA-Z]:)?\\)/)&&Q.length{if(z.includes("package.json"))return"package.json";else return});O0(Y,void 0,K(this,Z0,"f")),X=JSON.parse(K(this,Z0,"f").readFileSync(Y,"utf8"))}catch(Q){}return K(this,Q6,"f")[J]=X||{},K(this,Q6,"f")[J]}[I8](Z,J){J=[].concat(J),J.forEach((X)=>{X=this[X7](X),K(this,r,"f")[Z].push(X)})}[Y6](Z,J,X,Q){this[J7](Z,J,X,Q,(Y,U,z)=>{K(this,r,"f")[Y][U]=z})}[Z7](Z,J,X,Q){this[J7](Z,J,X,Q,(Y,U,z)=>{K(this,r,"f")[Y][U]=(K(this,r,"f")[Y][U]||[]).concat(z)})}[J7](Z,J,X,Q,Y){if(Array.isArray(X))X.forEach((U)=>{Z(U,Q)});else if(((U)=>typeof U==="object")(X))for(let U of Z6(X))Z(U,X[U]);else Y(J,this[X7](X),Q)}[X7](Z){if(Z==="__proto__")return"___proto___";return Z}[Q7](Z,J){return this[Y6](this[Q7].bind(this),"key",Z,J),this}[Y7](){var Z,J,X,Q,Y,U,z,$,V,B,W,N;const q=K(this,i6,"f").pop();O0(q,void 0,K(this,Z0,"f"));let I;Z=this,J=this,X=this,Q=this,Y=this,U=this,z=this,$=this,V=this,B=this,W=this,N=this,{options:{set value(H){i(Z,r,H,"f")}}.value,configObjects:I,exitProcess:{set value(H){i(J,l0,H,"f")}}.value,groups:{set value(H){i(X,Q8,H,"f")}}.value,output:{set value(H){i(Q,j0,H,"f")}}.value,exitError:{set value(H){i(Y,G8,H,"f")}}.value,hasOutput:{set value(H){i(U,y0,H,"f")}}.value,parsed:this.parsed,strict:{set value(H){i(z,h8,H,"f")}}.value,strictCommands:{set value(H){i($,b8,H,"f")}}.value,strictOptions:{set value(H){i(V,k8,H,"f")}}.value,completionCommand:{set value(H){i(B,k0,H,"f")}}.value,parseFn:{set value(H){i(W,u0,H,"f")}}.value,parseContext:{set value(H){i(N,x8,H,"f")}}.value}=q,K(this,r,"f").configObjects=I,K(this,Q0,"f").unfreeze(),K(this,G0,"f").unfreeze(),K(this,H0,"f").unfreeze(),K(this,p0,"f").unfreeze()}[fJ](Z,J){return A8(J,(X)=>{return Z(X),X})}getInternalMethods(){return{getCommandInstance:this[mJ].bind(this),getContext:this[gJ].bind(this),getHasOutput:this[dJ].bind(this),getLoggerInstance:this[cJ].bind(this),getParseContext:this[lJ].bind(this),getParserConfiguration:this[y8].bind(this),getUsageConfiguration:this[kJ].bind(this),getUsageInstance:this[pJ].bind(this),getValidationInstance:this[nJ].bind(this),hasParseCallback:this[e6].bind(this),isGlobalContext:this[iJ].bind(this),postProcess:this[u8].bind(this),reset:this[U7].bind(this),runValidation:this[z7].bind(this),runYargsParserAndExecuteCommands:this[j6].bind(this),setHasOutput:this[aJ].bind(this)}}[mJ](){return K(this,H0,"f")}[gJ](){return K(this,F6,"f")}[dJ](){return K(this,y0,"f")}[cJ](){return K(this,X6,"f")}[lJ](){return K(this,x8,"f")||{}}[pJ](){return K(this,Q0,"f")}[nJ](){return K(this,G0,"f")}[e6](){return!!K(this,u0,"f")}[iJ](){return K(this,o6,"f")}[u8](Z,J,X,Q){if(X)return Z;if(W0(Z))return Z;if(!J)Z=this[SJ](Z);if(this[y8]()["parse-positional-numbers"]||this[y8]()["parse-positional-numbers"]===void 0)Z=this[uJ](Z);if(Q)Z=C8(Z,this,K(this,p0,"f").getMiddleware(),!1);return Z}[U7](Z={}){i(this,r,K(this,r,"f")||{},"f");const J={};J.local=K(this,r,"f").local||[],J.configObjects=K(this,r,"f").configObjects||[];const X={};J.local.forEach((U)=>{X[U]=!0,(Z[U]||[]).forEach((z)=>{X[z]=!0})}),Object.assign(K(this,v8,"f"),Object.keys(K(this,Q8,"f")).reduce((U,z)=>{const $=K(this,Q8,"f")[z].filter((V)=>!(V in X));if($.length>0)U[z]=$;return U},{})),i(this,Q8,{},"f");const Q=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],Y=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(Q.forEach((U)=>{J[U]=(K(this,r,"f")[U]||[]).filter((z)=>!X[z])}),Y.forEach((U)=>{J[U]=K8(K(this,r,"f")[U],(z)=>!X[z])}),J.envPrefix=K(this,r,"f").envPrefix,i(this,r,J,"f"),i(this,Q0,K(this,Q0,"f")?K(this,Q0,"f").reset(X):TJ(this,K(this,Z0,"f")),"f"),i(this,G0,K(this,G0,"f")?K(this,G0,"f").reset(X):AJ(this,K(this,Q0,"f"),K(this,Z0,"f")),"f"),i(this,H0,K(this,H0,"f")?K(this,H0,"f").reset():FJ(K(this,Q0,"f"),K(this,G0,"f"),K(this,p0,"f"),K(this,Z0,"f")),"f"),!K(this,c0,"f"))i(this,c0,OJ(this,K(this,Q0,"f"),K(this,H0,"f"),K(this,Z0,"f")),"f");return K(this,p0,"f").reset(),i(this,k0,null,"f"),i(this,j0,"","f"),i(this,G8,null,"f"),i(this,y0,!1,"f"),this.parsed=!1,this}[oJ](Z,J){return K(this,Z0,"f").path.relative(Z,J)}[j6](Z,J,X,Q=0,Y=!1){let U=!!X||Y;Z=Z||K(this,H8,"f"),K(this,r,"f").__=K(this,Z0,"f").y18n.__,K(this,r,"f").configuration=this[y8]();const z=!!K(this,r,"f").configuration["populate--"],$=Object.assign({},K(this,r,"f").configuration,{"populate--":!0}),V=K(this,Z0,"f").Parser.detailed(Z,Object.assign({},K(this,r,"f"),{configuration:{"parse-positional-numbers":!1,...$}})),B=Object.assign(V.argv,K(this,x8,"f"));let W=void 0;const N=V.aliases;let q=!1,I=!1;if(Object.keys(B).forEach((H)=>{if(H===K(this,n0,"f")&&B[H])q=!0;else if(H===K(this,Y8,"f")&&B[H])I=!0}),B.$0=this.$0,this.parsed=V,Q===0)K(this,Q0,"f").clearCachedHelpMessage();try{if(this[t5](),J)return this[u8](B,z,!!X,!1);if(K(this,n0,"f")){if([K(this,n0,"f")].concat(N[K(this,n0,"f")]||[]).filter((S)=>S.length>1).includes(""+B._[B._.length-1]))B._.pop(),q=!0}i(this,o6,!1,"f");const H=K(this,H0,"f").getCommands(),G=K(this,c0,"f").completionKey in B,E=q||G||Y;if(B._.length){if(H.length){let P;for(let S=Q||0,k;B._[S]!==void 0;S++)if(k=String(B._[S]),H.includes(k)&&k!==K(this,k0,"f")){const b=K(this,H0,"f").runCommand(k,this,V,S+1,Y,q||I||Y);return this[u8](b,z,!!X,!1)}else if(!P&&k!==K(this,k0,"f")){P=k;break}if(!K(this,H0,"f").hasDefaultCommand()&&K(this,s6,"f")&&P&&!E)K(this,G0,"f").recommendCommands(P,H)}if(K(this,k0,"f")&&B._.includes(K(this,k0,"f"))&&!G){if(K(this,l0,"f"))N8(!0);this.showCompletionScript(),this.exit(0)}}if(K(this,H0,"f").hasDefaultCommand()&&!E){const P=K(this,H0,"f").runCommand(null,this,V,0,Y,q||I||Y);return this[u8](P,z,!!X,!1)}if(G){if(K(this,l0,"f"))N8(!0);Z=[].concat(Z);const P=Z.slice(Z.indexOf(`--${K(this,c0,"f").completionKey}`)+1);return K(this,c0,"f").getCompletion(P,(S,k)=>{if(S)throw new B0(S.message);(k||[]).forEach((b)=>{K(this,X6,"f").log(b)}),this.exit(0)}),this[u8](B,!z,!!X,!1)}if(!K(this,y0,"f")){if(q){if(K(this,l0,"f"))N8(!0);U=!0,this.showHelp("log"),this.exit(0)}else if(I){if(K(this,l0,"f"))N8(!0);U=!0,K(this,Q0,"f").showVersion("log"),this.exit(0)}}if(!U&&K(this,r,"f").skipValidation.length>0)U=Object.keys(B).some((P)=>K(this,r,"f").skipValidation.indexOf(P)>=0&&B[P]===!0);if(!U){if(V.error)throw new B0(V.error.message);if(!G){const P=this[z7](N,{},V.error);if(!X)W=C8(B,this,K(this,p0,"f").getMiddleware(),!0);if(W=this[fJ](P,W!==null&&W!==void 0?W:B),W0(W)&&!X)W=W.then(()=>{return C8(B,this,K(this,p0,"f").getMiddleware(),!1)})}}}catch(H){if(H instanceof B0)K(this,Q0,"f").fail(H.message,H);else throw H}return this[u8](W!==null&&W!==void 0?W:B,z,!!X,!0)}[z7](Z,J,X,Q){const Y={...this.getDemandedOptions()};return(U)=>{if(X)throw new B0(X.message);K(this,G0,"f").nonOptionCount(U),K(this,G0,"f").requiredArguments(U,Y);let z=!1;if(K(this,b8,"f"))z=K(this,G0,"f").unknownCommands(U);if(K(this,h8,"f")&&!z)K(this,G0,"f").unknownArguments(U,Z,J,!!Q);else if(K(this,k8,"f"))K(this,G0,"f").unknownArguments(U,Z,{},!1,!1);K(this,G0,"f").limitedChoices(U),K(this,G0,"f").implications(U),K(this,G0,"f").conflicting(U)}}[aJ](){i(this,y0,!0,"f")}[f8](Z){if(typeof Z==="string")K(this,r,"f").key[Z]=!0;else for(let J of Z)K(this,r,"f").key[J]=!0}}var Dz=rJ(NJ),$7=Dz;function d8(...Z){if(i0.debug)console.error(m8.gray(JSON.stringify(Z,null,4)))}function I0(Z){if(i0?.verbose)console.error(m8.gray(Z))}var Tz=function(Z=1,J=""){J&&console.error(+J),process.exit(+Z)},m8={};m8.red=m8.green=m8.gray=(Z)=>Z;var i0=null,tJ=function(Z){i0=Z},g8=function(Z,J=""){if(i0.quiet||i0.quietTotal)return;if(i0.output||i0.outputMatch)return console.error.apply(this,[m8.gray(Z),J].filter(Boolean));console.log.apply(this,[Z,J].filter(Boolean))},Z5=function(Z,J=""){if(i0.verbose)g8(Z,J);else d8([Z,J].filter(Boolean).join(" "))},$8=function(Z,J=""){if(i0.bail)return o0(Z,J);if(!i0.quietTotal)console.error.apply(this,[" \u274C",m8.red(Z),J].filter(Boolean));return!1},o0=function(Z="",J="",X=!1){if(X&&!i0.quietTotal)i0.showHelp();Z&&$8(" \u274C "+Z,J),Tz()};function f6(Z,J={engine:"V8"}){if(FU=Z,tJ(J),I0("Displaying steps for:"),I0(J),J.pattern=jU(J.pattern,J)||"",J.replacement=pG(J.replacement,J)||"",J.replacementJs)J.replacementOri=J.replacement;if(J.regex=DU(J.pattern,J)||"",I0(J),J.files=oG(J),!J.files.length){if(J.contentWasPiped)return dZ("[pipe-data]",J,J.pipeData);return $8(J.files.length+" files found")}Z5(J.files.length+" files found"),I0(J),J.files.filter((X)=>{if(s0.statSync(X).isFile())return!0;return d8("Not a valid file:",X),!1}).forEach((X)=>lG(X,J))}var lG=function(Z,J){if(J.voidAsync){Z5("Open sync: "+Z);var X=FU.fileReadSync(Z,J.encoding);return dZ(Z,J,X)}Z5("Open async: "+Z),s0.readFile(Z,J.encoding,function(Q,Y){if(Q)return $8(Q);return dZ(Z,J,Y)})},dZ=function(Z,J,X){if(d8("Work on content from: "+Z),J.replacementJs)J.replacement=iG(Z,J,X);const Q=X.replace(J.regex,J.replacement);if(J.outputMatch)return;if(J.output)return d8("Output result from: "+Z),process.stdout.write(Q);if(Q===X){d8("Nothing changed in: "+Z);return}if(X="",J.simulate)return g8(Z);if(d8("Write updated content to: "+Z),J.voidBackup)return s0.writeFile(Z,Q,J.encoding,function($){if($)return $8($);g8(Z)});const Y=W8.normalize(W8.join(process.cwd(),Z)),U=(new Date()).toISOString().replace(O8.colon,"_").replace("Z",""),z=Y+"."+U+".backup";if(J.voidAsync){try{if(s0.renameSync(Y,z),s0.writeFileSync(Y,Q,J.encoding),!J.keepBackup)s0.unlinkSync(z)}catch($){return $8($)}return g8(Z)}s0.rename(Y,z,($)=>{if($)return $8($);s0.writeFile(Y,Q,J.encoding,(V)=>{if(V)return $8(V);if(!J.keepBackup)s0.unlink(z,(B)=>{if(B)return $8(B);g8(Z)});return g8(Z)})})},jU=function(Z,J){if(I0("Get final pattern"),Z=TU(Z,J),J.literal)Z=Z.replace(O8.regexSpecialChars,"\\$&");return I0(Z),Z},pG=function(Z,J){if(I0("Get final replacement"),Z=TU(Z,J),J.outputMatch){if(I0("Output match"),parseInt(process.versions.node)<6)return o0("outputMatch is only supported in node 6+");return function(){if(I0(arguments),arguments.length===3)return I0("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var X=1;X{ throw new Error(`Cannot require module "re2"`);})())(Z,Q)}catch(Y){if(J.debug)throw new Error(Y);o0(Y.message)}break;default:o0(`Engine ${J.engine} not supported`)}return I0(X),X},nG=function(Z){I0("Get flags");let J="";if(!Z.voidGlobal)J+="g";if(!Z.voidIgnoreCase)J+="i";if(!Z.voidMultiline)J+="m";if(Z.dotAll)J+="s";if(Z.unicode)J+="u";return I0(J),J},MU=function(Z){if(Z===1)return"1 Byte";const J=Math.floor(Math.log(Z)/Math.log(1024));return(Z/Math.pow(1024,J)).toFixed(J?1:0)+" "+["Bytes","KB","MB","GB","TB"][J]},iG=function(Z,J,X){const Q=cG,Y=gZ(Q),U=J.pipeData,z=X,$=J.pattern,V=J.replacementOri,B=process.cwd(),W=Y;let I="\u274C",H="\u274C",G="\u274C",E="\u274C",P="\u274C",S="\u274C",k="\u274C",b="\u274C",l="\u274C",J0="\u274C",d=new Date(0),g=new Date(0),R=-1,p="\u274C",L=new Function("require","fs","globs","path","pipe","pipe_","find","find_","text","text_","file","file_","file_rel","file_rel_","dirpath","dirpath_","dirpath_rel","dirpath_rel_","dirname","dirname_","filename","filename_","name","name_","ext","ext_","cwd","cwd_","now","now_","time_obj","time","time_","mtime_obj","mtime","mtime_","ctime_obj","ctime","ctime_","bytes","bytes_","size","size_","nl","_","__code_rr",'var path = require("path");var __require_ = require;var r = function(file){var result = null;try{result = __require_(file);} catch (e){'+'var dir = /^[\\/]/.test(file) ? "" : cwd;'+"result = __require_(path.resolve(dir, file));};return result;};require = r;return eval(__code_rr);");const C=O8.byteOrSize.test(J.replacement),_=C&&50000000LU.sync(F,{unique:!0,caseSensitiveMatch:!J.voidIgnoreCase,dot:!0,...D});if(!/\$\d/.test(J.replacement))return L(require,s0,y,W8,U,U+" ",$,$+" ",z,z+" ",I,I+" ",H,H+" ",G,G+" ",E,E+" ",P,P+" ",S,S+" ",k,k+" ",b,b+" ",B,B+" ",W,W+" ",Q,Y,Y+" ",d,l,l+" ",g,J0,J0+" ",R,R+" ",p,p+" ","\n"," ",V);return function(){I0(arguments);const F=U,D=z,u=$,f=I,e=H,Y0=G,V0=E,T0=P,t=S,_0=k,h0=b,h=B,U0=W,K0=Q,A=Y,X0=d,x=l,o=g,z0=J0,M=R,j=p,v="\n",w=" ",T=V;var n="";for(var m=0;mDU(jU(z,Z),Z)).forEach((z)=>{U=U.filter(($)=>!$.match(z))});return U},s0=w7(),W8=import.meta.require("path"),LU=TY(),WF=IU(),cG=new Date,O8={euro:/\u20AC/g,section:/\u00A7/g,mctime:/[mc]time/,colon:/:/g,capturedGroupRef:/\$\d/,regexSpecialChars:/[-\[\]{}()*+?.,\/\\^$|#\s]/g,byteOrSize:/bytes|size/,folderName:/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/},cZ="PACKAGE_VERSION",FU;function EU(Z,J){let X,Q,Y=0;if(J.length<2)if(/-v|--?version$/i.test(J.slice(-1)[0]))console.log(cZ),Z.exit(0);else if(/-h|--?help$/i.test(J.slice(-1)[0]))Y=1;else Y=2;else[X,Q]=J.splice(0,2);const U=$7(J).example("> rexreplace '(f?(o))o(.*)' '$3$1\u20AC2' myfile.md","'foobar' in myfile.md will become 'barfoo'").example("> rexreplace '^#' '##' *.md","All markdown files in this dir got all headlines moved one level deeper").example("> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' ","Provide multiple files or globs if needed").version("v","Print rexreplace version (can be given as only argument)",cZ).alias("v","version").boolean("I").describe("I","Void case insensitive search pattern.").alias("I","void-ignore-case").boolean("G").describe("G","Void global search (stop looking after the first match).").alias("G","void-global").boolean("M").describe("M","Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.").alias("M","void-multiline").boolean("s").describe("s","Have `.` also match newline.").alias("s","dot-all").boolean("u").describe("u","Treat pattern as a sequence of unicode code points.").alias("u","unicode").default("e","utf8").alias("e","encoding").describe("e","Encoding of files/piped data.").alias("E","engine").describe("E","What regex engine to use:").choices("E",["V8"]).default("E","V8").boolean("L").describe("L","Literal string search (no regex used when searching)").alias("L","literal").boolean("\u20AC").describe("\u20AC","Void having '\u20AC' as alias for '$' in pattern and replacement parameters").alias("\u20AC","void-euro").boolean("\xA7").describe("\xA7","Void having '\xA7' as alias for '\\' in pattern and replacement parameters").alias("\xA7","void-section").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").boolean("H").describe("H","Halt on first error").alias("H","halt").alias("H","bail").default("H",!1).boolean("q").describe("q","Only display errors (no other info)").alias("q","quiet").boolean("Q").describe("Q","Never display errors or info").alias("Q","quiet-total").boolean("B").describe("B","Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.").alias("B","void-backup").boolean("b").describe("b","Keep the backup file with the original content.").alias("b","keep-backup").boolean("o").describe("o","Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.").alias("o","output").boolean("m").describe("m","Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ").alias("m","output-match").boolean("T").alias("T","trim-pipe").describe("T","Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ").boolean("R").alias("R","replacement-pipe").describe("R","Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.").conflicts("R","g").conflicts("R","G").boolean("g").describe("g","Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt").alias("g","glob-pipe").conflicts("g","G").boolean("S").describe("S","Simulate output without changing any files").alias("S","simulate").array("x").describe("x","Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.").alias("x","exclude-re").array("X").describe("X","Exclude files found with this glob. Can be used multiple times.").alias("X","exclude-glob").boolean("V").describe("V","More chatty output").alias("V","verbose").boolean("d").describe("d","Print debug info").alias("d","debug").boolean("j").alias("j","replacement-js").describe("j",`Treat replacement as javascript source code. - The statement from the last expression will become the replacement string. - Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. - The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. - At some point, the $ char _will_ give you a headache when used from the command line, so use \u20AC0, \u20AC1, \u20AC2, \u20AC3... instead. - If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. - - The code has access to the following variables: - \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, - \`fs\` from node, - \`path\` from node, - \`glob\` proxy name for the .sync function of fast-glob from npm, - \`pipe\`: the data piped into the command (null if no piped data), - \`find\`: pattern searched for (the needle), - \`text\`: full text being searched i.e. file content or piped data (the haystack), - \`bytes\`: total size of the haystack in bytes, - \`size\`: human-friendly representation of the total size of the haystack, - \`time\`: String representing the local time when the command was invoked, - \`time_obj\`: date object representing \`time\`, - \`now\`: alias for \`time\`, - \`cwd\`: current process working dir, - \`nl\`: a new-line char, - \`_\`: a single space char (for easy string concatenation). - - The following values defaults to \`\u274C\` if haystack does not originate from a file: - \`file\`: contains the full path of the active file being searched (including full filename), - \`file_rel\`: contains \`file\` relative to current process working dir, - \`dirpath\`: contains the full path without filename of the active file being searched, - \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, - \`filename\`: is the full filename of the active file being searched without path, - \`name\`: filename of the active file being searched with no extension, - \`ext\`: extension of the filename including leading dot, - \`mtime\`: ISO inspired representation of the last local modification time of the current file, - \`ctime\`: ISO representation of the local creation time of the current file. - \`mtime_obj\`: date object representing \`mtime\`, - \`ctime_obj\`: date object representing \`ctime\`. - - All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `).help("h").describe("h","Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)").parseSync();let z={};if(Object.keys(U).forEach(($)=>{if(1<$.length&&$.indexOf("-")<0)z[$]=U[$]}),z.showHelp=$7.showHelp,z.needHelp=Y,z.pattern=X,z.replacement=Q,z.includeGlob=U._,z.excludeGlob=U.excludeGlob?U.excludeGlob?.filter(Boolean):[],z.excludeGlob=U.excludeRe?U.excludeRe?.filter(Boolean):[],!z.replacementJs)z.replacement=rG(z.replacement);return z}var rG=function(Z=""){return new Function(`return '${Z.replace(/'/g,"\\'")}'`)()};function lZ(Z,J,X=null){if(0y5.default.readFileSync(Z,{encoding:J}),fileReadAsync:async(Z,J="utf8")=>{return Bun.file(Z).text()},fileWriteSync:async(Z,J,X="utf8")=>{await Bun.write(Z,J)},fileWriteAsync:(Z,J,X="utf8")=>{return Bun.write(Z,J)},fileDeleteSync:(Z)=>y5.default.unlinkSync(Z),fileDeleteAsync:(Z)=>y5.default.unlink(Z),fileCopySync:async(Z,J)=>{const X=Bun.file(Z),Q=Bun.file(J);await Bun.write(Q,X)},fileCopyAsync:(Z,J)=>{const X=Bun.file(Z),Q=Bun.file(J);return Bun.write(Q,X)},exit:process.exit};(()=>{let Z=EU(pZ,process.argv.slice(2));if(Boolean(process.stdin.isTTY))return lZ(pZ,Z);process.stdin.setEncoding(Z.encoding);let J="";process.stdin.on("readable",()=>{let X=process.stdin.read();if(X!==null){J+=X;while(X=process.stdin.read())J+=X}}),process.stdin.on("end",()=>{return lZ(pZ,Z,J)})})();export{pZ as runtime}; diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js deleted file mode 100755 index 45cbb6b3..00000000 --- a/bin/rexreplace.cli.min.js +++ /dev/null @@ -1,15185 +0,0 @@ -#!/usr/bin/env node -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getProtoOf = Object.getPrototypeOf; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __toESM = (mod, isNodeMode, target) => { - target = mod != null ? __create(__getProtoOf(mod)) : {}; - const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target; - for (let key of __getOwnPropNames(mod)) - if (!__hasOwnProp.call(to, key)) - __defProp(to, key, { - get: () => mod[key], - enumerable: true - }); - return to; -}; -var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); -var __require = (id) => { - return import.meta.require(id); -}; - -// node_modules/universalify/index.js -var require_universalify = __commonJS((exports) => { - exports.fromCallback = function(fn) { - return Object.defineProperty(function(...args) { - if (typeof args[args.length - 1] === "function") - fn.apply(this, args); - else { - return new Promise((resolve5, reject) => { - fn.call(this, ...args, (err, res) => err != null ? reject(err) : resolve5(res)); - }); - } - }, "name", { value: fn.name }); - }; - exports.fromPromise = function(fn) { - return Object.defineProperty(function(...args) { - const cb = args[args.length - 1]; - if (typeof cb !== "function") - return fn.apply(this, args); - else - fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb); - }, "name", { value: fn.name }); - }; -}); - -// node_modules/graceful-fs/polyfills.js -var require_polyfills = __commonJS((exports, module) => { - var patch = function(fs) { - if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs); - } - if (!fs.lutimes) { - patchLutimes(fs); - } - fs.chown = chownFix(fs.chown); - fs.fchown = chownFix(fs.fchown); - fs.lchown = chownFix(fs.lchown); - fs.chmod = chmodFix(fs.chmod); - fs.fchmod = chmodFix(fs.fchmod); - fs.lchmod = chmodFix(fs.lchmod); - fs.chownSync = chownFixSync(fs.chownSync); - fs.fchownSync = chownFixSync(fs.fchownSync); - fs.lchownSync = chownFixSync(fs.lchownSync); - fs.chmodSync = chmodFixSync(fs.chmodSync); - fs.fchmodSync = chmodFixSync(fs.fchmodSync); - fs.lchmodSync = chmodFixSync(fs.lchmodSync); - fs.stat = statFix(fs.stat); - fs.fstat = statFix(fs.fstat); - fs.lstat = statFix(fs.lstat); - fs.statSync = statFixSync(fs.statSync); - fs.fstatSync = statFixSync(fs.fstatSync); - fs.lstatSync = statFixSync(fs.lstatSync); - if (fs.chmod && !fs.lchmod) { - fs.lchmod = function(path, mode, cb) { - if (cb) - process.nextTick(cb); - }; - fs.lchmodSync = function() { - }; - } - if (fs.chown && !fs.lchown) { - fs.lchown = function(path, uid, gid, cb) { - if (cb) - process.nextTick(cb); - }; - fs.lchownSync = function() { - }; - } - if (platform === "win32") { - fs.rename = typeof fs.rename !== "function" ? fs.rename : function(fs$rename) { - function rename(from, to, cb) { - var start = Date.now(); - var backoff = 0; - fs$rename(from, to, function CB(er) { - if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 60000) { - setTimeout(function() { - fs.stat(to, function(stater, st) { - if (stater && stater.code === "ENOENT") - fs$rename(from, to, CB); - else - cb(er); - }); - }, backoff); - if (backoff < 100) - backoff += 10; - return; - } - if (cb) - cb(er); - }); - } - if (Object.setPrototypeOf) - Object.setPrototypeOf(rename, fs$rename); - return rename; - }(fs.rename); - } - fs.read = typeof fs.read !== "function" ? fs.read : function(fs$read) { - function read(fd, buffer, offset, length, position, callback_) { - var callback; - if (callback_ && typeof callback_ === "function") { - var eagCounter = 0; - callback = function(er, _, __) { - if (er && er.code === "EAGAIN" && eagCounter < 10) { - eagCounter++; - return fs$read.call(fs, fd, buffer, offset, length, position, callback); - } - callback_.apply(this, arguments); - }; - } - return fs$read.call(fs, fd, buffer, offset, length, position, callback); - } - if (Object.setPrototypeOf) - Object.setPrototypeOf(read, fs$read); - return read; - }(fs.read); - fs.readSync = typeof fs.readSync !== "function" ? fs.readSync : function(fs$readSync) { - return function(fd, buffer, offset, length, position) { - var eagCounter = 0; - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position); - } catch (er) { - if (er.code === "EAGAIN" && eagCounter < 10) { - eagCounter++; - continue; - } - throw er; - } - } - }; - }(fs.readSync); - function patchLchmod(fs2) { - fs2.lchmod = function(path, mode, callback) { - fs2.open(path, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) { - if (err) { - if (callback) - callback(err); - return; - } - fs2.fchmod(fd, mode, function(err2) { - fs2.close(fd, function(err22) { - if (callback) - callback(err2 || err22); - }); - }); - }); - }; - fs2.lchmodSync = function(path, mode) { - var fd = fs2.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode); - var threw = true; - var ret; - try { - ret = fs2.fchmodSync(fd, mode); - threw = false; - } finally { - if (threw) { - try { - fs2.closeSync(fd); - } catch (er) { - } - } else { - fs2.closeSync(fd); - } - } - return ret; - }; - } - function patchLutimes(fs2) { - if (constants.hasOwnProperty("O_SYMLINK") && fs2.futimes) { - fs2.lutimes = function(path, at, mt, cb) { - fs2.open(path, constants.O_SYMLINK, function(er, fd) { - if (er) { - if (cb) - cb(er); - return; - } - fs2.futimes(fd, at, mt, function(er2) { - fs2.close(fd, function(er22) { - if (cb) - cb(er2 || er22); - }); - }); - }); - }; - fs2.lutimesSync = function(path, at, mt) { - var fd = fs2.openSync(path, constants.O_SYMLINK); - var ret; - var threw = true; - try { - ret = fs2.futimesSync(fd, at, mt); - threw = false; - } finally { - if (threw) { - try { - fs2.closeSync(fd); - } catch (er) { - } - } else { - fs2.closeSync(fd); - } - } - return ret; - }; - } else if (fs2.futimes) { - fs2.lutimes = function(_a2, _b2, _c2, cb) { - if (cb) - process.nextTick(cb); - }; - fs2.lutimesSync = function() { - }; - } - } - function chmodFix(orig) { - if (!orig) - return orig; - return function(target, mode, cb) { - return orig.call(fs, target, mode, function(er) { - if (chownErOk(er)) - er = null; - if (cb) - cb.apply(this, arguments); - }); - }; - } - function chmodFixSync(orig) { - if (!orig) - return orig; - return function(target, mode) { - try { - return orig.call(fs, target, mode); - } catch (er) { - if (!chownErOk(er)) - throw er; - } - }; - } - function chownFix(orig) { - if (!orig) - return orig; - return function(target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function(er) { - if (chownErOk(er)) - er = null; - if (cb) - cb.apply(this, arguments); - }); - }; - } - function chownFixSync(orig) { - if (!orig) - return orig; - return function(target, uid, gid) { - try { - return orig.call(fs, target, uid, gid); - } catch (er) { - if (!chownErOk(er)) - throw er; - } - }; - } - function statFix(orig) { - if (!orig) - return orig; - return function(target, options, cb) { - if (typeof options === "function") { - cb = options; - options = null; - } - function callback(er, stats) { - if (stats) { - if (stats.uid < 0) - stats.uid += 4294967296; - if (stats.gid < 0) - stats.gid += 4294967296; - } - if (cb) - cb.apply(this, arguments); - } - return options ? orig.call(fs, target, options, callback) : orig.call(fs, target, callback); - }; - } - function statFixSync(orig) { - if (!orig) - return orig; - return function(target, options) { - var stats = options ? orig.call(fs, target, options) : orig.call(fs, target); - if (stats) { - if (stats.uid < 0) - stats.uid += 4294967296; - if (stats.gid < 0) - stats.gid += 4294967296; - } - return stats; - }; - } - function chownErOk(er) { - if (!er) - return true; - if (er.code === "ENOSYS") - return true; - var nonroot = !process.getuid || process.getuid() !== 0; - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true; - } - return false; - } - }; - var constants = __require("constants"); - var origCwd = process.cwd; - var cwd = null; - var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform; - process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process); - return cwd; - }; - try { - process.cwd(); - } catch (er) { - } - if (typeof process.chdir === "function") { - chdir = process.chdir; - process.chdir = function(d) { - cwd = null; - chdir.call(process, d); - }; - if (Object.setPrototypeOf) - Object.setPrototypeOf(process.chdir, chdir); - } - var chdir; - module.exports = patch; -}); - -// node_modules/graceful-fs/legacy-streams.js -var require_legacy_streams = __commonJS((exports, module) => { - var legacy = function(fs) { - return { - ReadStream, - WriteStream - }; - function ReadStream(path, options) { - if (!(this instanceof ReadStream)) - return new ReadStream(path, options); - Stream.call(this); - var self = this; - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; - this.flags = "r"; - this.mode = 438; - this.bufferSize = 64 * 1024; - options = options || {}; - var keys = Object.keys(options); - for (var index = 0, length = keys.length;index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - if (this.encoding) - this.setEncoding(this.encoding); - if (this.start !== undefined) { - if (typeof this.start !== "number") { - throw TypeError("start must be a Number"); - } - if (this.end === undefined) { - this.end = Infinity; - } else if (typeof this.end !== "number") { - throw TypeError("end must be a Number"); - } - if (this.start > this.end) { - throw new Error("start must be <= end"); - } - this.pos = this.start; - } - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } - fs.open(this.path, this.flags, this.mode, function(err, fd) { - if (err) { - self.emit("error", err); - self.readable = false; - return; - } - self.fd = fd; - self.emit("open", fd); - self._read(); - }); - } - function WriteStream(path, options) { - if (!(this instanceof WriteStream)) - return new WriteStream(path, options); - Stream.call(this); - this.path = path; - this.fd = null; - this.writable = true; - this.flags = "w"; - this.encoding = "binary"; - this.mode = 438; - this.bytesWritten = 0; - options = options || {}; - var keys = Object.keys(options); - for (var index = 0, length = keys.length;index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - if (this.start !== undefined) { - if (typeof this.start !== "number") { - throw TypeError("start must be a Number"); - } - if (this.start < 0) { - throw new Error("start must be >= zero"); - } - this.pos = this.start; - } - this.busy = false; - this._queue = []; - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } - }; - var Stream = __require("stream").Stream; - module.exports = legacy; -}); - -// node_modules/graceful-fs/clone.js -var require_clone = __commonJS((exports, module) => { - var clone = function(obj) { - if (obj === null || typeof obj !== "object") - return obj; - if (obj instanceof Object) - var copy = { __proto__: getPrototypeOf(obj) }; - else - var copy = Object.create(null); - Object.getOwnPropertyNames(obj).forEach(function(key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)); - }); - return copy; - }; - module.exports = clone; - var getPrototypeOf = Object.getPrototypeOf || function(obj) { - return obj.__proto__; - }; -}); - -// node_modules/graceful-fs/graceful-fs.js -var require_graceful_fs = __commonJS((exports, module) => { - var noop = function() { - }; - var publishQueue = function(context, queue2) { - Object.defineProperty(context, gracefulQueue, { - get: function() { - return queue2; - } - }); - }; - var patch = function(fs2) { - polyfills(fs2); - fs2.gracefulify = patch; - fs2.createReadStream = createReadStream; - fs2.createWriteStream = createWriteStream; - var fs$readFile = fs2.readFile; - fs2.readFile = readFile; - function readFile(path, options, cb) { - if (typeof options === "function") - cb = options, options = null; - return go$readFile(path, options, cb); - function go$readFile(path2, options2, cb2, startTime) { - return fs$readFile(path2, options2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$readFile, [path2, options2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$writeFile = fs2.writeFile; - fs2.writeFile = writeFile2; - function writeFile2(path, data, options, cb) { - if (typeof options === "function") - cb = options, options = null; - return go$writeFile(path, data, options, cb); - function go$writeFile(path2, data2, options2, cb2, startTime) { - return fs$writeFile(path2, data2, options2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$writeFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$appendFile = fs2.appendFile; - if (fs$appendFile) - fs2.appendFile = appendFile; - function appendFile(path, data, options, cb) { - if (typeof options === "function") - cb = options, options = null; - return go$appendFile(path, data, options, cb); - function go$appendFile(path2, data2, options2, cb2, startTime) { - return fs$appendFile(path2, data2, options2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$appendFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$copyFile = fs2.copyFile; - if (fs$copyFile) - fs2.copyFile = copyFile; - function copyFile(src, dest, flags, cb) { - if (typeof flags === "function") { - cb = flags; - flags = 0; - } - return go$copyFile(src, dest, flags, cb); - function go$copyFile(src2, dest2, flags2, cb2, startTime) { - return fs$copyFile(src2, dest2, flags2, function(err) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - var fs$readdir = fs2.readdir; - fs2.readdir = readdir; - var noReaddirOptionVersions = /^v[0-5]\./; - function readdir(path, options, cb) { - if (typeof options === "function") - cb = options, options = null; - var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir(path2, options2, cb2, startTime) { - return fs$readdir(path2, fs$readdirCallback(path2, options2, cb2, startTime)); - } : function go$readdir(path2, options2, cb2, startTime) { - return fs$readdir(path2, options2, fs$readdirCallback(path2, options2, cb2, startTime)); - }; - return go$readdir(path, options, cb); - function fs$readdirCallback(path2, options2, cb2, startTime) { - return function(err, files) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([ - go$readdir, - [path2, options2, cb2], - err, - startTime || Date.now(), - Date.now() - ]); - else { - if (files && files.sort) - files.sort(); - if (typeof cb2 === "function") - cb2.call(this, err, files); - } - }; - } - } - if (process.version.substr(0, 4) === "v0.8") { - var legStreams = legacy(fs2); - ReadStream = legStreams.ReadStream; - WriteStream = legStreams.WriteStream; - } - var fs$ReadStream = fs2.ReadStream; - if (fs$ReadStream) { - ReadStream.prototype = Object.create(fs$ReadStream.prototype); - ReadStream.prototype.open = ReadStream$open; - } - var fs$WriteStream = fs2.WriteStream; - if (fs$WriteStream) { - WriteStream.prototype = Object.create(fs$WriteStream.prototype); - WriteStream.prototype.open = WriteStream$open; - } - Object.defineProperty(fs2, "ReadStream", { - get: function() { - return ReadStream; - }, - set: function(val) { - ReadStream = val; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(fs2, "WriteStream", { - get: function() { - return WriteStream; - }, - set: function(val) { - WriteStream = val; - }, - enumerable: true, - configurable: true - }); - var FileReadStream = ReadStream; - Object.defineProperty(fs2, "FileReadStream", { - get: function() { - return FileReadStream; - }, - set: function(val) { - FileReadStream = val; - }, - enumerable: true, - configurable: true - }); - var FileWriteStream = WriteStream; - Object.defineProperty(fs2, "FileWriteStream", { - get: function() { - return FileWriteStream; - }, - set: function(val) { - FileWriteStream = val; - }, - enumerable: true, - configurable: true - }); - function ReadStream(path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this; - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments); - } - function ReadStream$open() { - var that = this; - open(that.path, that.flags, that.mode, function(err, fd) { - if (err) { - if (that.autoClose) - that.destroy(); - that.emit("error", err); - } else { - that.fd = fd; - that.emit("open", fd); - that.read(); - } - }); - } - function WriteStream(path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this; - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments); - } - function WriteStream$open() { - var that = this; - open(that.path, that.flags, that.mode, function(err, fd) { - if (err) { - that.destroy(); - that.emit("error", err); - } else { - that.fd = fd; - that.emit("open", fd); - } - }); - } - function createReadStream(path, options) { - return new fs2.ReadStream(path, options); - } - function createWriteStream(path, options) { - return new fs2.WriteStream(path, options); - } - var fs$open = fs2.open; - fs2.open = open; - function open(path, flags, mode, cb) { - if (typeof mode === "function") - cb = mode, mode = null; - return go$open(path, flags, mode, cb); - function go$open(path2, flags2, mode2, cb2, startTime) { - return fs$open(path2, flags2, mode2, function(err, fd) { - if (err && (err.code === "EMFILE" || err.code === "ENFILE")) - enqueue([go$open, [path2, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]); - else { - if (typeof cb2 === "function") - cb2.apply(this, arguments); - } - }); - } - } - return fs2; - }; - var enqueue = function(elem) { - debug2("ENQUEUE", elem[0].name, elem[1]); - fs[gracefulQueue].push(elem); - retry(); - }; - var resetQueue = function() { - var now = Date.now(); - for (var i = 0;i < fs[gracefulQueue].length; ++i) { - if (fs[gracefulQueue][i].length > 2) { - fs[gracefulQueue][i][3] = now; - fs[gracefulQueue][i][4] = now; - } - } - retry(); - }; - var retry = function() { - clearTimeout(retryTimer); - retryTimer = undefined; - if (fs[gracefulQueue].length === 0) - return; - var elem = fs[gracefulQueue].shift(); - var fn = elem[0]; - var args = elem[1]; - var err = elem[2]; - var startTime = elem[3]; - var lastTime = elem[4]; - if (startTime === undefined) { - debug2("RETRY", fn.name, args); - fn.apply(null, args); - } else if (Date.now() - startTime >= 60000) { - debug2("TIMEOUT", fn.name, args); - var cb = args.pop(); - if (typeof cb === "function") - cb.call(null, err); - } else { - var sinceAttempt = Date.now() - lastTime; - var sinceStart = Math.max(lastTime - startTime, 1); - var desiredDelay = Math.min(sinceStart * 1.2, 100); - if (sinceAttempt >= desiredDelay) { - debug2("RETRY", fn.name, args); - fn.apply(null, args.concat([startTime])); - } else { - fs[gracefulQueue].push(elem); - } - } - if (retryTimer === undefined) { - retryTimer = setTimeout(retry, 0); - } - }; - var fs = __require("fs"); - var polyfills = require_polyfills(); - var legacy = require_legacy_streams(); - var clone = require_clone(); - var util = __require("util"); - var gracefulQueue; - var previousSymbol; - if (typeof Symbol === "function" && typeof Symbol.for === "function") { - gracefulQueue = Symbol.for("graceful-fs.queue"); - previousSymbol = Symbol.for("graceful-fs.previous"); - } else { - gracefulQueue = "___graceful-fs.queue"; - previousSymbol = "___graceful-fs.previous"; - } - var debug2 = noop; - if (util.debuglog) - debug2 = util.debuglog("gfs4"); - else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) - debug2 = function() { - var m = util.format.apply(util, arguments); - m = "GFS4: " + m.split(/\n/).join("\nGFS4: "); - console.error(m); - }; - if (!fs[gracefulQueue]) { - queue = global[gracefulQueue] || []; - publishQueue(fs, queue); - fs.close = function(fs$close) { - function close(fd, cb) { - return fs$close.call(fs, fd, function(err) { - if (!err) { - resetQueue(); - } - if (typeof cb === "function") - cb.apply(this, arguments); - }); - } - Object.defineProperty(close, previousSymbol, { - value: fs$close - }); - return close; - }(fs.close); - fs.closeSync = function(fs$closeSync) { - function closeSync(fd) { - fs$closeSync.apply(fs, arguments); - resetQueue(); - } - Object.defineProperty(closeSync, previousSymbol, { - value: fs$closeSync - }); - return closeSync; - }(fs.closeSync); - if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) { - process.on("exit", function() { - debug2(fs[gracefulQueue]); - __require("assert").equal(fs[gracefulQueue].length, 0); - }); - } - } - var queue; - if (!global[gracefulQueue]) { - publishQueue(global, fs[gracefulQueue]); - } - module.exports = patch(clone(fs)); - if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { - module.exports = patch(fs); - fs.__patched = true; - } - var retryTimer; -}); - -// node_modules/fs-extra/lib/fs/index.js -var require_fs = __commonJS((exports) => { - var u = require_universalify().fromCallback; - var fs = require_graceful_fs(); - var api = [ - "access", - "appendFile", - "chmod", - "chown", - "close", - "copyFile", - "fchmod", - "fchown", - "fdatasync", - "fstat", - "fsync", - "ftruncate", - "futimes", - "lchmod", - "lchown", - "link", - "lstat", - "mkdir", - "mkdtemp", - "open", - "opendir", - "readdir", - "readFile", - "readlink", - "realpath", - "rename", - "rm", - "rmdir", - "stat", - "symlink", - "truncate", - "unlink", - "utimes", - "writeFile" - ].filter((key) => { - return typeof fs[key] === "function"; - }); - Object.assign(exports, fs); - api.forEach((method) => { - exports[method] = u(fs[method]); - }); - exports.exists = function(filename, callback) { - if (typeof callback === "function") { - return fs.exists(filename, callback); - } - return new Promise((resolve5) => { - return fs.exists(filename, resolve5); - }); - }; - exports.read = function(fd, buffer, offset, length, position, callback) { - if (typeof callback === "function") { - return fs.read(fd, buffer, offset, length, position, callback); - } - return new Promise((resolve5, reject) => { - fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => { - if (err) - return reject(err); - resolve5({ bytesRead, buffer: buffer2 }); - }); - }); - }; - exports.write = function(fd, buffer, ...args) { - if (typeof args[args.length - 1] === "function") { - return fs.write(fd, buffer, ...args); - } - return new Promise((resolve5, reject) => { - fs.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => { - if (err) - return reject(err); - resolve5({ bytesWritten, buffer: buffer2 }); - }); - }); - }; - exports.readv = function(fd, buffers, ...args) { - if (typeof args[args.length - 1] === "function") { - return fs.readv(fd, buffers, ...args); - } - return new Promise((resolve5, reject) => { - fs.readv(fd, buffers, ...args, (err, bytesRead, buffers2) => { - if (err) - return reject(err); - resolve5({ bytesRead, buffers: buffers2 }); - }); - }); - }; - exports.writev = function(fd, buffers, ...args) { - if (typeof args[args.length - 1] === "function") { - return fs.writev(fd, buffers, ...args); - } - return new Promise((resolve5, reject) => { - fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => { - if (err) - return reject(err); - resolve5({ bytesWritten, buffers: buffers2 }); - }); - }); - }; - if (typeof fs.realpath.native === "function") { - exports.realpath.native = u(fs.realpath.native); - } else { - process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?", "Warning", "fs-extra-WARN0003"); - } -}); - -// node_modules/fs-extra/lib/mkdirs/utils.js -var require_utils = __commonJS((exports, module) => { - var path = __require("path"); - exports.checkPath = function checkPath(pth) { - if (process.platform === "win32") { - const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, "")); - if (pathHasInvalidWinCharacters) { - const error2 = new Error(`Path contains invalid characters: ${pth}`); - error2.code = "EINVAL"; - throw error2; - } - } - }; -}); - -// node_modules/fs-extra/lib/mkdirs/make-dir.js -var require_make_dir = __commonJS((exports, module) => { - var fs = require_fs(); - var { checkPath } = require_utils(); - var getMode = (options) => { - const defaults = { mode: 511 }; - if (typeof options === "number") - return options; - return { ...defaults, ...options }.mode; - }; - exports.makeDir = async (dir, options) => { - checkPath(dir); - return fs.mkdir(dir, { - mode: getMode(options), - recursive: true - }); - }; - exports.makeDirSync = (dir, options) => { - checkPath(dir); - return fs.mkdirSync(dir, { - mode: getMode(options), - recursive: true - }); - }; -}); - -// node_modules/fs-extra/lib/mkdirs/index.js -var require_mkdirs = __commonJS((exports, module) => { - var u = require_universalify().fromPromise; - var { makeDir: _makeDir, makeDirSync } = require_make_dir(); - var makeDir = u(_makeDir); - module.exports = { - mkdirs: makeDir, - mkdirsSync: makeDirSync, - mkdirp: makeDir, - mkdirpSync: makeDirSync, - ensureDir: makeDir, - ensureDirSync: makeDirSync - }; -}); - -// node_modules/fs-extra/lib/path-exists/index.js -var require_path_exists = __commonJS((exports, module) => { - var pathExists = function(path) { - return fs.access(path).then(() => true).catch(() => false); - }; - var u = require_universalify().fromPromise; - var fs = require_fs(); - module.exports = { - pathExists: u(pathExists), - pathExistsSync: fs.existsSync - }; -}); - -// node_modules/fs-extra/lib/util/utimes.js -var require_utimes = __commonJS((exports, module) => { - var utimesMillis = function(path, atime, mtime, callback) { - fs.open(path, "r+", (err, fd) => { - if (err) - return callback(err); - fs.futimes(fd, atime, mtime, (futimesErr) => { - fs.close(fd, (closeErr) => { - if (callback) - callback(futimesErr || closeErr); - }); - }); - }); - }; - var utimesMillisSync = function(path, atime, mtime) { - const fd = fs.openSync(path, "r+"); - fs.futimesSync(fd, atime, mtime); - return fs.closeSync(fd); - }; - var fs = require_graceful_fs(); - module.exports = { - utimesMillis, - utimesMillisSync - }; -}); - -// node_modules/fs-extra/lib/util/stat.js -var require_stat = __commonJS((exports, module) => { - var getStats = function(src, dest, opts) { - const statFunc = opts.dereference ? (file) => fs.stat(file, { bigint: true }) : (file) => fs.lstat(file, { bigint: true }); - return Promise.all([ - statFunc(src), - statFunc(dest).catch((err) => { - if (err.code === "ENOENT") - return null; - throw err; - }) - ]).then(([srcStat, destStat]) => ({ srcStat, destStat })); - }; - var getStatsSync = function(src, dest, opts) { - let destStat; - const statFunc = opts.dereference ? (file) => fs.statSync(file, { bigint: true }) : (file) => fs.lstatSync(file, { bigint: true }); - const srcStat = statFunc(src); - try { - destStat = statFunc(dest); - } catch (err) { - if (err.code === "ENOENT") - return { srcStat, destStat: null }; - throw err; - } - return { srcStat, destStat }; - }; - var checkPaths = function(src, dest, funcName, opts, cb) { - util.callbackify(getStats)(src, dest, opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, destStat } = stats; - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path.basename(src); - const destBaseName = path.basename(dest); - if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return cb(null, { srcStat, destStat, isChangingCase: true }); - } - return cb(new Error("Source and destination must not be the same.")); - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)); - } - } - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - return cb(new Error(errMsg(src, dest, funcName))); - } - return cb(null, { srcStat, destStat }); - }); - }; - var checkPathsSync = function(src, dest, funcName, opts) { - const { srcStat, destStat } = getStatsSync(src, dest, opts); - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path.basename(src); - const destBaseName = path.basename(dest); - if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return { srcStat, destStat, isChangingCase: true }; - } - throw new Error("Source and destination must not be the same."); - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`); - } - } - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - throw new Error(errMsg(src, dest, funcName)); - } - return { srcStat, destStat }; - }; - var checkParentPaths = function(src, srcStat, dest, funcName, cb) { - const srcParent = path.resolve(path.dirname(src)); - const destParent = path.resolve(path.dirname(dest)); - if (destParent === srcParent || destParent === path.parse(destParent).root) - return cb(); - fs.stat(destParent, { bigint: true }, (err, destStat) => { - if (err) { - if (err.code === "ENOENT") - return cb(); - return cb(err); - } - if (areIdentical(srcStat, destStat)) { - return cb(new Error(errMsg(src, dest, funcName))); - } - return checkParentPaths(src, srcStat, destParent, funcName, cb); - }); - }; - var checkParentPathsSync = function(src, srcStat, dest, funcName) { - const srcParent = path.resolve(path.dirname(src)); - const destParent = path.resolve(path.dirname(dest)); - if (destParent === srcParent || destParent === path.parse(destParent).root) - return; - let destStat; - try { - destStat = fs.statSync(destParent, { bigint: true }); - } catch (err) { - if (err.code === "ENOENT") - return; - throw err; - } - if (areIdentical(srcStat, destStat)) { - throw new Error(errMsg(src, dest, funcName)); - } - return checkParentPathsSync(src, srcStat, destParent, funcName); - }; - var areIdentical = function(srcStat, destStat) { - return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev; - }; - var isSrcSubdir = function(src, dest) { - const srcArr = path.resolve(src).split(path.sep).filter((i) => i); - const destArr = path.resolve(dest).split(path.sep).filter((i) => i); - return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); - }; - var errMsg = function(src, dest, funcName) { - return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; - }; - var fs = require_fs(); - var path = __require("path"); - var util = __require("util"); - module.exports = { - checkPaths, - checkPathsSync, - checkParentPaths, - checkParentPathsSync, - isSrcSubdir, - areIdentical - }; -}); - -// node_modules/fs-extra/lib/copy/copy.js -var require_copy = __commonJS((exports, module) => { - var copy = function(src, dest, opts, cb) { - if (typeof opts === "function" && !cb) { - cb = opts; - opts = {}; - } else if (typeof opts === "function") { - opts = { filter: opts }; - } - cb = cb || function() { - }; - opts = opts || {}; - opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; - opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; - if (opts.preserveTimestamps && process.arch === "ia32") { - process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0001"); - } - stat.checkPaths(src, dest, "copy", opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, destStat } = stats; - stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => { - if (err2) - return cb(err2); - runFilter(src, dest, opts, (err3, include) => { - if (err3) - return cb(err3); - if (!include) - return cb(); - checkParentDir(destStat, src, dest, opts, cb); - }); - }); - }); - }; - var checkParentDir = function(destStat, src, dest, opts, cb) { - const destParent = path.dirname(dest); - pathExists(destParent, (err, dirExists) => { - if (err) - return cb(err); - if (dirExists) - return getStats(destStat, src, dest, opts, cb); - mkdirs(destParent, (err2) => { - if (err2) - return cb(err2); - return getStats(destStat, src, dest, opts, cb); - }); - }); - }; - var runFilter = function(src, dest, opts, cb) { - if (!opts.filter) - return cb(null, true); - Promise.resolve(opts.filter(src, dest)).then((include) => cb(null, include), (error2) => cb(error2)); - }; - var getStats = function(destStat, src, dest, opts, cb) { - const stat2 = opts.dereference ? fs.stat : fs.lstat; - stat2(src, (err, srcStat) => { - if (err) - return cb(err); - if (srcStat.isDirectory()) - return onDir(srcStat, destStat, src, dest, opts, cb); - else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) - return onFile(srcStat, destStat, src, dest, opts, cb); - else if (srcStat.isSymbolicLink()) - return onLink(destStat, src, dest, opts, cb); - else if (srcStat.isSocket()) - return cb(new Error(`Cannot copy a socket file: ${src}`)); - else if (srcStat.isFIFO()) - return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)); - return cb(new Error(`Unknown file: ${src}`)); - }); - }; - var onFile = function(srcStat, destStat, src, dest, opts, cb) { - if (!destStat) - return copyFile(srcStat, src, dest, opts, cb); - return mayCopyFile(srcStat, src, dest, opts, cb); - }; - var mayCopyFile = function(srcStat, src, dest, opts, cb) { - if (opts.overwrite) { - fs.unlink(dest, (err) => { - if (err) - return cb(err); - return copyFile(srcStat, src, dest, opts, cb); - }); - } else if (opts.errorOnExist) { - return cb(new Error(`'${dest}' already exists`)); - } else - return cb(); - }; - var copyFile = function(srcStat, src, dest, opts, cb) { - fs.copyFile(src, dest, (err) => { - if (err) - return cb(err); - if (opts.preserveTimestamps) - return handleTimestampsAndMode(srcStat.mode, src, dest, cb); - return setDestMode(dest, srcStat.mode, cb); - }); - }; - var handleTimestampsAndMode = function(srcMode, src, dest, cb) { - if (fileIsNotWritable(srcMode)) { - return makeFileWritable(dest, srcMode, (err) => { - if (err) - return cb(err); - return setDestTimestampsAndMode(srcMode, src, dest, cb); - }); - } - return setDestTimestampsAndMode(srcMode, src, dest, cb); - }; - var fileIsNotWritable = function(srcMode) { - return (srcMode & 128) === 0; - }; - var makeFileWritable = function(dest, srcMode, cb) { - return setDestMode(dest, srcMode | 128, cb); - }; - var setDestTimestampsAndMode = function(srcMode, src, dest, cb) { - setDestTimestamps(src, dest, (err) => { - if (err) - return cb(err); - return setDestMode(dest, srcMode, cb); - }); - }; - var setDestMode = function(dest, srcMode, cb) { - return fs.chmod(dest, srcMode, cb); - }; - var setDestTimestamps = function(src, dest, cb) { - fs.stat(src, (err, updatedSrcStat) => { - if (err) - return cb(err); - return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb); - }); - }; - var onDir = function(srcStat, destStat, src, dest, opts, cb) { - if (!destStat) - return mkDirAndCopy(srcStat.mode, src, dest, opts, cb); - return copyDir(src, dest, opts, cb); - }; - var mkDirAndCopy = function(srcMode, src, dest, opts, cb) { - fs.mkdir(dest, (err) => { - if (err) - return cb(err); - copyDir(src, dest, opts, (err2) => { - if (err2) - return cb(err2); - return setDestMode(dest, srcMode, cb); - }); - }); - }; - var copyDir = function(src, dest, opts, cb) { - fs.readdir(src, (err, items) => { - if (err) - return cb(err); - return copyDirItems(items, src, dest, opts, cb); - }); - }; - var copyDirItems = function(items, src, dest, opts, cb) { - const item = items.pop(); - if (!item) - return cb(); - return copyDirItem(items, item, src, dest, opts, cb); - }; - var copyDirItem = function(items, item, src, dest, opts, cb) { - const srcItem = path.join(src, item); - const destItem = path.join(dest, item); - runFilter(srcItem, destItem, opts, (err, include) => { - if (err) - return cb(err); - if (!include) - return copyDirItems(items, src, dest, opts, cb); - stat.checkPaths(srcItem, destItem, "copy", opts, (err2, stats) => { - if (err2) - return cb(err2); - const { destStat } = stats; - getStats(destStat, srcItem, destItem, opts, (err3) => { - if (err3) - return cb(err3); - return copyDirItems(items, src, dest, opts, cb); - }); - }); - }); - }; - var onLink = function(destStat, src, dest, opts, cb) { - fs.readlink(src, (err, resolvedSrc) => { - if (err) - return cb(err); - if (opts.dereference) { - resolvedSrc = path.resolve(process.cwd(), resolvedSrc); - } - if (!destStat) { - return fs.symlink(resolvedSrc, dest, cb); - } else { - fs.readlink(dest, (err2, resolvedDest) => { - if (err2) { - if (err2.code === "EINVAL" || err2.code === "UNKNOWN") - return fs.symlink(resolvedSrc, dest, cb); - return cb(err2); - } - if (opts.dereference) { - resolvedDest = path.resolve(process.cwd(), resolvedDest); - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); - } - if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); - } - return copyLink(resolvedSrc, dest, cb); - }); - } - }); - }; - var copyLink = function(resolvedSrc, dest, cb) { - fs.unlink(dest, (err) => { - if (err) - return cb(err); - return fs.symlink(resolvedSrc, dest, cb); - }); - }; - var fs = require_graceful_fs(); - var path = __require("path"); - var mkdirs = require_mkdirs().mkdirs; - var pathExists = require_path_exists().pathExists; - var utimesMillis = require_utimes().utimesMillis; - var stat = require_stat(); - module.exports = copy; -}); - -// node_modules/fs-extra/lib/copy/copy-sync.js -var require_copy_sync = __commonJS((exports, module) => { - var copySync = function(src, dest, opts) { - if (typeof opts === "function") { - opts = { filter: opts }; - } - opts = opts || {}; - opts.clobber = ("clobber" in opts) ? !!opts.clobber : true; - opts.overwrite = ("overwrite" in opts) ? !!opts.overwrite : opts.clobber; - if (opts.preserveTimestamps && process.arch === "ia32") { - process.emitWarning("Using the preserveTimestamps option in 32-bit node is not recommended;\n\n\tsee https://github.com/jprichardson/node-fs-extra/issues/269", "Warning", "fs-extra-WARN0002"); - } - const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy", opts); - stat.checkParentPathsSync(src, srcStat, dest, "copy"); - if (opts.filter && !opts.filter(src, dest)) - return; - const destParent = path.dirname(dest); - if (!fs.existsSync(destParent)) - mkdirsSync(destParent); - return getStats(destStat, src, dest, opts); - }; - var getStats = function(destStat, src, dest, opts) { - const statSync3 = opts.dereference ? fs.statSync : fs.lstatSync; - const srcStat = statSync3(src); - if (srcStat.isDirectory()) - return onDir(srcStat, destStat, src, dest, opts); - else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) - return onFile(srcStat, destStat, src, dest, opts); - else if (srcStat.isSymbolicLink()) - return onLink(destStat, src, dest, opts); - else if (srcStat.isSocket()) - throw new Error(`Cannot copy a socket file: ${src}`); - else if (srcStat.isFIFO()) - throw new Error(`Cannot copy a FIFO pipe: ${src}`); - throw new Error(`Unknown file: ${src}`); - }; - var onFile = function(srcStat, destStat, src, dest, opts) { - if (!destStat) - return copyFile(srcStat, src, dest, opts); - return mayCopyFile(srcStat, src, dest, opts); - }; - var mayCopyFile = function(srcStat, src, dest, opts) { - if (opts.overwrite) { - fs.unlinkSync(dest); - return copyFile(srcStat, src, dest, opts); - } else if (opts.errorOnExist) { - throw new Error(`'${dest}' already exists`); - } - }; - var copyFile = function(srcStat, src, dest, opts) { - fs.copyFileSync(src, dest); - if (opts.preserveTimestamps) - handleTimestamps(srcStat.mode, src, dest); - return setDestMode(dest, srcStat.mode); - }; - var handleTimestamps = function(srcMode, src, dest) { - if (fileIsNotWritable(srcMode)) - makeFileWritable(dest, srcMode); - return setDestTimestamps(src, dest); - }; - var fileIsNotWritable = function(srcMode) { - return (srcMode & 128) === 0; - }; - var makeFileWritable = function(dest, srcMode) { - return setDestMode(dest, srcMode | 128); - }; - var setDestMode = function(dest, srcMode) { - return fs.chmodSync(dest, srcMode); - }; - var setDestTimestamps = function(src, dest) { - const updatedSrcStat = fs.statSync(src); - return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime); - }; - var onDir = function(srcStat, destStat, src, dest, opts) { - if (!destStat) - return mkDirAndCopy(srcStat.mode, src, dest, opts); - return copyDir(src, dest, opts); - }; - var mkDirAndCopy = function(srcMode, src, dest, opts) { - fs.mkdirSync(dest); - copyDir(src, dest, opts); - return setDestMode(dest, srcMode); - }; - var copyDir = function(src, dest, opts) { - fs.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts)); - }; - var copyDirItem = function(item, src, dest, opts) { - const srcItem = path.join(src, item); - const destItem = path.join(dest, item); - if (opts.filter && !opts.filter(srcItem, destItem)) - return; - const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy", opts); - return getStats(destStat, srcItem, destItem, opts); - }; - var onLink = function(destStat, src, dest, opts) { - let resolvedSrc = fs.readlinkSync(src); - if (opts.dereference) { - resolvedSrc = path.resolve(process.cwd(), resolvedSrc); - } - if (!destStat) { - return fs.symlinkSync(resolvedSrc, dest); - } else { - let resolvedDest; - try { - resolvedDest = fs.readlinkSync(dest); - } catch (err) { - if (err.code === "EINVAL" || err.code === "UNKNOWN") - return fs.symlinkSync(resolvedSrc, dest); - throw err; - } - if (opts.dereference) { - resolvedDest = path.resolve(process.cwd(), resolvedDest); - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); - } - if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); - } - return copyLink(resolvedSrc, dest); - } - }; - var copyLink = function(resolvedSrc, dest) { - fs.unlinkSync(dest); - return fs.symlinkSync(resolvedSrc, dest); - }; - var fs = require_graceful_fs(); - var path = __require("path"); - var mkdirsSync = require_mkdirs().mkdirsSync; - var utimesMillisSync = require_utimes().utimesMillisSync; - var stat = require_stat(); - module.exports = copySync; -}); - -// node_modules/fs-extra/lib/copy/index.js -var require_copy2 = __commonJS((exports, module) => { - var u = require_universalify().fromCallback; - module.exports = { - copy: u(require_copy()), - copySync: require_copy_sync() - }; -}); - -// node_modules/fs-extra/lib/remove/index.js -var require_remove = __commonJS((exports, module) => { - var remove = function(path, callback) { - fs.rm(path, { recursive: true, force: true }, callback); - }; - var removeSync = function(path) { - fs.rmSync(path, { recursive: true, force: true }); - }; - var fs = require_graceful_fs(); - var u = require_universalify().fromCallback; - module.exports = { - remove: u(remove), - removeSync - }; -}); - -// node_modules/fs-extra/lib/empty/index.js -var require_empty = __commonJS((exports, module) => { - var emptyDirSync = function(dir) { - let items; - try { - items = fs.readdirSync(dir); - } catch { - return mkdir.mkdirsSync(dir); - } - items.forEach((item) => { - item = path.join(dir, item); - remove.removeSync(item); - }); - }; - var u = require_universalify().fromPromise; - var fs = require_fs(); - var path = __require("path"); - var mkdir = require_mkdirs(); - var remove = require_remove(); - var emptyDir = u(async function emptyDir(dir) { - let items; - try { - items = await fs.readdir(dir); - } catch { - return mkdir.mkdirs(dir); - } - return Promise.all(items.map((item) => remove.remove(path.join(dir, item)))); - }); - module.exports = { - emptyDirSync, - emptydirSync: emptyDirSync, - emptyDir, - emptydir: emptyDir - }; -}); - -// node_modules/fs-extra/lib/ensure/file.js -var require_file = __commonJS((exports, module) => { - var createFile = function(file, callback) { - function makeFile() { - fs.writeFile(file, "", (err) => { - if (err) - return callback(err); - callback(); - }); - } - fs.stat(file, (err, stats) => { - if (!err && stats.isFile()) - return callback(); - const dir = path.dirname(file); - fs.stat(dir, (err2, stats2) => { - if (err2) { - if (err2.code === "ENOENT") { - return mkdir.mkdirs(dir, (err3) => { - if (err3) - return callback(err3); - makeFile(); - }); - } - return callback(err2); - } - if (stats2.isDirectory()) - makeFile(); - else { - fs.readdir(dir, (err3) => { - if (err3) - return callback(err3); - }); - } - }); - }); - }; - var createFileSync = function(file) { - let stats; - try { - stats = fs.statSync(file); - } catch { - } - if (stats && stats.isFile()) - return; - const dir = path.dirname(file); - try { - if (!fs.statSync(dir).isDirectory()) { - fs.readdirSync(dir); - } - } catch (err) { - if (err && err.code === "ENOENT") - mkdir.mkdirsSync(dir); - else - throw err; - } - fs.writeFileSync(file, ""); - }; - var u = require_universalify().fromCallback; - var path = __require("path"); - var fs = require_graceful_fs(); - var mkdir = require_mkdirs(); - module.exports = { - createFile: u(createFile), - createFileSync - }; -}); - -// node_modules/fs-extra/lib/ensure/link.js -var require_link = __commonJS((exports, module) => { - var createLink = function(srcpath, dstpath, callback) { - function makeLink(srcpath2, dstpath2) { - fs.link(srcpath2, dstpath2, (err) => { - if (err) - return callback(err); - callback(null); - }); - } - fs.lstat(dstpath, (_, dstStat) => { - fs.lstat(srcpath, (err, srcStat) => { - if (err) { - err.message = err.message.replace("lstat", "ensureLink"); - return callback(err); - } - if (dstStat && areIdentical(srcStat, dstStat)) - return callback(null); - const dir = path.dirname(dstpath); - pathExists(dir, (err2, dirExists) => { - if (err2) - return callback(err2); - if (dirExists) - return makeLink(srcpath, dstpath); - mkdir.mkdirs(dir, (err3) => { - if (err3) - return callback(err3); - makeLink(srcpath, dstpath); - }); - }); - }); - }); - }; - var createLinkSync = function(srcpath, dstpath) { - let dstStat; - try { - dstStat = fs.lstatSync(dstpath); - } catch { - } - try { - const srcStat = fs.lstatSync(srcpath); - if (dstStat && areIdentical(srcStat, dstStat)) - return; - } catch (err) { - err.message = err.message.replace("lstat", "ensureLink"); - throw err; - } - const dir = path.dirname(dstpath); - const dirExists = fs.existsSync(dir); - if (dirExists) - return fs.linkSync(srcpath, dstpath); - mkdir.mkdirsSync(dir); - return fs.linkSync(srcpath, dstpath); - }; - var u = require_universalify().fromCallback; - var path = __require("path"); - var fs = require_graceful_fs(); - var mkdir = require_mkdirs(); - var pathExists = require_path_exists().pathExists; - var { areIdentical } = require_stat(); - module.exports = { - createLink: u(createLink), - createLinkSync - }; -}); - -// node_modules/fs-extra/lib/ensure/symlink-paths.js -var require_symlink_paths = __commonJS((exports, module) => { - var symlinkPaths = function(srcpath, dstpath, callback) { - if (path.isAbsolute(srcpath)) { - return fs.lstat(srcpath, (err) => { - if (err) { - err.message = err.message.replace("lstat", "ensureSymlink"); - return callback(err); - } - return callback(null, { - toCwd: srcpath, - toDst: srcpath - }); - }); - } else { - const dstdir = path.dirname(dstpath); - const relativeToDst = path.join(dstdir, srcpath); - return pathExists(relativeToDst, (err, exists) => { - if (err) - return callback(err); - if (exists) { - return callback(null, { - toCwd: relativeToDst, - toDst: srcpath - }); - } else { - return fs.lstat(srcpath, (err2) => { - if (err2) { - err2.message = err2.message.replace("lstat", "ensureSymlink"); - return callback(err2); - } - return callback(null, { - toCwd: srcpath, - toDst: path.relative(dstdir, srcpath) - }); - }); - } - }); - } - }; - var symlinkPathsSync = function(srcpath, dstpath) { - let exists; - if (path.isAbsolute(srcpath)) { - exists = fs.existsSync(srcpath); - if (!exists) - throw new Error("absolute srcpath does not exist"); - return { - toCwd: srcpath, - toDst: srcpath - }; - } else { - const dstdir = path.dirname(dstpath); - const relativeToDst = path.join(dstdir, srcpath); - exists = fs.existsSync(relativeToDst); - if (exists) { - return { - toCwd: relativeToDst, - toDst: srcpath - }; - } else { - exists = fs.existsSync(srcpath); - if (!exists) - throw new Error("relative srcpath does not exist"); - return { - toCwd: srcpath, - toDst: path.relative(dstdir, srcpath) - }; - } - } - }; - var path = __require("path"); - var fs = require_graceful_fs(); - var pathExists = require_path_exists().pathExists; - module.exports = { - symlinkPaths, - symlinkPathsSync - }; -}); - -// node_modules/fs-extra/lib/ensure/symlink-type.js -var require_symlink_type = __commonJS((exports, module) => { - var symlinkType = function(srcpath, type, callback) { - callback = typeof type === "function" ? type : callback; - type = typeof type === "function" ? false : type; - if (type) - return callback(null, type); - fs.lstat(srcpath, (err, stats) => { - if (err) - return callback(null, "file"); - type = stats && stats.isDirectory() ? "dir" : "file"; - callback(null, type); - }); - }; - var symlinkTypeSync = function(srcpath, type) { - let stats; - if (type) - return type; - try { - stats = fs.lstatSync(srcpath); - } catch { - return "file"; - } - return stats && stats.isDirectory() ? "dir" : "file"; - }; - var fs = require_graceful_fs(); - module.exports = { - symlinkType, - symlinkTypeSync - }; -}); - -// node_modules/fs-extra/lib/ensure/symlink.js -var require_symlink = __commonJS((exports, module) => { - var createSymlink = function(srcpath, dstpath, type, callback) { - callback = typeof type === "function" ? type : callback; - type = typeof type === "function" ? false : type; - fs.lstat(dstpath, (err, stats) => { - if (!err && stats.isSymbolicLink()) { - Promise.all([ - fs.stat(srcpath), - fs.stat(dstpath) - ]).then(([srcStat, dstStat]) => { - if (areIdentical(srcStat, dstStat)) - return callback(null); - _createSymlink(srcpath, dstpath, type, callback); - }); - } else - _createSymlink(srcpath, dstpath, type, callback); - }); - }; - var _createSymlink = function(srcpath, dstpath, type, callback) { - symlinkPaths(srcpath, dstpath, (err, relative2) => { - if (err) - return callback(err); - srcpath = relative2.toDst; - symlinkType(relative2.toCwd, type, (err2, type2) => { - if (err2) - return callback(err2); - const dir = path.dirname(dstpath); - pathExists(dir, (err3, dirExists) => { - if (err3) - return callback(err3); - if (dirExists) - return fs.symlink(srcpath, dstpath, type2, callback); - mkdirs(dir, (err4) => { - if (err4) - return callback(err4); - fs.symlink(srcpath, dstpath, type2, callback); - }); - }); - }); - }); - }; - var createSymlinkSync = function(srcpath, dstpath, type) { - let stats; - try { - stats = fs.lstatSync(dstpath); - } catch { - } - if (stats && stats.isSymbolicLink()) { - const srcStat = fs.statSync(srcpath); - const dstStat = fs.statSync(dstpath); - if (areIdentical(srcStat, dstStat)) - return; - } - const relative2 = symlinkPathsSync(srcpath, dstpath); - srcpath = relative2.toDst; - type = symlinkTypeSync(relative2.toCwd, type); - const dir = path.dirname(dstpath); - const exists = fs.existsSync(dir); - if (exists) - return fs.symlinkSync(srcpath, dstpath, type); - mkdirsSync(dir); - return fs.symlinkSync(srcpath, dstpath, type); - }; - var u = require_universalify().fromCallback; - var path = __require("path"); - var fs = require_fs(); - var _mkdirs = require_mkdirs(); - var mkdirs = _mkdirs.mkdirs; - var mkdirsSync = _mkdirs.mkdirsSync; - var _symlinkPaths = require_symlink_paths(); - var symlinkPaths = _symlinkPaths.symlinkPaths; - var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; - var _symlinkType = require_symlink_type(); - var symlinkType = _symlinkType.symlinkType; - var symlinkTypeSync = _symlinkType.symlinkTypeSync; - var pathExists = require_path_exists().pathExists; - var { areIdentical } = require_stat(); - module.exports = { - createSymlink: u(createSymlink), - createSymlinkSync - }; -}); - -// node_modules/fs-extra/lib/ensure/index.js -var require_ensure = __commonJS((exports, module) => { - var { createFile, createFileSync } = require_file(); - var { createLink, createLinkSync } = require_link(); - var { createSymlink, createSymlinkSync } = require_symlink(); - module.exports = { - createFile, - createFileSync, - ensureFile: createFile, - ensureFileSync: createFileSync, - createLink, - createLinkSync, - ensureLink: createLink, - ensureLinkSync: createLinkSync, - createSymlink, - createSymlinkSync, - ensureSymlink: createSymlink, - ensureSymlinkSync: createSymlinkSync - }; -}); - -// node_modules/jsonfile/utils.js -var require_utils2 = __commonJS((exports, module) => { - var stringify = function(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) { - const EOF = finalEOL ? EOL : ""; - const str = JSON.stringify(obj, replacer, spaces); - return str.replace(/\n/g, EOL) + EOF; - }; - var stripBom = function(content) { - if (Buffer.isBuffer(content)) - content = content.toString("utf8"); - return content.replace(/^\uFEFF/, ""); - }; - module.exports = { stringify, stripBom }; -}); - -// node_modules/jsonfile/index.js -var require_jsonfile = __commonJS((exports, module) => { - async function _readFile(file, options = {}) { - if (typeof options === "string") { - options = { encoding: options }; - } - const fs = options.fs || _fs; - const shouldThrow = "throws" in options ? options.throws : true; - let data = await universalify.fromCallback(fs.readFile)(file, options); - data = stripBom(data); - let obj; - try { - obj = JSON.parse(data, options ? options.reviver : null); - } catch (err) { - if (shouldThrow) { - err.message = `${file}: ${err.message}`; - throw err; - } else { - return null; - } - } - return obj; - } - var readFileSync4 = function(file, options = {}) { - if (typeof options === "string") { - options = { encoding: options }; - } - const fs = options.fs || _fs; - const shouldThrow = "throws" in options ? options.throws : true; - try { - let content = fs.readFileSync(file, options); - content = stripBom(content); - return JSON.parse(content, options.reviver); - } catch (err) { - if (shouldThrow) { - err.message = `${file}: ${err.message}`; - throw err; - } else { - return null; - } - } - }; - async function _writeFile(file, obj, options = {}) { - const fs = options.fs || _fs; - const str = stringify(obj, options); - await universalify.fromCallback(fs.writeFile)(file, str, options); - } - var writeFileSync = function(file, obj, options = {}) { - const fs = options.fs || _fs; - const str = stringify(obj, options); - return fs.writeFileSync(file, str, options); - }; - var _fs; - try { - _fs = require_graceful_fs(); - } catch (_) { - _fs = __require("fs"); - } - var universalify = require_universalify(); - var { stringify, stripBom } = require_utils2(); - var readFile = universalify.fromPromise(_readFile); - var writeFile2 = universalify.fromPromise(_writeFile); - var jsonfile = { - readFile, - readFileSync: readFileSync4, - writeFile: writeFile2, - writeFileSync - }; - module.exports = jsonfile; -}); - -// node_modules/fs-extra/lib/json/jsonfile.js -var require_jsonfile2 = __commonJS((exports, module) => { - var jsonFile = require_jsonfile(); - module.exports = { - readJson: jsonFile.readFile, - readJsonSync: jsonFile.readFileSync, - writeJson: jsonFile.writeFile, - writeJsonSync: jsonFile.writeFileSync - }; -}); - -// node_modules/fs-extra/lib/output-file/index.js -var require_output_file = __commonJS((exports, module) => { - var outputFile = function(file, data, encoding, callback) { - if (typeof encoding === "function") { - callback = encoding; - encoding = "utf8"; - } - const dir = path.dirname(file); - pathExists(dir, (err, itDoes) => { - if (err) - return callback(err); - if (itDoes) - return fs.writeFile(file, data, encoding, callback); - mkdir.mkdirs(dir, (err2) => { - if (err2) - return callback(err2); - fs.writeFile(file, data, encoding, callback); - }); - }); - }; - var outputFileSync = function(file, ...args) { - const dir = path.dirname(file); - if (fs.existsSync(dir)) { - return fs.writeFileSync(file, ...args); - } - mkdir.mkdirsSync(dir); - fs.writeFileSync(file, ...args); - }; - var u = require_universalify().fromCallback; - var fs = require_graceful_fs(); - var path = __require("path"); - var mkdir = require_mkdirs(); - var pathExists = require_path_exists().pathExists; - module.exports = { - outputFile: u(outputFile), - outputFileSync - }; -}); - -// node_modules/fs-extra/lib/json/output-json.js -var require_output_json = __commonJS((exports, module) => { - async function outputJson(file, data, options = {}) { - const str = stringify(data, options); - await outputFile(file, str, options); - } - var { stringify } = require_utils2(); - var { outputFile } = require_output_file(); - module.exports = outputJson; -}); - -// node_modules/fs-extra/lib/json/output-json-sync.js -var require_output_json_sync = __commonJS((exports, module) => { - var outputJsonSync = function(file, data, options) { - const str = stringify(data, options); - outputFileSync(file, str, options); - }; - var { stringify } = require_utils2(); - var { outputFileSync } = require_output_file(); - module.exports = outputJsonSync; -}); - -// node_modules/fs-extra/lib/json/index.js -var require_json = __commonJS((exports, module) => { - var u = require_universalify().fromPromise; - var jsonFile = require_jsonfile2(); - jsonFile.outputJson = u(require_output_json()); - jsonFile.outputJsonSync = require_output_json_sync(); - jsonFile.outputJSON = jsonFile.outputJson; - jsonFile.outputJSONSync = jsonFile.outputJsonSync; - jsonFile.writeJSON = jsonFile.writeJson; - jsonFile.writeJSONSync = jsonFile.writeJsonSync; - jsonFile.readJSON = jsonFile.readJson; - jsonFile.readJSONSync = jsonFile.readJsonSync; - module.exports = jsonFile; -}); - -// node_modules/fs-extra/lib/move/move.js -var require_move = __commonJS((exports, module) => { - var move = function(src, dest, opts, cb) { - if (typeof opts === "function") { - cb = opts; - opts = {}; - } - opts = opts || {}; - const overwrite = opts.overwrite || opts.clobber || false; - stat.checkPaths(src, dest, "move", opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, isChangingCase = false } = stats; - stat.checkParentPaths(src, srcStat, dest, "move", (err2) => { - if (err2) - return cb(err2); - if (isParentRoot(dest)) - return doRename(src, dest, overwrite, isChangingCase, cb); - mkdirp(path.dirname(dest), (err3) => { - if (err3) - return cb(err3); - return doRename(src, dest, overwrite, isChangingCase, cb); - }); - }); - }); - }; - var isParentRoot = function(dest) { - const parent = path.dirname(dest); - const parsedPath = path.parse(parent); - return parsedPath.root === parent; - }; - var doRename = function(src, dest, overwrite, isChangingCase, cb) { - if (isChangingCase) - return rename(src, dest, overwrite, cb); - if (overwrite) { - return remove(dest, (err) => { - if (err) - return cb(err); - return rename(src, dest, overwrite, cb); - }); - } - pathExists(dest, (err, destExists) => { - if (err) - return cb(err); - if (destExists) - return cb(new Error("dest already exists.")); - return rename(src, dest, overwrite, cb); - }); - }; - var rename = function(src, dest, overwrite, cb) { - fs.rename(src, dest, (err) => { - if (!err) - return cb(); - if (err.code !== "EXDEV") - return cb(err); - return moveAcrossDevice(src, dest, overwrite, cb); - }); - }; - var moveAcrossDevice = function(src, dest, overwrite, cb) { - const opts = { - overwrite, - errorOnExist: true, - preserveTimestamps: true - }; - copy(src, dest, opts, (err) => { - if (err) - return cb(err); - return remove(src, cb); - }); - }; - var fs = require_graceful_fs(); - var path = __require("path"); - var copy = require_copy2().copy; - var remove = require_remove().remove; - var mkdirp = require_mkdirs().mkdirp; - var pathExists = require_path_exists().pathExists; - var stat = require_stat(); - module.exports = move; -}); - -// node_modules/fs-extra/lib/move/move-sync.js -var require_move_sync = __commonJS((exports, module) => { - var moveSync = function(src, dest, opts) { - opts = opts || {}; - const overwrite = opts.overwrite || opts.clobber || false; - const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, "move", opts); - stat.checkParentPathsSync(src, srcStat, dest, "move"); - if (!isParentRoot(dest)) - mkdirpSync(path.dirname(dest)); - return doRename(src, dest, overwrite, isChangingCase); - }; - var isParentRoot = function(dest) { - const parent = path.dirname(dest); - const parsedPath = path.parse(parent); - return parsedPath.root === parent; - }; - var doRename = function(src, dest, overwrite, isChangingCase) { - if (isChangingCase) - return rename(src, dest, overwrite); - if (overwrite) { - removeSync(dest); - return rename(src, dest, overwrite); - } - if (fs.existsSync(dest)) - throw new Error("dest already exists."); - return rename(src, dest, overwrite); - }; - var rename = function(src, dest, overwrite) { - try { - fs.renameSync(src, dest); - } catch (err) { - if (err.code !== "EXDEV") - throw err; - return moveAcrossDevice(src, dest, overwrite); - } - }; - var moveAcrossDevice = function(src, dest, overwrite) { - const opts = { - overwrite, - errorOnExist: true, - preserveTimestamps: true - }; - copySync(src, dest, opts); - return removeSync(src); - }; - var fs = require_graceful_fs(); - var path = __require("path"); - var copySync = require_copy2().copySync; - var removeSync = require_remove().removeSync; - var mkdirpSync = require_mkdirs().mkdirpSync; - var stat = require_stat(); - module.exports = moveSync; -}); - -// node_modules/fs-extra/lib/move/index.js -var require_move2 = __commonJS((exports, module) => { - var u = require_universalify().fromCallback; - module.exports = { - move: u(require_move()), - moveSync: require_move_sync() - }; -}); - -// node_modules/fs-extra/lib/index.js -var require_lib = __commonJS((exports, module) => { - module.exports = { - ...require_fs(), - ...require_copy2(), - ...require_empty(), - ...require_ensure(), - ...require_json(), - ...require_mkdirs(), - ...require_move2(), - ...require_output_file(), - ...require_path_exists(), - ...require_remove() - }; -}); - -// node_modules/fast-glob/out/utils/array.js -var require_array = __commonJS((exports) => { - var flatten = function(items) { - return items.reduce((collection, item) => [].concat(collection, item), []); - }; - var splitWhen = function(items, predicate) { - const result = [[]]; - let groupIndex = 0; - for (const item of items) { - if (predicate(item)) { - groupIndex++; - result[groupIndex] = []; - } else { - result[groupIndex].push(item); - } - } - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.splitWhen = exports.flatten = undefined; - exports.flatten = flatten; - exports.splitWhen = splitWhen; -}); - -// node_modules/fast-glob/out/utils/errno.js -var require_errno = __commonJS((exports) => { - var isEnoentCodeError = function(error2) { - return error2.code === "ENOENT"; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.isEnoentCodeError = undefined; - exports.isEnoentCodeError = isEnoentCodeError; -}); - -// node_modules/fast-glob/out/utils/fs.js -var require_fs2 = __commonJS((exports) => { - var createDirentFromStats = function(name, stats) { - return new DirentFromStats(name, stats); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createDirentFromStats = undefined; - - class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } - } - exports.createDirentFromStats = createDirentFromStats; -}); - -// node_modules/fast-glob/out/utils/path.js -var require_path = __commonJS((exports) => { - var unixify = function(filepath) { - return filepath.replace(/\\/g, "/"); - }; - var makeAbsolute = function(cwd, filepath) { - return path.resolve(cwd, filepath); - }; - var removeLeadingDotSegment = function(entry) { - if (entry.charAt(0) === ".") { - const secondCharactery = entry.charAt(1); - if (secondCharactery === "/" || secondCharactery === "\\") { - return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); - } - } - return entry; - }; - var escapeWindowsPath = function(pattern) { - return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); - }; - var escapePosixPath = function(pattern) { - return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); - }; - var convertWindowsPathToPattern = function(filepath) { - return escapeWindowsPath(filepath).replace(DOS_DEVICE_PATH_RE, "//$1").replace(WINDOWS_BACKSLASHES_RE, "/"); - }; - var convertPosixPathToPattern = function(filepath) { - return escapePosixPath(filepath); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = undefined; - var os = __require("os"); - var path = __require("path"); - var IS_WINDOWS_PLATFORM = os.platform() === "win32"; - var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; - var POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; - var WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([(){}]|^!|[!+@](?=\())/g; - var DOS_DEVICE_PATH_RE = /^\\\\([.?])/; - var WINDOWS_BACKSLASHES_RE = /\\(?![!()+@{}])/g; - exports.unixify = unixify; - exports.makeAbsolute = makeAbsolute; - exports.removeLeadingDotSegment = removeLeadingDotSegment; - exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; - exports.escapeWindowsPath = escapeWindowsPath; - exports.escapePosixPath = escapePosixPath; - exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; - exports.convertWindowsPathToPattern = convertWindowsPathToPattern; - exports.convertPosixPathToPattern = convertPosixPathToPattern; -}); - -// node_modules/is-extglob/index.js -var require_is_extglob = __commonJS((exports, module) => { - /*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - module.exports = function isExtglob(str) { - if (typeof str !== "string" || str === "") { - return false; - } - var match; - while (match = /(\\).|([@?!+*]\(.*\))/g.exec(str)) { - if (match[2]) - return true; - str = str.slice(match.index + match[0].length); - } - return false; - }; -}); - -// node_modules/is-glob/index.js -var require_is_glob = __commonJS((exports, module) => { - /*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - var isExtglob = require_is_extglob(); - var chars = { "{": "}", "(": ")", "[": "]" }; - var strictCheck = function(str) { - if (str[0] === "!") { - return true; - } - var index = 0; - var pipeIndex = -2; - var closeSquareIndex = -2; - var closeCurlyIndex = -2; - var closeParenIndex = -2; - var backSlashIndex = -2; - while (index < str.length) { - if (str[index] === "*") { - return true; - } - if (str[index + 1] === "?" && /[\].+)]/.test(str[index])) { - return true; - } - if (closeSquareIndex !== -1 && str[index] === "[" && str[index + 1] !== "]") { - if (closeSquareIndex < index) { - closeSquareIndex = str.indexOf("]", index); - } - if (closeSquareIndex > index) { - if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { - return true; - } - backSlashIndex = str.indexOf("\\", index); - if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { - return true; - } - } - } - if (closeCurlyIndex !== -1 && str[index] === "{" && str[index + 1] !== "}") { - closeCurlyIndex = str.indexOf("}", index); - if (closeCurlyIndex > index) { - backSlashIndex = str.indexOf("\\", index); - if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { - return true; - } - } - } - if (closeParenIndex !== -1 && str[index] === "(" && str[index + 1] === "?" && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ")") { - closeParenIndex = str.indexOf(")", index); - if (closeParenIndex > index) { - backSlashIndex = str.indexOf("\\", index); - if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { - return true; - } - } - } - if (pipeIndex !== -1 && str[index] === "(" && str[index + 1] !== "|") { - if (pipeIndex < index) { - pipeIndex = str.indexOf("|", index); - } - if (pipeIndex !== -1 && str[pipeIndex + 1] !== ")") { - closeParenIndex = str.indexOf(")", pipeIndex); - if (closeParenIndex > pipeIndex) { - backSlashIndex = str.indexOf("\\", pipeIndex); - if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { - return true; - } - } - } - } - if (str[index] === "\\") { - var open = str[index + 1]; - index += 2; - var close = chars[open]; - if (close) { - var n = str.indexOf(close, index); - if (n !== -1) { - index = n + 1; - } - } - if (str[index] === "!") { - return true; - } - } else { - index++; - } - } - return false; - }; - var relaxedCheck = function(str) { - if (str[0] === "!") { - return true; - } - var index = 0; - while (index < str.length) { - if (/[*?{}()[\]]/.test(str[index])) { - return true; - } - if (str[index] === "\\") { - var open = str[index + 1]; - index += 2; - var close = chars[open]; - if (close) { - var n = str.indexOf(close, index); - if (n !== -1) { - index = n + 1; - } - } - if (str[index] === "!") { - return true; - } - } else { - index++; - } - } - return false; - }; - module.exports = function isGlob(str, options) { - if (typeof str !== "string" || str === "") { - return false; - } - if (isExtglob(str)) { - return true; - } - var check = strictCheck; - if (options && options.strict === false) { - check = relaxedCheck; - } - return check(str); - }; -}); - -// node_modules/glob-parent/index.js -var require_glob_parent = __commonJS((exports, module) => { - var isGlob = require_is_glob(); - var pathPosixDirname = __require("path").posix.dirname; - var isWin32 = __require("os").platform() === "win32"; - var slash = "/"; - var backslash = /\\/g; - var enclosure = /[\{\[].*[\}\]]$/; - var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; - var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; - module.exports = function globParent(str, opts) { - var options = Object.assign({ flipBackslashes: true }, opts); - if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { - str = str.replace(backslash, slash); - } - if (enclosure.test(str)) { - str += slash; - } - str += "a"; - do { - str = pathPosixDirname(str); - } while (isGlob(str) || globby.test(str)); - return str.replace(escaped, "$1"); - }; -}); - -// node_modules/braces/lib/utils.js -var require_utils3 = __commonJS((exports) => { - exports.isInteger = (num) => { - if (typeof num === "number") { - return Number.isInteger(num); - } - if (typeof num === "string" && num.trim() !== "") { - return Number.isInteger(Number(num)); - } - return false; - }; - exports.find = (node2, type) => node2.nodes.find((node3) => node3.type === type); - exports.exceedsLimit = (min, max, step2 = 1, limit) => { - if (limit === false) - return false; - if (!exports.isInteger(min) || !exports.isInteger(max)) - return false; - return (Number(max) - Number(min)) / Number(step2) >= limit; - }; - exports.escapeNode = (block, n = 0, type) => { - let node2 = block.nodes[n]; - if (!node2) - return; - if (type && node2.type === type || node2.type === "open" || node2.type === "close") { - if (node2.escaped !== true) { - node2.value = "\\" + node2.value; - node2.escaped = true; - } - } - }; - exports.encloseBrace = (node2) => { - if (node2.type !== "brace") - return false; - if (node2.commas >> 0 + node2.ranges >> 0 === 0) { - node2.invalid = true; - return true; - } - return false; - }; - exports.isInvalidBrace = (block) => { - if (block.type !== "brace") - return false; - if (block.invalid === true || block.dollar) - return true; - if (block.commas >> 0 + block.ranges >> 0 === 0) { - block.invalid = true; - return true; - } - if (block.open !== true || block.close !== true) { - block.invalid = true; - return true; - } - return false; - }; - exports.isOpenOrClose = (node2) => { - if (node2.type === "open" || node2.type === "close") { - return true; - } - return node2.open === true || node2.close === true; - }; - exports.reduce = (nodes) => nodes.reduce((acc, node2) => { - if (node2.type === "text") - acc.push(node2.value); - if (node2.type === "range") - node2.type = "text"; - return acc; - }, []); - exports.flatten = (...args) => { - const result = []; - const flat = (arr) => { - for (let i = 0;i < arr.length; i++) { - let ele = arr[i]; - Array.isArray(ele) ? flat(ele, result) : ele !== undefined && result.push(ele); - } - return result; - }; - flat(args); - return result; - }; -}); - -// node_modules/braces/lib/stringify.js -var require_stringify = __commonJS((exports, module) => { - var utils = require_utils3(); - module.exports = (ast, options = {}) => { - let stringify = (node2, parent = {}) => { - let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); - let invalidNode = node2.invalid === true && options.escapeInvalid === true; - let output = ""; - if (node2.value) { - if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node2)) { - return "\\" + node2.value; - } - return node2.value; - } - if (node2.value) { - return node2.value; - } - if (node2.nodes) { - for (let child of node2.nodes) { - output += stringify(child); - } - } - return output; - }; - return stringify(ast); - }; -}); - -// node_modules/is-number/index.js -var require_is_number = __commonJS((exports, module) => { - /*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ - module.exports = function(num) { - if (typeof num === "number") { - return num - num === 0; - } - if (typeof num === "string" && num.trim() !== "") { - return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); - } - return false; - }; -}); - -// node_modules/to-regex-range/index.js -var require_to_regex_range = __commonJS((exports, module) => { - var collatePatterns = function(neg, pos, options) { - let onlyNegative = filterPatterns(neg, pos, "-", false, options) || []; - let onlyPositive = filterPatterns(pos, neg, "", false, options) || []; - let intersected = filterPatterns(neg, pos, "-?", true, options) || []; - let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); - return subpatterns.join("|"); - }; - var splitToRanges = function(min, max) { - let nines = 1; - let zeros = 1; - let stop = countNines(min, nines); - let stops = new Set([max]); - while (min <= stop && stop <= max) { - stops.add(stop); - nines += 1; - stop = countNines(min, nines); - } - stop = countZeros(max + 1, zeros) - 1; - while (min < stop && stop <= max) { - stops.add(stop); - zeros += 1; - stop = countZeros(max + 1, zeros) - 1; - } - stops = [...stops]; - stops.sort(compare); - return stops; - }; - var rangeToPattern = function(start, stop, options) { - if (start === stop) { - return { pattern: start, count: [], digits: 0 }; - } - let zipped = zip(start, stop); - let digits = zipped.length; - let pattern = ""; - let count = 0; - for (let i = 0;i < digits; i++) { - let [startDigit, stopDigit] = zipped[i]; - if (startDigit === stopDigit) { - pattern += startDigit; - } else if (startDigit !== "0" || stopDigit !== "9") { - pattern += toCharacterClass(startDigit, stopDigit, options); - } else { - count++; - } - } - if (count) { - pattern += options.shorthand === true ? "\\d" : "[0-9]"; - } - return { pattern, count: [count], digits }; - }; - var splitToPatterns = function(min, max, tok, options) { - let ranges = splitToRanges(min, max); - let tokens = []; - let start = min; - let prev; - for (let i = 0;i < ranges.length; i++) { - let max2 = ranges[i]; - let obj = rangeToPattern(String(start), String(max2), options); - let zeros = ""; - if (!tok.isPadded && prev && prev.pattern === obj.pattern) { - if (prev.count.length > 1) { - prev.count.pop(); - } - prev.count.push(obj.count[0]); - prev.string = prev.pattern + toQuantifier(prev.count); - start = max2 + 1; - continue; - } - if (tok.isPadded) { - zeros = padZeros(max2, tok, options); - } - obj.string = zeros + obj.pattern + toQuantifier(obj.count); - tokens.push(obj); - start = max2 + 1; - prev = obj; - } - return tokens; - }; - var filterPatterns = function(arr, comparison, prefix, intersection, options) { - let result = []; - for (let ele of arr) { - let { string } = ele; - if (!intersection && !contains(comparison, "string", string)) { - result.push(prefix + string); - } - if (intersection && contains(comparison, "string", string)) { - result.push(prefix + string); - } - } - return result; - }; - var zip = function(a, b) { - let arr = []; - for (let i = 0;i < a.length; i++) - arr.push([a[i], b[i]]); - return arr; - }; - var compare = function(a, b) { - return a > b ? 1 : b > a ? -1 : 0; - }; - var contains = function(arr, key, val) { - return arr.some((ele) => ele[key] === val); - }; - var countNines = function(min, len) { - return Number(String(min).slice(0, -len) + "9".repeat(len)); - }; - var countZeros = function(integer, zeros) { - return integer - integer % Math.pow(10, zeros); - }; - var toQuantifier = function(digits) { - let [start = 0, stop = ""] = digits; - if (stop || start > 1) { - return `{${start + (stop ? "," + stop : "")}}`; - } - return ""; - }; - var toCharacterClass = function(a, b, options) { - return `[${a}${b - a === 1 ? "" : "-"}${b}]`; - }; - var hasPadding = function(str) { - return /^-?(0+)\d/.test(str); - }; - var padZeros = function(value, tok, options) { - if (!tok.isPadded) { - return value; - } - let diff = Math.abs(tok.maxLen - String(value).length); - let relax = options.relaxZeros !== false; - switch (diff) { - case 0: - return ""; - case 1: - return relax ? "0?" : "0"; - case 2: - return relax ? "0{0,2}" : "00"; - default: { - return relax ? `0{0,${diff}}` : `0{${diff}}`; - } - } - }; - /*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ - var isNumber = require_is_number(); - var toRegexRange = (min, max, options) => { - if (isNumber(min) === false) { - throw new TypeError("toRegexRange: expected the first argument to be a number"); - } - if (max === undefined || min === max) { - return String(min); - } - if (isNumber(max) === false) { - throw new TypeError("toRegexRange: expected the second argument to be a number."); - } - let opts = { relaxZeros: true, ...options }; - if (typeof opts.strictZeros === "boolean") { - opts.relaxZeros = opts.strictZeros === false; - } - let relax = String(opts.relaxZeros); - let shorthand = String(opts.shorthand); - let capture = String(opts.capture); - let wrap2 = String(opts.wrap); - let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap2; - if (toRegexRange.cache.hasOwnProperty(cacheKey)) { - return toRegexRange.cache[cacheKey].result; - } - let a = Math.min(min, max); - let b = Math.max(min, max); - if (Math.abs(a - b) === 1) { - let result = min + "|" + max; - if (opts.capture) { - return `(${result})`; - } - if (opts.wrap === false) { - return result; - } - return `(?:${result})`; - } - let isPadded = hasPadding(min) || hasPadding(max); - let state = { min, max, a, b }; - let positives = []; - let negatives = []; - if (isPadded) { - state.isPadded = isPadded; - state.maxLen = String(state.max).length; - } - if (a < 0) { - let newMin = b < 0 ? Math.abs(b) : 1; - negatives = splitToPatterns(newMin, Math.abs(a), state, opts); - a = state.a = 0; - } - if (b >= 0) { - positives = splitToPatterns(a, b, state, opts); - } - state.negatives = negatives; - state.positives = positives; - state.result = collatePatterns(negatives, positives, opts); - if (opts.capture === true) { - state.result = `(${state.result})`; - } else if (opts.wrap !== false && positives.length + negatives.length > 1) { - state.result = `(?:${state.result})`; - } - toRegexRange.cache[cacheKey] = state; - return state.result; - }; - toRegexRange.cache = {}; - toRegexRange.clearCache = () => toRegexRange.cache = {}; - module.exports = toRegexRange; -}); - -// node_modules/fill-range/index.js -var require_fill_range = __commonJS((exports, module) => { - /*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ - var util = __require("util"); - var toRegexRange = require_to_regex_range(); - var isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); - var transform = (toNumber) => { - return (value) => toNumber === true ? Number(value) : String(value); - }; - var isValidValue = (value) => { - return typeof value === "number" || typeof value === "string" && value !== ""; - }; - var isNumber = (num) => Number.isInteger(+num); - var zeros = (input) => { - let value = `${input}`; - let index = -1; - if (value[0] === "-") - value = value.slice(1); - if (value === "0") - return false; - while (value[++index] === "0") - ; - return index > 0; - }; - var stringify = (start, end, options) => { - if (typeof start === "string" || typeof end === "string") { - return true; - } - return options.stringify === true; - }; - var pad = (input, maxLength, toNumber) => { - if (maxLength > 0) { - let dash = input[0] === "-" ? "-" : ""; - if (dash) - input = input.slice(1); - input = dash + input.padStart(dash ? maxLength - 1 : maxLength, "0"); - } - if (toNumber === false) { - return String(input); - } - return input; - }; - var toMaxLen = (input, maxLength) => { - let negative = input[0] === "-" ? "-" : ""; - if (negative) { - input = input.slice(1); - maxLength--; - } - while (input.length < maxLength) - input = "0" + input; - return negative ? "-" + input : input; - }; - var toSequence = (parts, options) => { - parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - let prefix = options.capture ? "" : "?:"; - let positives = ""; - let negatives = ""; - let result; - if (parts.positives.length) { - positives = parts.positives.join("|"); - } - if (parts.negatives.length) { - negatives = `-(${prefix}${parts.negatives.join("|")})`; - } - if (positives && negatives) { - result = `${positives}|${negatives}`; - } else { - result = positives || negatives; - } - if (options.wrap) { - return `(${prefix}${result})`; - } - return result; - }; - var toRange = (a, b, isNumbers, options) => { - if (isNumbers) { - return toRegexRange(a, b, { wrap: false, ...options }); - } - let start = String.fromCharCode(a); - if (a === b) - return start; - let stop = String.fromCharCode(b); - return `[${start}-${stop}]`; - }; - var toRegex = (start, end, options) => { - if (Array.isArray(start)) { - let wrap2 = options.wrap === true; - let prefix = options.capture ? "" : "?:"; - return wrap2 ? `(${prefix}${start.join("|")})` : start.join("|"); - } - return toRegexRange(start, end, options); - }; - var rangeError = (...args) => { - return new RangeError("Invalid range arguments: " + util.inspect(...args)); - }; - var invalidRange = (start, end, options) => { - if (options.strictRanges === true) - throw rangeError([start, end]); - return []; - }; - var invalidStep = (step2, options) => { - if (options.strictRanges === true) { - throw new TypeError(`Expected step "${step2}" to be a number`); - } - return []; - }; - var fillNumbers = (start, end, step2 = 1, options = {}) => { - let a = Number(start); - let b = Number(end); - if (!Number.isInteger(a) || !Number.isInteger(b)) { - if (options.strictRanges === true) - throw rangeError([start, end]); - return []; - } - if (a === 0) - a = 0; - if (b === 0) - b = 0; - let descending = a > b; - let startString = String(start); - let endString = String(end); - let stepString = String(step2); - step2 = Math.max(Math.abs(step2), 1); - let padded = zeros(startString) || zeros(endString) || zeros(stepString); - let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; - let toNumber = padded === false && stringify(start, end, options) === false; - let format3 = options.transform || transform(toNumber); - if (options.toRegex && step2 === 1) { - return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); - } - let parts = { negatives: [], positives: [] }; - let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num)); - let range = []; - let index = 0; - while (descending ? a >= b : a <= b) { - if (options.toRegex === true && step2 > 1) { - push(a); - } else { - range.push(pad(format3(a, index), maxLen, toNumber)); - } - a = descending ? a - step2 : a + step2; - index++; - } - if (options.toRegex === true) { - return step2 > 1 ? toSequence(parts, options) : toRegex(range, null, { wrap: false, ...options }); - } - return range; - }; - var fillLetters = (start, end, step2 = 1, options = {}) => { - if (!isNumber(start) && start.length > 1 || !isNumber(end) && end.length > 1) { - return invalidRange(start, end, options); - } - let format3 = options.transform || ((val) => String.fromCharCode(val)); - let a = `${start}`.charCodeAt(0); - let b = `${end}`.charCodeAt(0); - let descending = a > b; - let min = Math.min(a, b); - let max = Math.max(a, b); - if (options.toRegex && step2 === 1) { - return toRange(min, max, false, options); - } - let range = []; - let index = 0; - while (descending ? a >= b : a <= b) { - range.push(format3(a, index)); - a = descending ? a - step2 : a + step2; - index++; - } - if (options.toRegex === true) { - return toRegex(range, null, { wrap: false, options }); - } - return range; - }; - var fill = (start, end, step2, options = {}) => { - if (end == null && isValidValue(start)) { - return [start]; - } - if (!isValidValue(start) || !isValidValue(end)) { - return invalidRange(start, end, options); - } - if (typeof step2 === "function") { - return fill(start, end, 1, { transform: step2 }); - } - if (isObject(step2)) { - return fill(start, end, 0, step2); - } - let opts = { ...options }; - if (opts.capture === true) - opts.wrap = true; - step2 = step2 || opts.step || 1; - if (!isNumber(step2)) { - if (step2 != null && !isObject(step2)) - return invalidStep(step2, opts); - return fill(start, end, 1, step2); - } - if (isNumber(start) && isNumber(end)) { - return fillNumbers(start, end, step2, opts); - } - return fillLetters(start, end, Math.max(Math.abs(step2), 1), opts); - }; - module.exports = fill; -}); - -// node_modules/braces/lib/compile.js -var require_compile = __commonJS((exports, module) => { - var fill = require_fill_range(); - var utils = require_utils3(); - var compile = (ast, options = {}) => { - let walk = (node2, parent = {}) => { - let invalidBlock = utils.isInvalidBrace(parent); - let invalidNode = node2.invalid === true && options.escapeInvalid === true; - let invalid = invalidBlock === true || invalidNode === true; - let prefix = options.escapeInvalid === true ? "\\" : ""; - let output = ""; - if (node2.isOpen === true) { - return prefix + node2.value; - } - if (node2.isClose === true) { - return prefix + node2.value; - } - if (node2.type === "open") { - return invalid ? prefix + node2.value : "("; - } - if (node2.type === "close") { - return invalid ? prefix + node2.value : ")"; - } - if (node2.type === "comma") { - return node2.prev.type === "comma" ? "" : invalid ? node2.value : "|"; - } - if (node2.value) { - return node2.value; - } - if (node2.nodes && node2.ranges > 0) { - let args = utils.reduce(node2.nodes); - let range = fill(...args, { ...options, wrap: false, toRegex: true }); - if (range.length !== 0) { - return args.length > 1 && range.length > 1 ? `(${range})` : range; - } - } - if (node2.nodes) { - for (let child of node2.nodes) { - output += walk(child, node2); - } - } - return output; - }; - return walk(ast); - }; - module.exports = compile; -}); - -// node_modules/braces/lib/expand.js -var require_expand = __commonJS((exports, module) => { - var fill = require_fill_range(); - var stringify = require_stringify(); - var utils = require_utils3(); - var append = (queue = "", stash = "", enclose = false) => { - let result = []; - queue = [].concat(queue); - stash = [].concat(stash); - if (!stash.length) - return queue; - if (!queue.length) { - return enclose ? utils.flatten(stash).map((ele) => `{${ele}}`) : stash; - } - for (let item of queue) { - if (Array.isArray(item)) { - for (let value of item) { - result.push(append(value, stash, enclose)); - } - } else { - for (let ele of stash) { - if (enclose === true && typeof ele === "string") - ele = `{${ele}}`; - result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele); - } - } - } - return utils.flatten(result); - }; - var expand = (ast, options = {}) => { - let rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit; - let walk = (node2, parent = {}) => { - node2.queue = []; - let p = parent; - let q = parent.queue; - while (p.type !== "brace" && p.type !== "root" && p.parent) { - p = p.parent; - q = p.queue; - } - if (node2.invalid || node2.dollar) { - q.push(append(q.pop(), stringify(node2, options))); - return; - } - if (node2.type === "brace" && node2.invalid !== true && node2.nodes.length === 2) { - q.push(append(q.pop(), ["{}"])); - return; - } - if (node2.nodes && node2.ranges > 0) { - let args = utils.reduce(node2.nodes); - if (utils.exceedsLimit(...args, options.step, rangeLimit)) { - throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit."); - } - let range = fill(...args, options); - if (range.length === 0) { - range = stringify(node2, options); - } - q.push(append(q.pop(), range)); - node2.nodes = []; - return; - } - let enclose = utils.encloseBrace(node2); - let queue = node2.queue; - let block = node2; - while (block.type !== "brace" && block.type !== "root" && block.parent) { - block = block.parent; - queue = block.queue; - } - for (let i = 0;i < node2.nodes.length; i++) { - let child = node2.nodes[i]; - if (child.type === "comma" && node2.type === "brace") { - if (i === 1) - queue.push(""); - queue.push(""); - continue; - } - if (child.type === "close") { - q.push(append(q.pop(), queue, enclose)); - continue; - } - if (child.value && child.type !== "open") { - queue.push(append(queue.pop(), child.value)); - continue; - } - if (child.nodes) { - walk(child, node2); - } - } - return queue; - }; - return utils.flatten(walk(ast)); - }; - module.exports = expand; -}); - -// node_modules/braces/lib/constants.js -var require_constants = __commonJS((exports, module) => { - module.exports = { - MAX_LENGTH: 1024 * 64, - CHAR_0: "0", - CHAR_9: "9", - CHAR_UPPERCASE_A: "A", - CHAR_LOWERCASE_A: "a", - CHAR_UPPERCASE_Z: "Z", - CHAR_LOWERCASE_Z: "z", - CHAR_LEFT_PARENTHESES: "(", - CHAR_RIGHT_PARENTHESES: ")", - CHAR_ASTERISK: "*", - CHAR_AMPERSAND: "&", - CHAR_AT: "@", - CHAR_BACKSLASH: "\\", - CHAR_BACKTICK: "`", - CHAR_CARRIAGE_RETURN: "\r", - CHAR_CIRCUMFLEX_ACCENT: "^", - CHAR_COLON: ":", - CHAR_COMMA: ",", - CHAR_DOLLAR: "$", - CHAR_DOT: ".", - CHAR_DOUBLE_QUOTE: '"', - CHAR_EQUAL: "=", - CHAR_EXCLAMATION_MARK: "!", - CHAR_FORM_FEED: "\f", - CHAR_FORWARD_SLASH: "/", - CHAR_HASH: "#", - CHAR_HYPHEN_MINUS: "-", - CHAR_LEFT_ANGLE_BRACKET: "<", - CHAR_LEFT_CURLY_BRACE: "{", - CHAR_LEFT_SQUARE_BRACKET: "[", - CHAR_LINE_FEED: "\n", - CHAR_NO_BREAK_SPACE: "\xA0", - CHAR_PERCENT: "%", - CHAR_PLUS: "+", - CHAR_QUESTION_MARK: "?", - CHAR_RIGHT_ANGLE_BRACKET: ">", - CHAR_RIGHT_CURLY_BRACE: "}", - CHAR_RIGHT_SQUARE_BRACKET: "]", - CHAR_SEMICOLON: ";", - CHAR_SINGLE_QUOTE: "\'", - CHAR_SPACE: " ", - CHAR_TAB: "\t", - CHAR_UNDERSCORE: "_", - CHAR_VERTICAL_LINE: "|", - CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF" - }; -}); - -// node_modules/braces/lib/parse.js -var require_parse = __commonJS((exports, module) => { - var stringify = require_stringify(); - var { - MAX_LENGTH, - CHAR_BACKSLASH, - CHAR_BACKTICK, - CHAR_COMMA, - CHAR_DOT, - CHAR_LEFT_PARENTHESES, - CHAR_RIGHT_PARENTHESES, - CHAR_LEFT_CURLY_BRACE, - CHAR_RIGHT_CURLY_BRACE, - CHAR_LEFT_SQUARE_BRACKET, - CHAR_RIGHT_SQUARE_BRACKET, - CHAR_DOUBLE_QUOTE, - CHAR_SINGLE_QUOTE, - CHAR_NO_BREAK_SPACE, - CHAR_ZERO_WIDTH_NOBREAK_SPACE - } = require_constants(); - var parse = (input, options = {}) => { - if (typeof input !== "string") { - throw new TypeError("Expected a string"); - } - let opts = options || {}; - let max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - if (input.length > max) { - throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); - } - let ast = { type: "root", input, nodes: [] }; - let stack = [ast]; - let block = ast; - let prev = ast; - let brackets = 0; - let length = input.length; - let index = 0; - let depth = 0; - let value; - let memo = {}; - const advance = () => input[index++]; - const push = (node2) => { - if (node2.type === "text" && prev.type === "dot") { - prev.type = "text"; - } - if (prev && prev.type === "text" && node2.type === "text") { - prev.value += node2.value; - return; - } - block.nodes.push(node2); - node2.parent = block; - node2.prev = prev; - prev = node2; - return node2; - }; - push({ type: "bos" }); - while (index < length) { - block = stack[stack.length - 1]; - value = advance(); - if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { - continue; - } - if (value === CHAR_BACKSLASH) { - push({ type: "text", value: (options.keepEscaping ? value : "") + advance() }); - continue; - } - if (value === CHAR_RIGHT_SQUARE_BRACKET) { - push({ type: "text", value: "\\" + value }); - continue; - } - if (value === CHAR_LEFT_SQUARE_BRACKET) { - brackets++; - let closed = true; - let next; - while (index < length && (next = advance())) { - value += next; - if (next === CHAR_LEFT_SQUARE_BRACKET) { - brackets++; - continue; - } - if (next === CHAR_BACKSLASH) { - value += advance(); - continue; - } - if (next === CHAR_RIGHT_SQUARE_BRACKET) { - brackets--; - if (brackets === 0) { - break; - } - } - } - push({ type: "text", value }); - continue; - } - if (value === CHAR_LEFT_PARENTHESES) { - block = push({ type: "paren", nodes: [] }); - stack.push(block); - push({ type: "text", value }); - continue; - } - if (value === CHAR_RIGHT_PARENTHESES) { - if (block.type !== "paren") { - push({ type: "text", value }); - continue; - } - block = stack.pop(); - push({ type: "text", value }); - block = stack[stack.length - 1]; - continue; - } - if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { - let open = value; - let next; - if (options.keepQuotes !== true) { - value = ""; - } - while (index < length && (next = advance())) { - if (next === CHAR_BACKSLASH) { - value += next + advance(); - continue; - } - if (next === open) { - if (options.keepQuotes === true) - value += next; - break; - } - value += next; - } - push({ type: "text", value }); - continue; - } - if (value === CHAR_LEFT_CURLY_BRACE) { - depth++; - let dollar = prev.value && prev.value.slice(-1) === "$" || block.dollar === true; - let brace = { - type: "brace", - open: true, - close: false, - dollar, - depth, - commas: 0, - ranges: 0, - nodes: [] - }; - block = push(brace); - stack.push(block); - push({ type: "open", value }); - continue; - } - if (value === CHAR_RIGHT_CURLY_BRACE) { - if (block.type !== "brace") { - push({ type: "text", value }); - continue; - } - let type = "close"; - block = stack.pop(); - block.close = true; - push({ type, value }); - depth--; - block = stack[stack.length - 1]; - continue; - } - if (value === CHAR_COMMA && depth > 0) { - if (block.ranges > 0) { - block.ranges = 0; - let open = block.nodes.shift(); - block.nodes = [open, { type: "text", value: stringify(block) }]; - } - push({ type: "comma", value }); - block.commas++; - continue; - } - if (value === CHAR_DOT && depth > 0 && block.commas === 0) { - let siblings = block.nodes; - if (depth === 0 || siblings.length === 0) { - push({ type: "text", value }); - continue; - } - if (prev.type === "dot") { - block.range = []; - prev.value += value; - prev.type = "range"; - if (block.nodes.length !== 3 && block.nodes.length !== 5) { - block.invalid = true; - block.ranges = 0; - prev.type = "text"; - continue; - } - block.ranges++; - block.args = []; - continue; - } - if (prev.type === "range") { - siblings.pop(); - let before = siblings[siblings.length - 1]; - before.value += prev.value + value; - prev = before; - block.ranges--; - continue; - } - push({ type: "dot", value }); - continue; - } - push({ type: "text", value }); - } - do { - block = stack.pop(); - if (block.type !== "root") { - block.nodes.forEach((node2) => { - if (!node2.nodes) { - if (node2.type === "open") - node2.isOpen = true; - if (node2.type === "close") - node2.isClose = true; - if (!node2.nodes) - node2.type = "text"; - node2.invalid = true; - } - }); - let parent = stack[stack.length - 1]; - let index2 = parent.nodes.indexOf(block); - parent.nodes.splice(index2, 1, ...block.nodes); - } - } while (stack.length > 0); - push({ type: "eos" }); - return ast; - }; - module.exports = parse; -}); - -// node_modules/braces/index.js -var require_braces = __commonJS((exports, module) => { - var stringify = require_stringify(); - var compile = require_compile(); - var expand = require_expand(); - var parse = require_parse(); - var braces = (input, options = {}) => { - let output = []; - if (Array.isArray(input)) { - for (let pattern of input) { - let result = braces.create(pattern, options); - if (Array.isArray(result)) { - output.push(...result); - } else { - output.push(result); - } - } - } else { - output = [].concat(braces.create(input, options)); - } - if (options && options.expand === true && options.nodupes === true) { - output = [...new Set(output)]; - } - return output; - }; - braces.parse = (input, options = {}) => parse(input, options); - braces.stringify = (input, options = {}) => { - if (typeof input === "string") { - return stringify(braces.parse(input, options), options); - } - return stringify(input, options); - }; - braces.compile = (input, options = {}) => { - if (typeof input === "string") { - input = braces.parse(input, options); - } - return compile(input, options); - }; - braces.expand = (input, options = {}) => { - if (typeof input === "string") { - input = braces.parse(input, options); - } - let result = expand(input, options); - if (options.noempty === true) { - result = result.filter(Boolean); - } - if (options.nodupes === true) { - result = [...new Set(result)]; - } - return result; - }; - braces.create = (input, options = {}) => { - if (input === "" || input.length < 3) { - return [input]; - } - return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); - }; - module.exports = braces; -}); - -// node_modules/picomatch/lib/constants.js -var require_constants2 = __commonJS((exports, module) => { - var path = __require("path"); - var WIN_SLASH = "\\\\/"; - var WIN_NO_SLASH = `[^${WIN_SLASH}]`; - var DOT_LITERAL = "\\."; - var PLUS_LITERAL = "\\+"; - var QMARK_LITERAL = "\\?"; - var SLASH_LITERAL = "\\/"; - var ONE_CHAR = "(?=.)"; - var QMARK = "[^/]"; - var END_ANCHOR = `(?:${SLASH_LITERAL}|\$)`; - var START_ANCHOR = `(?:^|${SLASH_LITERAL})`; - var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; - var NO_DOT = `(?!${DOT_LITERAL})`; - var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; - var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; - var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; - var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; - var STAR = `${QMARK}*?`; - var POSIX_CHARS = { - DOT_LITERAL, - PLUS_LITERAL, - QMARK_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - QMARK, - END_ANCHOR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK_NO_DOT, - STAR, - START_ANCHOR - }; - var WINDOWS_CHARS = { - ...POSIX_CHARS, - SLASH_LITERAL: `[${WIN_SLASH}]`, - QMARK: WIN_NO_SLASH, - STAR: `${WIN_NO_SLASH}*?`, - DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$)`, - NO_DOT: `(?!${DOT_LITERAL})`, - NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, - NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|\$))`, - NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|\$))`, - QMARK_NO_DOT: `[^.${WIN_SLASH}]`, - START_ANCHOR: `(?:^|[${WIN_SLASH}])`, - END_ANCHOR: `(?:[${WIN_SLASH}]|\$)` - }; - var POSIX_REGEX_SOURCE = { - alnum: "a-zA-Z0-9", - alpha: "a-zA-Z", - ascii: "\\x00-\\x7F", - blank: " \\t", - cntrl: "\\x00-\\x1F\\x7F", - digit: "0-9", - graph: "\\x21-\\x7E", - lower: "a-z", - print: "\\x20-\\x7E ", - punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', - space: " \\t\\r\\n\\v\\f", - upper: "A-Z", - word: "A-Za-z0-9_", - xdigit: "A-Fa-f0-9" - }; - module.exports = { - MAX_LENGTH: 1024 * 64, - POSIX_REGEX_SOURCE, - REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, - REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, - REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, - REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, - REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, - REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, - REPLACEMENTS: { - "***": "*", - "**/**": "**", - "**/**/**": "**" - }, - CHAR_0: 48, - CHAR_9: 57, - CHAR_UPPERCASE_A: 65, - CHAR_LOWERCASE_A: 97, - CHAR_UPPERCASE_Z: 90, - CHAR_LOWERCASE_Z: 122, - CHAR_LEFT_PARENTHESES: 40, - CHAR_RIGHT_PARENTHESES: 41, - CHAR_ASTERISK: 42, - CHAR_AMPERSAND: 38, - CHAR_AT: 64, - CHAR_BACKWARD_SLASH: 92, - CHAR_CARRIAGE_RETURN: 13, - CHAR_CIRCUMFLEX_ACCENT: 94, - CHAR_COLON: 58, - CHAR_COMMA: 44, - CHAR_DOT: 46, - CHAR_DOUBLE_QUOTE: 34, - CHAR_EQUAL: 61, - CHAR_EXCLAMATION_MARK: 33, - CHAR_FORM_FEED: 12, - CHAR_FORWARD_SLASH: 47, - CHAR_GRAVE_ACCENT: 96, - CHAR_HASH: 35, - CHAR_HYPHEN_MINUS: 45, - CHAR_LEFT_ANGLE_BRACKET: 60, - CHAR_LEFT_CURLY_BRACE: 123, - CHAR_LEFT_SQUARE_BRACKET: 91, - CHAR_LINE_FEED: 10, - CHAR_NO_BREAK_SPACE: 160, - CHAR_PERCENT: 37, - CHAR_PLUS: 43, - CHAR_QUESTION_MARK: 63, - CHAR_RIGHT_ANGLE_BRACKET: 62, - CHAR_RIGHT_CURLY_BRACE: 125, - CHAR_RIGHT_SQUARE_BRACKET: 93, - CHAR_SEMICOLON: 59, - CHAR_SINGLE_QUOTE: 39, - CHAR_SPACE: 32, - CHAR_TAB: 9, - CHAR_UNDERSCORE: 95, - CHAR_VERTICAL_LINE: 124, - CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, - SEP: path.sep, - extglobChars(chars) { - return { - "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` }, - "?": { type: "qmark", open: "(?:", close: ")?" }, - "+": { type: "plus", open: "(?:", close: ")+" }, - "*": { type: "star", open: "(?:", close: ")*" }, - "@": { type: "at", open: "(?:", close: ")" } - }; - }, - globChars(win32) { - return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; - } - }; -}); - -// node_modules/picomatch/lib/utils.js -var require_utils4 = __commonJS((exports) => { - var path = __require("path"); - var win32 = process.platform === "win32"; - var { - REGEX_BACKSLASH, - REGEX_REMOVE_BACKSLASH, - REGEX_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_GLOBAL - } = require_constants2(); - exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); - exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str); - exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str); - exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1"); - exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/"); - exports.removeBackslashes = (str) => { - return str.replace(REGEX_REMOVE_BACKSLASH, (match) => { - return match === "\\" ? "" : match; - }); - }; - exports.supportsLookbehinds = () => { - const segs = process.version.slice(1).split(".").map(Number); - if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) { - return true; - } - return false; - }; - exports.isWindows = (options) => { - if (options && typeof options.windows === "boolean") { - return options.windows; - } - return win32 === true || path.sep === "\\"; - }; - exports.escapeLast = (input, char, lastIdx) => { - const idx = input.lastIndexOf(char, lastIdx); - if (idx === -1) - return input; - if (input[idx - 1] === "\\") - return exports.escapeLast(input, char, idx - 1); - return `${input.slice(0, idx)}\\${input.slice(idx)}`; - }; - exports.removePrefix = (input, state = {}) => { - let output = input; - if (output.startsWith("./")) { - output = output.slice(2); - state.prefix = "./"; - } - return output; - }; - exports.wrapOutput = (input, state = {}, options = {}) => { - const prepend = options.contains ? "" : "^"; - const append = options.contains ? "" : "$"; - let output = `${prepend}(?:${input})${append}`; - if (state.negated === true) { - output = `(?:^(?!${output}).*\$)`; - } - return output; - }; -}); - -// node_modules/picomatch/lib/scan.js -var require_scan = __commonJS((exports, module) => { - var utils = require_utils4(); - var { - CHAR_ASTERISK, - CHAR_AT, - CHAR_BACKWARD_SLASH, - CHAR_COMMA, - CHAR_DOT, - CHAR_EXCLAMATION_MARK, - CHAR_FORWARD_SLASH, - CHAR_LEFT_CURLY_BRACE, - CHAR_LEFT_PARENTHESES, - CHAR_LEFT_SQUARE_BRACKET, - CHAR_PLUS, - CHAR_QUESTION_MARK, - CHAR_RIGHT_CURLY_BRACE, - CHAR_RIGHT_PARENTHESES, - CHAR_RIGHT_SQUARE_BRACKET - } = require_constants2(); - var isPathSeparator = (code) => { - return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; - }; - var depth = (token) => { - if (token.isPrefix !== true) { - token.depth = token.isGlobstar ? Infinity : 1; - } - }; - var scan = (input, options) => { - const opts = options || {}; - const length = input.length - 1; - const scanToEnd = opts.parts === true || opts.scanToEnd === true; - const slashes = []; - const tokens = []; - const parts = []; - let str = input; - let index = -1; - let start = 0; - let lastIndex = 0; - let isBrace = false; - let isBracket = false; - let isGlob = false; - let isExtglob = false; - let isGlobstar = false; - let braceEscaped = false; - let backslashes = false; - let negated = false; - let negatedExtglob = false; - let finished = false; - let braces = 0; - let prev; - let code; - let token = { value: "", depth: 0, isGlob: false }; - const eos = () => index >= length; - const peek = () => str.charCodeAt(index + 1); - const advance = () => { - prev = code; - return str.charCodeAt(++index); - }; - while (index < length) { - code = advance(); - let next; - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - if (code === CHAR_LEFT_CURLY_BRACE) { - braceEscaped = true; - } - continue; - } - if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { - braces++; - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } - if (code === CHAR_LEFT_CURLY_BRACE) { - braces++; - continue; - } - if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (braceEscaped !== true && code === CHAR_COMMA) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_RIGHT_CURLY_BRACE) { - braces--; - if (braces === 0) { - braceEscaped = false; - isBrace = token.isBrace = true; - finished = true; - break; - } - } - } - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_FORWARD_SLASH) { - slashes.push(index); - tokens.push(token); - token = { value: "", depth: 0, isGlob: false }; - if (finished === true) - continue; - if (prev === CHAR_DOT && index === start + 1) { - start += 2; - continue; - } - lastIndex = index + 1; - continue; - } - if (opts.noext !== true) { - const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK; - if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; - isExtglob = token.isExtglob = true; - finished = true; - if (code === CHAR_EXCLAMATION_MARK && index === start) { - negatedExtglob = true; - } - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } - if (code === CHAR_RIGHT_PARENTHESES) { - isGlob = token.isGlob = true; - finished = true; - break; - } - } - continue; - } - break; - } - } - if (code === CHAR_ASTERISK) { - if (prev === CHAR_ASTERISK) - isGlobstar = token.isGlobstar = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_QUESTION_MARK) { - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_LEFT_SQUARE_BRACKET) { - while (eos() !== true && (next = advance())) { - if (next === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } - if (next === CHAR_RIGHT_SQUARE_BRACKET) { - isBracket = token.isBracket = true; - isGlob = token.isGlob = true; - finished = true; - break; - } - } - if (scanToEnd === true) { - continue; - } - break; - } - if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { - negated = token.negated = true; - start++; - continue; - } - if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_LEFT_PARENTHESES) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } - if (code === CHAR_RIGHT_PARENTHESES) { - finished = true; - break; - } - } - continue; - } - break; - } - if (isGlob === true) { - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - } - if (opts.noext === true) { - isExtglob = false; - isGlob = false; - } - let base = str; - let prefix = ""; - let glob = ""; - if (start > 0) { - prefix = str.slice(0, start); - str = str.slice(start); - lastIndex -= start; - } - if (base && isGlob === true && lastIndex > 0) { - base = str.slice(0, lastIndex); - glob = str.slice(lastIndex); - } else if (isGlob === true) { - base = ""; - glob = str; - } else { - base = str; - } - if (base && base !== "" && base !== "/" && base !== str) { - if (isPathSeparator(base.charCodeAt(base.length - 1))) { - base = base.slice(0, -1); - } - } - if (opts.unescape === true) { - if (glob) - glob = utils.removeBackslashes(glob); - if (base && backslashes === true) { - base = utils.removeBackslashes(base); - } - } - const state = { - prefix, - input, - start, - base, - glob, - isBrace, - isBracket, - isGlob, - isExtglob, - isGlobstar, - negated, - negatedExtglob - }; - if (opts.tokens === true) { - state.maxDepth = 0; - if (!isPathSeparator(code)) { - tokens.push(token); - } - state.tokens = tokens; - } - if (opts.parts === true || opts.tokens === true) { - let prevIndex; - for (let idx = 0;idx < slashes.length; idx++) { - const n = prevIndex ? prevIndex + 1 : start; - const i = slashes[idx]; - const value = input.slice(n, i); - if (opts.tokens) { - if (idx === 0 && start !== 0) { - tokens[idx].isPrefix = true; - tokens[idx].value = prefix; - } else { - tokens[idx].value = value; - } - depth(tokens[idx]); - state.maxDepth += tokens[idx].depth; - } - if (idx !== 0 || value !== "") { - parts.push(value); - } - prevIndex = i; - } - if (prevIndex && prevIndex + 1 < input.length) { - const value = input.slice(prevIndex + 1); - parts.push(value); - if (opts.tokens) { - tokens[tokens.length - 1].value = value; - depth(tokens[tokens.length - 1]); - state.maxDepth += tokens[tokens.length - 1].depth; - } - } - state.slashes = slashes; - state.parts = parts; - } - return state; - }; - module.exports = scan; -}); - -// node_modules/picomatch/lib/parse.js -var require_parse2 = __commonJS((exports, module) => { - var constants = require_constants2(); - var utils = require_utils4(); - var { - MAX_LENGTH, - POSIX_REGEX_SOURCE, - REGEX_NON_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_BACKREF, - REPLACEMENTS - } = constants; - var expandRange = (args, options) => { - if (typeof options.expandRange === "function") { - return options.expandRange(...args, options); - } - args.sort(); - const value = `[${args.join("-")}]`; - try { - new RegExp(value); - } catch (ex) { - return args.map((v) => utils.escapeRegex(v)).join(".."); - } - return value; - }; - var syntaxError = (type, char) => { - return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; - }; - var parse = (input, options) => { - if (typeof input !== "string") { - throw new TypeError("Expected a string"); - } - input = REPLACEMENTS[input] || input; - const opts = { ...options }; - const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - let len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } - const bos = { type: "bos", value: "", output: opts.prepend || "" }; - const tokens = [bos]; - const capture = opts.capture ? "" : "?:"; - const win32 = utils.isWindows(options); - const PLATFORM_CHARS = constants.globChars(win32); - const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); - const { - DOT_LITERAL, - PLUS_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK, - QMARK_NO_DOT, - STAR, - START_ANCHOR - } = PLATFORM_CHARS; - const globstar = (opts2) => { - return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; - const nodot = opts.dot ? "" : NO_DOT; - const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; - let star = opts.bash === true ? globstar(opts) : STAR; - if (opts.capture) { - star = `(${star})`; - } - if (typeof opts.noext === "boolean") { - opts.noextglob = opts.noext; - } - const state = { - input, - index: -1, - start: 0, - dot: opts.dot === true, - consumed: "", - output: "", - prefix: "", - backtrack: false, - negated: false, - brackets: 0, - braces: 0, - parens: 0, - quotes: 0, - globstar: false, - tokens - }; - input = utils.removePrefix(input, state); - len = input.length; - const extglobs = []; - const braces = []; - const stack = []; - let prev = bos; - let value; - const eos = () => state.index === len - 1; - const peek = state.peek = (n = 1) => input[state.index + n]; - const advance = state.advance = () => input[++state.index] || ""; - const remaining = () => input.slice(state.index + 1); - const consume = (value2 = "", num = 0) => { - state.consumed += value2; - state.index += num; - }; - const append = (token) => { - state.output += token.output != null ? token.output : token.value; - consume(token.value); - }; - const negate = () => { - let count = 1; - while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) { - advance(); - state.start++; - count++; - } - if (count % 2 === 0) { - return false; - } - state.negated = true; - state.start++; - return true; - }; - const increment2 = (type) => { - state[type]++; - stack.push(type); - }; - const decrement = (type) => { - state[type]--; - stack.pop(); - }; - const push = (tok) => { - if (prev.type === "globstar") { - const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace"); - const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren"); - if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) { - state.output = state.output.slice(0, -prev.output.length); - prev.type = "star"; - prev.value = "*"; - prev.output = star; - state.output += prev.output; - } - } - if (extglobs.length && tok.type !== "paren") { - extglobs[extglobs.length - 1].inner += tok.value; - } - if (tok.value || tok.output) - append(tok); - if (prev && prev.type === "text" && tok.type === "text") { - prev.value += tok.value; - prev.output = (prev.output || "") + tok.value; - return; - } - tok.prev = prev; - tokens.push(tok); - prev = tok; - }; - const extglobOpen = (type, value2) => { - const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" }; - token.prev = prev; - token.parens = state.parens; - token.output = state.output; - const output = (opts.capture ? "(" : "") + token.open; - increment2("parens"); - push({ type, value: value2, output: state.output ? "" : ONE_CHAR }); - push({ type: "paren", extglob: true, value: advance(), output }); - extglobs.push(token); - }; - const extglobClose = (token) => { - let output = token.close + (opts.capture ? ")" : ""); - let rest; - if (token.type === "negate") { - let extglobStar = star; - if (token.inner && token.inner.length > 1 && token.inner.includes("/")) { - extglobStar = globstar(opts); - } - if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { - output = token.close = `)\$))${extglobStar}`; - } - if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { - const expression = parse(rest, { ...options, fastpaths: false }).output; - output = token.close = `)${expression})${extglobStar})`; - } - if (token.prev.type === "bos") { - state.negatedExtglob = true; - } - } - push({ type: "paren", extglob: true, value, output }); - decrement("parens"); - }; - if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { - let backslashes = false; - let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { - if (first === "\\") { - backslashes = true; - return m; - } - if (first === "?") { - if (esc) { - return esc + first + (rest ? QMARK.repeat(rest.length) : ""); - } - if (index === 0) { - return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ""); - } - return QMARK.repeat(chars.length); - } - if (first === ".") { - return DOT_LITERAL.repeat(chars.length); - } - if (first === "*") { - if (esc) { - return esc + first + (rest ? star : ""); - } - return star; - } - return esc ? m : `\\${m}`; - }); - if (backslashes === true) { - if (opts.unescape === true) { - output = output.replace(/\\/g, ""); - } else { - output = output.replace(/\\+/g, (m) => { - return m.length % 2 === 0 ? "\\\\" : m ? "\\" : ""; - }); - } - } - if (output === input && opts.contains === true) { - state.output = input; - return state; - } - state.output = utils.wrapOutput(output, state, options); - return state; - } - while (!eos()) { - value = advance(); - if (value === "\0") { - continue; - } - if (value === "\\") { - const next = peek(); - if (next === "/" && opts.bash !== true) { - continue; - } - if (next === "." || next === ";") { - continue; - } - if (!next) { - value += "\\"; - push({ type: "text", value }); - continue; - } - const match = /^\\+/.exec(remaining()); - let slashes = 0; - if (match && match[0].length > 2) { - slashes = match[0].length; - state.index += slashes; - if (slashes % 2 !== 0) { - value += "\\"; - } - } - if (opts.unescape === true) { - value = advance(); - } else { - value += advance(); - } - if (state.brackets === 0) { - push({ type: "text", value }); - continue; - } - } - if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) { - if (opts.posix !== false && value === ":") { - const inner = prev.value.slice(1); - if (inner.includes("[")) { - prev.posix = true; - if (inner.includes(":")) { - const idx = prev.value.lastIndexOf("["); - const pre = prev.value.slice(0, idx); - const rest2 = prev.value.slice(idx + 2); - const posix = POSIX_REGEX_SOURCE[rest2]; - if (posix) { - prev.value = pre + posix; - state.backtrack = true; - advance(); - if (!bos.output && tokens.indexOf(prev) === 1) { - bos.output = ONE_CHAR; - } - continue; - } - } - } - } - if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") { - value = `\\${value}`; - } - if (value === "]" && (prev.value === "[" || prev.value === "[^")) { - value = `\\${value}`; - } - if (opts.posix === true && value === "!" && prev.value === "[") { - value = "^"; - } - prev.value += value; - append({ value }); - continue; - } - if (state.quotes === 1 && value !== '"') { - value = utils.escapeRegex(value); - prev.value += value; - append({ value }); - continue; - } - if (value === '"') { - state.quotes = state.quotes === 1 ? 0 : 1; - if (opts.keepQuotes === true) { - push({ type: "text", value }); - } - continue; - } - if (value === "(") { - increment2("parens"); - push({ type: "paren", value }); - continue; - } - if (value === ")") { - if (state.parens === 0 && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError("opening", "(")); - } - const extglob = extglobs[extglobs.length - 1]; - if (extglob && state.parens === extglob.parens + 1) { - extglobClose(extglobs.pop()); - continue; - } - push({ type: "paren", value, output: state.parens ? ")" : "\\)" }); - decrement("parens"); - continue; - } - if (value === "[") { - if (opts.nobracket === true || !remaining().includes("]")) { - if (opts.nobracket !== true && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError("closing", "]")); - } - value = `\\${value}`; - } else { - increment2("brackets"); - } - push({ type: "bracket", value }); - continue; - } - if (value === "]") { - if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) { - push({ type: "text", value, output: `\\${value}` }); - continue; - } - if (state.brackets === 0) { - if (opts.strictBrackets === true) { - throw new SyntaxError(syntaxError("opening", "[")); - } - push({ type: "text", value, output: `\\${value}` }); - continue; - } - decrement("brackets"); - const prevValue = prev.value.slice(1); - if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) { - value = `/${value}`; - } - prev.value += value; - append({ value }); - if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { - continue; - } - const escaped = utils.escapeRegex(prev.value); - state.output = state.output.slice(0, -prev.value.length); - if (opts.literalBrackets === true) { - state.output += escaped; - prev.value = escaped; - continue; - } - prev.value = `(${capture}${escaped}|${prev.value})`; - state.output += prev.value; - continue; - } - if (value === "{" && opts.nobrace !== true) { - increment2("braces"); - const open = { - type: "brace", - value, - output: "(", - outputIndex: state.output.length, - tokensIndex: state.tokens.length - }; - braces.push(open); - push(open); - continue; - } - if (value === "}") { - const brace = braces[braces.length - 1]; - if (opts.nobrace === true || !brace) { - push({ type: "text", value, output: value }); - continue; - } - let output = ")"; - if (brace.dots === true) { - const arr = tokens.slice(); - const range = []; - for (let i = arr.length - 1;i >= 0; i--) { - tokens.pop(); - if (arr[i].type === "brace") { - break; - } - if (arr[i].type !== "dots") { - range.unshift(arr[i].value); - } - } - output = expandRange(range, opts); - state.backtrack = true; - } - if (brace.comma !== true && brace.dots !== true) { - const out = state.output.slice(0, brace.outputIndex); - const toks = state.tokens.slice(brace.tokensIndex); - brace.value = brace.output = "\\{"; - value = output = "\\}"; - state.output = out; - for (const t of toks) { - state.output += t.output || t.value; - } - } - push({ type: "brace", value, output }); - decrement("braces"); - braces.pop(); - continue; - } - if (value === "|") { - if (extglobs.length > 0) { - extglobs[extglobs.length - 1].conditions++; - } - push({ type: "text", value }); - continue; - } - if (value === ",") { - let output = value; - const brace = braces[braces.length - 1]; - if (brace && stack[stack.length - 1] === "braces") { - brace.comma = true; - output = "|"; - } - push({ type: "comma", value, output }); - continue; - } - if (value === "/") { - if (prev.type === "dot" && state.index === state.start + 1) { - state.start = state.index + 1; - state.consumed = ""; - state.output = ""; - tokens.pop(); - prev = bos; - continue; - } - push({ type: "slash", value, output: SLASH_LITERAL }); - continue; - } - if (value === ".") { - if (state.braces > 0 && prev.type === "dot") { - if (prev.value === ".") - prev.output = DOT_LITERAL; - const brace = braces[braces.length - 1]; - prev.type = "dots"; - prev.output += value; - prev.value += value; - brace.dots = true; - continue; - } - if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") { - push({ type: "text", value, output: DOT_LITERAL }); - continue; - } - push({ type: "dot", value, output: DOT_LITERAL }); - continue; - } - if (value === "?") { - const isGroup = prev && prev.value === "("; - if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { - extglobOpen("qmark", value); - continue; - } - if (prev && prev.type === "paren") { - const next = peek(); - let output = value; - if (next === "<" && !utils.supportsLookbehinds()) { - throw new Error("Node.js v10 or higher is required for regex lookbehinds"); - } - if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) { - output = `\\${value}`; - } - push({ type: "text", value, output }); - continue; - } - if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) { - push({ type: "qmark", value, output: QMARK_NO_DOT }); - continue; - } - push({ type: "qmark", value, output: QMARK }); - continue; - } - if (value === "!") { - if (opts.noextglob !== true && peek() === "(") { - if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) { - extglobOpen("negate", value); - continue; - } - } - if (opts.nonegate !== true && state.index === 0) { - negate(); - continue; - } - } - if (value === "+") { - if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { - extglobOpen("plus", value); - continue; - } - if (prev && prev.value === "(" || opts.regex === false) { - push({ type: "plus", value, output: PLUS_LITERAL }); - continue; - } - if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) { - push({ type: "plus", value }); - continue; - } - push({ type: "plus", value: PLUS_LITERAL }); - continue; - } - if (value === "@") { - if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { - push({ type: "at", extglob: true, value, output: "" }); - continue; - } - push({ type: "text", value }); - continue; - } - if (value !== "*") { - if (value === "$" || value === "^") { - value = `\\${value}`; - } - const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); - if (match) { - value += match[0]; - state.index += match[0].length; - } - push({ type: "text", value }); - continue; - } - if (prev && (prev.type === "globstar" || prev.star === true)) { - prev.type = "star"; - prev.star = true; - prev.value += value; - prev.output = star; - state.backtrack = true; - state.globstar = true; - consume(value); - continue; - } - let rest = remaining(); - if (opts.noextglob !== true && /^\([^?]/.test(rest)) { - extglobOpen("star", value); - continue; - } - if (prev.type === "star") { - if (opts.noglobstar === true) { - consume(value); - continue; - } - const prior = prev.prev; - const before = prior.prev; - const isStart = prior.type === "slash" || prior.type === "bos"; - const afterStar = before && (before.type === "star" || before.type === "globstar"); - if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) { - push({ type: "star", value, output: "" }); - continue; - } - const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace"); - const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren"); - if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) { - push({ type: "star", value, output: "" }); - continue; - } - while (rest.slice(0, 3) === "/**") { - const after = input[state.index + 4]; - if (after && after !== "/") { - break; - } - rest = rest.slice(3); - consume("/**", 3); - } - if (prior.type === "bos" && eos()) { - prev.type = "globstar"; - prev.value += value; - prev.output = globstar(opts); - state.output = prev.output; - state.globstar = true; - consume(value); - continue; - } - if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) { - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; - prev.type = "globstar"; - prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)"); - prev.value += value; - state.globstar = true; - state.output += prior.output + prev.output; - consume(value); - continue; - } - if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") { - const end = rest[1] !== undefined ? "|$" : ""; - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; - prev.type = "globstar"; - prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; - prev.value += value; - state.output += prior.output + prev.output; - state.globstar = true; - consume(value + advance()); - push({ type: "slash", value: "/", output: "" }); - continue; - } - if (prior.type === "bos" && rest[0] === "/") { - prev.type = "globstar"; - prev.value += value; - prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; - state.output = prev.output; - state.globstar = true; - consume(value + advance()); - push({ type: "slash", value: "/", output: "" }); - continue; - } - state.output = state.output.slice(0, -prev.output.length); - prev.type = "globstar"; - prev.output = globstar(opts); - prev.value += value; - state.output += prev.output; - state.globstar = true; - consume(value); - continue; - } - const token = { type: "star", value, output: star }; - if (opts.bash === true) { - token.output = ".*?"; - if (prev.type === "bos" || prev.type === "slash") { - token.output = nodot + token.output; - } - push(token); - continue; - } - if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) { - token.output = value; - push(token); - continue; - } - if (state.index === state.start || prev.type === "slash" || prev.type === "dot") { - if (prev.type === "dot") { - state.output += NO_DOT_SLASH; - prev.output += NO_DOT_SLASH; - } else if (opts.dot === true) { - state.output += NO_DOTS_SLASH; - prev.output += NO_DOTS_SLASH; - } else { - state.output += nodot; - prev.output += nodot; - } - if (peek() !== "*") { - state.output += ONE_CHAR; - prev.output += ONE_CHAR; - } - } - push(token); - } - while (state.brackets > 0) { - if (opts.strictBrackets === true) - throw new SyntaxError(syntaxError("closing", "]")); - state.output = utils.escapeLast(state.output, "["); - decrement("brackets"); - } - while (state.parens > 0) { - if (opts.strictBrackets === true) - throw new SyntaxError(syntaxError("closing", ")")); - state.output = utils.escapeLast(state.output, "("); - decrement("parens"); - } - while (state.braces > 0) { - if (opts.strictBrackets === true) - throw new SyntaxError(syntaxError("closing", "}")); - state.output = utils.escapeLast(state.output, "{"); - decrement("braces"); - } - if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) { - push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` }); - } - if (state.backtrack === true) { - state.output = ""; - for (const token of state.tokens) { - state.output += token.output != null ? token.output : token.value; - if (token.suffix) { - state.output += token.suffix; - } - } - } - return state; - }; - parse.fastpaths = (input, options) => { - const opts = { ...options }; - const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - const len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } - input = REPLACEMENTS[input] || input; - const win32 = utils.isWindows(options); - const { - DOT_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOTS_SLASH, - STAR, - START_ANCHOR - } = constants.globChars(win32); - const nodot = opts.dot ? NO_DOTS : NO_DOT; - const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; - const capture = opts.capture ? "" : "?:"; - const state = { negated: false, prefix: "" }; - let star = opts.bash === true ? ".*?" : STAR; - if (opts.capture) { - star = `(${star})`; - } - const globstar = (opts2) => { - if (opts2.noglobstar === true) - return star; - return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; - const create = (str) => { - switch (str) { - case "*": - return `${nodot}${ONE_CHAR}${star}`; - case ".*": - return `${DOT_LITERAL}${ONE_CHAR}${star}`; - case "*.*": - return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - case "*/*": - return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; - case "**": - return nodot + globstar(opts); - case "**/*": - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; - case "**/*.*": - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - case "**/.*": - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; - default: { - const match = /^(.*?)\.(\w+)$/.exec(str); - if (!match) - return; - const source2 = create(match[1]); - if (!source2) - return; - return source2 + DOT_LITERAL + match[2]; - } - } - }; - const output = utils.removePrefix(input, state); - let source = create(output); - if (source && opts.strictSlashes !== true) { - source += `${SLASH_LITERAL}?`; - } - return source; - }; - module.exports = parse; -}); - -// node_modules/picomatch/lib/picomatch.js -var require_picomatch = __commonJS((exports, module) => { - var path = __require("path"); - var scan = require_scan(); - var parse = require_parse2(); - var utils = require_utils4(); - var constants = require_constants2(); - var isObject = (val) => val && typeof val === "object" && !Array.isArray(val); - var picomatch = (glob, options, returnState = false) => { - if (Array.isArray(glob)) { - const fns = glob.map((input) => picomatch(input, options, returnState)); - const arrayMatcher = (str) => { - for (const isMatch of fns) { - const state2 = isMatch(str); - if (state2) - return state2; - } - return false; - }; - return arrayMatcher; - } - const isState = isObject(glob) && glob.tokens && glob.input; - if (glob === "" || typeof glob !== "string" && !isState) { - throw new TypeError("Expected pattern to be a non-empty string"); - } - const opts = options || {}; - const posix = utils.isWindows(options); - const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); - const state = regex.state; - delete regex.state; - let isIgnored = () => false; - if (opts.ignore) { - const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; - isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); - } - const matcher = (input, returnObject = false) => { - const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); - const result = { glob, state, regex, posix, input, output, match, isMatch }; - if (typeof opts.onResult === "function") { - opts.onResult(result); - } - if (isMatch === false) { - result.isMatch = false; - return returnObject ? result : false; - } - if (isIgnored(input)) { - if (typeof opts.onIgnore === "function") { - opts.onIgnore(result); - } - result.isMatch = false; - return returnObject ? result : false; - } - if (typeof opts.onMatch === "function") { - opts.onMatch(result); - } - return returnObject ? result : true; - }; - if (returnState) { - matcher.state = state; - } - return matcher; - }; - picomatch.test = (input, regex, options, { glob, posix } = {}) => { - if (typeof input !== "string") { - throw new TypeError("Expected input to be a string"); - } - if (input === "") { - return { isMatch: false, output: "" }; - } - const opts = options || {}; - const format3 = opts.format || (posix ? utils.toPosixSlashes : null); - let match = input === glob; - let output = match && format3 ? format3(input) : input; - if (match === false) { - output = format3 ? format3(input) : input; - match = output === glob; - } - if (match === false || opts.capture === true) { - if (opts.matchBase === true || opts.basename === true) { - match = picomatch.matchBase(input, regex, options, posix); - } else { - match = regex.exec(output); - } - } - return { isMatch: Boolean(match), match, output }; - }; - picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { - const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); - return regex.test(path.basename(input)); - }; - picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); - picomatch.parse = (pattern, options) => { - if (Array.isArray(pattern)) - return pattern.map((p) => picomatch.parse(p, options)); - return parse(pattern, { ...options, fastpaths: false }); - }; - picomatch.scan = (input, options) => scan(input, options); - picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { - if (returnOutput === true) { - return state.output; - } - const opts = options || {}; - const prepend = opts.contains ? "" : "^"; - const append = opts.contains ? "" : "$"; - let source = `${prepend}(?:${state.output})${append}`; - if (state && state.negated === true) { - source = `^(?!${source}).*\$`; - } - const regex = picomatch.toRegex(source, options); - if (returnState === true) { - regex.state = state; - } - return regex; - }; - picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { - if (!input || typeof input !== "string") { - throw new TypeError("Expected a non-empty string"); - } - let parsed = { negated: false, fastpaths: true }; - if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) { - parsed.output = parse.fastpaths(input, options); - } - if (!parsed.output) { - parsed = parse(input, options); - } - return picomatch.compileRe(parsed, options, returnOutput, returnState); - }; - picomatch.toRegex = (source, options) => { - try { - const opts = options || {}; - return new RegExp(source, opts.flags || (opts.nocase ? "i" : "")); - } catch (err) { - if (options && options.debug === true) - throw err; - return /$^/; - } - }; - picomatch.constants = constants; - module.exports = picomatch; -}); - -// node_modules/micromatch/index.js -var require_micromatch = __commonJS((exports, module) => { - var util = __require("util"); - var braces = require_braces(); - var picomatch = require_picomatch(); - var utils = require_utils4(); - var isEmptyString = (val) => val === "" || val === "./"; - var micromatch = (list, patterns, options) => { - patterns = [].concat(patterns); - list = [].concat(list); - let omit = new Set; - let keep = new Set; - let items = new Set; - let negatives = 0; - let onResult = (state) => { - items.add(state.output); - if (options && options.onResult) { - options.onResult(state); - } - }; - for (let i = 0;i < patterns.length; i++) { - let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); - let negated = isMatch.state.negated || isMatch.state.negatedExtglob; - if (negated) - negatives++; - for (let item of list) { - let matched = isMatch(item, true); - let match = negated ? !matched.isMatch : matched.isMatch; - if (!match) - continue; - if (negated) { - omit.add(matched.output); - } else { - omit.delete(matched.output); - keep.add(matched.output); - } - } - } - let result = negatives === patterns.length ? [...items] : [...keep]; - let matches = result.filter((item) => !omit.has(item)); - if (options && matches.length === 0) { - if (options.failglob === true) { - throw new Error(`No matches found for "${patterns.join(", ")}"`); - } - if (options.nonull === true || options.nullglob === true) { - return options.unescape ? patterns.map((p) => p.replace(/\\/g, "")) : patterns; - } - } - return matches; - }; - micromatch.match = micromatch; - micromatch.matcher = (pattern, options) => picomatch(pattern, options); - micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); - micromatch.any = micromatch.isMatch; - micromatch.not = (list, patterns, options = {}) => { - patterns = [].concat(patterns).map(String); - let result = new Set; - let items = []; - let onResult = (state) => { - if (options.onResult) - options.onResult(state); - items.push(state.output); - }; - let matches = new Set(micromatch(list, patterns, { ...options, onResult })); - for (let item of items) { - if (!matches.has(item)) { - result.add(item); - } - } - return [...result]; - }; - micromatch.contains = (str, pattern, options) => { - if (typeof str !== "string") { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); - } - if (Array.isArray(pattern)) { - return pattern.some((p) => micromatch.contains(str, p, options)); - } - if (typeof pattern === "string") { - if (isEmptyString(str) || isEmptyString(pattern)) { - return false; - } - if (str.includes(pattern) || str.startsWith("./") && str.slice(2).includes(pattern)) { - return true; - } - } - return micromatch.isMatch(str, pattern, { ...options, contains: true }); - }; - micromatch.matchKeys = (obj, patterns, options) => { - if (!utils.isObject(obj)) { - throw new TypeError("Expected the first argument to be an object"); - } - let keys = micromatch(Object.keys(obj), patterns, options); - let res = {}; - for (let key of keys) - res[key] = obj[key]; - return res; - }; - micromatch.some = (list, patterns, options) => { - let items = [].concat(list); - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (items.some((item) => isMatch(item))) { - return true; - } - } - return false; - }; - micromatch.every = (list, patterns, options) => { - let items = [].concat(list); - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (!items.every((item) => isMatch(item))) { - return false; - } - } - return true; - }; - micromatch.all = (str, patterns, options) => { - if (typeof str !== "string") { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); - } - return [].concat(patterns).every((p) => picomatch(p, options)(str)); - }; - micromatch.capture = (glob, input, options) => { - let posix = utils.isWindows(options); - let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); - let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); - if (match) { - return match.slice(1).map((v) => v === undefined ? "" : v); - } - }; - micromatch.makeRe = (...args) => picomatch.makeRe(...args); - micromatch.scan = (...args) => picomatch.scan(...args); - micromatch.parse = (patterns, options) => { - let res = []; - for (let pattern of [].concat(patterns || [])) { - for (let str of braces(String(pattern), options)) { - res.push(picomatch.parse(str, options)); - } - } - return res; - }; - micromatch.braces = (pattern, options) => { - if (typeof pattern !== "string") - throw new TypeError("Expected a string"); - if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { - return [pattern]; - } - return braces(pattern, options); - }; - micromatch.braceExpand = (pattern, options) => { - if (typeof pattern !== "string") - throw new TypeError("Expected a string"); - return micromatch.braces(pattern, { ...options, expand: true }); - }; - module.exports = micromatch; -}); - -// node_modules/fast-glob/out/utils/pattern.js -var require_pattern = __commonJS((exports) => { - var isStaticPattern = function(pattern, options = {}) { - return !isDynamicPattern(pattern, options); - }; - var isDynamicPattern = function(pattern, options = {}) { - if (pattern === "") { - return false; - } - if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { - return true; - } - if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { - return true; - } - return false; - }; - var hasBraceExpansion = function(pattern) { - const openingBraceIndex = pattern.indexOf("{"); - if (openingBraceIndex === -1) { - return false; - } - const closingBraceIndex = pattern.indexOf("}", openingBraceIndex + 1); - if (closingBraceIndex === -1) { - return false; - } - const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); - return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); - }; - var convertToPositivePattern = function(pattern) { - return isNegativePattern(pattern) ? pattern.slice(1) : pattern; - }; - var convertToNegativePattern = function(pattern) { - return "!" + pattern; - }; - var isNegativePattern = function(pattern) { - return pattern.startsWith("!") && pattern[1] !== "("; - }; - var isPositivePattern = function(pattern) { - return !isNegativePattern(pattern); - }; - var getNegativePatterns = function(patterns) { - return patterns.filter(isNegativePattern); - }; - var getPositivePatterns = function(patterns) { - return patterns.filter(isPositivePattern); - }; - var getPatternsInsideCurrentDirectory = function(patterns) { - return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); - }; - var getPatternsOutsideCurrentDirectory = function(patterns) { - return patterns.filter(isPatternRelatedToParentDirectory); - }; - var isPatternRelatedToParentDirectory = function(pattern) { - return pattern.startsWith("..") || pattern.startsWith("./.."); - }; - var getBaseDirectory = function(pattern) { - return globParent(pattern, { flipBackslashes: false }); - }; - var hasGlobStar = function(pattern) { - return pattern.includes(GLOBSTAR); - }; - var endsWithSlashGlobStar = function(pattern) { - return pattern.endsWith("/" + GLOBSTAR); - }; - var isAffectDepthOfReadingPattern = function(pattern) { - const basename2 = path.basename(pattern); - return endsWithSlashGlobStar(pattern) || isStaticPattern(basename2); - }; - var expandPatternsWithBraceExpansion = function(patterns) { - return patterns.reduce((collection, pattern) => { - return collection.concat(expandBraceExpansion(pattern)); - }, []); - }; - var expandBraceExpansion = function(pattern) { - const patterns = micromatch.braces(pattern, { expand: true, nodupes: true }); - patterns.sort((a, b) => a.length - b.length); - return patterns.filter((pattern2) => pattern2 !== ""); - }; - var getPatternParts = function(pattern, options) { - let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); - if (parts.length === 0) { - parts = [pattern]; - } - if (parts[0].startsWith("/")) { - parts[0] = parts[0].slice(1); - parts.unshift(""); - } - return parts; - }; - var makeRe = function(pattern, options) { - return micromatch.makeRe(pattern, options); - }; - var convertPatternsToRe = function(patterns, options) { - return patterns.map((pattern) => makeRe(pattern, options)); - }; - var matchAny = function(entry, patternsRe) { - return patternsRe.some((patternRe) => patternRe.test(entry)); - }; - var removeDuplicateSlashes = function(pattern) { - return pattern.replace(DOUBLE_SLASH_RE, "/"); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = undefined; - var path = __require("path"); - var globParent = require_glob_parent(); - var micromatch = require_micromatch(); - var GLOBSTAR = "**"; - var ESCAPE_SYMBOL = "\\"; - var COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; - var REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; - var REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; - var GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; - var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; - var DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; - exports.isStaticPattern = isStaticPattern; - exports.isDynamicPattern = isDynamicPattern; - exports.convertToPositivePattern = convertToPositivePattern; - exports.convertToNegativePattern = convertToNegativePattern; - exports.isNegativePattern = isNegativePattern; - exports.isPositivePattern = isPositivePattern; - exports.getNegativePatterns = getNegativePatterns; - exports.getPositivePatterns = getPositivePatterns; - exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; - exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; - exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; - exports.getBaseDirectory = getBaseDirectory; - exports.hasGlobStar = hasGlobStar; - exports.endsWithSlashGlobStar = endsWithSlashGlobStar; - exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; - exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; - exports.expandBraceExpansion = expandBraceExpansion; - exports.getPatternParts = getPatternParts; - exports.makeRe = makeRe; - exports.convertPatternsToRe = convertPatternsToRe; - exports.matchAny = matchAny; - exports.removeDuplicateSlashes = removeDuplicateSlashes; -}); - -// node_modules/merge2/index.js -var require_merge2 = __commonJS((exports, module) => { - var merge2 = function() { - const streamsQueue = []; - const args = slice.call(arguments); - let merging = false; - let options = args[args.length - 1]; - if (options && !Array.isArray(options) && options.pipe == null) { - args.pop(); - } else { - options = {}; - } - const doEnd = options.end !== false; - const doPipeError = options.pipeError === true; - if (options.objectMode == null) { - options.objectMode = true; - } - if (options.highWaterMark == null) { - options.highWaterMark = 64 * 1024; - } - const mergedStream = PassThrough(options); - function addStream() { - for (let i = 0, len = arguments.length;i < len; i++) { - streamsQueue.push(pauseStreams(arguments[i], options)); - } - mergeStream(); - return this; - } - function mergeStream() { - if (merging) { - return; - } - merging = true; - let streams = streamsQueue.shift(); - if (!streams) { - process.nextTick(endStream); - return; - } - if (!Array.isArray(streams)) { - streams = [streams]; - } - let pipesCount = streams.length + 1; - function next() { - if (--pipesCount > 0) { - return; - } - merging = false; - mergeStream(); - } - function pipe(stream) { - function onend() { - stream.removeListener("merge2UnpipeEnd", onend); - stream.removeListener("end", onend); - if (doPipeError) { - stream.removeListener("error", onerror); - } - next(); - } - function onerror(err) { - mergedStream.emit("error", err); - } - if (stream._readableState.endEmitted) { - return next(); - } - stream.on("merge2UnpipeEnd", onend); - stream.on("end", onend); - if (doPipeError) { - stream.on("error", onerror); - } - stream.pipe(mergedStream, { end: false }); - stream.resume(); - } - for (let i = 0;i < streams.length; i++) { - pipe(streams[i]); - } - next(); - } - function endStream() { - merging = false; - mergedStream.emit("queueDrain"); - if (doEnd) { - mergedStream.end(); - } - } - mergedStream.setMaxListeners(0); - mergedStream.add = addStream; - mergedStream.on("unpipe", function(stream) { - stream.emit("merge2UnpipeEnd"); - }); - if (args.length) { - addStream.apply(null, args); - } - return mergedStream; - }; - var pauseStreams = function(streams, options) { - if (!Array.isArray(streams)) { - if (!streams._readableState && streams.pipe) { - streams = streams.pipe(PassThrough(options)); - } - if (!streams._readableState || !streams.pause || !streams.pipe) { - throw new Error("Only readable stream can be merged."); - } - streams.pause(); - } else { - for (let i = 0, len = streams.length;i < len; i++) { - streams[i] = pauseStreams(streams[i], options); - } - } - return streams; - }; - var Stream = __require("stream"); - var PassThrough = Stream.PassThrough; - var slice = Array.prototype.slice; - module.exports = merge2; -}); - -// node_modules/fast-glob/out/utils/stream.js -var require_stream = __commonJS((exports) => { - var merge = function(streams) { - const mergedStream = merge2(streams); - streams.forEach((stream) => { - stream.once("error", (error2) => mergedStream.emit("error", error2)); - }); - mergedStream.once("close", () => propagateCloseEventToSources(streams)); - mergedStream.once("end", () => propagateCloseEventToSources(streams)); - return mergedStream; - }; - var propagateCloseEventToSources = function(streams) { - streams.forEach((stream) => stream.emit("close")); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.merge = undefined; - var merge2 = require_merge2(); - exports.merge = merge; -}); - -// node_modules/fast-glob/out/utils/string.js -var require_string = __commonJS((exports) => { - var isString = function(input) { - return typeof input === "string"; - }; - var isEmpty = function(input) { - return input === ""; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.isEmpty = exports.isString = undefined; - exports.isString = isString; - exports.isEmpty = isEmpty; -}); - -// node_modules/fast-glob/out/utils/index.js -var require_utils5 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = undefined; - var array = require_array(); - exports.array = array; - var errno = require_errno(); - exports.errno = errno; - var fs = require_fs2(); - exports.fs = fs; - var path = require_path(); - exports.path = path; - var pattern = require_pattern(); - exports.pattern = pattern; - var stream = require_stream(); - exports.stream = stream; - var string = require_string(); - exports.string = string; -}); - -// node_modules/fast-glob/out/managers/tasks.js -var require_tasks = __commonJS((exports) => { - var generate = function(input, settings) { - const patterns = processPatterns(input, settings); - const ignore = processPatterns(settings.ignore, settings); - const positivePatterns = getPositivePatterns(patterns); - const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); - const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); - const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); - const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, false); - const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, true); - return staticTasks.concat(dynamicTasks); - }; - var processPatterns = function(input, settings) { - let patterns = input; - if (settings.braceExpansion) { - patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); - } - if (settings.baseNameMatch) { - patterns = patterns.map((pattern) => pattern.includes("/") ? pattern : `**/${pattern}`); - } - return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); - }; - var convertPatternsToTasks = function(positive, negative, dynamic) { - const tasks = []; - const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); - const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); - const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); - const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); - tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); - if ("." in insideCurrentDirectoryGroup) { - tasks.push(convertPatternGroupToTask(".", patternsInsideCurrentDirectory, negative, dynamic)); - } else { - tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); - } - return tasks; - }; - var getPositivePatterns = function(patterns) { - return utils.pattern.getPositivePatterns(patterns); - }; - var getNegativePatternsAsPositive = function(patterns, ignore) { - const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); - const positive = negative.map(utils.pattern.convertToPositivePattern); - return positive; - }; - var groupPatternsByBaseDirectory = function(patterns) { - const group = {}; - return patterns.reduce((collection, pattern) => { - const base = utils.pattern.getBaseDirectory(pattern); - if (base in collection) { - collection[base].push(pattern); - } else { - collection[base] = [pattern]; - } - return collection; - }, group); - }; - var convertPatternGroupsToTasks = function(positive, negative, dynamic) { - return Object.keys(positive).map((base) => { - return convertPatternGroupToTask(base, positive[base], negative, dynamic); - }); - }; - var convertPatternGroupToTask = function(base, positive, negative, dynamic) { - return { - dynamic, - positive, - negative, - base, - patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) - }; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = undefined; - var utils = require_utils5(); - exports.generate = generate; - exports.convertPatternsToTasks = convertPatternsToTasks; - exports.getPositivePatterns = getPositivePatterns; - exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; - exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; - exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; - exports.convertPatternGroupToTask = convertPatternGroupToTask; -}); - -// node_modules/@nodelib/fs.stat/out/providers/async.js -var require_async = __commonJS((exports) => { - var read = function(path, settings, callback) { - settings.fs.lstat(path, (lstatError, lstat) => { - if (lstatError !== null) { - callFailureCallback(callback, lstatError); - return; - } - if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { - callSuccessCallback(callback, lstat); - return; - } - settings.fs.stat(path, (statError, stat) => { - if (statError !== null) { - if (settings.throwErrorOnBrokenSymbolicLink) { - callFailureCallback(callback, statError); - return; - } - callSuccessCallback(callback, lstat); - return; - } - if (settings.markSymbolicLink) { - stat.isSymbolicLink = () => true; - } - callSuccessCallback(callback, stat); - }); - }); - }; - var callFailureCallback = function(callback, error2) { - callback(error2); - }; - var callSuccessCallback = function(callback, result) { - callback(null, result); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.read = undefined; - exports.read = read; -}); - -// node_modules/@nodelib/fs.stat/out/providers/sync.js -var require_sync = __commonJS((exports) => { - var read = function(path, settings) { - const lstat = settings.fs.lstatSync(path); - if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { - return lstat; - } - try { - const stat = settings.fs.statSync(path); - if (settings.markSymbolicLink) { - stat.isSymbolicLink = () => true; - } - return stat; - } catch (error2) { - if (!settings.throwErrorOnBrokenSymbolicLink) { - return lstat; - } - throw error2; - } - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.read = undefined; - exports.read = read; -}); - -// node_modules/@nodelib/fs.stat/out/adapters/fs.js -var require_fs3 = __commonJS((exports) => { - var createFileSystemAdapter = function(fsMethods) { - if (fsMethods === undefined) { - return exports.FILE_SYSTEM_ADAPTER; - } - return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; - var fs = __require("fs"); - exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync - }; - exports.createFileSystemAdapter = createFileSystemAdapter; -}); - -// node_modules/@nodelib/fs.stat/out/settings.js -var require_settings = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fs = require_fs3(); - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); - this.fs = fs.createFileSystemAdapter(this._options.fs); - this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); - } - _getValue(option, value) { - return option !== null && option !== undefined ? option : value; - } - } - exports.default = Settings; -}); - -// node_modules/@nodelib/fs.stat/out/index.js -var require_out = __commonJS((exports) => { - var stat = function(path, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === "function") { - async.read(path, getSettings(), optionsOrSettingsOrCallback); - return; - } - async.read(path, getSettings(optionsOrSettingsOrCallback), callback); - }; - var statSync3 = function(path, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - return sync2.read(path, settings); - }; - var getSettings = function(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.statSync = exports.stat = exports.Settings = undefined; - var async = require_async(); - var sync2 = require_sync(); - var settings_1 = require_settings(); - exports.Settings = settings_1.default; - exports.stat = stat; - exports.statSync = statSync3; -}); - -// node_modules/queue-microtask/index.js -var require_queue_microtask = __commonJS((exports, module) => { - /*! queue-microtask. MIT License. Feross Aboukhadijeh */ - var promise; - module.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => { - throw err; - }, 0)); -}); - -// node_modules/run-parallel/index.js -var require_run_parallel = __commonJS((exports, module) => { - var runParallel = function(tasks, cb) { - let results, pending, keys; - let isSync = true; - if (Array.isArray(tasks)) { - results = []; - pending = tasks.length; - } else { - keys = Object.keys(tasks); - results = {}; - pending = keys.length; - } - function done(err) { - function end() { - if (cb) - cb(err, results); - cb = null; - } - if (isSync) - queueMicrotask2(end); - else - end(); - } - function each(i, err, result) { - results[i] = result; - if (--pending === 0 || err) { - done(err); - } - } - if (!pending) { - done(null); - } else if (keys) { - keys.forEach(function(key) { - tasks[key](function(err, result) { - each(key, err, result); - }); - }); - } else { - tasks.forEach(function(task, i) { - task(function(err, result) { - each(i, err, result); - }); - }); - } - isSync = false; - }; - /*! run-parallel. MIT License. Feross Aboukhadijeh */ - module.exports = runParallel; - var queueMicrotask2 = require_queue_microtask(); -}); - -// node_modules/@nodelib/fs.scandir/out/constants.js -var require_constants3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = undefined; - var NODE_PROCESS_VERSION_PARTS = process.versions.node.split("."); - if (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) { - throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); - } - var MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); - var MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); - var SUPPORTED_MAJOR_VERSION = 10; - var SUPPORTED_MINOR_VERSION = 10; - var IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; - var IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; - exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; -}); - -// node_modules/@nodelib/fs.scandir/out/utils/fs.js -var require_fs4 = __commonJS((exports) => { - var createDirentFromStats = function(name, stats) { - return new DirentFromStats(name, stats); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createDirentFromStats = undefined; - - class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } - } - exports.createDirentFromStats = createDirentFromStats; -}); - -// node_modules/@nodelib/fs.scandir/out/utils/index.js -var require_utils6 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.fs = undefined; - var fs = require_fs4(); - exports.fs = fs; -}); - -// node_modules/@nodelib/fs.scandir/out/providers/common.js -var require_common = __commonJS((exports) => { - var joinPathSegments = function(a, b, separator) { - if (a.endsWith(separator)) { - return a + b; - } - return a + separator + b; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.joinPathSegments = undefined; - exports.joinPathSegments = joinPathSegments; -}); - -// node_modules/@nodelib/fs.scandir/out/providers/async.js -var require_async2 = __commonJS((exports) => { - var read = function(directory, settings, callback) { - if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { - readdirWithFileTypes(directory, settings, callback); - return; - } - readdir(directory, settings, callback); - }; - var readdirWithFileTypes = function(directory, settings, callback) { - settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { - if (readdirError !== null) { - callFailureCallback(callback, readdirError); - return; - } - const entries = dirents.map((dirent) => ({ - dirent, - name: dirent.name, - path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) - })); - if (!settings.followSymbolicLinks) { - callSuccessCallback(callback, entries); - return; - } - const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); - rpl(tasks, (rplError, rplEntries) => { - if (rplError !== null) { - callFailureCallback(callback, rplError); - return; - } - callSuccessCallback(callback, rplEntries); - }); - }); - }; - var makeRplTaskEntry = function(entry, settings) { - return (done) => { - if (!entry.dirent.isSymbolicLink()) { - done(null, entry); - return; - } - settings.fs.stat(entry.path, (statError, stats) => { - if (statError !== null) { - if (settings.throwErrorOnBrokenSymbolicLink) { - done(statError); - return; - } - done(null, entry); - return; - } - entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); - done(null, entry); - }); - }; - }; - var readdir = function(directory, settings, callback) { - settings.fs.readdir(directory, (readdirError, names) => { - if (readdirError !== null) { - callFailureCallback(callback, readdirError); - return; - } - const tasks = names.map((name) => { - const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); - return (done) => { - fsStat.stat(path, settings.fsStatSettings, (error2, stats) => { - if (error2 !== null) { - done(error2); - return; - } - const entry = { - name, - path, - dirent: utils.fs.createDirentFromStats(name, stats) - }; - if (settings.stats) { - entry.stats = stats; - } - done(null, entry); - }); - }; - }); - rpl(tasks, (rplError, entries) => { - if (rplError !== null) { - callFailureCallback(callback, rplError); - return; - } - callSuccessCallback(callback, entries); - }); - }); - }; - var callFailureCallback = function(callback, error2) { - callback(error2); - }; - var callSuccessCallback = function(callback, result) { - callback(null, result); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; - var fsStat = require_out(); - var rpl = require_run_parallel(); - var constants_1 = require_constants3(); - var utils = require_utils6(); - var common = require_common(); - exports.read = read; - exports.readdirWithFileTypes = readdirWithFileTypes; - exports.readdir = readdir; -}); - -// node_modules/@nodelib/fs.scandir/out/providers/sync.js -var require_sync2 = __commonJS((exports) => { - var read = function(directory, settings) { - if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { - return readdirWithFileTypes(directory, settings); - } - return readdir(directory, settings); - }; - var readdirWithFileTypes = function(directory, settings) { - const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); - return dirents.map((dirent) => { - const entry = { - dirent, - name: dirent.name, - path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) - }; - if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { - try { - const stats = settings.fs.statSync(entry.path); - entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); - } catch (error2) { - if (settings.throwErrorOnBrokenSymbolicLink) { - throw error2; - } - } - } - return entry; - }); - }; - var readdir = function(directory, settings) { - const names = settings.fs.readdirSync(directory); - return names.map((name) => { - const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); - const stats = fsStat.statSync(entryPath, settings.fsStatSettings); - const entry = { - name, - path: entryPath, - dirent: utils.fs.createDirentFromStats(name, stats) - }; - if (settings.stats) { - entry.stats = stats; - } - return entry; - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.readdir = exports.readdirWithFileTypes = exports.read = undefined; - var fsStat = require_out(); - var constants_1 = require_constants3(); - var utils = require_utils6(); - var common = require_common(); - exports.read = read; - exports.readdirWithFileTypes = readdirWithFileTypes; - exports.readdir = readdir; -}); - -// node_modules/@nodelib/fs.scandir/out/adapters/fs.js -var require_fs5 = __commonJS((exports) => { - var createFileSystemAdapter = function(fsMethods) { - if (fsMethods === undefined) { - return exports.FILE_SYSTEM_ADAPTER; - } - return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = undefined; - var fs = __require("fs"); - exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync - }; - exports.createFileSystemAdapter = createFileSystemAdapter; -}); - -// node_modules/@nodelib/fs.scandir/out/settings.js -var require_settings2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = __require("path"); - var fsStat = require_out(); - var fs = require_fs5(); - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); - this.fs = fs.createFileSystemAdapter(this._options.fs); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); - this.stats = this._getValue(this._options.stats, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); - this.fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this.followSymbolicLinks, - fs: this.fs, - throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink - }); - } - _getValue(option, value) { - return option !== null && option !== undefined ? option : value; - } - } - exports.default = Settings; -}); - -// node_modules/@nodelib/fs.scandir/out/index.js -var require_out2 = __commonJS((exports) => { - var scandir = function(path, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === "function") { - async.read(path, getSettings(), optionsOrSettingsOrCallback); - return; - } - async.read(path, getSettings(optionsOrSettingsOrCallback), callback); - }; - var scandirSync = function(path, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - return sync2.read(path, settings); - }; - var getSettings = function(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Settings = exports.scandirSync = exports.scandir = undefined; - var async = require_async2(); - var sync2 = require_sync2(); - var settings_1 = require_settings2(); - exports.Settings = settings_1.default; - exports.scandir = scandir; - exports.scandirSync = scandirSync; -}); - -// node_modules/reusify/reusify.js -var require_reusify = __commonJS((exports, module) => { - var reusify = function(Constructor) { - var head = new Constructor; - var tail = head; - function get() { - var current = head; - if (current.next) { - head = current.next; - } else { - head = new Constructor; - tail = head; - } - current.next = null; - return current; - } - function release(obj) { - tail.next = obj; - tail = obj; - } - return { - get, - release - }; - }; - module.exports = reusify; -}); - -// node_modules/fastq/queue.js -var require_queue = __commonJS((exports, module) => { - var fastqueue = function(context, worker, concurrency) { - if (typeof context === "function") { - concurrency = worker; - worker = context; - context = null; - } - if (concurrency < 1) { - throw new Error("fastqueue concurrency must be greater than 1"); - } - var cache = reusify(Task); - var queueHead = null; - var queueTail = null; - var _running = 0; - var errorHandler = null; - var self = { - push, - drain: noop, - saturated: noop, - pause, - paused: false, - concurrency, - running, - resume, - idle, - length, - getQueue, - unshift, - empty: noop, - kill: kill2, - killAndDrain, - error: error2 - }; - return self; - function running() { - return _running; - } - function pause() { - self.paused = true; - } - function length() { - var current = queueHead; - var counter = 0; - while (current) { - current = current.next; - counter++; - } - return counter; - } - function getQueue() { - var current = queueHead; - var tasks = []; - while (current) { - tasks.push(current.value); - current = current.next; - } - return tasks; - } - function resume() { - if (!self.paused) - return; - self.paused = false; - for (var i = 0;i < self.concurrency; i++) { - _running++; - release(); - } - } - function idle() { - return _running === 0 && self.length() === 0; - } - function push(value, done) { - var current = cache.get(); - current.context = context; - current.release = release; - current.value = value; - current.callback = done || noop; - current.errorHandler = errorHandler; - if (_running === self.concurrency || self.paused) { - if (queueTail) { - queueTail.next = current; - queueTail = current; - } else { - queueHead = current; - queueTail = current; - self.saturated(); - } - } else { - _running++; - worker.call(context, current.value, current.worked); - } - } - function unshift(value, done) { - var current = cache.get(); - current.context = context; - current.release = release; - current.value = value; - current.callback = done || noop; - if (_running === self.concurrency || self.paused) { - if (queueHead) { - current.next = queueHead; - queueHead = current; - } else { - queueHead = current; - queueTail = current; - self.saturated(); - } - } else { - _running++; - worker.call(context, current.value, current.worked); - } - } - function release(holder) { - if (holder) { - cache.release(holder); - } - var next = queueHead; - if (next) { - if (!self.paused) { - if (queueTail === queueHead) { - queueTail = null; - } - queueHead = next.next; - next.next = null; - worker.call(context, next.value, next.worked); - if (queueTail === null) { - self.empty(); - } - } else { - _running--; - } - } else if (--_running === 0) { - self.drain(); - } - } - function kill2() { - queueHead = null; - queueTail = null; - self.drain = noop; - } - function killAndDrain() { - queueHead = null; - queueTail = null; - self.drain(); - self.drain = noop; - } - function error2(handler) { - errorHandler = handler; - } - }; - var noop = function() { - }; - var Task = function() { - this.value = null; - this.callback = noop; - this.next = null; - this.release = noop; - this.context = null; - this.errorHandler = null; - var self = this; - this.worked = function worked(err, result) { - var callback = self.callback; - var errorHandler = self.errorHandler; - var val = self.value; - self.value = null; - self.callback = noop; - if (self.errorHandler) { - errorHandler(err, val); - } - callback.call(self.context, err, result); - self.release(self); - }; - }; - var queueAsPromised = function(context, worker, concurrency) { - if (typeof context === "function") { - concurrency = worker; - worker = context; - context = null; - } - function asyncWrapper(arg, cb) { - worker.call(this, arg).then(function(res) { - cb(null, res); - }, cb); - } - var queue = fastqueue(context, asyncWrapper, concurrency); - var pushCb = queue.push; - var unshiftCb = queue.unshift; - queue.push = push; - queue.unshift = unshift; - queue.drained = drained; - return queue; - function push(value) { - var p = new Promise(function(resolve5, reject) { - pushCb(value, function(err, result) { - if (err) { - reject(err); - return; - } - resolve5(result); - }); - }); - p.catch(noop); - return p; - } - function unshift(value) { - var p = new Promise(function(resolve5, reject) { - unshiftCb(value, function(err, result) { - if (err) { - reject(err); - return; - } - resolve5(result); - }); - }); - p.catch(noop); - return p; - } - function drained() { - if (queue.idle()) { - return new Promise(function(resolve5) { - resolve5(); - }); - } - var previousDrain = queue.drain; - var p = new Promise(function(resolve5) { - queue.drain = function() { - previousDrain(); - resolve5(); - }; - }); - return p; - } - }; - var reusify = require_reusify(); - module.exports = fastqueue; - module.exports.promise = queueAsPromised; -}); - -// node_modules/@nodelib/fs.walk/out/readers/common.js -var require_common2 = __commonJS((exports) => { - var isFatalError = function(settings, error2) { - if (settings.errorFilter === null) { - return true; - } - return !settings.errorFilter(error2); - }; - var isAppliedFilter = function(filter, value) { - return filter === null || filter(value); - }; - var replacePathSegmentSeparator = function(filepath, separator) { - return filepath.split(/[/\\]/).join(separator); - }; - var joinPathSegments = function(a, b, separator) { - if (a === "") { - return b; - } - if (a.endsWith(separator)) { - return a + b; - } - return a + separator + b; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = undefined; - exports.isFatalError = isFatalError; - exports.isAppliedFilter = isAppliedFilter; - exports.replacePathSegmentSeparator = replacePathSegmentSeparator; - exports.joinPathSegments = joinPathSegments; -}); - -// node_modules/@nodelib/fs.walk/out/readers/reader.js -var require_reader = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var common = require_common2(); - - class Reader { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); - } - } - exports.default = Reader; -}); - -// node_modules/@nodelib/fs.walk/out/readers/async.js -var require_async3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var events_1 = __require("events"); - var fsScandir = require_out2(); - var fastq = require_queue(); - var common = require_common2(); - var reader_1 = require_reader(); - - class AsyncReader extends reader_1.default { - constructor(_root, _settings) { - super(_root, _settings); - this._settings = _settings; - this._scandir = fsScandir.scandir; - this._emitter = new events_1.EventEmitter; - this._queue = fastq(this._worker.bind(this), this._settings.concurrency); - this._isFatalError = false; - this._isDestroyed = false; - this._queue.drain = () => { - if (!this._isFatalError) { - this._emitter.emit("end"); - } - }; - } - read() { - this._isFatalError = false; - this._isDestroyed = false; - setImmediate(() => { - this._pushToQueue(this._root, this._settings.basePath); - }); - return this._emitter; - } - get isDestroyed() { - return this._isDestroyed; - } - destroy() { - if (this._isDestroyed) { - throw new Error("The reader is already destroyed"); - } - this._isDestroyed = true; - this._queue.killAndDrain(); - } - onEntry(callback) { - this._emitter.on("entry", callback); - } - onError(callback) { - this._emitter.once("error", callback); - } - onEnd(callback) { - this._emitter.once("end", callback); - } - _pushToQueue(directory, base) { - const queueItem = { directory, base }; - this._queue.push(queueItem, (error2) => { - if (error2 !== null) { - this._handleError(error2); - } - }); - } - _worker(item, done) { - this._scandir(item.directory, this._settings.fsScandirSettings, (error2, entries) => { - if (error2 !== null) { - done(error2, undefined); - return; - } - for (const entry of entries) { - this._handleEntry(entry, item.base); - } - done(null, undefined); - }); - } - _handleError(error2) { - if (this._isDestroyed || !common.isFatalError(this._settings, error2)) { - return; - } - this._isFatalError = true; - this._isDestroyed = true; - this._emitter.emit("error", error2); - } - _handleEntry(entry, base) { - if (this._isDestroyed || this._isFatalError) { - return; - } - const fullpath = entry.path; - if (base !== undefined) { - entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); - } - if (common.isAppliedFilter(this._settings.entryFilter, entry)) { - this._emitEntry(entry); - } - if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { - this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); - } - } - _emitEntry(entry) { - this._emitter.emit("entry", entry); - } - } - exports.default = AsyncReader; -}); - -// node_modules/@nodelib/fs.walk/out/providers/async.js -var require_async4 = __commonJS((exports) => { - var callFailureCallback = function(callback, error2) { - callback(error2); - }; - var callSuccessCallback = function(callback, entries) { - callback(null, entries); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - var async_1 = require_async3(); - - class AsyncProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new async_1.default(this._root, this._settings); - this._storage = []; - } - read(callback) { - this._reader.onError((error2) => { - callFailureCallback(callback, error2); - }); - this._reader.onEntry((entry) => { - this._storage.push(entry); - }); - this._reader.onEnd(() => { - callSuccessCallback(callback, this._storage); - }); - this._reader.read(); - } - } - exports.default = AsyncProvider; -}); - -// node_modules/@nodelib/fs.walk/out/providers/stream.js -var require_stream2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var stream_1 = __require("stream"); - var async_1 = require_async3(); - - class StreamProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new async_1.default(this._root, this._settings); - this._stream = new stream_1.Readable({ - objectMode: true, - read: () => { - }, - destroy: () => { - if (!this._reader.isDestroyed) { - this._reader.destroy(); - } - } - }); - } - read() { - this._reader.onError((error2) => { - this._stream.emit("error", error2); - }); - this._reader.onEntry((entry) => { - this._stream.push(entry); - }); - this._reader.onEnd(() => { - this._stream.push(null); - }); - this._reader.read(); - return this._stream; - } - } - exports.default = StreamProvider; -}); - -// node_modules/@nodelib/fs.walk/out/readers/sync.js -var require_sync3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fsScandir = require_out2(); - var common = require_common2(); - var reader_1 = require_reader(); - - class SyncReader extends reader_1.default { - constructor() { - super(...arguments); - this._scandir = fsScandir.scandirSync; - this._storage = []; - this._queue = new Set; - } - read() { - this._pushToQueue(this._root, this._settings.basePath); - this._handleQueue(); - return this._storage; - } - _pushToQueue(directory, base) { - this._queue.add({ directory, base }); - } - _handleQueue() { - for (const item of this._queue.values()) { - this._handleDirectory(item.directory, item.base); - } - } - _handleDirectory(directory, base) { - try { - const entries = this._scandir(directory, this._settings.fsScandirSettings); - for (const entry of entries) { - this._handleEntry(entry, base); - } - } catch (error2) { - this._handleError(error2); - } - } - _handleError(error2) { - if (!common.isFatalError(this._settings, error2)) { - return; - } - throw error2; - } - _handleEntry(entry, base) { - const fullpath = entry.path; - if (base !== undefined) { - entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); - } - if (common.isAppliedFilter(this._settings.entryFilter, entry)) { - this._pushToStorage(entry); - } - if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { - this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); - } - } - _pushToStorage(entry) { - this._storage.push(entry); - } - } - exports.default = SyncReader; -}); - -// node_modules/@nodelib/fs.walk/out/providers/sync.js -var require_sync4 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var sync_1 = require_sync3(); - - class SyncProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new sync_1.default(this._root, this._settings); - } - read() { - return this._reader.read(); - } - } - exports.default = SyncProvider; -}); - -// node_modules/@nodelib/fs.walk/out/settings.js -var require_settings3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = __require("path"); - var fsScandir = require_out2(); - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.basePath = this._getValue(this._options.basePath, undefined); - this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); - this.deepFilter = this._getValue(this._options.deepFilter, null); - this.entryFilter = this._getValue(this._options.entryFilter, null); - this.errorFilter = this._getValue(this._options.errorFilter, null); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); - this.fsScandirSettings = new fsScandir.Settings({ - followSymbolicLinks: this._options.followSymbolicLinks, - fs: this._options.fs, - pathSegmentSeparator: this._options.pathSegmentSeparator, - stats: this._options.stats, - throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink - }); - } - _getValue(option, value) { - return option !== null && option !== undefined ? option : value; - } - } - exports.default = Settings; -}); - -// node_modules/@nodelib/fs.walk/out/index.js -var require_out3 = __commonJS((exports) => { - var walk = function(directory, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === "function") { - new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); - return; - } - new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); - }; - var walkSync = function(directory, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - const provider = new sync_1.default(directory, settings); - return provider.read(); - }; - var walkStream = function(directory, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - const provider = new stream_1.default(directory, settings); - return provider.read(); - }; - var getSettings = function(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Settings = exports.walkStream = exports.walkSync = exports.walk = undefined; - var async_1 = require_async4(); - var stream_1 = require_stream2(); - var sync_1 = require_sync4(); - var settings_1 = require_settings3(); - exports.Settings = settings_1.default; - exports.walk = walk; - exports.walkSync = walkSync; - exports.walkStream = walkStream; -}); - -// node_modules/fast-glob/out/readers/reader.js -var require_reader2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = __require("path"); - var fsStat = require_out(); - var utils = require_utils5(); - - class Reader { - constructor(_settings) { - this._settings = _settings; - this._fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this._settings.followSymbolicLinks, - fs: this._settings.fs, - throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks - }); - } - _getFullEntryPath(filepath) { - return path.resolve(this._settings.cwd, filepath); - } - _makeEntry(stats, pattern) { - const entry = { - name: pattern, - path: pattern, - dirent: utils.fs.createDirentFromStats(pattern, stats) - }; - if (this._settings.stats) { - entry.stats = stats; - } - return entry; - } - _isFatalError(error2) { - return !utils.errno.isEnoentCodeError(error2) && !this._settings.suppressErrors; - } - } - exports.default = Reader; -}); - -// node_modules/fast-glob/out/readers/stream.js -var require_stream3 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var stream_1 = __require("stream"); - var fsStat = require_out(); - var fsWalk = require_out3(); - var reader_1 = require_reader2(); - - class ReaderStream extends reader_1.default { - constructor() { - super(...arguments); - this._walkStream = fsWalk.walkStream; - this._stat = fsStat.stat; - } - dynamic(root, options) { - return this._walkStream(root, options); - } - static(patterns, options) { - const filepaths = patterns.map(this._getFullEntryPath, this); - const stream = new stream_1.PassThrough({ objectMode: true }); - stream._write = (index, _enc, done) => { - return this._getEntry(filepaths[index], patterns[index], options).then((entry) => { - if (entry !== null && options.entryFilter(entry)) { - stream.push(entry); - } - if (index === filepaths.length - 1) { - stream.end(); - } - done(); - }).catch(done); - }; - for (let i = 0;i < filepaths.length; i++) { - stream.write(i); - } - return stream; - } - _getEntry(filepath, pattern, options) { - return this._getStat(filepath).then((stats) => this._makeEntry(stats, pattern)).catch((error2) => { - if (options.errorFilter(error2)) { - return null; - } - throw error2; - }); - } - _getStat(filepath) { - return new Promise((resolve5, reject) => { - this._stat(filepath, this._fsStatSettings, (error2, stats) => { - return error2 === null ? resolve5(stats) : reject(error2); - }); - }); - } - } - exports.default = ReaderStream; -}); - -// node_modules/fast-glob/out/readers/async.js -var require_async5 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fsWalk = require_out3(); - var reader_1 = require_reader2(); - var stream_1 = require_stream3(); - - class ReaderAsync extends reader_1.default { - constructor() { - super(...arguments); - this._walkAsync = fsWalk.walk; - this._readerStream = new stream_1.default(this._settings); - } - dynamic(root, options) { - return new Promise((resolve5, reject) => { - this._walkAsync(root, options, (error2, entries) => { - if (error2 === null) { - resolve5(entries); - } else { - reject(error2); - } - }); - }); - } - async static(patterns, options) { - const entries = []; - const stream = this._readerStream.static(patterns, options); - return new Promise((resolve5, reject) => { - stream.once("error", reject); - stream.on("data", (entry) => entries.push(entry)); - stream.once("end", () => resolve5(entries)); - }); - } - } - exports.default = ReaderAsync; -}); - -// node_modules/fast-glob/out/providers/matchers/matcher.js -var require_matcher = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class Matcher { - constructor(_patterns, _settings, _micromatchOptions) { - this._patterns = _patterns; - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this._storage = []; - this._fillStorage(); - } - _fillStorage() { - for (const pattern of this._patterns) { - const segments = this._getPatternSegments(pattern); - const sections = this._splitSegmentsIntoSections(segments); - this._storage.push({ - complete: sections.length <= 1, - pattern, - segments, - sections - }); - } - } - _getPatternSegments(pattern) { - const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); - return parts.map((part) => { - const dynamic = utils.pattern.isDynamicPattern(part, this._settings); - if (!dynamic) { - return { - dynamic: false, - pattern: part - }; - } - return { - dynamic: true, - pattern: part, - patternRe: utils.pattern.makeRe(part, this._micromatchOptions) - }; - }); - } - _splitSegmentsIntoSections(segments) { - return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); - } - } - exports.default = Matcher; -}); - -// node_modules/fast-glob/out/providers/matchers/partial.js -var require_partial = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var matcher_1 = require_matcher(); - - class PartialMatcher extends matcher_1.default { - match(filepath) { - const parts = filepath.split("/"); - const levels = parts.length; - const patterns = this._storage.filter((info2) => !info2.complete || info2.segments.length > levels); - for (const pattern of patterns) { - const section = pattern.sections[0]; - if (!pattern.complete && levels > section.length) { - return true; - } - const match = parts.every((part, index) => { - const segment = pattern.segments[index]; - if (segment.dynamic && segment.patternRe.test(part)) { - return true; - } - if (!segment.dynamic && segment.pattern === part) { - return true; - } - return false; - }); - if (match) { - return true; - } - } - return false; - } - } - exports.default = PartialMatcher; -}); - -// node_modules/fast-glob/out/providers/filters/deep.js -var require_deep = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - var partial_1 = require_partial(); - - class DeepFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - } - getFilter(basePath, positive, negative) { - const matcher = this._getMatcher(positive); - const negativeRe = this._getNegativePatternsRe(negative); - return (entry) => this._filter(basePath, entry, matcher, negativeRe); - } - _getMatcher(patterns) { - return new partial_1.default(patterns, this._settings, this._micromatchOptions); - } - _getNegativePatternsRe(patterns) { - const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); - return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); - } - _filter(basePath, entry, matcher, negativeRe) { - if (this._isSkippedByDeep(basePath, entry.path)) { - return false; - } - if (this._isSkippedSymbolicLink(entry)) { - return false; - } - const filepath = utils.path.removeLeadingDotSegment(entry.path); - if (this._isSkippedByPositivePatterns(filepath, matcher)) { - return false; - } - return this._isSkippedByNegativePatterns(filepath, negativeRe); - } - _isSkippedByDeep(basePath, entryPath) { - if (this._settings.deep === Infinity) { - return false; - } - return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; - } - _getEntryLevel(basePath, entryPath) { - const entryPathDepth = entryPath.split("/").length; - if (basePath === "") { - return entryPathDepth; - } - const basePathDepth = basePath.split("/").length; - return entryPathDepth - basePathDepth; - } - _isSkippedSymbolicLink(entry) { - return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); - } - _isSkippedByPositivePatterns(entryPath, matcher) { - return !this._settings.baseNameMatch && !matcher.match(entryPath); - } - _isSkippedByNegativePatterns(entryPath, patternsRe) { - return !utils.pattern.matchAny(entryPath, patternsRe); - } - } - exports.default = DeepFilter; -}); - -// node_modules/fast-glob/out/providers/filters/entry.js -var require_entry = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class EntryFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this.index = new Map; - } - getFilter(positive, negative) { - const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); - const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })); - return (entry) => this._filter(entry, positiveRe, negativeRe); - } - _filter(entry, positiveRe, negativeRe) { - const filepath = utils.path.removeLeadingDotSegment(entry.path); - if (this._settings.unique && this._isDuplicateEntry(filepath)) { - return false; - } - if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { - return false; - } - if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) { - return false; - } - const isDirectory = entry.dirent.isDirectory(); - const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory); - if (this._settings.unique && isMatched) { - this._createIndexRecord(filepath); - } - return isMatched; - } - _isDuplicateEntry(filepath) { - return this.index.has(filepath); - } - _createIndexRecord(filepath) { - this.index.set(filepath, undefined); - } - _onlyFileFilter(entry) { - return this._settings.onlyFiles && !entry.dirent.isFile(); - } - _onlyDirectoryFilter(entry) { - return this._settings.onlyDirectories && !entry.dirent.isDirectory(); - } - _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { - if (!this._settings.absolute) { - return false; - } - const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); - return utils.pattern.matchAny(fullpath, patternsRe); - } - _isMatchToPatterns(filepath, patternsRe, isDirectory) { - const isMatched = utils.pattern.matchAny(filepath, patternsRe); - if (!isMatched && isDirectory) { - return utils.pattern.matchAny(filepath + "/", patternsRe); - } - return isMatched; - } - } - exports.default = EntryFilter; -}); - -// node_modules/fast-glob/out/providers/filters/error.js -var require_error = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class ErrorFilter { - constructor(_settings) { - this._settings = _settings; - } - getFilter() { - return (error2) => this._isNonFatalError(error2); - } - _isNonFatalError(error2) { - return utils.errno.isEnoentCodeError(error2) || this._settings.suppressErrors; - } - } - exports.default = ErrorFilter; -}); - -// node_modules/fast-glob/out/providers/transformers/entry.js -var require_entry2 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var utils = require_utils5(); - - class EntryTransformer { - constructor(_settings) { - this._settings = _settings; - } - getTransformer() { - return (entry) => this._transform(entry); - } - _transform(entry) { - let filepath = entry.path; - if (this._settings.absolute) { - filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); - filepath = utils.path.unixify(filepath); - } - if (this._settings.markDirectories && entry.dirent.isDirectory()) { - filepath += "/"; - } - if (!this._settings.objectMode) { - return filepath; - } - return Object.assign(Object.assign({}, entry), { path: filepath }); - } - } - exports.default = EntryTransformer; -}); - -// node_modules/fast-glob/out/providers/provider.js -var require_provider = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var path = __require("path"); - var deep_1 = require_deep(); - var entry_1 = require_entry(); - var error_1 = require_error(); - var entry_2 = require_entry2(); - - class Provider { - constructor(_settings) { - this._settings = _settings; - this.errorFilter = new error_1.default(this._settings); - this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); - this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); - this.entryTransformer = new entry_2.default(this._settings); - } - _getRootDirectory(task) { - return path.resolve(this._settings.cwd, task.base); - } - _getReaderOptions(task) { - const basePath = task.base === "." ? "" : task.base; - return { - basePath, - pathSegmentSeparator: "/", - concurrency: this._settings.concurrency, - deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), - entryFilter: this.entryFilter.getFilter(task.positive, task.negative), - errorFilter: this.errorFilter.getFilter(), - followSymbolicLinks: this._settings.followSymbolicLinks, - fs: this._settings.fs, - stats: this._settings.stats, - throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, - transform: this.entryTransformer.getTransformer() - }; - } - _getMicromatchOptions() { - return { - dot: this._settings.dot, - matchBase: this._settings.baseNameMatch, - nobrace: !this._settings.braceExpansion, - nocase: !this._settings.caseSensitiveMatch, - noext: !this._settings.extglob, - noglobstar: !this._settings.globstar, - posix: true, - strictSlashes: false - }; - } - } - exports.default = Provider; -}); - -// node_modules/fast-glob/out/providers/async.js -var require_async6 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var async_1 = require_async5(); - var provider_1 = require_provider(); - - class ProviderAsync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new async_1.default(this._settings); - } - async read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = await this.api(root, task, options); - return entries.map((entry) => options.transform(entry)); - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } - } - exports.default = ProviderAsync; -}); - -// node_modules/fast-glob/out/providers/stream.js -var require_stream4 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var stream_1 = __require("stream"); - var stream_2 = require_stream3(); - var provider_1 = require_provider(); - - class ProviderStream extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new stream_2.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const source = this.api(root, task, options); - const destination = new stream_1.Readable({ objectMode: true, read: () => { - } }); - source.once("error", (error2) => destination.emit("error", error2)).on("data", (entry) => destination.emit("data", options.transform(entry))).once("end", () => destination.emit("end")); - destination.once("close", () => source.destroy()); - return destination; - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } - } - exports.default = ProviderStream; -}); - -// node_modules/fast-glob/out/readers/sync.js -var require_sync5 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var fsStat = require_out(); - var fsWalk = require_out3(); - var reader_1 = require_reader2(); - - class ReaderSync extends reader_1.default { - constructor() { - super(...arguments); - this._walkSync = fsWalk.walkSync; - this._statSync = fsStat.statSync; - } - dynamic(root, options) { - return this._walkSync(root, options); - } - static(patterns, options) { - const entries = []; - for (const pattern of patterns) { - const filepath = this._getFullEntryPath(pattern); - const entry = this._getEntry(filepath, pattern, options); - if (entry === null || !options.entryFilter(entry)) { - continue; - } - entries.push(entry); - } - return entries; - } - _getEntry(filepath, pattern, options) { - try { - const stats = this._getStat(filepath); - return this._makeEntry(stats, pattern); - } catch (error2) { - if (options.errorFilter(error2)) { - return null; - } - throw error2; - } - } - _getStat(filepath) { - return this._statSync(filepath, this._fsStatSettings); - } - } - exports.default = ReaderSync; -}); - -// node_modules/fast-glob/out/providers/sync.js -var require_sync6 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - var sync_1 = require_sync5(); - var provider_1 = require_provider(); - - class ProviderSync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new sync_1.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = this.api(root, task, options); - return entries.map(options.transform); - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } - } - exports.default = ProviderSync; -}); - -// node_modules/fast-glob/out/settings.js -var require_settings4 = __commonJS((exports) => { - Object.defineProperty(exports, "__esModule", { value: true }); - exports.DEFAULT_FILE_SYSTEM_ADAPTER = undefined; - var fs = __require("fs"); - var os = __require("os"); - var CPU_COUNT = Math.max(os.cpus().length, 1); - exports.DEFAULT_FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - lstatSync: fs.lstatSync, - stat: fs.stat, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync - }; - - class Settings { - constructor(_options = {}) { - this._options = _options; - this.absolute = this._getValue(this._options.absolute, false); - this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); - this.braceExpansion = this._getValue(this._options.braceExpansion, true); - this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); - this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); - this.cwd = this._getValue(this._options.cwd, process.cwd()); - this.deep = this._getValue(this._options.deep, Infinity); - this.dot = this._getValue(this._options.dot, false); - this.extglob = this._getValue(this._options.extglob, true); - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); - this.fs = this._getFileSystemMethods(this._options.fs); - this.globstar = this._getValue(this._options.globstar, true); - this.ignore = this._getValue(this._options.ignore, []); - this.markDirectories = this._getValue(this._options.markDirectories, false); - this.objectMode = this._getValue(this._options.objectMode, false); - this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); - this.onlyFiles = this._getValue(this._options.onlyFiles, true); - this.stats = this._getValue(this._options.stats, false); - this.suppressErrors = this._getValue(this._options.suppressErrors, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); - this.unique = this._getValue(this._options.unique, true); - if (this.onlyDirectories) { - this.onlyFiles = false; - } - if (this.stats) { - this.objectMode = true; - } - this.ignore = [].concat(this.ignore); - } - _getValue(option, value) { - return option === undefined ? value : option; - } - _getFileSystemMethods(methods = {}) { - return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); - } - } - exports.default = Settings; -}); - -// node_modules/fast-glob/out/index.js -var require_out4 = __commonJS((exports, module) => { - async function FastGlob(source, options) { - assertPatternsInput(source); - const works = getWorks(source, async_1.default, options); - const result = await Promise.all(works); - return utils.array.flatten(result); - } - var getWorks = function(source, _Provider, options) { - const patterns = [].concat(source); - const settings = new settings_1.default(options); - const tasks = taskManager.generate(patterns, settings); - const provider = new _Provider(settings); - return tasks.map(provider.read, provider); - }; - var assertPatternsInput = function(input) { - const source = [].concat(input); - const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); - if (!isValidSource) { - throw new TypeError("Patterns must be a string (non empty) or an array of strings"); - } - }; - var taskManager = require_tasks(); - var async_1 = require_async6(); - var stream_1 = require_stream4(); - var sync_1 = require_sync6(); - var settings_1 = require_settings4(); - var utils = require_utils5(); - (function(FastGlob2) { - FastGlob2.glob = FastGlob2; - FastGlob2.globSync = sync2; - FastGlob2.globStream = stream; - FastGlob2.async = FastGlob2; - function sync2(source, options) { - assertPatternsInput(source); - const works = getWorks(source, sync_1.default, options); - return utils.array.flatten(works); - } - FastGlob2.sync = sync2; - function stream(source, options) { - assertPatternsInput(source); - const works = getWorks(source, stream_1.default, options); - return utils.stream.merge(works); - } - FastGlob2.stream = stream; - function generateTasks(source, options) { - assertPatternsInput(source); - const patterns = [].concat(source); - const settings = new settings_1.default(options); - return taskManager.generate(patterns, settings); - } - FastGlob2.generateTasks = generateTasks; - function isDynamicPattern(source, options) { - assertPatternsInput(source); - const settings = new settings_1.default(options); - return utils.pattern.isDynamicPattern(source, settings); - } - FastGlob2.isDynamicPattern = isDynamicPattern; - function escapePath(source) { - assertPatternsInput(source); - return utils.path.escape(source); - } - FastGlob2.escapePath = escapePath; - function convertPathToPattern(source) { - assertPatternsInput(source); - return utils.path.convertPathToPattern(source); - } - FastGlob2.convertPathToPattern = convertPathToPattern; - let posix; - (function(posix2) { - function escapePath2(source) { - assertPatternsInput(source); - return utils.path.escapePosixPath(source); - } - posix2.escapePath = escapePath2; - function convertPathToPattern2(source) { - assertPatternsInput(source); - return utils.path.convertPosixPathToPattern(source); - } - posix2.convertPathToPattern = convertPathToPattern2; - })(posix = FastGlob2.posix || (FastGlob2.posix = {})); - let win32; - (function(win322) { - function escapePath2(source) { - assertPatternsInput(source); - return utils.path.escapeWindowsPath(source); - } - win322.escapePath = escapePath2; - function convertPathToPattern2(source) { - assertPatternsInput(source); - return utils.path.convertWindowsPathToPattern(source); - } - win322.convertPathToPattern = convertPathToPattern2; - })(win32 = FastGlob2.win32 || (FastGlob2.win32 = {})); - })(FastGlob || (FastGlob = {})); - module.exports = FastGlob; -}); - -// node_modules/fs.realpath/old.js -var require_old = __commonJS((exports) => { - var rethrow = function() { - var callback; - if (DEBUG) { - var backtrace = new Error; - callback = debugCallback; - } else - callback = missingCallback; - return callback; - function debugCallback(err) { - if (err) { - backtrace.message = err.message; - err = backtrace; - missingCallback(err); - } - } - function missingCallback(err) { - if (err) { - if (process.throwDeprecation) - throw err; - else if (!process.noDeprecation) { - var msg = "fs: missing callback " + (err.stack || err.message); - if (process.traceDeprecation) - console.trace(msg); - else - console.error(msg); - } - } - } - }; - var maybeCallback = function(cb) { - return typeof cb === "function" ? cb : rethrow(); - }; - var pathModule = __require("path"); - var isWindows = process.platform === "win32"; - var fs = __require("fs"); - var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); - var normalize2 = pathModule.normalize; - if (isWindows) { - nextPartRe = /(.*?)(?:[\/\\]+|$)/g; - } else { - nextPartRe = /(.*?)(?:[\/]+|$)/g; - } - var nextPartRe; - if (isWindows) { - splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; - } else { - splitRootRe = /^[\/]*/; - } - var splitRootRe; - exports.realpathSync = function realpathSync(p, cache) { - p = pathModule.resolve(p); - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return cache[p]; - } - var original = p, seenLinks = {}, knownHard = {}; - var pos; - var current; - var base; - var previous; - start(); - function start() { - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ""; - if (isWindows && !knownHard[base]) { - fs.lstatSync(base); - knownHard[base] = true; - } - } - while (pos < p.length) { - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - if (knownHard[base] || cache && cache[base] === base) { - continue; - } - var resolvedLink; - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - resolvedLink = cache[base]; - } else { - var stat = fs.lstatSync(base); - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) - cache[base] = base; - continue; - } - var linkTarget = null; - if (!isWindows) { - var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - linkTarget = seenLinks[id]; - } - } - if (linkTarget === null) { - fs.statSync(base); - linkTarget = fs.readlinkSync(base); - } - resolvedLink = pathModule.resolve(previous, linkTarget); - if (cache) - cache[base] = resolvedLink; - if (!isWindows) - seenLinks[id] = linkTarget; - } - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } - if (cache) - cache[original] = p; - return p; - }; - exports.realpath = function realpath(p, cache, cb) { - if (typeof cb !== "function") { - cb = maybeCallback(cache); - cache = null; - } - p = pathModule.resolve(p); - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return process.nextTick(cb.bind(null, null, cache[p])); - } - var original = p, seenLinks = {}, knownHard = {}; - var pos; - var current; - var base; - var previous; - start(); - function start() { - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ""; - if (isWindows && !knownHard[base]) { - fs.lstat(base, function(err) { - if (err) - return cb(err); - knownHard[base] = true; - LOOP(); - }); - } else { - process.nextTick(LOOP); - } - } - function LOOP() { - if (pos >= p.length) { - if (cache) - cache[original] = p; - return cb(null, p); - } - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - if (knownHard[base] || cache && cache[base] === base) { - return process.nextTick(LOOP); - } - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - return gotResolvedLink(cache[base]); - } - return fs.lstat(base, gotStat); - } - function gotStat(err, stat) { - if (err) - return cb(err); - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) - cache[base] = base; - return process.nextTick(LOOP); - } - if (!isWindows) { - var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - return gotTarget(null, seenLinks[id], base); - } - } - fs.stat(base, function(err2) { - if (err2) - return cb(err2); - fs.readlink(base, function(err3, target) { - if (!isWindows) - seenLinks[id] = target; - gotTarget(err3, target); - }); - }); - } - function gotTarget(err, target, base2) { - if (err) - return cb(err); - var resolvedLink = pathModule.resolve(previous, target); - if (cache) - cache[base2] = resolvedLink; - gotResolvedLink(resolvedLink); - } - function gotResolvedLink(resolvedLink) { - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } - }; -}); - -// node_modules/fs.realpath/index.js -var require_fs6 = __commonJS((exports, module) => { - var newError = function(er) { - return er && er.syscall === "realpath" && (er.code === "ELOOP" || er.code === "ENOMEM" || er.code === "ENAMETOOLONG"); - }; - var realpath = function(p, cache, cb) { - if (ok) { - return origRealpath(p, cache, cb); - } - if (typeof cache === "function") { - cb = cache; - cache = null; - } - origRealpath(p, cache, function(er, result) { - if (newError(er)) { - old.realpath(p, cache, cb); - } else { - cb(er, result); - } - }); - }; - var realpathSync = function(p, cache) { - if (ok) { - return origRealpathSync(p, cache); - } - try { - return origRealpathSync(p, cache); - } catch (er) { - if (newError(er)) { - return old.realpathSync(p, cache); - } else { - throw er; - } - } - }; - var monkeypatch = function() { - fs.realpath = realpath; - fs.realpathSync = realpathSync; - }; - var unmonkeypatch = function() { - fs.realpath = origRealpath; - fs.realpathSync = origRealpathSync; - }; - module.exports = realpath; - realpath.realpath = realpath; - realpath.sync = realpathSync; - realpath.realpathSync = realpathSync; - realpath.monkeypatch = monkeypatch; - realpath.unmonkeypatch = unmonkeypatch; - var fs = __require("fs"); - var origRealpath = fs.realpath; - var origRealpathSync = fs.realpathSync; - var version = process.version; - var ok = /^v[0-5]\./.test(version); - var old = require_old(); -}); - -// node_modules/concat-map/index.js -var require_concat_map = __commonJS((exports, module) => { - module.exports = function(xs, fn) { - var res = []; - for (var i = 0;i < xs.length; i++) { - var x = fn(xs[i], i); - if (isArray(x)) - res.push.apply(res, x); - else - res.push(x); - } - return res; - }; - var isArray = Array.isArray || function(xs) { - return Object.prototype.toString.call(xs) === "[object Array]"; - }; -}); - -// node_modules/balanced-match/index.js -var require_balanced_match = __commonJS((exports, module) => { - var balanced = function(a, b, str) { - if (a instanceof RegExp) - a = maybeMatch(a, str); - if (b instanceof RegExp) - b = maybeMatch(b, str); - var r = range(a, b, str); - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) - }; - }; - var maybeMatch = function(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; - }; - var range = function(a, b, str) { - var begs, beg, left2, right2, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; - if (ai >= 0 && bi > 0) { - if (a === b) { - return [ai, bi]; - } - begs = []; - left2 = str.length; - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); - } else if (begs.length == 1) { - result = [begs.pop(), bi]; - } else { - beg = begs.pop(); - if (beg < left2) { - left2 = beg; - right2 = bi; - } - bi = str.indexOf(b, i + 1); - } - i = ai < bi && ai >= 0 ? ai : bi; - } - if (begs.length) { - result = [left2, right2]; - } - } - return result; - }; - module.exports = balanced; - balanced.range = range; -}); - -// node_modules/globs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js -var require_brace_expansion = __commonJS((exports, module) => { - var numeric = function(str) { - return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); - }; - var escapeBraces = function(str) { - return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); - }; - var unescapeBraces = function(str) { - return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); - }; - var parseCommaParts = function(str) { - if (!str) - return [""]; - var parts = []; - var m = balanced("{", "}", str); - if (!m) - return str.split(","); - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(","); - p[p.length - 1] += "{" + body + "}"; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length - 1] += postParts.shift(); - p.push.apply(p, postParts); - } - parts.push.apply(parts, p); - return parts; - }; - var expandTop = function(str) { - if (!str) - return []; - if (str.substr(0, 2) === "{}") { - str = "\\{\\}" + str.substr(2); - } - return expand(escapeBraces(str), true).map(unescapeBraces); - }; - var embrace = function(str) { - return "{" + str + "}"; - }; - var isPadded = function(el) { - return /^-?0\d/.test(el); - }; - var lte = function(i, y) { - return i <= y; - }; - var gte = function(i, y) { - return i >= y; - }; - var expand = function(str, isTop) { - var expansions = []; - var m = balanced("{", "}", str); - if (!m || /\$$/.test(m.pre)) - return [str]; - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(",") >= 0; - if (!isSequence && !isOptions) { - if (m.post.match(/,.*\}/)) { - str = m.pre + "{" + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - n = expand(n[0], false).map(embrace); - if (n.length === 1) { - var post = m.post.length ? expand(m.post, false) : [""]; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - var pre = m.pre; - var post = m.post.length ? expand(m.post, false) : [""]; - var N; - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length); - var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - N = []; - for (var i = x;test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === "\\") - c = ""; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join("0"); - if (i < 0) - c = "-" + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { - return expand(el, false); - }); - } - for (var j = 0;j < N.length; j++) { - for (var k = 0;k < post.length; k++) { - var expansion = pre + N[j] + post[k]; - if (!isTop || isSequence || expansion) - expansions.push(expansion); - } - } - return expansions; - }; - var concatMap = require_concat_map(); - var balanced = require_balanced_match(); - module.exports = expandTop; - var escSlash = "\0SLASH" + Math.random() + "\0"; - var escOpen = "\0OPEN" + Math.random() + "\0"; - var escClose = "\0CLOSE" + Math.random() + "\0"; - var escComma = "\0COMMA" + Math.random() + "\0"; - var escPeriod = "\0PERIOD" + Math.random() + "\0"; -}); - -// node_modules/globs/node_modules/glob/node_modules/minimatch/minimatch.js -var require_minimatch = __commonJS((exports, module) => { - var charSet = function(s) { - return s.split("").reduce(function(set, c) { - set[c] = true; - return set; - }, {}); - }; - var filter = function(pattern, options) { - options = options || {}; - return function(p, i, list) { - return minimatch(p, pattern, options); - }; - }; - var ext = function(a, b) { - b = b || {}; - var t = {}; - Object.keys(a).forEach(function(k) { - t[k] = a[k]; - }); - Object.keys(b).forEach(function(k) { - t[k] = b[k]; - }); - return t; - }; - var minimatch = function(p, pattern, options) { - assertValidPattern(pattern); - if (!options) - options = {}; - if (!options.nocomment && pattern.charAt(0) === "#") { - return false; - } - return new Minimatch(pattern, options).match(p); - }; - var Minimatch = function(pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options); - } - assertValidPattern(pattern); - if (!options) - options = {}; - pattern = pattern.trim(); - if (!options.allowWindowsEscape && path.sep !== "/") { - pattern = pattern.split(path.sep).join("/"); - } - this.options = options; - this.set = []; - this.pattern = pattern; - this.regexp = null; - this.negate = false; - this.comment = false; - this.empty = false; - this.partial = !!options.partial; - this.make(); - }; - var make = function() { - var pattern = this.pattern; - var options = this.options; - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true; - return; - } - if (!pattern) { - this.empty = true; - return; - } - this.parseNegate(); - var set = this.globSet = this.braceExpand(); - if (options.debug) - this.debug = function debug() { - console.error.apply(console, arguments); - }; - this.debug(this.pattern, set); - set = this.globParts = set.map(function(s) { - return s.split(slashSplit); - }); - this.debug(this.pattern, set); - set = set.map(function(s, si, set2) { - return s.map(this.parse, this); - }, this); - this.debug(this.pattern, set); - set = set.filter(function(s) { - return s.indexOf(false) === -1; - }); - this.debug(this.pattern, set); - this.set = set; - }; - var parseNegate = function() { - var pattern = this.pattern; - var negate = false; - var options = this.options; - var negateOffset = 0; - if (options.nonegate) - return; - for (var i = 0, l = pattern.length;i < l && pattern.charAt(i) === "!"; i++) { - negate = !negate; - negateOffset++; - } - if (negateOffset) - this.pattern = pattern.substr(negateOffset); - this.negate = negate; - }; - var braceExpand = function(pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options; - } else { - options = {}; - } - } - pattern = typeof pattern === "undefined" ? this.pattern : pattern; - assertValidPattern(pattern); - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - return [pattern]; - } - return expand(pattern); - }; - var parse = function(pattern, isSub) { - assertValidPattern(pattern); - var options = this.options; - if (pattern === "**") { - if (!options.noglobstar) - return GLOBSTAR; - else - pattern = "*"; - } - if (pattern === "") - return ""; - var re = ""; - var hasMagic = !!options.nocase; - var escaping = false; - var patternListStack = []; - var negativeLists = []; - var stateChar; - var inClass = false; - var reClassStart = -1; - var classStart = -1; - var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; - var self = this; - function clearStateChar() { - if (stateChar) { - switch (stateChar) { - case "*": - re += star; - hasMagic = true; - break; - case "?": - re += qmark; - hasMagic = true; - break; - default: - re += "\\" + stateChar; - break; - } - self.debug("clearStateChar %j %j", stateChar, re); - stateChar = false; - } - } - for (var i = 0, len = pattern.length, c;i < len && (c = pattern.charAt(i)); i++) { - this.debug("%s\t%s %s %j", pattern, i, re, c); - if (escaping && reSpecials[c]) { - re += "\\" + c; - escaping = false; - continue; - } - switch (c) { - case "/": { - return false; - } - case "\\": - clearStateChar(); - escaping = true; - continue; - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c); - if (inClass) { - this.debug(" in class"); - if (c === "!" && i === classStart + 1) - c = "^"; - re += c; - continue; - } - self.debug("call clearStateChar %j", stateChar); - clearStateChar(); - stateChar = c; - if (options.noext) - clearStateChar(); - continue; - case "(": - if (inClass) { - re += "("; - continue; - } - if (!stateChar) { - re += "\\("; - continue; - } - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }); - re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; - this.debug("plType %j %j", stateChar, re); - stateChar = false; - continue; - case ")": - if (inClass || !patternListStack.length) { - re += "\\)"; - continue; - } - clearStateChar(); - hasMagic = true; - var pl = patternListStack.pop(); - re += pl.close; - if (pl.type === "!") { - negativeLists.push(pl); - } - pl.reEnd = re.length; - continue; - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|"; - escaping = false; - continue; - } - clearStateChar(); - re += "|"; - continue; - case "[": - clearStateChar(); - if (inClass) { - re += "\\" + c; - continue; - } - inClass = true; - classStart = i; - reClassStart = re.length; - re += c; - continue; - case "]": - if (i === classStart + 1 || !inClass) { - re += "\\" + c; - escaping = false; - continue; - } - var cs = pattern.substring(classStart + 1, i); - try { - RegExp("[" + cs + "]"); - } catch (er) { - var sp = this.parse(cs, SUBPARSE); - re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; - hasMagic = hasMagic || sp[1]; - inClass = false; - continue; - } - hasMagic = true; - inClass = false; - re += c; - continue; - default: - clearStateChar(); - if (escaping) { - escaping = false; - } else if (reSpecials[c] && !(c === "^" && inClass)) { - re += "\\"; - } - re += c; - } - } - if (inClass) { - cs = pattern.substr(classStart + 1); - sp = this.parse(cs, SUBPARSE); - re = re.substr(0, reClassStart) + "\\[" + sp[0]; - hasMagic = hasMagic || sp[1]; - } - for (pl = patternListStack.pop();pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length); - this.debug("setting tail", re, pl); - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { - if (!$2) { - $2 = "\\"; - } - return $1 + $1 + $2 + "|"; - }); - this.debug("tail=%j\n %s", tail, tail, pl, re); - var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; - hasMagic = true; - re = re.slice(0, pl.reStart) + t + "\\(" + tail; - } - clearStateChar(); - if (escaping) { - re += "\\\\"; - } - var addPatternStart = false; - switch (re.charAt(0)) { - case "[": - case ".": - case "(": - addPatternStart = true; - } - for (var n = negativeLists.length - 1;n > -1; n--) { - var nl = negativeLists[n]; - var nlBefore = re.slice(0, nl.reStart); - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); - var nlAfter = re.slice(nl.reEnd); - nlLast += nlAfter; - var openParensBefore = nlBefore.split("(").length - 1; - var cleanAfter = nlAfter; - for (i = 0;i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); - } - nlAfter = cleanAfter; - var dollar = ""; - if (nlAfter === "" && isSub !== SUBPARSE) { - dollar = "$"; - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; - re = newRe; - } - if (re !== "" && hasMagic) { - re = "(?=.)" + re; - } - if (addPatternStart) { - re = patternStart + re; - } - if (isSub === SUBPARSE) { - return [re, hasMagic]; - } - if (!hasMagic) { - return globUnescape(pattern); - } - var flags = options.nocase ? "i" : ""; - try { - var regExp = new RegExp("^" + re + "$", flags); - } catch (er) { - return new RegExp("$."); - } - regExp._glob = pattern; - regExp._src = re; - return regExp; - }; - var makeRe = function() { - if (this.regexp || this.regexp === false) - return this.regexp; - var set = this.set; - if (!set.length) { - this.regexp = false; - return this.regexp; - } - var options = this.options; - var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; - var flags = options.nocase ? "i" : ""; - var re = set.map(function(pattern) { - return pattern.map(function(p) { - return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; - }).join("\\/"); - }).join("|"); - re = "^(?:" + re + ")$"; - if (this.negate) - re = "^(?!" + re + ").*$"; - try { - this.regexp = new RegExp(re, flags); - } catch (ex) { - this.regexp = false; - } - return this.regexp; - }; - var globUnescape = function(s) { - return s.replace(/\\(.)/g, "$1"); - }; - var regExpEscape = function(s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); - }; - module.exports = minimatch; - minimatch.Minimatch = Minimatch; - var path = function() { - try { - return __require("path"); - } catch (e) { - } - }() || { - sep: "/" - }; - minimatch.sep = path.sep; - var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; - var expand = require_brace_expansion(); - var plTypes = { - "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, - "?": { open: "(?:", close: ")?" }, - "+": { open: "(?:", close: ")+" }, - "*": { open: "(?:", close: ")*" }, - "@": { open: "(?:", close: ")" } - }; - var qmark = "[^/]"; - var star = qmark + "*?"; - var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; - var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; - var reSpecials = charSet("().*{}+?[]^$\\!"); - var slashSplit = /\/+/; - minimatch.filter = filter; - minimatch.defaults = function(def) { - if (!def || typeof def !== "object" || !Object.keys(def).length) { - return minimatch; - } - var orig = minimatch; - var m = function minimatch(p, pattern, options) { - return orig(p, pattern, ext(def, options)); - }; - m.Minimatch = function Minimatch(pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)); - }; - m.Minimatch.defaults = function defaults(options) { - return orig.defaults(ext(def, options)).Minimatch; - }; - m.filter = function filter(pattern, options) { - return orig.filter(pattern, ext(def, options)); - }; - m.defaults = function defaults(options) { - return orig.defaults(ext(def, options)); - }; - m.makeRe = function makeRe(pattern, options) { - return orig.makeRe(pattern, ext(def, options)); - }; - m.braceExpand = function braceExpand(pattern, options) { - return orig.braceExpand(pattern, ext(def, options)); - }; - m.match = function(list, pattern, options) { - return orig.match(list, pattern, ext(def, options)); - }; - return m; - }; - Minimatch.defaults = function(def) { - return minimatch.defaults(def).Minimatch; - }; - Minimatch.prototype.debug = function() { - }; - Minimatch.prototype.make = make; - Minimatch.prototype.parseNegate = parseNegate; - minimatch.braceExpand = function(pattern, options) { - return braceExpand(pattern, options); - }; - Minimatch.prototype.braceExpand = braceExpand; - var MAX_PATTERN_LENGTH = 1024 * 64; - var assertValidPattern = function(pattern) { - if (typeof pattern !== "string") { - throw new TypeError("invalid pattern"); - } - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError("pattern is too long"); - } - }; - Minimatch.prototype.parse = parse; - var SUBPARSE = {}; - minimatch.makeRe = function(pattern, options) { - return new Minimatch(pattern, options || {}).makeRe(); - }; - Minimatch.prototype.makeRe = makeRe; - minimatch.match = function(list, pattern, options) { - options = options || {}; - var mm = new Minimatch(pattern, options); - list = list.filter(function(f) { - return mm.match(f); - }); - if (mm.options.nonull && !list.length) { - list.push(pattern); - } - return list; - }; - Minimatch.prototype.match = function match(f, partial) { - if (typeof partial === "undefined") - partial = this.partial; - this.debug("match", f, this.pattern); - if (this.comment) - return false; - if (this.empty) - return f === ""; - if (f === "/" && partial) - return true; - var options = this.options; - if (path.sep !== "/") { - f = f.split(path.sep).join("/"); - } - f = f.split(slashSplit); - this.debug(this.pattern, "split", f); - var set = this.set; - this.debug(this.pattern, "set", set); - var filename; - var i; - for (i = f.length - 1;i >= 0; i--) { - filename = f[i]; - if (filename) - break; - } - for (i = 0;i < set.length; i++) { - var pattern = set[i]; - var file = f; - if (options.matchBase && pattern.length === 1) { - file = [filename]; - } - var hit = this.matchOne(file, pattern, partial); - if (hit) { - if (options.flipNegate) - return true; - return !this.negate; - } - } - if (options.flipNegate) - return false; - return this.negate; - }; - Minimatch.prototype.matchOne = function(file, pattern, partial) { - var options = this.options; - this.debug("matchOne", { this: this, file, pattern }); - this.debug("matchOne", file.length, pattern.length); - for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length;fi < fl && pi < pl; fi++, pi++) { - this.debug("matchOne loop"); - var p = pattern[pi]; - var f = file[fi]; - this.debug(pattern, p, f); - if (p === false) - return false; - if (p === GLOBSTAR) { - this.debug("GLOBSTAR", [pattern, p, f]); - var fr = fi; - var pr = pi + 1; - if (pr === pl) { - this.debug("** at the end"); - for (;fi < fl; fi++) { - if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") - return false; - } - return true; - } - while (fr < fl) { - var swallowee = file[fr]; - this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug("globstar found match!", fr, fl, swallowee); - return true; - } else { - if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { - this.debug("dot detected!", file, fr, pattern, pr); - break; - } - this.debug("globstar swallow a segment, and continue"); - fr++; - } - } - if (partial) { - this.debug("\n>>> no match, partial?", file, fr, pattern, pr); - if (fr === fl) - return true; - } - return false; - } - var hit; - if (typeof p === "string") { - hit = f === p; - this.debug("string match", p, f, hit); - } else { - hit = f.match(p); - this.debug("pattern match", p, f, hit); - } - if (!hit) - return false; - } - if (fi === fl && pi === pl) { - return true; - } else if (fi === fl) { - return partial; - } else if (pi === pl) { - return fi === fl - 1 && file[fi] === ""; - } - throw new Error("wtf?"); - }; -}); - -// node_modules/inherits/inherits_browser.js -var require_inherits_browser = __commonJS((exports, module) => { - if (typeof Object.create === "function") { - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - } - }; - } else { - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function() { - }; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor; - ctor.prototype.constructor = ctor; - } - }; - } -}); - -// node_modules/inherits/inherits.js -var require_inherits = __commonJS((exports, module) => { - try { - util = __require("util"); - if (typeof util.inherits !== "function") - throw ""; - module.exports = util.inherits; - } catch (e) { - module.exports = require_inherits_browser(); - } - var util; -}); - -// node_modules/path-is-absolute/index.js -var require_path_is_absolute = __commonJS((exports, module) => { - var posix = function(path) { - return path.charAt(0) === "/"; - }; - var win32 = function(path) { - var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; - var result = splitDeviceRe.exec(path); - var device = result[1] || ""; - var isUnc = Boolean(device && device.charAt(1) !== ":"); - return Boolean(result[2] || isUnc); - }; - module.exports = process.platform === "win32" ? win32 : posix; - module.exports.posix = posix; - module.exports.win32 = win32; -}); - -// node_modules/globs/node_modules/glob/common.js -var require_common3 = __commonJS((exports) => { - var ownProp = function(obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field); - }; - var alphasort = function(a, b) { - return a.localeCompare(b, "en"); - }; - var setupIgnores = function(self, options) { - self.ignore = options.ignore || []; - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore]; - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap); - } - }; - var ignoreMap = function(pattern) { - var gmatcher = null; - if (pattern.slice(-3) === "/**") { - var gpattern = pattern.replace(/(\/\*\*)+$/, ""); - gmatcher = new Minimatch(gpattern, { dot: true }); - } - return { - matcher: new Minimatch(pattern, { dot: true }), - gmatcher - }; - }; - var setopts = function(self, pattern, options) { - if (!options) - options = {}; - if (options.matchBase && pattern.indexOf("/") === -1) { - if (options.noglobstar) { - throw new Error("base matching requires globstar"); - } - pattern = "**/" + pattern; - } - self.silent = !!options.silent; - self.pattern = pattern; - self.strict = options.strict !== false; - self.realpath = !!options.realpath; - self.realpathCache = options.realpathCache || Object.create(null); - self.follow = !!options.follow; - self.dot = !!options.dot; - self.mark = !!options.mark; - self.nodir = !!options.nodir; - if (self.nodir) - self.mark = true; - self.sync = !!options.sync; - self.nounique = !!options.nounique; - self.nonull = !!options.nonull; - self.nosort = !!options.nosort; - self.nocase = !!options.nocase; - self.stat = !!options.stat; - self.noprocess = !!options.noprocess; - self.absolute = !!options.absolute; - self.fs = options.fs || fs; - self.maxLength = options.maxLength || Infinity; - self.cache = options.cache || Object.create(null); - self.statCache = options.statCache || Object.create(null); - self.symlinks = options.symlinks || Object.create(null); - setupIgnores(self, options); - self.changedCwd = false; - var cwd = process.cwd(); - if (!ownProp(options, "cwd")) - self.cwd = cwd; - else { - self.cwd = path.resolve(options.cwd); - self.changedCwd = self.cwd !== cwd; - } - self.root = options.root || path.resolve(self.cwd, "/"); - self.root = path.resolve(self.root); - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/"); - self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd); - if (process.platform === "win32") - self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); - self.nomount = !!options.nomount; - options.nonegate = true; - options.nocomment = true; - options.allowWindowsEscape = false; - self.minimatch = new Minimatch(pattern, options); - self.options = self.minimatch.options; - }; - var finish = function(self) { - var nou = self.nounique; - var all = nou ? [] : Object.create(null); - for (var i = 0, l = self.matches.length;i < l; i++) { - var matches = self.matches[i]; - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - var literal = self.minimatch.globSet[i]; - if (nou) - all.push(literal); - else - all[literal] = true; - } - } else { - var m = Object.keys(matches); - if (nou) - all.push.apply(all, m); - else - m.forEach(function(m2) { - all[m2] = true; - }); - } - } - if (!nou) - all = Object.keys(all); - if (!self.nosort) - all = all.sort(alphasort); - if (self.mark) { - for (var i = 0;i < all.length; i++) { - all[i] = self._mark(all[i]); - } - if (self.nodir) { - all = all.filter(function(e) { - var notDir = !/\/$/.test(e); - var c = self.cache[e] || self.cache[makeAbs(self, e)]; - if (notDir && c) - notDir = c !== "DIR" && !Array.isArray(c); - return notDir; - }); - } - } - if (self.ignore.length) - all = all.filter(function(m2) { - return !isIgnored(self, m2); - }); - self.found = all; - }; - var mark = function(self, p) { - var abs = makeAbs(self, p); - var c = self.cache[abs]; - var m = p; - if (c) { - var isDir = c === "DIR" || Array.isArray(c); - var slash = p.slice(-1) === "/"; - if (isDir && !slash) - m += "/"; - else if (!isDir && slash) - m = m.slice(0, -1); - if (m !== p) { - var mabs = makeAbs(self, m); - self.statCache[mabs] = self.statCache[abs]; - self.cache[mabs] = self.cache[abs]; - } - } - return m; - }; - var makeAbs = function(self, f) { - var abs = f; - if (f.charAt(0) === "/") { - abs = path.join(self.root, f); - } else if (isAbsolute(f) || f === "") { - abs = f; - } else if (self.changedCwd) { - abs = path.resolve(self.cwd, f); - } else { - abs = path.resolve(f); - } - if (process.platform === "win32") - abs = abs.replace(/\\/g, "/"); - return abs; - }; - var isIgnored = function(self, path2) { - if (!self.ignore.length) - return false; - return self.ignore.some(function(item) { - return item.matcher.match(path2) || !!(item.gmatcher && item.gmatcher.match(path2)); - }); - }; - var childrenIgnored = function(self, path2) { - if (!self.ignore.length) - return false; - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path2)); - }); - }; - exports.setopts = setopts; - exports.ownProp = ownProp; - exports.makeAbs = makeAbs; - exports.finish = finish; - exports.mark = mark; - exports.isIgnored = isIgnored; - exports.childrenIgnored = childrenIgnored; - var fs = __require("fs"); - var path = __require("path"); - var minimatch = require_minimatch(); - var isAbsolute = require_path_is_absolute(); - var Minimatch = minimatch.Minimatch; -}); - -// node_modules/globs/node_modules/glob/sync.js -var require_sync7 = __commonJS((exports, module) => { - var globSync = function(pattern, options) { - if (typeof options === "function" || arguments.length === 3) - throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); - return new GlobSync(pattern, options).found; - }; - var GlobSync = function(pattern, options) { - if (!pattern) - throw new Error("must provide pattern"); - if (typeof options === "function" || arguments.length === 3) - throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options); - setopts(this, pattern, options); - if (this.noprocess) - return this; - var n = this.minimatch.set.length; - this.matches = new Array(n); - for (var i = 0;i < n; i++) { - this._process(this.minimatch.set[i], i, false); - } - this._finish(); - }; - module.exports = globSync; - globSync.GlobSync = GlobSync; - var rp = require_fs6(); - var minimatch = require_minimatch(); - var Minimatch = minimatch.Minimatch; - var Glob = require_glob().Glob; - var util = __require("util"); - var path = __require("path"); - var assert = __require("assert"); - var isAbsolute = require_path_is_absolute(); - var common = require_common3(); - var setopts = common.setopts; - var ownProp = common.ownProp; - var childrenIgnored = common.childrenIgnored; - var isIgnored = common.isIgnored; - GlobSync.prototype._finish = function() { - assert.ok(this instanceof GlobSync); - if (this.realpath) { - var self = this; - this.matches.forEach(function(matchset, index) { - var set = self.matches[index] = Object.create(null); - for (var p in matchset) { - try { - p = self._makeAbs(p); - var real = rp.realpathSync(p, self.realpathCache); - set[real] = true; - } catch (er) { - if (er.syscall === "stat") - set[self._makeAbs(p)] = true; - else - throw er; - } - } - }); - } - common.finish(this); - }; - GlobSync.prototype._process = function(pattern, index, inGlobStar) { - assert.ok(this instanceof GlobSync); - var n = 0; - while (typeof pattern[n] === "string") { - n++; - } - var prefix; - switch (n) { - case pattern.length: - this._processSimple(pattern.join("/"), index); - return; - case 0: - prefix = null; - break; - default: - prefix = pattern.slice(0, n).join("/"); - break; - } - var remain = pattern.slice(n); - var read; - if (prefix === null) - read = "."; - else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { - return typeof p === "string" ? p : "[*]"; - }).join("/"))) { - if (!prefix || !isAbsolute(prefix)) - prefix = "/" + prefix; - read = prefix; - } else - read = prefix; - var abs = this._makeAbs(read); - if (childrenIgnored(this, read)) - return; - var isGlobStar = remain[0] === minimatch.GLOBSTAR; - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar); - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar); - }; - GlobSync.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar); - if (!entries) - return; - var pn = remain[0]; - var negate = !!this.minimatch.negate; - var rawGlob = pn._glob; - var dotOk = this.dot || rawGlob.charAt(0) === "."; - var matchedEntries = []; - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (e.charAt(0) !== "." || dotOk) { - var m; - if (negate && !prefix) { - m = !e.match(pn); - } else { - m = e.match(pn); - } - if (m) - matchedEntries.push(e); - } - } - var len = matchedEntries.length; - if (len === 0) - return; - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - if (prefix) { - if (prefix.slice(-1) !== "/") - e = prefix + "/" + e; - else - e = prefix + e; - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e); - } - this._emitMatch(index, e); - } - return; - } - remain.shift(); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - var newPattern; - if (prefix) - newPattern = [prefix, e]; - else - newPattern = [e]; - this._process(newPattern.concat(remain), index, inGlobStar); - } - }; - GlobSync.prototype._emitMatch = function(index, e) { - if (isIgnored(this, e)) - return; - var abs = this._makeAbs(e); - if (this.mark) - e = this._mark(e); - if (this.absolute) { - e = abs; - } - if (this.matches[index][e]) - return; - if (this.nodir) { - var c = this.cache[abs]; - if (c === "DIR" || Array.isArray(c)) - return; - } - this.matches[index][e] = true; - if (this.stat) - this._stat(e); - }; - GlobSync.prototype._readdirInGlobStar = function(abs) { - if (this.follow) - return this._readdir(abs, false); - var entries; - var lstat; - var stat; - try { - lstat = this.fs.lstatSync(abs); - } catch (er) { - if (er.code === "ENOENT") { - return null; - } - } - var isSym = lstat && lstat.isSymbolicLink(); - this.symlinks[abs] = isSym; - if (!isSym && lstat && !lstat.isDirectory()) - this.cache[abs] = "FILE"; - else - entries = this._readdir(abs, false); - return entries; - }; - GlobSync.prototype._readdir = function(abs, inGlobStar) { - var entries; - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs); - if (ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (!c || c === "FILE") - return null; - if (Array.isArray(c)) - return c; - } - try { - return this._readdirEntries(abs, this.fs.readdirSync(abs)); - } catch (er) { - this._readdirError(abs, er); - return null; - } - }; - GlobSync.prototype._readdirEntries = function(abs, entries) { - if (!this.mark && !this.stat) { - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (abs === "/") - e = abs + e; - else - e = abs + "/" + e; - this.cache[e] = true; - } - } - this.cache[abs] = entries; - return entries; - }; - GlobSync.prototype._readdirError = function(f, er) { - switch (er.code) { - case "ENOTSUP": - case "ENOTDIR": - var abs = this._makeAbs(f); - this.cache[abs] = "FILE"; - if (abs === this.cwdAbs) { - var error2 = new Error(er.code + " invalid cwd " + this.cwd); - error2.path = this.cwd; - error2.code = er.code; - throw error2; - } - break; - case "ENOENT": - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[this._makeAbs(f)] = false; - break; - default: - this.cache[this._makeAbs(f)] = false; - if (this.strict) - throw er; - if (!this.silent) - console.error("glob error", er); - break; - } - }; - GlobSync.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar); - if (!entries) - return; - var remainWithoutGlobStar = remain.slice(1); - var gspref = prefix ? [prefix] : []; - var noGlobStar = gspref.concat(remainWithoutGlobStar); - this._process(noGlobStar, index, false); - var len = entries.length; - var isSym = this.symlinks[abs]; - if (isSym && inGlobStar) - return; - for (var i = 0;i < len; i++) { - var e = entries[i]; - if (e.charAt(0) === "." && !this.dot) - continue; - var instead = gspref.concat(entries[i], remainWithoutGlobStar); - this._process(instead, index, true); - var below = gspref.concat(entries[i], remain); - this._process(below, index, true); - } - }; - GlobSync.prototype._processSimple = function(prefix, index) { - var exists = this._stat(prefix); - if (!this.matches[index]) - this.matches[index] = Object.create(null); - if (!exists) - return; - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix); - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix); - } else { - prefix = path.resolve(this.root, prefix); - if (trail) - prefix += "/"; - } - } - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/"); - this._emitMatch(index, prefix); - }; - GlobSync.prototype._stat = function(f) { - var abs = this._makeAbs(f); - var needDir = f.slice(-1) === "/"; - if (f.length > this.maxLength) - return false; - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (Array.isArray(c)) - c = "DIR"; - if (!needDir || c === "DIR") - return c; - if (needDir && c === "FILE") - return false; - } - var exists; - var stat = this.statCache[abs]; - if (!stat) { - var lstat; - try { - lstat = this.fs.lstatSync(abs); - } catch (er) { - if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { - this.statCache[abs] = false; - return false; - } - } - if (lstat && lstat.isSymbolicLink()) { - try { - stat = this.fs.statSync(abs); - } catch (er) { - stat = lstat; - } - } else { - stat = lstat; - } - } - this.statCache[abs] = stat; - var c = true; - if (stat) - c = stat.isDirectory() ? "DIR" : "FILE"; - this.cache[abs] = this.cache[abs] || c; - if (needDir && c === "FILE") - return false; - return c; - }; - GlobSync.prototype._mark = function(p) { - return common.mark(this, p); - }; - GlobSync.prototype._makeAbs = function(f) { - return common.makeAbs(this, f); - }; -}); - -// node_modules/wrappy/wrappy.js -var require_wrappy = __commonJS((exports, module) => { - var wrappy = function(fn, cb) { - if (fn && cb) - return wrappy(fn)(cb); - if (typeof fn !== "function") - throw new TypeError("need wrapper function"); - Object.keys(fn).forEach(function(k) { - wrapper[k] = fn[k]; - }); - return wrapper; - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0;i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb2 = args[args.length - 1]; - if (typeof ret === "function" && ret !== cb2) { - Object.keys(cb2).forEach(function(k) { - ret[k] = cb2[k]; - }); - } - return ret; - } - }; - module.exports = wrappy; -}); - -// node_modules/once/once.js -var require_once = __commonJS((exports, module) => { - var once = function(fn) { - var f = function() { - if (f.called) - return f.value; - f.called = true; - return f.value = fn.apply(this, arguments); - }; - f.called = false; - return f; - }; - var onceStrict = function(fn) { - var f = function() { - if (f.called) - throw new Error(f.onceError); - f.called = true; - return f.value = fn.apply(this, arguments); - }; - var name = fn.name || "Function wrapped with `once`"; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f; - }; - var wrappy = require_wrappy(); - module.exports = wrappy(once); - module.exports.strict = wrappy(onceStrict); - once.proto = once(function() { - Object.defineProperty(Function.prototype, "once", { - value: function() { - return once(this); - }, - configurable: true - }); - Object.defineProperty(Function.prototype, "onceStrict", { - value: function() { - return onceStrict(this); - }, - configurable: true - }); - }); -}); - -// node_modules/inflight/inflight.js -var require_inflight = __commonJS((exports, module) => { - var inflight = function(key, cb) { - if (reqs[key]) { - reqs[key].push(cb); - return null; - } else { - reqs[key] = [cb]; - return makeres(key); - } - }; - var makeres = function(key) { - return once(function RES() { - var cbs = reqs[key]; - var len = cbs.length; - var args = slice(arguments); - try { - for (var i = 0;i < len; i++) { - cbs[i].apply(null, args); - } - } finally { - if (cbs.length > len) { - cbs.splice(0, len); - process.nextTick(function() { - RES.apply(null, args); - }); - } else { - delete reqs[key]; - } - } - }); - }; - var slice = function(args) { - var length = args.length; - var array = []; - for (var i = 0;i < length; i++) - array[i] = args[i]; - return array; - }; - var wrappy = require_wrappy(); - var reqs = Object.create(null); - var once = require_once(); - module.exports = wrappy(inflight); -}); - -// node_modules/globs/node_modules/glob/glob.js -var require_glob = __commonJS((exports, module) => { - var glob = function(pattern, options, cb) { - if (typeof options === "function") - cb = options, options = {}; - if (!options) - options = {}; - if (options.sync) { - if (cb) - throw new TypeError("callback provided to sync glob"); - return globSync(pattern, options); - } - return new Glob(pattern, options, cb); - }; - var extend = function(origin, add) { - if (add === null || typeof add !== "object") { - return origin; - } - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; - }; - var Glob = function(pattern, options, cb) { - if (typeof options === "function") { - cb = options; - options = null; - } - if (options && options.sync) { - if (cb) - throw new TypeError("callback provided to sync glob"); - return new GlobSync(pattern, options); - } - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb); - setopts(this, pattern, options); - this._didRealPath = false; - var n = this.minimatch.set.length; - this.matches = new Array(n); - if (typeof cb === "function") { - cb = once(cb); - this.on("error", cb); - this.on("end", function(matches) { - cb(null, matches); - }); - } - var self = this; - this._processing = 0; - this._emitQueue = []; - this._processQueue = []; - this.paused = false; - if (this.noprocess) - return this; - if (n === 0) - return done(); - var sync2 = true; - for (var i = 0;i < n; i++) { - this._process(this.minimatch.set[i], i, false, done); - } - sync2 = false; - function done() { - --self._processing; - if (self._processing <= 0) { - if (sync2) { - process.nextTick(function() { - self._finish(); - }); - } else { - self._finish(); - } - } - } - }; - var readdirCb = function(self, abs, cb) { - return function(er, entries) { - if (er) - self._readdirError(abs, er, cb); - else - self._readdirEntries(abs, entries, cb); - }; - }; - module.exports = glob; - var rp = require_fs6(); - var minimatch = require_minimatch(); - var Minimatch = minimatch.Minimatch; - var inherits = require_inherits(); - var EE = __require("events").EventEmitter; - var path = __require("path"); - var assert = __require("assert"); - var isAbsolute = require_path_is_absolute(); - var globSync = require_sync7(); - var common = require_common3(); - var setopts = common.setopts; - var ownProp = common.ownProp; - var inflight = require_inflight(); - var util = __require("util"); - var childrenIgnored = common.childrenIgnored; - var isIgnored = common.isIgnored; - var once = require_once(); - glob.sync = globSync; - var GlobSync = glob.GlobSync = globSync.GlobSync; - glob.glob = glob; - glob.hasMagic = function(pattern, options_) { - var options = extend({}, options_); - options.noprocess = true; - var g = new Glob(pattern, options); - var set = g.minimatch.set; - if (!pattern) - return false; - if (set.length > 1) - return true; - for (var j = 0;j < set[0].length; j++) { - if (typeof set[0][j] !== "string") - return true; - } - return false; - }; - glob.Glob = Glob; - inherits(Glob, EE); - Glob.prototype._finish = function() { - assert(this instanceof Glob); - if (this.aborted) - return; - if (this.realpath && !this._didRealpath) - return this._realpath(); - common.finish(this); - this.emit("end", this.found); - }; - Glob.prototype._realpath = function() { - if (this._didRealpath) - return; - this._didRealpath = true; - var n = this.matches.length; - if (n === 0) - return this._finish(); - var self = this; - for (var i = 0;i < this.matches.length; i++) - this._realpathSet(i, next); - function next() { - if (--n === 0) - self._finish(); - } - }; - Glob.prototype._realpathSet = function(index, cb) { - var matchset = this.matches[index]; - if (!matchset) - return cb(); - var found = Object.keys(matchset); - var self = this; - var n = found.length; - if (n === 0) - return cb(); - var set = this.matches[index] = Object.create(null); - found.forEach(function(p, i) { - p = self._makeAbs(p); - rp.realpath(p, self.realpathCache, function(er, real) { - if (!er) - set[real] = true; - else if (er.syscall === "stat") - set[p] = true; - else - self.emit("error", er); - if (--n === 0) { - self.matches[index] = set; - cb(); - } - }); - }); - }; - Glob.prototype._mark = function(p) { - return common.mark(this, p); - }; - Glob.prototype._makeAbs = function(f) { - return common.makeAbs(this, f); - }; - Glob.prototype.abort = function() { - this.aborted = true; - this.emit("abort"); - }; - Glob.prototype.pause = function() { - if (!this.paused) { - this.paused = true; - this.emit("pause"); - } - }; - Glob.prototype.resume = function() { - if (this.paused) { - this.emit("resume"); - this.paused = false; - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0); - this._emitQueue.length = 0; - for (var i = 0;i < eq.length; i++) { - var e = eq[i]; - this._emitMatch(e[0], e[1]); - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0); - this._processQueue.length = 0; - for (var i = 0;i < pq.length; i++) { - var p = pq[i]; - this._processing--; - this._process(p[0], p[1], p[2], p[3]); - } - } - } - }; - Glob.prototype._process = function(pattern, index, inGlobStar, cb) { - assert(this instanceof Glob); - assert(typeof cb === "function"); - if (this.aborted) - return; - this._processing++; - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]); - return; - } - var n = 0; - while (typeof pattern[n] === "string") { - n++; - } - var prefix; - switch (n) { - case pattern.length: - this._processSimple(pattern.join("/"), index, cb); - return; - case 0: - prefix = null; - break; - default: - prefix = pattern.slice(0, n).join("/"); - break; - } - var remain = pattern.slice(n); - var read; - if (prefix === null) - read = "."; - else if (isAbsolute(prefix) || isAbsolute(pattern.map(function(p) { - return typeof p === "string" ? p : "[*]"; - }).join("/"))) { - if (!prefix || !isAbsolute(prefix)) - prefix = "/" + prefix; - read = prefix; - } else - read = prefix; - var abs = this._makeAbs(read); - if (childrenIgnored(this, read)) - return cb(); - var isGlobStar = remain[0] === minimatch.GLOBSTAR; - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb); - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb); - }; - Glob.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this; - this._readdir(abs, inGlobStar, function(er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb); - }); - }; - Glob.prototype._processReaddir2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { - if (!entries) - return cb(); - var pn = remain[0]; - var negate = !!this.minimatch.negate; - var rawGlob = pn._glob; - var dotOk = this.dot || rawGlob.charAt(0) === "."; - var matchedEntries = []; - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (e.charAt(0) !== "." || dotOk) { - var m; - if (negate && !prefix) { - m = !e.match(pn); - } else { - m = e.match(pn); - } - if (m) - matchedEntries.push(e); - } - } - var len = matchedEntries.length; - if (len === 0) - return cb(); - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - if (prefix) { - if (prefix !== "/") - e = prefix + "/" + e; - else - e = prefix + e; - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e); - } - this._emitMatch(index, e); - } - return cb(); - } - remain.shift(); - for (var i = 0;i < len; i++) { - var e = matchedEntries[i]; - var newPattern; - if (prefix) { - if (prefix !== "/") - e = prefix + "/" + e; - else - e = prefix + e; - } - this._process([e].concat(remain), index, inGlobStar, cb); - } - cb(); - }; - Glob.prototype._emitMatch = function(index, e) { - if (this.aborted) - return; - if (isIgnored(this, e)) - return; - if (this.paused) { - this._emitQueue.push([index, e]); - return; - } - var abs = isAbsolute(e) ? e : this._makeAbs(e); - if (this.mark) - e = this._mark(e); - if (this.absolute) - e = abs; - if (this.matches[index][e]) - return; - if (this.nodir) { - var c = this.cache[abs]; - if (c === "DIR" || Array.isArray(c)) - return; - } - this.matches[index][e] = true; - var st = this.statCache[abs]; - if (st) - this.emit("stat", e, st); - this.emit("match", e); - }; - Glob.prototype._readdirInGlobStar = function(abs, cb) { - if (this.aborted) - return; - if (this.follow) - return this._readdir(abs, false, cb); - var lstatkey = "lstat\0" + abs; - var self = this; - var lstatcb = inflight(lstatkey, lstatcb_); - if (lstatcb) - self.fs.lstat(abs, lstatcb); - function lstatcb_(er, lstat) { - if (er && er.code === "ENOENT") - return cb(); - var isSym = lstat && lstat.isSymbolicLink(); - self.symlinks[abs] = isSym; - if (!isSym && lstat && !lstat.isDirectory()) { - self.cache[abs] = "FILE"; - cb(); - } else - self._readdir(abs, false, cb); - } - }; - Glob.prototype._readdir = function(abs, inGlobStar, cb) { - if (this.aborted) - return; - cb = inflight("readdir\0" + abs + "\0" + inGlobStar, cb); - if (!cb) - return; - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb); - if (ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (!c || c === "FILE") - return cb(); - if (Array.isArray(c)) - return cb(null, c); - } - var self = this; - self.fs.readdir(abs, readdirCb(this, abs, cb)); - }; - Glob.prototype._readdirEntries = function(abs, entries, cb) { - if (this.aborted) - return; - if (!this.mark && !this.stat) { - for (var i = 0;i < entries.length; i++) { - var e = entries[i]; - if (abs === "/") - e = abs + e; - else - e = abs + "/" + e; - this.cache[e] = true; - } - } - this.cache[abs] = entries; - return cb(null, entries); - }; - Glob.prototype._readdirError = function(f, er, cb) { - if (this.aborted) - return; - switch (er.code) { - case "ENOTSUP": - case "ENOTDIR": - var abs = this._makeAbs(f); - this.cache[abs] = "FILE"; - if (abs === this.cwdAbs) { - var error2 = new Error(er.code + " invalid cwd " + this.cwd); - error2.path = this.cwd; - error2.code = er.code; - this.emit("error", error2); - this.abort(); - } - break; - case "ENOENT": - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[this._makeAbs(f)] = false; - break; - default: - this.cache[this._makeAbs(f)] = false; - if (this.strict) { - this.emit("error", er); - this.abort(); - } - if (!this.silent) - console.error("glob error", er); - break; - } - return cb(); - }; - Glob.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this; - this._readdir(abs, inGlobStar, function(er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb); - }); - }; - Glob.prototype._processGlobStar2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { - if (!entries) - return cb(); - var remainWithoutGlobStar = remain.slice(1); - var gspref = prefix ? [prefix] : []; - var noGlobStar = gspref.concat(remainWithoutGlobStar); - this._process(noGlobStar, index, false, cb); - var isSym = this.symlinks[abs]; - var len = entries.length; - if (isSym && inGlobStar) - return cb(); - for (var i = 0;i < len; i++) { - var e = entries[i]; - if (e.charAt(0) === "." && !this.dot) - continue; - var instead = gspref.concat(entries[i], remainWithoutGlobStar); - this._process(instead, index, true, cb); - var below = gspref.concat(entries[i], remain); - this._process(below, index, true, cb); - } - cb(); - }; - Glob.prototype._processSimple = function(prefix, index, cb) { - var self = this; - this._stat(prefix, function(er, exists) { - self._processSimple2(prefix, index, er, exists, cb); - }); - }; - Glob.prototype._processSimple2 = function(prefix, index, er, exists, cb) { - if (!this.matches[index]) - this.matches[index] = Object.create(null); - if (!exists) - return cb(); - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix); - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix); - } else { - prefix = path.resolve(this.root, prefix); - if (trail) - prefix += "/"; - } - } - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/"); - this._emitMatch(index, prefix); - cb(); - }; - Glob.prototype._stat = function(f, cb) { - var abs = this._makeAbs(f); - var needDir = f.slice(-1) === "/"; - if (f.length > this.maxLength) - return cb(); - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs]; - if (Array.isArray(c)) - c = "DIR"; - if (!needDir || c === "DIR") - return cb(null, c); - if (needDir && c === "FILE") - return cb(); - } - var exists; - var stat = this.statCache[abs]; - if (stat !== undefined) { - if (stat === false) - return cb(null, stat); - else { - var type = stat.isDirectory() ? "DIR" : "FILE"; - if (needDir && type === "FILE") - return cb(); - else - return cb(null, type, stat); - } - } - var self = this; - var statcb = inflight("stat\0" + abs, lstatcb_); - if (statcb) - self.fs.lstat(abs, statcb); - function lstatcb_(er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - return self.fs.stat(abs, function(er2, stat2) { - if (er2) - self._stat2(f, abs, null, lstat, cb); - else - self._stat2(f, abs, er2, stat2, cb); - }); - } else { - self._stat2(f, abs, er, lstat, cb); - } - } - }; - Glob.prototype._stat2 = function(f, abs, er, stat, cb) { - if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { - this.statCache[abs] = false; - return cb(); - } - var needDir = f.slice(-1) === "/"; - this.statCache[abs] = stat; - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) - return cb(null, false, stat); - var c = true; - if (stat) - c = stat.isDirectory() ? "DIR" : "FILE"; - this.cache[abs] = this.cache[abs] || c; - if (needDir && c === "FILE") - return cb(); - return cb(null, c, stat); - }; -}); - -// node_modules/globs/index.js -var require_globs = __commonJS((exports, module) => { - var glob = require_glob(); - var globs = module.exports = function(patterns, options, callback) { - var pending, groups = []; - if (!Array.isArray(patterns)) { - patterns = [patterns]; - } - pending = patterns.length; - if (typeof options === "function") { - callback = options; - options = {}; - } - if (!pending) { - return process.nextTick(function() { - callback(null, []); - }); - } - patterns.forEach(function(pattern) { - glob(pattern, options, function(err, files) { - if (err) { - return callback(err); - } - groups = groups.concat(files); - pending -= 1; - if (!pending) { - return callback(null, groups); - } - }); - }); - }; - globs.sync = function(patterns, options) { - options = options || {}; - var groups = [], index, length; - if (!Array.isArray(patterns)) { - patterns = [patterns]; - } - for (index = 0, length = patterns.length;index < length; index++) { - groups = groups.concat(glob.sync(patterns[index], options)); - } - return groups; - }; -}); - -// node_modules/yargs/lib/platform-shims/esm.mjs -import {notStrictEqual, strictEqual} from "assert"; - -// node_modules/cliui/build/lib/index.js -var addBorder = function(col, ts, style) { - if (col.border) { - if (/[.']-+[.']/.test(ts)) { - return ""; - } - if (ts.trim().length !== 0) { - return style; - } - return " "; - } - return ""; -}; -var _minWidth = function(col) { - const padding = col.padding || []; - const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); - if (col.border) { - return minWidth + 4; - } - return minWidth; -}; -var getWindowWidth = function() { - if (typeof process === "object" && process.stdout && process.stdout.columns) { - return process.stdout.columns; - } - return 80; -}; -var alignRight = function(str, width) { - str = str.trim(); - const strWidth = mixin.stringWidth(str); - if (strWidth < width) { - return " ".repeat(width - strWidth) + str; - } - return str; -}; -var alignCenter = function(str, width) { - str = str.trim(); - const strWidth = mixin.stringWidth(str); - if (strWidth >= width) { - return str; - } - return " ".repeat(width - strWidth >> 1) + str; -}; -function cliui(opts, _mixin) { - mixin = _mixin; - return new UI({ - width: (opts === null || opts === undefined ? undefined : opts.width) || getWindowWidth(), - wrap: opts === null || opts === undefined ? undefined : opts.wrap - }); -} -var align = { - right: alignRight, - center: alignCenter -}; -var top = 0; -var right = 1; -var bottom = 2; -var left = 3; - -class UI { - constructor(opts) { - var _a; - this.width = opts.width; - this.wrap = (_a = opts.wrap) !== null && _a !== undefined ? _a : true; - this.rows = []; - } - span(...args) { - const cols = this.div(...args); - cols.span = true; - } - resetOutput() { - this.rows = []; - } - div(...args) { - if (args.length === 0) { - this.div(""); - } - if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === "string") { - return this.applyLayoutDSL(args[0]); - } - const cols = args.map((arg) => { - if (typeof arg === "string") { - return this.colFromString(arg); - } - return arg; - }); - this.rows.push(cols); - return cols; - } - shouldApplyLayoutDSL(...args) { - return args.length === 1 && typeof args[0] === "string" && /[\t\n]/.test(args[0]); - } - applyLayoutDSL(str) { - const rows = str.split("\n").map((row) => row.split("\t")); - let leftColumnWidth = 0; - rows.forEach((columns) => { - if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { - leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); - } - }); - rows.forEach((columns) => { - this.div(...columns.map((r, i) => { - return { - text: r.trim(), - padding: this.measurePadding(r), - width: i === 0 && columns.length > 1 ? leftColumnWidth : undefined - }; - })); - }); - return this.rows[this.rows.length - 1]; - } - colFromString(text) { - return { - text, - padding: this.measurePadding(text) - }; - } - measurePadding(str) { - const noAnsi = mixin.stripAnsi(str); - return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; - } - toString() { - const lines = []; - this.rows.forEach((row) => { - this.rowToString(row, lines); - }); - return lines.filter((line) => !line.hidden).map((line) => line.text).join("\n"); - } - rowToString(row, lines) { - this.rasterize(row).forEach((rrow, r) => { - let str = ""; - rrow.forEach((col, c) => { - const { width } = row[c]; - const wrapWidth = this.negatePadding(row[c]); - let ts = col; - if (wrapWidth > mixin.stringWidth(col)) { - ts += " ".repeat(wrapWidth - mixin.stringWidth(col)); - } - if (row[c].align && row[c].align !== "left" && this.wrap) { - const fn = align[row[c].align]; - ts = fn(ts, wrapWidth); - if (mixin.stringWidth(ts) < wrapWidth) { - ts += " ".repeat((width || 0) - mixin.stringWidth(ts) - 1); - } - } - const padding = row[c].padding || [0, 0, 0, 0]; - if (padding[left]) { - str += " ".repeat(padding[left]); - } - str += addBorder(row[c], ts, "| "); - str += ts; - str += addBorder(row[c], ts, " |"); - if (padding[right]) { - str += " ".repeat(padding[right]); - } - if (r === 0 && lines.length > 0) { - str = this.renderInline(str, lines[lines.length - 1]); - } - }); - lines.push({ - text: str.replace(/ +$/, ""), - span: row.span - }); - }); - return lines; - } - renderInline(source, previousLine) { - const match = source.match(/^ */); - const leadingWhitespace = match ? match[0].length : 0; - const target = previousLine.text; - const targetTextWidth = mixin.stringWidth(target.trimRight()); - if (!previousLine.span) { - return source; - } - if (!this.wrap) { - previousLine.hidden = true; - return target + source; - } - if (leadingWhitespace < targetTextWidth) { - return source; - } - previousLine.hidden = true; - return target.trimRight() + " ".repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); - } - rasterize(row) { - const rrows = []; - const widths = this.columnWidths(row); - let wrapped; - row.forEach((col, c) => { - col.width = widths[c]; - if (this.wrap) { - wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split("\n"); - } else { - wrapped = col.text.split("\n"); - } - if (col.border) { - wrapped.unshift("." + "-".repeat(this.negatePadding(col) + 2) + "."); - wrapped.push("'" + "-".repeat(this.negatePadding(col) + 2) + "'"); - } - if (col.padding) { - wrapped.unshift(...new Array(col.padding[top] || 0).fill("")); - wrapped.push(...new Array(col.padding[bottom] || 0).fill("")); - } - wrapped.forEach((str, r) => { - if (!rrows[r]) { - rrows.push([]); - } - const rrow = rrows[r]; - for (let i = 0;i < c; i++) { - if (rrow[i] === undefined) { - rrow.push(""); - } - } - rrow.push(str); - }); - }); - return rrows; - } - negatePadding(col) { - let wrapWidth = col.width || 0; - if (col.padding) { - wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); - } - if (col.border) { - wrapWidth -= 4; - } - return wrapWidth; - } - columnWidths(row) { - if (!this.wrap) { - return row.map((col) => { - return col.width || mixin.stringWidth(col.text); - }); - } - let unset = row.length; - let remainingWidth = this.width; - const widths = row.map((col) => { - if (col.width) { - unset--; - remainingWidth -= col.width; - return col.width; - } - return; - }); - const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; - return widths.map((w, i) => { - if (w === undefined) { - return Math.max(unsetWidth, _minWidth(row[i])); - } - return w; - }); - } -} -var mixin; - -// node_modules/cliui/build/lib/string-utils.js -function stripAnsi(str) { - return str.replace(ansi, ""); -} -function wrap(str, width) { - const [start, end] = str.match(ansi) || ["", ""]; - str = stripAnsi(str); - let wrapped = ""; - for (let i = 0;i < str.length; i++) { - if (i !== 0 && i % width === 0) { - wrapped += "\n"; - } - wrapped += str.charAt(i); - } - if (start && end) { - wrapped = `${start}${wrapped}${end}`; - } - return wrapped; -} -var ansi = new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|" + "\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g"); - -// node_modules/cliui/index.mjs -function ui(opts) { - return cliui(opts, { - stringWidth: (str) => { - return [...str].length; - }, - stripAnsi, - wrap - }); -} - -// node_modules/escalade/sync/index.mjs -import {dirname, resolve} from "path"; -import {readdirSync, statSync} from "fs"; -function sync_default(start, callback) { - let dir = resolve(".", start); - let tmp, stats = statSync(dir); - if (!stats.isDirectory()) { - dir = dirname(dir); - } - while (true) { - tmp = callback(dir, readdirSync(dir)); - if (tmp) - return resolve(dir, tmp); - dir = dirname(tmp = dir); - if (tmp === dir) - break; - } -} - -// node_modules/yargs/lib/platform-shims/esm.mjs -import {inspect} from "util"; -import {readFileSync as readFileSync3} from "fs"; -import {fileURLToPath} from "url"; - -// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js -import {format} from "util"; -import {normalize, resolve as resolve2} from "path"; - -// node_modules/yargs/node_modules/yargs-parser/build/lib/string-utils.js -function camelCase(str) { - const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); - if (!isCamelCase) { - str = str.toLowerCase(); - } - if (str.indexOf("-") === -1 && str.indexOf("_") === -1) { - return str; - } else { - let camelcase = ""; - let nextChrUpper = false; - const leadingHyphens = str.match(/^-+/); - for (let i = leadingHyphens ? leadingHyphens[0].length : 0;i < str.length; i++) { - let chr = str.charAt(i); - if (nextChrUpper) { - nextChrUpper = false; - chr = chr.toUpperCase(); - } - if (i !== 0 && (chr === "-" || chr === "_")) { - nextChrUpper = true; - } else if (chr !== "-" && chr !== "_") { - camelcase += chr; - } - } - return camelcase; - } -} -function decamelize(str, joinString) { - const lowercase = str.toLowerCase(); - joinString = joinString || "-"; - let notCamelcase = ""; - for (let i = 0;i < str.length; i++) { - const chrLower = lowercase.charAt(i); - const chrString = str.charAt(i); - if (chrLower !== chrString && i > 0) { - notCamelcase += `${joinString}${lowercase.charAt(i)}`; - } else { - notCamelcase += chrString; - } - } - return notCamelcase; -} -function looksLikeNumber(x) { - if (x === null || x === undefined) - return false; - if (typeof x === "number") - return true; - if (/^0x[0-9a-f]+$/i.test(x)) - return true; - if (/^0[^.]/.test(x)) - return false; - return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} - -// node_modules/yargs/node_modules/yargs-parser/build/lib/tokenize-arg-string.js -function tokenizeArgString(argString) { - if (Array.isArray(argString)) { - return argString.map((e) => typeof e !== "string" ? e + "" : e); - } - argString = argString.trim(); - let i = 0; - let prevC = null; - let c = null; - let opening = null; - const args = []; - for (let ii = 0;ii < argString.length; ii++) { - prevC = c; - c = argString.charAt(ii); - if (c === " " && !opening) { - if (!(prevC === " ")) { - i++; - } - continue; - } - if (c === opening) { - opening = null; - } else if ((c === "'" || c === '"') && !opening) { - opening = c; - } - if (!args[i]) - args[i] = ""; - args[i] += c; - } - return args; -} - -// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser-types.js -var DefaultValuesForTypeKey; -(function(DefaultValuesForTypeKey2) { - DefaultValuesForTypeKey2["BOOLEAN"] = "boolean"; - DefaultValuesForTypeKey2["STRING"] = "string"; - DefaultValuesForTypeKey2["NUMBER"] = "number"; - DefaultValuesForTypeKey2["ARRAY"] = "array"; -})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); - -// node_modules/yargs/node_modules/yargs-parser/build/lib/yargs-parser.js -var combineAliases = function(aliases) { - const aliasArrays = []; - const combined = Object.create(null); - let change = true; - Object.keys(aliases).forEach(function(key) { - aliasArrays.push([].concat(aliases[key], key)); - }); - while (change) { - change = false; - for (let i = 0;i < aliasArrays.length; i++) { - for (let ii = i + 1;ii < aliasArrays.length; ii++) { - const intersect = aliasArrays[i].filter(function(v) { - return aliasArrays[ii].indexOf(v) !== -1; - }); - if (intersect.length) { - aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); - aliasArrays.splice(ii, 1); - change = true; - break; - } - } - } - } - aliasArrays.forEach(function(aliasArray) { - aliasArray = aliasArray.filter(function(v, i, self) { - return self.indexOf(v) === i; - }); - const lastAlias = aliasArray.pop(); - if (lastAlias !== undefined && typeof lastAlias === "string") { - combined[lastAlias] = aliasArray; - } - }); - return combined; -}; -var increment = function(orig) { - return orig !== undefined ? orig + 1 : 1; -}; -var sanitizeKey = function(key) { - if (key === "__proto__") - return "___proto___"; - return key; -}; -var stripQuotes = function(val) { - return typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0] ? val.substring(1, val.length - 1) : val; -}; -var mixin2; - -class YargsParser { - constructor(_mixin) { - mixin2 = _mixin; - } - parse(argsInput, options) { - const opts = Object.assign({ - alias: undefined, - array: undefined, - boolean: undefined, - config: undefined, - configObjects: undefined, - configuration: undefined, - coerce: undefined, - count: undefined, - default: undefined, - envPrefix: undefined, - narg: undefined, - normalize: undefined, - string: undefined, - number: undefined, - __: undefined, - key: undefined - }, options); - const args = tokenizeArgString(argsInput); - const inputIsString = typeof argsInput === "string"; - const aliases = combineAliases(Object.assign(Object.create(null), opts.alias)); - const configuration = Object.assign({ - "boolean-negation": true, - "camel-case-expansion": true, - "combine-arrays": false, - "dot-notation": true, - "duplicate-arguments-array": true, - "flatten-duplicate-arrays": true, - "greedy-arrays": true, - "halt-at-non-option": false, - "nargs-eats-options": false, - "negation-prefix": "no-", - "parse-numbers": true, - "parse-positional-numbers": true, - "populate--": false, - "set-placeholder-key": false, - "short-option-groups": true, - "strip-aliased": false, - "strip-dashed": false, - "unknown-options-as-args": false - }, opts.configuration); - const defaults = Object.assign(Object.create(null), opts.default); - const configObjects = opts.configObjects || []; - const envPrefix = opts.envPrefix; - const notFlagsOption = configuration["populate--"]; - const notFlagsArgv = notFlagsOption ? "--" : "_"; - const newAliases = Object.create(null); - const defaulted = Object.create(null); - const __ = opts.__ || mixin2.format; - const flags = { - aliases: Object.create(null), - arrays: Object.create(null), - bools: Object.create(null), - strings: Object.create(null), - numbers: Object.create(null), - counts: Object.create(null), - normalize: Object.create(null), - configs: Object.create(null), - nargs: Object.create(null), - coercions: Object.create(null), - keys: [] - }; - const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; - const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)"); - [].concat(opts.array || []).filter(Boolean).forEach(function(opt) { - const key = typeof opt === "object" ? opt.key : opt; - const assignment = Object.keys(opt).map(function(key2) { - const arrayFlagKeys = { - boolean: "bools", - string: "strings", - number: "numbers" - }; - return arrayFlagKeys[key2]; - }).filter(Boolean).pop(); - if (assignment) { - flags[assignment][key] = true; - } - flags.arrays[key] = true; - flags.keys.push(key); - }); - [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) { - flags.bools[key] = true; - flags.keys.push(key); - }); - [].concat(opts.string || []).filter(Boolean).forEach(function(key) { - flags.strings[key] = true; - flags.keys.push(key); - }); - [].concat(opts.number || []).filter(Boolean).forEach(function(key) { - flags.numbers[key] = true; - flags.keys.push(key); - }); - [].concat(opts.count || []).filter(Boolean).forEach(function(key) { - flags.counts[key] = true; - flags.keys.push(key); - }); - [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) { - flags.normalize[key] = true; - flags.keys.push(key); - }); - if (typeof opts.narg === "object") { - Object.entries(opts.narg).forEach(([key, value]) => { - if (typeof value === "number") { - flags.nargs[key] = value; - flags.keys.push(key); - } - }); - } - if (typeof opts.coerce === "object") { - Object.entries(opts.coerce).forEach(([key, value]) => { - if (typeof value === "function") { - flags.coercions[key] = value; - flags.keys.push(key); - } - }); - } - if (typeof opts.config !== "undefined") { - if (Array.isArray(opts.config) || typeof opts.config === "string") { - [].concat(opts.config).filter(Boolean).forEach(function(key) { - flags.configs[key] = true; - }); - } else if (typeof opts.config === "object") { - Object.entries(opts.config).forEach(([key, value]) => { - if (typeof value === "boolean" || typeof value === "function") { - flags.configs[key] = value; - } - }); - } - } - extendAliases(opts.key, aliases, opts.default, flags.arrays); - Object.keys(defaults).forEach(function(key) { - (flags.aliases[key] || []).forEach(function(alias) { - defaults[alias] = defaults[key]; - }); - }); - let error = null; - checkConfiguration(); - let notFlags = []; - const argv = Object.assign(Object.create(null), { _: [] }); - const argvReturn = {}; - for (let i = 0;i < args.length; i++) { - const arg = args[i]; - const truncatedArg = arg.replace(/^-{3,}/, "---"); - let broken; - let key; - let letters; - let m; - let next; - let value; - if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) { - pushPositional(arg); - } else if (truncatedArg.match(/^---+(=|$)/)) { - pushPositional(arg); - continue; - } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) { - m = arg.match(/^--?([^=]+)=([\s\S]*)$/); - if (m !== null && Array.isArray(m) && m.length >= 3) { - if (checkAllAliases(m[1], flags.arrays)) { - i = eatArray(i, m[1], args, m[2]); - } else if (checkAllAliases(m[1], flags.nargs) !== false) { - i = eatNargs(i, m[1], args, m[2]); - } else { - setArg(m[1], m[2], true); - } - } - } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) { - m = arg.match(negatedBoolean); - if (m !== null && Array.isArray(m) && m.length >= 2) { - key = m[1]; - setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); - } - } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) { - m = arg.match(/^--?(.+)/); - if (m !== null && Array.isArray(m) && m.length >= 2) { - key = m[1]; - if (checkAllAliases(key, flags.arrays)) { - i = eatArray(i, key, args); - } else if (checkAllAliases(key, flags.nargs) !== false) { - i = eatNargs(i, key, args); - } else { - next = args[i + 1]; - if (next !== undefined && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { - setArg(key, next); - i++; - } else if (/^(true|false)$/.test(next)) { - setArg(key, next); - i++; - } else { - setArg(key, defaultValue(key)); - } - } - } - } else if (arg.match(/^-.\..+=/)) { - m = arg.match(/^-([^=]+)=([\s\S]*)$/); - if (m !== null && Array.isArray(m) && m.length >= 3) { - setArg(m[1], m[2]); - } - } else if (arg.match(/^-.\..+/) && !arg.match(negative)) { - next = args[i + 1]; - m = arg.match(/^-(.\..+)/); - if (m !== null && Array.isArray(m) && m.length >= 2) { - key = m[1]; - if (next !== undefined && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { - setArg(key, next); - i++; - } else { - setArg(key, defaultValue(key)); - } - } - } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { - letters = arg.slice(1, -1).split(""); - broken = false; - for (let j = 0;j < letters.length; j++) { - next = arg.slice(j + 2); - if (letters[j + 1] && letters[j + 1] === "=") { - value = arg.slice(j + 3); - key = letters[j]; - if (checkAllAliases(key, flags.arrays)) { - i = eatArray(i, key, args, value); - } else if (checkAllAliases(key, flags.nargs) !== false) { - i = eatNargs(i, key, args, value); - } else { - setArg(key, value); - } - broken = true; - break; - } - if (next === "-") { - setArg(letters[j], next); - continue; - } - if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) { - setArg(letters[j], next); - broken = true; - break; - } - if (letters[j + 1] && letters[j + 1].match(/\W/)) { - setArg(letters[j], next); - broken = true; - break; - } else { - setArg(letters[j], defaultValue(letters[j])); - } - } - key = arg.slice(-1)[0]; - if (!broken && key !== "-") { - if (checkAllAliases(key, flags.arrays)) { - i = eatArray(i, key, args); - } else if (checkAllAliases(key, flags.nargs) !== false) { - i = eatNargs(i, key, args); - } else { - next = args[i + 1]; - if (next !== undefined && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { - setArg(key, next); - i++; - } else if (/^(true|false)$/.test(next)) { - setArg(key, next); - i++; - } else { - setArg(key, defaultValue(key)); - } - } - } - } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) { - key = arg.slice(1); - setArg(key, defaultValue(key)); - } else if (arg === "--") { - notFlags = args.slice(i + 1); - break; - } else if (configuration["halt-at-non-option"]) { - notFlags = args.slice(i); - break; - } else { - pushPositional(arg); - } - } - applyEnvVars(argv, true); - applyEnvVars(argv, false); - setConfig(argv); - setConfigObjects(); - applyDefaultsAndAliases(argv, flags.aliases, defaults, true); - applyCoercions(argv); - if (configuration["set-placeholder-key"]) - setPlaceholderKeys(argv); - Object.keys(flags.counts).forEach(function(key) { - if (!hasKey(argv, key.split("."))) - setArg(key, 0); - }); - if (notFlagsOption && notFlags.length) - argv[notFlagsArgv] = []; - notFlags.forEach(function(key) { - argv[notFlagsArgv].push(key); - }); - if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) { - Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => { - delete argv[key]; - }); - } - if (configuration["strip-aliased"]) { - [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => { - if (configuration["camel-case-expansion"] && alias.includes("-")) { - delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")]; - } - delete argv[alias]; - }); - } - function pushPositional(arg) { - const maybeCoercedNumber = maybeCoerceNumber("_", arg); - if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") { - argv._.push(maybeCoercedNumber); - } - } - function eatNargs(i, key, args2, argAfterEqualSign) { - let ii; - let toEat = checkAllAliases(key, flags.nargs); - toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat; - if (toEat === 0) { - if (!isUndefined(argAfterEqualSign)) { - error = Error(__("Argument unexpected for: %s", key)); - } - setArg(key, defaultValue(key)); - return i; - } - let available = isUndefined(argAfterEqualSign) ? 0 : 1; - if (configuration["nargs-eats-options"]) { - if (args2.length - (i + 1) + available < toEat) { - error = Error(__("Not enough arguments following: %s", key)); - } - available = toEat; - } else { - for (ii = i + 1;ii < args2.length; ii++) { - if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii])) - available++; - else - break; - } - if (available < toEat) - error = Error(__("Not enough arguments following: %s", key)); - } - let consumed = Math.min(available, toEat); - if (!isUndefined(argAfterEqualSign) && consumed > 0) { - setArg(key, argAfterEqualSign); - consumed--; - } - for (ii = i + 1;ii < consumed + i + 1; ii++) { - setArg(key, args2[ii]); - } - return i + consumed; - } - function eatArray(i, key, args2, argAfterEqualSign) { - let argsToSet = []; - let next = argAfterEqualSign || args2[i + 1]; - const nargsCount = checkAllAliases(key, flags.nargs); - if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) { - argsToSet.push(true); - } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) { - if (defaults[key] !== undefined) { - const defVal = defaults[key]; - argsToSet = Array.isArray(defVal) ? defVal : [defVal]; - } - } else { - if (!isUndefined(argAfterEqualSign)) { - argsToSet.push(processValue(key, argAfterEqualSign, true)); - } - for (let ii = i + 1;ii < args2.length; ii++) { - if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) - break; - next = args2[ii]; - if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) - break; - i = ii; - argsToSet.push(processValue(key, next, inputIsString)); - } - } - if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) { - error = Error(__("Not enough arguments following: %s", key)); - } - setArg(key, argsToSet); - return i; - } - function setArg(key, val, shouldStripQuotes = inputIsString) { - if (/-/.test(key) && configuration["camel-case-expansion"]) { - const alias = key.split(".").map(function(prop) { - return camelCase(prop); - }).join("."); - addNewAlias(key, alias); - } - const value = processValue(key, val, shouldStripQuotes); - const splitKey = key.split("."); - setKey(argv, splitKey, value); - if (flags.aliases[key]) { - flags.aliases[key].forEach(function(x) { - const keyProperties = x.split("."); - setKey(argv, keyProperties, value); - }); - } - if (splitKey.length > 1 && configuration["dot-notation"]) { - (flags.aliases[splitKey[0]] || []).forEach(function(x) { - let keyProperties = x.split("."); - const a = [].concat(splitKey); - a.shift(); - keyProperties = keyProperties.concat(a); - if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) { - setKey(argv, keyProperties, value); - } - }); - } - if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { - const keys = [key].concat(flags.aliases[key] || []); - keys.forEach(function(key2) { - Object.defineProperty(argvReturn, key2, { - enumerable: true, - get() { - return val; - }, - set(value2) { - val = typeof value2 === "string" ? mixin2.normalize(value2) : value2; - } - }); - }); - } - } - function addNewAlias(key, alias) { - if (!(flags.aliases[key] && flags.aliases[key].length)) { - flags.aliases[key] = [alias]; - newAliases[alias] = true; - } - if (!(flags.aliases[alias] && flags.aliases[alias].length)) { - addNewAlias(alias, key); - } - } - function processValue(key, val, shouldStripQuotes) { - if (shouldStripQuotes) { - val = stripQuotes(val); - } - if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { - if (typeof val === "string") - val = val === "true"; - } - let value = Array.isArray(val) ? val.map(function(v) { - return maybeCoerceNumber(key, v); - }) : maybeCoerceNumber(key, val); - if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) { - value = increment(); - } - if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { - if (Array.isArray(val)) - value = val.map((val2) => { - return mixin2.normalize(val2); - }); - else - value = mixin2.normalize(val); - } - return value; - } - function maybeCoerceNumber(key, value) { - if (!configuration["parse-positional-numbers"] && key === "_") - return value; - if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { - const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))); - if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) { - value = Number(value); - } - } - return value; - } - function setConfig(argv2) { - const configLookup = Object.create(null); - applyDefaultsAndAliases(configLookup, flags.aliases, defaults); - Object.keys(flags.configs).forEach(function(configKey) { - const configPath = argv2[configKey] || configLookup[configKey]; - if (configPath) { - try { - let config = null; - const resolvedConfigPath = mixin2.resolve(mixin2.cwd(), configPath); - const resolveConfig = flags.configs[configKey]; - if (typeof resolveConfig === "function") { - try { - config = resolveConfig(resolvedConfigPath); - } catch (e) { - config = e; - } - if (config instanceof Error) { - error = config; - return; - } - } else { - config = mixin2.require(resolvedConfigPath); - } - setConfigObject(config); - } catch (ex) { - if (ex.name === "PermissionDenied") - error = ex; - else if (argv2[configKey]) - error = Error(__("Invalid JSON config file: %s", configPath)); - } - } - }); - } - function setConfigObject(config, prev) { - Object.keys(config).forEach(function(key) { - const value = config[key]; - const fullKey = prev ? prev + "." + key : key; - if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) { - setConfigObject(value, fullKey); - } else { - if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) { - setArg(fullKey, value); - } - } - }); - } - function setConfigObjects() { - if (typeof configObjects !== "undefined") { - configObjects.forEach(function(configObject) { - setConfigObject(configObject); - }); - } - } - function applyEnvVars(argv2, configOnly) { - if (typeof envPrefix === "undefined") - return; - const prefix = typeof envPrefix === "string" ? envPrefix : ""; - const env = mixin2.env(); - Object.keys(env).forEach(function(envVar) { - if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) { - const keys = envVar.split("__").map(function(key, i) { - if (i === 0) { - key = key.substring(prefix.length); - } - return camelCase(key); - }); - if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) { - setArg(keys.join("."), env[envVar]); - } - } - }); - } - function applyCoercions(argv2) { - let coerce; - const applied = new Set; - Object.keys(argv2).forEach(function(key) { - if (!applied.has(key)) { - coerce = checkAllAliases(key, flags.coercions); - if (typeof coerce === "function") { - try { - const value = maybeCoerceNumber(key, coerce(argv2[key])); - [].concat(flags.aliases[key] || [], key).forEach((ali) => { - applied.add(ali); - argv2[ali] = value; - }); - } catch (err) { - error = err; - } - } - } - }); - } - function setPlaceholderKeys(argv2) { - flags.keys.forEach((key) => { - if (~key.indexOf(".")) - return; - if (typeof argv2[key] === "undefined") - argv2[key] = undefined; - }); - return argv2; - } - function applyDefaultsAndAliases(obj, aliases2, defaults2, canLog = false) { - Object.keys(defaults2).forEach(function(key) { - if (!hasKey(obj, key.split("."))) { - setKey(obj, key.split("."), defaults2[key]); - if (canLog) - defaulted[key] = true; - (aliases2[key] || []).forEach(function(x) { - if (hasKey(obj, x.split("."))) - return; - setKey(obj, x.split("."), defaults2[key]); - }); - } - }); - } - function hasKey(obj, keys) { - let o = obj; - if (!configuration["dot-notation"]) - keys = [keys.join(".")]; - keys.slice(0, -1).forEach(function(key2) { - o = o[key2] || {}; - }); - const key = keys[keys.length - 1]; - if (typeof o !== "object") - return false; - else - return key in o; - } - function setKey(obj, keys, value) { - let o = obj; - if (!configuration["dot-notation"]) - keys = [keys.join(".")]; - keys.slice(0, -1).forEach(function(key2) { - key2 = sanitizeKey(key2); - if (typeof o === "object" && o[key2] === undefined) { - o[key2] = {}; - } - if (typeof o[key2] !== "object" || Array.isArray(o[key2])) { - if (Array.isArray(o[key2])) { - o[key2].push({}); - } else { - o[key2] = [o[key2], {}]; - } - o = o[key2][o[key2].length - 1]; - } else { - o = o[key2]; - } - }); - const key = sanitizeKey(keys[keys.length - 1]); - const isTypeArray = checkAllAliases(keys.join("."), flags.arrays); - const isValueArray = Array.isArray(value); - let duplicate = configuration["duplicate-arguments-array"]; - if (!duplicate && checkAllAliases(key, flags.nargs)) { - duplicate = true; - if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) { - o[key] = undefined; - } - } - if (value === increment()) { - o[key] = increment(o[key]); - } else if (Array.isArray(o[key])) { - if (duplicate && isTypeArray && isValueArray) { - o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); - } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { - o[key] = value; - } else { - o[key] = o[key].concat([value]); - } - } else if (o[key] === undefined && isTypeArray) { - o[key] = isValueArray ? value : [value]; - } else if (duplicate && !(o[key] === undefined || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) { - o[key] = [o[key], value]; - } else { - o[key] = value; - } - } - function extendAliases(...args2) { - args2.forEach(function(obj) { - Object.keys(obj || {}).forEach(function(key) { - if (flags.aliases[key]) - return; - flags.aliases[key] = [].concat(aliases[key] || []); - flags.aliases[key].concat(key).forEach(function(x) { - if (/-/.test(x) && configuration["camel-case-expansion"]) { - const c = camelCase(x); - if (c !== key && flags.aliases[key].indexOf(c) === -1) { - flags.aliases[key].push(c); - newAliases[c] = true; - } - } - }); - flags.aliases[key].concat(key).forEach(function(x) { - if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) { - const c = decamelize(x, "-"); - if (c !== key && flags.aliases[key].indexOf(c) === -1) { - flags.aliases[key].push(c); - newAliases[c] = true; - } - } - }); - flags.aliases[key].forEach(function(x) { - flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) { - return x !== y; - })); - }); - }); - }); - } - function checkAllAliases(key, flag) { - const toCheck = [].concat(flags.aliases[key] || [], key); - const keys = Object.keys(flag); - const setAlias = toCheck.find((key2) => keys.includes(key2)); - return setAlias ? flag[setAlias] : false; - } - function hasAnyFlag(key) { - const flagsKeys = Object.keys(flags); - const toCheck = [].concat(flagsKeys.map((k) => flags[k])); - return toCheck.some(function(flag) { - return Array.isArray(flag) ? flag.includes(key) : flag[key]; - }); - } - function hasFlagsMatching(arg, ...patterns) { - const toCheck = [].concat(...patterns); - return toCheck.some(function(pattern) { - const match = arg.match(pattern); - return match && hasAnyFlag(match[1]); - }); - } - function hasAllShortFlags(arg) { - if (arg.match(negative) || !arg.match(/^-[^-]+/)) { - return false; - } - let hasAllFlags = true; - let next; - const letters = arg.slice(1).split(""); - for (let j = 0;j < letters.length; j++) { - next = arg.slice(j + 2); - if (!hasAnyFlag(letters[j])) { - hasAllFlags = false; - break; - } - if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) { - break; - } - } - return hasAllFlags; - } - function isUnknownOptionAsArg(arg) { - return configuration["unknown-options-as-args"] && isUnknownOption(arg); - } - function isUnknownOption(arg) { - arg = arg.replace(/^-{3,}/, "--"); - if (arg.match(negative)) { - return false; - } - if (hasAllShortFlags(arg)) { - return false; - } - const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; - const normalFlag = /^-+([^=]+?)$/; - const flagEndingInHyphen = /^-+([^=]+?)-$/; - const flagEndingInDigits = /^-+([^=]+?\d+)$/; - const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; - return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); - } - function defaultValue(key) { - if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && (`${key}` in defaults)) { - return defaults[key]; - } else { - return defaultForType(guessType(key)); - } - } - function defaultForType(type) { - const def = { - [DefaultValuesForTypeKey.BOOLEAN]: true, - [DefaultValuesForTypeKey.STRING]: "", - [DefaultValuesForTypeKey.NUMBER]: undefined, - [DefaultValuesForTypeKey.ARRAY]: [] - }; - return def[type]; - } - function guessType(key) { - let type = DefaultValuesForTypeKey.BOOLEAN; - if (checkAllAliases(key, flags.strings)) - type = DefaultValuesForTypeKey.STRING; - else if (checkAllAliases(key, flags.numbers)) - type = DefaultValuesForTypeKey.NUMBER; - else if (checkAllAliases(key, flags.bools)) - type = DefaultValuesForTypeKey.BOOLEAN; - else if (checkAllAliases(key, flags.arrays)) - type = DefaultValuesForTypeKey.ARRAY; - return type; - } - function isUndefined(num) { - return num === undefined; - } - function checkConfiguration() { - Object.keys(flags.counts).find((key) => { - if (checkAllAliases(key, flags.arrays)) { - error = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key)); - return true; - } else if (checkAllAliases(key, flags.nargs)) { - error = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key)); - return true; - } - return false; - }); - } - return { - aliases: Object.assign({}, flags.aliases), - argv: Object.assign(argvReturn, argv), - configuration, - defaulted: Object.assign({}, defaulted), - error, - newAliases: Object.assign({}, newAliases) - }; - } -} - -// node_modules/yargs/node_modules/yargs-parser/build/lib/index.js -import {readFileSync} from "fs"; -var _a; -var _b; -var _c; -var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12; -var nodeVersion = (_b = (_a = process === null || process === undefined ? undefined : process.versions) === null || _a === undefined ? undefined : _a.node) !== null && _b !== undefined ? _b : (_c = process === null || process === undefined ? undefined : process.version) === null || _c === undefined ? undefined : _c.slice(1); -if (nodeVersion) { - const major = Number(nodeVersion.match(/^([^.]+)/)[1]); - if (major < minNodeVersion) { - throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); - } -} -var env = process ? process.env : {}; -var parser = new YargsParser({ - cwd: process.cwd, - env: () => { - return env; - }, - format, - normalize, - resolve: resolve2, - require: (path) => { - if (typeof require !== "undefined") { - return require(path); - } else if (path.match(/\.json$/)) { - return JSON.parse(readFileSync(path, "utf8")); - } else { - throw Error("only .json config files are supported in ESM"); - } - } -}); -var yargsParser = function Parser(args, opts) { - const result = parser.parse(args.slice(), opts); - return result.argv; -}; -yargsParser.detailed = function(args, opts) { - return parser.parse(args.slice(), opts); -}; -yargsParser.camelCase = camelCase; -yargsParser.decamelize = decamelize; -yargsParser.looksLikeNumber = looksLikeNumber; -var lib_default = yargsParser; - -// node_modules/yargs/lib/platform-shims/esm.mjs -import {basename, dirname as dirname2, extname, relative, resolve as resolve4} from "path"; - -// node_modules/yargs/build/lib/utils/process-argv.js -var getProcessArgvBinIndex = function() { - if (isBundledElectronApp()) - return 0; - return 1; -}; -var isBundledElectronApp = function() { - return isElectronApp() && !process.defaultApp; -}; -var isElectronApp = function() { - return !!process.versions.electron; -}; -function getProcessArgvBin() { - return process.argv[getProcessArgvBinIndex()]; -} - -// node_modules/yargs/build/lib/yerror.js -class YError extends Error { - constructor(msg) { - super(msg || "yargs error"); - this.name = "YError"; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, YError); - } - } -} - -// node_modules/y18n/build/lib/platform-shims/node.js -import {readFileSync as readFileSync2, statSync as statSync2, writeFile} from "fs"; -import {format as format2} from "util"; -import {resolve as resolve3} from "path"; -var node_default = { - fs: { - readFileSync: readFileSync2, - writeFile - }, - format: format2, - resolve: resolve3, - exists: (file) => { - try { - return statSync2(file).isFile(); - } catch (err) { - return false; - } - } -}; - -// node_modules/y18n/build/lib/index.js -function y18n(opts, _shim) { - shim = _shim; - const y18n2 = new Y18N(opts); - return { - __: y18n2.__.bind(y18n2), - __n: y18n2.__n.bind(y18n2), - setLocale: y18n2.setLocale.bind(y18n2), - getLocale: y18n2.getLocale.bind(y18n2), - updateLocale: y18n2.updateLocale.bind(y18n2), - locale: y18n2.locale - }; -} -var shim; - -class Y18N { - constructor(opts) { - opts = opts || {}; - this.directory = opts.directory || "./locales"; - this.updateFiles = typeof opts.updateFiles === "boolean" ? opts.updateFiles : true; - this.locale = opts.locale || "en"; - this.fallbackToLanguage = typeof opts.fallbackToLanguage === "boolean" ? opts.fallbackToLanguage : true; - this.cache = Object.create(null); - this.writeQueue = []; - } - __(...args) { - if (typeof arguments[0] !== "string") { - return this._taggedLiteral(arguments[0], ...arguments); - } - const str = args.shift(); - let cb = function() { - }; - if (typeof args[args.length - 1] === "function") - cb = args.pop(); - cb = cb || function() { - }; - if (!this.cache[this.locale]) - this._readLocaleFile(); - if (!this.cache[this.locale][str] && this.updateFiles) { - this.cache[this.locale][str] = str; - this._enqueueWrite({ - directory: this.directory, - locale: this.locale, - cb - }); - } else { - cb(); - } - return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); - } - __n() { - const args = Array.prototype.slice.call(arguments); - const singular = args.shift(); - const plural = args.shift(); - const quantity = args.shift(); - let cb = function() { - }; - if (typeof args[args.length - 1] === "function") - cb = args.pop(); - if (!this.cache[this.locale]) - this._readLocaleFile(); - let str = quantity === 1 ? singular : plural; - if (this.cache[this.locale][singular]) { - const entry = this.cache[this.locale][singular]; - str = entry[quantity === 1 ? "one" : "other"]; - } - if (!this.cache[this.locale][singular] && this.updateFiles) { - this.cache[this.locale][singular] = { - one: singular, - other: plural - }; - this._enqueueWrite({ - directory: this.directory, - locale: this.locale, - cb - }); - } else { - cb(); - } - const values = [str]; - if (~str.indexOf("%d")) - values.push(quantity); - return shim.format.apply(shim.format, values.concat(args)); - } - setLocale(locale) { - this.locale = locale; - } - getLocale() { - return this.locale; - } - updateLocale(obj) { - if (!this.cache[this.locale]) - this._readLocaleFile(); - for (const key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - this.cache[this.locale][key] = obj[key]; - } - } - } - _taggedLiteral(parts, ...args) { - let str = ""; - parts.forEach(function(part, i) { - const arg = args[i + 1]; - str += part; - if (typeof arg !== "undefined") { - str += "%s"; - } - }); - return this.__.apply(this, [str].concat([].slice.call(args, 1))); - } - _enqueueWrite(work) { - this.writeQueue.push(work); - if (this.writeQueue.length === 1) - this._processWriteQueue(); - } - _processWriteQueue() { - const _this = this; - const work = this.writeQueue[0]; - const directory = work.directory; - const locale = work.locale; - const cb = work.cb; - const languageFile = this._resolveLocaleFile(directory, locale); - const serializedLocale = JSON.stringify(this.cache[locale], null, 2); - shim.fs.writeFile(languageFile, serializedLocale, "utf-8", function(err) { - _this.writeQueue.shift(); - if (_this.writeQueue.length > 0) - _this._processWriteQueue(); - cb(err); - }); - } - _readLocaleFile() { - let localeLookup = {}; - const languageFile = this._resolveLocaleFile(this.directory, this.locale); - try { - if (shim.fs.readFileSync) { - localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, "utf-8")); - } - } catch (err) { - if (err instanceof SyntaxError) { - err.message = "syntax error in " + languageFile; - } - if (err.code === "ENOENT") - localeLookup = {}; - else - throw err; - } - this.cache[this.locale] = localeLookup; - } - _resolveLocaleFile(directory, locale) { - let file = shim.resolve(directory, "./", locale + ".json"); - if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf("_")) { - const languageFile = shim.resolve(directory, "./", locale.split("_")[0] + ".json"); - if (this._fileExistsSync(languageFile)) - file = languageFile; - } - return file; - } - _fileExistsSync(file) { - return shim.exists(file); - } -} - -// node_modules/y18n/index.mjs -var y18n2 = (opts) => { - return y18n(opts, node_default); -}; -var y18n_default = y18n2; - -// node_modules/yargs/lib/platform-shims/esm.mjs -var REQUIRE_ERROR = "require is not supported by ESM"; -var REQUIRE_DIRECTORY_ERROR = "loading a directory of commands is not supported yet for ESM"; -var __dirname2; -try { - __dirname2 = fileURLToPath(import.meta.url); -} catch (e) { - __dirname2 = process.cwd(); -} -var mainFilename = __dirname2.substring(0, __dirname2.lastIndexOf("node_modules")); -var esm_default = { - assert: { - notStrictEqual, - strictEqual - }, - cliui: ui, - findUp: sync_default, - getEnv: (key) => { - return process.env[key]; - }, - inspect, - getCallerFile: () => { - throw new YError(REQUIRE_DIRECTORY_ERROR); - }, - getProcessArgvBin, - mainFilename: mainFilename || process.cwd(), - Parser: lib_default, - path: { - basename, - dirname: dirname2, - extname, - relative, - resolve: resolve4 - }, - 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: readFileSync3, - require: () => { - throw new YError(REQUIRE_ERROR); - }, - requireDirectory: () => { - throw new YError(REQUIRE_DIRECTORY_ERROR); - }, - stringWidth: (str) => { - return [...str].length; - }, - y18n: y18n_default({ - directory: resolve4(__dirname2, "../../../locales"), - updateFiles: false - }) -}; - -// node_modules/yargs/build/lib/typings/common-types.js -function assertNotStrictEqual(actual, expected, shim2, message) { - shim2.assert.notStrictEqual(actual, expected, message); -} -function assertSingleKey(actual, shim2) { - shim2.assert.strictEqual(typeof actual, "string"); -} -function objectKeys(object) { - return Object.keys(object); -} - -// node_modules/yargs/build/lib/utils/is-promise.js -function isPromise(maybePromise) { - return !!maybePromise && !!maybePromise.then && typeof maybePromise.then === "function"; -} - -// node_modules/yargs/build/lib/parse-command.js -function parseCommand(cmd) { - const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, " "); - const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); - const bregex = /\.*[\][<>]/g; - const firstCommand = splitCommand.shift(); - if (!firstCommand) - throw new Error(`No command found in: ${cmd}`); - const parsedCommand = { - cmd: firstCommand.replace(bregex, ""), - demanded: [], - optional: [] - }; - splitCommand.forEach((cmd2, i) => { - let variadic = false; - cmd2 = cmd2.replace(/\s/g, ""); - if (/\.+[\]>]/.test(cmd2) && i === splitCommand.length - 1) - variadic = true; - if (/^\[/.test(cmd2)) { - parsedCommand.optional.push({ - cmd: cmd2.replace(bregex, "").split("|"), - variadic - }); - } else { - parsedCommand.demanded.push({ - cmd: cmd2.replace(bregex, "").split("|"), - variadic - }); - } - }); - return parsedCommand; -} - -// node_modules/yargs/build/lib/argsert.js -function argsert(arg1, arg2, arg3) { - function parseArgs() { - return typeof arg1 === "object" ? [{ demanded: [], optional: [] }, arg1, arg2] : [ - parseCommand(`cmd ${arg1}`), - arg2, - arg3 - ]; - } - try { - let position = 0; - const [parsed, callerArguments, _length] = parseArgs(); - const args = [].slice.call(callerArguments); - while (args.length && args[args.length - 1] === undefined) - args.pop(); - const length = _length || args.length; - if (length < parsed.demanded.length) { - throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); - } - const totalCommands = parsed.demanded.length + parsed.optional.length; - if (length > totalCommands) { - throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); - } - parsed.demanded.forEach((demanded) => { - const arg = args.shift(); - const observedType = guessType(arg); - const matchingTypes = demanded.cmd.filter((type) => type === observedType || type === "*"); - if (matchingTypes.length === 0) - argumentTypeError(observedType, demanded.cmd, position); - position += 1; - }); - parsed.optional.forEach((optional) => { - if (args.length === 0) - return; - const arg = args.shift(); - const observedType = guessType(arg); - const matchingTypes = optional.cmd.filter((type) => type === observedType || type === "*"); - if (matchingTypes.length === 0) - argumentTypeError(observedType, optional.cmd, position); - position += 1; - }); - } catch (err) { - console.warn(err.stack); - } -} -var guessType = function(arg) { - if (Array.isArray(arg)) { - return "array"; - } else if (arg === null) { - return "null"; - } - return typeof arg; -}; -var argumentTypeError = function(observedType, allowedTypes, position) { - throw new YError(`Invalid ${positionName[position] || "manyith"} argument. Expected ${allowedTypes.join(" or ")} but received ${observedType}.`); -}; -var positionName = ["first", "second", "third", "fourth", "fifth", "sixth"]; - -// node_modules/yargs/build/lib/middleware.js -function commandMiddlewareFactory(commandMiddleware) { - if (!commandMiddleware) - return []; - return commandMiddleware.map((middleware) => { - middleware.applyBeforeValidation = false; - return middleware; - }); -} -function applyMiddleware(argv, yargs, middlewares, beforeValidation) { - return middlewares.reduce((acc, middleware) => { - if (middleware.applyBeforeValidation !== beforeValidation) { - return acc; - } - if (middleware.mutates) { - if (middleware.applied) - return acc; - middleware.applied = true; - } - if (isPromise(acc)) { - return acc.then((initialObj) => Promise.all([initialObj, middleware(initialObj, yargs)])).then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); - } else { - const result = middleware(acc, yargs); - return isPromise(result) ? result.then((middlewareObj) => Object.assign(acc, middlewareObj)) : Object.assign(acc, result); - } - }, argv); -} - -class GlobalMiddleware { - constructor(yargs) { - this.globalMiddleware = []; - this.frozens = []; - this.yargs = yargs; - } - addMiddleware(callback, applyBeforeValidation, global2 = true, mutates = false) { - argsert(" [boolean] [boolean] [boolean]", [callback, applyBeforeValidation, global2], arguments.length); - if (Array.isArray(callback)) { - for (let i = 0;i < callback.length; i++) { - if (typeof callback[i] !== "function") { - throw Error("middleware must be a function"); - } - const m = callback[i]; - m.applyBeforeValidation = applyBeforeValidation; - m.global = global2; - } - Array.prototype.push.apply(this.globalMiddleware, callback); - } else if (typeof callback === "function") { - const m = callback; - m.applyBeforeValidation = applyBeforeValidation; - m.global = global2; - m.mutates = mutates; - this.globalMiddleware.push(callback); - } - return this.yargs; - } - addCoerceMiddleware(callback, option) { - const aliases = this.yargs.getAliases(); - this.globalMiddleware = this.globalMiddleware.filter((m) => { - const toCheck = [...aliases[option] || [], option]; - if (!m.option) - return true; - else - return !toCheck.includes(m.option); - }); - callback.option = option; - return this.addMiddleware(callback, true, true, true); - } - getMiddleware() { - return this.globalMiddleware; - } - freeze() { - this.frozens.push([...this.globalMiddleware]); - } - unfreeze() { - const frozen = this.frozens.pop(); - if (frozen !== undefined) - this.globalMiddleware = frozen; - } - reset() { - this.globalMiddleware = this.globalMiddleware.filter((m) => m.global); - } -} - -// node_modules/yargs/build/lib/utils/maybe-async-result.js -function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => { - throw err; -}) { - try { - const result = isFunction(getResult) ? getResult() : getResult; - return isPromise(result) ? result.then((result2) => resultHandler(result2)) : resultHandler(result); - } catch (err) { - return errorHandler(err); - } -} -var isFunction = function(arg) { - return typeof arg === "function"; -}; - -// node_modules/yargs/build/lib/utils/which-module.js -function whichModule(exported) { - if (typeof require === "undefined") - return null; - for (let i = 0, files = Object.keys(require.cache), mod;i < files.length; i++) { - mod = require.cache[files[i]]; - if (mod.exports === exported) - return mod; - } - return null; -} - -// node_modules/yargs/build/lib/command.js -function command(usage, validation, globalMiddleware, shim2) { - return new CommandInstance(usage, validation, globalMiddleware, shim2); -} -function isCommandBuilderDefinition(builder) { - return typeof builder === "object" && !!builder.builder && typeof builder.handler === "function"; -} -var isCommandAndAliases = function(cmd) { - return cmd.every((c) => typeof c === "string"); -}; -function isCommandBuilderCallback(builder) { - return typeof builder === "function"; -} -var isCommandBuilderOptionDefinitions = function(builder) { - return typeof builder === "object"; -}; -function isCommandHandlerDefinition(cmd) { - return typeof cmd === "object" && !Array.isArray(cmd); -} -var DEFAULT_MARKER = /(^\*)|(^\$0)/; - -class CommandInstance { - constructor(usage, validation, globalMiddleware, shim2) { - this.requireCache = new Set; - this.handlers = {}; - this.aliasMap = {}; - this.frozens = []; - this.shim = shim2; - this.usage = usage; - this.globalMiddleware = globalMiddleware; - this.validation = validation; - } - addDirectory(dir, req, callerFile, opts) { - opts = opts || {}; - if (typeof opts.recurse !== "boolean") - opts.recurse = false; - if (!Array.isArray(opts.extensions)) - opts.extensions = ["js"]; - const parentVisit = typeof opts.visit === "function" ? opts.visit : (o) => o; - opts.visit = (obj, joined, filename) => { - const visited = parentVisit(obj, joined, filename); - if (visited) { - if (this.requireCache.has(joined)) - return visited; - else - this.requireCache.add(joined); - this.addHandler(visited); - } - return visited; - }; - this.shim.requireDirectory({ require: req, filename: callerFile }, dir, opts); - } - addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) { - let aliases = []; - const middlewares = commandMiddlewareFactory(commandMiddleware); - handler = handler || (() => { - }); - if (Array.isArray(cmd)) { - if (isCommandAndAliases(cmd)) { - [cmd, ...aliases] = cmd; - } else { - for (const command2 of cmd) { - this.addHandler(command2); - } - } - } else if (isCommandHandlerDefinition(cmd)) { - let command2 = Array.isArray(cmd.command) || typeof cmd.command === "string" ? cmd.command : this.moduleName(cmd); - if (cmd.aliases) - command2 = [].concat(command2).concat(cmd.aliases); - this.addHandler(command2, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); - return; - } else if (isCommandBuilderDefinition(builder)) { - this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); - return; - } - if (typeof cmd === "string") { - const parsedCommand = parseCommand(cmd); - aliases = aliases.map((alias) => parseCommand(alias).cmd); - let isDefault = false; - const parsedAliases = [parsedCommand.cmd].concat(aliases).filter((c) => { - if (DEFAULT_MARKER.test(c)) { - isDefault = true; - return false; - } - return true; - }); - if (parsedAliases.length === 0 && isDefault) - parsedAliases.push("$0"); - if (isDefault) { - parsedCommand.cmd = parsedAliases[0]; - aliases = parsedAliases.slice(1); - cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); - } - aliases.forEach((alias) => { - this.aliasMap[alias] = parsedCommand.cmd; - }); - if (description !== false) { - this.usage.command(cmd, description, isDefault, aliases, deprecated); - } - this.handlers[parsedCommand.cmd] = { - original: cmd, - description, - handler, - builder: builder || {}, - middlewares, - deprecated, - demanded: parsedCommand.demanded, - optional: parsedCommand.optional - }; - if (isDefault) - this.defaultCommand = this.handlers[parsedCommand.cmd]; - } - } - getCommandHandlers() { - return this.handlers; - } - getCommands() { - return Object.keys(this.handlers).concat(Object.keys(this.aliasMap)); - } - hasDefaultCommand() { - return !!this.defaultCommand; - } - runCommand(command2, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) { - const commandHandler = this.handlers[command2] || this.handlers[this.aliasMap[command2]] || this.defaultCommand; - const currentContext = yargs.getInternalMethods().getContext(); - const parentCommands = currentContext.commands.slice(); - const isDefaultCommand = !command2; - if (command2) { - currentContext.commands.push(command2); - currentContext.fullCommands.push(commandHandler.original); - } - const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet); - return isPromise(builderResult) ? builderResult.then((result) => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs)) : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs); - } - applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) { - const builder = commandHandler.builder; - let innerYargs = yargs; - if (isCommandBuilderCallback(builder)) { - yargs.getInternalMethods().getUsageInstance().freeze(); - const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet); - if (isPromise(builderOutput)) { - return builderOutput.then((output) => { - innerYargs = isYargsInstance(output) ? output : yargs; - return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); - }); - } - } else if (isCommandBuilderOptionDefinitions(builder)) { - yargs.getInternalMethods().getUsageInstance().freeze(); - innerYargs = yargs.getInternalMethods().reset(aliases); - Object.keys(commandHandler.builder).forEach((key) => { - innerYargs.option(key, builder[key]); - }); - } - return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); - } - parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) { - if (isDefaultCommand) - innerYargs.getInternalMethods().getUsageInstance().unfreeze(true); - if (this.shouldUpdateUsage(innerYargs)) { - innerYargs.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); - } - const innerArgv = innerYargs.getInternalMethods().runYargsParserAndExecuteCommands(null, undefined, true, commandIndex, helpOnly); - return isPromise(innerArgv) ? innerArgv.then((argv) => ({ - aliases: innerYargs.parsed.aliases, - innerArgv: argv - })) : { - aliases: innerYargs.parsed.aliases, - innerArgv - }; - } - shouldUpdateUsage(yargs) { - return !yargs.getInternalMethods().getUsageInstance().getUsageDisabled() && yargs.getInternalMethods().getUsageInstance().getUsage().length === 0; - } - usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { - const c = DEFAULT_MARKER.test(commandHandler.original) ? commandHandler.original.replace(DEFAULT_MARKER, "").trim() : commandHandler.original; - const pc = parentCommands.filter((c2) => { - return !DEFAULT_MARKER.test(c2); - }); - pc.push(c); - return `\$0 ${pc.join(" ")}`; - } - handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) { - if (!yargs.getInternalMethods().getHasOutput()) { - const validation = yargs.getInternalMethods().runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand); - innerArgv = maybeAsyncResult(innerArgv, (result) => { - validation(result); - return result; - }); - } - if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) { - yargs.getInternalMethods().setHasOutput(); - const populateDoubleDash = !!yargs.getOptions().configuration["populate--"]; - yargs.getInternalMethods().postProcess(innerArgv, populateDoubleDash, false, false); - innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); - innerArgv = maybeAsyncResult(innerArgv, (result) => { - const handlerResult = commandHandler.handler(result); - return isPromise(handlerResult) ? handlerResult.then(() => result) : result; - }); - if (!isDefaultCommand) { - yargs.getInternalMethods().getUsageInstance().cacheHelpMessage(); - } - if (isPromise(innerArgv) && !yargs.getInternalMethods().hasParseCallback()) { - innerArgv.catch((error) => { - try { - yargs.getInternalMethods().getUsageInstance().fail(null, error); - } catch (_err) { - } - }); - } - } - if (!isDefaultCommand) { - currentContext.commands.pop(); - currentContext.fullCommands.pop(); - } - return innerArgv; - } - applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) { - let positionalMap = {}; - if (helpOnly) - return innerArgv; - if (!yargs.getInternalMethods().getHasOutput()) { - positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs); - } - const middlewares = this.globalMiddleware.getMiddleware().slice(0).concat(commandHandler.middlewares); - const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true); - return isPromise(maybePromiseArgv) ? maybePromiseArgv.then((resolvedInnerArgv) => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap)) : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap); - } - populatePositionals(commandHandler, argv, context, yargs) { - argv._ = argv._.slice(context.commands.length); - const demanded = commandHandler.demanded.slice(0); - const optional = commandHandler.optional.slice(0); - const positionalMap = {}; - this.validation.positionalCount(demanded.length, argv._.length); - while (demanded.length) { - const demand = demanded.shift(); - this.populatePositional(demand, argv, positionalMap); - } - while (optional.length) { - const maybe = optional.shift(); - this.populatePositional(maybe, argv, positionalMap); - } - argv._ = context.commands.concat(argv._.map((a) => "" + a)); - this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs); - return positionalMap; - } - populatePositional(positional, argv, positionalMap) { - const cmd = positional.cmd[0]; - if (positional.variadic) { - positionalMap[cmd] = argv._.splice(0).map(String); - } else { - if (argv._.length) - positionalMap[cmd] = [String(argv._.shift())]; - } - } - cmdToParseOptions(cmdString) { - const parseOptions = { - array: [], - default: {}, - alias: {}, - demand: {} - }; - const parsed = parseCommand(cmdString); - parsed.demanded.forEach((d) => { - const [cmd, ...aliases] = d.cmd; - if (d.variadic) { - parseOptions.array.push(cmd); - parseOptions.default[cmd] = []; - } - parseOptions.alias[cmd] = aliases; - parseOptions.demand[cmd] = true; - }); - parsed.optional.forEach((o) => { - const [cmd, ...aliases] = o.cmd; - if (o.variadic) { - parseOptions.array.push(cmd); - parseOptions.default[cmd] = []; - } - parseOptions.alias[cmd] = aliases; - }); - return parseOptions; - } - postProcessPositionals(argv, positionalMap, parseOptions, yargs) { - const options = Object.assign({}, yargs.getOptions()); - options.default = Object.assign(parseOptions.default, options.default); - for (const key of Object.keys(parseOptions.alias)) { - options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]); - } - options.array = options.array.concat(parseOptions.array); - options.config = {}; - const unparsed = []; - Object.keys(positionalMap).forEach((key) => { - positionalMap[key].map((value) => { - if (options.configuration["unknown-options-as-args"]) - options.key[key] = true; - unparsed.push(`--${key}`); - unparsed.push(value); - }); - }); - if (!unparsed.length) - return; - const config = Object.assign({}, options.configuration, { - "populate--": false - }); - const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, { - configuration: config - })); - if (parsed.error) { - yargs.getInternalMethods().getUsageInstance().fail(parsed.error.message, parsed.error); - } else { - const positionalKeys = Object.keys(positionalMap); - Object.keys(positionalMap).forEach((key) => { - positionalKeys.push(...parsed.aliases[key]); - }); - Object.keys(parsed.argv).forEach((key) => { - if (positionalKeys.includes(key)) { - if (!positionalMap[key]) - positionalMap[key] = parsed.argv[key]; - if (!this.isInConfigs(yargs, key) && !this.isDefaulted(yargs, key) && Object.prototype.hasOwnProperty.call(argv, key) && Object.prototype.hasOwnProperty.call(parsed.argv, key) && (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) { - argv[key] = [].concat(argv[key], parsed.argv[key]); - } else { - argv[key] = parsed.argv[key]; - } - } - }); - } - } - isDefaulted(yargs, key) { - const { default: defaults } = yargs.getOptions(); - return Object.prototype.hasOwnProperty.call(defaults, key) || Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key)); - } - isInConfigs(yargs, key) { - const { configObjects } = yargs.getOptions(); - return configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, key)) || configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key))); - } - runDefaultBuilderOn(yargs) { - if (!this.defaultCommand) - return; - if (this.shouldUpdateUsage(yargs)) { - const commandString = DEFAULT_MARKER.test(this.defaultCommand.original) ? this.defaultCommand.original : this.defaultCommand.original.replace(/^[^[\]<>]*/, "$0 "); - yargs.getInternalMethods().getUsageInstance().usage(commandString, this.defaultCommand.description); - } - const builder = this.defaultCommand.builder; - if (isCommandBuilderCallback(builder)) { - return builder(yargs, true); - } else if (!isCommandBuilderDefinition(builder)) { - Object.keys(builder).forEach((key) => { - yargs.option(key, builder[key]); - }); - } - return; - } - moduleName(obj) { - const mod = whichModule(obj); - if (!mod) - throw new Error(`No command name given for module: ${this.shim.inspect(obj)}`); - return this.commandFromFilename(mod.filename); - } - commandFromFilename(filename) { - return this.shim.path.basename(filename, this.shim.path.extname(filename)); - } - extractDesc({ describe, description, desc }) { - for (const test of [describe, description, desc]) { - if (typeof test === "string" || test === false) - return test; - assertNotStrictEqual(test, true, this.shim); - } - return false; - } - freeze() { - this.frozens.push({ - handlers: this.handlers, - aliasMap: this.aliasMap, - defaultCommand: this.defaultCommand - }); - } - unfreeze() { - const frozen = this.frozens.pop(); - assertNotStrictEqual(frozen, undefined, this.shim); - ({ - handlers: this.handlers, - aliasMap: this.aliasMap, - defaultCommand: this.defaultCommand - } = frozen); - } - reset() { - this.handlers = {}; - this.aliasMap = {}; - this.defaultCommand = undefined; - this.requireCache = new Set; - return this; - } -} - -// node_modules/yargs/build/lib/utils/obj-filter.js -function objFilter(original = {}, filter = () => true) { - const obj = {}; - objectKeys(original).forEach((key) => { - if (filter(key, original[key])) { - obj[key] = original[key]; - } - }); - return obj; -} - -// node_modules/yargs/build/lib/utils/set-blocking.js -function setBlocking(blocking) { - if (typeof process === "undefined") - return; - [process.stdout, process.stderr].forEach((_stream) => { - const stream = _stream; - if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === "function") { - stream._handle.setBlocking(blocking); - } - }); -} - -// node_modules/yargs/build/lib/usage.js -var isBoolean = function(fail) { - return typeof fail === "boolean"; -}; -function usage(yargs, shim2) { - const __ = shim2.y18n.__; - const self = {}; - const fails = []; - self.failFn = function failFn(f) { - fails.push(f); - }; - let failMessage = null; - let globalFailMessage = null; - let showHelpOnFail = true; - self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { - const [enabled, message] = typeof arg1 === "string" ? [true, arg1] : [arg1, arg2]; - if (yargs.getInternalMethods().isGlobalContext()) { - globalFailMessage = message; - } - failMessage = message; - showHelpOnFail = enabled; - return self; - }; - let failureOutput = false; - self.fail = function fail(msg, err) { - const logger = yargs.getInternalMethods().getLoggerInstance(); - if (fails.length) { - for (let i = fails.length - 1;i >= 0; --i) { - const fail = fails[i]; - if (isBoolean(fail)) { - if (err) - throw err; - else if (msg) - throw Error(msg); - } else { - fail(msg, err, self); - } - } - } else { - if (yargs.getExitProcess()) - setBlocking(true); - if (!failureOutput) { - failureOutput = true; - if (showHelpOnFail) { - yargs.showHelp("error"); - logger.error(); - } - if (msg || err) - logger.error(msg || err); - const globalOrCommandFailMessage = failMessage || globalFailMessage; - if (globalOrCommandFailMessage) { - if (msg || err) - logger.error(""); - logger.error(globalOrCommandFailMessage); - } - } - err = err || new YError(msg); - if (yargs.getExitProcess()) { - return yargs.exit(1); - } else if (yargs.getInternalMethods().hasParseCallback()) { - return yargs.exit(1, err); - } else { - throw err; - } - } - }; - let usages = []; - let usageDisabled = false; - self.usage = (msg, description) => { - if (msg === null) { - usageDisabled = true; - usages = []; - return self; - } - usageDisabled = false; - usages.push([msg, description || ""]); - return self; - }; - self.getUsage = () => { - return usages; - }; - self.getUsageDisabled = () => { - return usageDisabled; - }; - self.getPositionalGroupName = () => { - return __("Positionals:"); - }; - let examples = []; - self.example = (cmd, description) => { - examples.push([cmd, description || ""]); - }; - let commands = []; - self.command = function command(cmd, description, isDefault, aliases, deprecated = false) { - if (isDefault) { - commands = commands.map((cmdArray) => { - cmdArray[2] = false; - return cmdArray; - }); - } - commands.push([cmd, description || "", isDefault, aliases, deprecated]); - }; - self.getCommands = () => commands; - let descriptions = {}; - self.describe = function describe(keyOrKeys, desc) { - if (Array.isArray(keyOrKeys)) { - keyOrKeys.forEach((k) => { - self.describe(k, desc); - }); - } else if (typeof keyOrKeys === "object") { - Object.keys(keyOrKeys).forEach((k) => { - self.describe(k, keyOrKeys[k]); - }); - } else { - descriptions[keyOrKeys] = desc; - } - }; - self.getDescriptions = () => descriptions; - let epilogs = []; - self.epilog = (msg) => { - epilogs.push(msg); - }; - let wrapSet = false; - let wrap2; - self.wrap = (cols) => { - wrapSet = true; - wrap2 = cols; - }; - self.getWrap = () => { - if (shim2.getEnv("YARGS_DISABLE_WRAP")) { - return null; - } - if (!wrapSet) { - wrap2 = windowWidth(); - wrapSet = true; - } - return wrap2; - }; - const deferY18nLookupPrefix = "__yargsString__:"; - self.deferY18nLookup = (str) => deferY18nLookupPrefix + str; - self.help = function help() { - if (cachedHelpMessage) - return cachedHelpMessage; - normalizeAliases(); - const base$0 = yargs.customScriptName ? yargs.$0 : shim2.path.basename(yargs.$0); - const demandedOptions = yargs.getDemandedOptions(); - const demandedCommands = yargs.getDemandedCommands(); - const deprecatedOptions = yargs.getDeprecatedOptions(); - const groups = yargs.getGroups(); - const options = yargs.getOptions(); - let keys = []; - keys = keys.concat(Object.keys(descriptions)); - keys = keys.concat(Object.keys(demandedOptions)); - keys = keys.concat(Object.keys(demandedCommands)); - keys = keys.concat(Object.keys(options.default)); - keys = keys.filter(filterHiddenOptions); - keys = Object.keys(keys.reduce((acc, key) => { - if (key !== "_") - acc[key] = true; - return acc; - }, {})); - const theWrap = self.getWrap(); - const ui2 = shim2.cliui({ - width: theWrap, - wrap: !!theWrap - }); - if (!usageDisabled) { - if (usages.length) { - usages.forEach((usage2) => { - ui2.div({ text: `${usage2[0].replace(/\$0/g, base$0)}` }); - if (usage2[1]) { - ui2.div({ text: `${usage2[1]}`, padding: [1, 0, 0, 0] }); - } - }); - ui2.div(); - } else if (commands.length) { - let u = null; - if (demandedCommands._) { - u = `${base$0} <${__("command")}>\n`; - } else { - u = `${base$0} [${__("command")}]\n`; - } - ui2.div(`${u}`); - } - } - if (commands.length > 1 || commands.length === 1 && !commands[0][2]) { - ui2.div(__("Commands:")); - const context = yargs.getInternalMethods().getContext(); - const parentCommands = context.commands.length ? `${context.commands.join(" ")} ` : ""; - if (yargs.getInternalMethods().getParserConfiguration()["sort-commands"] === true) { - commands = commands.sort((a, b) => a[0].localeCompare(b[0])); - } - const prefix = base$0 ? `${base$0} ` : ""; - commands.forEach((command2) => { - const commandString = `${prefix}${parentCommands}${command2[0].replace(/^\$0 ?/, "")}`; - ui2.span({ - text: commandString, - padding: [0, 2, 0, 2], - width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4 - }, { text: command2[1] }); - const hints = []; - if (command2[2]) - hints.push(`[${__("default")}]`); - if (command2[3] && command2[3].length) { - hints.push(`[${__("aliases:")} ${command2[3].join(", ")}]`); - } - if (command2[4]) { - if (typeof command2[4] === "string") { - hints.push(`[${__("deprecated: %s", command2[4])}]`); - } else { - hints.push(`[${__("deprecated")}]`); - } - } - if (hints.length) { - ui2.div({ - text: hints.join(" "), - padding: [0, 0, 0, 2], - align: "right" - }); - } else { - ui2.div(); - } - }); - ui2.div(); - } - const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); - keys = keys.filter((key) => !yargs.parsed.newAliases[key] && aliasKeys.every((alias) => (options.alias[alias] || []).indexOf(key) === -1)); - const defaultGroup = __("Options:"); - if (!groups[defaultGroup]) - groups[defaultGroup] = []; - addUngroupedKeys(keys, options.alias, groups, defaultGroup); - const isLongSwitch = (sw) => /^--/.test(getText(sw)); - const displayedGroups = Object.keys(groups).filter((groupName) => groups[groupName].length > 0).map((groupName) => { - const normalizedKeys = groups[groupName].filter(filterHiddenOptions).map((key) => { - if (aliasKeys.includes(key)) - return key; - for (let i = 0, aliasKey;(aliasKey = aliasKeys[i]) !== undefined; i++) { - if ((options.alias[aliasKey] || []).includes(key)) - return aliasKey; - } - return key; - }); - return { groupName, normalizedKeys }; - }).filter(({ normalizedKeys }) => normalizedKeys.length > 0).map(({ groupName, normalizedKeys }) => { - const switches = normalizedKeys.reduce((acc, key) => { - acc[key] = [key].concat(options.alias[key] || []).map((sw) => { - if (groupName === self.getPositionalGroupName()) - return sw; - else { - return (/^[0-9]$/.test(sw) ? options.boolean.includes(key) ? "-" : "--" : sw.length > 1 ? "--" : "-") + sw; - } - }).sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) ? 0 : isLongSwitch(sw1) ? 1 : -1).join(", "); - return acc; - }, {}); - return { groupName, normalizedKeys, switches }; - }); - const shortSwitchesUsed = displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).some(({ normalizedKeys, switches }) => !normalizedKeys.every((key) => isLongSwitch(switches[key]))); - if (shortSwitchesUsed) { - displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).forEach(({ normalizedKeys, switches }) => { - normalizedKeys.forEach((key) => { - if (isLongSwitch(switches[key])) { - switches[key] = addIndentation(switches[key], "-x, ".length); - } - }); - }); - } - displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { - ui2.div(groupName); - normalizedKeys.forEach((key) => { - const kswitch = switches[key]; - let desc = descriptions[key] || ""; - let type = null; - if (desc.includes(deferY18nLookupPrefix)) - desc = __(desc.substring(deferY18nLookupPrefix.length)); - if (options.boolean.includes(key)) - type = `[${__("boolean")}]`; - if (options.count.includes(key)) - type = `[${__("count")}]`; - if (options.string.includes(key)) - type = `[${__("string")}]`; - if (options.normalize.includes(key)) - type = `[${__("string")}]`; - if (options.array.includes(key)) - type = `[${__("array")}]`; - if (options.number.includes(key)) - type = `[${__("number")}]`; - const deprecatedExtra = (deprecated) => typeof deprecated === "string" ? `[${__("deprecated: %s", deprecated)}]` : `[${__("deprecated")}]`; - const extra = [ - key in deprecatedOptions ? deprecatedExtra(deprecatedOptions[key]) : null, - type, - key in demandedOptions ? `[${__("required")}]` : null, - options.choices && options.choices[key] ? `[${__("choices:")} ${self.stringifiedValues(options.choices[key])}]` : null, - defaultString(options.default[key], options.defaultDescription[key]) - ].filter(Boolean).join(" "); - ui2.span({ - text: getText(kswitch), - padding: [0, 2, 0, 2 + getIndentation(kswitch)], - width: maxWidth(switches, theWrap) + 4 - }, desc); - const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()["hide-types"] === true; - if (extra && !shouldHideOptionExtras) - ui2.div({ text: extra, padding: [0, 0, 0, 2], align: "right" }); - else - ui2.div(); - }); - ui2.div(); - }); - if (examples.length) { - ui2.div(__("Examples:")); - examples.forEach((example) => { - example[0] = example[0].replace(/\$0/g, base$0); - }); - examples.forEach((example) => { - if (example[1] === "") { - ui2.div({ - text: example[0], - padding: [0, 2, 0, 2] - }); - } else { - ui2.div({ - text: example[0], - padding: [0, 2, 0, 2], - width: maxWidth(examples, theWrap) + 4 - }, { - text: example[1] - }); - } - }); - ui2.div(); - } - if (epilogs.length > 0) { - const e = epilogs.map((epilog) => epilog.replace(/\$0/g, base$0)).join("\n"); - ui2.div(`${e}\n`); - } - return ui2.toString().replace(/\s*$/, ""); - }; - function maxWidth(table, theWrap, modifier) { - let width = 0; - if (!Array.isArray(table)) { - table = Object.values(table).map((v) => [v]); - } - table.forEach((v) => { - width = Math.max(shim2.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); - }); - if (theWrap) - width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); - return width; - } - function normalizeAliases() { - const demandedOptions = yargs.getDemandedOptions(); - const options = yargs.getOptions(); - (Object.keys(options.alias) || []).forEach((key) => { - options.alias[key].forEach((alias) => { - if (descriptions[alias]) - self.describe(key, descriptions[alias]); - if (alias in demandedOptions) - yargs.demandOption(key, demandedOptions[alias]); - if (options.boolean.includes(alias)) - yargs.boolean(key); - if (options.count.includes(alias)) - yargs.count(key); - if (options.string.includes(alias)) - yargs.string(key); - if (options.normalize.includes(alias)) - yargs.normalize(key); - if (options.array.includes(alias)) - yargs.array(key); - if (options.number.includes(alias)) - yargs.number(key); - }); - }); - } - let cachedHelpMessage; - self.cacheHelpMessage = function() { - cachedHelpMessage = this.help(); - }; - self.clearCachedHelpMessage = function() { - cachedHelpMessage = undefined; - }; - self.hasCachedHelpMessage = function() { - return !!cachedHelpMessage; - }; - function addUngroupedKeys(keys, aliases, groups, defaultGroup) { - let groupedKeys = []; - let toCheck = null; - Object.keys(groups).forEach((group) => { - groupedKeys = groupedKeys.concat(groups[group]); - }); - keys.forEach((key) => { - toCheck = [key].concat(aliases[key]); - if (!toCheck.some((k) => groupedKeys.indexOf(k) !== -1)) { - groups[defaultGroup].push(key); - } - }); - return groupedKeys; - } - function filterHiddenOptions(key) { - return yargs.getOptions().hiddenOptions.indexOf(key) < 0 || yargs.parsed.argv[yargs.getOptions().showHiddenOpt]; - } - self.showHelp = (level) => { - const logger = yargs.getInternalMethods().getLoggerInstance(); - if (!level) - level = "error"; - const emit = typeof level === "function" ? level : logger[level]; - emit(self.help()); - }; - self.functionDescription = (fn) => { - const description = fn.name ? shim2.Parser.decamelize(fn.name, "-") : __("generated-value"); - return ["(", description, ")"].join(""); - }; - self.stringifiedValues = function stringifiedValues(values, separator) { - let string = ""; - const sep = separator || ", "; - const array = [].concat(values); - if (!values || !array.length) - return string; - array.forEach((value) => { - if (string.length) - string += sep; - string += JSON.stringify(value); - }); - return string; - }; - function defaultString(value, defaultDescription) { - let string = `[${__("default:")} `; - if (value === undefined && !defaultDescription) - return null; - if (defaultDescription) { - string += defaultDescription; - } else { - switch (typeof value) { - case "string": - string += `"${value}"`; - break; - case "object": - string += JSON.stringify(value); - break; - default: - string += value; - } - } - return `${string}]`; - } - function windowWidth() { - const maxWidth2 = 80; - if (shim2.process.stdColumns) { - return Math.min(maxWidth2, shim2.process.stdColumns); - } else { - return maxWidth2; - } - } - let version = null; - self.version = (ver) => { - version = ver; - }; - self.showVersion = (level) => { - const logger = yargs.getInternalMethods().getLoggerInstance(); - if (!level) - level = "error"; - const emit = typeof level === "function" ? level : logger[level]; - emit(version); - }; - self.reset = function reset(localLookup) { - failMessage = null; - failureOutput = false; - usages = []; - usageDisabled = false; - epilogs = []; - examples = []; - commands = []; - descriptions = objFilter(descriptions, (k) => !localLookup[k]); - return self; - }; - const frozens = []; - self.freeze = function freeze() { - frozens.push({ - failMessage, - failureOutput, - usages, - usageDisabled, - epilogs, - examples, - commands, - descriptions - }); - }; - self.unfreeze = function unfreeze(defaultCommand = false) { - const frozen = frozens.pop(); - if (!frozen) - return; - if (defaultCommand) { - descriptions = { ...frozen.descriptions, ...descriptions }; - commands = [...frozen.commands, ...commands]; - usages = [...frozen.usages, ...usages]; - examples = [...frozen.examples, ...examples]; - epilogs = [...frozen.epilogs, ...epilogs]; - } else { - ({ - failMessage, - failureOutput, - usages, - usageDisabled, - epilogs, - examples, - commands, - descriptions - } = frozen); - } - }; - return self; -} -var isIndentedText = function(text) { - return typeof text === "object"; -}; -var addIndentation = function(text, indent) { - return isIndentedText(text) ? { text: text.text, indentation: text.indentation + indent } : { text, indentation: indent }; -}; -var getIndentation = function(text) { - return isIndentedText(text) ? text.indentation : 0; -}; -var getText = function(text) { - return isIndentedText(text) ? text.text : text; -}; - -// node_modules/yargs/build/lib/completion-templates.js -var completionShTemplate = `###-begin-{{app_name}}-completions-### -# -# yargs command completion script -# -# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc -# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. -# -_{{app_name}}_yargs_completions() -{ - local cur_word args type_list - - cur_word="\${COMP_WORDS[COMP_CWORD]}" - args=("\${COMP_WORDS[@]}") - - # ask yargs to generate completions. - type_list=$({{app_path}} --get-yargs-completions "\${args[@]}") - - COMPREPLY=( $(compgen -W "\${type_list}" -- \${cur_word}) ) - - # if no match was found, fall back to filename completion - if [ \${#COMPREPLY[@]} -eq 0 ]; then - COMPREPLY=() - fi - - return 0 -} -complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}} -###-end-{{app_name}}-completions-### -`; -var completionZshTemplate = `#compdef {{app_name}} -###-begin-{{app_name}}-completions-### -# -# yargs command completion script -# -# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc -# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. -# -_{{app_name}}_yargs_completions() -{ - local reply - local si=$IFS - IFS=$' -' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) - IFS=$si - _describe 'values' reply -} -compdef _{{app_name}}_yargs_completions {{app_name}} -###-end-{{app_name}}-completions-### -`; - -// node_modules/yargs/build/lib/completion.js -function completion(yargs, usage2, command3, shim2) { - return new Completion(yargs, usage2, command3, shim2); -} -var isSyncCompletionFunction = function(completionFunction) { - return completionFunction.length < 3; -}; -var isFallbackCompletionFunction = function(completionFunction) { - return completionFunction.length > 3; -}; - -class Completion { - constructor(yargs, usage2, command3, shim2) { - var _a2, _b2, _c2; - this.yargs = yargs; - this.usage = usage2; - this.command = command3; - this.shim = shim2; - this.completionKey = "get-yargs-completions"; - this.aliases = null; - this.customCompletionFunction = null; - this.indexAfterLastReset = 0; - this.zshShell = (_c2 = ((_a2 = this.shim.getEnv("SHELL")) === null || _a2 === undefined ? undefined : _a2.includes("zsh")) || ((_b2 = this.shim.getEnv("ZSH_NAME")) === null || _b2 === undefined ? undefined : _b2.includes("zsh"))) !== null && _c2 !== undefined ? _c2 : false; - } - defaultCompletion(args, argv, current, done) { - const handlers = this.command.getCommandHandlers(); - for (let i = 0, ii = args.length;i < ii; ++i) { - if (handlers[args[i]] && handlers[args[i]].builder) { - const builder = handlers[args[i]].builder; - if (isCommandBuilderCallback(builder)) { - this.indexAfterLastReset = i + 1; - const y = this.yargs.getInternalMethods().reset(); - builder(y, true); - return y.argv; - } - } - } - const completions = []; - this.commandCompletions(completions, args, current); - this.optionCompletions(completions, args, argv, current); - this.choicesFromOptionsCompletions(completions, args, argv, current); - this.choicesFromPositionalsCompletions(completions, args, argv, current); - done(null, completions); - } - commandCompletions(completions, args, current) { - const parentCommands = this.yargs.getInternalMethods().getContext().commands; - if (!current.match(/^-/) && parentCommands[parentCommands.length - 1] !== current && !this.previousArgHasChoices(args)) { - this.usage.getCommands().forEach((usageCommand) => { - const commandName = parseCommand(usageCommand[0]).cmd; - if (args.indexOf(commandName) === -1) { - if (!this.zshShell) { - completions.push(commandName); - } else { - const desc = usageCommand[1] || ""; - completions.push(commandName.replace(/:/g, "\\:") + ":" + desc); - } - } - }); - } - } - optionCompletions(completions, args, argv, current) { - if ((current.match(/^-/) || current === "" && completions.length === 0) && !this.previousArgHasChoices(args)) { - const options = this.yargs.getOptions(); - const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; - Object.keys(options.key).forEach((key) => { - const negable = !!options.configuration["boolean-negation"] && options.boolean.includes(key); - const isPositionalKey = positionalKeys.includes(key); - if (!isPositionalKey && !options.hiddenOptions.includes(key) && !this.argsContainKey(args, key, negable)) { - this.completeOptionKey(key, completions, current, negable && !!options.default[key]); - } - }); - } - } - choicesFromOptionsCompletions(completions, args, argv, current) { - if (this.previousArgHasChoices(args)) { - const choices = this.getPreviousArgChoices(args); - if (choices && choices.length > 0) { - completions.push(...choices.map((c) => c.replace(/:/g, "\\:"))); - } - } - } - choicesFromPositionalsCompletions(completions, args, argv, current) { - if (current === "" && completions.length > 0 && this.previousArgHasChoices(args)) { - return; - } - const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; - const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length + 1); - const positionalKey = positionalKeys[argv._.length - offset - 1]; - if (!positionalKey) { - return; - } - const choices = this.yargs.getOptions().choices[positionalKey] || []; - for (const choice of choices) { - if (choice.startsWith(current)) { - completions.push(choice.replace(/:/g, "\\:")); - } - } - } - getPreviousArgChoices(args) { - if (args.length < 1) - return; - let previousArg = args[args.length - 1]; - let filter = ""; - if (!previousArg.startsWith("-") && args.length > 1) { - filter = previousArg; - previousArg = args[args.length - 2]; - } - if (!previousArg.startsWith("-")) - return; - const previousArgKey = previousArg.replace(/^-+/, ""); - const options = this.yargs.getOptions(); - const possibleAliases = [ - previousArgKey, - ...this.yargs.getAliases()[previousArgKey] || [] - ]; - let choices; - for (const possibleAlias of possibleAliases) { - if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) && Array.isArray(options.choices[possibleAlias])) { - choices = options.choices[possibleAlias]; - break; - } - } - if (choices) { - return choices.filter((choice) => !filter || choice.startsWith(filter)); - } - } - previousArgHasChoices(args) { - const choices = this.getPreviousArgChoices(args); - return choices !== undefined && choices.length > 0; - } - argsContainKey(args, key, negable) { - const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? "-" : "--") + s) !== -1; - if (argsContains(key)) - return true; - if (negable && argsContains(`no-${key}`)) - return true; - if (this.aliases) { - for (const alias of this.aliases[key]) { - if (argsContains(alias)) - return true; - } - } - return false; - } - completeOptionKey(key, completions, current, negable) { - var _a2, _b2, _c2, _d; - let keyWithDesc = key; - if (this.zshShell) { - const descs = this.usage.getDescriptions(); - const aliasKey = (_b2 = (_a2 = this === null || this === undefined ? undefined : this.aliases) === null || _a2 === undefined ? undefined : _a2[key]) === null || _b2 === undefined ? undefined : _b2.find((alias) => { - const desc2 = descs[alias]; - return typeof desc2 === "string" && desc2.length > 0; - }); - const descFromAlias = aliasKey ? descs[aliasKey] : undefined; - const desc = (_d = (_c2 = descs[key]) !== null && _c2 !== undefined ? _c2 : descFromAlias) !== null && _d !== undefined ? _d : ""; - keyWithDesc = `${key.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "").replace(/(\r\n|\n|\r)/gm, " ")}`; - } - const startsByTwoDashes = (s) => /^--/.test(s); - const isShortOption = (s) => /^[^0-9]$/.test(s); - const dashes = !startsByTwoDashes(current) && isShortOption(key) ? "-" : "--"; - completions.push(dashes + keyWithDesc); - if (negable) { - completions.push(dashes + "no-" + keyWithDesc); - } - } - customCompletion(args, argv, current, done) { - assertNotStrictEqual(this.customCompletionFunction, null, this.shim); - if (isSyncCompletionFunction(this.customCompletionFunction)) { - const result = this.customCompletionFunction(current, argv); - if (isPromise(result)) { - return result.then((list) => { - this.shim.process.nextTick(() => { - done(null, list); - }); - }).catch((err) => { - this.shim.process.nextTick(() => { - done(err, undefined); - }); - }); - } - return done(null, result); - } else if (isFallbackCompletionFunction(this.customCompletionFunction)) { - return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), (completions) => { - done(null, completions); - }); - } else { - return this.customCompletionFunction(current, argv, (completions) => { - done(null, completions); - }); - } - } - getCompletion(args, done) { - const current = args.length ? args[args.length - 1] : ""; - const argv = this.yargs.parse(args, true); - const completionFunction = this.customCompletionFunction ? (argv2) => this.customCompletion(args, argv2, current, done) : (argv2) => this.defaultCompletion(args, argv2, current, done); - return isPromise(argv) ? argv.then(completionFunction) : completionFunction(argv); - } - generateCompletionScript($0, cmd) { - let script = this.zshShell ? completionZshTemplate : completionShTemplate; - const name = this.shim.path.basename($0); - if ($0.match(/\.js$/)) - $0 = `./${$0}`; - script = script.replace(/{{app_name}}/g, name); - script = script.replace(/{{completion_command}}/g, cmd); - return script.replace(/{{app_path}}/g, $0); - } - registerFunction(fn) { - this.customCompletionFunction = fn; - } - setParsed(parsed) { - this.aliases = parsed.aliases; - } -} - -// node_modules/yargs/build/lib/utils/levenshtein.js -function levenshtein(a, b) { - if (a.length === 0) - return b.length; - if (b.length === 0) - return a.length; - const matrix = []; - let i; - for (i = 0;i <= b.length; i++) { - matrix[i] = [i]; - } - let j; - for (j = 0;j <= a.length; j++) { - matrix[0][j] = j; - } - for (i = 1;i <= b.length; i++) { - for (j = 1;j <= a.length; j++) { - if (b.charAt(i - 1) === a.charAt(j - 1)) { - matrix[i][j] = matrix[i - 1][j - 1]; - } else { - if (i > 1 && j > 1 && b.charAt(i - 2) === a.charAt(j - 1) && b.charAt(i - 1) === a.charAt(j - 2)) { - matrix[i][j] = matrix[i - 2][j - 2] + 1; - } else { - matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); - } - } - } - } - return matrix[b.length][a.length]; -} - -// node_modules/yargs/build/lib/validation.js -function validation(yargs, usage2, shim2) { - const __ = shim2.y18n.__; - const __n = shim2.y18n.__n; - const self = {}; - self.nonOptionCount = function nonOptionCount(argv) { - const demandedCommands = yargs.getDemandedCommands(); - const positionalCount = argv._.length + (argv["--"] ? argv["--"].length : 0); - const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length; - if (demandedCommands._ && (_s < demandedCommands._.min || _s > demandedCommands._.max)) { - if (_s < demandedCommands._.min) { - if (demandedCommands._.minMsg !== undefined) { - usage2.fail(demandedCommands._.minMsg ? demandedCommands._.minMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.min.toString()) : null); - } else { - usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", _s, _s.toString(), demandedCommands._.min.toString())); - } - } else if (_s > demandedCommands._.max) { - if (demandedCommands._.maxMsg !== undefined) { - usage2.fail(demandedCommands._.maxMsg ? demandedCommands._.maxMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.max.toString()) : null); - } else { - usage2.fail(__n("Too many non-option arguments: got %s, maximum of %s", "Too many non-option arguments: got %s, maximum of %s", _s, _s.toString(), demandedCommands._.max.toString())); - } - } - } - }; - self.positionalCount = function positionalCount(required, observed) { - if (observed < required) { - usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", observed, observed + "", required + "")); - } - }; - self.requiredArguments = function requiredArguments(argv, demandedOptions) { - let missing = null; - for (const key of Object.keys(demandedOptions)) { - if (!Object.prototype.hasOwnProperty.call(argv, key) || typeof argv[key] === "undefined") { - missing = missing || {}; - missing[key] = demandedOptions[key]; - } - } - if (missing) { - const customMsgs = []; - for (const key of Object.keys(missing)) { - const msg = missing[key]; - if (msg && customMsgs.indexOf(msg) < 0) { - customMsgs.push(msg); - } - } - const customMsg = customMsgs.length ? `\n${customMsgs.join("\n")}` : ""; - usage2.fail(__n("Missing required argument: %s", "Missing required arguments: %s", Object.keys(missing).length, Object.keys(missing).join(", ") + customMsg)); - } - }; - self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { - var _a2; - const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands(); - const unknown = []; - const currentContext = yargs.getInternalMethods().getContext(); - Object.keys(argv).forEach((key) => { - if (!specialKeys.includes(key) && !Object.prototype.hasOwnProperty.call(positionalMap, key) && !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) && !self.isValidAndSomeAliasIsNotNew(key, aliases)) { - unknown.push(key); - } - }); - if (checkPositionals && (currentContext.commands.length > 0 || commandKeys.length > 0 || isDefaultCommand)) { - argv._.slice(currentContext.commands.length).forEach((key) => { - if (!commandKeys.includes("" + key)) { - unknown.push("" + key); - } - }); - } - if (checkPositionals) { - const demandedCommands = yargs.getDemandedCommands(); - const maxNonOptDemanded = ((_a2 = demandedCommands._) === null || _a2 === undefined ? undefined : _a2.max) || 0; - const expected = currentContext.commands.length + maxNonOptDemanded; - if (expected < argv._.length) { - argv._.slice(expected).forEach((key) => { - key = String(key); - if (!currentContext.commands.includes(key) && !unknown.includes(key)) { - unknown.push(key); - } - }); - } - } - if (unknown.length) { - usage2.fail(__n("Unknown argument: %s", "Unknown arguments: %s", unknown.length, unknown.map((s) => s.trim() ? s : `"${s}"`).join(", "))); - } - }; - self.unknownCommands = function unknownCommands(argv) { - const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands(); - const unknown = []; - const currentContext = yargs.getInternalMethods().getContext(); - if (currentContext.commands.length > 0 || commandKeys.length > 0) { - argv._.slice(currentContext.commands.length).forEach((key) => { - if (!commandKeys.includes("" + key)) { - unknown.push("" + key); - } - }); - } - if (unknown.length > 0) { - usage2.fail(__n("Unknown command: %s", "Unknown commands: %s", unknown.length, unknown.join(", "))); - return true; - } else { - return false; - } - }; - self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { - if (!Object.prototype.hasOwnProperty.call(aliases, key)) { - return false; - } - const newAliases = yargs.parsed.newAliases; - return [key, ...aliases[key]].some((a) => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]); - }; - self.limitedChoices = function limitedChoices(argv) { - const options = yargs.getOptions(); - const invalid = {}; - if (!Object.keys(options.choices).length) - return; - Object.keys(argv).forEach((key) => { - if (specialKeys.indexOf(key) === -1 && Object.prototype.hasOwnProperty.call(options.choices, key)) { - [].concat(argv[key]).forEach((value) => { - if (options.choices[key].indexOf(value) === -1 && value !== undefined) { - invalid[key] = (invalid[key] || []).concat(value); - } - }); - } - }); - const invalidKeys = Object.keys(invalid); - if (!invalidKeys.length) - return; - let msg = __("Invalid values:"); - invalidKeys.forEach((key) => { - msg += `\n ${__("Argument: %s, Given: %s, Choices: %s", key, usage2.stringifiedValues(invalid[key]), usage2.stringifiedValues(options.choices[key]))}`; - }); - usage2.fail(msg); - }; - let implied = {}; - self.implies = function implies(key, value) { - argsert(" [array|number|string]", [key, value], arguments.length); - if (typeof key === "object") { - Object.keys(key).forEach((k) => { - self.implies(k, key[k]); - }); - } else { - yargs.global(key); - if (!implied[key]) { - implied[key] = []; - } - if (Array.isArray(value)) { - value.forEach((i) => self.implies(key, i)); - } else { - assertNotStrictEqual(value, undefined, shim2); - implied[key].push(value); - } - } - }; - self.getImplied = function getImplied() { - return implied; - }; - function keyExists(argv, val) { - const num = Number(val); - val = isNaN(num) ? val : num; - if (typeof val === "number") { - val = argv._.length >= val; - } else if (val.match(/^--no-.+/)) { - val = val.match(/^--no-(.+)/)[1]; - val = !Object.prototype.hasOwnProperty.call(argv, val); - } else { - val = Object.prototype.hasOwnProperty.call(argv, val); - } - return val; - } - self.implications = function implications(argv) { - const implyFail = []; - Object.keys(implied).forEach((key) => { - const origKey = key; - (implied[key] || []).forEach((value) => { - let key2 = origKey; - const origValue = value; - key2 = keyExists(argv, key2); - value = keyExists(argv, value); - if (key2 && !value) { - implyFail.push(` ${origKey} -> ${origValue}`); - } - }); - }); - if (implyFail.length) { - let msg = `${__("Implications failed:")}\n`; - implyFail.forEach((value) => { - msg += value; - }); - usage2.fail(msg); - } - }; - let conflicting = {}; - self.conflicts = function conflicts(key, value) { - argsert(" [array|string]", [key, value], arguments.length); - if (typeof key === "object") { - Object.keys(key).forEach((k) => { - self.conflicts(k, key[k]); - }); - } else { - yargs.global(key); - if (!conflicting[key]) { - conflicting[key] = []; - } - if (Array.isArray(value)) { - value.forEach((i) => self.conflicts(key, i)); - } else { - conflicting[key].push(value); - } - } - }; - self.getConflicting = () => conflicting; - self.conflicting = function conflictingFn(argv) { - Object.keys(argv).forEach((key) => { - if (conflicting[key]) { - conflicting[key].forEach((value) => { - if (value && argv[key] !== undefined && argv[value] !== undefined) { - usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); - } - }); - } - }); - if (yargs.getInternalMethods().getParserConfiguration()["strip-dashed"]) { - Object.keys(conflicting).forEach((key) => { - conflicting[key].forEach((value) => { - if (value && argv[shim2.Parser.camelCase(key)] !== undefined && argv[shim2.Parser.camelCase(value)] !== undefined) { - usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); - } - }); - }); - } - }; - self.recommendCommands = function recommendCommands(cmd, potentialCommands) { - const threshold = 3; - potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); - let recommended = null; - let bestDistance = Infinity; - for (let i = 0, candidate;(candidate = potentialCommands[i]) !== undefined; i++) { - const d = levenshtein(cmd, candidate); - if (d <= threshold && d < bestDistance) { - bestDistance = d; - recommended = candidate; - } - } - if (recommended) - usage2.fail(__("Did you mean %s?", recommended)); - }; - self.reset = function reset(localLookup) { - implied = objFilter(implied, (k) => !localLookup[k]); - conflicting = objFilter(conflicting, (k) => !localLookup[k]); - return self; - }; - const frozens = []; - self.freeze = function freeze() { - frozens.push({ - implied, - conflicting - }); - }; - self.unfreeze = function unfreeze() { - const frozen = frozens.pop(); - assertNotStrictEqual(frozen, undefined, shim2); - ({ implied, conflicting } = frozen); - }; - return self; -} -var specialKeys = ["$0", "--", "_"]; - -// node_modules/yargs/build/lib/utils/apply-extends.js -function applyExtends(config, cwd, mergeExtends, _shim) { - shim2 = _shim; - let defaultConfig = {}; - if (Object.prototype.hasOwnProperty.call(config, "extends")) { - if (typeof config.extends !== "string") - return defaultConfig; - const isPath = /\.json|\..*rc$/.test(config.extends); - let pathToDefault = null; - if (!isPath) { - try { - pathToDefault = require.resolve(config.extends); - } catch (_err) { - return config; - } - } else { - pathToDefault = getPathToDefaultConfig(cwd, config.extends); - } - checkForCircularExtends(pathToDefault); - previouslyVisitedConfigs.push(pathToDefault); - defaultConfig = isPath ? JSON.parse(shim2.readFileSync(pathToDefault, "utf8")) : require(config.extends); - delete config.extends; - defaultConfig = applyExtends(defaultConfig, shim2.path.dirname(pathToDefault), mergeExtends, shim2); - } - previouslyVisitedConfigs = []; - return mergeExtends ? mergeDeep(defaultConfig, config) : Object.assign({}, defaultConfig, config); -} -var checkForCircularExtends = function(cfgPath) { - if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { - throw new YError(`Circular extended configurations: '${cfgPath}'.`); - } -}; -var getPathToDefaultConfig = function(cwd, pathToExtend) { - return shim2.path.resolve(cwd, pathToExtend); -}; -var mergeDeep = function(config1, config2) { - const target = {}; - function isObject(obj) { - return obj && typeof obj === "object" && !Array.isArray(obj); - } - Object.assign(target, config1); - for (const key of Object.keys(config2)) { - if (isObject(config2[key]) && isObject(target[key])) { - target[key] = mergeDeep(config1[key], config2[key]); - } else { - target[key] = config2[key]; - } - } - return target; -}; -var previouslyVisitedConfigs = []; -var shim2; - -// node_modules/yargs/build/lib/yargs-factory.js -function YargsFactory(_shim) { - return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => { - const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim); - Object.defineProperty(yargs, "argv", { - get: () => { - return yargs.parse(); - }, - enumerable: true - }); - yargs.help(); - yargs.version(); - return yargs; - }; -} -function isYargsInstance(y) { - return !!y && typeof y.getInternalMethods === "function"; -} -var __classPrivateFieldSet = function(receiver, state, value, kind, f) { - if (kind === "m") - throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) - throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) - throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; -}; -var __classPrivateFieldGet = function(receiver, state, kind, f) { - if (kind === "a" && !f) - throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) - throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -}; -var _YargsInstance_command; -var _YargsInstance_cwd; -var _YargsInstance_context; -var _YargsInstance_completion; -var _YargsInstance_completionCommand; -var _YargsInstance_defaultShowHiddenOpt; -var _YargsInstance_exitError; -var _YargsInstance_detectLocale; -var _YargsInstance_emittedWarnings; -var _YargsInstance_exitProcess; -var _YargsInstance_frozens; -var _YargsInstance_globalMiddleware; -var _YargsInstance_groups; -var _YargsInstance_hasOutput; -var _YargsInstance_helpOpt; -var _YargsInstance_isGlobalContext; -var _YargsInstance_logger; -var _YargsInstance_output; -var _YargsInstance_options; -var _YargsInstance_parentRequire; -var _YargsInstance_parserConfig; -var _YargsInstance_parseFn; -var _YargsInstance_parseContext; -var _YargsInstance_pkgs; -var _YargsInstance_preservedGroups; -var _YargsInstance_processArgs; -var _YargsInstance_recommendCommands; -var _YargsInstance_shim; -var _YargsInstance_strict; -var _YargsInstance_strictCommands; -var _YargsInstance_strictOptions; -var _YargsInstance_usage; -var _YargsInstance_usageConfig; -var _YargsInstance_versionOpt; -var _YargsInstance_validation; -var kCopyDoubleDash = Symbol("copyDoubleDash"); -var kCreateLogger = Symbol("copyDoubleDash"); -var kDeleteFromParserHintObject = Symbol("deleteFromParserHintObject"); -var kEmitWarning = Symbol("emitWarning"); -var kFreeze = Symbol("freeze"); -var kGetDollarZero = Symbol("getDollarZero"); -var kGetParserConfiguration = Symbol("getParserConfiguration"); -var kGetUsageConfiguration = Symbol("getUsageConfiguration"); -var kGuessLocale = Symbol("guessLocale"); -var kGuessVersion = Symbol("guessVersion"); -var kParsePositionalNumbers = Symbol("parsePositionalNumbers"); -var kPkgUp = Symbol("pkgUp"); -var kPopulateParserHintArray = Symbol("populateParserHintArray"); -var kPopulateParserHintSingleValueDictionary = Symbol("populateParserHintSingleValueDictionary"); -var kPopulateParserHintArrayDictionary = Symbol("populateParserHintArrayDictionary"); -var kPopulateParserHintDictionary = Symbol("populateParserHintDictionary"); -var kSanitizeKey = Symbol("sanitizeKey"); -var kSetKey = Symbol("setKey"); -var kUnfreeze = Symbol("unfreeze"); -var kValidateAsync = Symbol("validateAsync"); -var kGetCommandInstance = Symbol("getCommandInstance"); -var kGetContext = Symbol("getContext"); -var kGetHasOutput = Symbol("getHasOutput"); -var kGetLoggerInstance = Symbol("getLoggerInstance"); -var kGetParseContext = Symbol("getParseContext"); -var kGetUsageInstance = Symbol("getUsageInstance"); -var kGetValidationInstance = Symbol("getValidationInstance"); -var kHasParseCallback = Symbol("hasParseCallback"); -var kIsGlobalContext = Symbol("isGlobalContext"); -var kPostProcess = Symbol("postProcess"); -var kRebase = Symbol("rebase"); -var kReset = Symbol("reset"); -var kRunYargsParserAndExecuteCommands = Symbol("runYargsParserAndExecuteCommands"); -var kRunValidation = Symbol("runValidation"); -var kSetHasOutput = Symbol("setHasOutput"); -var kTrackManuallySetKeys = Symbol("kTrackManuallySetKeys"); - -class YargsInstance { - constructor(processArgs = [], cwd, parentRequire, shim3) { - this.customScriptName = false; - this.parsed = false; - _YargsInstance_command.set(this, undefined); - _YargsInstance_cwd.set(this, undefined); - _YargsInstance_context.set(this, { commands: [], fullCommands: [] }); - _YargsInstance_completion.set(this, null); - _YargsInstance_completionCommand.set(this, null); - _YargsInstance_defaultShowHiddenOpt.set(this, "show-hidden"); - _YargsInstance_exitError.set(this, null); - _YargsInstance_detectLocale.set(this, true); - _YargsInstance_emittedWarnings.set(this, {}); - _YargsInstance_exitProcess.set(this, true); - _YargsInstance_frozens.set(this, []); - _YargsInstance_globalMiddleware.set(this, undefined); - _YargsInstance_groups.set(this, {}); - _YargsInstance_hasOutput.set(this, false); - _YargsInstance_helpOpt.set(this, null); - _YargsInstance_isGlobalContext.set(this, true); - _YargsInstance_logger.set(this, undefined); - _YargsInstance_output.set(this, ""); - _YargsInstance_options.set(this, undefined); - _YargsInstance_parentRequire.set(this, undefined); - _YargsInstance_parserConfig.set(this, {}); - _YargsInstance_parseFn.set(this, null); - _YargsInstance_parseContext.set(this, null); - _YargsInstance_pkgs.set(this, {}); - _YargsInstance_preservedGroups.set(this, {}); - _YargsInstance_processArgs.set(this, undefined); - _YargsInstance_recommendCommands.set(this, false); - _YargsInstance_shim.set(this, undefined); - _YargsInstance_strict.set(this, false); - _YargsInstance_strictCommands.set(this, false); - _YargsInstance_strictOptions.set(this, false); - _YargsInstance_usage.set(this, undefined); - _YargsInstance_usageConfig.set(this, {}); - _YargsInstance_versionOpt.set(this, null); - _YargsInstance_validation.set(this, undefined); - __classPrivateFieldSet(this, _YargsInstance_shim, shim3, "f"); - __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, "f"); - __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, "f"); - __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, "f"); - __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), "f"); - this.$0 = this[kGetDollarZero](); - this[kReset](); - __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f"), "f"); - __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), "f"); - __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f"), "f"); - __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f"), "f"); - __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); - __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), "f"); - } - addHelpOpt(opt, msg) { - const defaultHelpOpt = "help"; - argsert("[string|boolean] [string]", [opt, msg], arguments.length); - if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { - this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); - __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, "f"); - } - if (opt === false && msg === undefined) - return this; - __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === "string" ? opt : defaultHelpOpt, "f"); - this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); - this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show help")); - return this; - } - help(opt, msg) { - return this.addHelpOpt(opt, msg); - } - addShowHiddenOpt(opt, msg) { - argsert("[string|boolean] [string]", [opt, msg], arguments.length); - if (opt === false && msg === undefined) - return this; - const showHiddenOpt = typeof opt === "string" ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); - this.boolean(showHiddenOpt); - this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show hidden options")); - __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = showHiddenOpt; - return this; - } - showHidden(opt, msg) { - return this.addShowHiddenOpt(opt, msg); - } - alias(key, value) { - argsert(" [string|array]", [key, value], arguments.length); - this[kPopulateParserHintArrayDictionary](this.alias.bind(this), "alias", key, value); - return this; - } - array(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("array", keys); - this[kTrackManuallySetKeys](keys); - return this; - } - boolean(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("boolean", keys); - this[kTrackManuallySetKeys](keys); - return this; - } - check(f, global2) { - argsert(" [boolean]", [f, global2], arguments.length); - this.middleware((argv, _yargs) => { - return maybeAsyncResult(() => { - return f(argv, _yargs.getOptions()); - }, (result) => { - if (!result) { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(__classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__("Argument check failed: %s", f.toString())); - } else if (typeof result === "string" || result instanceof Error) { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(result.toString(), result); - } - return argv; - }, (err) => { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message ? err.message : err.toString(), err); - return argv; - }); - }, false, global2); - return this; - } - choices(key, value) { - argsert(" [string|array]", [key, value], arguments.length); - this[kPopulateParserHintArrayDictionary](this.choices.bind(this), "choices", key, value); - return this; - } - coerce(keys, value) { - argsert(" [function]", [keys, value], arguments.length); - if (Array.isArray(keys)) { - if (!value) { - throw new YError("coerce callback must be provided"); - } - for (const key of keys) { - this.coerce(key, value); - } - return this; - } else if (typeof keys === "object") { - for (const key of Object.keys(keys)) { - this.coerce(key, keys[key]); - } - return this; - } - if (!value) { - throw new YError("coerce callback must be provided"); - } - __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; - __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addCoerceMiddleware((argv, yargs) => { - let aliases; - const shouldCoerce = Object.prototype.hasOwnProperty.call(argv, keys); - if (!shouldCoerce) { - return argv; - } - return maybeAsyncResult(() => { - aliases = yargs.getAliases(); - return value(argv[keys]); - }, (result) => { - argv[keys] = result; - const stripAliased = yargs.getInternalMethods().getParserConfiguration()["strip-aliased"]; - if (aliases[keys] && stripAliased !== true) { - for (const alias of aliases[keys]) { - argv[alias] = result; - } - } - return argv; - }, (err) => { - throw new YError(err.message); - }); - }, keys); - return this; - } - conflicts(key1, key2) { - argsert(" [string|array]", [key1, key2], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicts(key1, key2); - return this; - } - config(key = "config", msg, parseFn) { - argsert("[object|string] [string|function] [function]", [key, msg, parseFn], arguments.length); - if (typeof key === "object" && !Array.isArray(key)) { - key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()["deep-merge-config"] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(key); - return this; - } - if (typeof msg === "function") { - parseFn = msg; - msg = undefined; - } - this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Path to JSON config file")); - (Array.isArray(key) ? key : [key]).forEach((k) => { - __classPrivateFieldGet(this, _YargsInstance_options, "f").config[k] = parseFn || true; - }); - return this; - } - completion(cmd, desc, fn) { - argsert("[string] [string|boolean|function] [function]", [cmd, desc, fn], arguments.length); - if (typeof desc === "function") { - fn = desc; - desc = undefined; - } - __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || "completion", "f"); - if (!desc && desc !== false) { - desc = "generate completion script"; - } - this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), desc); - if (fn) - __classPrivateFieldGet(this, _YargsInstance_completion, "f").registerFunction(fn); - return this; - } - command(cmd, description, builder, handler, middlewares, deprecated) { - argsert(" [string|boolean] [function|object] [function] [array] [boolean|string]", [cmd, description, builder, handler, middlewares, deprecated], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_command, "f").addHandler(cmd, description, builder, handler, middlewares, deprecated); - return this; - } - commands(cmd, description, builder, handler, middlewares, deprecated) { - return this.command(cmd, description, builder, handler, middlewares, deprecated); - } - commandDir(dir, opts) { - argsert(" [object]", [dir, opts], arguments.length); - const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, "f") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").require; - __classPrivateFieldGet(this, _YargsInstance_command, "f").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, "f").getCallerFile(), opts); - return this; - } - count(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("count", keys); - this[kTrackManuallySetKeys](keys); - return this; - } - default(key, value, defaultDescription) { - argsert(" [*] [string]", [key, value, defaultDescription], arguments.length); - if (defaultDescription) { - assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = defaultDescription; - } - if (typeof value === "function") { - assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key]) - __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = __classPrivateFieldGet(this, _YargsInstance_usage, "f").functionDescription(value); - value = value.call(); - } - this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), "default", key, value); - return this; - } - defaults(key, value, defaultDescription) { - return this.default(key, value, defaultDescription); - } - demandCommand(min = 1, max, minMsg, maxMsg) { - argsert("[number] [number|string] [string|null|undefined] [string|null|undefined]", [min, max, minMsg, maxMsg], arguments.length); - if (typeof max !== "number") { - minMsg = max; - max = Infinity; - } - this.global("_", false); - __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands._ = { - min, - max, - minMsg, - maxMsg - }; - return this; - } - demand(keys, max, msg) { - if (Array.isArray(max)) { - max.forEach((key) => { - assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - this.demandOption(key, msg); - }); - max = Infinity; - } else if (typeof max !== "number") { - msg = max; - max = Infinity; - } - if (typeof keys === "number") { - assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - this.demandCommand(keys, max, msg, msg); - } else if (Array.isArray(keys)) { - keys.forEach((key) => { - assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - this.demandOption(key, msg); - }); - } else { - if (typeof msg === "string") { - this.demandOption(keys, msg); - } else if (msg === true || typeof msg === "undefined") { - this.demandOption(keys); - } - } - return this; - } - demandOption(keys, msg) { - argsert(" [string]", [keys, msg], arguments.length); - this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), "demandedOptions", keys, msg); - return this; - } - deprecateOption(option, message) { - argsert(" [string|boolean]", [option, message], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions[option] = message; - return this; - } - describe(keys, description) { - argsert(" [string]", [keys, description], arguments.length); - this[kSetKey](keys, true); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").describe(keys, description); - return this; - } - detectLocale(detect) { - argsert("", [detect], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, "f"); - return this; - } - env(prefix) { - argsert("[string|boolean]", [prefix], arguments.length); - if (prefix === false) - delete __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; - else - __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix = prefix || ""; - return this; - } - epilogue(msg) { - argsert("", [msg], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").epilog(msg); - return this; - } - epilog(msg) { - return this.epilogue(msg); - } - example(cmd, description) { - argsert(" [string]", [cmd, description], arguments.length); - if (Array.isArray(cmd)) { - cmd.forEach((exampleParams) => this.example(...exampleParams)); - } else { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").example(cmd, description); - } - return this; - } - exit(code, err) { - __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); - __classPrivateFieldSet(this, _YargsInstance_exitError, err, "f"); - if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) - __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.exit(code); - } - exitProcess(enabled = true) { - argsert("[boolean]", [enabled], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, "f"); - return this; - } - fail(f) { - argsert("", [f], arguments.length); - if (typeof f === "boolean" && f !== false) { - throw new YError("Invalid first argument. Expected function or boolean 'false'"); - } - __classPrivateFieldGet(this, _YargsInstance_usage, "f").failFn(f); - return this; - } - getAliases() { - return this.parsed ? this.parsed.aliases : {}; - } - async getCompletion(args, done) { - argsert(" [function]", [args, done], arguments.length); - if (!done) { - return new Promise((resolve5, reject) => { - __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, (err, completions) => { - if (err) - reject(err); - else - resolve5(completions); - }); - }); - } else { - return __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, done); - } - } - getDemandedOptions() { - argsert([], 0); - return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedOptions; - } - getDemandedCommands() { - argsert([], 0); - return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands; - } - getDeprecatedOptions() { - argsert([], 0); - return __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions; - } - getDetectLocale() { - return __classPrivateFieldGet(this, _YargsInstance_detectLocale, "f"); - } - getExitProcess() { - return __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"); - } - getGroups() { - return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, "f"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")); - } - getHelp() { - __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); - if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { - if (!this.parsed) { - const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true); - if (isPromise(parse)) { - return parse.then(() => { - return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); - }); - } - } - const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); - if (isPromise(builderResponse)) { - return builderResponse.then(() => { - return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); - }); - } - } - return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, "f").help()); - } - getOptions() { - return __classPrivateFieldGet(this, _YargsInstance_options, "f"); - } - getStrict() { - return __classPrivateFieldGet(this, _YargsInstance_strict, "f"); - } - getStrictCommands() { - return __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"); - } - getStrictOptions() { - return __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"); - } - global(globals, global2) { - argsert(" [boolean]", [globals, global2], arguments.length); - globals = [].concat(globals); - if (global2 !== false) { - __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter((l) => globals.indexOf(l) === -1); - } else { - globals.forEach((g) => { - if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").local.includes(g)) - __classPrivateFieldGet(this, _YargsInstance_options, "f").local.push(g); - }); - } - return this; - } - group(opts, groupName) { - argsert(" ", [opts, groupName], arguments.length); - const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName]; - if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]) { - delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]; - } - const seen = {}; - __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName] = (existing || []).concat(opts).filter((key) => { - if (seen[key]) - return false; - return seen[key] = true; - }); - return this; - } - hide(key) { - argsert("", [key], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_options, "f").hiddenOptions.push(key); - return this; - } - implies(key, value) { - argsert(" [number|string|array]", [key, value], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").implies(key, value); - return this; - } - locale(locale) { - argsert("[string]", [locale], arguments.length); - if (locale === undefined) { - this[kGuessLocale](); - return __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.getLocale(); - } - __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); - __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(locale); - return this; - } - middleware(callback, applyBeforeValidation, global2) { - return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global2); - } - nargs(key, value) { - argsert(" [number]", [key, value], arguments.length); - this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), "narg", key, value); - return this; - } - normalize(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("normalize", keys); - return this; - } - number(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("number", keys); - this[kTrackManuallySetKeys](keys); - return this; - } - option(key, opt) { - argsert(" [object]", [key, opt], arguments.length); - if (typeof key === "object") { - Object.keys(key).forEach((k) => { - this.options(k, key[k]); - }); - } else { - if (typeof opt !== "object") { - opt = {}; - } - this[kTrackManuallySetKeys](key); - if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && (key === "version" || (opt === null || opt === undefined ? undefined : opt.alias) === "version")) { - this[kEmitWarning]([ - '"version" is a reserved word.', - "Please do one of the following:", - '- Disable version with `yargs.version(false)` if using "version" as an option', - "- Use the built-in `yargs.version` method instead (if applicable)", - "- Use a different option key", - "https://yargs.js.org/docs/#api-reference-version" - ].join("\n"), undefined, "versionWarning"); - } - __classPrivateFieldGet(this, _YargsInstance_options, "f").key[key] = true; - if (opt.alias) - this.alias(key, opt.alias); - const deprecate = opt.deprecate || opt.deprecated; - if (deprecate) { - this.deprecateOption(key, deprecate); - } - const demand = opt.demand || opt.required || opt.require; - if (demand) { - this.demand(key, demand); - } - if (opt.demandOption) { - this.demandOption(key, typeof opt.demandOption === "string" ? opt.demandOption : undefined); - } - if (opt.conflicts) { - this.conflicts(key, opt.conflicts); - } - if ("default" in opt) { - this.default(key, opt.default); - } - if (opt.implies !== undefined) { - this.implies(key, opt.implies); - } - if (opt.nargs !== undefined) { - this.nargs(key, opt.nargs); - } - if (opt.config) { - this.config(key, opt.configParser); - } - if (opt.normalize) { - this.normalize(key); - } - if (opt.choices) { - this.choices(key, opt.choices); - } - if (opt.coerce) { - this.coerce(key, opt.coerce); - } - if (opt.group) { - this.group(key, opt.group); - } - if (opt.boolean || opt.type === "boolean") { - this.boolean(key); - if (opt.alias) - this.boolean(opt.alias); - } - if (opt.array || opt.type === "array") { - this.array(key); - if (opt.alias) - this.array(opt.alias); - } - if (opt.number || opt.type === "number") { - this.number(key); - if (opt.alias) - this.number(opt.alias); - } - if (opt.string || opt.type === "string") { - this.string(key); - if (opt.alias) - this.string(opt.alias); - } - if (opt.count || opt.type === "count") { - this.count(key); - } - if (typeof opt.global === "boolean") { - this.global(key, opt.global); - } - if (opt.defaultDescription) { - __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = opt.defaultDescription; - } - if (opt.skipValidation) { - this.skipValidation(key); - } - const desc = opt.describe || opt.description || opt.desc; - const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions(); - if (!Object.prototype.hasOwnProperty.call(descriptions, key) || typeof desc === "string") { - this.describe(key, desc); - } - if (opt.hidden) { - this.hide(key); - } - if (opt.requiresArg) { - this.requiresArg(key); - } - } - return this; - } - options(key, opt) { - return this.option(key, opt); - } - parse(args, shortCircuit, _parseFn) { - argsert("[string|array] [function|boolean|object] [function]", [args, shortCircuit, _parseFn], arguments.length); - this[kFreeze](); - if (typeof args === "undefined") { - args = __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); - } - if (typeof shortCircuit === "object") { - __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, "f"); - shortCircuit = _parseFn; - } - if (typeof shortCircuit === "function") { - __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, "f"); - shortCircuit = false; - } - if (!shortCircuit) - __classPrivateFieldSet(this, _YargsInstance_processArgs, args, "f"); - if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) - __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, "f"); - const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit); - const tmpParsed = this.parsed; - __classPrivateFieldGet(this, _YargsInstance_completion, "f").setParsed(this.parsed); - if (isPromise(parsed)) { - return parsed.then((argv) => { - if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) - __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); - return argv; - }).catch((err) => { - if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) { - __classPrivateFieldGet(this, _YargsInstance_parseFn, "f")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); - } - throw err; - }).finally(() => { - this[kUnfreeze](); - this.parsed = tmpParsed; - }); - } else { - if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) - __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, "f")); - this[kUnfreeze](); - this.parsed = tmpParsed; - } - return parsed; - } - parseAsync(args, shortCircuit, _parseFn) { - const maybePromise = this.parse(args, shortCircuit, _parseFn); - return !isPromise(maybePromise) ? Promise.resolve(maybePromise) : maybePromise; - } - parseSync(args, shortCircuit, _parseFn) { - const maybePromise = this.parse(args, shortCircuit, _parseFn); - if (isPromise(maybePromise)) { - throw new YError(".parseSync() must not be used with asynchronous builders, handlers, or middleware"); - } - return maybePromise; - } - parserConfiguration(config) { - argsert("", [config], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, "f"); - return this; - } - pkgConf(key, rootPath) { - argsert(" [string]", [key, rootPath], arguments.length); - let conf = null; - const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f")); - if (obj[key] && typeof obj[key] === "object") { - conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()["deep-merge-config"] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(conf); - } - return this; - } - positional(key, opts) { - argsert(" ", [key, opts], arguments.length); - const supportedOpts = [ - "default", - "defaultDescription", - "implies", - "normalize", - "choices", - "conflicts", - "coerce", - "type", - "describe", - "desc", - "description", - "alias" - ]; - opts = objFilter(opts, (k, v) => { - if (k === "type" && !["string", "number", "boolean"].includes(v)) - return false; - return supportedOpts.includes(k); - }); - const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands.length - 1]; - const parseOptions = fullCommand ? __classPrivateFieldGet(this, _YargsInstance_command, "f").cmdToParseOptions(fullCommand) : { - array: [], - alias: {}, - default: {}, - demand: {} - }; - objectKeys(parseOptions).forEach((pk) => { - const parseOption = parseOptions[pk]; - if (Array.isArray(parseOption)) { - if (parseOption.indexOf(key) !== -1) - opts[pk] = true; - } else { - if (parseOption[key] && !(pk in opts)) - opts[pk] = parseOption[key]; - } - }); - this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, "f").getPositionalGroupName()); - return this.option(key, opts); - } - recommendCommands(recommend = true) { - argsert("[boolean]", [recommend], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, "f"); - return this; - } - required(keys, max, msg) { - return this.demand(keys, max, msg); - } - require(keys, max, msg) { - return this.demand(keys, max, msg); - } - requiresArg(keys) { - argsert(" [number]", [keys], arguments.length); - if (typeof keys === "string" && __classPrivateFieldGet(this, _YargsInstance_options, "f").narg[keys]) { - return this; - } else { - this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), "narg", keys, NaN); - } - return this; - } - showCompletionScript($0, cmd) { - argsert("[string] [string]", [$0, cmd], arguments.length); - $0 = $0 || this.$0; - __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(__classPrivateFieldGet(this, _YargsInstance_completion, "f").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || "completion")); - return this; - } - showHelp(level) { - argsert("[string|function]", [level], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); - if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { - if (!this.parsed) { - const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), undefined, undefined, 0, true); - if (isPromise(parse)) { - parse.then(() => { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); - }); - return this; - } - } - const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); - if (isPromise(builderResponse)) { - builderResponse.then(() => { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); - }); - return this; - } - } - __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); - return this; - } - scriptName(scriptName) { - this.customScriptName = true; - this.$0 = scriptName; - return this; - } - showHelpOnFail(enabled, message) { - argsert("[boolean|string] [string]", [enabled, message], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelpOnFail(enabled, message); - return this; - } - showVersion(level) { - argsert("[string|function]", [level], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion(level); - return this; - } - skipValidation(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("skipValidation", keys); - return this; - } - strict(enabled) { - argsert("[boolean]", [enabled], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, "f"); - return this; - } - strictCommands(enabled) { - argsert("[boolean]", [enabled], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, "f"); - return this; - } - strictOptions(enabled) { - argsert("[boolean]", [enabled], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, "f"); - return this; - } - string(keys) { - argsert("", [keys], arguments.length); - this[kPopulateParserHintArray]("string", keys); - this[kTrackManuallySetKeys](keys); - return this; - } - terminalWidth() { - argsert([], 0); - return __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.stdColumns; - } - updateLocale(obj) { - return this.updateStrings(obj); - } - updateStrings(obj) { - argsert("", [obj], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); - __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.updateLocale(obj); - return this; - } - usage(msg, description, builder, handler) { - argsert(" [string|boolean] [function|object] [function]", [msg, description, builder, handler], arguments.length); - if (description !== undefined) { - assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - if ((msg || "").match(/^\$0( |$)/)) { - return this.command(msg, description, builder, handler); - } else { - throw new YError(".usage() description must start with $0 if being used as alias for .command()"); - } - } else { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").usage(msg); - return this; - } - } - usageConfiguration(config) { - argsert("", [config], arguments.length); - __classPrivateFieldSet(this, _YargsInstance_usageConfig, config, "f"); - return this; - } - version(opt, msg, ver) { - const defaultVersionOpt = "version"; - argsert("[boolean|string] [string] [string]", [opt, msg, ver], arguments.length); - if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")) { - this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(undefined); - __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, "f"); - } - if (arguments.length === 0) { - ver = this[kGuessVersion](); - opt = defaultVersionOpt; - } else if (arguments.length === 1) { - if (opt === false) { - return this; - } - ver = opt; - opt = defaultVersionOpt; - } else if (arguments.length === 2) { - ver = msg; - msg = undefined; - } - __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === "string" ? opt : defaultVersionOpt, "f"); - msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show version number"); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(ver || undefined); - this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); - this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"), msg); - return this; - } - wrap(cols) { - argsert("", [cols], arguments.length); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").wrap(cols); - return this; - } - [(_YargsInstance_command = new WeakMap, _YargsInstance_cwd = new WeakMap, _YargsInstance_context = new WeakMap, _YargsInstance_completion = new WeakMap, _YargsInstance_completionCommand = new WeakMap, _YargsInstance_defaultShowHiddenOpt = new WeakMap, _YargsInstance_exitError = new WeakMap, _YargsInstance_detectLocale = new WeakMap, _YargsInstance_emittedWarnings = new WeakMap, _YargsInstance_exitProcess = new WeakMap, _YargsInstance_frozens = new WeakMap, _YargsInstance_globalMiddleware = new WeakMap, _YargsInstance_groups = new WeakMap, _YargsInstance_hasOutput = new WeakMap, _YargsInstance_helpOpt = new WeakMap, _YargsInstance_isGlobalContext = new WeakMap, _YargsInstance_logger = new WeakMap, _YargsInstance_output = new WeakMap, _YargsInstance_options = new WeakMap, _YargsInstance_parentRequire = new WeakMap, _YargsInstance_parserConfig = new WeakMap, _YargsInstance_parseFn = new WeakMap, _YargsInstance_parseContext = new WeakMap, _YargsInstance_pkgs = new WeakMap, _YargsInstance_preservedGroups = new WeakMap, _YargsInstance_processArgs = new WeakMap, _YargsInstance_recommendCommands = new WeakMap, _YargsInstance_shim = new WeakMap, _YargsInstance_strict = new WeakMap, _YargsInstance_strictCommands = new WeakMap, _YargsInstance_strictOptions = new WeakMap, _YargsInstance_usage = new WeakMap, _YargsInstance_usageConfig = new WeakMap, _YargsInstance_versionOpt = new WeakMap, _YargsInstance_validation = new WeakMap, kCopyDoubleDash)](argv) { - if (!argv._ || !argv["--"]) - return argv; - argv._.push.apply(argv._, argv["--"]); - try { - delete argv["--"]; - } catch (_err) { - } - return argv; - } - [kCreateLogger]() { - return { - log: (...args) => { - if (!this[kHasParseCallback]()) - console.log(...args); - __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); - if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) - __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + "\n", "f"); - __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(" "), "f"); - }, - error: (...args) => { - if (!this[kHasParseCallback]()) - console.error(...args); - __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); - if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) - __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + "\n", "f"); - __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(" "), "f"); - } - }; - } - [kDeleteFromParserHintObject](optionKey) { - objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, "f")).forEach((hintKey) => { - if (((key) => key === "configObjects")(hintKey)) - return; - const hint = __classPrivateFieldGet(this, _YargsInstance_options, "f")[hintKey]; - if (Array.isArray(hint)) { - if (hint.includes(optionKey)) - hint.splice(hint.indexOf(optionKey), 1); - } else if (typeof hint === "object") { - delete hint[optionKey]; - } - }); - delete __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions()[optionKey]; - } - [kEmitWarning](warning, type, deduplicationId) { - if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId]) { - __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.emitWarning(warning, type); - __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId] = true; - } - } - [kFreeze]() { - __classPrivateFieldGet(this, _YargsInstance_frozens, "f").push({ - options: __classPrivateFieldGet(this, _YargsInstance_options, "f"), - configObjects: __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects.slice(0), - exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"), - groups: __classPrivateFieldGet(this, _YargsInstance_groups, "f"), - strict: __classPrivateFieldGet(this, _YargsInstance_strict, "f"), - strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"), - strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"), - completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), - output: __classPrivateFieldGet(this, _YargsInstance_output, "f"), - exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), - hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"), - parsed: this.parsed, - parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, "f"), - parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") - }); - __classPrivateFieldGet(this, _YargsInstance_usage, "f").freeze(); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").freeze(); - __classPrivateFieldGet(this, _YargsInstance_command, "f").freeze(); - __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").freeze(); - } - [kGetDollarZero]() { - let $0 = ""; - let default$0; - if (/\b(node|iojs|electron)(\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv()[0])) { - default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(1, 2); - } else { - default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(0, 1); - } - $0 = default$0.map((x) => { - const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, "f"), x); - return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; - }).join(" ").trim(); - if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_") && __classPrivateFieldGet(this, _YargsInstance_shim, "f").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_")) { - $0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_").replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.execPath())}/`, ""); - } - return $0; - } - [kGetParserConfiguration]() { - return __classPrivateFieldGet(this, _YargsInstance_parserConfig, "f"); - } - [kGetUsageConfiguration]() { - return __classPrivateFieldGet(this, _YargsInstance_usageConfig, "f"); - } - [kGuessLocale]() { - if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, "f")) - return; - const locale = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LC_ALL") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LC_MESSAGES") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LANG") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LANGUAGE") || "en_US"; - this.locale(locale.replace(/[.:].*/, "")); - } - [kGuessVersion]() { - const obj = this[kPkgUp](); - return obj.version || "unknown"; - } - [kParsePositionalNumbers](argv) { - const args = argv["--"] ? argv["--"] : argv._; - for (let i = 0, arg;(arg = args[i]) !== undefined; i++) { - if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.looksLikeNumber(arg) && Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { - args[i] = Number(arg); - } - } - return argv; - } - [kPkgUp](rootPath) { - const npath = rootPath || "*"; - if (__classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]) - return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; - let obj = {}; - try { - let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, "f").mainFilename; - if (!rootPath && __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.extname(startDir)) { - startDir = __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(startDir); - } - const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, "f").findUp(startDir, (dir, names) => { - if (names.includes("package.json")) { - return "package.json"; - } else { - return; - } - }); - assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, "f").readFileSync(pkgJsonPath, "utf8")); - } catch (_noop) { - } - __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath] = obj || {}; - return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; - } - [kPopulateParserHintArray](type, keys) { - keys = [].concat(keys); - keys.forEach((key) => { - key = this[kSanitizeKey](key); - __classPrivateFieldGet(this, _YargsInstance_options, "f")[type].push(key); - }); - } - [kPopulateParserHintSingleValueDictionary](builder, type, key, value) { - this[kPopulateParserHintDictionary](builder, type, key, value, (type2, key2, value2) => { - __classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] = value2; - }); - } - [kPopulateParserHintArrayDictionary](builder, type, key, value) { - this[kPopulateParserHintDictionary](builder, type, key, value, (type2, key2, value2) => { - __classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] || []).concat(value2); - }); - } - [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) { - if (Array.isArray(key)) { - key.forEach((k) => { - builder(k, value); - }); - } else if (((key2) => typeof key2 === "object")(key)) { - for (const k of objectKeys(key)) { - builder(k, key[k]); - } - } else { - singleKeyHandler(type, this[kSanitizeKey](key), value); - } - } - [kSanitizeKey](key) { - if (key === "__proto__") - return "___proto___"; - return key; - } - [kSetKey](key, set) { - this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), "key", key, set); - return this; - } - [kUnfreeze]() { - var _a2, _b2, _c2, _d, _e, _f, _g, _h, _j, _k, _l, _m; - const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, "f").pop(); - assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); - let configObjects; - _a2 = this, _b2 = this, _c2 = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, { - options: { set value(_o) { - __classPrivateFieldSet(_a2, _YargsInstance_options, _o, "f"); - } }.value, - configObjects, - exitProcess: { set value(_o) { - __classPrivateFieldSet(_b2, _YargsInstance_exitProcess, _o, "f"); - } }.value, - groups: { set value(_o) { - __classPrivateFieldSet(_c2, _YargsInstance_groups, _o, "f"); - } }.value, - output: { set value(_o) { - __classPrivateFieldSet(_d, _YargsInstance_output, _o, "f"); - } }.value, - exitError: { set value(_o) { - __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, "f"); - } }.value, - hasOutput: { set value(_o) { - __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, "f"); - } }.value, - parsed: this.parsed, - strict: { set value(_o) { - __classPrivateFieldSet(_g, _YargsInstance_strict, _o, "f"); - } }.value, - strictCommands: { set value(_o) { - __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, "f"); - } }.value, - strictOptions: { set value(_o) { - __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, "f"); - } }.value, - completionCommand: { set value(_o) { - __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, "f"); - } }.value, - parseFn: { set value(_o) { - __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, "f"); - } }.value, - parseContext: { set value(_o) { - __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, "f"); - } }.value - } = frozen; - __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = configObjects; - __classPrivateFieldGet(this, _YargsInstance_usage, "f").unfreeze(); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").unfreeze(); - __classPrivateFieldGet(this, _YargsInstance_command, "f").unfreeze(); - __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").unfreeze(); - } - [kValidateAsync](validation3, argv) { - return maybeAsyncResult(argv, (result) => { - validation3(result); - return result; - }); - } - getInternalMethods() { - return { - getCommandInstance: this[kGetCommandInstance].bind(this), - getContext: this[kGetContext].bind(this), - getHasOutput: this[kGetHasOutput].bind(this), - getLoggerInstance: this[kGetLoggerInstance].bind(this), - getParseContext: this[kGetParseContext].bind(this), - getParserConfiguration: this[kGetParserConfiguration].bind(this), - getUsageConfiguration: this[kGetUsageConfiguration].bind(this), - getUsageInstance: this[kGetUsageInstance].bind(this), - getValidationInstance: this[kGetValidationInstance].bind(this), - hasParseCallback: this[kHasParseCallback].bind(this), - isGlobalContext: this[kIsGlobalContext].bind(this), - postProcess: this[kPostProcess].bind(this), - reset: this[kReset].bind(this), - runValidation: this[kRunValidation].bind(this), - runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this), - setHasOutput: this[kSetHasOutput].bind(this) - }; - } - [kGetCommandInstance]() { - return __classPrivateFieldGet(this, _YargsInstance_command, "f"); - } - [kGetContext]() { - return __classPrivateFieldGet(this, _YargsInstance_context, "f"); - } - [kGetHasOutput]() { - return __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"); - } - [kGetLoggerInstance]() { - return __classPrivateFieldGet(this, _YargsInstance_logger, "f"); - } - [kGetParseContext]() { - return __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") || {}; - } - [kGetUsageInstance]() { - return __classPrivateFieldGet(this, _YargsInstance_usage, "f"); - } - [kGetValidationInstance]() { - return __classPrivateFieldGet(this, _YargsInstance_validation, "f"); - } - [kHasParseCallback]() { - return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"); - } - [kIsGlobalContext]() { - return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, "f"); - } - [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) { - if (calledFromCommand) - return argv; - if (isPromise(argv)) - return argv; - if (!populateDoubleDash) { - argv = this[kCopyDoubleDash](argv); - } - const parsePositionalNumbers = this[kGetParserConfiguration]()["parse-positional-numbers"] || this[kGetParserConfiguration]()["parse-positional-numbers"] === undefined; - if (parsePositionalNumbers) { - argv = this[kParsePositionalNumbers](argv); - } - if (runGlobalMiddleware) { - argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); - } - return argv; - } - [kReset](aliases = {}) { - __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f") || {}, "f"); - const tmpOptions = {}; - tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local || []; - tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []; - const localLookup = {}; - tmpOptions.local.forEach((l) => { - localLookup[l] = true; - (aliases[l] || []).forEach((a) => { - localLookup[a] = true; - }); - }); - Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, "f")).reduce((acc, groupName) => { - const keys = __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName].filter((key) => !(key in localLookup)); - if (keys.length > 0) { - acc[groupName] = keys; - } - return acc; - }, {})); - __classPrivateFieldSet(this, _YargsInstance_groups, {}, "f"); - const arrayOptions = [ - "array", - "boolean", - "string", - "skipValidation", - "count", - "normalize", - "number", - "hiddenOptions" - ]; - const objectOptions = [ - "narg", - "key", - "alias", - "default", - "defaultDescription", - "config", - "choices", - "demandedOptions", - "demandedCommands", - "deprecatedOptions" - ]; - arrayOptions.forEach((k) => { - tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[k] || []).filter((k2) => !localLookup[k2]); - }); - objectOptions.forEach((k) => { - tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, "f")[k], (k2) => !localLookup[k2]); - }); - tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; - __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, "f"); - __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f") ? __classPrivateFieldGet(this, _YargsInstance_usage, "f").reset(localLookup) : usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); - __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f") ? __classPrivateFieldGet(this, _YargsInstance_validation, "f").reset(localLookup) : validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); - __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f") ? __classPrivateFieldGet(this, _YargsInstance_command, "f").reset() : command(__classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_validation, "f"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); - if (!__classPrivateFieldGet(this, _YargsInstance_completion, "f")) - __classPrivateFieldSet(this, _YargsInstance_completion, completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_command, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); - __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").reset(); - __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, "f"); - __classPrivateFieldSet(this, _YargsInstance_output, "", "f"); - __classPrivateFieldSet(this, _YargsInstance_exitError, null, "f"); - __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, "f"); - this.parsed = false; - return this; - } - [kRebase](base, dir) { - return __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.relative(base, dir); - } - [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) { - let skipValidation = !!calledFromCommand || helpOnly; - args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); - __classPrivateFieldGet(this, _YargsInstance_options, "f").__ = __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__; - __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration = this[kGetParserConfiguration](); - const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, "f").configuration["populate--"]; - const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration, { - "populate--": true - }); - const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f"), { - configuration: { "parse-positional-numbers": false, ...config } - })); - const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, "f")); - let argvPromise = undefined; - const aliases = parsed.aliases; - let helpOptSet = false; - let versionOptSet = false; - Object.keys(argv).forEach((key) => { - if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, "f") && argv[key]) { - helpOptSet = true; - } else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && argv[key]) { - versionOptSet = true; - } - }); - argv.$0 = this.$0; - this.parsed = parsed; - if (commandIndex === 0) { - __classPrivateFieldGet(this, _YargsInstance_usage, "f").clearCachedHelpMessage(); - } - try { - this[kGuessLocale](); - if (shortCircuit) { - return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false); - } - if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { - const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")].concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")] || []).filter((k) => k.length > 1); - if (helpCmds.includes("" + argv._[argv._.length - 1])) { - argv._.pop(); - helpOptSet = true; - } - } - __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, "f"); - const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, "f").getCommands(); - const requestCompletions = __classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey in argv; - const skipRecommendation = helpOptSet || requestCompletions || helpOnly; - if (argv._.length) { - if (handlerKeys.length) { - let firstUnknownCommand; - for (let i = commandIndex || 0, cmd;argv._[i] !== undefined; i++) { - cmd = String(argv._[i]); - if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { - const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly); - return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); - } else if (!firstUnknownCommand && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { - firstUnknownCommand = cmd; - break; - } - } - if (!__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && __classPrivateFieldGet(this, _YargsInstance_recommendCommands, "f") && firstUnknownCommand && !skipRecommendation) { - __classPrivateFieldGet(this, _YargsInstance_validation, "f").recommendCommands(firstUnknownCommand, handlerKeys); - } - } - if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") && argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) && !requestCompletions) { - if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) - setBlocking(true); - this.showCompletionScript(); - this.exit(0); - } - } - if (__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && !skipRecommendation) { - const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly); - return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); - } - if (requestCompletions) { - if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) - setBlocking(true); - args = [].concat(args); - const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey}`) + 1); - __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(completionArgs, (err, completions) => { - if (err) - throw new YError(err.message); - (completions || []).forEach((completion3) => { - __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(completion3); - }); - this.exit(0); - }); - return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false); - } - if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, "f")) { - if (helpOptSet) { - if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) - setBlocking(true); - skipValidation = true; - this.showHelp("log"); - this.exit(0); - } else if (versionOptSet) { - if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) - setBlocking(true); - skipValidation = true; - __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion("log"); - this.exit(0); - } - } - if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.length > 0) { - skipValidation = Object.keys(argv).some((key) => __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.indexOf(key) >= 0 && argv[key] === true); - } - if (!skipValidation) { - if (parsed.error) - throw new YError(parsed.error.message); - if (!requestCompletions) { - const validation3 = this[kRunValidation](aliases, {}, parsed.error); - if (!calledFromCommand) { - argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), true); - } - argvPromise = this[kValidateAsync](validation3, argvPromise !== null && argvPromise !== undefined ? argvPromise : argv); - if (isPromise(argvPromise) && !calledFromCommand) { - argvPromise = argvPromise.then(() => { - return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); - }); - } - } - } - } catch (err) { - if (err instanceof YError) - __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message, err); - else - throw err; - } - return this[kPostProcess](argvPromise !== null && argvPromise !== undefined ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true); - } - [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) { - const demandedOptions = { ...this.getDemandedOptions() }; - return (argv) => { - if (parseErrors) - throw new YError(parseErrors.message); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").nonOptionCount(argv); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").requiredArguments(argv, demandedOptions); - let failedStrictCommands = false; - if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, "f")) { - failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownCommands(argv); - } - if (__classPrivateFieldGet(this, _YargsInstance_strict, "f") && !failedStrictCommands) { - __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand); - } else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, "f")) { - __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, {}, false, false); - } - __classPrivateFieldGet(this, _YargsInstance_validation, "f").limitedChoices(argv); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").implications(argv); - __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicting(argv); - }; - } - [kSetHasOutput]() { - __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); - } - [kTrackManuallySetKeys](keys) { - if (typeof keys === "string") { - __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; - } else { - for (const k of keys) { - __classPrivateFieldGet(this, _YargsInstance_options, "f").key[k] = true; - } - } - } -} - -// node_modules/yargs/index.mjs -var Yargs = YargsFactory(esm_default); -var yargs_default = Yargs; - -// src/output.ts -function debug(...data) { - if (conf.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } -} -function step(data) { - if (conf?.verbose) { - console.error(font.gray(data)); - } -} -var kill = function(error = 1, msg = "") { - msg && console.error(+msg); - process.exit(+error); -}; -var font = {}; -font.red = font.green = font.gray = (str) => str; -var conf = null; -var outputConfig = function(_conf) { - conf = _conf; -}; -var info = function(msg, data = "") { - if (conf.quiet || conf.quietTotal) { - return; - } - if (conf.output || conf.outputMatch) - return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); - console.log.apply(this, [msg, data].filter(Boolean)); -}; -var chat = function(msg, data = "") { - if (conf.verbose) { - info(msg, data); - } else { - debug([msg, data].filter(Boolean).join(" ")); - } -}; -var error = function(msg, data = "") { - if (conf.bail) { - return die(msg, data); - } - if (!conf.quietTotal) { - console.error.apply(this, [" \u274C", font.red(msg), data].filter(Boolean)); - } - return false; -}; -var die = function(msg = "", data = "", displayHelp = false) { - if (displayHelp && !conf.quietTotal) { - conf.showHelp(); - } - msg && error(" \u274C " + msg, data); - kill(); -}; - -// src/engine.ts -function engine(_runtime, conf2 = { engine: "V8" }) { - runtime = _runtime; - outputConfig(conf2); - step("Displaying steps for:"); - step(conf2); - conf2.pattern = getPattern(conf2.pattern, conf2) || ""; - conf2.replacement = getReplacement(conf2.replacement, conf2) || ""; - if (conf2.replacementJs) - conf2.replacementOri = conf2.replacement; - conf2.regex = getRegex(conf2.pattern, conf2) || ""; - step(conf2); - conf2.files = getFilePaths(conf2); - if (!conf2.files.length) { - if (conf2.contentWasPiped) { - return doReplacement("[pipe-data]", conf2, conf2.pipeData); - } - return error(conf2.files.length + " files found"); - } - chat(conf2.files.length + " files found"); - step(conf2); - conf2.files.filter((filepath) => { - if (fs.statSync(filepath).isFile()) { - return true; - } - debug("Not a valid file:", filepath); - return false; - }).forEach((filepath) => openFile(filepath, conf2)); -} -var openFile = function(file, conf2) { - if (conf2.voidAsync) { - chat("Open sync: " + file); - var data = runtime.fileReadSync(file, conf2.encoding); - return doReplacement(file, conf2, data); - } - chat("Open async: " + file); - fs.readFile(file, conf2.encoding, function(err, data2) { - if (err) { - return error(err); - } - return doReplacement(file, conf2, data2); - }); -}; -var doReplacement = function(filePath, conf2, content) { - debug("Work on content from: " + filePath); - if (conf2.replacementJs) { - conf2.replacement = dynamicReplacement(filePath, conf2, content); - } - const result = content.replace(conf2.regex, conf2.replacement); - if (conf2.outputMatch) { - return; - } - if (conf2.output) { - debug("Output result from: " + filePath); - return process.stdout.write(result); - } - if (result === content) { - debug("Nothing changed in: " + filePath); - return; - } - content = ""; - if (conf2.simulate) - return info(filePath); - debug("Write updated content to: " + filePath); - if (conf2.voidBackup) { - return fs.writeFile(filePath, result, conf2.encoding, function(err) { - if (err) { - return error(err); - } - info(filePath); - }); - } - const oriFile = path.normalize(path.join(process.cwd(), filePath)); - const salt = new Date().toISOString().replace(re.colon, "_").replace("Z", ""); - const backupFile = oriFile + "." + salt + ".backup"; - if (conf2.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, conf2.encoding); - if (!conf2.keepBackup) { - fs.unlinkSync(backupFile); - } - } catch (e) { - return error(e); - } - return info(filePath); - } - fs.rename(oriFile, backupFile, (err) => { - if (err) { - return error(err); - } - fs.writeFile(oriFile, result, conf2.encoding, (err2) => { - if (err2) { - return error(err2); - } - if (!conf2.keepBackup) { - fs.unlink(backupFile, (err3) => { - if (err3) { - return error(err3); - } - info(filePath); - }); - } - return info(filePath); - }); - }); -}; -var getPattern = function(pattern, conf2) { - step("Get final pattern"); - pattern = replacePlaceholders(pattern, conf2); - if (conf2.literal) { - pattern = pattern.replace(re.regexSpecialChars, "\\$&"); - } - step(pattern); - return pattern; -}; -var getReplacement = function(replacement, conf2) { - step("Get final replacement"); - replacement = replacePlaceholders(replacement, conf2); - if (conf2.outputMatch) { - step("Output match"); - if (parseInt(process.versions.node) < 6) { - return die("outputMatch is only supported in node 6+"); - } - return function() { - step(arguments); - if (arguments.length === 3) { - step("Printing full match"); - process.stdout.write(arguments[0] + "\n"); - return ""; - } - for (var i = 1;i < arguments.length - 2; i++) { - process.stdout.write(arguments[i]); - } - process.stdout.write("\n"); - return ""; - }; - } - if (conf2.replacementJs && re.capturedGroupRef.test(conf2.replacement) && parseInt(process.versions.node) < 6) { - return die("Captured groups for javascript replacement is only supported in node 6+"); - } - step(replacement); - return replacement; -}; -var getRegex = function(pattern, conf2) { - step("Get final regex with engine: " + conf2.engine); - let regex; - let flags = getFlags(conf2); - switch (conf2.engine) { - case "V8": - try { - regex = new RegExp(pattern, flags); - } catch (e) { - if (conf2.debug) - throw new Error(e); - die(e.message); - } - break; - case "RE2": - try { - const RE2 = (()=>{ throw new Error(`Cannot require module "re2"`);})(); - regex = new RE2(pattern, flags); - } catch (e) { - if (conf2.debug) - throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${conf2.engine} not supported`); - } - step(regex); - return regex; -}; -var getFlags = function(conf2) { - step("Get flags"); - let flags = ""; - if (!conf2.voidGlobal) { - flags += "g"; - } - if (!conf2.voidIgnoreCase) { - flags += "i"; - } - if (!conf2.voidMultiline) { - flags += "m"; - } - if (conf2.dotAll) { - flags += "s"; - } - if (conf2.unicode) { - flags += "u"; - } - step(flags); - return flags; -}; -var readableSize = function(size) { - if (size === 1) { - return "1 Byte"; - } - const i = Math.floor(Math.log(size) / Math.log(1024)); - return (size / Math.pow(1024, i)).toFixed(i ? 1 : 0) + " " + ["Bytes", "KB", "MB", "GB", "TB"][i]; -}; -var dynamicReplacement = function(_file_rr, _config_rr, _data_rr) { - const _time_obj = now; - const _time = localTimeString(_time_obj); - const _pipe = _config_rr.pipeData, _text = _data_rr, _find = _config_rr.pattern, code_rr = _config_rr.replacementOri, _cwd = process.cwd(), _now = _time, _ = " ", _nl = "\n"; - let _file = "\u274C", _file_rel = "\u274C", _dirpath = "\u274C", _dirpath_rel = "\u274C", _dirname = "\u274C", _filename = "\u274C", _name = "\u274C", _ext = "\u274C", _mtime = "\u274C", _ctime = "\u274C", _mtime_obj = new Date(0), _ctime_obj = new Date(0), _bytes = -1, _size = "\u274C", dynamicContent = new Function("require", "fs", "globs", "path", "pipe", "pipe_", "find", "find_", "text", "text_", "file", "file_", "file_rel", "file_rel_", "dirpath", "dirpath_", "dirpath_rel", "dirpath_rel_", "dirname", "dirname_", "filename", "filename_", "name", "name_", "ext", "ext_", "cwd", "cwd_", "now", "now_", "time_obj", "time", "time_", "mtime_obj", "mtime", "mtime_", "ctime_obj", "ctime", "ctime_", "bytes", "bytes_", "size", "size_", "nl", "_", "__code_rr", 'var path = require("path");var __require_ = require;var r = function(file){var result = null;try{result = __require_(file);} catch (e){' + 'var dir = /^[\\/]/.test(file) ? "" : cwd;' + "result = __require_(path.resolve(dir, file));};return result;};require = r;return eval(__code_rr);"); - const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); - const betterToReadfromFile = needsByteOrSize && 50000000 < _text.length; - if (!_config_rr.contentWasPiped) { - _file = path.normalize(path.join(_cwd, _file_rr)); - _file_rel = path.relative(_cwd, _file); - const pathInfo = path.parse(_file); - _dirpath = pathInfo.dir; - _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = (_file.match(re.folderName) || " _")[1]; - _filename = pathInfo.base; - _name = pathInfo.name; - _ext = pathInfo.ext; - if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - const fileStats = fs.statSync(_file); - _bytes = fileStats.size; - _size = readableSize(_bytes); - _mtime_obj = fileStats.mtime; - _ctime_obj = fileStats.ctime; - _mtime = localTimeString(_mtime_obj); - _ctime = localTimeString(_ctime_obj); - } - } - if (needsByteOrSize && _bytes === -1) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - const glob = (a, b) => fGlob.sync(a, { - unique: true, - caseSensitiveMatch: !_config_rr.voidIgnoreCase, - dot: true, - ...b - }); - if (!/\$\d/.test(_config_rr.replacement)) { - return dynamicContent(require, fs, glob, path, _pipe, _pipe + _, _find, _find + _, _text, _text + _, _file, _file + _, _file_rel, _file_rel + _, _dirpath, _dirpath + _, _dirpath_rel, _dirpath_rel + _, _dirname, _dirname + _, _filename, _filename + _, _name, _name + _, _ext, _ext + _, _cwd, _cwd + _, _now, _now + _, _time_obj, _time, _time + _, _mtime_obj, _mtime, _mtime + _, _ctime_obj, _ctime, _ctime + _, _bytes, _bytes + _, _size, _size + _, _nl, _, code_rr); - } - return function() { - step(arguments); - const __pipe = _pipe, __text = _text, __find = _find, __file = _file, __file_rel = _file_rel, __dirpath = _dirpath, __dirpath_rel = _dirpath_rel, __dirname3 = _dirname, __filename2 = _filename, __name = _name, __ext = _ext, __cwd = _cwd, __now = _now, __time_obj = _time_obj, __time = _time, __mtime_obj = _mtime_obj, __mtime = _mtime, __ctime_obj = _ctime_obj, __ctime = _ctime, __bytes = _bytes, __size = _size, __nl = _nl, __ = _, __code_rr = code_rr; - var capturedGroups = ""; - for (var i = 0;i < arguments.length - 2; i++) { - capturedGroups += "var $" + i + "=" + JSON.stringify(arguments[i]) + "; "; - } - return dynamicContent(require, fs, glob, path, __pipe, __pipe + __, __find, __find + __, __text, __text + __, __file, __file + __, __file_rel, __file_rel + __, __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, __dirname3, __dirname3 + __, __filename2, __filename2 + __, __name, __name + __, __ext, __ext + __, __cwd, __cwd + __, __now, __now + _, __time_obj, __time, __time + _, __mtime_obj, __mtime, __mtime + _, __ctime_obj, __ctime, __ctime + _, __bytes, __bytes + __, __size, __size + __, __nl, __, capturedGroups + __code_rr); - }; -}; -var localTimeString = function(dateObj = new Date) { - return `${dateObj.getFullYear()}-${("0" + (dateObj.getMonth() + 1)).slice(-2)}-${("0" + dateObj.getDate()).slice(-2)} ${("0" + dateObj.getHours()).slice(-2)}:${("0" + dateObj.getMinutes()).slice(-2)}:${("0" + dateObj.getSeconds()).slice(-2)}.${("00" + dateObj.getMilliseconds()).slice(-3)}`; -}; -var replacePlaceholders = function(str = "", conf2) { - if (!conf2.voidEuro) { - str = str.replace(re.euro, "$"); - } - if (!conf2.voidSection) { - str = str.replace(re.section, "\\"); - } - return str; -}; -var getFilePaths = function(conf2) { - const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf2; - let filesToInclude = fGlob.sync(includeGlob, { - ignore: excludeGlob, - onlyFiles: true, - unique: true, - caseSensitiveMatch: !voidIgnoreCase, - dot: true - }); - if (excludeRe) { - excludeRe.map((el) => getRegex(getPattern(el, conf2), conf2)).forEach((re) => { - filesToInclude = filesToInclude.filter((el) => !el.match(re)); - }); - } - return filesToInclude; -}; -var fs = require_lib(); -var path = __require("path"); -var fGlob = require_out4(); -var globs = require_globs(); -var now = new Date; -var re = { - euro: /€/g, - section: /§/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ -}; -var version = "PACKAGE_VERSION"; -var runtime; - -// src/cli.ts -function cli2conf(runtime2, args) { - let pattern, replacement; - let needHelp = 0; - if (args.length < 2) { - if (/-v|--?version$/i.test(args.slice(-1)[0])) { - console.log(version); - runtime2.exit(0); - } else if (/-h|--?help$/i.test(args.slice(-1)[0])) { - needHelp = 1; - } else { - needHelp = 2; - } - } else { - [pattern, replacement] = args.splice(0, 2); - } - const argv = yargs_default(args).example(`> rexreplace '(f?(o))o(.*)' '$3$1\u20AC2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'`).example(`> rexreplace '^#' '##' *.md`, `All markdown files in this dir got all headlines moved one level deeper`).example(`> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, `Provide multiple files or globs if needed`).version("v", "Print rexreplace version (can be given as only argument)", version).alias("v", "version").boolean("I").describe("I", "Void case insensitive search pattern.").alias("I", "void-ignore-case").boolean("G").describe("G", "Void global search (stop looking after the first match).").alias("G", "void-global").boolean("M").describe("M", "Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.").alias("M", "void-multiline").boolean("s").describe("s", "Have `.` also match newline.").alias("s", "dot-all").boolean("u").describe("u", "Treat pattern as a sequence of unicode code points.").alias("u", "unicode").default("e", "utf8").alias("e", "encoding").describe("e", "Encoding of files/piped data.").alias("E", "engine").describe("E", "What regex engine to use:").choices("E", ["V8"]).default("E", "V8").boolean("L").describe("L", "Literal string search (no regex used when searching)").alias("L", "literal").boolean("\u20AC").describe("\u20AC", "Void having '\u20AC' as alias for '$' in pattern and replacement parameters").alias("\u20AC", "void-euro").boolean("\xA7").describe("\xA7", "Void having '\xA7' as alias for '\\' in pattern and replacement parameters").alias("\xA7", "void-section").boolean("A").alias("A", "void-async").describe("A", `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `).boolean("H").describe("H", "Halt on first error").alias("H", "halt").alias("H", "bail").default("H", false).boolean("q").describe("q", "Only display errors (no other info)").alias("q", "quiet").boolean("Q").describe("Q", "Never display errors or info").alias("Q", "quiet-total").boolean("B").describe("B", "Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.").alias("B", "void-backup").boolean("b").describe("b", "Keep the backup file with the original content.").alias("b", "keep-backup").boolean("o").describe("o", "Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.").alias("o", "output").boolean("m").describe("m", `Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). `).alias("m", "output-match").boolean("T").alias("T", "trim-pipe").describe("T", `Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. `).boolean("R").alias("R", "replacement-pipe").describe("R", `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`).conflicts("R", "g").conflicts("R", "G").boolean("g").describe("g", "Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt").alias("g", "glob-pipe").conflicts("g", "G").boolean("S").describe("S", "Simulate output without changing any files").alias("S", "simulate").array("x").describe("x", "Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.").alias("x", "exclude-re").array("X").describe("X", "Exclude files found with this glob. Can be used multiple times.").alias("X", "exclude-glob").boolean("V").describe("V", "More chatty output").alias("V", "verbose").boolean("d").describe("d", "Print debug info").alias("d", "debug").boolean("j").alias("j", "replacement-js").describe("j", `Treat replacement as javascript source code. - The statement from the last expression will become the replacement string. - Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. - The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. - At some point, the $ char _will_ give you a headache when used from the command line, so use \u20AC0, \u20AC1, \u20AC2, \u20AC3... instead. - If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. - - The code has access to the following variables: - \`r\` as an alias for \`require\` with both expanded to understand a relative path even if it is not starting with \`./\`, - \`fs\` from node, - \`path\` from node, - \`glob\` proxy name for the .sync function of fast-glob from npm, - \`pipe\`: the data piped into the command (null if no piped data), - \`find\`: pattern searched for (the needle), - \`text\`: full text being searched i.e. file content or piped data (the haystack), - \`bytes\`: total size of the haystack in bytes, - \`size\`: human-friendly representation of the total size of the haystack, - \`time\`: String representing the local time when the command was invoked, - \`time_obj\`: date object representing \`time\`, - \`now\`: alias for \`time\`, - \`cwd\`: current process working dir, - \`nl\`: a new-line char, - \`_\`: a single space char (for easy string concatenation). - - The following values defaults to \`\u274C\` if haystack does not originate from a file: - \`file\`: contains the full path of the active file being searched (including full filename), - \`file_rel\`: contains \`file\` relative to current process working dir, - \`dirpath\`: contains the full path without filename of the active file being searched, - \`dirpath_rel\`: contains \`dirpath\` relative to current process working dir, - \`filename\`: is the full filename of the active file being searched without path, - \`name\`: filename of the active file being searched with no extension, - \`ext\`: extension of the filename including leading dot, - \`mtime\`: ISO inspired representation of the last local modification time of the current file, - \`ctime\`: ISO representation of the local creation time of the current file. - \`mtime_obj\`: date object representing \`mtime\`, - \`ctime_obj\`: date object representing \`ctime\`. - - All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `).help("h").describe("h", "Display help.").alias("h", "help").epilog(`Inspiration: .oO(What should 'sed' have been by now?)`).parseSync(); - let conf2 = {}; - Object.keys(argv).forEach((key) => { - if (1 < key.length && key.indexOf("-") < 0) { - conf2[key] = argv[key]; - } - }); - conf2.showHelp = yargs_default.showHelp; - conf2.needHelp = needHelp; - conf2.pattern = pattern; - conf2.replacement = replacement; - conf2.includeGlob = argv._; - conf2.excludeGlob = argv.excludeGlob ? argv.excludeGlob?.filter(Boolean) : []; - conf2.excludeGlob = argv.excludeRe ? argv.excludeRe?.filter(Boolean) : []; - if (!conf2.replacementJs) { - conf2.replacement = unescapeString(conf2.replacement); - } - return conf2; -} -var unescapeString = function(str = "") { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -}; -function executeReplacement(runtime2, conf2, pipeData = null) { - if (0 < conf2.needHelp) { - runtime2.exit(conf2.needHelp - 1); - } - if (pipeData === null) - return engine(runtime2, conf2); - if (conf2.trimPipe) { - pipeData = pipeData.trim(); - } - if (conf2.replacementPipe) { - step("Replacement from pipe"); - if (pipeData === null) { - return die("You asked the piped data to be used as replacement - but no data arrived."); - } - conf2.replacement = pipeData; - if (conf2.replacementJs) - conf2.pipeData = pipeData; - return engine(runtime2, conf2); - } - if (conf2.globPipe) { - step("globs from pipe"); - if (conf2.pipeData === null) { - return die("You asked the piped data to be use as files/globs to include - but no data arrived."); - } - if (conf2.includeGlob.length) { - return die("Please pipe file/globs to include OR provide them as as parameters. Not both."); - } - conf2.globs = pipeData.split(/\r?\n/).filter(Boolean); - if (conf2.replacementJs) - conf2.pipeData = pipeData; - return engine(runtime2, conf2); - } - if (conf2.includeGlob.length) { - return die("Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters"); - } - step("Content being piped"); - conf2.pipeData = pipeData; - conf2.output = true; - process.stdout.setDefaultEncoding(conf2.encoding); - return engine(runtime2, conf2); -} - -// src/env/node.ts -var import_fs_extra = __toESM(require_lib(), 1); -var runtime2 = { - fileReadSync: (path2, encoding = "utf8") => import_fs_extra.default.readFileSync(path2, { encoding }), - fileReadAsync: (path2, encoding = "utf8") => import_fs_extra.default.readFile(path2, { encoding }), - fileWriteSync: (path2, data, encoding = "utf8") => import_fs_extra.default.writeFileSync(path2, data, { encoding }), - fileWriteAsync: (path2, data, encoding = "utf8") => import_fs_extra.default.writeFile(path2, data, { encoding }), - fileDeleteSync: (path2) => import_fs_extra.default.unlinkSync(path2), - fileDeleteAsync: (path2) => import_fs_extra.default.unlink(path2), - fileCopySync: (originalPath, destinationPath) => { - import_fs_extra.default.copySync(originalPath, destinationPath); - }, - fileCopyAsync: async (originalPath, destinationPath) => { - return import_fs_extra.default.copy(originalPath, destinationPath); - }, - exit: process.exit -}; -(() => { - let conf2 = cli2conf(runtime2, process.argv.slice(2)); - if (Boolean(process.stdin.isTTY)) - return executeReplacement(runtime2, conf2); - process.stdin.setEncoding(conf2.encoding); - let pipeData = ""; - process.stdin.on("readable", () => { - let chunk = process.stdin.read(); - if (chunk !== null) { - pipeData += chunk; - while (chunk = process.stdin.read()) { - pipeData += chunk; - } - } - }); - process.stdin.on("end", () => { - return executeReplacement(runtime2, conf2, pipeData); - }); -})(); -export { - runtime2 as runtime -}; diff --git a/test/cli/run.sh b/test/cli/run.sh index cf6f3f05..a41d9fdc 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -79,9 +79,15 @@ assert "rexreplace o x my.file --output" "fxxbar" reset rexreplace o x my.file --output > stdout.log 2> stderr.log assert "cat my.file" "foobar" -assert "cat stdout.log" "my.file" +assert "cat stdout.log" "fxxbar" assert "cat stderr.log" "" +reset +rexreplace o x my.file --output --verbose > stdout.log 2> stderr.log +assert "cat my.file" "foobar" +assert "cat stdout.log" "fxxbar" +assert "cat stderr.log" "my.file" + reset rexreplace o x my.file > stdout.log 2> stderr.log assert "cat my.file" "fxxbar" From 3ecae50e7975898b16eee63d8b8eaf8371458387 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sat, 30 Sep 2023 18:17:03 +1000 Subject: [PATCH 09/17] WIP - More complete tests --- package.json | 2 +- src/cli.ts | 1 + test/cli/run.sh | 320 ++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 287 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index b948ea70..42913ed7 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ }, "bin": { "rr": "bin/rexreplace.cli.js", - "rexreplace": "bin/env/node.js" + "rexreplace": "dist/env/node.js" }, "scripts": { "test": "yarn build && yarn test-cli && yarn test-js", diff --git a/src/cli.ts b/src/cli.ts index 313a4ba2..7999a3b8 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -266,6 +266,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .boolean('j') .alias('j', 'replacement-js') + .alias('j', 'js') .describe( 'j', `Treat replacement as javascript source code. diff --git a/test/cli/run.sh b/test/cli/run.sh index a41d9fdc..bd0131d2 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +echo RexReplace v$(rexreplace -v) +where rexreplace + DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $DIR/aserta.sh @@ -23,167 +26,277 @@ counter=0 reset() { counter=$((counter + 1)) - echo "$counter: Resetting test data" + echo "$counter: Reset test data" echo 'foobar' > my.file echo 'abc123' > your.file + echo -n > stdout.log + echo -n > stderr.log + +rm stderr.log } -# Plain usage +echo +echo '>' Happy path reset rexreplace x x my.file assert "cat my.file" "foobar" +reset +rr x x my.file +assert "cat my.file" "foobar" + reset rexreplace o x my.file assert "cat my.file" "fxxbar" + reset rexreplace "b" "\n" my.file assert "cat my.file" "foo\nar" -# rr can handle a pattern and replcaement starting with '-' + + +echo +echo '>' rr can handle a pattern and replcaement starting with '-' reset rexreplace '^(.+)$' '- $1' my.file rexreplace '- f' '_' my.file assert "cat my.file" "_oobar" -# Piped data + + +echo +echo '>' Piped data reset assert "cat my.file | rexreplace foo xxx" "xxxbar" -# -v + +echo +echo '>' --version reset assert_success "rexreplace -version" +assert_success "rexreplace --version" +assert_success "rexreplace -v" + + -# -h +echo +echo '>' --help reset assert_success "rexreplace -help" +assert_success "rexreplace --help" +assert_success "rexreplace -h" + + -# -o +echo +echo '>' --output reset -assert "rexreplace x x my.file --output" "foobar" +assert "rexreplace x x my.file --output" "foobar" +assert "rexreplace x x my.file -o" "foobar" + reset -assert "rexreplace o x my.file --output" "fxxbar" +assert "rexreplace o x my.file --output" "fxxbar" + + +reset +assert "rexreplace 'b' '*+*' my.file -o" 'foo*+*ar' + + + +echo +echo '>' --output to pipe output reset rexreplace o x my.file --output > stdout.log 2> stderr.log assert "cat my.file" "foobar" assert "cat stdout.log" "fxxbar" assert "cat stderr.log" "" + reset rexreplace o x my.file --output --verbose > stdout.log 2> stderr.log assert "cat my.file" "foobar" assert "cat stdout.log" "fxxbar" assert "cat stderr.log" "my.file" + reset rexreplace o x my.file > stdout.log 2> stderr.log assert "cat my.file" "fxxbar" assert "cat stdout.log" "my.file" assert "cat stderr.log" "" -rm stdout.log -rm stderr.log -# -E +echo +echo '>' --engine reset # assert "rexreplace o x my.file --output --engine RE2" "fxxbar" # RE2 depricated assert "rexreplace o x my.file --output --engine V8" "fxxbar" +assert "rexreplace o x my.file --output -e V8" "fxxbar" +assert_failure "rexreplace o x my.file --output -e xxxyyyzzz" + -# -b + +echo +echo '>' --keep-backup reset rexreplace o x my.file --keep-backup assert "cat my.file" "fxxbar" assert "cat my.file.*" "foobar" rm my.file.* -# -I + +reset +rexreplace o x my.file -b +assert "cat my.file" "fxxbar" +assert "cat my.file.*" "foobar" +rm my.file.* + + + + +echo +echo '>' --void-ignore-case reset assert "rexreplace Foo xxx my.file -o" "xxxbar" + reset assert "rexreplace Foo xxx my.file -o --void-ignore-case" "foobar" -# -G reset +assert "rexreplace Foo xxx my.file -o --I" "foobar" + + + + +echo +echo '>' --void-global +reset +assert "rexreplace o x my.file -o " "foobar" assert "rexreplace o x my.file -o --void-global" "fxobar" +assert "rexreplace o x my.file -o -G" "fxobar" + + -# -O +echo +echo '>' --output-match reset assert "rexreplace [fb]. _ my.file --output-match" "fo\\nba" +assert "rexreplace [fb]. _ my.file -O" "fo\\nba" + reset assert "rexreplace '([fb](.))' _ my.file --output-match" "foo\\nbaa" -# -GO + + + +echo +echo ": Combine multiple flags (-GO)" reset assert "rexreplace [fb]. _ my.file --output-match --voidGlobal" "fo" +assert "rexreplace [fb]. _ my.file -GO" "fo" + -# -s +echo +echo '>' --dot-all reset echo foobar >> my.file assert "rexreplace ar.foo _ my.file -o --dot-all " "foob_bar" +reset +echo foobar >> my.file +assert "rexreplace ar.foo _ my.file -o -s" "foob_bar" + -# -M + +echo +echo '>' --void-multiline reset echo foobar >> my.file assert "rexreplace '^.' 'x' my.file -o" "xoobar\nxoobar" + reset echo foobar >> my.file assert "rexreplace '^.' 'x' my.file -o --void-multiline" "xoobar\nfoobar" -# back reference +reset +echo foobar >> my.file +assert "rexreplace '^.' 'x' my.file -o" "xoobar\nxoobar" +echo foobar >> my.file +assert "rexreplace '^.' 'x' my.file -o -M" "xoobar\nfoobar" + + + + +echo Reference groups in replcaement reset assert "rexreplace '(f?(o))o(.*)' '\$3\$1\$2' my.file -o" "barfoo" + reset assert "rexreplace '(f?(o))o(.*)' '€3€1€2' my.file -o" "barfoo" -# globs + + +echo +echo '>' Globs reset -echo foobar > my_file + echo foobar > my_file assert "rexreplace o x my*file -o" "fxxbar\nfxxbar" assert "cat my.file" "foobar" rm my_file -# -€ + + +echo +echo '>' --void-euro reset assert "rexreplace '.$' '$' my.file -o" 'fooba$' + reset assert "rexreplace '.€' '€' my.file -o" 'fooba$' + reset assert "rexreplace '.€' '€' my.file -o --void-euro" 'foobar' -# -§ +reset +assert "rexreplace '.€' '€' my.file -o -€" 'foobar' + + + + +echo +echo '>' --void-section reset echo foo[bar] > my.file assert "rexreplace '[\]]' '[' my.file -o" 'foo[bar[' @@ -193,23 +306,52 @@ reset echo foo[bar] > my.file assert "rexreplace '[§]]' '[' my.file -o" 'foo[bar[' + reset echo foo[bar] > my.file assert "rexreplace '[§]]' '[' my.file -o --void-section" 'foo[bar]' -# -j +reset +echo foo[bar] > my.file +assert "rexreplace '[§]]' '[' my.file -o -§" 'foo[bar]' + + + + +echo +echo '>' --replacement-js reset assert "rexreplace 'foo' '2+2' my.file -o --replacement-js" '4bar' + +reset +assert "rexreplace 'foo' '2+2' my.file -o -j" '4bar' + + +reset +assert "rexreplace 'foo' '2+2' my.file -o --js" '4bar' + + reset assert "rexreplace 'foo' 'var i = 2; i + 2' my.file -o --replacement-js" '4bar' + reset #assert "rexreplace '[fb](.)' '€1.toUpperCase();' my.file -o --replacement-js" 'OoAr' +echo +echo '>' require from JS +reset +echo '{versions:999, version:'v1.2.3'}' > my.json +assert "echo VERSION | rexreplace 'VERSION' 'require(`my.json`).version' -j" "v1.2.3" +assert "echo VERSION | rr 'VERSION' 'r(`my.json`).version' -j" "v1.2.3" +rm my.json -# Access to js variables + + +echo +echo '>' Access to js variables reset assert "rexreplace 'fo(o)bar' '[!!fs,!!globs,find,text.trim()].join(\":\")' my.file -o --replacement-js" 'true:true:fo(o)bar:foobar' @@ -221,73 +363,175 @@ assert "printf foobar | rexreplace 'foobar' \"['file:'+file,'dirpath:'+dirpa reset assert "rexreplace 'foobar' \"['filename:'+filename,'name:'+name,'ext:'+ext,'text:'+text].join('|')\" my.file -o --replacement-js" 'filename:my.file|name:my|ext:.file|text:foobar' + reset assert "rexreplace 'foo((b)ar)' '€1+€2' my.file -o --replacement-js" 'barb' -# Content manually testes + +echo +echo '>' Content manually testes # todo: automate test of content reset assert "rexreplace 'foobar' '[require, fs, globs, path, pipe, pipe_, find, find_, text, text_, file, file_, file_rel, file_rel_, dirpath, dirpath_, dirpath_rel, dirpath_rel_, dirname, dirname_, filename, filename_, name, name_, ext, ext_, cwd, cwd_, now, now_, time_obj, time, time_, mtime_obj, mtime, mtime_, ctime_obj, ctime, ctime_, bytes, bytes_, size, size_, _].length' my.file -o --replacement-js" '44' -# -R + + +echo '>' --replacement-pipe reset assert "printf x | rexreplace 'b' _ my.file -o --replacement-pipe" 'fooxar' + +reset +assert "printf x | rexreplace 'b' _ my.file -o -R" 'fooxar' + -# -L + +echo +echo '>' --literal reset -assert "rexreplace 'b' '*+*' my.file -o" 'foo*+*ar' -assert "rexreplace '*+*' 'b' my.file -o --literal" 'foobar' +assert "rexreplace 'b' '*+*' my.file -o" 'foo*+*ar' +assert "rexreplace '*+*' 'b' my.file -o --literal" 'foobar' + + +reset + rexreplace 'b' '*+*' my.file +assert "cat my.file" 'foo*+*ar' +assert "rexreplace '*+*' 'b' my.file -o -L" 'foobar' -# -x + +echo +echo '>' --exclude-re reset rexreplace 'b' '*+*' my.file assert "cat my.file" 'foo*+*ar' assert "cat your.file" 'abc123' + + reset rexreplace 'b' '*+*' '*.file' assert "cat my.file" 'foo*+*ar' assert "cat your.file" 'a*+*c123' + + reset rexreplace 'b' '*+*' '*.file' -x y -assert "cat my.file" 'foobar' +assert "cat my.file" 'foo*+*ar' assert "cat your.file" 'abc123' + + reset rexreplace 'b' '*+*' '*.file' -x ^y assert "cat my.file" 'foo*+*ar' assert "cat your.file" 'abc123' +reset + rexreplace 'b' '*+*' '*.file' --exclude-re ^y +assert "cat my.file" 'foo*+*ar' +assert "cat your.file" 'abc123' + -# -X +reset + rexreplace 'b' '*+*' '*.file' -x=^y +assert "cat my.file" 'foo*+*ar' +assert "cat your.file" 'abc123' + + +reset + rexreplace 'b' '*+*' '*.file' --exclude-re=^y +assert "cat my.file" 'foo*+*ar' +assert "cat your.file" 'abc123' + + + + +echo +echo '>' --exclude-glob reset rexreplace 'b' '*+*' '*.file' -X '*.file' assert "cat my.file" 'foobar' assert "cat your.file" 'abc123' + + reset rexreplace 'b' '*+*' '*.file' -X 'y*' assert "cat my.file" 'foo*+*ar' assert "cat your.file" 'abc123' +reset + rexreplace 'b' '*+*' '*.file' -X='y*' +assert "cat my.file" 'foo*+*ar' +assert "cat your.file" 'abc123' + -# -S +reset + rexreplace 'b' '*+*' '*.file' --exclude-glob '*.file' +assert "cat my.file" 'foobar' +assert "cat your.file" 'abc123' + + +reset + rexreplace 'b' '*+*' '*.file' --exclude-glob 'y*' +assert "cat my.file" 'foo*+*ar' +assert "cat your.file" 'abc123' + + + + +echo +echo '>' --simulate reset rexreplace 'b' '_' 'my.file' -S &> 'your.file' assert "cat your.file" 'my.file' assert "cat 'my.file'" 'foobar' +reset + rexreplace 'b' '_' 'my.file' --simulate &> 'your.file' +assert "cat your.file" 'my.file' +assert "cat 'my.file'" 'foobar' + + + + +echo +echo +echo "# Edge Cases" + + + + +echo +echo '>' Invalid File Paths +reset +rexreplace 'foo' 'bar' invalidfile.md -o > stdout.log 2>stderr.log +assert "cat stdout.log" "" +assert_startswith "cat stderr.log" "0 files found" +echo +echo '>' Illegal Regex + +reset +assert_failure "rexreplace '*foo' 'bar' my.file" + + + +# non existent flag +# missspelled flag +# Multiple Files in 1 glob +# Multiple globs +# Multiple globs picking up the same file + @@ -328,6 +572,10 @@ assert "cat 'my.file'" 'foobar' # assert "rexreplace ??? ??? my.file -q" "foobar" # reset +# Todo: test -Q +# assert "rexreplace ??? ??? my.file -q" "" +# reset + # Todo: test -Q # assert "rexreplace ??? ??? my.file -Q" "foobar" # reset @@ -342,6 +590,8 @@ assert "cat 'my.file'" 'foobar' rm my.file rm your.file +rm stdout.log +rm stderr.log assert_end "rexreplace" From 2e656ab738ee986620f8fc665afa29b91c826e95 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sun, 1 Oct 2023 00:48:23 +1000 Subject: [PATCH 10/17] deno fmt --- src/cli.ts | 118 +++++++++++++++++++--------------------- src/engine.ts | 72 +++++++++++------------- src/env/bun.ts | 4 +- src/env/deno.ts | 16 +++--- src/env/node.ts | 10 ++-- src/multiversion.cli.js | 2 +- src/output.ts | 3 +- 7 files changed, 106 insertions(+), 119 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 7999a3b8..b0a7698b 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -2,9 +2,9 @@ import yargs from 'yargs'; -import * as rexreplace from './engine'; +import * as rexreplace from './engine.ts'; -import {outputConfig, step, debug, chat, info, error, die} from './output'; +import { chat, debug, die, error, info, outputConfig, step } from './output'; const re = { nl: /\r?\n/, @@ -44,99 +44,92 @@ export function cli2conf(runtime: Runtime, args: string[]) { */ .example( `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, - `'foobar' in myfile.md will become 'barfoo'` + `'foobar' in myfile.md will become 'barfoo'`, ) .example( `> rexreplace '^#' '##' *.md`, - `All markdown files in this dir got all headlines moved one level deeper` + `All markdown files in this dir got all headlines moved one level deeper`, ) .example( `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, - `Provide multiple files or globs if needed` + `Provide multiple files or globs if needed`, + ) + .version( + 'v', + 'Print rexreplace version (can be given as only argument)', + rexreplace.version, ) - .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) .alias('v', 'version') - .boolean('I') .describe('I', 'Void case insensitive search pattern.') .alias('I', 'void-ignore-case') - .boolean('G') .describe('G', 'Void global search (stop looking after the first match).') .alias('G', 'void-global') - .boolean('M') .describe( 'M', - 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.' + 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.', ) .alias('M', 'void-multiline') - .boolean('s') .describe('s', 'Have `.` also match newline.') .alias('s', 'dot-all') - .boolean('u') .describe('u', 'Treat pattern as a sequence of unicode code points.') .alias('u', 'unicode') - .default('e', 'utf8') .alias('e', 'encoding') .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') .describe('E', 'What regex engine to use:') .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) .default('E', 'V8') - .boolean('L') .describe('L', 'Literal string search (no regex used when searching)') .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") + .describe( + '€', + 'Void having \'€\' as alias for \'$\' in pattern and replacement parameters', + ) .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") + .describe( + '§', + 'Void having \'§\' as alias for \'\\\' in pattern and replacement parameters', + ) .alias('§', 'void-section') - .boolean('A') .alias('A', 'void-async') .describe( 'A', - `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` + `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `, ) - .boolean('H') .describe('H', 'Halt on first error') .alias('H', 'halt') .alias('H', 'bail') .default('H', false) - .boolean('q') .describe('q', 'Only display errors (no other info)') .alias('q', 'quiet') - .boolean('Q') .describe('Q', 'Never display errors or info') .alias('Q', 'quiet-total') - .boolean('B') .describe( 'B', - 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.' + 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.', ) .alias('B', 'void-backup') - .boolean('b') .describe('b', 'Keep the backup file with the original content.') .alias('b', 'keep-backup') - .boolean('o') .describe( 'o', - 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.' + 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.', ) .alias('o', 'output') //.conflicts('o','O') @@ -148,36 +141,32 @@ export function cli2conf(runtime: Runtime, args: string[]) { `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + `If search pattern does not contain matching groups the full match will be outputted. ` + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + - `` + ``, ) .alias('m', 'output-match') - .boolean('T') .alias('T', 'trim-pipe') .describe( 'T', `Trim piped data before processing. ` + `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + - '' + '', ) - .boolean('R') .alias('R', 'replacement-pipe') .describe( 'R', - `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`, ) .conflicts('R', 'g') .conflicts('R', 'G') - .boolean('g') .describe( 'g', - 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt' + 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt', ) .alias('g', 'glob-pipe') .conflicts('g', 'G') - /* .boolean('G') .describe('G', "filename/globs provided are to files containing one target filename/glob per line") .alias('G', 'glob-file') @@ -186,54 +175,52 @@ export function cli2conf(runtime: Runtime, args: string[]) { .boolean('S') .describe('S', 'Simulate output without changing any files') .alias('S', 'simulate') - .string('x') .describe( 'x', - 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.' + 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.', ) .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') + .describe( + 'X', + 'Exclude files found with this glob. Can be used multiple times.', + ) .alias('X', 'exclude-glob') - .boolean('V') .describe('V', 'More chatty output') .alias('V', 'verbose') - .boolean('d') .describe('d', 'Print debug info') .alias('d', 'debug') - //.conflicts('V', 'q') //.conflicts('V', 'Q') /* - - + + -T (Expect no match in any file and return exit 1 if found) -t (Expect a match in each file and return exit 1 if not found) - + .boolean('N') .alias('N', 'void-newline') - .describe('N', + .describe('N', `Avoid having newline when outputting data (or when piping). `+ `Normally . `+ '' ) - - + + .boolean('p') .describe('p', "Pattern is the path to a filename containing the pattern. If more than one line is found in the file the pattern will be defined by each line trimmed and having newlines removed followed by other all rules (like -€).)") .alias('p', 'pattern-file') - + .boolean('r') .alias('r', 'replacement-file') - .describe('r', + .describe('r', `Replacement is the path to a filename containing the replacement`.`Will run before any other rules (like -€)` ) @@ -250,7 +237,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .default('M', false) - + .boolean('J') @@ -307,12 +294,11 @@ export function cli2conf(runtime: Runtime, args: string[]) { \`ctime_obj\`: date object representing \`ctime\`. All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `.replaceAll(/\s+/g, ' ') + `.replaceAll(/\s+/g, ' '), ) .help('h') .describe('h', 'Display help.') .alias('h', 'help') - .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`) .parseSync(); @@ -335,7 +321,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { Array.isArray(argv.excludeGlob) ? argv.excludeGlob : [argv.excludeGlob] ).filter(Boolean); conf.excludeRe = (Array.isArray(argv.excludeRe) ? argv.excludeRe : [argv.excludeRe]).filter( - Boolean + Boolean, ); if (!conf.replacementJs) { @@ -346,10 +332,14 @@ export function cli2conf(runtime: Runtime, args: string[]) { } function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); + return new Function(`return '${str.replace(/'/g, '\\\'')}'`)(); } -export function executeReplacement(runtime: Runtime, conf, pipeData: string = null) { +export function executeReplacement( + runtime: Runtime, + conf, + pipeData: string = null, +) { if (0 < conf.needHelp) { runtime.exit(conf.needHelp - 1); } @@ -364,7 +354,9 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu step('Replacement from pipe'); if (null === pipeData) { - return die('You asked the piped data to be used as replacement - but no data arrived.'); + return die( + 'You asked the piped data to be used as replacement - but no data arrived.', + ); } conf.replacement = pipeData; @@ -379,12 +371,14 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu if (null === conf.pipeData) { return die( - 'You asked the piped data to be use as files/globs to include - but no data arrived.' + 'You asked the piped data to be use as files/globs to include - but no data arrived.', ); } if (conf.includeGlob.length) { - return die('Please pipe file/globs to include OR provide them as as parameters. Not both.'); + return die( + 'Please pipe file/globs to include OR provide them as as parameters. Not both.', + ); } conf.globs = pipeData.split(/\r?\n/).filter(Boolean); @@ -396,7 +390,7 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu if (conf.includeGlob.length) { return die( - 'Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters' + 'Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters', ); } diff --git a/src/engine.ts b/src/engine.ts index fc211c15..1169573f 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -7,7 +7,7 @@ const globs = require('globs'); const now = new Date(); -import {outputConfig, step, debug, chat, info, error, die} from './output'; +import { chat, debug, die, error, info, outputConfig, step } from './output'; const re = { euro: /€/g, @@ -24,7 +24,7 @@ export const version = 'PACKAGE_VERSION'; let runtime: Runtime; -export function engine(_runtime: Runtime, conf: any = {engine: 'V8'}) { +export function engine(_runtime: Runtime, conf: any = { engine: 'V8' }) { runtime = _runtime; outputConfig(conf); @@ -66,7 +66,6 @@ export function engine(_runtime: Runtime, conf: any = {engine: 'V8'}) { debug('Not a valid file:', filepath); return false; }) - // Do the replacement .forEach((filepath) => openFile(filepath, conf)); } @@ -232,7 +231,9 @@ function getReplacement(replacement, conf: any) { re.capturedGroupRef.test(conf.replacement) && parseInt(process.versions.node) < 6 ) { - return die('Captured groups for javascript replacement is only supported in node 6+'); + return die( + 'Captured groups for javascript replacement is only supported in node 6+', + ); } step(replacement); @@ -320,7 +321,8 @@ function readableSize(size) { } const i = Math.floor(Math.log(size) / Math.log(1024)); return ( - (size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i] + (size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i] ); } @@ -356,25 +358,20 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 'fs', 'globs', 'path', - 'pipe', 'pipe_', - 'find', 'find_', 'text', 'text_', - 'file', 'file_', 'file_rel', 'file_rel_', - 'dirpath', 'dirpath_', 'dirpath_rel', 'dirpath_rel_', - 'dirname', 'dirname_', 'filename', @@ -385,7 +382,6 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 'ext_', 'cwd', 'cwd_', - 'now', 'now_', 'time_obj', @@ -397,7 +393,6 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 'ctime_obj', 'ctime', 'ctime_', - 'bytes', 'bytes_', 'size', @@ -406,19 +401,19 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { '_', '__code_rr', 'var path = require("path");' + - 'var __require_ = require;' + - 'var r = function(file){' + - 'var result = null;' + - 'try{' + - 'result = __require_(file);' + - '} catch (e){' + - 'var dir = /^[\\\/]/.test(file) ? "" : cwd;' + - 'result = __require_(path.resolve(dir, file));' + - '};' + - 'return result;' + - '};' + - 'require = r;' + - 'return eval(__code_rr);' + 'var __require_ = require;' + + 'var r = function(file){' + + 'var result = null;' + + 'try{' + + 'result = __require_(file);' + + '} catch (e){' + + 'var dir = /^[\\\/]/.test(file) ? "" : cwd;' + + 'result = __require_(path.resolve(dir, file));' + + '};' + + 'return result;' + + '};' + + 'require = r;' + + 'return eval(__code_rr);', ); const needsByteOrSize = re.byteOrSize.test(_config_rr.replacement); @@ -507,7 +502,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _size + _, _nl, _, - code_rr + code_rr, ); } // Capture groups used, so need to run once per match @@ -549,25 +544,20 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { fs, glob, path, - __pipe, __pipe + __, - __find, __find + __, __text, __text + __, - __file, __file + __, __file_rel, __file_rel + __, - __dirpath, __dirpath + __, __dirpath_rel, __dirpath_rel + __, - __dirname, __dirname + __, __filename, @@ -578,7 +568,6 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { __ext + __, __cwd, __cwd + __, - __now, __now + _, __time_obj, @@ -590,24 +579,27 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { __ctime_obj, __ctime, __ctime + _, - __bytes, __bytes + __, __size, __size + __, __nl, __, - capturedGroups + __code_rr + capturedGroups + __code_rr, ); }; } function localTimeString(dateObj = new Date()) { - return `${dateObj.getFullYear()}-${('0' + (dateObj.getMonth() + 1)).slice(-2)}-${( - '0' + dateObj.getDate() - ).slice(-2)} ${('0' + dateObj.getHours()).slice(-2)}:${('0' + dateObj.getMinutes()).slice(-2)}:${( - '0' + dateObj.getSeconds() - ).slice(-2)}.${('00' + dateObj.getMilliseconds()).slice(-3)}`; + return `${dateObj.getFullYear()}-${('0' + (dateObj.getMonth() + 1)).slice(-2)}-${ + ( + '0' + dateObj.getDate() + ).slice(-2) + } ${('0' + dateObj.getHours()).slice(-2)}:${('0' + dateObj.getMinutes()).slice(-2)}:${ + ( + '0' + dateObj.getSeconds() + ).slice(-2) + }.${('00' + dateObj.getMilliseconds()).slice(-3)}`; } function replacePlaceholders(str = '', conf: any) { @@ -623,7 +615,7 @@ function replacePlaceholders(str = '', conf: any) { } function getFilePaths(conf) { - const {includeGlob, excludeGlob, excludeRe, voidIgnoreCase} = conf; + const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf; let filesToInclude: string[] = fGlob.sync(includeGlob, { ignore: excludeGlob, diff --git a/src/env/bun.ts b/src/env/bun.ts index b80663ed..7524b1a1 100644 --- a/src/env/bun.ts +++ b/src/env/bun.ts @@ -2,12 +2,12 @@ /// -import {executeReplacement, cli2conf} from '../cli.js'; +import { cli2conf, executeReplacement } from '../cli.js'; import fs from 'fs-extra'; export const runtime: Runtime = { - fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, { encoding }), fileReadAsync: async (path, encoding = 'utf8') => { const file = Bun.file(path); diff --git a/src/env/deno.ts b/src/env/deno.ts index 95201450..e48f6202 100644 --- a/src/env/deno.ts +++ b/src/env/deno.ts @@ -2,26 +2,26 @@ /// -import {readAll} from 'https://deno.land/std/io/mod.ts'; +import { readAll } from 'https://deno.land/std/io/mod.ts'; import yargs from 'https://deno.land/x/yargs/deno.ts'; import fs from 'fs-extra'; -import {executeReplacement, cli2conf} from '../cli.js'; +import { cli2conf, executeReplacement } from '../cli.js'; const runtime: Runtime = { - fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, { encoding }), async fileReadAsync(path, encoding = 'utf8') { - const data = await fs.readFile(path, {encoding}); + const data = await fs.readFile(path, { encoding }); return data; }, - fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, {encoding}), + fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, { encoding }), async fileWriteAsync(path, data, encoding = 'utf8') { - return fs.writeFile(path, data, {encoding}); + return fs.writeFile(path, data, { encoding }); }, fileDeleteSync: (path) => fs.unlinkSync(path), @@ -45,6 +45,6 @@ async function getPipeData() { return text; } -let conf = cli2conf(Deno.args, {runtime, yargs}); +let conf = cli2conf(Deno.args, { runtime, yargs }); -executeReplacement(conf, {runtime, yargs, pipeData: getPipeData()}); +executeReplacement(conf, { runtime, yargs, pipeData: getPipeData() }); diff --git a/src/env/node.ts b/src/env/node.ts index 7965a662..e39e239b 100644 --- a/src/env/node.ts +++ b/src/env/node.ts @@ -2,15 +2,15 @@ /// -import {executeReplacement, cli2conf} from '../cli.js'; +import { cli2conf, executeReplacement } from '../cli.js'; import fs from 'fs-extra'; export const runtime: Runtime = { - fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), - fileReadAsync: (path, encoding = 'utf8') => fs.readFile(path, {encoding}), + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, { encoding }), + fileReadAsync: (path, encoding = 'utf8') => fs.readFile(path, { encoding }), - fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, {encoding}), - fileWriteAsync: (path, data, encoding = 'utf8') => fs.writeFile(path, data, {encoding}), + fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, { encoding }), + fileWriteAsync: (path, data, encoding = 'utf8') => fs.writeFile(path, data, { encoding }), fileDeleteSync: (path) => fs.unlinkSync(path), fileDeleteAsync: (path) => fs.unlink(path), diff --git a/src/multiversion.cli.js b/src/multiversion.cli.js index 9dd6cb75..e2c674ab 100644 --- a/src/multiversion.cli.js +++ b/src/multiversion.cli.js @@ -6,7 +6,7 @@ if ('6' <= process.versions.node) { require('./ES5/rexreplace.cli.bundle.js'); } else { console.error( - 'Your Node is old so this will run on a legacy version of RexReplace only supporting one single file per replacement and no options allowed. See https://www.npmjs.com/package/rreplace for more info.' + 'Your Node is old so this will run on a legacy version of RexReplace only supporting one single file per replacement and no options allowed. See https://www.npmjs.com/package/rreplace for more info.', ); require('../legacy/rreplace.js'); } diff --git a/src/output.ts b/src/output.ts index 52ef92c5..802a4aa0 100644 --- a/src/output.ts +++ b/src/output.ts @@ -14,8 +14,9 @@ export const info = function (msg, data = '') { return; } - if (conf.output || conf.outputMatch) + if (conf.output || conf.outputMatch) { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); + } console.log.apply(this, [msg, data].filter(Boolean)); }; From b2122f88345fe411253b67cdc121d8c12b19bc06 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sun, 1 Oct 2023 00:49:43 +1000 Subject: [PATCH 11/17] Prettier fmt --- src/cli.ts | 71 +++++++++++++++-------------------------- src/engine.ts | 31 +++++++----------- src/env/bun.ts | 4 +-- src/env/deno.ts | 16 +++++----- src/env/node.ts | 10 +++--- src/multiversion.cli.js | 2 +- 6 files changed, 53 insertions(+), 81 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index b0a7698b..1f89bfd8 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -4,7 +4,7 @@ import yargs from 'yargs'; import * as rexreplace from './engine.ts'; -import { chat, debug, die, error, info, outputConfig, step } from './output'; +import {chat, debug, die, error, info, outputConfig, step} from './output'; const re = { nl: /\r?\n/, @@ -44,21 +44,17 @@ export function cli2conf(runtime: Runtime, args: string[]) { */ .example( `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, - `'foobar' in myfile.md will become 'barfoo'`, + `'foobar' in myfile.md will become 'barfoo'` ) .example( `> rexreplace '^#' '##' *.md`, - `All markdown files in this dir got all headlines moved one level deeper`, + `All markdown files in this dir got all headlines moved one level deeper` ) .example( `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, - `Provide multiple files or globs if needed`, - ) - .version( - 'v', - 'Print rexreplace version (can be given as only argument)', - rexreplace.version, + `Provide multiple files or globs if needed` ) + .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) .alias('v', 'version') .boolean('I') .describe('I', 'Void case insensitive search pattern.') @@ -69,7 +65,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .boolean('M') .describe( 'M', - 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.', + 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.' ) .alias('M', 'void-multiline') .boolean('s') @@ -89,22 +85,16 @@ export function cli2conf(runtime: Runtime, args: string[]) { .describe('L', 'Literal string search (no regex used when searching)') .alias('L', 'literal') .boolean('€') - .describe( - '€', - 'Void having \'€\' as alias for \'$\' in pattern and replacement parameters', - ) + .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") .alias('€', 'void-euro') .boolean('§') - .describe( - '§', - 'Void having \'§\' as alias for \'\\\' in pattern and replacement parameters', - ) + .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") .alias('§', 'void-section') .boolean('A') .alias('A', 'void-async') .describe( 'A', - `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `, + `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` ) .boolean('H') .describe('H', 'Halt on first error') @@ -120,7 +110,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .boolean('B') .describe( 'B', - 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.', + 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.' ) .alias('B', 'void-backup') .boolean('b') @@ -129,7 +119,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .boolean('o') .describe( 'o', - 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.', + 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.' ) .alias('o', 'output') //.conflicts('o','O') @@ -141,7 +131,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + `If search pattern does not contain matching groups the full match will be outputted. ` + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + - ``, + `` ) .alias('m', 'output-match') .boolean('T') @@ -150,20 +140,20 @@ export function cli2conf(runtime: Runtime, args: string[]) { 'T', `Trim piped data before processing. ` + `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + - '', + '' ) .boolean('R') .alias('R', 'replacement-pipe') .describe( 'R', - `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`, + `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` ) .conflicts('R', 'g') .conflicts('R', 'G') .boolean('g') .describe( 'g', - 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt', + 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt' ) .alias('g', 'glob-pipe') .conflicts('g', 'G') @@ -178,14 +168,11 @@ export function cli2conf(runtime: Runtime, args: string[]) { .string('x') .describe( 'x', - 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.', + 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.' ) .alias('x', 'exclude-re') .string('X') - .describe( - 'X', - 'Exclude files found with this glob. Can be used multiple times.', - ) + .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') .boolean('V') .describe('V', 'More chatty output') @@ -294,7 +281,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { \`ctime_obj\`: date object representing \`ctime\`. All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `.replaceAll(/\s+/g, ' '), + `.replaceAll(/\s+/g, ' ') ) .help('h') .describe('h', 'Display help.') @@ -321,7 +308,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { Array.isArray(argv.excludeGlob) ? argv.excludeGlob : [argv.excludeGlob] ).filter(Boolean); conf.excludeRe = (Array.isArray(argv.excludeRe) ? argv.excludeRe : [argv.excludeRe]).filter( - Boolean, + Boolean ); if (!conf.replacementJs) { @@ -332,14 +319,10 @@ export function cli2conf(runtime: Runtime, args: string[]) { } function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, '\\\'')}'`)(); + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); } -export function executeReplacement( - runtime: Runtime, - conf, - pipeData: string = null, -) { +export function executeReplacement(runtime: Runtime, conf, pipeData: string = null) { if (0 < conf.needHelp) { runtime.exit(conf.needHelp - 1); } @@ -354,9 +337,7 @@ export function executeReplacement( step('Replacement from pipe'); if (null === pipeData) { - return die( - 'You asked the piped data to be used as replacement - but no data arrived.', - ); + return die('You asked the piped data to be used as replacement - but no data arrived.'); } conf.replacement = pipeData; @@ -371,14 +352,12 @@ export function executeReplacement( if (null === conf.pipeData) { return die( - 'You asked the piped data to be use as files/globs to include - but no data arrived.', + 'You asked the piped data to be use as files/globs to include - but no data arrived.' ); } if (conf.includeGlob.length) { - return die( - 'Please pipe file/globs to include OR provide them as as parameters. Not both.', - ); + return die('Please pipe file/globs to include OR provide them as as parameters. Not both.'); } conf.globs = pipeData.split(/\r?\n/).filter(Boolean); @@ -390,7 +369,7 @@ export function executeReplacement( if (conf.includeGlob.length) { return die( - 'Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters', + 'Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters' ); } diff --git a/src/engine.ts b/src/engine.ts index 1169573f..672035d1 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -7,7 +7,7 @@ const globs = require('globs'); const now = new Date(); -import { chat, debug, die, error, info, outputConfig, step } from './output'; +import {chat, debug, die, error, info, outputConfig, step} from './output'; const re = { euro: /€/g, @@ -24,7 +24,7 @@ export const version = 'PACKAGE_VERSION'; let runtime: Runtime; -export function engine(_runtime: Runtime, conf: any = { engine: 'V8' }) { +export function engine(_runtime: Runtime, conf: any = {engine: 'V8'}) { runtime = _runtime; outputConfig(conf); @@ -231,9 +231,7 @@ function getReplacement(replacement, conf: any) { re.capturedGroupRef.test(conf.replacement) && parseInt(process.versions.node) < 6 ) { - return die( - 'Captured groups for javascript replacement is only supported in node 6+', - ); + return die('Captured groups for javascript replacement is only supported in node 6+'); } step(replacement); @@ -321,8 +319,7 @@ function readableSize(size) { } const i = Math.floor(Math.log(size) / Math.log(1024)); return ( - (size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + - ['Bytes', 'KB', 'MB', 'GB', 'TB'][i] + (size / Math.pow(1024, i)).toFixed(!!i ? 1 : 0) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB'][i] ); } @@ -502,7 +499,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { _size + _, _nl, _, - code_rr, + code_rr ); } // Capture groups used, so need to run once per match @@ -585,21 +582,17 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { __size + __, __nl, __, - capturedGroups + __code_rr, + capturedGroups + __code_rr ); }; } function localTimeString(dateObj = new Date()) { - return `${dateObj.getFullYear()}-${('0' + (dateObj.getMonth() + 1)).slice(-2)}-${ - ( - '0' + dateObj.getDate() - ).slice(-2) - } ${('0' + dateObj.getHours()).slice(-2)}:${('0' + dateObj.getMinutes()).slice(-2)}:${ - ( - '0' + dateObj.getSeconds() - ).slice(-2) - }.${('00' + dateObj.getMilliseconds()).slice(-3)}`; + return `${dateObj.getFullYear()}-${('0' + (dateObj.getMonth() + 1)).slice(-2)}-${( + '0' + dateObj.getDate() + ).slice(-2)} ${('0' + dateObj.getHours()).slice(-2)}:${('0' + dateObj.getMinutes()).slice(-2)}:${( + '0' + dateObj.getSeconds() + ).slice(-2)}.${('00' + dateObj.getMilliseconds()).slice(-3)}`; } function replacePlaceholders(str = '', conf: any) { @@ -615,7 +608,7 @@ function replacePlaceholders(str = '', conf: any) { } function getFilePaths(conf) { - const { includeGlob, excludeGlob, excludeRe, voidIgnoreCase } = conf; + const {includeGlob, excludeGlob, excludeRe, voidIgnoreCase} = conf; let filesToInclude: string[] = fGlob.sync(includeGlob, { ignore: excludeGlob, diff --git a/src/env/bun.ts b/src/env/bun.ts index 7524b1a1..e409eb43 100644 --- a/src/env/bun.ts +++ b/src/env/bun.ts @@ -2,12 +2,12 @@ /// -import { cli2conf, executeReplacement } from '../cli.js'; +import {cli2conf, executeReplacement} from '../cli.js'; import fs from 'fs-extra'; export const runtime: Runtime = { - fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, { encoding }), + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), fileReadAsync: async (path, encoding = 'utf8') => { const file = Bun.file(path); diff --git a/src/env/deno.ts b/src/env/deno.ts index e48f6202..cee812cc 100644 --- a/src/env/deno.ts +++ b/src/env/deno.ts @@ -2,26 +2,26 @@ /// -import { readAll } from 'https://deno.land/std/io/mod.ts'; +import {readAll} from 'https://deno.land/std/io/mod.ts'; import yargs from 'https://deno.land/x/yargs/deno.ts'; import fs from 'fs-extra'; -import { cli2conf, executeReplacement } from '../cli.js'; +import {cli2conf, executeReplacement} from '../cli.js'; const runtime: Runtime = { - fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, { encoding }), + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), async fileReadAsync(path, encoding = 'utf8') { - const data = await fs.readFile(path, { encoding }); + const data = await fs.readFile(path, {encoding}); return data; }, - fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, { encoding }), + fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, {encoding}), async fileWriteAsync(path, data, encoding = 'utf8') { - return fs.writeFile(path, data, { encoding }); + return fs.writeFile(path, data, {encoding}); }, fileDeleteSync: (path) => fs.unlinkSync(path), @@ -45,6 +45,6 @@ async function getPipeData() { return text; } -let conf = cli2conf(Deno.args, { runtime, yargs }); +let conf = cli2conf(Deno.args, {runtime, yargs}); -executeReplacement(conf, { runtime, yargs, pipeData: getPipeData() }); +executeReplacement(conf, {runtime, yargs, pipeData: getPipeData()}); diff --git a/src/env/node.ts b/src/env/node.ts index e39e239b..4342edd8 100644 --- a/src/env/node.ts +++ b/src/env/node.ts @@ -2,15 +2,15 @@ /// -import { cli2conf, executeReplacement } from '../cli.js'; +import {cli2conf, executeReplacement} from '../cli.js'; import fs from 'fs-extra'; export const runtime: Runtime = { - fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, { encoding }), - fileReadAsync: (path, encoding = 'utf8') => fs.readFile(path, { encoding }), + fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), + fileReadAsync: (path, encoding = 'utf8') => fs.readFile(path, {encoding}), - fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, { encoding }), - fileWriteAsync: (path, data, encoding = 'utf8') => fs.writeFile(path, data, { encoding }), + fileWriteSync: (path, data, encoding = 'utf8') => fs.writeFileSync(path, data, {encoding}), + fileWriteAsync: (path, data, encoding = 'utf8') => fs.writeFile(path, data, {encoding}), fileDeleteSync: (path) => fs.unlinkSync(path), fileDeleteAsync: (path) => fs.unlink(path), diff --git a/src/multiversion.cli.js b/src/multiversion.cli.js index e2c674ab..9dd6cb75 100644 --- a/src/multiversion.cli.js +++ b/src/multiversion.cli.js @@ -6,7 +6,7 @@ if ('6' <= process.versions.node) { require('./ES5/rexreplace.cli.bundle.js'); } else { console.error( - 'Your Node is old so this will run on a legacy version of RexReplace only supporting one single file per replacement and no options allowed. See https://www.npmjs.com/package/rreplace for more info.', + 'Your Node is old so this will run on a legacy version of RexReplace only supporting one single file per replacement and no options allowed. See https://www.npmjs.com/package/rreplace for more info.' ); require('../legacy/rreplace.js'); } From 9ea10190b035b0293a5436808df7e6ac0def9a5b Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sun, 1 Oct 2023 03:21:29 +1100 Subject: [PATCH 12/17] Remove legacy --- legacy/.gitignore | 2 -- legacy/README.md | 39 --------------------------- legacy/package.json | 19 -------------- legacy/rreplace.js | 58 ----------------------------------------- legacy/test.sh | 9 ------- src/multiversion.cli.js | 12 --------- 6 files changed, 139 deletions(-) delete mode 100644 legacy/.gitignore delete mode 100644 legacy/README.md delete mode 100644 legacy/package.json delete mode 100644 legacy/rreplace.js delete mode 100644 legacy/test.sh delete mode 100644 src/multiversion.cli.js diff --git a/legacy/.gitignore b/legacy/.gitignore deleted file mode 100644 index 1a58a1f0..00000000 --- a/legacy/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -myfile diff --git a/legacy/README.md b/legacy/README.md deleted file mode 100644 index f73da6a9..00000000 --- a/legacy/README.md +++ /dev/null @@ -1,39 +0,0 @@ -_This is the legacy version of [RexReplace](https://www.npmjs.com/package/rexreplace)_ - -# rreplace - -Regex replace in files from your CLI - with a tiny footprint. - -### Installation -```bash -> npm install -g rreplace -``` - -Works on any version of Node.js since 0.6 - -### Usage -```bash -> rreplace pattern replace filepath [regexFlags [encoding]] -``` - -- Pattern is a regex and may capture groups - -- Replacement may refer to captured groups. The first group is named `$1` - -- Filepath can only contain a path to one particular file (no globs) - -- Default is global case-insensitive multiline search (regexFlags is default `gmi`) - -- Default file encoding is `utf8` - -### Example - -```bash -> rreplace '(foo)(.*)' '$2$1' myfile.md - # 'foobar' is now 'barfoo' in myfile.md -``` - - ---- -MIT License - diff --git a/legacy/package.json b/legacy/package.json deleted file mode 100644 index aff4d55d..00000000 --- a/legacy/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "rreplace", - "version": "2.0.1", - "description": "Regex replace in a file from CLI.", - "main": "rreplace.js", - "scripts": { - "test": "npm install -g ./ && bash test.sh" - }, - "bin": { - "rreplace": "rreplace.js" - }, - "keywords": [ - "replace", - "in", - "files" - ], - "author": "MRW", - "license": "MIT" -} diff --git a/legacy/rreplace.js b/legacy/rreplace.js deleted file mode 100644 index ec3d6099..00000000 --- a/legacy/rreplace.js +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env node - -// This file must only be edited with 'vim' - -fs = require('fs'); - -var usage = "\n\n> " - + process.argv[1].split('/').pop() - + " pattern replace filepath [regexFlags [encoding]]" - + "\n" - + "\nDefault regexFlags is gmi" - + "\nDefault encoding is utf8" - ; - - -if(process.argv.length<5) - throw 'Too few arguments given.' + usage; - -if(7 myfile -rreplace '(F?(O))O(.*)' '$3$1$2' myfile -grep -q 'barfoo' myfile || exit 101 - -echo 'foobar' > myfile -rreplace '(F?(O))O(.*)' '$3$1$2' myfile gm utf8 -grep -q 'foobar' myfile || exit 102 diff --git a/src/multiversion.cli.js b/src/multiversion.cli.js deleted file mode 100644 index 9dd6cb75..00000000 --- a/src/multiversion.cli.js +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env node - -if ('6' <= process.versions.node) { - require('./ES6/rexreplace.cli.bundle.js'); -} else if ('0.12' <= process.versions.node) { - require('./ES5/rexreplace.cli.bundle.js'); -} else { - console.error( - 'Your Node is old so this will run on a legacy version of RexReplace only supporting one single file per replacement and no options allowed. See https://www.npmjs.com/package/rreplace for more info.' - ); - require('../legacy/rreplace.js'); -} From 259fa4c5386fe8969af51bf8499942ec2a8ff7ce Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sun, 1 Oct 2023 03:23:02 +1100 Subject: [PATCH 13/17] WIP bun up --- package.json | 12 ++++--- src/cli.ts | 2 +- src/deno.d.ts | 0 src/engine.ts | 4 +-- src/env/bun.ts | 4 +-- src/env/deno.ts | 6 ++-- src/env/node.ts | 4 +-- test/cli/run.sh | 14 ++++++-- tsconfig.json | 13 +++++-- yarn.lock | 93 +++++++++++++++++++++++++++++++++++++++++++++++-- 10 files changed, 128 insertions(+), 24 deletions(-) delete mode 100644 src/deno.d.ts mode change 100644 => 100755 src/env/bun.ts diff --git a/package.json b/package.json index 42913ed7..322e58d3 100644 --- a/package.json +++ b/package.json @@ -11,17 +11,18 @@ "url": "git+https://github.com/mathiasrw/rexreplace.git" }, "bin": { - "rr": "bin/rexreplace.cli.js", - "rexreplace": "dist/env/node.js" + "rr": "src/env/bun.ts", + "rexreplace_node": "bin/rexreplace.cli.js", + "rexreplace": "src/env/bun.ts" }, "scripts": { "test": "yarn build && yarn test-cli && yarn test-js", "postbuild": "cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", "version": "yarn build-minify", "build": "yarn build-only", - "build-only": "swc src/ -d bin/ && bun build --target node bin/env/node.js --outfile bin/rexreplace.cli.js", - "build-minify": "bun build --target node bin/env/node.js --outfile bin/rexreplace.cli.min.js --minify", - "prebuild": "rm -fr bin && yarn format", + "build-only": "swc src/ -d dist/ && bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js ", + "build-minify": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.min.js --minify", + "prebuild": "rm -fr bin # && yarn format", "test-js": "echo todo: async mocha", "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", "test-cli": "npm uninstall -g rexreplace && npm -g install ./ && yarn test-cli-only", @@ -66,6 +67,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "1.1.3", + "ts-node": "^10.9.1", "typescript": "5.2.2", "version-bump-prompt": "6.1.0", "yarn": "1.22.19" diff --git a/src/cli.ts b/src/cli.ts index 1f89bfd8..44602c96 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -4,7 +4,7 @@ import yargs from 'yargs'; import * as rexreplace from './engine.ts'; -import {chat, debug, die, error, info, outputConfig, step} from './output'; +import {chat, debug, die, error, info, outputConfig, step} from './output.ts'; const re = { nl: /\r?\n/, diff --git a/src/deno.d.ts b/src/deno.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/src/engine.ts b/src/engine.ts index 672035d1..6addb84b 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -7,7 +7,7 @@ const globs = require('globs'); const now = new Date(); -import {chat, debug, die, error, info, outputConfig, step} from './output'; +import {chat, debug, die, error, info, outputConfig, step} from './output.ts'; const re = { euro: /€/g, @@ -45,7 +45,7 @@ export function engine(_runtime: Runtime, conf: any = {engine: 'V8'}) { conf.files = getFilePaths(conf); if (!conf.files.length) { - if (conf.contentWasPiped) { + if (null !== conf.pipeData) { return doReplacement('[pipe-data]', conf, conf.pipeData); } diff --git a/src/env/bun.ts b/src/env/bun.ts old mode 100644 new mode 100755 index e409eb43..f37cd879 --- a/src/env/bun.ts +++ b/src/env/bun.ts @@ -44,12 +44,12 @@ export const runtime: Runtime = { process.stdin.setEncoding(conf.encoding); - let pipeData = ''; + let pipeData = null; process.stdin.on('readable', () => { let chunk = process.stdin.read(); if (null !== chunk) { - pipeData += chunk; + pipeData = chunk; while ((chunk = process.stdin.read())) { pipeData += chunk; } diff --git a/src/env/deno.ts b/src/env/deno.ts index cee812cc..103805ad 100644 --- a/src/env/deno.ts +++ b/src/env/deno.ts @@ -2,13 +2,11 @@ /// -import {readAll} from 'https://deno.land/std/io/mod.ts'; - import yargs from 'https://deno.land/x/yargs/deno.ts'; import fs from 'fs-extra'; -import {cli2conf, executeReplacement} from '../cli.js'; +import {cli2conf, executeReplacement} from '../cli.ts'; const runtime: Runtime = { fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), @@ -40,7 +38,7 @@ const runtime: Runtime = { }; async function getPipeData() { - const stdinContent = await readAll(Deno.stdin); + const stdinContent = await Deno.readAll(Deno.stdin); const text = new TextDecoder().decode(stdinContent); return text; } diff --git a/src/env/node.ts b/src/env/node.ts index 4342edd8..ef994342 100644 --- a/src/env/node.ts +++ b/src/env/node.ts @@ -30,12 +30,12 @@ export const runtime: Runtime = { process.stdin.setEncoding(conf.encoding); - let pipeData = ''; + let pipeData = null; process.stdin.on('readable', () => { let chunk = process.stdin.read(); if (null !== chunk) { - pipeData += chunk; + pipeData = chunk; while ((chunk = process.stdin.read())) { pipeData += chunk; } diff --git a/test/cli/run.sh b/test/cli/run.sh index bd0131d2..c5f4487f 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -1,10 +1,18 @@ #!/usr/bin/env bash +#rexreplace() { + # node dist/env/node.js "$@" + #npx node-ts src/env/node.ts "$@" + # npx ts-node src/env/node.ts "$@" + # bun src/env/bun.ts "$@" +#} + echo RexReplace v$(rexreplace -v) -where rexreplace +# where rexreplace DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +export STOP=1 source $DIR/aserta.sh # # Command exit codes @@ -31,8 +39,6 @@ reset() { echo 'abc123' > your.file echo -n > stdout.log echo -n > stderr.log - -rm stderr.log } @@ -588,11 +594,13 @@ assert_failure "rexreplace '*foo' 'bar' my.file" # assert "rexreplace ??? ??? my.file -d" "foobar" # reset +reset rm my.file rm your.file rm stdout.log rm stderr.log + assert_end "rexreplace" diff --git a/tsconfig.json b/tsconfig.json index 1fd45292..91547a9b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,8 +5,15 @@ "target": "ES6", "lib": ["es6", "esnext"], "types": ["node"], - "moduleResolution": "nodenext", - "module": "NodeNext" + "moduleResolution": "node", + "module": "commonjs", + "allowImportingTsExtensions": true, + "noEmit": true, + "esModuleInterop": true }, - "include": ["src/env/node.ts"] + "include": ["src/**/*.ts"], + "exclude": ["node_modules"], + "ts-node": { + "esm": true + } } diff --git a/yarn.lock b/yarn.lock index ecbb0dee..b2090c7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -23,7 +30,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== @@ -46,6 +53,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.9": version "0.3.19" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" @@ -336,6 +351,26 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@types/buble@^0.19.2": version "0.19.2" resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" @@ -414,12 +449,17 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.8.2: +acorn@^8.4.1, acorn@^8.8.2: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -520,6 +560,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -948,6 +993,11 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1045,6 +1095,11 @@ diff@5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2000,6 +2055,11 @@ magic-string@^0.27.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + make-fetch-happen@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" @@ -3152,6 +3212,25 @@ trim-repeated@^2.0.0: dependencies: escape-string-regexp "^5.0.0" +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -3282,6 +3361,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" @@ -3439,6 +3523,11 @@ yarn@1.22.19: resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From e578cf577e2c10f76130e64dabf294956e66c690 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sun, 1 Oct 2023 17:41:55 +1100 Subject: [PATCH 14/17] Improving test cov --- package.json | 5 +++-- src/cli.ts | 23 ++++++++++++----------- src/engine.ts | 11 ++++++----- src/output.ts | 42 +++++++++++++++++++++++++----------------- test/cli/aserta.sh | 2 +- test/cli/run.sh | 35 ++++++++++++++++++++++++++++++----- yarn.lock | 5 +++++ 7 files changed, 82 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 322e58d3..2a1a66d7 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,10 @@ "build": "yarn build-only", "build-only": "swc src/ -d dist/ && bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js ", "build-minify": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.min.js --minify", - "prebuild": "rm -fr bin # && yarn format", + "prebuild": "rm -fr bin dist # && yarn format", "test-js": "echo todo: async mocha", "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", - "test-cli": "npm uninstall -g rexreplace && npm -g install ./ && yarn test-cli-only", + "test-cli": "(true || (npm uninstall -g rexreplace && npm -g install ./)) && yarn test-cli-only", "test-cli-only": "bash test/cli/run.sh", "test-speed": "bash test/speed/run.sh", "prepublishOnly": "yarn is-git-clean && git fetch && git rebase origin/main && yarn test-minify && yarn load-options && yarn bump", @@ -80,6 +80,7 @@ "test": "test" }, "dependencies": { + "chalk": "^5.3.0", "fast-glob": "^3.3.1", "fs-extra": "^11.1.1", "globs": "0.1.4", diff --git a/src/cli.ts b/src/cli.ts index 44602c96..ec58f84f 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -4,7 +4,7 @@ import yargs from 'yargs'; import * as rexreplace from './engine.ts'; -import {chat, debug, die, error, info, outputConfig, step} from './output.ts'; +import {chat, debug, die, warn, info, outputConfig, step} from './output.ts'; const re = { nl: /\r?\n/, @@ -31,17 +31,16 @@ export function cli2conf(runtime: Runtime, args: string[]) { } const argv = yargs(args) - //.strict() - /* .usage( - 'RexReplace v' + + .usage( + '$0 RexReplace v' + rexreplace.version + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + '> rexreplace pattern replacement [fileGlob|option]+' ) - .usage(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) - .usage(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) - */ + .usage(`$0 > rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) + .usage(`$0 > rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + .example( `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, `'foobar' in myfile.md will become 'barfoo'` @@ -287,7 +286,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { .describe('h', 'Display help.') .alias('h', 'help') .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`) - .parseSync(); + .strict().argv; // All options into one big config object for the rexreplace engine let conf: any = {}; @@ -324,6 +323,7 @@ function unescapeString(str = '') { export function executeReplacement(runtime: Runtime, conf, pipeData: string = null) { if (0 < conf.needHelp) { + conf.showHelp(); runtime.exit(conf.needHelp - 1); } @@ -368,9 +368,10 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu } if (conf.includeGlob.length) { - return die( - 'Data is being piped in, but no flag indicating what to use it for. If you want to do replacements in the pipe then avoid having files/globs in the parameters' - ); + if ('' !== pipeData && '\n' !== pipeData) + return warn( + `${conf.includeGlob.length} file paths / globs provided. \n Data is also being piped to the command with no flags indicating how to treat it.\n Pipe data will be ignored, but check if this is actually what you intended to do.` + ); } step('Content being piped'); diff --git a/src/engine.ts b/src/engine.ts index 6addb84b..0783ce79 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -105,8 +105,9 @@ function doReplacement(filePath: string, conf: any, content: string) { } if (conf.output) { - debug('Output result from: ' + filePath); - + if (conf.verbose || conf.debug) { + console.error(filePath); + } return process.stdout.write(result); } @@ -129,7 +130,7 @@ function doReplacement(filePath: string, conf: any, content: string) { if (err) { return error(err); } - info(filePath); + return info(filePath); }); } @@ -163,11 +164,11 @@ function doReplacement(filePath: string, conf: any, content: string) { } if (!conf.keepBackup) { - fs.unlink(backupFile, (err) => { + return fs.unlink(backupFile, (err) => { if (err) { return error(err); } - info(filePath); + return info(filePath); }); } diff --git a/src/output.ts b/src/output.ts index 802a4aa0..fdc7c924 100644 --- a/src/output.ts +++ b/src/output.ts @@ -1,7 +1,7 @@ let font: any = {}; -font.red = font.green = font.gray = (str) => str; +font.yellow = font.red = font.green = font.gray = (str) => str; // check for node version supporting chalk - if so overwrite `font` -//const font = import('chalk'); +//font = import('chalk'); let conf: any = null; @@ -10,19 +10,17 @@ export const outputConfig = function (_conf) { }; export const info = function (msg, data = '') { - if (conf.quiet || conf.quietTotal) { + if (conf?.quiet || conf?.quietTotal) { return; } - - if (conf.output || conf.outputMatch) { + if (conf?.output || conf?.outputMatch) { return console.error.apply(this, [font.gray(msg), data].filter(Boolean)); } - console.log.apply(this, [msg, data].filter(Boolean)); }; export const chat = function (msg, data = '') { - if (conf.verbose) { + if (conf?.verbose && !(conf?.output || conf?.outputMatch)) { info(msg, data); } else { debug([msg, data].filter(Boolean).join(' ')); @@ -30,37 +28,47 @@ export const chat = function (msg, data = '') { }; export const error = function (msg, data = '') { - if (conf.bail) { - return die(msg, data); - } - if (!conf.quietTotal) { + if (!conf?.quietTotal) { console.error.apply(this, [' ❌', font.red(msg), data].filter(Boolean)); } + if (conf?.bail) { + return kill(); + } + + return false; +}; + +export const warn = function (msg, data = '') { + if (!conf?.quiet && !conf?.quietTotal) { + console.error.apply(this, [' 🟡', font.yellow(msg), data].filter(Boolean)); + } return false; }; export const die = function (msg = '', data = '', displayHelp = false) { - if (displayHelp && !conf.quietTotal) { - conf.showHelp(); + if (displayHelp && !conf?.quietTotal) { + conf?.showHelp(); } - msg && error(' ❌ ' + msg, data); + msg && error(msg, data); kill(); }; export function debug(...data) { - if (conf.debug) { + if (conf?.debug) { console.error(font.gray(JSON.stringify(data, null, 4))); } } export function step(data) { - if (conf?.verbose) { + if (conf?.verbose && !(conf?.output || conf?.quiet || !conf?.quiet || !conf?.quietTotal)) { console.error(font.gray(data)); } } function kill(error = 1, msg = '') { - msg && console.error(+msg); + if (!conf?.quietTotal && msg) { + console.error(+msg); + } process.exit(+error); } diff --git a/test/cli/aserta.sh b/test/cli/aserta.sh index bf0b0066..4a6951c3 100644 --- a/test/cli/aserta.sh +++ b/test/cli/aserta.sh @@ -433,7 +433,7 @@ assert() { # shellcheck disable=SC2059 expected=$(printf "${2:-}") # shellcheck disable=SC2059 - result=$(printf "$(eval 2>/dev/null "$1" <<< "${3:-}")") + [[ -n "$DEBUG" ]] && result=$(printf "$(eval "$1" <<< "${3:-}")") || result=$(printf "$(eval 2>/dev/null "$1" <<< "${3:-}")") if [[ "$result" == "$expected" ]]; then [[ -z "$DEBUG" ]] || printf '.' return diff --git a/test/cli/run.sh b/test/cli/run.sh index c5f4487f..ace8b297 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -13,8 +13,12 @@ echo RexReplace v$(rexreplace -v) DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export STOP=1 +#export DEBUG=1 source $DIR/aserta.sh + + + # # Command exit codes # assert_success "true" # assert_failure "false" @@ -108,7 +112,7 @@ assert_success "rexreplace -h" echo echo '>' --output reset -assert "rexreplace x x my.file --output" "foobar" +assert "rexreplace x x my.file --output --verbose --debug" "foobar" assert "rexreplace x x my.file -o" "foobar" @@ -149,11 +153,20 @@ assert "cat stderr.log" "" echo echo '>' --engine -reset +#reset # assert "rexreplace o x my.file --output --engine RE2" "fxxbar" # RE2 depricated + + +reset assert "rexreplace o x my.file --output --engine V8" "fxxbar" -assert "rexreplace o x my.file --output -e V8" "fxxbar" -assert_failure "rexreplace o x my.file --output -e xxxyyyzzz" + + +reset +assert "rexreplace o x my.file --output -E V8" "fxxbar" + + +reset +assert_failure "rexreplace o x my.file --output -E xxxyyyzzz" @@ -195,8 +208,14 @@ assert "rexreplace Foo xxx my.file -o --I" "foobar" echo echo '>' --void-global reset -assert "rexreplace o x my.file -o " "foobar" +assert "rexreplace o x my.file -o " "fxxbar" + + +reset assert "rexreplace o x my.file -o --void-global" "fxobar" + + +reset assert "rexreplace o x my.file -o -G" "fxobar" @@ -206,6 +225,9 @@ echo echo '>' --output-match reset assert "rexreplace [fb]. _ my.file --output-match" "fo\\nba" + + +reset assert "rexreplace [fb]. _ my.file -O" "fo\\nba" @@ -219,6 +241,9 @@ echo echo ": Combine multiple flags (-GO)" reset assert "rexreplace [fb]. _ my.file --output-match --voidGlobal" "fo" + + +reset assert "rexreplace [fb]. _ my.file -GO" "fo" diff --git a/yarn.lock b/yarn.lock index b2090c7b..b990d2a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -828,6 +828,11 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" From 21f5198bbbc0e3c167a83c45a5dbc26e6fa6973f Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Thu, 5 Oct 2023 04:29:04 +1100 Subject: [PATCH 15/17] WIP --- bun.lockb | Bin 153903 -> 112860 bytes package.json | 189 +++--- src/cli.ts | 403 ++++++------ src/output.ts | 2 +- yarn.lock | 1728 +++---------------------------------------------- 5 files changed, 408 insertions(+), 1914 deletions(-) diff --git a/bun.lockb b/bun.lockb index dfafc6f893ad254e07ad224f071603a5c59515aa..0ffc3afcf747e56c2a51256fb7c0615be8fc5a75 100755 GIT binary patch delta 39672 zcmeFacUV-*vo1U{fH1%i6v;?X5kztn6cZ*!R8YhO5+q5KAYd9Wiz4C@M^wawV!#BL zKrvxJF<`)~AO;L5W-)zlP1t+R@9dMFd++zx>BrYvRoz`(U0vO)XEAGf-$Cw!whk+8 zEDK)9^?jm!X3detb>5}@$FE6GZC5D%y1jArz{G}c?ej859AUF4+2jQn3%>LeGa?B~ znZ?SCj76cQE=%PPQ=p+7*WA)gN7{J8L>$Z!W1>n-Y$p6Fz2Q6JnC#pNGDP92E|NluxL zHj=_qlLgTc8LZnNHCEP%sNDE7go|+QHni?Jvk{X+m92T1pPc939wPbK#SVgoSWK=#QBuNmDYgQ0I z1`I>%#-PdJaWle`Sgi3pX~Edo=;RcZDtPLdI=Za|Dm83Bc=AM4NV0WAY)E7=7%G>J zUZ6_mc~ELNI(~X;bW(UyN>oxpYGf2^u?GB4J=W4>v2;MWpj0s_eHw)TDARsIx;m0W6}ZElR;CFPo7JOOQhw?wfoC>4n7Ebd7)C^ZBJrbNeuv*M!TqQk5s;s>J~DLACfn8}$7?!ai$ZwpGr zeuO6G1*vM??IgA7G_mg0uyf|6l~&lGAf1w0uP1Ih*EN%Ao%A}RL%;_cl;UHRBk zJe19#6k_4YVIe`WAydP{Vxv=|Q6Zt1SdknQkz(njcn{wr{4yVa(imT}77vAA!Ql;ouFkf~FnlM)pi#s2z=l?($U$W(C> zcRVCM1FKJ1)D`pt8JTB5DWrx$DLFPIITv6&Jb3lU4pMO<$YC^_stD3y;)NJMX0 ztg)`*P~8to{l(%zV%AoPJR%{hcQIi_poGf*;Q z2Pn;fLU(b!<)AbPy*$J*YzImMu@U8{VXV^_0~QM%7u7HABOWmHkEKE();~Ed%of93 z)>k~TyFjU8J}5O@=_zh7BuO+$S&<2F15(%iVuf5#GE_&x|Li9&KXiaN-xHMd-GjUn zsKG#S`HSEMWcgDFs7ILKGoY6hI!N5JtB_MqYCtLE5>v(NUZj_}{9%bAsluaBNRw*2 zq@fj{G^=|L5$o#$N^>X!a_X4gP)u>E5G|>A06nFKxEORYNE&3nhl&-v0Hw)Sf^yWO zy~D-w=(Xvzqeh7KL>>+!ky&HclU%c- z6WJT?5BXY@IO|Ph-I9*4&6p!<gIRy$sSPu_{@e$+cS*xi&}P9nso73ZCMyTVdl_{rH^9U zgZ+!|zFH#ex~imZXYc$(KfMn{ZNo@++uQ2o-mV_$sw z?+Y1lPW9u{c7y6U(fpXswyTzAzD%ESGiSt7{SW8wab3py*s9i;HTVjB%}lGbUW|I) zZ`0kcxl@mAYHm~P%X^%?t&iRKSzn)Z5|mcW%`LlZtfp@^xT$YV)rP0X^!h4uTof~u znf{u(%o1%2rNs)XEbe>Uzt8N~)>ZQQ!2a;;M9N7fif6%G)3(qxy>A=TBgpi{lu^dr z%ue54wypf^t%`=+VXJiPl#Dq|LB6f6iHx02f0GsSSx$}mwdbS-B2Q)q8uYV0c4Xx| zorSGS9x>@U{h5sV!b4IMgc7+H<}& zVDImjW}m*MbS{Xq>=L?bb?B%+PSZyY+x<$zqV3VUWS#eiha5bmFmGK&NDub5Au}sH zKNyZ{*jU_P)mf@AYyA`9hn|mqJZySkJL0pQ^S3<@7R+;YTVi`N`^!wFn|J4r=9;B% zOxvxl_twUFZGfAdTuw?}tRO@f>Fzo5X7bNr7k4N5kJ_oEwrtds0{vgHS}Qgm^#3*I zs{ej#m5iCO>Anj`C4EfqP}@aSv1Ch-)43yRzRkkV8}?-`@K62iXYBQD?297*kb@;} znnqt#>Una_*jxO}Ppn7J%F?n1=UXzXQ!c$#7(c+g+GUI5?U6;r-(4%~pNEzRlFJvX z31=H0UtizRV*tlVHIQws$=H9qzP+(sx68muW?7aMBYaOL-`ZTvIa9N(?bo^D_=kfA zJb38azVp!JIZ2KepRV;wi`j6x`E zt~SlMTB@rd^nEmQT$fNs{_`(~=36RC6`D?0n)r5;+Nmd>yH)GWx*RE0T%TP1`<7oH zu2ip7-{`rqRSyo7?YSJc;_KE?ABObr{MdZ0d$rOW<(2@Wew&uJzdt)CaYMu98y|%G zZ|l!C{jenURrSNU1B2Mibpu=Gy^Ed_Rz~bAGFi-ZBUkPraCYDnnd|zlTxB+kh1*Id zo6$6I<@m9g+Af})d2B}6*pqXJ&3J?SVKdprp4=b~i-mhMw4kKII&fYL&)9?Wh{JfB zcyhGmm~0bI?nr!`!{Q8m*9}~`%fa;qr^5K6tq0)xgX2&h$55WhHudC;m1k-}7FFjxz&=AiewI#i%)~N{bnkNxN+d9 z9=eEzR(4=&yLxiZLP(Y=FuthHQDm{OlR-n*6Wo-*P^%m=lQUP5sqN;;xu(b{clYGV z!FyDY&G?$Qa(XK<+1))k*-A_;^6nxJH*e~!zN>;U?l}DzA43mr5U$AKXv)Y|Lmm#N zG##MZxM*1V>2tX|Q4G5*bjY`xEBCdel9GrsLP_cZo5}NW<%WP08$q2Ff}?sOlekyG zQDb5Q*(!{(fhTt;ZnxAUu|MX66Dy-WTu@=M%{>*`Asor%n0hEA;hsB@t~lLzjCT)D zZV2wRRK9~~5Z8l~xC)J52S;v{XYx#4xm~eez`YqkL0mF8G6kat7oPw}V}eoW4u@km zN=C!s7!!AO#@on~yAVR`mS}*7xv|xmS|d*mPlNHcL_laT*&r7+m|A^Lt`)Wu<4{me zR69$PsWtHARD+<%J55Hprzh8}qu6LfS65f=WN>6A48xGF>&Voi$TbM5C(r_m^s!YT z+u=AvSA}WdhA=sHeb}9tS}RY558&NJ0p3fC@$Tix&BC6qKZ+wrj9odWw3u25zd}f! z64}MI$M%i9E+_KFEO69+5yz?R%+y+Ya+S2jCWxX?!4sSt2&s-1eh zQ!O~^EtXbzsT~~kNIdggdWz>^2Q2)q+(d8#kf+7u*}8HMfTI>PM17aHVrnBiIfJd3 zY%Fi7R$^PkH=t@O#@o=7s{rr+753b|;Arw-CSlH{gL4;gG+Gfk zh8h;%Sd?w0vzDSF2%Kaonc=1chO9>|Y!@zr>&4V{_uziR6}eA*SFpe(sl({N)=+Sy zK!H|y?p|DImyycoiJkJUXUmF5)KXFraT`U`B}V3otJRpATfmdD7X+n zm{<|u#5y%G2{wYGdYC-e)ii+<_Y$MUF>z+R<8cGV>JPbiU^wN@jB}KC&%u!f(X`=q!+fSLiZ*oI5O4#<93tZ=IP$hQ?;|*jrlg)J3>257s0jl{ z7PAlmZfrLud%CAWGX$bLBDV|nbYsOe4P7}&y&3N$PtM`qOm>ndR~Ze^WD!q)Z*Zg) zV~7b+0#0Hn+IS9*d<1J?+hnXf<3${eeK|N9Hf(<|i1G+-6ebSd^aMxF0cYc?nFNj& zElryGNcz&HoqG~F!;sUNB9Nzq$41m6EtH|U0ku;mWn`FI_@l3pW8AMS!?o z*JEL-4bR}i{dE~2aY^1T1yn(gA;8DxDJEFJ-}!o_T#|OXo;8n-QZ|Mu(yNuAK=J4 zSO%=zl%Sb9E}96u6mZZe>HrjV5jmQB2vRaY9Hi}kapVrq!Qz2};aJ)hfx`nW>J;+o z!1;p1ii$n57or|fOD!RsW`PR;C%*60gQI%bm_mysE@|*Z%MW)tIC2g0FmZQ-6B|!m z(MB<{S3DTw!BIEGD@zGDa)CJSIk<7)#1p>Ha7o}XnloK3j)J2psUSOMxDJU;j0&-F zWCeFrSM&`|>&MvX>vGlMd`w!&xD5t}@S;dFaW<`|pyWwHGNQ4U(O&;v0M2f9M zQWlFSHHbU3h+0di4Jaj9O69QTippVVM2RRh1c!;_jv^^b^mhl6J5&2q5#AA{f1>ip z!PtnBEF}dPB~g7$VG+eRi4sxL+fU5?Bc=TQq+E$n$m}6<1m>8?UPQ8}Izn8Oh*EI` zvWOxwMTsa62okd*N{$YZ@UoQZhf3uCK*a+=8B{P#QjjPqi~vX;2~Z+Rd=xQA|3oQ2 z8X!N#0F;Q5JeC+FqQu9EVo!7-4#8wxvlxXeTc%f*5|_M`E|U0U84HM;LmZMUB||d- zQkVr$B1-%`Vvznbs)>9?R7yAAyMj$Hk{~s@I|DP=T4-Fv?YzAm3wu(yq zTiO}2BLI1}N|OH{Qc3%wf^?%gBdPG;p)^G20HPNq^@x&zwGy5v@s}j@vP3SW0_g=& zDp)6>S0wZ*C?#1+%i1k~%HIaa6L$bgL`i;ELhniFeNamOLIolLRd^uE7E>i$H%oY; zl>bb^6D9t+geOV{yp-^=l*+XL3P7ubew5H}plteU-*;S4B1#q70eObEK)i~Oh}3f^ zOG4>V4*wCA$A6UH0hC6Z9s^S%N&~|KC6Sth*94{Vog}m~DE_gu>A!zVIatgJ7w8Dc z8|IQ?JtW15szB}_kvmG{vXq)}mdIr(iCiRdq7-+1B|K5O^pxJzQ>N8x36ik;C_|GUQOqP^Sk(4J&gELFQ%Tf}}mdO7-#h8)B0u-P!nG%{MsX&w( zoG;;}6e7|7<^OmOBVE>HH#5|rF|~k1lngW@28k%;cOwRgC{0>RfaH=G_;2rF1hko< z&e=-ne}5AruJ=!S7pM~LZ77^&_bwzSo(z@jVLa(`h{%Bd@g@fK{&x@azk3+gCIkYd zO``w*Gb)*E|8+sJCMri$V>3V@yA_}$OaFHdLmv9yJ@5Mz9dO}W`1tGk0dPwS zc}(Z6e6}VNvNeEl+sI>Tz;$9Yw*@dS!KH5FvpX}Vz^yIfG2M&#Y#nBLaR4)H6OXwC zPLDC&9>9D9w{Sb3ZNOXySF)MMIPc)IjhL(*0nGRALfnJ$^So+%8WI zUT?lFgo&KFbj#JfXDYUj55kkQz%PBmHlG@Jp9$Qi!#ptP#yl}F!RMFX>c27Q-C0b} zKjRqPVxHjp&5pHO8=o45tbQANDlydg_~JUdx|=ymbj$5;PCIq1=fdvos(WXQJ2he5 zp-)>pnjG8Sk1hODJaYtZ>tYuh{|kp;rc`SWS-aOP-Fjr4_v|anhjDLx-c+D+->`o3 z`U2sUTDgSw#GN}QbhNy7KzTS{uj1iMj{!=(qLtRp?i-QU%$a^q@txkez2jP#0|P5Ow-5A{^UybO zGFf=h``P)fdzIs1j?{Nn%&7vz<_<*FI=&A*#*-#_yM-<9Yp(8gd#biS_U^}IH~U~M zq*E{xcSM!WBOX#`l4qc{j zC!cN0wCqHTm+%;$U3|7ZQ?Ls$zLUrN0_VsK-;EdtSGt?ec4oeVTf2+L1n%LpU74MG z5aYXf46l^W?#qW19^qkVk#U?zGW=J0+VQwMG+qqiS(7~GuweD-kWBDnMe zJjVI}pUr174!}CM z=pVSkaz5LiX#uyk0-mVgvjdod3iR&~JOOS3GyD+x2d?xGpFN5B4zA=dJaL%M4rF#7 zM*oh$6G!;$Da?c;=-*Kua~xa3Hyp133|M#K>nq3QB}?o2UCh@>xcNh+_x@Z*fw`-i)}$%fSF9>4Z*$WJG^m7E z+#MeLcAqXZvGI&S12jph6;wXxzzN>qo-PfytWVFVw_JbeaEqcm&mccmla)L$&2LNc zhtbaug?imrI8h$#-Xrx>2US+o_Qvxc*mWOr7T^Couu!6xKJFz;AFh*r`PKpFmhwVo z6__RtU3w((xixe7Q91v&RY-I5^MLJFJZlw~t=MM$@<8v-Cl1v`ZL@x>a=-Ppc5}m? z;3;0L?iVIEh!k@~2B(lhNs^!a>WGT1R)WIki@&rLht6IYG0|kx4$m9s<~2`Coi11= zP-)C5@-y+i@$&m~J^Q>kR*uqAweXPIi_T8_F3m`J*cc5(Qct8xwSvme9d;yp!Kj~n zho-O5ZGFFab)Os1FfC7S#o-f&i+_JBzH_j1U}2w%d(S7l|26CSEv?6WqI;As>8i;& zJ*U7o!~Mfh(koyoiNMvdZ_v z%!6l2qP!W&Q%sTKbXmn|fs;Zz{|k@Z+5eXSO3n#*LTe`Z@t?_NvtsC$iVU%0@ojCEtm5@OZqD?KjJ6xMaqGO~k49sg zZsnxvlxKRntbDE7acTL%C-*LlU2brAdO_BoE55Z>-Wtgp=jIP~5FXQ7e?3y%kRZ?>SG&1)kbh)N z_4S5jB|$c;toJ9LHmP6rM<~12%#pQjOc#gD@I9509@(eH%{pguYiYdswEV^T*>_Jj zIJ0`QPaYod<(v!Sp*Q!fZd>)ohFt+R)2D|oyS?z?;|1D%RgcbVVSLW$3Qq04liR(+ z?Awu8y+a};%i-tPMD8< z-`m8!hLL8XWLqUklUa(TC7Qiqo$s+C|nxX$*SK+FxK$|9t1?D5o>Z+wTtxaUSyO z$(=Vc)@6}dk|dvcdf}Ax7uRZsMW;6%T#zuUBX{h;vT1ui-aF)7^Jlqt^_aZ7i`Uh- z>8+2RY_sHbZrf1d#cj_fk0{9WoO^R>zh5scnbNbc?(FgY?u)L^p7D0My7%KLJ#_cw zEKPqL!8!H*@|>c|TN*w64h0DgzP9X;)+_1C$!Nu2N+JYjl~KvwWY0vTCb!$6lH@TiD}Z_Vgcey;F-D z(jSC|OclKC7u&`4?2C#H&wA%(UY~K}y~EUoc8=%M6}9RYV@}N46UWI+(^ffCWXJH% z=?ZGk{#>UMS`&KAnAdbGFf&8H;8|qDeBUFFrj>+_aVflV_~WT*&s}wDPecr<&0kU_ z&|PD+>A1n1#Ge~O=0*rE&=VACpBKv-m$akksDWw2v~d?=ls0u-Dt9+t`|b0g8kygk zCse6*D=#lId$PJBe7c_QGGR8`&ZFqVsgMzoQ{{Dw_vPhPTz2d1P(03|ibJaDfS9A8xVYyd}G&!%{uA zm42YGp{+#5x}~z#nO^V_?C@#2{?g8`$DgtV?<)!#ZoBXPUD+YB{lxUVj(;?V@Aprr zzpB?m)38YS!Kt}hYOL-pnP#z8!M1Wy$C{b9<}-2Ubw@nVDL%YAF!|ioOqEG^(buUU zv~*&pwL`woisF2o|AJv_e{pbEV&9yZRrUPN?SA>Yj_tU2V!pMb(xNASX0)uzJ}P6~ zGUikbHZ~Wq!9B<4Gbd=A4B zy0gK*tmO#{*~rgl315+5?Imolu+bDUrt7hRyNr)r>-p>g<~q1AdE6@qHGRTToIdvF~Of>SKvIvxZ^AoxXsGc2LE8U#`IdBRdP2x?fu zb`t15fVb2kIL{L9QitFI1bFF-&$-AFPSk)P{UJ|yoCKFxLS;<|EFSTMahed+!9OIp z1A$RT2(H3E9U)lq82%x_b@->od`&IS3$}JmC9t&J>h2PrypngFX*G1LP;nk>6<+0~9y$&a|tl1{_#(vSE zW0Ak^pYAltWy&Pg@Ozy{9oxtBZPFFQ=#1*n)T*&QC3*Rh=I62dt>;*U^}O9wSo&qa zl{ft3d*03~w(h)WtgG5HO?&&k^L)R!dTqi7(-YVGZySBNrHdY{k**{33{slp$Nk)J z;OgK34@}Sce0b33QCEWn-76NUU3`7+BTL=sjL!GTsm21UCmMRDPfQj%_3CoZdVYI( zZt8;G3#xOJI;O^Ke9XLsbt@bB%eT8uo-=6t;Rf3&r`n2x^`Ey<{qCDNu87?`t*7*ePn6V$t%WZ#&xr@*0X3GJt}x#`9$THfxV(mw0zY( zS(03=^dTveDSWCc7+4`xd_H>knCGUUrsac<8^5$O+S(!1G(*|oWsj!gQ$x=Eu8ED= zvt{Nio!yOE=^k5PX+;o8>ps|MBj$By>$Z|DH`>#*?xTk1)zEoYe`)Y+6r#!* zpJrXbF@9&8+C`7@1Ft&1Tgz^dFSWDMRyy?N?!NM}?AMx}%iCM8=YKf(xy)szX~XK$ zW6PEYzvrxsb4>`+@VQVDa%Baqk^1hj)HG1}-hZy&P~Q15&7{ln$ENe{%U^tyTRrwy z_aSa?_9~|OYya}`x_Wik7-hYN*g2MyLc<)UtxN4a!D!cxAsKsS{5TM@qcigh*1c-D z`*qxveTS|DB~|v-IIY|9-p#pMH|lf^Z)Xk)-D4Nc@8mRzS<&M_-i%IuT?W^^E6=;? ze{f!?;^4T=EAEYd_(8_HMp^5cxG9ghUl;Wq+HZDQR=r1B#=wYcQ8FtgTNTqLJ)wx74kyc@F>a-*Fbzb{_Qls?lH9NHRCYV&i`nFa5X zN1WX&Z&%)H;Bsxjh1xAyzvfqsn)YeTyODVTqEx^vgHa$t*o#HHez(od(Wm%2@YQ);a}d_oI~2hAnUXoL(DWUAA~*ueFwGZS#Lk_Su=0@v@t96 zPB-~(*fuD~vU&59kjC9J71=!!R(Y5Qem>0vKGzl0EdMnx%b`PJ)f9y@BcD{;Z!G;* zTkGFpB(u!p+n4zar`LeTN~d>U{xQfsR{hJGwkqA!2YnlU+rPZw`}9z+uBYk4fOKS^ z$y#^4bZ}G9*I#)Pdhg^G@@h^DoY5}N42b=+FLXiki$P&tZJzNVPojJ3<%JhHuDJ1L zmcfSCle_yWG`<=bV6*ovueP1xz0eg*e3NOdd%KT)>EWM_=H`VSD|N!&nMT%`juRep zwAeTAP@ZP|_gi!7IYC_JNhXMagVeSnXl7eDA-r}U^HJ?+LsYa4Cx*3mg*=utpE7s{gC@}+y9{3ZoqMlO+%VaF_G?+|`dh4;_Geu5oKcxx7r*!PDKg3(ti7{GyXNp@ zx3R4w^|Ds2sG4N)d9dC%jWl7{yx9HQ9w+#G*pqqabeOltErr;##~7m)-4Try8490f ztlM#IM8S!G^`j6|5$iWES$5+HD`Wme!_wq}Vy8cYR67q2PC7Lw>dJ}Yj!z%P&Q6Rf zi1-x0y=#o|a2emdWm<0G5l{N0?Xi zIXPw6O|yOdKH2rTJ#<4$Vq9{KG z+6F<+V(X{M2~V##1@|octT*{tejqb=Zrk#AubeXUI!ti&(aW_Bc>DThTfc#-Q$y#D zZyS3@Gvo|2=asIY{f%>WlH%A;7SWRy*BJ`a;zARzZrJ#UbJ;Uy($j$rN>_ZlT`6mR z^k&SyH%dOOpN^kzSE}uJwfR%3@vD&j>{gmy(y7)aYn|6Cm9I-K8b^*Dd-_Y*?@=0# z6NjaD>3wtl(i#W;k+Q^~!v?!MCAW>yTVA=ov06!Zvx-0DQSUF-*IhE7@2;_W<8+d- zeyuCW%`-fdq4;)ZQ9%3AF5Hr7fx&m#HQn{^x!*l-ZQZb4BSJcK?6-P#@$F>GK`TQ1 zcfEJ=y0SUMY+c%fMozic?D!fP>psd_cmF%@z?sJ4%Q5a2s*x^DWc`h`iV zYbW#2!0?ut`|efNF4b!rA2|0$x5L&i-bA$^tCBewq>Z>YSR$$6tIP*9sV_2#_oo@ZW`ZaY{$ zaAas+FYidt&-0g*J>C?%Ir3dq=$-7(kH4yR%r#g3@VF@8=dV$7D-VXLyr^b}9T~R3 zOvbveves$!+c6;6%l6VGR#ny_5{VM5A&T@~|% z>Vv~K*k0~l+qI90vDvl_Uq_#wW0_)ftK-U`RXf`}N{i|gBW~@fjH#r_FO9qJveq@- ze_Qb?z`%cE@U-hokM{1w3B3KtW=2bW?=eQ!CMvH&jc)f!e_X4sck;^!)*-i>qqnSR zQM-BE`eZ|g0}txoUVoy-yoGg#M2$-{z^{9x*xLEIj$HOe~_=sD%$gL zTd8|mZiu1BjjWZ$x^_NYvbWBQIdW+GqHXy;UG*0E={rpPneFhhw69Gs)z?Kch3*?? ze$3o9n<;G76$}_~sK2F@B{u*z@yfsWHoIRyCX{mI-i zG(W4kTL8$0lr_%e3ZwNH5$ zE-m`BGGw{=qbux|3-9z4zWmsrq0()?&aUv@H6`^i6<=IZZPGpuOk;k*x<#YkH}ijg ze%I$wo#iRM&C&VsP1k%Y$;vf6d&`jv)|n6jbptzuJ+c$ z&pSJ4O;T90OvZO?JT8?cdA*R*i&YVurw+Ky1TUJ!Q}{7#PSrV^ZZB%@RZQMoeSLKg zo2k39`n&0!A6YoEJ#S|GgriAL);S+nJ_x`6X-JDIcO_H$URRKMdDjAuhMP9-`7-UeJd$?R#w))`a%C5T=&RGppX{`+|J#KmHO0Tr|uMXe#Pk8Ci zeHA5Rot&(7?%!&Dc&6IUw7vEwbIj2AE9Y#g-a7Z0+t&1Geh=eKM@xc7CJtTIF;LH- z(qce!y;eoe!xt}%E!Iaank@{mnZ)sVzy!AG3JhuvEY}S4+4$qoLa#NyLR)>Fa+9aZ z8>M$1SMX=c1@|G<68ann17|7Op0_Ks+ch-xWGl(9}h*1B!$ zOm%(?Iu-chP|Ejj!?m_%dED@>&iyz~?P**2)uX=$49V@fZrKlIy{DfyKIv6qXS8Ce zQ}?Cez12It3!b-rim_SDWGok4QCBvgv4gtUd7bU4@+9dKdS3^>pdN+&FsniQV#PCvFOd z$jes_y18K!bNquYQCL&6%d+E1_89-iE3dNJ z`+9y{)n9*IT*D5lTT#I;w-_X3cN?>{r*PBA+}C?|{8Ub7;y&sME*|wdm1v;<%fEl` zk~5XAZSg-A+nIEeJ9@)oK(F&!7yC~+_iLz1)49`k7Pvksd0830v)}hhg^}k@ej8D5 zmLHW!f0&T2qAIe+>1m(s?LDuih2f04|2Sku%|1JxhiBwiMfV|%-JCj|_|tAMV`^+s zkzVP-JwE3>5;fAaTkS3_eAdeSF*|k5YuTGe z$II_TEa`H}S+(VU^x9bY=@0H7t-dj3(djzfpjf*+l@!MyPONputh-aLZ2o zj=s7pP4czhH81Hcv>3Fqi3v~+9n#F!aPhy$UviSoY|JG*eKI!^YHm{s_X?^Kt_sh$sjOAH(c#^g7bKfoU zc^fZ%$XxM$(c>}v!jw%%*@F{fcV!2SPBIW)rHKUOSz%{T?z?drh22@S3KOr)_Y_*zwG_A!b_*Ue~lYR;`{SU$l5u*k*s;&a%26e#cU; zY-Hl3gIOMgz=n3+XulGW47e>_jPH0_vO-FmkHs$T;O!v(t(Rs|`a z=pthseU)391IpEN6ZKjCbr%qNB>S7xZ3(Y-muPd)LB^N$q0 z#@X+Jx4v55zx`R6|2S`_;GCa@ix(Jn|9XkZ`Kl}U(7ZEzogsVm0M-Y2llrg+$NCzZ zZaFkza$Q|z$1dYTmpru_)8nJ*Wz}=54SkmGY%g!__x|W*r6+l-hjxE^`>Uz=+yCPG znvSe>9gZc;z9#>$!FKo2@W-9w*Spo`tnOW&6RSB;d0(ou7IDbU6)_^uBy=~`$enj$khvSI3>rY+P3ze za6R?#k}ldIN@}Zj6{w9m``KWB!kjzmPrQF-2KDkiw5s0bTGisylVp6SCu?1F<)4xl zHhsUl`gVG(-n(FoU+ua#ee(L1Z^(Mr^WY}!Dzmvu1v3_I&`VL%+f}pj{h%1Fokp+A zjJM}r+VbUs-?_JV%mwQfOf)m^_Uv`Wi*~-XVQ}0mg;hOMRCbtuez9ut!Y9r`LHvmu z#|uL(c1%n=dM|hSP(jUs)Ujo1O>?hw-8F0Q(I;v$))~lJrB4_DcoQ-P1SRrQhq_PV9%A&+fEvVPBheC8dk*T{+ilN zhbjDyhap$iEPK24kyF=QHlNO{?CyH9W~0}Bm8U(|YdWU%S5cfM3}2Ww<;!QT>ythQ zmO7o!oTM{q&L{G(i4I$K@5{MAQqOGbu?w2X#yt=EkN3&Et8v~i<+CZ@DnWMxAQr$(Fyj^n+9k_EQlFlq#iys_`uN96HE3F`;+5&OwQFRL!&+`=+UBNzCzrZ zp=&QpVQ1$AjIoii&REvEqj!3-bBjjKde=J8BYMxI-3mDg{S}uO^^||tx9_UlRSTZ$ zzBGzIa7NFfU%6uVx1+8Xe~$e;bX3e2`8PSk>dcqLZ()AHx}hFEH*P&yvqtIdrU83a z=1zJPrZM-9j=y}LS2|x!8hsrf?l_wLt()zJ@>cagw)2d%1hX5JF&h^a$tQ06^Tc$E zj*NAtvevyBy#b@m-`K{K{=j;dx&B_!K*a-oKZfSr&R(-2J^I>&Fx^7~ z$7}YT)+=R9kK>b0-{}8S)o0<52?|Tj+zcFO^5p4@oq=-mPcGtCm`#-ZBT`pc>sD`= z5IXi7FX8@R{@}%9G)$*$x0N@R(|a{OUU9+DFoy|N-Irc08W^LuFXr$%)oIZ&MoV-& zT3ot~NO->J=$(;o9vd@(KXnDO2b{C$w%ym{YW1>`+>_naU%vF5c)0lKpl>PTFKH$} z+4}xzzZosI_dgu8(XLwRrEnRUMGAj^2=wCi!AFjUKD!U4OWFdTy5s$A?`R zJu1|x`NG^Uf!d=sRAnEl+ph32Y+zlp-kR+f$Ak~F*&cJD!`Q?1BNNgE1z`^N1&^DV zg9-AF0T(3@9|g^>AzN}QD4FL_Up9HJSw#z;YLJA zTg}i`^Q{fTS}M!?tScL|%2dWWOIhnQ11~i^(-=R^>i(GR8{4~D&E398ow+b?{^In7 z@|&U-otU1HWa^}2ulHeL;XJRin(A2^zT;EM<4evzY_4{5_0Jf`#QoM4oL<*aOEsx% z`wWAsN?PG$*Cad#`T@IpVAv&+stoPOuot&W`!DSQ7hY7JlTy#4g8 z)lKH3f6bo~Hu3U}wd>jKS(crl7_T9l*wU9C{~tgLzmy{1P5P6^1zhp(Khig4r9Xe% z2$?e8(ZLTU$QohPiT-3K1uiKG->zXB=xzOCf9j&<;YCI0=Zmj4%B`mc0$ zrY>tNz=s>^)(TL3zem=v&U(}>C4i_j(X}d**H6|7|5a1se7t%sYEt^+yGOc6YQk;qY%Qk2!1BK}`gZz?qPCEK~w*?0}`f-dT)r|Zup-&`Tw>x|0nvS11|kt>B)Fs zUqw0yvWo5W6%KD2$ZqaH{~vQuc9X1Zy{v^-a@l$T)9+6dOupm}RWN043TBQaN~oeq>mrw~IuERpYO(@6)bK^qL~p z4ABdYAS@F}L4+)81ZhE{4H8|_jlY*fW+su**Y^AXGJv)!lue!*2TvU^$QjtN{7}u7DfR4d@P-13l>dUJG0p z115keKoLU`VggVA(16nb(}2S#uS*2HXH{0#^V&a2cotE(!~UYy-g&Tpk6E0hPcepg%AG7zhjkynw*~ zy^-kw*a7xHPk>%tNdkg_P+$r`Zv{^R=)K}mz-WM8M&<)F31}Zl@rig8uzKQxmJkX= ziX#d%3M@Oo9-!B>hohk%z)t{gQLt111>ht2&%hVJ3U~(C0(SsnfHWWuhzAk@UtkO{7Vrng0Rg~xU;;1^2n0NVK7bS80Hnge z89*A44rBl`fn*>Ypm(Du({%L*#sFghKVUfE1q=pgO1c5P0S~|#a0HxyKWL;Ea2GHH zMgenxxd8e_->??_fJGE&7%&wG2SR|pfHNS7hN2iC4oCp#4eS75Jm3lR1*}o<9xxin z0y2R}AOgrjehg?o&}E=`0Ie7IfqK9jI1Ok6w*Vi&56}m&fbm6(lMgDp0+bmF(4s?& z%v@j=5Cu#FVu3(lATSTe1cuT3`bcBlgy#8da{(Dj!$w|d0IC7%zzHA+=nl}(#sL&7 zHUQ0+u7D=M14ttWPz6)~WuOBf56A%ufFi&JlmL>GOoJS+jteyjAP~KXO~a!H=mO*& zEua(786eN-0OSz^z!)$Bx&UT?31A9PCwc(1#84+F;Axey1ZXBwDA>`!(^v-q6qJ(z z3Rr1i(zJB|903=AVxTwR3b+C808McUcFL!i8VS(yGz1t7cmace0e~k!hEP292l`Rq zkzgP&6z~D~08L?v1)7o+M-&6nndOh`Nx%evhJa=kd5UJ)L?9Fh0fK=k0P(Q^#a}ou z6^H?%0RaUjMf@~iDX;`s3@ic`0t`{&Y+x2J6UYG4 zfiz$SkP4&#G}DrR>76agE7 zLSO^18eo7Gz$zdQSPA3;>wp4aEpC~+y-s| z*MO4%HF_1e0@MMgfXe`ty$GBIP6KCv8sGwO9ykY(OhAHKfG8Cp1yq3)NNGK;sql5+ zCU8S?P2~yH2+61pm6g&vxPAyc05k!6fP(ZsAc-4+Xun9${51f&S+ZDbOgneh&H!cnP!tt-xF0H9%!w0aW%4jsH7bya#C92p@pE zz*pdl~U%@EiCE`~o__V0nPHB60vnLKQ$20U9FOn$Q+yGp^M@>5i-l@aTr7 z4s1pSZTHDV9VL`@g|xS!om~XvwA-egA?*-pr%2m*KgfLn+C9dAnt)38PPA_@2f72a zcQOO0tSM+WfVL54*i?u%7g5Ndy#?(lXm7EEZlg%IrwGp#vwMz`9^oPVxqKydke!Xa zjf;b50mfX&lpaZd9D5r_o8ESRotYy&v;a8{b~Y|H4lGAu@^-ePK|eG=Ri%d`h^pEl zpEXQ)YCGGnLC>p0kASAG1er+VF+t zU2F$VJ4@JMH*~*;bJU?}LUpUchDUELpuryAaK)<65r5zg@V)61_~BxsD94U;kL3vC zcSBc=oUjTyIM?Ka?{~9xrPQ!SPPC3>x_Q^OI;_`EmuCk#k%uv{<%OPm*t&+&^RKFV zt-t5tuj?(+?SNk-#EDtLq&?92OQ$pf_- z&QZv5wZTYY(kTelN@0&r2cbnNbh#-CClh~MQ8=TNJ;G3WnAWnXs}EG&yZD&Hc0fgE z_;jw4@DWN1q{nV~7!M1YxyqX_u@8gt9}F}smma+(Jx@av0xsk)>C-9ci5tjqLxZRz zeU>FXlLI*zJsSmN1t<%z?Pqr$gZ@Yl^OBy>A+km^64K+nq-ShGkw%&!zE-x4k+XaIJb6J;Fg}wHo#1q^QG!Ywv;+obBITU9u7FCsyeC%mv1o*vH=?!U^`6>9BcJGn@Y2AjV9A!|ktJsKdIXlS8W zO&lO2ZBK8}t39KI910NR>{k=c-N$w?lpYrrI=x%p{wnHjC_!U{rq8PjNAE(@gEfQ) zsid!lcq*{wohZ35B1q=P4srU4kLdfYpj+t0U}l5GAnyBpzf(xJb_>+xwvM zjcIZ(eNm@GCQDBoGqm$cO>pV;6*&^mIqC^j%g~vAdP4IuSp1JAMWZ1-Wb8)vyH;Mu z_QTLYeZe@b(-*FQ4nyhrWkISZ((4|+>?^WVG=cZ)3r|BkC)GgsrHnm7AU(iLdW3|? z9+9P@6TaXD=@Ba;9dJChx?RLiM5TwYNZQBpB|RlfdQ8jTInr~)qzAc3atxqOdeoTo ztQSd^gK+;LwvI1i^zYNjq{qXch?{s)NY5{m9w37pNmNTuIFlYRBT@@L2}jqnwFD?7 z@|g5oH0i-Kl2T|>dUBfd=o;kEGJzcF*=my0Z3b}IG=#`t-GFE4jHCOv2e#=$hQ zL3$9J^e7%l4i?&A*r1Dc=&&9Eoz^4I7Tsx4Nqn3fD^q%&&)+%H1LveC{`{S@RiaLM zCeYtG(nIT{rw09GDhyKn{HW7Vn%ak5Y^mmR4a=7=~bLl2OjE-I8=vYCw1knU!Nl&gDReC+`ZG)ck-*JW& zd-)CMkh2tSzk#(vdRSiH$ZJz)FP_#7H&?7oHcr^-S&BCl5oN4rGg`Ww7vFZ#Syqgt zQ0*pkq*w|qZem54Ybl(36StM-p2GblSVR6gaPOh-`RKPsLFk!-IK&of2p^$_;lFQ{ zHfXes5|@xJ%(|R}Uc%Avh08zQgG8PEuWkdn!j2W}PF-o%!g%Q!em6Judo`f(=VXa( z$kDSA?!5);|6z;u{}pyMP*N3FnpZ0zGYSa9FfcO=^M@LFJwMDeGyFLqF^Gh}h#Hfq zJw0!RcDi4;{kj=ok%s8v?$MwoM@u&=W{rQxtXVuqfnCqKBU!V$VOg>o!M{X96hctZ zY@+K)IQ!kIy8T}F^tk76=vQ@r>ej8Qd+)0^=X@rYT`uIWe}VZ1inBfchIFy*HEZTt zdR3T=<$UpHr=Hz@!>XIra;hOqC^R)2BLQB$?q{nblb?Z$uQx0B!&Z6dHEUHRV*<83 zzGV3Qzv{gO95}6V&%au;WcyL8qlO_%_w0J^vM2sL@iAm4O8Ur7pSH_yABDAJ=gECX zkx)yPW>^=5kPbQP7<^213{w4$ZR5W6{l#}a>S8d8TkuUu*;d*m2QQRy$clSA<*s8` zS%&7@X@&1>Ubgan<%Tw@)*kPauO5RP@8OwpB=)AtLD2Par(E5&%PHe1r{=tWi{`|CY9VXGbP`*P0FJCCPy#%`dU1s% zJLZE2CsbVQeCIHQIkjKMFyJGDt3gX^Xg)0wqh~TMTLo=$92tF~7f7_ov)GvJp>TK% zLj^J{7qoTcv{4LG$dF(lAtR8v3}nclVakL~Ix`H3$nayn45KeH(itdiH2d%v#&2Y- zG?CK-VWTi;B?H8fP+O=AXO7`58A=Wm3S}^k0WTR`PEnMX88DK;*+4O&ld&Z=j$7^; zs`811Q^#(C7(8Kp05$ZkJfTO2H3rOsjPb&BP$(2Jgq}}nG!zEg^C_$? zH&We_rMgmME2XzeZW(I;6 z7*~`r{6I0Q#|Wg1_UBW0Mk6P5e3|~s3PuWqj9J#k9*j>j8tI_k%XCr7aDw_!Vk?Yc zkW&T}ggSFx2bSxB7-A3jG)SBg+7HbRvFJwncbG7lRUb*(f9r6G5~E=C4>e@j7SV*HY%gDG7=&vIpaD8 zaAmMWUx=Yz8CKD!jGL-%fp;*_A}A(kF`O$yCxSxbVAC=1D}yZNg!SDkw3`_#mT?({ z^#em;)L2GnggPpWu|$k3%NUNJP_V@|8C`}kXBECABs@{FxHx!15R1_7!80?t=KvjVSeL9R2axJ4oLdGl? zW8E5D$;Gx&2O);PWvEG?!hpC8KFJh$_e)kqn7l);&?C*E>qk0W43NuUl#mb0H-2nY z*W!*57rm>shZwUGWVM52=!jLbmO*bBU=mcbBN%U&u`PYdt!s1$V6;n6Ogb=^2{{$0 z3geWiZyAi2fiEFTuLy7u!|F1GrJ|^WF@3EbkI*v-JkzH%8VbW;8cVD;dE{wS3fR4j z3jh52*iXdSSMCM}%^rSX++fD&^tCe3FN10t8Q56DTU1?uBG&8oZU*ioOH8GZGWf!b z<*5cz8;OyF8Kn~xay}Ndgag&0m2{Jdm?NBlO2O<)hB9W@Pz+?^;wb*Xj2H%)AxC|g z68U273WR8DU`7mz3wR-d2*425)+C1@W@dtvhgI= ze_=5C@MGwhf)086@S`t1-FEl@+PGER@#KGhxaX-GzBGIo?P+Kq`t7d{{^h{;{^K~> zRLx%1f7Lh3ZhPk7X|(ZgNACLzj-EXD)yEP^e2u`|Cp__=CwF}7%!aKO$*sS!X61Gv zKhe$6yT5xelDNI<-+`d6d^E5l{deIXy*IIEv8JEhHSdw9o~!t4&^HsqH;&zK@3-H4 z=7W`>lOvv;`@dhi^2X=ad8tTr5cH3Feh_c^^)L5t0G$el-P=AZcVFFjEM2M%`u8kb&UoLdof-p-Dg&{d}p0FXaCVt)^q2| zjVna8yy6@&afe_ z)bH<$q(LHr-xrU$+0BY~z|97`bKIZEdU2nib;lwYpisG16iFvAY>_I`1OjzCk>1$G zeqWt2Ns0Nrq^niQ&>TvPuZPJSu+fR99JzL-sO|EVXiI%g_G59scC6g_J8O18IyfD& zfTfH31JbSj*uiPBWUwzFwZxao>-Igx!X-!n9pMr>^fHW)*WIOMi`JH9i@F1{CHK)t zZ>gOK9|k1bi!CM|><=DO&)0MY7%ZtyNd%2W`3GTye>G`rt-6w7yKtkmJh46>@EvcvUtp5D$z?Mbe&= zmIoGy^%J6zgcFZOJV%x-6mQEcAim`{7QuVxE)rcb{k}C@M_lwRmE%rWt@6N0>$UUf zZm5F>7)nRv&J$L>d=6H~uTK=!`wuS?tE_XpNWUYKpIdXJQ!nb|%q8M_xwcZ2%Uf#2 zY&m(osM>$m647JPW2Nk_6HWX7>r!CW%i2nC9$qT0lEdAiR^IU?sBBm!D#iZvaxr&2 zvhYJ!itFTyUxkrp)*`PX4@_#N1%Ww8!!3yWNQLHUGe1&Eq;lV4y(!}{_%Rxf(PqV8 zwy2DeNFuw&+$d#p8#7C#oHSBVBI5QrX`Kt@?$em(fpbws%)hS&CVX_(8ZWy6lP-Vq zN2@8O3<7RB6`Bc)2WkBes)KBM&9^6O* z1y<6t(LjE)lf5@>%w$rYy!tb%vbLZfgBP^rnu(%$B3(v;LO*tUNZveIG~{rpi7xza ztGmpw@`)F7`_hh=Orvybi6MV(O+aXCWUz$>v@@{;(yKoHDqBZ-VJ78t$3w9|DYpgU zsif;U@z@}05KLI{#FNRvY|3w^uhT+(4rPDHcu=DS^&6ATP^vU=JFibXIfO;R2DWkA z=B4at#Em*}8iA!TtgP=6v#Nb7FwFqfvD;NhsVme4ros;8x$58$UU3&Ts8X(@&zmo;&Bgl{y=_V&EkVGu(*0{ z?R?zO)j2C2a5AXF5s?#WQz<#yLrv&rVo}dcrW28PY^!5u({UY+u3IL`rlN&G3aQ&a zw3=toy(=j6V|U;~!#tYUO`r=1lBl4|s`952e5{xbsd~jCmhl^W@h@6d+C9q2 z=ERp;MMI)R@r(HLgG)6}?mdOXu8RBPRU(9BgVbHWsASB6$!Zi8fUwH+w}$XNUIq~k zGfBKcxULh;sG*vRdm&uhg%}W7FPf@~;vG0+9@K~ByXT9BHTlqsem@RlJJ3ZChBti_ z0g+-iIemB-a5mHHWXeuv5vuW&Kxc~HefpGjwFO;JT+miQN3LEf=HesVx{27GYZi;K zQzgLG32{k;1XNlvEb7_TU%+TaIFx-VUJp6F%;xW5vmIcOlrW|JwYosQw zLg2;09(va-Xa}dD>fXz~z-bWv0;&oksu+eUxA|ix zbn&CMfjE(>Gb$I_C=&*7eer@VYC4KK$rnXkDl@4~%oMe9)3`XjW$fh1i5pusI69ps1*?Ky6@+So8evhe32W6$ z*{{x6V=Mh^7qmy|n4UKk3i8j0y_9!rf^!1BV2(2KCuDX%1%vK4?64aCBH9D0pawPn zjOcCLPd?0M5Y5!=XXKkSYrlcH&^zfQ`gi~W{a`Qaqj#}d2E!h~R;7Xl3!6eA4(G%isCn|9cI1#1mY6Xqzb!-LtQNW35~2I1f;vTr2GOQV9O(#LcYd-4-Ru5fRZb#j scB(0RPPQ*8?>db?i@M_v))ZJYTqPQ3q*Ony3~6@!OunE(I) literal 153903 zcmeFad0frg_xOM0gixuFN;HV5G?+_DlS*Z3o@h8tnkSV?DKeEpDpLwYLP&-D*hdpXDb{qg(by+7|)>+IpV*4k?iul;(Rb3bIIl|zC8m7P6( zm07-_QqCd1gW*#0_H$Y8=IPB+a`OxHaSB!nRT<2~U@)?J9XuU$UVd^7tX9??w0Uhu zS!>;DnI$5NSNaUyC~n}DX^pKIjBWk;1Y;0e{3TJ`Us%kcXh15Xc=M1wpccT%5d}Tv;yOo*|x~r7O*urR+O(8=FFoWU@Ka@1ookZq>` zB=XrH1weZGdawdLgM&PM-Ml^BJ%V+hJ^JSsq{Ipf4s=ok82jfH)8Yy%_Meir<} zez-XW1qVPs0$CwJo^Ig`G3dMqls^QC{)`8u7`KU3dl-+t_|FHwu$?|sjs+RS@(E=H zG8h)16zzvQd3$>X1vB^{kM@VcAPfiT;^E}I9PDL79{u%j3Q}_Oc5?Uh4G8fJWCaF$ z1p0-zdoTjSyfEyH;2>{L4E%0kw%#ouQJ=S;t5c8%gW=}s9uf$FkOk$aKMv~A-(Vkq z#2Eudu(>Lz#C~sqJoXFx2y|ryGa@Lx{vfe_!$`JYjUdsEpD!!e(}%_I@$~U@QF8Nj zg?7l_g-M3}#GpFE_y>9Sxx?^u_w@^enc?ag*cb3mquA|CK%%~Ga1Q(34ie|tBak>h zgTwtjVP-Py#o6Ps5G2|$0EvE8Ks)STl>}SQB}$&A#`J3*q~ENQm=$B;*T zq&(CcXB&fYohlDz1qR`~StQF~Kxku%L84y;ATeHsATiEPE`EIzPYv>@Z-gA%?`_he6hhAYcC#2w0g`c@Nz5eoGfUm;2|K%$;bWwzdDAcsNz z0Z5Gdb&yzphAPjV!p`r9Jo@Y61pnv3Vq{Nc_u~sl95?N0Y`F#UsLx-?$H^c3=s%s^ z&IKgK%NiuM-wg3V84K;v-U^WD=l&UNzqW%tjK{Q@>~^F-r+~xuAE6xMdK}x<^4l^!*M+QgS@dB zBY=wMC8!sKc4t7Mzegzv`vptM)tRvq@*+^~859&8$a3;Yf;{#+1|;?;D9FQqIp`D7 zX4@SM664NtaZ&OLa`wdwsu}LAV4S9m7%jG6xclMd6y&Rl^qlR$9ec} zKHG116Sm(rlqBP=5BcHH&NIjkOd**rTXJAfxX`x zRcG7LfV>Q}R{@FsG(!e?*ARbi*r5aQ9v|cx!E*8Q_6vk~H$gqNBlXUHVJsZ@@`pENsCsL(SRa7wG5h9Rdr`Er=D$@(qUB!U_)d zWCi;8!JQD=KCxi)vn|=<0r%v-eyTwp_5XGL`rCPooTKgokL}2P{W9cn-X8;r@%(Dd z?uW0FuOF^7vL4BK$ty@H+{wqA0qXso;FbVeN?#)9E;mnKS0(6xq#aw2FeUx*Na_^K z0tt8MV1}?gyPli}Ts_@j*M@oM;kVq=6~>h1{qkAPj*k^pZUhqBO#ywlUbjFrv0r4| z$vjyP<)~*Yw8Q>5hd6tquXCU;*!~enSZXonK}v%Zgt-n!g_sw942A;8<4}(M^9q6| z0N?^y?p{IeEZ=QVj`!~kAkl9;2l&9jbsFT+o-|0bN6sG)eAxD$-Z@=2-|~|4=9Xu9 zGh*7iHQjH!MkaWT)9dWl`LZOqtjD`wfxnF2LrIyZvSoZSXKnlKYB2bc>7VbXTIk*G zvZvM6*5c9ZGQAg%7G3jflXN`hdHCKY%7Q1nIxO2cbP3<9qGw)dE-8TA|`7-bO8nc4Ut_Qa!M22>c<$30~sJ-3arnH@R*W)(%io{3(QJ#BYR*Py)9XczX3hihX z9o1CpKH`AlrIu&6Yk6O%PWMeeI@BR5Z<$7+5kJAPx>G!Le=nt9cL zyepHG4ZnBU4e$JzBfN`ei(B%ZwZ*yzdjxV;#JjzkydY%S;N4Fj#t(cxrBrd}Lk){j z#-Y!Q@2Z$3ItY%_H`hv4w67X!T5Ef%V`9RrU#d!Wk*KNnoKdfjn ztI{9EAGUs5?{3M31!3pA_ly*~9y8|k))7W8E%~>Md;YFG%70hg&AXjx1^2}xr8{{d z_=`5k3=0X!dBg~vAm&m1JXXbIqbE+I(ldL0~dk(xLeMJ702eBb2XnW^_5@d)Cldp z?;elo4)q^*eagsfHba9Ff^RZbmmIuq5P0>i(SfIDtzyhd7JFXi>Ajn5rG9v6qENrI zV-9+R!RE)sBPQLH+&*1@mBNVs}=RE9Iv4A zD-D&Y9Uey;i(93G6vc17xZt0j^r=ao?_tkD!~4uhy~c8W`-GS1`aIjNTawQ_qSeDC!p(KsBbw6HO9w>_erqMEwRh9EnxN9&dy8lD z-QCd9&M*A!bf#R4qQV-M^WK$XH%5<%+eG5b_q6`OL!0+C|29tlwodL`-S_e|pWfQ- zMf3L!no<5GdHAt28M&hTbru&D-V|-HBITph4?oP&yXqhl78&`mt9r`&)wVx!W&6$D zJ}hSL6o;ewFIvxumr3>9iT`nGPxq)1zV`)Y`3jGiZ}i~HX4i9jU%U@jIr~mo+SfSz z{i*r}t@F`eg;>jbr&eVwGjbUsv)(V?yg?@vkdmlm)rcHEwEyVz7gZOdor4@`{>*^O$_UoYO)w5eNeAH2QaZI34> zM32RtTA(?B^*Q$DgVi6;ZyhO^Ia_h{iO=H73EQ&XRU2#`xP1IgP1C2#kMi42xHvsF z*}TTyyy=;G)ryc9=hO3z2j)emp1WXDG@8#WJ~7q&$(oe2Wd4fs3MJ`87o-Qf-^@>g%Ple+?9TR*dVB8V^yr7PY}V zC*tUsNcsKBf`gpLrkrfCOggJzOpbg>dD&{_)EVbZ93vSgEGya~&PP4Z>>jVOV{=VphVgh4#-|L_;?y|v~yp%+@?#OI%_doX5F11XN?9VNC ze_W6oSNHCyu+EqTR&kw%nM?(Xtu`6!jmyVTt%jmuac(}lKUB%9pPU(LVSk~>!bbFirr-tTep}NV zE1f=GzOw&)&(#CI5+(eaZ6BjADIINfUK%@U>w|}89?yj*#_gS!a-^_&Xmqy!n_a3y zyMl)DoTv}9%PFWZ8zfV9W7sJE+^&|VU1B=3!o^NMxwZRh*vshhwjZZ6$ICq1UzVd8 zA9%{ivu1!tLu>?}iFHVx>o8sC>cir@kLR@NOy{q5J~H)LP#$k+7po{C>x{nNx}102 zD>7%U@v|i5YZG>+Z++#LImP0fXKlG^)Tag81hgBC=T6{{xoWSlVeNx;<9p}Wt>cT= zs+BOleSMzT^%TBGYYGl;&Y0)XDUqkVV8x`&X?KqG4iAf#7`OMyu3JY~YWtK*HVi92 zQhm86tw(eCVw34>j_lpgIb(N!eV2=R2iLVu8K+>qh+ps3sbG+TU)&$cR%@QVy*WW)n z#@cvr?zw(0y9eYS+nl>rzv#3Mp!23D5SMr54=01O&ymwD`d^0eK_hGlb zPeD}yx!{n7nRmY$7!+Pgx&##^*(Ih7UNFiSTo(DL-5@oy6ET)Ii_Un^VPtJVp($mkxKIDW3~ z^l;_fQ^eGhr`lQP+jmNPFRoqUB5+?}m*eSyyHak-#=Xk!(OOh-#v?7G^_XVX@KYA@ zlB0W8rR2S?Sg#o&QJS{Pz>un%#=M92G0n{E=JFgdehvh47Z-I;ZFS`EuJ zN16qiS!D~PpAAVY*1k8otZ_+U`Tp2`(>KZK7^jcA+SxLsOKWD@G}9;7XY%jLdm9rp zvq|}Kin49u_*0s*?8MDB7UjRtB>lZyr`H<$dgZuFtIVGIH5EI~apXB)+cBs~%gkrelKBE{t&{nL77m#=r{W4v#fiC+_OXkfF+wkG*n7=j zi>tHatl>8o&a{u(f9smsoNEm_x-E;1=d`?7+)@{(lTkYK_RyS5S6gjYWVeQX_g4LJ z#4k1D(YB&RYhS6PZ__TXJ!3s8H*b?kRBN;@Ie%=7Xs92MKFzfsJmavFRG*lcd7g=7 z1>;kEQ0}FqeVJumKZewmsIWo!IK>#kf~O=%Jbi!Ry%RKsXR{c1c4G{rl~dLKDhOW# z{9NGSnU#Td@!}*AUIad<0MAQ7gE)bq4dHd+gEsI?s;obk{4wBX13!S`xb^=N#S{Oz z{tEE$tRI8={$%_FA@BwikGe@5h@F3v#D5Fm z;ni+m|Nq2(BJgUo{&O4u>%hY+y%?PP+$7>ZKXe%54{8|Pj3MEzf!6_^-~rRtHZ{F z>zC-`cK!rXJnRk~N5JFyCHoH1`#UE{I|&FF`VY&XFL62sgva9)t{>8GZut|y|CjquEAV9h!ZG01 zz7)J%$Mu8$BTM?#7mQ#0A?+N2pAI}3e=-igK>Ml)zXy1XKjzUsxBfo_9_K&t9hNgk ziP%?!FIVvVi#&XYNj==yv92Rz1~l>LsydeZhI@Ob~_bliw;!Yc~1d9;sfhuig&13Zo&>O+>> z{i_jp72t9H;6?6Z@bQ<4_&*dD9NGV1DRDf8gx3O|+`q{f{?ag2N%(N!asCm8+y0*h zp3Hw3O8oAeqeSetQ9Q<;lyRbfw4DK89^?EcbD!J&F9CQ1;L$$O!HxYo;FW3dlja15 zHpG8H2pEnZu}#W~ zT7Oo+k4W>~lH>gzp6&*FUFriEo6TDaM|E znCH|s>L7e5@OqU0f5M*wUI%!*_x%a~9e8~IN#f6`4&uMJ_|N+f_KVX*_-x<}!9K>H zn>j@IX5h7f=Y~Ze2|r2VzwKXcz?1Pqy`0V?V!s}Ea{fe~+x!2>(Lc`*f3km=Q#{!> zIgKOnzZiI2|0GW&_T^WJv}^kt|0{-GNBFVu<2F1$kUYK3uRfFZfxzqhhxtTk z=a#nwp4i8=$1T4OcwE02KfE|i#Li9N$@p{1Vmrb!rGB1Yu#C(DZ1bx`cpWMB{6!94 zWpccS5Nh*!Mr_zZUR#enx%6 z;o>&_allUj9_Jmrisv{H|BHaf^ACb(8)L{xBK%}I24ew@$1&t25&jtPOMu7NG2!C$ z9Wdc}#is5?)G)-G4G}oa!OGHSoB9;=V(45F5Xegx>=^{rxYe zItc#-cy+Lk+@H)pRX9B9Q9L(&Aok;cp9MVj6@B2x4;&=Ip9h|Pe&II$gW%;g@gL1{ z%bNg??{D~k7;d!p8tlp1<%N0=Ik#@Y-M>$ByWPkH1Z%Z7=Y! zg!=A(zlCTG2tP@c?LXSb*rVhm5#AnnVjufX%73SWv|9%}&L48$CFPv*az+x;&IctaY`ZU65BPxcSA&+Ysh1~(t;qWvAcs%!WI(N`FV*fbsc>f@_xwX#&hi`oU zN%RqkHhz^zyZIE4ZP7LvhhMQ+NBH%?)8`+z{@(!}reF-Gc8OoazA$|Ggz>}Jb84IJ zzd!Ig|H1wV;7R<6PsGPxNz(Qm#S`B-jRWB)!{kH%k;jXa|H?Mjk#_#T^9OxLmYf5Ar-SfSz~l1|IeU?EPI&=%`2|zBFaFj5am)7t4@a=R{&N~T^o`h= z42K_W;IWL;zGGX$`vQ;Sk82OhxLrT_lzn9XWc{`RkMT#I%mMiL+eG{y2RDCw|BHU( z8J^Qb_{G5E`p4Lz|D5_j_-Nqq{)2f=V~0Kxz8rW6K@67tiT^lwpyDt4vZ#oIMC@w< zkMkFOhx-7>iSWU|n*mS8p3@i*{u1yw{%9CkQjYmwCDQI2@H&+LziR*YI>OI}o0lHN zld`|J{ii%>TL(NGA^YMd^iK`{rHt@nwHXZfUmuT6NjZN0RU++{YXAKGiU0s)9Dc=O z9pQIq|F`(p0FV0@sO%d*ZpWWz?$6&}AxpkTM}5Ca#Q&MV!xZ={e!pVqb%YNE9&TZM zJjM@w;3N_L81SV3SjOodO!y|?$@z;3JSqR352T&E4*UH(`aSq}5Url@p1|Y&gFM6X9ibfBMhq-iO}fzH_^N4pa7t zK5qSg4LrPp>bw681(@6UvqXS7LhIWLH16~L0 zBZ_l}^aJz1N`$`xJnlavZlwHIEY^{BUxCN{6U%V^a+(OQHjlx8S8#pt`xD*;cpQJU z%jvxX+Y@jwv9NYXVk#*OB&mz~lQ5%%lJ42PcW}>A;iy z8~x{Y|9VUDWc<0EKXOKF`{)m{-11JqYeWADNBRY-ewj$Sqrh9z_+LV_O2P}l!@CZR zCw|bH{^Li&FQM_AvZ#>osT5DBJej}f1E+ov`+1cAn8%A-{sr)`g!}rBu_Jon z<1Z6wH+jK-i~l;{U1{;>cKx*ikMoC{zGKIT|1xm+#PP?o3pa`I_P~?#6ULsD|4tWa zw~gY_KBxCy)J^!Cz?1p&Cp=>jd;N36((TUyp5A|M=U*uBc>eg){imApALlNow(0)! zFaG)dVmK|X*ydM>#NQBja{k9MPJJN!YKq74=XCEvzX*RGcszd*mRtK>z~lEPxb8;6 zC5Xy7NW{MJlApg{6ySg(O$eU>ycgIfesj7G2|wN({(mO}FQ_?{s30bODG8qrJbVQh zgL&9WxE{YM;Bo#Vk7Gc_0Y3gR5&I)7*gWBg{3Q&Pgm(cR-~SD!mHm#zdcwB@uSfaM z2}jxx-VhGI+7!>t01$p1@G8KQ`zI+UcK%J0c4vUc`TwW;*GJ&z0#DXHr+SF}X;$p` z4+BR@*}wTrFDGq1fT!E%^c_6m4*{0!? zydCgx1nJwq{)9gSJlq2R`2Nkb`T6|9sqfIuzs7nY@KY)O|788g1CRF)GXFXCfyBQA zcmv=`o?Bkn_UC{9$0~}2I zleUdi|4IBgVd=cQ-G4hjxluf)_dVht@qa(?82>-@zY+N9z~kKIbnNK;m$Ya1AItuP zw*wy6FQ@w!+QCHne;9Zi|3B@21MnC>>_6(@_WrBv@RR3e42l2l!0S==v0t1f!XKu1 z%>POJ8IJ7dKjeu{PJAG3je#feL;KvuZ#D4Pf5LLw2V(y!@Nb z!k=8mzW;FJJL)Gq(}_KPgy(kt=m3xFpYTNft`EfiD&Tb}9?Q7p>wu?^KexP)^UvRp zpwHa)UkiBRKicNjek|~~eu-^v?Uw_O>ksYnz(vlXsP9(^+hXEz`M>cakeT^S5*ntg7^&jWZJ;F(|) zS(Kb4V*e`eWc-ll);^Q<^Zg;}wtZt zkI3J-K-!%K9>)*I9}|)6+`s=Nd?)bm2;TSmeNI`_O89M_KYu?r63V&lKM%ZogDLcv z|Nrjs|E(eRJ%FE0; z9^c<$dmKMb6R~6L%Z@+JAB+LF>!0Zd|0XBpKhepF52S4b@UR5?#veIu?W_4S7|?}2 zp3~T)9b$hk@X`OlzI*_C{h&^qJKVm1^#dN?zamfWLHPN1iTIxdJUM?OPs%yv9{}$R z_Hq4i%A#)4RwMA|{*7Zt%CXI_5^1*rc=R8~4$IIFP7>jd0gwA1_8s>gQvN#~q+S1@ z|Mvc93Gg_6IQDT*NQT|1RO4ix=KArQpIO)%TYzF&?sTVQj}y<=jZ* zC%}br5?rW9fs%?KF`>kACAcsKQ{cjc63gLi+m}#cei~fZ#~E;8`X`C?v-)b;679no zp)aAtdbnrxC6qY!x^Q8+K3tekqCEpj&Z8vkwS9>$u^s#jtFOH=yBdGf(5KIYDmSId zQKB94T^~F<^re52sCN-uIHzsk!n`dd;k9XBLW%m|HC$gpiFtS})7O3(NKDJ%;)lxz zE=(v@2v5LymCAN#9%6}!9&?cU0N0-R2p~_KWyY*C_F0sFx;KKHaR6R<}CsFxdN#s+g zb|{hC0vDF2Qu*y5F`>lzG)ks}#Do&dGbp(OBqo$tzLS!>Kw?6P^JYI>*sp_dVchfJ z!t^VN?egJ5c@!>8bcuc+?<-|X5%^pV7mm{nsvITqH{nA6s^G$e67#n(0|_POt0{RK zByu%yVWLYcuk9=SzY^^}gbV$81Q+Ui3>PMpm~Vm$`KNGULWyyC2^ZGCqU38zz5zK5 zt}eJxZ#P`X_rQgTE|Kr;D`iW}|Df_HF^_*x_M;?EUm@rOiF)xLpF%qWsdBm$hH^0| z$0~73N>J_S5{pK|AJjL7s{bd6^-@$j8LAyh{3uJwaa1`bF51`tiL_P#07KKvf|0Gd=IMptKYWF7+?L|{O zO56|DQhF08xsIwwiFP+q<(sH-ZY1_M2{=4Yq*6Re{J5RUb0V>68r7aIu_&D?M~U`! zfW&@fgT$(R_~&0FR_&+iQ6iTQ5{r&d<^LqH>L}Ij7}X9Xek`E!DDmTQDo>aAZVdl@ zcpQ%#RQ<0c#_tZ*4keCDEtN-!AMa6ll=$&JCF`hil=!ipk`E~P5DOvECGMY3pd91* zjH*Y8AD>h51tni%A*6qj7|%AUT|3ndC4TIn@+i^Hdn!+tSky_CqvVDB7fODoWIuqh z2@fivBWT#fW-J}Q~9|RhZ6nK2Z`-XK;ryZOx2^rkLFaKF44XPRZf>!Zb_BXC6-%3 zIZA7)9wp{6iBT8&Aq5vEslLB#iE)vI3)_#Q%DIuqPk;;MB)Cw||DI3S|U(>Ak$fdd<^Vt($N#E!= zsIaL8oFjUv$E-egnWt>M<$N!P&e+8x?dcs8vNGbh^bqEohk`+wk4+yoc*mSc(7AWq z!#(TBlW#r=feQ`KseU*)GR!dcym2w(O$ry( z&mNd~C;a4@H=i3$o~l*l5$5M>sOb*BD)n&l3R6ao`1*N0L*o0J&p+1NCbjd+Re?xQ zMD*gbC`rt+{AB&XE)(Vt$~_W)WW0m;^_z0b#dCKEO_!gywta1Ds@aeF>jMv{MRfL_ zTA7r0_DQE!WBLC36)cqt<61V155jk}L@z%3lEidbH9}LmF>mhj!71*#4edtZdFNWb zW(957@4oeI*5P9jGsLR3Q!USp6RkCTlIth5)^%xV&4xj(dDUn2PM(@){sI&cy|`DA z#LRoP(9yhRq4Q_ORf`uz%(fab>e&tPJ)`8`oLs!~7PGd%UZiq{hRMXxaX}ShgL<|b zsVx~<8r?keRnLJMmg?NW_}+-<#aNTXte%+jx}~H*LD){J=ivQ4i4K=XcIiy4Fb-9$ z_eh;QT5yKmnTGb@qv9(Z1_d0e5t}nH>7ojsx6QLNi{7XUIi~4=BBB@Xxg;@FfWzC{btu=nI%<%%;Mlj zQyhht^W9tQ6#oVk5xw}%l_X}Qx1MZiL4jYu(JwA1&blf4B&kk)COMj+c1}jg<@B?2=DPLW z)^`tvjs!(S?+~ICBy;P$!w-4KDg6+*tG0gKAh(oR6{#B6r!Mcl!Kl(az3%v`yW>^Y zyROXoD7o!QvAD3&0pZOi(c(3?JPfxFXURIHWzzHxrR(LLkeI2E-;sRg$A^WVnM!qE z6ip)!{wUx1HMf$-q%7x-ui6dCj{zRZF1{f4jUb2_zm*e=|_D=2FGSiffK1+-K&#n11h8(41ExIZG2)jc_RMb{O+D z(fozF!}tMDc$IE6UD;Uh=`BsK09|iYK~%ns_5$06BspC_4=?#eRm;vVD_X$6XtYh^ zT7SWSi0O@X4%>M41ZUTtRqcv-v*zy0k-Li;c(oPRIl68W#_ugidQEUkxxHJ zHC>&@mnAomrWe1XA&D8>TGBXV`=cWT(~9QFJQq7KLu%9VjZ3;?mAiKaq(sdMy}a*Q z(~}N0%RO^f&C8r$8K1Rb*5TNIw)>ju%mI!JMQu<-{1qZfK{5q>9@(7CdtUicz38B^ zyhH$R*eS2q34C)zK8=5Hc{0D!kC%-DGVVC`Kk?)IkjwGMS=uiyA6y}t5bgHk!m@h) z?d|wm8c0uBeF3IZ8 z>#oLk&yS<}xn8qg6Qy1qxJu^}Jqy4;Ko(rwj0icNJ#WhV5 zbHcfZ$HSd@W>1@{s&d()cw=<$KpBNuE@vH>jH=!DW?lL?yK(2Gv{zOif?um@S2Hyi zDaHpxA9VPJihYB}zdu*C}ist-35fq5F&u-kuwr zm9fzx{qnijOUDm>VY2rXZ|a?XX@=826ld<6VLOI*LqM!ui|yKVG`*wfdV3~yJZ(^^ z=s!1lok6aa$J@1EBs6P|Xg4#Xmz%vYm{*ilWLZBcB;c~!rQzkQ#Jw6q0S_HARSH&k z1lu)i5zfh@>BV=aBrzYy?^)O;qUu;2|42LIRI9?K9f!=?lB8ey4cB#To_G7eg{}!{ zPYbm@qZpYI!KWoR9o^<>#}wD%k&~9@TeD`C7APX|6(>qTGPibL^^DeXwmfY&d(+^L zw`YZpky_b2^RW9tQQs=nx3{*5-5fGb{<=;5vG`r1woGZfYP^~^?1q)X$TJ}c8PbFI zT%_rh_&<6dt?Rik`|u{^k=H~A6*os;ymVCkN{4*f@geIhKk2nLO}AUMBX3vxqT6=S zBX(83x0$!9OJ?9pHJ**?mDK{rSK~Wi;_qm>-kEI^$9fvSJtFPqFX`28cv`huHqU%} zr^co$?pO4LP7BDFITUQIFf+<&8>O;UD|YWu{!QMV_ciW)SFj8F`hFAcVMMPaU9XBW z^GVP#?Frk4%sMcpO4%_z>$$>|=Yur!#>EupNiAC!-&ePFmvF`Rl~ZgS1Uo_-yR5o)E4Pf-O81<+ zPC`COS>JdgT;k0n|$765gugZF{z#cYfXQ;zP3ghZKkUgzCi-h6ejD&}u|xpteOb(uy={`lPTv{SMrHIs+$JLh)dnEytH$|lLO z#nWflEo+)$7@U*5;8i02)`jSmrR$Y5Z3_#oN^+WRF1_Z~tJy-4m-y|O2PJpB?;cb- zU`t_`wsp!Fi$@;!7~gNpseet=a|qt(qcB;S$0b?H^3d?%<}|(J`wUdi^sCJ2y0GYG z)qQ@&jGNf5O7FJe6J0NV z+FB9aaq%I(yCnX~p+YJ#4>oIxzBXCBtVro<7w;**UD*L9U6*#gSahIWO5o|?TRPq8 z`mCP%dgHdF5dO`}qo&W;Feyb|b3@5Kk5lU(=%pS2Jw)$#q7)>vWo!4wIccw@74F>} zz51i7&k2<_qZu)+XM+=b+&5gl@T__5X(O#?&%Q@SoR%q^YS3H1?8NRTo5oA$Kdm56M&lhG#8>+7??@XQKa7x`#Y00DuQhHWX+X`2f>&@w^Yj$@p<1aOx z`lNjR^Wed=XBmIGcx?KfM3$TR0L!Zmn*#QLBBEEGCzH zy=$*Kz`?JdUY=;FO@_Se%-27HuL=$^HoL<$_yjQwB*rDSiG~Yggf&EoSO8 zy?90;iOF~-WyIK%BV%3GQ)UowygSw1tSx~zA;{aM>*cd|_rHC)DcRwA`b796?;-W> zK9_fW`FMDW>@2;H3d!DGp2{}+KoRj5zo#OJdFAcm<D$G|por+j@4ZN3 z8lBk5c);IcdT-;pa<^VhrI$u((P|PyB&v4F=NqdDD;z0!^ja>#P9yqcw9xvu{rc~J zWjIp1ZO>7od1A-X!dmJ3jv`SClDT(T^b)aUHrI!387lwIohdOeCrj0*ak0RsoQK|G zJ0y6o?-kDIa_y|y`su^=$KnE&+vQhHldiF1m7TP4zZEf>?ynMEZ<+X;0Mm_pArHS< z#GWqqkRJB^qxJb&xBJbUUYcywxl+F7WsceF_lf6|yobeU3+(%maC!QtxpyTEzCOM( z`NcXf_IEt&^Vwv&-X#yNeYko$s`_!VbV%BQTCK(MCluCg9{03;n4iOvfzG`4k;~gY zJg!^)=JUd5m&20gN_ZCcwyJrYTJrXD+Yn|a`!`K&y~=dGB}dK-IMTT@rCi4+QGU{w z3jcSBw>r!&imVy-ddu!Og@+;MvhQ@MwjcGYnx#Hf-uK$F5RHf(#%`K7Z{$o?5&ee0 zbt2=YLf8AsaYV(o$Tvl+w#~LN9kcIXDPy?lmfNxOReH|#JJYJPuz&dqr-5Ilip?L` zt<z)28(dcOAw*6n__NVKrd2BV~t5W+k zNMMJ!#MdL8_Zzz=^?yEnu(*wmKTqdanWrhPyvm|4#rF>tDr+y1j?ldEk)~ITuGheD z!JOSEkM1qg7W}-a-u+gcAdlU*rz@Of_B`xJ3hTc^S+>A;>nNqxE8S-s8O4!LYG+K; zG*ze$vA8#3N8aa|_}eVv?-aV;ANt{k^>?1I%`N*8QZ(sSiIv~7_>*1-b<#$6E<8|w zwMwHxXNb%#mup|u2U(r>?c9>mFzfQ`Z1uyoP51Uc@^+w~C#TZ&ip897bos8`l56{V z!z$06r!pjWD2T50x0xe6(8egSXWbbG|6$wKUGVy#CB@n;dt(2%(>I4TUY%j_c;zeB zqs8G#G=Hbj^-fKhFE=W#@x+w@%;Wt^VjK1ZtXZ};wjpT8m~EQ^i~I^x#G>McX3u-k z-fzO(t;V-~pFDUty}!hk3rm!I-YPzEoki0-ov!y@!4@I8h&ey98y0osimwnHd&p2r zPO3Zdto5B^!-k*!+Hi8f=x;UWT-@5$>pWkvIdjjEaLrY@hZvVyU$?b+s`%6N&YjYmBc->CUgoTL|1s+0%ao8O7t>23j+hVjN-mR+4l5otE2hAuDP*IQ zZNj<`rY_I54O`>gTIuKCnRLBP0}a;S4?Mi};@w-Kih5_wwr3o%q@`y504HXvhw_iT7&DnMuT1lj9mVeKRqSjfuRRev|nN7gz+Wn z;uEKDoUc=?G(h}lUb|S%vz`3a-{&9N>)8Ja{amdYz4x~7H^V}+m5Q2!w@q!aK9deQ zh`+Pxdh?QFE{H{)Xh<6KWy6W+Yr8KkD(MZrpDpg6e|uX;ukuj)FKv?=csfgCno63c zexLIC;f|yMmmCBpN!hzbb+x>kN7JiG*DErSZ^6fDlcwGeeCQbyBNZiESa`sfW%xAa z#;11Ut>;|i-VE$$)Dcd7sc|TEN|yf>lYV!HPUcsSEp;C;L-?x+>LUKmq3a#z^H^%o zSF76v{>$6dz2x5%M5PprT5z#0>XTfvd(OF=FUwR)^WJMu5YV*WW2*OJ&D8InkH<;X zdhH)MGX49wU@4kjj5SHj%hg_SC$E2CNM498^e(IZdfY=Wxnr%L$7Inpxm(XHcjdiP z9xGmE^(@ED^X|hihsmj^F9_xbJeHK%2F1@7K!voFzpO32Obc=ad|*~ewp(vlWDZYB<^ z{q$*i=hF2$hMj&1PGio0FXQ-X)a@KPZ2d{yuhqitK*5VuQki!LwLp7FVscwv5AEGQy+b%|1t z%srv^t>4Pq$tjwt9bU`$7;^LTLw8r>29s1P*6ntH6ThsGA|T*1OMq#NJP^hrgJjC2RQ zNwgW{Dir=z$WkIHIW~27`$gSoU88T)@;bfnT?WyMYmX#meECeiD9`(fug(;yxntZcCPEv&iDi`?qW}kFI~QU8lvxvCJ<=VYACjg@r3Y z5z%W%l!9a?4qLx{-HqM5ABHq6QJ-O$7wx+KnA^f|F%y)HIJ@ zi?gV6XlZy^W7z&MaK^I!E%bKZ?QJ651KB% zqCWrqHKlrn!7Bdha_dKatdUc{>1O%S{57NNmHmFL|B%6}?s$o>x%rfp!k8rSIbIt)^bO5yJ6C41Vun60TWnq?cxwIlA??huZn=hT@v6abHHvrU7GK!?J^9OI zqa!wlS{KN>osvCI)4Pza_mcl-*98Z@%3kVi7Owg9Sfu7tx5;FW8yix;_b{%=H(m0+ zUKnd5Z7(Ug=;-7krL<`eJ6rA#_>$!K?Bbwhmy#v$of(-Ai|Be&&e=Y;KOqsejid+d?~@mr&98@^_@M-dc}60chUD)viH@?J<7Hh2F3N5PI{R#vG@7Q zoOJrWvzV?|J?GZe9n85;#NM;+S3L0j80b=cFEv<4*~^6|ApGbd16ebpYrQw}ZMzme z?oyFAUsN06a{jilZuD#K^iemx)&|o2T|(CzbKv<4o|cKOLypH@NHV{ZG4}l=yW^5e zGd}fGnYxZAvT9Xv|C@tb?^%Y0?_@seYKdjt6qdT$eB!dDfe%Y$_d-vaUVIlp67#h2 zhXKblcCNS=(2&4C*J+aXiKQKm`wk>0?reI!Nc?-%u#OjBI#zq$J0MeG6g(>5^Ii2V zp=t9BHC}C%eR5${S_3E|@wFgIK{AtsMLk+O?_d2cJ8866@pj{=B}twaEvp$fMAbe- zyehAWJiL6nyp(L?#0r;Zhs5MAoqZx0WLWr0-_QK;g8NO2AJg>Wy_qCtT98x;?UrvHyP;Y?MBF{5t>WS%=vf9FR^)E9N_6{)-DPOD!ztS)7+ z&|T;94%?HHePtLbwME-4%7q7nsOrX^^3T!=7pK4Pv!?5{HNKyFC*{e3CV96hGtX{4 z!*af-zh>2t869VP0&a!(-v1`hd_pwOUN>1{U4Y`6y>DF_zGdw{{J=kM{hgdC1B0YM z7xCAIt~W+)=ldKJ{wF_9rRIO^Ejg?cHHA+yE#Jhd{P`}IF9%bN?&dsFO#!i{u84-oDV!?7;MdkJ`HJPYqw3 zE??~;5VWU%0Zp$xUGI@s<4kq5S*6PszX~<@q%(cQyikE6z3_@QXV&{}lZ^?^?)xlL zuP0UYkL*m9Hq&=X?pP;C`rt*YsTt~4D`~G9a1vr)1$6P zxBiz*>kdr%)HX{W!nI={_dM%Z9 zFJ0kt^W^3j>C*Tom2FP$$Ip)|((bO%4>maWSnF%ZY@X(x_`PrKo^PZ1yNs^)?exz( zWo7nCNtI@dJ>R=(j)6_@$|VODpZ@f|zRh#wfFTWG3sNPU+T31+?Ip_={&h1*X{?@64!AGY*^c)zrEU@{4k$J*BnqFtR-c`wWq+TuU80r!G`r6%K z7nKi^Ovf_*Y1`D|@;@7_-)9!Ts$aB+wTWxlgYqyfhqlnQJ59fci)~si|KN*@SMnk$ znqC*W-aFrZq{n^=T~czb@TLFF67QI1`EHdT7nH0fB-oW|td5sm>$QW`7F^8Jp7iR* z=VSBZvYgi@8ZX>iUv02*>zP@-G`+5Lyzal=%`7#@I$K|tAZ%cJR%N*L*7HI6 zTchu+mv6h9c+_Vx&)D?!5y>WgYa162?QOCj6IVKGtXlH!?+#bL()6{ zTvxa4PPN937v68HbEP_C%dVXAcpL7b6Q?{<%d0MEMCE&par!Uh-ZWpV_w8M{$=a25RZ{H9r+!X) zvJ%S%j>w6=aKd$M;E|@Le3w`YOS4g3dD#snXT91KWZ#X=l;+nvBRxRY)A;1LG5D^Y ztTzv$6eKe_a(TmaPv<(f{6}5_>Mct@ha8b~l_-1vjc=mDqBG&)#~g2t_cwJiU1sTI z^72TIO5OL2+?>h$N!`v34KwDs4W;SDdnifFj*i_UCG4+7eSQ4I_Hfzdd2znwqDKa* z6tntgWlSBkD?svX;bDjR_)3*y5@rvcuNf6wm}O&bY&Mo3Ejv-0R^rVqTQ(C=c zMqkvj7mc+kDV;iZ-iDGZiiDF`K+7`+VH_4{y^`+}&7^seY^nBEk*F8tF&4-Ts zaLRY#dZAhibNMmdGy3zk`!5mDZaJcLEvM;vzD)4kFw2HBcbPNBzTB>HdB5|aDJt~y z1D>%-V!nN|*!8&x>$aRh+L>4LzP=H=u3lC@#A$=A&;f;aPrnZ=Wn7sMR@OPO{@ACC zMMwOuSyV^9{dSjiZMvI5$zI3pZJ>z60iOv-Vye}bta{)%u1-aCqoq~#ts_(0M6Ja( zzWzS)P+-4@laCy-AK|pn+M#4RBf)so3%=5I!-bna6=#&01_bI2f0nl8EGQy+@f|2h zOr2>i7w=s^oj6-%UCcqbt}LDWSkw4}{Z5{AdAr3|eD2!kJ74Kp&l~x4!j)<2U1u)a zWE>e&necTxPfN0-_)@*0^zSe5%t{ioAbV-u>oMBmU4|9PI{vy-HI_b|_SSNQfmhwp znx>HVXII>|X%O)|bH1kTtHqw4hc2n53FrEySNXQj4d{6nRE~Qt@i&Ml1DY+dN+SmHypuZN{Aj6@_u_+tHasYgYf-uQ?ongT z#eO^=19BU0i3_alk-jDuBl4m8VRh%^q05F8+_Mv>=?$Ul?QpM&2s63t^gwmmyf7(E z`H6>yt^Hs-PH|IHtYn$p{DzkM%YD9ex@bO7loByd-#hZXs`=1Pw;nK+QA*EH3`W)X-k=|)>m%2PfXlW?EZRwY)qiY_TesT19QCZ z6fhEI4xB01B-7FHgLkcRU09g@Bv3@+i{Fuu#58aU=D9p&^`o-rMwEhN zer(*IJuQ5(eAxEEvy77*P77wd|yof+I&D62ErT*PtQk2uq9r@c)K zOyBRjtiQQ-^7|`A8k1`s-mO0V^!?J;VL@%dA@;ttR{35-X#Pgf^=6;W&V5+nX428W ze9G24S597gFluRg>#8S3$7c_FoU$o9YKvsTHsuq#u48UZXf{o|dP5<`YTlyK?Io2z zqM3smK#WUS?xNi=2w!PIr7=u zHK+EE9eiu>u#AsoBkd&@RXl1|ySPg8L-;iMdW$4VK{9u`mwy(roy5Cg!=<1KR%78) zF(}M zr5ov#E|C}3dhY)_`^$0h;c~AtGbi>Lm@<0yh!V!bHpcuVyYCj~RZu4}pr@KX0}+PD z(k0iER|9MuAzVHRQs(b`Rhspod zk;mb2Dm79$CF80H@#9KIwDpG=RuDQtJ-B|{ntm`nJRB+gaAV%unDSqGN%*lwJI;Gk z4qOMfGeAH10bR`9X?P-xuSNL?gmy=YfxWOocBKAwWoLBpLn&!=Lw|JXn@x=P;{@I{ z+n+WL%SaZR2Bd$$4i+5Bz~lH}HS*S{;QoE9t%3tY@Sj=g6f5qRX;tZ4mRk!{ADMw| zMJ6Wrn*pj;q=IG7Jlp4gsTqgNA$F})DbXKenOH?;yZW+oYO>(JMGDL*{Hwfs)KR<~s%-?&lKer|0^{q-( zP~fg^6IYh~rI8_X*>kiNnk`)j*K+WHfSoq1b)LZ%YhO#?g+YL*Q$6>0XjUEqxWPcz z&7iEG$~H+fg_z3(rTX&lXx!L3x-VeL85K(yg}n7dS9HKo{K9-W@Ix+p4V$)%iiOej z5IxJRZZ+GI-5;yBF#+5UAwbue20yfB3r;|k!4}P0;<{hgMx6h9%)HS*>EVCRKUY_o z_qsloeH>qy@g8A{DN%BhvA1xu``RE-_z*s`SyzJva6^GEQM0P{_DtmD!zAB0;p0D^ zXF7O0mQ;&t7)bIF?=@ua^+1@fuzg1?ZdV($Sxx=!veREChWS1dScVQjTnmci0o*X4 zJLt~j@mm;af~?8n1IzR!f}-{;8UI+IGjH2kvSDcbu3 zW8Dp@wVVP;iIAzr_I3sf?uT%o>n-@S8_Jmzwf&U0lW5lCsqb9<0_~>(4w}<6iw2@pSEg2=q1b`a>bf2vSko&LO;(uwy@(-f4 z?Rc7Uuk{#Y*C4l_z)LDMrB+|mPanHX&EQlvxmQ)j+TK%hlr^HccGv8uoS1uAzr8~M z&NmY1cIf_Rj+C=za&;zv+_V_|)6Fy&xX8o^x3}Mcs&18SiKb9T3 zHV=rqw|#3@jF#a>vwuf>@4y^OA7t{)1P9h4=68hQ^xNDH&Nmw9qT)q|ud1R|RS?`@$`sqQzqqh!7<7U@WwFKvxUoQ2>+%y{ji}s?hsJ1qt#YN+ZqT>sru@xasy^wO zV%Q};VHU=YG($w8n$_Lz-AhH?zI?A(I2_&7#P3PkAts!i05=Zk+CbNrJG zJkN>;x_7M!p&uIFG1atRNyjz(AlPdg4B{NWpPsgd-6UqzE)|f;PLln-S|RO+)Bakp z{wvuypN`PP)IVv9IZWKx^R^ZN_wU=i3=R-=8a#U%1fGi0M+*jn|E6q4&+*cgsG8;jB5wYDdfm&zlltB_Ft3G)*{-*1g|%_>7RNx9-7e zyA~K`604*je2nWvW`V(2kV!s)jPXQ9G0KsCg~0j#2S#68&=9%(D8a$scsk#_JkQT{ ziwn5Ozw2Zfpz6% zpgXo3fupSQ2R$Xb&z#IbQZTI+`MD2k6fwAX_nlXozhN0+x$S)>New@b*e?$w7@9^K z2rPPtMAxQ0cH+DP-*rH~DM0tSg+dALS7_&)&}J!2w!oDU?i*0 zNCTs8YU`!OJCNgD=~H-O;cc`KatS8pT@#^uzs# z$*`#&>QIOTmC#{kb6EpjD_H>d?cd-4C6ZO5?S7{zvPG_!8t=lsb8-?Tf`je&jBQps zp({jpEB%-@{o${z!xH2Bj2&kDW8eSKYoLV4vIJ3)I~>pu$zCCF|7L^H*A~RbpSm!B z-*ovQaqp?pzz=PaP+JKOIi%?EaE&Z6x|0rKsyBYeJR`YB4gH#F#x$^&XV$>V;y%8= ztEcRcckQi~0d{kM?uQ-R&J?-hjez7mrU)IGQ)+UCzZE9j9qo353~3urn15A1 zd>$Vn30;Ax-llJynzO?~56>kqc-9qLss*^YKo`#V#=S+Z%r`JZY3Y>XAAiR2EiCgF3U_)BKPnu_wQy$4Jmh8Q|@1u`z^0pM#jFPx27kAs<>o0 z3<)xL$zq@ir;n_@LSXl;)&maE)}Mm&Ri>aJCyuN#QpHl;TJdcL>L1Ob%DyoX+hl6z z@vurAn@eJ>6T0@X?#Q5&*=>z%h}8XO?@7BsO>iD8)3P@nc* zQt+OBC1Z(s6@QpCWGPFU)Ecb7D{0c*P2#v65ZJA3TU8M>tH7^meKbvtJvz5cSlC>C zg~0h1fYH|$^u$l!{hNPZ{6nEQAGq`>1`Ows?-~TZd`rVWSQ^0Np+b*VwOt3nE!7BvLw+M{BwxBbM zBui$6vm^cob8(|m8%U)c&qh*1EgKlX}CT33t44GA}__R!2p#1 zaI48Nh~RyNufW3;o}7d_!ZXZ9xm#wE#tpT^V>V2WjJ^ljS(LE&Qo{Ge6qs)b7=3L) zg4n?%J4tJsr^1QnnezhFBP31Q*G-9){5?(|{+@UUKP;trl}HVcT~O3PA5mP)i z`?e82^>Qs5h9Vigtwq57TMBfmtx$({O*xkQ4hC+|{P?iY#hH}TEQ6X2i$mVqR~?V3 zJ@VXjD$R`KCw~gg)t4Ce*F-=6?i|C z1KoQGrXQwb)l=VJctwL#PqKWR1A~u=)WVEl_uG@$@ zBI3%}=Cmqln$~PDt6iZs@Z#fu8p^Kb=30J#(5M8gYg7VV8Z!*z2qo3R2U_}@G?)19 zeckz;4@CcDAwM1XgHx3SobNGgL0r1LRu; zbPt6JNk#th*_n~Q@1n7-aEXAk4THHkWoALpKC(78pznfOY3HfLBu3Y;~*e%vNdW!3nBi= zkZX%)mC?*V8&?Y70XH&D!(;M|1X6fLUbXdWz%mWz}+l`$TZ8yg1H;uzRexr z042(=@gOA2f8w{=M%T>P&U44DUG^X<43y+ky{?tLDt(Ui7oa>2_>U2)<}$hL z*X1QXLBFlx7y4R>Z;G!F__?S9qpvMUqJ5-O%_)tb#mTAuM!LjfcmI2&@Glkq2(j-2 z3H6O98eKlz%ZAM<8P0m?roWFy%2o~&>~?yozMU3nW%tGc>jd>c*Q29jha*;Vz-w8^ ztWV{8(o*tkgK&U5l(zmbf=W@?b}# z0-uWppsS&!J>fw6FtTD8|4Db!SV3q~W+<0fCo(7j{X*&}(JdG?mp?W&!AP|dns)-@ zAM>~Wf)@XF9|TJ@^!A=!dH1|p;C^TXx|-JCq9R<9y&qJ#&#D-IPf8Cu6Xo1=6e@To z7)!@yaOtNwh&4p`bszqu5vKL~sH%&9K+CowUrxZ^=p!TGzzuMlfbL{)+4bIX|GU0b z&R8GL*)l>m9~Tpy76+m*65Yb~p#}z2c4i`R#7VwJ$8Bw4<)nj>A2jqRpJ2=@*oWMk zFM#7tGti|mAGa)LX@4IX=0KCOS}^&&H3d>H?-_3x)@`{miBRCO3E zd}HZPg$5aIMqAxvZrw&2y%#0Pj?9MoBi#M}*OqTxhE0um{ zCFfp8KPvx`9pJVB-OZSvt_s#Ib~8nxq}=7f-!#nT3o7%8K_}@e;#nS<-rOV@!D3Tz zJXNZ$him6HM^aRURnrzosO(9i9_@*Yp8#$<&_$o_vp9oTJPBj0J$|tnd_plzYb*H0 zEs`mZj*i$fIVwUU9P|~Zoe-Nl8BW_FFC5{UW_WX-p>Esx+|3J%LodMX0J>X?0oN{x znA`CX19>O}gM7ldI+>q6u84Nuo4v1N;AX^DtB5t_UV5g)jQtP-q2g?EOxACSp~H>~ zL+}mmFWN7F`?j|S2Z)T`^ug=-_r7OD%|i)M4o&!^^Yv9TPrjF8nxN&y^qSCL&=P!G zqEJOixsLlvSy?=+_l!*vU6?cSALV6C&g)kQeBHXh=xYm_qbB`J$3w^-I8uDGTi`9b zp{A?(&+vB1z*=l*5TULPalGdRMEj%YrS|sk@gzLysBlP&X`$@to(10Ry*km`907K_ zf$pEY7I8rs^?w}S?hJOXPZ_hM1K#69Tzf!RC`9^RNHlO)qBfos7ZJ1yV3C5fD{c85y zZRV3l2~RZG(zlsZR_a@*JL>lH6I83{4=GAnhq?TGW!zT?obTH;1P5rxxN9e5S~RW$ zCk>sTzsf8|*?1>lQdP<&PC0wJyoIwSDEDu2eqN60;me`xg-n5zB@|T|mzFYH-kn2!@S8q?b$CG#R3ADzMczlC^80CxoF3dV#*j&eu!3oi&kFJqaJ{#DptX8&!!++NnV z?sw>OG?TRL2;pJk6-EDbFr2qRmm`Oya4-wg}jv&u>el5CkMrRbzT z&H&sopz9f(p^?^msACHqCyXU~XVPRXJ1V)>Op!vzmqpP-TR($0{rc;%9ZUAG0}yg1 z$dKtsC|eyxzHYuL@l@z$mcY8vIM9V})u)K*UHi?lHhbgb`fUh>@8)6{@7*v>ztSe# z6iH^j-q>m-rS{q0)(tz~xM+?XA(3g_Z#SKjAjPfo%;LA2FZjAm09}r;Q~svGn-oR? z2%HDFPTaf|RN-WOY47~Ar{=vUtcheHBFwXqs4MTOiIOdql!A{G5tF*H)z!a^! zAX!`Bs}rR&fB#iw>%)XKI~eDmy^~{Uec*CT3+hIZt#{$hh z#ZiZ)BKn#t|L+bW6kkqj{*%#pFE_*R%c!KV{`0v~s(bE5B8r%6pAzp@;9>K=$=Cmy zp8^c6ZA~5mfa|ljdjlMxY}FGrKAL%{F$3xiiA17b`Q5FsZXx+n$O5a&Xv00sduFiX z7{3Xf6lPmFq3?}}3JYIKT1iI6`NPiPd-QG}UmEkSq$xTBeDkM`!+X&15}1Rj6p&VXE{Vhca!=~dF44pBaIS{YZU|bKn6+w z`Ie$X(m_#1fYqfBl=OqAhEqSz_rn|*eQiM}!mue6LzLP7 zp@qusw^b9*jFRWV*g8)|B6H|8mWd=rd@i+94#Sz{j#qC^Z*&qea98aeEG9#L31yF> zIg|(1Q|E!M_ldExijus!*GM(9w10-y50rSuzpB6Vknp>Q>)E!TMiZdStG)e)FDlq& zvvg&d4*lX&5&nyW!!J+yn1*&`4#@ZIEEyaiGaezEhn5Mhfrkjua%jQK3M@arR6#+s z20;aLW4rCCPWdGwf6c^Ml+G>UO3FY=(GQo^_Rdp;$*fuA6U8ZSXHDRKSOlZ5EvWj2 zuf=f9MDJ8P)4mVAZ~7@eSj_~p{t~kOy^M_*9I1s$@ERaGx|>lFsU6SRi8vYEUgWXtewkHP>LN92k<0L5XP)ep61d@ z(2pP3eXbv;^Q2Ou()IQn{eu%M;n0~^tx{qm4shRUQ{VuZXkVS)T?)326|`)YkLjE& z*s4O?MV7Dalo&88>2e^`Xf_>8K^QisnMG1i`&q zZBGCWkQ3SaBeEzWICuEf-&7&Z)?qRuzZ;C(5hES-Hxg+i6if13p`-lMCgjfwKF5DJ z*d#$!V>#m;Xtg&~bXmJ%r+bCK?py5-93VKD{i*_|O&YYgMyv)(tpTWCq@NKkp0{;Q zG?GWg-9CoI=%LMca?JImJesCE^!=Uqyd~!0s9teQiN6Gs74Y zI{KegKPcfI(9)dD7cG25aP%t`oE2~%Y2fwlABU~b`C%twZq1ybYmOR*RCrHG#`9eo zaxxz&4kniv;J(cr-~g3uNgMvWXJ?=|m^~6ONcPD^*ZC5_z#O0RVoX&-Q%~Y3zx<4n zrx}+d>T8`4Y%}Esg`RovuCjtD@G`P19^>v60_VE{MqgVHz4HL}G$FPNpZ}J0Z&Wnn z{)46FQyuIA1n$_0b8mV84qG9wi&^7wyyiRkndQ+b<=dk)N*GflW1S~)Wwz}*D8 z9;AwoMCe5GgPRyXqhwrjkoh+0VKV-EWC;oIt(_`vz`8&<{avfg!%{5h%N}j#DW4aS zq08d9$R)y{zy9IPrGz48}juum(^{`N(@&ihR6n~p5ro!+}K$D`Ct527z z;d>$H((M>&HLPt-bfI2+q(43SkEzR8x< z`1<{D&KxdCkL}jw(`M19e;A4gCoJy3yz+7s7+zfBegvH^E32RRthJBB^4I<&fqovnmB;RkB198r}CE3fA54exr1-g->1N{%zY<%m( z+1oD+uy}gD=suCd^B2<6N`g*-AG#u7C6p2;lZ-E~lZG7cbBnw7_u8W_tu5JtO?m5Rdion=E zj0n2inssxj8=OTX8k>kx-I1XoSGd*1Pix|Lpv`|@*rfGN|L|o)2Z=mQ(S*b4^@i}U zvH{$;cWc1`TGy@H4Vza8pFdm@`;s(f#g-|HyIiH!Jlm2)Y+%DL{6TW9wFm#go*?a91YnH*hHvbcNDpcw+PIoXam>Hq=UW1zdBW-wJ} z_xPn7QTsaK*YfEf!r9A9JoA6$JrmGDtle+Lq?-?(38;X&d

l6lcN`WIsd`x%G($Q?uSz_`r3l{OKhjgxA1+5MsN~ERpdXS za($)HAhhwd*ZgaCuTEBzOCs4JJ4yvd85fYT?sivJN~^RW`A$hA5AJ zLI{3mB0HbCd;v@#8Sr^K2fAmqNn^}+V)~hPqsqV7XjoQp7nCGUIY@Oi8jP1e=o*+r zs%MkXW`~LldEG@WUEwm8U)K#~GE5njGe*)ptO4ube}L{lV=rlnsIj8jpC(WUVcv}eGG-(my@rM1RtVjF?#N_rOACDXVi304XkhczkMQ+mG_ zs$4*NiCHh(e^-QmNCEC8(Dn6*yA9&F74!?j?IN8Mz0*fb%@u`L+C(}W<${6PBV-e( zmSYeUB%YM|wEApsBJ_lBg+xJy{G&p1f)|p@>urtzU$?itGB`l5enC56>%!*RsFCtG^-6A`%cNW3Kp5019(2elbu#h%SD^^U#Bg!x@pW5v$^xK1KhV~4;-NP2OWGq z%#y@-B?^Os*iSbS&a)qSTdC%BaPsoMF-TawRh^VRXYgCWWccFS@#qfO8JG zDF0EkI6VKh2Lk8&ww3?~C{{G`)4jzpZ@N>s(|UmG_e$$d&^!C5j7SD%i-sfgyyl?! zT<*a3k|p&DAG_YN=X`=}rCZn7s#-n8wh{9zwO0u2-htjE zk42ahpF$UA-2M}ECUmf{zeWU`beim4k7*9M#X1j(Z5`~oVPO!-1M2jLRU!*30m5Sd1-)VL-T94>jKal;l@!tgv}(HJs@c;zHFPJJT=?fBnI*&{plb z*fLrieH5;g-}7~Z#=v~v_Hy6=@t9W$d40oGb}>^^9FzZXpqPJiR(#KQppm&(7c zpJ4m1ZQz7OP&|Z2CcELL#U~P3WZdzx3s(tZNOHv!-B$?Q4{v)~aDaY}5D}Ct`rgvS z1R47hRo+uvz;H7YHH;bfo~!)zPBB>=|GGMF+mPMrh%G67%$soE+|^@>6h8gTfN)fA z-IV$Yf!((~I5kn_&5FDU| zD7OS&{$%01wCoy#a54D?1(gz-uE-$ zt@Z-W_w74j-~h?{7b~WGzE}8Hz~q;_XIC%$P@MVhN0Z?=Q=VYvsNlFAPMUaASf^fH z3>QVNd%W7lNeg$f5#LT1^a4TlSNTt`5ZHYObZ0!V3*YUlQx8%94XPUx{mHMU9`W!Y zzg%<)b7hvTHEl{!Kq(FRLg^m|JUa9(4wcsP_`3Y63YVX`Q2G%mcN4&c0=o0*NhNqY zL6_d?l-4&)NZu>kN6In|>)E)38`g}|!FhMGaOFOXl`a>S4YM&BgxQ||o>I1yqDrTu zzw8Ndmq`I!5YXM`IW>0@uDR8NaLX^{n1UfITqqWo(;wdSaGE0GpL;Kq?C(>J*273F z4VNF$9T9gjL4)J1mM-S$u~Y2u88#f?LIYjNIBa@|_evEP7(!hE6okrhI^Ee=SfRWY zEBy&HN$5m{CFksR39Kc%g8JE#6ppD9zo2wH?Q_LGhkYD@!he!jPG4E%zS)Eo$dkr98c%W-K>tVrt zniu9J={yJ5m-KH%EL}ktMxeNCWpZ}DWoS|p87|IS#Jf7Mhn!b0f&$x~fNRyQDQeur zkI=?>Neg&CAOPJQB97nUXB^ZpKVJX(0z`sNjs$10a31FUfFy?EKj}0AvPV)!a>^BT zpP`FC7;sUGIjhtd|2W%KpPF;W;nZo?0r?^V-ODTpRYhDrJ~&TM{;UzGNI(c(XFjZQ zB9{Y%uK*jQ_|KB&1F9;LX)AGCno7CGU|@&bLPE#|!c_WU^DfruH-L)-bkY7il&p}{jAhbtXSyG)L!}?^h~#y{g+(V?k@=k}htG+MvHy5C9*)a1fafJ>@VV-RnH}v4 zFU+>))Cu4s1KphKyzD>Q2P!LHwaz12g>=KVaRvU>^`Wxa>rZIKddrGYwbL;Rk~itN znL>!#veHu_uA@m=#(Bk#aK2=48NHnefyW0Fpo_njWQHLY@2-7fF*5K3x_UTgkN~Nv zG+j*CgssPYEb0*aD4%NYMc`rMKp#cT0R5*fta5|J^)G5;*kzr6>)Tujc2R-udSnuR z5_u!S%KHjW+OEp}okMaSoX@6Df8jn$`T9LQ8{UpEP8>=`-f4|Xa&)xY+K71Qde;^W zVKPvJW9i%g>yv0eSG}2>+*JNRbb2!8s@IZidMQzhI>JO?*lmh;l>b`~+RrqZW6sLI z-Y~0l1pGOl!qE(vCjGl!7(YF56n>c!W(MSo4s^{S>>`y{3$kHQii%_Q@fY3hy2V-w z<7Tg>HEpFBJ66rA(;0h&`^-yHZnY#5a&-HwEI=HaaeMtxe)C*862<@*1L%HTi#+aP z3IBx2S<+&u;lxGGNa?msDBwY4@!`GdySiw2(W)Vcrj_AYi(&~VYZ1KdM5NDah-2wA ze~C3HUuwJoE+)`bXns6v+9(;yW=TOetbc0HMgGG?D!2{lH`#wgW|o>icUptg8=w2B zrfQb$oodfJtE%%h%xemEy6pAJw4Y?JCF1{GH!Pr=?b`7-EbbrCaBxh?xA!YBt4}DL zKN%XireChwuZ#8)gA)vEnym-3++Q?*O>kd*g}n8CQUB_J&orTA?ZB50Tu)*H-A7{c zxY|6k{>7LuZgp81F53yS|1w)90#THXY6}u2&|(ZJe!C+ZEIegZh~)hkSNDUrr2=iS8V*!Y3&Q{|9?-pQ z%kh+_r8#~l8gQsJuS6HDw4Yj0J}J__d$J(B=Ui{(|3zv{wQqEUum`^J+yVey|54Ok1QbIy|tmomPcje+}@0O)=pSuzRFIpU91KoQbsP$#4w zB~jGu+3ECDln0%C9CHre#itQ;lI`%#7}8u1Rz=i8c%-IcHG^mQ`BjwYX7H_s3U-);nkDtCi&BTR8zDO$M%ZgzqnhEmlpP_GK?Yt1Hk4B`sQg{zd=gKmx{HHvP zJHS(iF(&I^2LGKRq{NgcIF|$9zI_iB9H4Y|>4L4^ZJrGW-hxq7J}fFhAIZT}G4qSS7Jr^=oeTQ;b-z1GM@gv~=X~`~uer#I7GYqR zcTqjSB>}q4s7CxtYU0ckKZ>uspEWo97L<_(M|3k(ihryT@w$c)&+S#wD+eif?60m) zo(FfT=)kOroL$(cNA8}}#cnkNTvDK0hpF?ZeffaKomP0Df}8yV%?iX4&s37Td%~%8 z;*&;>nP&Q#eqQ0|4lO2L<^5sZm#zs3V9MqR;ck?0GABt-olUx7hXK+OkJ8j zA+kGK38ROg^sRdv;9gi_G!(ThdC**xaErN|4}Y_w`6tRxK~Ej>NaNb(7%5woDG;>)Iso8O0A23$Y|M!3f7HbVNMcu6b*re+(}eEg8!tQ@_7ZFV zVL8xLF|qq*oLFePNtKuk8u~vWyH z%~qF4_K{ZgltX@yVE+dG{E+A-W?7HMG2p9B1f2S0hz4 zc|G+yt74P?W?Tb ztW!&GN% z0=Tq5x3-=8WR^=oBDC3}1x_U-9e0BKV0l9#3i|dW>B`tQ|4RwH9B=CD#yNLBB6g5k z*Pw$=Phy5)=8?yZX-_qP4B*lMT_4b{p6z#j6!`>OpH%*r!7*n`#?X^E^^>v@Uq(K} zcC2&y*pX6Fi#{vp&3#gK0e0nE4!XB3&!!LkZD9;#GsH(aUI-;$2>;I8z!>@YgXlaD%J4ud?m{ zo})7W-R5#VS5b2I#JniDz&$_c;%e(oVLp_90;P!o4d3muQD9+V^>h~$Lx&!+5^WQ$ z5BJr^2^3Z)ZYuXeYPsZ6bN;U%-s-@NKzE-2%G)=GwP_jh{c?bLY+=pUUecNKh9b7n zQX;d~9p>|PVmy*&=zC)Aw59zP3(4G6Va3c|hEE<_=^xkS8Zk~y~8sSzCH)-c0x5?P&! zwgMa+ChLUY@1O>`ty}p@EhsoLMJ};-NZsqoB3KboI|e7@+kM zsMf2K@qsF`aP7*#FO>domx;)?Bo56eb+)aY`$(wx@G{iI2k3GDUF}19zeOcQ6@hgU zY%E9{eh(UI%^&UO*gvYT#xe*HutcySMRErzDx)~`b_9t?V6hDGPc_xTzHZBL$UxaS z0?(y6fi9{}Rp<2Jbf;0%{h+SsA)!&x%ntkeTmKGDahAs9*ss+x8c2FL>K$S5#=Ut* z>>(7Q5vIf7aqC#qc^`G>kk%*h z%nu1%=HK~}tIwZiU0zG1gzQ2hn&oA^1R6;eH|*0xfnwik)ZlTF8|c387e5|CsZql% z)@03h_w{{`CO|hPd;ZrJv(Fpxo2OF0ogJ_I_uFYb9*$Df+Ah^@6z{!yQK%iHiBQ2z z%zwcBJP*(%tAWE@-$Bk8xUqQl{o!uq*jxuHq%$Yt6UiqJx#c_VqNx6L%S1Wz=jE9Z z;y}^F?wvz{+*YfOjA>BerX@WTAYWdf%kdwG*Yt0ZdSYdA9yi*vfzV(+aHb1v{xblZIw?^Jr(YvAE()X`xmQ)V>s2ihU~v`B^dbPlNwc| zAn1)`tjBFC=OxcnDPF`|Nv-k88@S)(2f7{Mu3@|XHYt*HPb4Gfs6uF4eMVDCSS2tm zbi*f^xs-2t&CslzqOjW{7=vh#?CYt{{O8i$eq|vR3erhc5u^d~6#%-$dX$Do^f(jj zf%{XCOw%iaxq7;=sO@4k8(Q(tKNsTfobD)mYNWIfw$20B@@0gDSo2SYRH_vPI=_}3 zq(i>dlEMA^0qAB{Uy!Lg2J!4pc|^5VCFJ3VqsA76S*n99XfnB`8Y+4MUQ2^np{w(JGbYfKige z9A>TxI6iy?x>x6#C3`El{94yLK01{#EA!U zfp0dwuH!d^p-7F&s>>L0TPUJ=uS1=O~bB_Ws6>U};fuQI2-a zo=%n^9K9T+;XT)&T6^`iJjq0_WH1}xiUD0~CFQXsf#{H1Jy?>lc&kq2h+No@W?^#D zbqO$L7Nbxngz(s!Yoz8C43$4QA8jkB*cRPn1KqG&*~2|b zJ1pDvO}A$YSBxGwws`p;2y{gTGfx7gGt#T??8XK119~<$1+VTr)UO%?Vpq#7)xFem zOr@a7=78ro5PWE@d?CzbrpMzA`}fS-rRNp~X^EvWc}v+ubyDQ#cZNnDO-c zRh=ZqIdad`#_xe2NDxhT89!3bbx;jF%{FyOtZ?U}B0DAIpYt&{0In?1Md>*4Do{EK zT8(}VPm>9zzWa~krpNh!9aj23v6PG@gKy2M>TsZTKB6>dWe$xlcKy{m0=}OCAI+G* z;49|wCjwkKpc}MPf3-||fooebztw@Fvr)~3PIpo!RGNiL>eGj{5$le#vsOaidD<+q zGHXY642dK{YwaT@bpCaXUr+;I9{8T4JkUMdv)O6m)t%0-b}qSL4pCzzE|ryx^wW?N z9JKxsba--Rr|7)+`bj}&Hf554gMbWCNgg4WmsBAfldxVXST-g=z6wCstOworn7`md z*63Eg%TODC&qYJ6fR0uYM%1R%y+FkpyDEJukKU5F(&*waz9M(+xvjMKp`5!Gh;w}} z{gz*PjgQM}Bwm)IhWpK0mo++4N{6AQTrLb%6qsq#MuMhETKPpN@0Wfpsh7xQ8S zp_1JU#Ts|N3S|-P<#53zTt=V)-@{V^x^(@9*s|BKkv^!u{S&xc=_9K0MqLaF>IAaY z?MaIKp@>(DRxuBgl^Ex=s$V9D#BG-54vX@pHl>kYm-$o4 zp`zD2ydJ0M{7?@=P4VZOWoY{3XCc+`Y8nKj?T3S8%%)!*HOp?(%A^Lrd=?Ll2uWGQ z=mP=$paOJhg0HRPGl&b}K}#OPMkNPv(8k%V$M?o?CeeEv$~ZhD!i8A>P?5N6#BA@5 z{R+=1)#)wLl=!{izHgWt{eegYxT-)Gwq4Rz$HmKTF6t#g7lp~l(J|*8*6im4g~=$P zgy`nTjYh@FqsKfHcW$W(!avL*&?L3J<(fBL?O?wG5R)2VIU%m1$}v$d?|`|G~JTB<`Y8CLlI3 z8Q`h|UALM;>8izTH+fpcP2^n8Jl_R~f_6cgA2C+0oWkRq=^DSPDRvUW|7C|hJC~*O z{zK&!?@&%&5Ion0@xKi^0qzSmfNp%s3*!%QiiS|i!XrKnim<`X^HtE_k7)PP(U6wZ ziFCYnp)QGST*8(mJbZr8Q|VGp&L5CMSzA3+dKV8`$}$1@g1@)@`XdNX$+^0YwV9i( z<3tuSca&J#`uX=9SR`EDTZ?Z4<|X;cFc7>F0`Ez!%_C9qQFO+JgbOX4Kg4~jzUSKi z&1^R632?Q5`NnClN-tU_nL8&kz$DhC(9=|tCMeonUa3slUla2L?M%)r3`p_}372io zt!Mf=thmcmsLknpH8`5cO7tN0)B(8KKsUv)x7jetkJDbBqrlleC<2GFDP2XdhU|Cg zX|mOc*Wcr#OGYxe;6?YrXO0J&D`@u(8G z5+2(9;jwBkNX{?S%5I9;v9#2vNG#*74)SVV!IkP@{}DA;hHW&rbA)pEN6D1RiJipi zq?ew@xce0X&&RqzcafKA#@+aKwsCOO#!YR&^^l&3VVrpXokKS5#QgX1L^l4rxn6b zo376WRH`XYAFyQzn-+fDWDF`~_8T9m-r9-&3C~gd;kG`vr;Un-F$Cc116^NBI{^vx zgZ=NP_&8M7>mfW>Y;Xg`IdgQ6?hX8!F0u=M9BkCT`aV%WnI$Wn3OeNOY0l$K z7{l3MHNX811GpayfbMVvD-4vI5tnyG>Relc-FVAxnR0&2#S!h-P)u`1i`&?daf$$+TR3pwaq1l2cNkJ7^kgmqd z#XW+@X~HF|j65LUPeAwNJlKXVube~^zed|*h`HBn)atB^pMo<((8RGRnf8TZ zC=X+lM`>xbu;=S|Kl6m^t*~*WyNRSiBttpCH3qs!-Pa71ZifdYo_q;Ps#71Y6TP^( zYWIg_+`r2r&eaCu2h%g~qwdz4#X-Y`#ubukW0VwyREMKiNLQVjY{_+$x?k+~iNTV8x7exxPKtILJ^ivdwuJQUV?%ft4EibK=tf6;w;11+dF;W`@sz8UZC_t;$2}lmNZ@UqBb=+LSxKS zrd*zVb*76dar+##|5@wT3CD2E)0`Y)MtABt^7%!Pq0ePBDMKbohB_pt7r-?Ky7M-& zzEUk0ZI{tx74#u|HMkuSzsy!ItxC5QqqnK1rryJkuTloEQpJr4vfSoJvB;8^z+yv- zA89>s3q2AUn*&@6pv$ufk`YVdXpz?6A7W&Cv`su)pJ(16{LTGKT5QWuNk+jgpk0UL z8b0?TCD6Tqk7LM#kZy9%A;$Ve{5h_M`m0=J zZ z$NvZu79&O~C5#g6XG}ZY7VlmPm$2c{h~;~~uXk#!4`sU%CSiCPj5f3=tej1faCFqV zk4cEgA)qnn3~;T0t{Qvw#PDU8Q^mVSYDGcG@08jT7b=eo83eqvAQ5D9Dujwk@99ZsQI;PF1eJgc}LHWq@l9bl1iM>&Q17Ketg z=>^JulhUe}ygtHBAt5A87U_>GPz z+jNb8f$K>-pvyUr%YDfDmvx)SvD5J?e&Sl&>-J~{t?#k}=An*4!EFMstWd~4@%r@j zqd&<$82o0Nx$hEV&(Vleso)f9-t*d{jsG_9nQy zdvMthfe<7R++B*(O|nTgY<8EGK#(-JySrPUKyfQjv^W%}K=BqYTAc4WbLZ~fO?L0i z`~Kd)eBZZeA9n7XIcH|hobkDHZ^mtYpX*)SQjW05+$x3&D|-Z~F3r6Z5MA+X|L3L41)Xg5 z(+ zI7>HSbL-Y!%^!voz7xLu!EZ|oYR>FyuyokW6V)5kE3hc=*04!_2@<(+Qn|}+=3i+2 zIUz$t;^^Wb&!-l>R=sPEy7TT`e{^_xe6dS^|F~z}x%!v49==&j_jJ&kvt7(yXRAEw z@#61*fNo#+UOb?d*5m$Cxm5xzA??%Ve3Ni;a^OFvYPoI(^x9uhRdiJM$@d?ODi)Tx z>+fGiY z>Ys)TdoZ*6mXQe^i{@NUf(z|dQtbgPY(It*f?NG?frh$ z_GTzEC~GE(9^$2P|LnOor1Zh1{uygrG2ef>Z}hkhqr4;QR9RB-^VEzZhL*k?-L2lc zCG$_bO!IPnmQTiyaerLBvccHuvaX%cXYBoK@zVBppj2);pTjreFI_)1_gsgqV-D0i zUVrV(rW5Aec<*KCv#|DRy-%e`->OAy%gfelT=dkg92@)1N$*w6TB_{1EO86+9qDbo zC`s=isoXR9hh;Bc%=f{>2Te}jA6`EH@>V0R{Pj;CeTg&X-~XBSX;#U%wew7U*l)%D zvFhCe&FRy%9G}Z~;nnX(?EbZOQfJN8+7h{grE+f_sigm<=!e=GkdpG=8zkIVd?_!SC z>T|r@$M$vf+22+^eAgORegE}4lJq7>bYi#3d>8jbj+-&*i~GzkKf*fBO62=)w6jZWvTz#W_v*&`-A4m0!-E`Ippwhf3wnSfB4(mnSO> ztJ2kPx^3U-4t+z@mV4K2R^)trwlTMBj!6Hx^SNoai{0FMWb@A_@{K*_=Vd$?+$g-~ z9_y(umR=3x9!t_YOe(j>_0ZATO80GF%s6$Xb*OD#km+;UG3PRM7-^|f-G>^WWDw9W&(E^3~5XZx}LpWX!qWvsltJkjNb_m0O}-f_H^nJ<|Ss>%*E2 z+xm_!^>g!!!y+GJZIUdFHNr}|~^ql>|Lsx&V1Fm`jA zX)p8dd#1Uq4O(@7Xv6KdyoTMgZW^NQ9I#GWFGfn`roXynZ{NnDODDHK{OZr78jD)@ zC{%br^Xb#WHa#nNEhbZz#j7sG`!vr|V`;fVPd6;^4nO^E*qcu2wtw8?lUU>9@Pfr8 z=^Z7Nd$9JDq7nI)ewbG7i=oqqaaGz_YR8-|5?HT7xkBa==NkO8<*8cJA!oB)i{4y% zS0GQ34TGn)s$1k;OP|kKDrFpe@b^*@xud0WtB$BJy0@|Qhi97;a$Kpky7;3e=XQKI ztlFdt34L#kT+x5T4vPug9d6FqrG%dtsgrjPZmkvZQDpStRotGaF;bL*!X(|T$Cy!5Eg_u+}P z9vX9g@hZ}8>6W7%J1yB+&R1#=W2JH@)H=P;HoE_~3}b_$j=gL0JWHq6-4hba=V_Jn zxoZ7;vomWN-O2yQoxAhzR@__lC)3n)1Jkb^bJVPT7L=v(q=kj%FO;NroK$Y)s?$wF zIs^qA7(0Fw&VBYWW*fBOL#c$A4@2)R@tU6{dx3wJm!550*zbq>*M6Nhs9fnTB@ZOL zDxH5u>2luBw)v-(uCI@m%H6f#LkH8KJtMyOelC}P<=yeSyR{fUuhGZKh0mBqO>DM$ zTbm16yD#YROVyuN1g`E_yla7v!S%go^xn2|?Si2BHSgb$u18If$_;Mc@y4+yC2snc zGG?z?WyXd!Q;ODY^k(|>0WrnK%pTg(Jg{`8?@vw7mgh^4$mU(n&dW3WMX!vfMhv`C zc5m75f)6b0;p# zzQ|#InO>B*eaLriztZhhnMwt9=n!n}{i^k&_Zz#6kjR}Rm3wAK@uqL@6dGBt|Hq0O zHJNK~pIWTxvb2*cO}cVyjq1WLvj?`U@#@Oj?vGmxKX)+imIWV17f*~{wXbd!UEQs5 zum2b$UDuc_mHT^@#HJ^PPPut?cY(1nwu)VSJKfy=VcCIK2hI&{>UU{IoixRE7gf!_ zm9*yVp0m?B)x9@0;{AzF88XjIS{svi81J&sQ3QNCS{49ja}Y`QSGRnOMr-lgr}yWvns#;}|bt*Rg0rE6_H zX^t(@f6>Z*pZCpPbJALXZm69*S|WFvRBrF{V@3{6_i}h0{hTI;4H3OF-p_rniMnQm zu$7J8FVFR1UB!*VMummV8NPSMAoG&ZWkOCAn0R2t++Crc zPmR9fx8ly6ZiPoyKU8qy!R@)4UT#?O+J#j&mfgLrYw+OcfkxSP>YL{E-+tK^)#ye4 zHJ0~7GhDda>cr^t7dp`XP+EZg#9!el`M)`nd*IpQ=g|R~g~ty5Z`A?Sc@b2Sln*+4 z7iNn!(G&gp##o&EB66rySyZY-3TM&A#%aweRbH4tHuw>b$Iqh!j~)E)uM1Rvmljp2 zGNazE!!N3EB9+^JwI8)NG_IpxX}li4e_tRJJb|@$u|CzeiVnn7@<{1#hdokQmHVUPoy}K z`%yTXO&3A5H&{@maRRwLekpa37J5OMsp!5YsjfVJ9=*UMJhtJ{L82==5ZYpsm1wow z2eNek_i*Dpg^$-#SBtb^srF8a#fg|D+B`&t{`uZ^K+;Y$r#*n%s}VnaonzN>ssG3g(68tRXR7>2UZh^bY$#l>v(GF3U+`nLt1%d96w&~Psd1h!k@R9n zg&*<8Sk&>FSiLH3cL#5BKMEI32OIH+d0AD_E&h7^JbLli2CE+b-_{RmBg|ThQ6HyO zjnz5&X^&q@y^yZLY+-t8QXj-R)(QWs{V3j_usBJ3Q^orU^HuVTv1l#y{z)YK#5K$R z2|r3pYS&K@G}V8S;{d7V@dWf}z@q_=20R+@XuzWZj|My%@MyrJ0gnbe8t`bqqXCZw zJR0z5z@q_=20R+@XuzWZj|My%@MyrJ0gnbe8t`bqqXCZwJR0z5z@q_=20R+@XuzWZ zj|My%@MyrJ0gnbe8t`bqqXCZwJR0z5z@q_=20R+@XuzWZj|My%@MyrJ0gnbe8t`bq zqXCZwJR0z5z@q_=20R+@XuzWZj|My%@MyrJ0gnd$t2B_2e>|?}OyRb)%ylg0a9^Fl zV%6yNzItPL-$)Xk!)z&Q;;8)V38>lr#Rw-Gnq(-lcG8iLq`8oZ4{U-d8o4&_P z(!~4M#AmwaEe!?0AAMVy==4nAaHBu^E;5CoyIyghDf^>u4^y~w0PbUFfArm8@}oP& z={uS9N8kJ_oHvzk{|BO zQw4E9`aUiB(cR@+$$>xmwk$dEjVIMkI4D2#U0Cv?JnSI{{^*;oo{Tee;yUQNEUv2ma`LrQ}EV;4UW*{L!~Y$uAEul|1lA-w7pod4Wj)>4(0> zN#XJVRRGcteMgi0@&iqI-sl^cHCi4 zhkKM&>xcn=^bJLF76G=A2ma{$hvbJ(>ZtaT2mZ+X$dA4s`U`pBkG?xde#L=9 zW+3^M0A>J`Z~ERJ`IQ9x0Lu3a?pF%#E&%2Us5Ga=&tT4uG5f=5ap?lLc4f|!-z&MFKlh`2Q#s>*RRB;O4$Ajx?iUC*@l(FnaKCEYkMg~i`&EbA7jDXT688&& z`#wN_WHfpo4H>I{HRWmj4j-+F5Fb7$dBqf{#Vrl#P3XQ<9?y=>q|uZZO1Rg+l-73 ze-)^}@t3)dEij-inoTziD1{=vGyt`K)ZS73rTR+k7qwT^K2du_?GM#Ys*lv3~p_H~{SPU!y zmIBLwsl?#ZNsasWAjTtFV6AaDwDt^+p!YG2C$7va7PTmh~EzX2D3b3hWX4p;-M z1!e&wfl$pb7l$A+169od8sWy9N*p)C5WbMSw!UP0;@W9s^H+r@%Ad4e$=Q3)~0(05$;Y zf!V-VU>xuRUUz1v;~OeeF&I`c;--CKoy__&=vINKwaPqo^K*t5B#3M?>S%lK~c&dWd3(vg)@wYtOS>Rt0I1BetU?xxv(D2_%_!Utd;Y69f+&utvQJw+r zSfH{56rSV}C=Cy|n`DyTaQKY?h-Vsp#{#2)nLsRH0J<)~Klt0bQutNs3rQxGHI)OE zEy>UWRF+hx9RM{@1)w@!0ie1_^^)v{?3(hS2Pln!Kq;UYkPAR?)`w=nZ)PA9kQPV- zK-H|j&4Ax@Kze{^iRslmfm3D8F5RZh!{(9_Ry*z0-4FKnp|w;Xn)!4MYM_fDWK?FaR_Y zHR0C+P@1THGXqw@22eXdc0Ujp1eEiF{(<5EwM*1KQQI^Yv?0K7U>GnINB|OnAAr%o z2w)U25*WjO$&cD;>W}gRC-J-um;y`&_5l-t@xVOb7;prb3(Nwh1Ji)1z&JqUn*{d+ zfcU8FNCy3iZh9si%miitbAZ{v3V>)!fJFewpm-MoWDE0w1pwK^Vt~RDmID-aDX;Dfe*kN;63mU z@EUju+yH(Dt^?PAE5K#o5^xbX2b>4a0%!R11^oU7Tm|j{4}qJ&1O9v;zjuL_z#ZTZ z;5KlJyUCAe#7hv}PvCwG{K@?v;rB1#Iq(d41-u0Q23`P^hIatvi_-lT$P8W3IPNRl zUw};fnZ|eNfp+lo#;*$ahM%TG69r^G(a`@lRF(i=?ejB!H?`C1iyvwOJljB_$>mE&d7H20(pQ&pfv;<15JRY zKwF>;Xcd9ha96@_EBv+uD8Hrg+y=koNA8ip_i* zuh2Nq1W+GBd7$y28K69oAJK;ZgMooSJYWNeHUPibwu@=3O| z42I&F${+;4#5Wxn0g&uz_?-$&0Za(fAD9gHNMI5$5tsms14aX*fU&?BU_3x!s1GAK z#QXP3IPmxJuJD_=PLF_~UbbK?@&?)0DEyrlc}pNX(w8{vY3>^NGDP>v=;iP0=Nkau zK%f99X=-ixsZPwSTN%9qs)GdY7NEe!5^MilV(Fy7Hub<$-4|>^Z=N5N9);VC-@g8S zNJcMWA!&mE*mdI6s@*4++ZIwYqgU?$Ki?qGMuCzQl-bo=-~Kf?+X7JhYYKf3(Ej!cb438jE&SUX5OneJS@cD>un--seetAIjAtxsGssKoe$ z;=?Bh6iPLrzI$PK>50`Si4OF_I}Ff6(kg#Dqh1rb**Z1 zx^cm51IErEX#oMg{xw+*CSCj2TTyoK@LYwxy?O`w29gdUEo$umt69@)NK*A~30ZwW z@u$@JtD^MAFbh(W^m$~PO_L9Q@J1>4`&NSw;)x>4;{GG?Tg-PlgX#ibx^87Jy2Y{f3N`wP&Inx_3FVs z>j6;6d?D>9=Lv~A7cqErOc|0US)mh$@`6%Lpty{O)onMahP0NDhCV4VtY4Xs&@4HE zA&p9b$_Et6>G`fn=bFD+{J`5Qfz$>=APXT~M}9Z)dEstt8nd*q@@bG>NL#u;X9gMO zY{&`<)osM1Gely4D%zTFWtD?Z?w-5IDUhZ!L~G4Dt0mXG#{~-haWTrz1u&3P8x;nQre7$a4m)SbyI`6a|UQKGifLx^grOq37#V-A8$+O)2g2%1^vw$ zlPMlO`+{p{$`6hs>m?ERYn6em+a`9~|2*A-ThA&m9)I5&7-fT!9n!vQf3bD1SI6%- zq-_F)v~zso;OqswFAbnt!qg^{Huotgg=|up2DdozJYardNMm-5{KQy{2HNp!d1%e0 z;M;MxK;iaQ1w2$2K3{3!-MG`4F`)1k);%S8JZUK&e_ynG6_FXz+xUnXKkdDK{0}Y- zMNyMe_E(vIy>{nKvrZ0|ToI-#`8K zaf;?0D2SizAQz%1X(6u<{B$B`^=MG2mVojdC{%K3y9RVRoj&OZD7-eV1%;$ls@m-H z`yP2;aUSSeXHhfL?mr^(p>JDTbxdmaulTnxs zQkDX55>?j`50&=l3>6o(UcPxX!aJ3w=N$qIu63u!KoYtZxqp&WcF}yKGNL-Y^ z(65Qb|D5h^?=g;pk{6T)p*;)qOB&b)Jfv%s!c9KGNY{-sUH`JC*=6FPdI}1uGYoZZ($(*OC}#M^YCSaw{;2i+ zY&x^nd|}+6go52p)&x%tlqsw#Q%=FEya#66KF%kn4HVwKS+ucnS~KQv%^!5hHm%G( z&I1eS3?3@ezYh;FEx2;(0w_Ff@z^%kS*)s8vo~EXJh&8zc|!fDj> z8_~P7b^ZN>BLxw;g)*%bnPiz>zIP0xzur(K@WAJ%|^S^{mu z;s?Z_W@9C!N}hD%{OT+OB}k|X|4yG}jW!!?QPHZPN!f3Xd{E>Gizkp;F{?$dqpqpR z;+sj!3ha3g3hD@@pfn1U%5>7w&7HptIop|0*!TdtHb-c!s$0cB#hJ?dN_E>0qZ;s> z1_SB(_{O@sBRbV7$tW0aR8v`FO_Uu~<%W6ViYCmDXA}%O16Aqs38io?Jp20LXTr9! zUX!(A(?Fpb{2`mqwtS&W{`U47#eK$MkVv-ksQJn}yS_^lY9q5Mqd{xc#cEaG)mqnQ zVlJ=Qh=-5XZ-9qNVP6N`A@8pjsD zUvk%e+o#nuYI~6~e^k0w1qEqm?*D9>GwH3+`ZJygotZU?mcvJWKRNRS)dh+NHcGQY zlIAqF44@W?&Y_smKR@np^!QcnDza-D#3BVQ`vuq)=5=~zZmMSsGv%$Qop^@F1D>}? z8^yEX#-698ELCU>%WH5GOkSyciuyIO8H1|)!+2P#+kry54oLbVUz912mqS`lP;!ED z>d@V#_fM|>ok>HEU_0?99mcAvwGrFqPrn|%Ng*DlgCtC)s7<^u?#1(Lxj*gz58|i% z>;Q$zr(J@6?~R|ftOtd9Ce*ouoYFh%z5%Ci{uKfW{E6o@r!;%Ib$QRnt3!DTP_;}N zYqYwrHvTuu{;!uh)X4-2ul3U~VWqkqn(vP}wf1Km0tz1m^pDnsqXMf=#ZLNXdD~Y_ zI0foLfr62;FG_Ac_)_v9v#L0KKhQ8|sr zgY!N@dyxODPviX?FH8aj4R0XCg&7BE4d5wu@6Mylr_4m5Q4R9*2YATd-kg5B^{RiB zJl$PRjw5 zjjh|U*KHYv#bd&UL9H;J9V0`3xH5A-jrlNd#LQY{)tWKo$13Bn?%!6I_Nvd)#>P7V zSgb*Fl^E~0>+h+Mb86tr(cKp~#*n}=ud z8QYm=p}aQE00ose@k1_c->=n9&jp2)?O#nbs~p>BO1$&+^o9!6vdv)>)>63R@l&}^ zfnRwcr#E)4t}@R{L;WeQbG1Q1;U(6tfA7yJOBP|4!*qap+6xqPIEjrvoX&VTvHc51 zVXd+m6w>IE3*UY&TjmOSCh)LQ2-o00d|v#w5=qxOH(N{n0+x%Y+YFC3_BWuk>m9k$ zFEovM87REn8Nt)`QegDyWGYV^!Cv!?zUY|MIO~sk*Kv*^O3p#_&ge4wgkAgxvxHjy~-s$;sET(t_jYuV2|zz*G3%(- z_ii}r;9`VG>kV?f&6%%)IFegqF` zXU5XM&o-Hyf!ah~reQXn-ipJ>!t zTkW{BUf#mmd|DJ4!8uTkU8KC{djuYQ)5uoo+cbBPH4qtnX**Rsw$+-Z{FnJ2G4C#j_I1UVy@d!vYi#+q0;_VtzVmF>mKLi zJSe%Hpiq1P1=g1v=s%d+H(qkTfiikc#mbEf=1cle_YoJiCS)~2-c7HuyMJeF6 zFS3(lu@^-+OjBmj>;)v0hMKfrspRZiV6(_LSJ_%XzA!;vi3y>V89? zzInNDNI0X=KuDDf6zZML>H0qWD|8CY+Jx-|mHW202$y!FNL- zcs$xK>uMFN`NLbzgH%Uo!)#GV;-ulKYIh2sI0{NNVT5AAiF*quJ1wX47w+HjF(?6S z>qDh8!5e?Y2dKNRsH;BCD9jEvBc80tPu<&XD!1JIQ7AboY*j3Y!rzLmhc9irG8r>* z>b8*p7b$>Z*q_VtabHUmC@FP-p#l3#sRJOEMsxeMt{=x9|#$reDVujDhHeIIO6$7;yr0&7%AO4{zX0@~q2{AtKjPU!9ZnnJIaE)1hlG_Uplv2h6N0hb}3 z9Ehh^?-p6q$A*k!@vuJlA5duI-D%ap4aEmnptMo135yR!%_mCL92vt(Ox;5DhuU6* zPXogvY3Z)C^s+9io(Kx>Wx9ewJQ>F}%<#wZWi&(P(!xQZvDglEnw2@u9+Ir)xzQWq zaj%0FSmCF(>e;}(L+&m9Bxx<(^o__%bL1?4yt9CZmz?`?h|3Sp%|)2cP=2CJ8z1$Ud7ug}1=RSp zoH8LsU10jW#cb?Py(acp+>V~yQ(W%lu(7}U-Ioou1iQ|)@@3uCN7maxQ~) z0-QI)*i9W3Z`#m1L&aZL=xCP1*J0g{*3;D%dd+$5&cEt@W>#kKV6I8l>%I+1zLNqT zz7uIMnyl0~?#i6dxY9`tt*-Fi*+$A?U3!*Fnc`?b6iGRvc?j349e))87Ky!p`cN zF;4@_RPKtj(d-b~3D;P(SV6FidsSm$n#SQ6UxSB@h}%FK)$O+ZD=n^me&biZ3JQC} zrnA-%fio3(JG2TK`Qs8$sMaF|y}(0tJLlma&mQ_R`wNqX84&isc-kh2X}ASk4r3bnQb$93)r3hWJOz$p_8X&S2w z1BOS&E_{6&JVCU!fi)rUP(3a6d)40MdzbnXJbbV11}HSz7~J})VOE9@H&_Z_aXA0Q zDMd@aKC{BV3$5MKxC#`TO@}hTTE+8L&CiuBPAkE5F2G$pET<-mo>){DR&)!0Q}8Lq zF0cb=Cs<{&8RBWqRIzT@*c#c>^#Xd=uDFTWgJi4_^_jj>WltS98B zoX_1A2UdlQVA5DA#8^x)der=eVQ1GBUicHEuyrwuCEC;%DOhIuYk_~(_tcJJmzMIQ zu^3PmI1xH9Q>(7FqzI;Kwnync9@^g^n73(kzon0+m0;wD5*MYl(qe>az=MRt&%W)T zwE(gM#E^1UfSfYxjj@CoC8wRV`DR!3vm#Jp<=3YDQ zDJi8fi$_jV^6-kK%F{roCDra)lG4S!*ODEu$*!sxC}h`vf9k(Dc%-ol?Iw|KFj~h{ z+-SzB)Ta%CvYie4k$7zClmhUijE7MW zPh2y>c2@893SXFh{YLQc@)-&W^(7s~Ufxi=YYXbpp=l~PH~VIwxY&uL6rg-uoSvaR z3zSKShg$z^z1~%@Mw}00sb=w{ly(teY5mp3IU%0vrOky@k9j(}_5H_1T5%m9Z7$9u zQQAOplQvM&wh*L!7&C69RadTuL)xD$g%+v#I^TA2n}?KiQ2qvmdZv@l(siw0ZhsIc zls4E-%9WY1i&uWYypg316gSeK9Zgu6S&NEa z&*S?eR_t9*(jTVrL1#eJL-Dpn|g-BkVgGa zy6c}B$8I`JJuP2pbbkWRWjxHTT~b(kP@|(Tg3Ow9?p&?33xu&4`fWc|)=ol?QSs&D zyy^ChJLm0{20o;fNQ*X3Yp_~&P8n8U{*-!JqF@cBuPy>dI1h~LRis|k-QGAUi)~U+T&(Q$4jjnDC6`FiXoaWimnPDrGroNH1FNCzqB=rm9z z9T+qQBaMmsv@KD_=iue>q#d?JsoDsQ=7mOk-qh(w1qN=TQ&g<5Rfj;y14`Q;&-Z_J zrBHR^5lSKDj&v}mTm}#I7{+&%&JEuF<7Se^jMvraT3#1Yo?yjBC|fzb%}YCSi|Rq# zqvFSCJyA%T%bLYV0bPU?91r@o)HgzlRHK$K3Qj3msTf{#zNep8doD(4Z03r(T?ahW zZx<}ypoh=UiqHZ21!mVSPX5w42k`v2ocx9H{A(wFNpS(L`g$61L7I#Hloz-A_Q1s{ z1Fq2zU4?pjaY?<$_3wP9lYU%pDSIY1pF;{z7+!=vBZK8)!6WE$)`fvPZgQl3Tyh1qq=Q?G1<0-ij*gtoU)j!mnr6VG8xj*$?H zC*{e~1j-M}rxfQIoW9rmkO?$HX7M0xSc!FiqvkMjT>3|jq6gGQz-!Hg4Da)Fd z7l{1#lZFgrDs;jp25&EuryQ9p{bxk@teiPXnr47;oKp~BGUElLnDSZbzAxRYE zbP_1}K{3u9@z;vt2k!8As^gXjx7vv`n$=pIwNUvy8aaO7IXY#4F*L;!Wi+8*!W((@ z+8^H;JzF?a!fa;+;-S%c$MEczD=+B1gU18g`2Y%yYBDUCdaCsBhs!txX)|MvMH+p& zF=T1pZJjGH3d_$goHBpziNgJ2cV^)f*eKdJN`Pu?$iO1|CoP%8r6Fx+z(XUIVnx6F zFg58nzXsh53@Hn<>T+Ka<4b{<@4|GB%$2M zLYf^8$=}A@<~yDr*qeLp>;VszT77nDmy58UXu^)T(Rko7{> zVW1QQWm)z)yKEEpVC|MsUEy-JW&GW(3M6{hyFRJ479_CgYyxBMm5go`Dj5g`MYB|y?%xi zTJ3Px@&&4TL<=>mZg20s7hhx)_Dk5fDw7_(H`X&*jQTjOs)GN@vqk>0{lh5q!kG)b4TKc7qJUp&N0-OM z+2X(UC$gTfb#i3jSnZa?XjvWroerR6x&yb z@6ffj{<*T7X?{urd9oe1b}$w_NhZY8d6Xu5%=RtV5fE#Z`;v39GeqaOV7=2IjjZbU z<9C0&ny?i80?lQhP&a2mUEA9tNFlwYv?|fA|I0^qyq35h*|{I7y4Ur!SV24E2mXFF z{haDlrf9=zqB4Zp!t^u^9FuKY@ZD0yXygFfC4+Nc7hIel4HDK=OJSrzt>x;Z39W`a zO=t*dd<0n?6e{gGGeQqv+}RcD@n{d&*x$vP13#7Qx}~6#zjQhy7B860y*Xoh`%w@5 zAdQL}eSKZTLw1n;*;C(4x!R#Wt%mtF8h_O|P{`urKI{Fz{b-!Yc#t~0X9Nn4U?;9R zc=T!a{>!NKC##}nP@2{~e#HCuW?J*6u?wW#H?q4-5^Lr?)h@W_5V4m* zvU8Z&Ti1!>mKtx|7wfm%O7B)vGT5o#kmFAgvMiLUgEjZ)*VoITx%Q=0& zc2lYJC-49LBd6cHt(ml|ZsbpU@J#aVUFo#9UE~D)F+AtQ^U4x4(~YRuxPS7uv0Gym zg2KORTEKr#hJrQv@Bm+`^qO_D_{&M%Kxg`Tazqn5y5O;^yp(3sB}}BtI`p2qzq{Am zVfzEjT9Y2H2a+ZnPrg`u@QtyA3hhHxlin7kGpJcRlFTpM7#nLeqzK9m3*h}H>dlgI z@CZZkR*2S8l>%}ndkH$sW>7OqtR@OC+hE%m79}J@&65$XH(Ky+6%LcensCnEj2#~5 z0OIL;XJ7Pe(P5h8!tj%-A%{r4c(BXvDSae2GQmjdhEtgo6 zmEKciulPh;ttLyYs!(tg8Z>jfFU~8(SbUA#Tx#LHZHib<0Nw;AM*OI$ z3ky~VFHIx(q>pNLq=WdivBnsk8k*4#z&tk6rq{DPv7^FjlTn9NTG)U|tua`1GHG)J z;xP#vYFc9Qr+A28h(<<=BM_uG9$0Rf6d7JOsfQpp6g686P|%@7J&+`MQd9Tkr@)=U zY#<|rpBiH*K}RyVOJeXK%y5XUVrZfczoaVU+`@M;sO7Z>JRrO*BGwm-EZG_=5` zD&CRC=!dLTCOStT#OHWGT6rgeH-;63*uy}E-3=x4G|NOU>_LD{aIl`3Rbq^_^lCFk ziE@pWBM>Re&cQkrrY);c7-=XrnfgHQr(bLJOLwI={ zY=Q&zhV}v!?9EZ)V3d?U5>4}Td2XbSScH@^W-58sqkx2?tmG$?Vn-lB1m{5ED-R}; z+b$%)s>zCx@c>~|D-DBziUH$pnbfcgNk|M`OadY7O-^|Q@S94 gehQfeYyBuhv= zPb14e8-$rLk3xN<8H8RY<q~3UrB>@pxR>6^vA1tv9YjRY~C8QYPw(ycX43ysKzN0G}HXSpzTj| zoSs)(;$y>*2TCtr*OAq&5C#bo9B62;21nY}n{Al7;^k(Ug0Y7IzunCyYfAkbf5jDi z+{O9~B`!(+C`Lza!Oi9n=lVl$bHW~(+rCI_y9L$oVzHo8_yAzLDa0QSpL z#oADw6bohum?y}j$2lMbIeVaZXo4o+D2c}{z%4pcrCssLA<93$eF*W<-~sWm*%Hn6 zu-t?Bn>yTPwiwOiViSFOZGqMf)!GOh7B*rrU!YYVyevSC5j%`4lWTrq4I<_)*8M9j zOwgq{V4)w_To6vs%Ik$)enWB4B{*nEaJo#Xd$cE>;t?}~#3^%1Gyq=76C1!QWlgwU z2#kV*3<)K#lv;jU5!kp3BO-1tLdo%kIAK^LH~DZC9AaI0Ly@UiF>p2y66Nf}CSc64 zQFje-XzgStoVZ^IGVm|cW+1arqeTr5`7Yib2HbWx%Youh$DS;(I?{;vu?EH(%(@{Z zY1|S}vQEiBizX6Feqpvq{K(k7G#JE6AK4f{DN$%;=xQdgauq2hB^;lWXOSY<`+$D%H49b|Iu91zl+Jsc7(xGag9l>s`r&VEy6I>Mb-U=bY9FtwuchKjl@&M!nKi;J~` zY=McgEu$fO7{qILr>ZZMr~$l^r&JZO^Qa60oIM=YEt7W6A`J5!B7|qhuvJDvijgCv zr0`<}!4xWFGE75X(8G9>Z}12mkZ(8^B=z(@qfC4#47wl;v2a(aG@U#GuqXFo)k3LS zNfQkj(#KR8s3ZH}c08o2tfa$!aoi3mqLanXjGgv^)L7b$)x?KsvA|-n2!njSse<8s z9IMGf;mhk9+emCCfQTeKOy^3&3rTd~mOP>L;0=&W+>&&ITk^zKDOl6Px8X3{Ws?`S zkI3Gc@U2P{6UVbmG%P$KV85t#XxJ3m3wCcCIM^@aP%@fi=_F+c8;D}c9a2OB+vAc+ zwo^EXK*pCUOJpq-F0%u(=ww!?H2iZiE-*ViI|eya0OAh0Og_k_ENpueq8tyby-+F$ z=Pg?Yb09>yrO}97vEy6?15eY06O8Il1<*_p`3aN0O#vyiR z4``LPV&%I-aWV&P(U~fHVj~P;a}2DKCvekIouaraS83jm`KGJBaI z?n4E=J7)|9&W=5#$gxO3Lq-3|m!&joE^>-vSqcK;^!>nxe@QWl1@D{%IsiepDW=GR zNKmtH2~Y|`!!%)9JKZzs|JItpYu65$8eiq7VqoXdWKz%Q;Ag+s^{02#70k?a@g&bY zy`D$LA}LE80Hjhg;k1#|8{cujjxs06B-JesqIQzO#!12|w3G*vSUM`D#tZ9GZ=sOM znv|Lj87_P7?Q&Q%f=vqfIxiI|Ngu>Xo>DcwkV=v$8j>VWOf#%imj<`s926TUyB!RVub*~L33QuVsLN^3m;XZbl3qEocsgg*r7-0zM3dHmuA3C zELMvcf)0aWU@45(MNe826b4DyfTq&~bT0;Wz_Iva>~Fw|s43Pi5QBU1k#1aPZe4g^ zn598SGkx+9kCtKTPbV;VlaL|wA#FI>^3HKR+LvXMGo>I5&+B8UpOPgWoW>u7#5j#7m zrZ=h8VOlG?N;SJ!#6tFnd&*;RRAQjkZh0^vnbf=GL1Ns}n1w0zW3owwbXhubtbCfl zskT9)(=*eVQW{x3WopOiP&9;eS&o7si`S`wOLRJlM?ulfjRhp6Y(c2e<2D+r=}Rk$ zXjatG=pnTRvF-_;_9v!DVe3XAezB!Q!^R_*_)tgBhm%GN_TbcLY}IHPjd8H22)v-G zrqqfI3Mb^;@*rNfG*)$#^e$<7TEJO^jeW_CqE1fHWMJ+hP@OmxV0RNp*u>Zjx{09lI=G zbv%GM2pIvdbjO9vTt*?zsg-7nB|lYVo}vbknB=vJO=6hUVGv=k_SI@lF!(sOZYu1j ztFhCr!New<9eJQb<^$r@EHF#I)C1eldQEItgvOqH%%%0%{kK0y>TMQwWRrEBCY=e# zy9`=`Hp*z#X|NT;u4k2sl+jU&u*hEuKQ@?P4IxXiI!t~|nDN`?&@D%d*AlBSTT`(= zCJ9DDB#)?H%B`!8b_p?KOif44F8M%k_RChB6$d?R_+f!`<$;bvS%|{%0BtHSYdT63 zyp9J)J&-9=yP=4t0TC(uVExLQF?KFya#AtOgVi9Vxrki`H)E+3?#1LN4S4MJ0s`!A z#;Mdrr>J6(kiriO1|D0gKYfY>OUB8+m3FQz*Jgikx8$7-mbIg3Sj7hKGTG2XIfaC%WIk*yfC&xP zYc-hPS}`N$+m6Ckk&JYwaHJ-7N=-a>Vo$D&1WBaempq}oQqkf&=H4uJ`%IiESE-Oh zi?-V_WZ2!z@RV96Q9>m34VYirjWsk1({Z81AEXflRqr7(zE9oJX63(Ur()AF;m%@+jd$Y<ZFVXkFOXzSMLwnZo1M$Oygc zfLRiX3*|hivOs>mf}#VrA9&;ZAHh^G;EVQ)9GUDrX1$8fi+HaG^9xiEfdm-UQb;V`m}C z5P)@VBndNCVG@jsXRtP67DniJh*e|us=>i4HJ^D3=Q$a##)>yuF(9EGPuwJjyB)>Z zG!~>$?bUR`i{1Il_C$>u8$Me`k(#t-5>4+2Va=sK1>>V*D}Biii;=jSPHVLpaK=|i ziLjAQ_Y}+6J&}=F`au~|>nlIwl12bN=_4C$D)CFw4R*;BMpVkJg*2-ayCml*C$ZUb z{}Qfv87z23C;0eaMMg`wxS3cide|s^mquPk{isdrM<-5cAS53)S+PWN`eEUfW-$D+a zIpWpnU=^L3EC05{0|q!67&h2`!6&2gj@Fns|dXQmA(rBE@QC z3;`C0%ful_a8PP_1qnz0r>5KF)H=DY)e#|tI38Gvl!{0i1-PY;;8$KCkz|pn0()Z? zmSN~nxzlqbHhIdGyAG#e0N9?O?*cG(hHN z!`}al!1|*aV;zm2J@Q6agPVl-oDA)bM15-Pa>D{-k9i8Wu_HRcfk87Zbt~DaqfEpo zAi-74tjv_;xz7xwx+kWpyG^DyQJ_PUY=W%R_1i~^#4nB-*>FUOGuikP{KADW$x>u~u$gO}$gCR2MBMee`9K=3X07mu; zjvA=&RNe92b}X*ZkrrcE484+wZW2Qpybp#K74>k*7^EW*1Unu`+-JKOsa`51i z?4Lk#Rg)1&D^tQPB9uk@1G5#S)`T62Wao3i>v&+Tg%Yo@A||{9$741`36HE+vGQcE zBeGj?)R>{VpTS_v>gwto$aO<;R9xY`a`e%3iL6W%PT?Tf>6wXB%CS>sAi?RG6`)c} z;$$w6;PlLDfl?YIwg-O66EkQfZa3A5<;7)1OI5CfFLXeN-~f;ER4I8yC+=i*pT*6F zt7x;?60e1hb%woG90~XEEsnm9Ct+} zH?u)t1lIPobiuSttj+-usj~-iq&%i`jv6wYJ(yOM%2~1iK>{3$Dr{t?)PuNE2*kMZ zPLA zhag75k*dP7uit^q?uKHO*NwylMPZ?wpU{I8r)Q)=`OOwllDN7EA)?cvZ1+b6WvYZI z**!Dja!+KjE6rKOIB?Pi!sxtBYF3x*N2-ZOJYLQArIkuq{GbUKMJElhgbApOF2wWR z;1ivQPkExo-XoyZH^Bj&DDz0pj)PJ1|VE(ETB7af(KKIHOC)WYnB2qk0#i zNo-0PR0os|)A`*97nfm@a2)or;gErFZ>NhetXW`dM0ErF{A>8(FUn|)qM1U<+cjnK z=AH?ua8FbR_yzd+)xbG;K8c8+eK6`$gp|v~Cq|)vyPp+ZBDsajT4l1r0z(x0Rb$yqTotCPDut#B z?M{Cz5o6vKVYFG{(xDZ=)@zI=P9q#2r_qfGSD<2?3_XpggBLMEJCAd zql4n?m%T`P8+2X4ue z!&GH-B!04qBIaLja^yswk3Q%mu#t;ZG^Vw9Bd(WLvs>F_1V}M|gR zapj#VCDOO_z)wG^%D(u$KJbW6D1dLuqk}??(BL%;Dog2WELOQQezZD*t47GCL?>j@ zAzgV>bdCVr&K{7Vyv*vHWXN##aB8e5V{9>;?x>ZsYpw)GSjbJ`2hqy4P5cxX1c**% zZ%PXg&SM{n-f1v|mO=TY1UC4$PyZxOtnE^2Mdjam4&<-0%G4A4ZT6IUyz$2l@367A z(lAEYI3|?|M+EE>a&|WZ3L=89ed;WN!&g{Cmq`q*r9mKDQezt$Y%T*^LAz{Y14p0ZhfhQ$90>N-BNw`x(;vo}Zim-@1g&(wm|5!<2Osmtg^u|~#-ErVCHtk1I)ROTSa_C4x-}h}>&T2n zCwCQqQ#g_$<%2jrQWFb_+N=mlE|#vWMujY~Fg!!d?MR+HC+DG6Sf$K6B@BE{&xnuy zlW!TZ`^Uc9M$Fua-h~gEV3br5$XH~OEC~fEk|(A>rByL|O#`pp%~YjWd0iSZ#JIL_ zCR6Fui*q#;vLmS`f=ZPV1|cacxF9Q~KT8&7rSioDk@ogOkYs-p(xkxe)OtaH(=%(O z*>omCi=i4`CN&#z5DqhS-s-7w+l^c=#v4frWtYu(QkAw8kwQiaKS<)0k(20@rJB(`I&hO}Io+`Vkon-Ea~`ZoR`rXuD8x@|~KKev+@)fS)b- zW1)a1((<*&^*3=Kf-l+eJJi^4mdSEvpg!C}pTol7aPVN^d!zVegGCw3k{{0mD4#oU zkqUd7S(;daS%u}A!P2x@s}=rbC)s6-#VH&lJ3X^$qoQI3GZ7da5~wVdIvnTB;WRZ) zBk-Fp?3r}(r8k;LFp8SzmItR3KkO=X*f)PUSRHGOu<2>hOmLvgYTyelVxgh?#=L>u z0U}d=j?{1$Y7Q2qnZ6;JZSe`>**ugPvVDC93zn!8c+Co97;F~w#fbsE>~Knf6FN}{ zfz&BaUK}YUC1c7ZR9?ob)I&Sx8T`&3H1Sd1EU*`ez%S@8RY?b@bLk2aoc%D>;oXC? zzg!QHEF{Dx^MO$1jM=Ra{B}2bROMNdvo(WVVs6SC@X6{CtxD4u!XQT6kKjIP+>pgb zl0qO%prKQ<7Vlo+g>NnDNRXtC$W#m|7vhmVQWa6G`qBj?x_&^Z>$5M$Au_ugZJ)p5 zxm$Zi!D)9hYx@_QC-yNmhfdielOuE&LNmyGscm5n83l^c1Tk!5kLf_TdMP3v?_T0- zY`R#w7G3a*vEb8j_-L02m%SU!a-(o*FeF&|2y5h*#@n~UQ1pB#io?VFK6b~b4@4YT zX1%*eWG@}r$6IP`cr4!;aT5S9-{6H(M=%+!q*4MhmCBIJ7?q66jVwos-N)w$!%Ts7 z45B!E#R8LgOk^CoqBm;swT%=S7ck{tFWPZ{MgIs~v^uqwZ_#G*n~5o3ju@hOdvz$a{8 zyQ*J;F!yxq?E%0nF{&n|!tt|*li?}(GP&e%6+oa`H){|o>5Kd}|R AvH$=8 diff --git a/package.json b/package.json index 2a1a66d7..2e482492 100644 --- a/package.json +++ b/package.json @@ -1,101 +1,90 @@ { - "name": "rexreplace", - "version": "7.1.3-y", - "description": "Smoothly search & replace in files from CLI.", - "author": "Mathias Rangel Wulff", - "license": "MIT", - "type": "module", - "main": "src/engine.js", - "repository": { - "type": "git", - "url": "git+https://github.com/mathiasrw/rexreplace.git" - }, - "bin": { - "rr": "src/env/bun.ts", - "rexreplace_node": "bin/rexreplace.cli.js", - "rexreplace": "src/env/bun.ts" - }, - "scripts": { - "test": "yarn build && yarn test-cli && yarn test-js", - "postbuild": "cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", - "version": "yarn build-minify", - "build": "yarn build-only", - "build-only": "swc src/ -d dist/ && bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js ", - "build-minify": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.min.js --minify", - "prebuild": "rm -fr bin dist # && yarn format", - "test-js": "echo todo: async mocha", - "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", - "test-cli": "(true || (npm uninstall -g rexreplace && npm -g install ./)) && yarn test-cli-only", - "test-cli-only": "bash test/cli/run.sh", - "test-speed": "bash test/speed/run.sh", - "prepublishOnly": "yarn is-git-clean && git fetch && git rebase origin/main && yarn test-minify && yarn load-options && yarn bump", - "postpublish": "git push --tag && git push && (open https://github.com/mathiasrw/rexreplace/releases || 1)", - "load-options": "rr -h | rr 'Options:(.+)Examples:' _ -ms | rr '§n {26,}|§n§n *' ' ' | rr \"'\" '`' | rr '^ (-.+?), (--[^ ]+) *' '`€1` | **`€2`** ' | rr '(^---- . ----).+?(## Good to know)' '€1 + nl + pipe + nl + nl + €2' readme.md -jsT", - "test-format": "yarn prettier --list-different || (echo 'Please correct file formatting using `yarn format` and try again.' && exit 1)", - "format": "yarn prettier --write", - "prettier": "prettier '{src,test}/**/*.{scss,css,js,ts}'", - "bump": "bump --tag 'v%s' --all", - "is-git-clean": "(git diff --quiet --exit-code --cached && git diff --quiet --exit-code) || (echo Please commit or stash changes && exit 1)" - }, - "keywords": [ - "search", - "find", - "replace", - "regex", - "regexp", - "regular expression", - "sed" - ], - "devDependencies": { - "@rollup/plugin-buble": "1.0.2", - "@rollup/plugin-commonjs": "25.0.3", - "@rollup/plugin-node-resolve": "15.1.0", - "@rollup/plugin-replace": "5.0.2", - "@swc/cli": "^0.1.62", - "@swc/core": "^1.3.90", - "@types/node": "^20.6.2", - "@types/yargs": "^17.0.24", - "assert": "^2.0.0", - "bun-types": "^1.0.2", - "magic-string": "0.30.3", - "mocha": "10.2.0", - "prettier": "3.0.3", - "rollup": "2.79.1", - "rollup-plugin-closure-compiler-js": "^1.0.6", - "rollup-plugin-filesize": "9.1.2", - "rollup-plugin-hashbang": "2.2.2", - "rollup-plugin-preserve-shebang": "1.0.1", - "rollup-plugin-progress": "1.1.2", - "rollup-plugin-typescript3": "1.1.3", - "ts-node": "^10.9.1", - "typescript": "5.2.2", - "version-bump-prompt": "6.1.0", - "yarn": "1.22.19" - }, - "resolutions": { - "ansi-regex": "5.0.1", - "tough-cookie": "4.1.3" - }, - "directories": { - "test": "test" - }, - "dependencies": { - "chalk": "^5.3.0", - "fast-glob": "^3.3.1", - "fs-extra": "^11.1.1", - "globs": "0.1.4", - "yargs": "17.7.2" - }, - "prettier": { - "useTabs": true, - "printWidth": 100, - "singleQuote": true, - "arrowParens": "always", - "bracketSpacing": false, - "trailingComma": "es5" - }, - "bugs": { - "url": "https://github.com/mathiasrw/rexreplace/issues" - }, - "homepage": "https://github.com/mathiasrw/rexreplace#readme" -} \ No newline at end of file + "name": "rexreplace", + "version": "7.1.3-y", + "description": "Smoothly search & replace in files from CLI.", + "author": "Mathias Rangel Wulff", + "license": "MIT", + "type": "module", + "main": "src/engine.js", + "repository": { + "type": "git", + "url": "git+https://github.com/mathiasrw/rexreplace.git" + }, + "bin": { + "rr": "src/env/bun.ts", + "rexreplace_node": "bin/rexreplace.cli.js", + "rexreplace": "src/env/bun.ts" + }, + "scripts": { + "test": "yarn build && yarn test-cli && yarn test-js", + "version": "yarn build-minify", + "build": "yarn build-only", + "postbuild": "npx rexreplace@7 '^(#!.+\\n)?' '$1import { createRequire as createImportMetaRequire } from 'module'; import.meta.require ||= (id) => createImportMetaRequire(import.meta.url)(id);\\n' -GM bin/rexreplace.cli.js && cp bin/rexreplace.cli.js bin/rexreplace.cli.min.js", + "build-only": "swc src/ -d dist/ && bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.js ", + "build-minify": "bun build --target node src/env/node.ts --outfile bin/rexreplace.cli.min.js --minify", + "prebuild": "rm -fr bin dist # && yarn format", + "test-js": "echo todo: async mocha", + "test-minify": "yarn build-minify && yarn test-cli && yarn test-js", + "test-cli": "(true || (npm uninstall -g rexreplace && npm -g install ./)) && yarn test-cli-only", + "test-cli-only": "bash test/cli/run.sh", + "test-speed": "bash test/speed/run.sh", + "prepublishOnly": "yarn is-git-clean && git fetch && git rebase origin/main && yarn test-minify && yarn load-options && yarn bump", + "postpublish": "git push --tag && git push && (open https://github.com/mathiasrw/rexreplace/releases || 1)", + "load-options": "rr -h | rr 'Options:(.+)Examples:' _ -ms | rr '§n {26,}|§n§n *' ' ' | rr \"'\" '`' | rr '^ (-.+?), (--[^ ]+) *' '`€1` | **`€2`** ' | rr '(^---- . ----).+?(## Good to know)' '€1 + nl + pipe + nl + nl + €2' readme.md -jsT", + "test-format": "yarn prettier --list-different || (echo 'Please correct file formatting using `yarn format` and try again.' && exit 1)", + "format": "yarn prettier --write", + "prettier": "prettier '{src,test}/**/*.{scss,css,js,ts}'", + "bump": "bump --tag 'v%s' --all", + "is-git-clean": "(git diff --quiet --exit-code --cached && git diff --quiet --exit-code) || (echo Please commit or stash changes && exit 1)" + }, + "keywords": [ + "search", + "find", + "replace", + "regex", + "regexp", + "regular expression", + "sed" + ], + "devDependencies": { + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.90", + "@types/node": "^20.6.2", + "@types/yargs": "^17.0.24", + "assert": "^2.0.0", + "bun-types": "^1.0.2", + "magic-string": "0.30.3", + "mocha": "10.2.0", + "prettier": "3.0.3", + "ts-node": "^10.9.1", + "typescript": "5.2.2", + "version-bump-prompt": "6.1.0", + "yarn": "1.22.19" + }, + "resolutions": { + "ansi-regex": "5.0.1", + "tough-cookie": "4.1.3" + }, + "directories": { + "test": "test" + }, + "dependencies": { + "argmate": "../argmate", + "chalk": "^5.3.0", + "fast-glob": "^3.3.1", + "fs-extra": "^11.1.1", + "globs": "0.1.4" + }, + "prettier": { + "useTabs": true, + "printWidth": 100, + "singleQuote": true, + "arrowParens": "always", + "bracketSpacing": false, + "trailingComma": "es5" + }, + "bugs": { + "url": "https://github.com/mathiasrw/rexreplace/issues" + }, + "homepage": "https://github.com/mathiasrw/rexreplace#readme" +} diff --git a/src/cli.ts b/src/cli.ts index ec58f84f..e1946e66 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,13 +1,15 @@ /// import yargs from 'yargs'; - +import argMate, {helpText} from 'argmate'; import * as rexreplace from './engine.ts'; import {chat, debug, die, warn, info, outputConfig, step} from './output.ts'; const re = { nl: /\r?\n/, + + unescape: /'/g, }; //executeReplacement(cli2conf(process.argv.slice(2)), null); @@ -30,159 +32,174 @@ export function cli2conf(runtime: Runtime, args: string[]) { [pattern, replacement] = args.splice(0, 2); } - const argv = yargs(args) - .usage( - '$0 RexReplace v' + - rexreplace.version + - '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + - '> rexreplace pattern replacement [fileGlob|option]+' - ) - - .usage(`$0 > rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) - .usage(`$0 > rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) - - .example( - `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, - `'foobar' in myfile.md will become 'barfoo'` - ) - .example( - `> rexreplace '^#' '##' *.md`, - `All markdown files in this dir got all headlines moved one level deeper` - ) - .example( - `> rexreplace 'a' 'b' 'myfile.md' 'src/**/*.*' `, - `Provide multiple files or globs if needed` - ) - .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) - .alias('v', 'version') - .boolean('I') - .describe('I', 'Void case insensitive search pattern.') - .alias('I', 'void-ignore-case') - .boolean('G') - .describe('G', 'Void global search (stop looking after the first match).') - .alias('G', 'void-global') - .boolean('M') - .describe( - 'M', - 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.' - ) - .alias('M', 'void-multiline') - .boolean('s') - .describe('s', 'Have `.` also match newline.') - .alias('s', 'dot-all') - .boolean('u') - .describe('u', 'Treat pattern as a sequence of unicode code points.') - .alias('u', 'unicode') - .default('e', 'utf8') - .alias('e', 'encoding') - .describe('e', 'Encoding of files/piped data.') - .alias('E', 'engine') - .describe('E', 'What regex engine to use:') - .choices('E', ['V8' /*'RE2' /*'sd', 'stream'*/]) - .default('E', 'V8') - .boolean('L') - .describe('L', 'Literal string search (no regex used when searching)') - .alias('L', 'literal') - .boolean('€') - .describe('€', "Void having '€' as alias for '$' in pattern and replacement parameters") - .alias('€', 'void-euro') - .boolean('§') - .describe('§', "Void having '§' as alias for '\\' in pattern and replacement parameters") - .alias('§', 'void-section') - .boolean('A') - .alias('A', 'void-async') - .describe( - 'A', - `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` - ) - .boolean('H') - .describe('H', 'Halt on first error') - .alias('H', 'halt') - .alias('H', 'bail') - .default('H', false) - .boolean('q') - .describe('q', 'Only display errors (no other info)') - .alias('q', 'quiet') - .boolean('Q') - .describe('Q', 'Never display errors or info') - .alias('Q', 'quiet-total') - .boolean('B') - .describe( - 'B', - 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.' - ) - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep the backup file with the original content.') - .alias('b', 'keep-backup') - .boolean('o') - .describe( - 'o', - 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.' - ) - .alias('o', 'output') - //.conflicts('o','O') - - .boolean('m') - .describe( - 'm', - `Output each match on a new line. ` + - `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + - `If search pattern does not contain matching groups the full match will be outputted. ` + - `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + - `` - ) - .alias('m', 'output-match') - .boolean('T') - .alias('T', 'trim-pipe') - .describe( - 'T', - `Trim piped data before processing. ` + - `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + - '' - ) - .boolean('R') - .alias('R', 'replacement-pipe') - .describe( - 'R', - `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` - ) - .conflicts('R', 'g') - .conflicts('R', 'G') - .boolean('g') - .describe( - 'g', - 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt' - ) - .alias('g', 'glob-pipe') - .conflicts('g', 'G') - /* .boolean('G') + const argv = argMate( + args, + { + version: { + describe: 'Print rexreplace version (can be given as only argument)', + alias: 'v', + }, + + voidIgnoreCase: { + describe: 'Void case insensitive search pattern.', + alias: 'I', + }, + + voidGlobal: { + describe: 'Void global search (stop looking after the first match).', + alias: 'G', + }, + + voidMultiline: { + describe: + 'Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line.', + alias: 'M', + }, + + dotAll: { + alias: 's', + describe: 'Have `.` also match newline.', + }, + + unicode: { + describe: 'Treat pattern as a sequence of unicode code points.', + alias: 'u', + }, + + encoding: { + default: 'utf8', + alias: 'e', + describe: 'Encoding of files/piped data.', + }, + + engine: { + alias: 'E', + describe: 'What regex engine to use:', + default: 'V8', + valid: ['V8' /*'RE2' /*'sd', 'stream'*/], + }, + + literal: { + alias: 'L', + describe: 'Literal string search (no regex used when searching)', + }, + + voidEuro: { + alias: '€', + describe: "Void having '€' as alias for '$' in pattern and replacement parameters", + }, + + voidSection: { + alias: '§', + describe: "Void having '§' as alias for '\\' in pattern and replacement parameters", + }, + + voidAsync: { + alias: 'A', + describe: `Handle files in a synchronous flow. Good to limit memory usage when handling large files. `, + }, + + halt: { + alias: ['H', 'bail'], + describe: 'Halt on first error', + default: false, + }, + + quiet: { + alias: 'q', + describe: 'Only display errors (no other info)', + }, + + quietTotal: { + alias: 'Q', + describe: 'Never display any errors or info', + }, + + voidBackup: { + alias: 'B', + describe: + 'Avoid temporary backing up files. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you might lose data if the process is forced closed.', + }, + + keepBackup: { + describe: 'Keep the backup file with the original content.', + alias: 'b', + }, + + output: { + alias: 'o', + describe: + 'Output the final result instead of saving to file. Will output the full content even if no replacement has taken place.', + //conflict:'O' + }, + + outputMatch: { + alias: 'm', + describe: + `Output each match on a new line. ` + + `Will not replace any content but you still need to provide a dummy value (like \`_\`) as replacement parameter. ` + + `If search pattern does not contain matching groups the full match will be outputted. ` + + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + + ``, + }, + + trimPipe: { + alias: 'T', + describe: + `Trim piped data before processing. ` + + `If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. ` + + '', + }, + + replacementPipe: { + alias: 'R', + describe: `Replacement is being piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.`, + conflict: ['g', 'G'], + }, + + globPipe: { + alias: 'g', + describe: + 'Filename/globs will be piped in. If filename/globs are provided in command (-X flags are ok) the execution will halt', + conflict: ['G'], + }, + + /* .boolean('G') .describe('G', "filename/globs provided are to files containing one target filename/glob per line") .alias('G', 'glob-file') .conflicts('G','g')*/ - .boolean('S') - .describe('S', 'Simulate output without changing any files') - .alias('S', 'simulate') - .string('x') - .describe( - 'x', - 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.' - ) - .alias('x', 'exclude-re') - .string('X') - .describe('X', 'Exclude files found with this glob. Can be used multiple times.') - .alias('X', 'exclude-glob') - .boolean('V') - .describe('V', 'More chatty output') - .alias('V', 'verbose') - .boolean('d') - .describe('d', 'Print debug info') - .alias('d', 'debug') - //.conflicts('V', 'q') - //.conflicts('V', 'Q') - - /* + simulate: { + alias: 'S', + describe: 'Simulate output without changing any files', + }, + + excludeRe: { + alias: 'x', + decsribe: + 'Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times.', + type: 'string[]', + }, + + excludeGlob: { + alias: 'X', + decsribe: 'Exclude files found with this glob. Can be used multiple times.', + type: 'string[]', + }, + + verbose: { + alias: 'V', + descrube: 'More chatty output', + }, + + debug: { + alias: 'd', + describe: 'Print debug info', + //.conflicts('V', 'q') + //.conflicts('V', 'Q') + }, + + /* -T (Expect no match in any file and return exit 1 if found) @@ -237,12 +254,10 @@ export function cli2conf(runtime: Runtime, args: string[]) { */ - .boolean('j') - .alias('j', 'replacement-js') - .alias('j', 'js') - .describe( - 'j', - `Treat replacement as javascript source code. + replacementJs: { + alias: ['j', 'js'], + + describe: `Treat replacement as javascript source code. The statement from the last expression will become the replacement string. Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted party. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. @@ -280,35 +295,60 @@ export function cli2conf(runtime: Runtime, args: string[]) { \`ctime_obj\`: date object representing \`ctime\`. All variables, except from module, date objects, \`nl\` and \`_\`, has a corresponding variable name followed by \`_\` where the content has an extra space at the end (for easy concatenation). - `.replaceAll(/\s+/g, ' ') + `.replaceAll(/\s+/g, ' '), + }, + + help: { + alias: 'h', + descriubie: 'Display help.', + }, + }, + { + /* +intro: usage( + '$0 v' + + rexreplace.version + + '\n\nRegexp search and replace for files using lookahead and backreference to matching groups in the replacement. Defaults to global multiline case-insensitive search.\n\n' + + '> rexreplace pattern replacement [fileGlob|option]+' + )*/ + /* + +outro: + .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) + .example(`> rr xxx Foo myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + + .example( + `> rexreplace '(f?(o))o(.*)' '$3$1€2' myfile.md`, + `'foobar' in myfile.md will become 'barfoo'` + ) + .example( + `> rexreplace '^#' '##' *.md`, + `All markdown files in this dir got all headlines moved one level deeper` ) - .help('h') - .describe('h', 'Display help.') - .alias('h', 'help') + .example( + `> rexreplace 'a' 'b' 'myfile.md' 'src/** /*.*' `, + `Provide multiple files or globs if needed` + ) + .epilog(`Inspiration: .oO(What should 'sed' have been by now?)`) - .strict().argv; + +*/ + } + ); // All options into one big config object for the rexreplace engine let conf: any = {}; - // Use only camelCase full lenght version of settings - Object.keys(argv).forEach((key) => { - if (1 < key.length && key.indexOf('-') < 0) { - conf[key] = argv[key]; - } - }); - - conf.showHelp = yargs.showHelp; + conf.showHelp = () => { + console.log(helpText()); + process.exit(); + }; conf.needHelp = needHelp; conf.pattern = pattern; conf.replacement = replacement; conf.includeGlob = argv._; - conf.excludeGlob = ( - Array.isArray(argv.excludeGlob) ? argv.excludeGlob : [argv.excludeGlob] - ).filter(Boolean); - conf.excludeRe = (Array.isArray(argv.excludeRe) ? argv.excludeRe : [argv.excludeRe]).filter( - Boolean - ); + conf.excludeGlob = argv.excludeGlob.filter(Boolean); + conf.excludeRe = argv.excludeRe.filter(Boolean); if (!conf.replacementJs) { conf.replacement = unescapeString(conf.replacement); @@ -318,7 +358,7 @@ export function cli2conf(runtime: Runtime, args: string[]) { } function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); + return new Function(`return '${str.replace(re.unescape, "\\'")}'`)(); } export function executeReplacement(runtime: Runtime, conf, pipeData: string = null) { @@ -360,18 +400,17 @@ export function executeReplacement(runtime: Runtime, conf, pipeData: string = nu return die('Please pipe file/globs to include OR provide them as as parameters. Not both.'); } - conf.globs = pipeData.split(/\r?\n/).filter(Boolean); + conf.globs = pipeData.split(re.nl).filter(Boolean); if (conf.replacementJs) conf.pipeData = pipeData; return rexreplace.engine(runtime, conf); } - if (conf.includeGlob.length) { - if ('' !== pipeData && '\n' !== pipeData) - return warn( - `${conf.includeGlob.length} file paths / globs provided. \n Data is also being piped to the command with no flags indicating how to treat it.\n Pipe data will be ignored, but check if this is actually what you intended to do.` - ); + if (conf.includeGlob.length && !conf.replacementJs && '' !== pipeData && '\n' !== pipeData) { + return warn( + `${conf.includeGlob.length} file paths / globs provided. \n Data is also being piped in, but with no flags indicating how to deal with it.\n Pipe data will be ignored for now, but check if this is actually what you intended to do.` + ); } step('Content being piped'); diff --git a/src/output.ts b/src/output.ts index fdc7c924..c481bb8a 100644 --- a/src/output.ts +++ b/src/output.ts @@ -40,7 +40,7 @@ export const error = function (msg, data = '') { export const warn = function (msg, data = '') { if (!conf?.quiet && !conf?.quietTotal) { - console.error.apply(this, [' 🟡', font.yellow(msg), data].filter(Boolean)); + console.warn.apply(this, [' 🟡', font.yellow(msg), data].filter(Boolean)); } return false; diff --git a/yarn.lock b/yarn.lock index b990d2a5..ee52b104 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,6 @@ # yarn lockfile v1 -"@babel/runtime@^7.13.8": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" - integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== - dependencies: - regenerator-runtime "^0.14.0" - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -16,39 +9,12 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.0.3": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -61,14 +27,6 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - "@jsdevtools/ez-spawn@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz#5641eb26fee6d31ec29f6788eba849470c52c7ff" @@ -128,116 +86,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== - dependencies: - "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" - mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" - -"@npmcli/installed-package-contents@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== - dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/node-gyp@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" - integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== - -"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== - dependencies: - infer-owner "^1.0.4" - -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== - dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" - read-package-json-fast "^2.0.1" - -"@rollup/plugin-buble@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-1.0.2.tgz#30af390341b0888490f781fcf17e469198d118a2" - integrity sha512-Hz9+AigRWwS93vmorrVrhyG9SdSCZAkBDx614w09iFQYFUAP2HmdUrQyZsb1WO2n+iDvPFznrTE16la+eGNcEQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/buble" "^0.19.2" - buble "^0.20.0" - -"@rollup/plugin-commonjs@25.0.3": - version "25.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz#eb5217ebae43d63a172b516655be270ed258bdcc" - integrity sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA== - dependencies: - "@rollup/pluginutils" "^5.0.1" - commondir "^1.0.1" - estree-walker "^2.0.2" - glob "^8.0.3" - is-reference "1.2.1" - magic-string "^0.27.0" - -"@rollup/plugin-node-resolve@15.1.0": - version "15.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz#9ffcd8e8c457080dba89bb9fcb583a6778dc757e" - integrity sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/resolve" "1.20.2" - deepmerge "^4.2.2" - is-builtin-module "^3.2.1" - is-module "^1.0.0" - resolve "^1.22.1" - -"@rollup/plugin-replace@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d" - integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== - dependencies: - "@rollup/pluginutils" "^5.0.1" - magic-string "^0.27.0" - -"@rollup/pluginutils@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.4.tgz#74f808f9053d33bafec0cc98e7b835c9667d32ba" - integrity sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - "@sindresorhus/is@^4.0.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" @@ -255,79 +103,79 @@ slash "3.0.0" source-map "^0.7.3" -"@swc/core-darwin-arm64@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.90.tgz#5eb85b4911c6e1a8a082711b7ef3d4be3f86163f" - integrity sha512-he0w74HvcoufE6CZrB/U/VGVbc7021IQvYrn1geMACnq/OqMBqjdczNtdNfJAy87LZ4AOUjHDKEIjsZZu7o8nQ== - -"@swc/core-darwin-x64@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.90.tgz#e6d5c2118c6ad060f58ce9c7d246cf4c30420516" - integrity sha512-hKNM0Ix0qMlAamPe0HUfaAhQVbZEL5uK6Iw8v9ew0FtVB4v7EifQ9n41wh+yCj0CjcHBPEBbQU0P6mNTxJu/RQ== - -"@swc/core-linux-arm-gnueabihf@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.90.tgz#02cfecb0e5f3457e64e81eca70337c6dadba864d" - integrity sha512-HumvtrqTWE8rlFuKt7If0ZL7145H/jVc4AeziVjcd+/ajpqub7IyfrLCYd5PmKMtfeSVDMsxjG0BJ0HLRxrTJA== - -"@swc/core-linux-arm64-gnu@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.90.tgz#1ed87e65facc446880f5753fb89951da418f6ff5" - integrity sha512-tA7DqCS7YCwngwXZQeqQhhMm8BbydpaABw8Z/EDQ7KPK1iZ1rNjZw+aWvSpmNmEGmH1RmQ9QDS9mGRDp0faAeg== - -"@swc/core-linux-arm64-musl@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.90.tgz#531edd90f46aa7282e919178633f483f7ba073d6" - integrity sha512-p2Vtid5BZA36fJkNUwk5HP+HJlKgTru+Ghna7pRe45ghKkkRIUk3fhkgudEvfKfhT+3AvP+GTVQ+T9k0gc9S8w== - -"@swc/core-linux-x64-gnu@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.90.tgz#7b3937570964e290a0f382353d88fe8421ceb470" - integrity sha512-J6pDtWaulYGXuANERuvv4CqmUbZOQrRZBCRQGZQJ6a86RWpesZqckBelnYx48wYmkgvMkF95Y3xbI3WTfoSHzw== - -"@swc/core-linux-x64-musl@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.90.tgz#ae042d8dc84e086954a26308e4bccf6f38c1dafe" - integrity sha512-3Gh6EA3+0K+l3MqnRON7h5bZ32xLmfcVM6QiHHJ9dBttq7YOEeEoMOCdIPMaQxJmK1VfLgZCsPYRd66MhvUSkw== - -"@swc/core-win32-arm64-msvc@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.90.tgz#4952413bae4c5dbd7c150f7a626556fc6a2a3525" - integrity sha512-BNaw/iJloDyaNOFV23Sr53ULlnbmzSoerTJ10v0TjSZOEIpsS0Rw6xOK1iI0voDJnRXeZeWRSxEC9DhefNtN/g== - -"@swc/core-win32-ia32-msvc@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.90.tgz#ea5d417d3085dc521e6be6ecaef8c6ca59c4e5ec" - integrity sha512-SiyTethWAheE/JbxXCukAAciU//PLcmVZ2ME92MRuLMLmOhrwksjbaa7ukj9WEF3LWrherhSqTXnpj3VC1l/qw== - -"@swc/core-win32-x64-msvc@1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.90.tgz#af770b063fe7f32488a87cf0a9777e11932f7a3a" - integrity sha512-OpWAW5ljKcPJ3SQ0pUuKqYfwXv7ssIhVgrH9XP9ONtdgXKWZRL9hqJQkcL55FARw/gDjKanoCM47wsTNQL+ZZA== +"@swc/core-darwin-arm64@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz#3bb751899cd208be261c48190b75c87171be79b4" + integrity sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w== + +"@swc/core-darwin-x64@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz#9860087421ac258f59c5aaede4b76dfe680bb28d" + integrity sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ== + +"@swc/core-linux-arm-gnueabihf@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz#ed321346fea49cc07cdb1217b3ae5c7f3f8ba7ae" + integrity sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ== + +"@swc/core-linux-arm64-gnu@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz#bdabe0364f2851f7c1446a5da82b2ccc2a021f65" + integrity sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw== + +"@swc/core-linux-arm64-musl@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz#e9e14a8f228bddc68ffc5ab4495000ae8a56ced2" + integrity sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ== + +"@swc/core-linux-x64-gnu@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz#283baa984b370944cec8fe4a3a64a756cc40cccc" + integrity sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw== + +"@swc/core-linux-x64-musl@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz#18d3e773d150061aa2210149d4abff56ff1465fc" + integrity sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ== + +"@swc/core-win32-arm64-msvc@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz#85a1d2b5c6292c98865ebbc2ad07be23e6869005" + integrity sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA== + +"@swc/core-win32-ia32-msvc@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz#023501d012e3993933e06a9874e5568d38fbdb24" + integrity sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ== + +"@swc/core-win32-x64-msvc@1.3.91": + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz#a70898460d3a91e59d14c4a0a1e772fb00643d11" + integrity sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ== "@swc/core@^1.3.90": - version "1.3.90" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.90.tgz#ef43524b76ef04798e6afb01d90347f4f51de136" - integrity sha512-wptBxP4PldOnhmyDVj8qUcn++GRqyw1qc9wOTGtPNHz8cpuTfdfIgYGlhI4La0UYqecuaaIfLfokyuNePOMHPg== + version "1.3.91" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.91.tgz#4d7978846da67bfbe20486574d07f204d6891805" + integrity sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA== dependencies: "@swc/counter" "^0.1.1" "@swc/types" "^0.1.5" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.90" - "@swc/core-darwin-x64" "1.3.90" - "@swc/core-linux-arm-gnueabihf" "1.3.90" - "@swc/core-linux-arm64-gnu" "1.3.90" - "@swc/core-linux-arm64-musl" "1.3.90" - "@swc/core-linux-x64-gnu" "1.3.90" - "@swc/core-linux-x64-musl" "1.3.90" - "@swc/core-win32-arm64-msvc" "1.3.90" - "@swc/core-win32-ia32-msvc" "1.3.90" - "@swc/core-win32-x64-msvc" "1.3.90" + "@swc/core-darwin-arm64" "1.3.91" + "@swc/core-darwin-x64" "1.3.91" + "@swc/core-linux-arm-gnueabihf" "1.3.91" + "@swc/core-linux-arm64-gnu" "1.3.91" + "@swc/core-linux-arm64-musl" "1.3.91" + "@swc/core-linux-x64-gnu" "1.3.91" + "@swc/core-linux-x64-musl" "1.3.91" + "@swc/core-win32-arm64-msvc" "1.3.91" + "@swc/core-win32-ia32-msvc" "1.3.91" + "@swc/core-win32-x64-msvc" "1.3.91" "@swc/counter@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.1.tgz#e8d066c653883238c291d8fdd8b36ed932e87920" - integrity sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw== + version "0.1.2" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e" + integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== "@swc/types@^0.1.5": version "0.1.5" @@ -346,11 +194,6 @@ resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -371,13 +214,6 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@types/buble@^0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" - integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q== - dependencies: - magic-string "^0.25.0" - "@types/cacheable-request@^6.0.1": version "6.0.3" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" @@ -388,11 +224,6 @@ "@types/node" "*" "@types/responselike" "^1.0.0" -"@types/estree@*", "@types/estree@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" - integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== - "@types/http-cache-semantics@*": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" @@ -406,14 +237,9 @@ "@types/node" "*" "@types/node@*", "@types/node@^20.6.2": - version "20.7.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514" - integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg== - -"@types/resolve@1.20.2": - version "1.20.2" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" - integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + version "20.8.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.2.tgz#d76fb80d87d0d8abfe334fc6d292e83e5524efc4" + integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== "@types/responselike@^1.0.0": version "1.0.1" @@ -434,75 +260,16 @@ dependencies: "@types/yargs-parser" "*" -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - -acorn-jsx@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^8.4.1, acorn@^8.8.2: +acorn@^8.4.1: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agentkeepalive@^4.1.3: - version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" - integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.12.3: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -515,18 +282,11 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@5.0.1, ansi-regex@^2.0.0, ansi-regex@^5.0.1: +ansi-regex@5.0.1, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -542,29 +302,19 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arch@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +argmate@../argmate: + version "0.3.0" + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -580,18 +330,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - assert@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" @@ -603,38 +341,16 @@ assert@^2.0.0: object.assign "^4.1.4" util "^0.12.5" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - bin-check@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" @@ -665,20 +381,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -701,74 +403,15 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brotli-size@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" - integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== - dependencies: - duplexer "0.1.1" - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -buble@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f" - integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw== - dependencies: - acorn "^6.4.1" - acorn-dynamic-import "^4.0.0" - acorn-jsx "^5.2.0" - chalk "^2.4.2" - magic-string "^0.25.7" - minimist "^1.2.5" - regexpu-core "4.5.4" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - bun-types@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/bun-types/-/bun-types-1.0.3.tgz#a39cab751be5c881bf757afc5d9e9c7ff7a797d8" - integrity sha512-XlyKVdYCHa7K5PHYGcwOVOrGE/bMnLS51y7zFA3ZAAXyiQ6dTaNXNCWTTufgII/6ruN770uhAXphQmzvU/r2fQ== - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/bun-types/-/bun-types-1.0.4.tgz#ab985721abf28ac1f54fcb36a6cad551b8603f3d" + integrity sha512-MIXp8MXPqzjjDrBs2fNzODFgFB+Mkl/OdTsPjYaefRoBt+Bk8VEJc3S1bbs6pvBi/wCpPf/ZSmzfIyZ5w4gAMg== cacheable-lookup@^5.0.3: version "5.0.4" @@ -801,25 +444,11 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== -camelcase@^6.0.0, camelcase@^6.2.0: +camelcase@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -853,21 +482,6 @@ chokidar@3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -889,15 +503,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - clone-response@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" @@ -905,18 +510,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -924,28 +517,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colors@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - command-line-args@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" @@ -956,31 +532,16 @@ command-line-args@^5.1.1: lodash.camelcase "^4.3.0" typical "^4.0.0" -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - content-disposition@^0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -988,16 +549,6 @@ content-disposition@^0.5.4: dependencies: safe-buffer "5.2.1" -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -1021,14 +572,7 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -debug@4, debug@4.3.4, debug@^4.3.3: +debug@4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1047,11 +591,6 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" @@ -1075,16 +614,6 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" @@ -1112,36 +641,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -duplexer@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -1149,16 +653,6 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1179,11 +673,6 @@ escape-string-regexp@^5.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -1234,11 +723,6 @@ ext-name@^5.0.0: ext-list "^2.0.0" sort-keys-length "^1.0.0" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -1248,21 +732,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" @@ -1274,11 +743,6 @@ fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -1316,11 +780,6 @@ filenamify@^5.0.2: strip-outer "^2.0.0" trim-repeated "^2.0.0" -filesize@^6.1.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" - integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1362,20 +821,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - fs-extra@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" @@ -1385,13 +830,6 @@ fs-extra@^11.1.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1407,20 +845,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -1453,13 +877,6 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1479,7 +896,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1491,17 +908,6 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - globby@^11.0.1: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -1521,11 +927,6 @@ globs@0.1.4: dependencies: glob "^7.1.1" -google-closure-compiler-js@>20170000: - version "20200719.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200719.0.0.tgz#a7ce8f0a450973018d91fa2b377a3906ce0f7da9" - integrity sha512-cuowL5A4VOx9yxxMc3sSiqcj/d9aYjnHgFDvDB/dpMMOhlUMN1MDsVubuEc32tut7k/FTYFZY114CLH4r2q9/A== - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -1550,36 +951,11 @@ got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: +graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -1609,53 +985,21 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -1664,26 +1008,11 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -1691,45 +1020,16 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1738,7 +1038,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1762,11 +1062,6 @@ inquirer@^7.3.3: strip-ansi "^6.0.0" through "^2.3.6" -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - is-arguments@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -1782,37 +1077,16 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - is-callable@^1.1.3: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== - dependencies: - has "^1.0.3" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -1832,16 +1106,6 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - is-nan@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -1865,13 +1129,6 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-reference@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -1889,31 +1146,16 @@ is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.11" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -1921,41 +1163,11 @@ js-yaml@4.1.0: dependencies: argparse "^2.0.1" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -1965,21 +1177,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - keyv@^4.0.0: version "4.5.3" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" @@ -2039,54 +1236,11 @@ magic-string@0.30.3: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -magic-string@^0.22.4: - version "0.22.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== - dependencies: - vlq "^0.2.2" - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -2105,18 +1259,11 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, mime-db@^1.28.0: +mime-db@^1.28.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -2146,90 +1293,6 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.5: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.0.0, minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mocha@10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" @@ -2262,7 +1325,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0: +ms@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -2277,34 +1340,6 @@ nanoid@3.3.3: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== -negotiator@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -2315,66 +1350,6 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== - dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== - dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" - -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== - dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2389,31 +1364,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -2487,38 +1437,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -pacote@^11.2.7: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" - promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2539,11 +1457,6 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -2554,11 +1467,6 @@ peek-readable@^5.0.0: resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec" integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -2574,24 +1482,6 @@ prettier@3.0.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -2610,16 +1500,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -2642,27 +1527,6 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -read-package-json-fast@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -readable-stream@^2.0.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -2686,73 +1550,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regenerate-unicode-properties@^8.0.2: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regexpu-core@4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -regjsgen@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.0: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== - dependencies: - jsesc "~0.5.0" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -2768,15 +1565,6 @@ resolve-alpn@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== -resolve@^1.22.1: - version "1.22.6" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" - integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - responselike@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" @@ -2792,80 +1580,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup-plugin-closure-compiler-js@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/rollup-plugin-closure-compiler-js/-/rollup-plugin-closure-compiler-js-1.0.6.tgz#58e3e31297ad1a532d9114108bc06f2756d72c3d" - integrity sha512-fgTlW26jOg5Mkm5+mDr/xst1ZyuH7JBU7KvJfys4C7wU7ymPyaofZsNpBeDnHzE7MVD2YcDjZbOU+M8dUJjG2A== - dependencies: - google-closure-compiler-js ">20170000" - -rollup-plugin-filesize@9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz#958eea26880698d0bc008fa9d214657ee180b934" - integrity sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6bsrotlvo2bvrwPsjgT7scNdQSr6qtl37A== - dependencies: - "@babel/runtime" "^7.13.8" - boxen "^5.0.0" - brotli-size "4.0.0" - colors "1.4.0" - filesize "^6.1.0" - gzip-size "^6.0.0" - pacote "^11.2.7" - terser "^5.6.0" - -rollup-plugin-hashbang@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-hashbang/-/rollup-plugin-hashbang-2.2.2.tgz#971fc49b452e63f9dfdc75f79ae7256b3485e750" - integrity sha512-Yxw9ogeK3KncG1e4CvK0I0IKVBNeJP+DTZS3bExGTfGjw0WP1C7xxbY7LtRd8IKx4fFf53hz7XR1XG7UV6xqCw== - dependencies: - magic-string "^0.22.4" - -rollup-plugin-preserve-shebang@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-shebang/-/rollup-plugin-preserve-shebang-1.0.1.tgz#17109cdb4ed12c3cac9379b802182427cdbee5a1" - integrity sha512-gk7ExGBqvUinhgrvldKHkAKXXwRkWMXMZymNkrtn50uBgHITlhRjhnKmbNGwAIc4Bzgl3yLv7/8Fhi/XeHhFKg== - dependencies: - magic-string "^0.25.7" - -rollup-plugin-progress@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-progress/-/rollup-plugin-progress-1.1.2.tgz#5c1dfe7c50f654906bc34d167d5512ee1a4b72d5" - integrity sha512-6ehSZOMTZdAlRpe45kf56BnIOsDYC2GKWhGlK/Dh/Ae/AMUneMDyKdiv9ZlRrW/HVc986frTZcc2Zka+oF6W7Q== - dependencies: - chalk "^2.4.2" - -rollup-plugin-typescript3@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-1.1.3.tgz#028200b5bd8a2500bc7de0f6959ef03f064ece5e" - integrity sha512-hSCoDlNmDr2L1zYWoQC4IJu+aFhPdAhTgn7KK+DaV2ydbKH+SVtl/ANiBqFMIrZdAmLdVrTgmFhB6Vq0IxRMog== - dependencies: - glob "^7.1.6" - tslib "^2.1.0" - -rollup@2.79.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== - optionalDependencies: - fsevents "~2.3.2" - run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -2885,17 +1604,12 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -2912,7 +1626,7 @@ semver-truncate@^3.0.0: dependencies: semver "^7.3.5" -semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -2926,11 +1640,6 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -2965,28 +1674,6 @@ slash@3.0.0, slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" @@ -3001,66 +1688,17 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@^0.7.3: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - string-argv@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3076,20 +1714,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -3132,13 +1756,6 @@ supports-color@8.1.1: dependencies: has-flag "^4.0.0" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -3146,33 +1763,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tar@^6.0.2, tar@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -terser@^5.6.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.20.0.tgz#ea42aea62578703e33def47d5c5b93c49772423e" - integrity sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -3200,7 +1790,7 @@ token-types@^5.0.0-alpha.2: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" -tough-cookie@4.1.3, tough-cookie@~2.5.0: +tough-cookie@4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -3241,33 +1831,11 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -3283,43 +1851,6 @@ typical@^4.0.0: resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -3330,13 +1861,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -3345,7 +1869,7 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -3361,32 +1885,11 @@ util@^0.12.5: is-typed-array "^1.1.3" which-typed-array "^1.1.2" -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - version-bump-prompt@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz#9f57b9bf3e57ee87f43929ff4f3f2123be07ccdb" @@ -3394,11 +1897,6 @@ version-bump-prompt@6.1.0: dependencies: "@jsdevtools/version-bump-prompt" "6.1.0" -vlq@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== - which-typed-array@^1.1.11, which-typed-array@^1.1.2: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" @@ -3417,27 +1915,13 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - workerpool@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" @@ -3482,11 +1966,6 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -3510,19 +1989,6 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yarn@1.22.19: version "1.22.19" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" From f235367506425c1421f52878fe5b3176b86a7cb0 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Thu, 8 Aug 2024 13:30:47 +1000 Subject: [PATCH 16/17] Add anecdote to readme --- README.md | 256 ++++++++++++++++++++++++------------------------------ 1 file changed, 112 insertions(+), 144 deletions(-) diff --git a/README.md b/README.md index cf6218ac..87834b3c 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,3 @@ - - - - -[![CI-test](https://github.com/mathiasrw/rexreplace/workflows/CI-test/badge.svg)](https://github.com/mathiasrw/rexreplace/actions) -[![NPM downloads](https://img.shields.io/npm/dm/rexreplace.svg?style=flat&label=npm%20downloads)](https://npm-stat.com/charts.html?package=rexreplace) -[![npm version](https://badge.fury.io/js/rexreplace.svg)](https://www.npmjs.com/package/rexreplace) -[![FOSSA Status](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmathiasrw%2Frexreplace?ref=badge_shield) -[![OPEN open source software](https://img.shields.io/badge/Open--OSS-%E2%9C%94-brightgreen.svg)](http://open-oss.com) - - -


RexReplace mascot Benny on the RexReplace logo @@ -18,13 +6,15 @@

---- - # RexReplace +[![CI-test](https://github.com/mathiasrw/rexreplace/workflows/CI-test/badge.svg)](https://github.com/mathiasrw/rexreplace/actions) +[![NPM downloads](https://img.shields.io/npm/dm/rexreplace.svg?style=flat&label=npm%20downloads)](https://npm-stat.com/charts.html?package=rexreplace) +[![npm version](https://badge.fury.io/js/rexreplace.svg)](https://www.npmjs.com/package/rexreplace) +[![FOSSA Status](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmathiasrw%2Frexreplace?ref=badge_shield) +[![OPEN open source software](https://img.shields.io/badge/Open--OSS-%E2%9C%94-brightgreen.svg)](http://open-oss.com) - -RexReplace is a versatile tool to search and replace text in files from the command line. Its inspired by how developers often need to do quick fixes or one-liners for build scripts. +RexReplace is a versatile tool to search and replace text in files from the command line. It's inspired by how developers often need to do quick fixes or one-liners for build scripts. **Key features**: @@ -33,9 +23,8 @@ RexReplace is a versatile tool to search and replace text in files from the comm - Pinpoint the exact files with [glob notation](https://www.tcl.tk/man/tcl8.5/tutorial/Tcl16a.html) (`docs/*.md` represents each markdown file in `docs/`) - No more brute-forcing the right combination of `find`, `cat`, `sed`, `tr`, and `awk` to replace a text pattern in the right files - - ## Install + To use RexReplace from your command line ```bash @@ -44,18 +33,15 @@ To use RexReplace from your command line To use RexReplace from an npm build script: - ```bash > yarn add rexreplace --dev # or > npm install rexreplace --save-dev ``` - - ## Examples -Let 'foobar' become 'xxxbar' in myfile.md +Let 'foobar' become 'xxxbar' in myfile.md ```bash > rexreplace 'Foo' 'xxx' myfile.md @@ -67,68 +53,61 @@ Hard for your fingers to write on your keyboard? We got you covered with the `rr > rr Foo xxx myfile.md ``` +--- ----- - -#### Catch the beginning +#### Catch the beginning Let all markdown files in the `docs/` dir get headlines moved one level deeper ```bash -> rexreplace '^#' '##' docs/*.md +> rexreplace '^#' '##' docs/*.md ``` - - ---- + +--- #### Using glob notation to pinpoint files -Fix a spell error in all javascript and typescript files in the folders `src/` and `test/` recursively. +Fix a spell error in all javascript and typescript files in the folders `src/` and `test/` recursively. ```bash > rexreplace 'foubar' 'foobar' '{src,test}/**/*.{js,ts}' ``` - ----- - +--- #### Dynamically generated content Let the version number from package.json get into your distribution js files (use the string `VERSION` in your source files). - + ```bash -> rexreplace 'VERSION' 'require("./package.json").version' -j dist/*.js +> rexreplace 'VERSION' 'require("./package.json").version' -j dist/*.js ``` -Require have been given the alias `r` and both are expanded to understand relative paths even without `./` prepended. As the file extension is not needed eighter you will get the same result writing: +Require have been given the alias `r` and both are expanded to understand relative paths even without `./` prepended. As the file extension is not needed eighter you will get the same result writing: ```bash -> rexreplace 'VERSION' 'r("package").version' -j dist/*.js +> rexreplace 'VERSION' 'r("package").version' -j dist/*.js ``` - #### Reference a matching group -Let 'foobar' become 'barfoo' in myfile.md +Let 'foobar' become 'barfoo' in myfile.md ```bash > rexreplace '(foo)(.*)' '$2$1' myfile.md ``` - RexReplace defaults to treating `€` as an alias for `$` so the following will do the same as the previous example ```bash -> rexreplace '(foo)(.*)' '€2€1' myfile.md +> rexreplace '(foo)(.*)' '€2€1' myfile.md ``` - - ----- +--- #### Surviving backslash-escape hell -Let `foo[bar]` become `foo.0.[bar]` in myfile.md +Let `foo[bar]` become `foo.0.[bar]` in myfile.md ```bash > rexreplace '\[' '.0.[' myfile.md @@ -142,7 +121,6 @@ The `[` as a literate char must be escaped according to regex. If you run the co } ``` - RexReplace defaults to treating `§` as an alias for `\` so the following give same result: ```bash @@ -155,19 +133,16 @@ RexReplace defaults to treating `§` as an alias for `\` so the following give s } ``` +--- - ----- - - -#### More relevant examples +#### More relevant examples **Per file info** Add creation time, name of the file and human readable file size as the first line in each file in `test-run` recursively. ```bash -> rexreplace '^' 'ctime_ + name_ + size + nl' -j -M 'dist/**/*.*' +> rexreplace '^' 'ctime_ + name_ + size + nl' -j -M 'dist/**/*.*' ``` **Matching pairs** @@ -178,97 +153,92 @@ Let both `"foo 'is' bar"` and `' foo "was" bar'` ' become `» foo ... bar «` in > rexreplace '(['"])([^\1]+)\1' '» $2 «' myfile.md ``` +--- ----- - +## Usage -## Usage ```bash > rexreplace pattern replacement [fileGlob|option]+ ``` - -Flag | Effect ----- | ---- -`-v` | **`--version`** Print rexreplace version (can be given as only argument) [boolean] -`-V` | **`--verbose`** More chatty output [boolean] -`-L` | **`--literal`** Literal string search (no regex used when searching) [boolean] -`-I` | **`--void-ignore-case`** Void case insensitive search pattern. [boolean] -`-G` | **`--void-global`** Void global search (stop looking after the first match). [boolean] -`-s` | **`--dot-all`** Have `.` also match newline. [boolean] -`-M` | **`--void-multiline`** Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line. [boolean] -`-u` | **`--unicode`** Treat pattern as a sequence of unicode code points. [boolean] -`-e` | **`--encoding`** Encoding of files/piped data. [default: "utf8"] -`-E` | **`--engine`** What regex engine to use: [choices: "V8"] [default: "V8"] -`-q` | **`--quiet`** Only display errors (no other info) [boolean] -`-Q` | **`--quiet-total`** Never display errors or info [boolean] -`-H` | **`--halt`** Halt on first error [boolean] [default: false] -`-d` | **`--debug`** Print debug info [boolean] -`-€` | **`--void-euro`** Void having `€` as alias for `$` in pattern and replacement parameters [boolean] -`-§` | **`--void-section`** Void having `§` as alias for `\` in pattern and replacement parameters [boolean] -`-o` | **`--output`** Output the final result instead of saving to file. Will also output content even if no replacement has taken place. [boolean] -`-A` | **`--void-async`** Handle files in a synchronous flow. Good to limit memory usage when handling large files. [boolean] -`-B` | **`--void-backup`** Avoid temporary backing up file. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you will lose the content if the process is abrupted. [boolean] -`-b` | **`--keep-backup`** Keep a backup file of the original content. [boolean] -`-m` | **`--output-match`** Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern does contain matching groups only matching groups will be outputted (same line with no delimiter). [boolean] -`-T` | **`--trim-pipe`** Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. [boolean] -`-R` | **`--replacement-pipe`** Replacement will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter. [boolean] -`-j` | **`--replacement-js`** Treat replacement as javascript source code. The statement from the last expression will become the replacement string. Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. The code has access to the following variables: `r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, `fs` from node, `path` from node, `globs` from npm, `pipe`: the data piped into the command (null if no piped data), `find`: pattern searched for (the needle), `text`: full text being searched i.e. file content or piped data (the haystack), `bytes`: total size of the haystack in bytes, `size`: human-friendly representation of the total size of the haystack, `time`: String representing the local time when the command was invoked, `time_obj`: date object representing `time`, `now`: alias for `time`, `cwd`: current process working dir, `nl`: a new-line char, `_`: a single space char (for easy string concatenation). The following values defaults to `❌` if haystack does not originate from a file: `file`: contains the full path of the active file being searched (including full filename), `file_rel`: contains `file` relative to current process working dir, `dirpath`: contains the full path without filename of the active file being searched, `dirpath_rel`: contains `dirpath` relative to current process working dir, `filename`: is the full filename of the active file being searched without path, `name`: filename of the active file being searched with no extension, `ext`: extension of the filename including leading dot, `mtime`: ISO inspired representation of the last local modification time of the current file, `ctime`: ISO representation of the local creation time of the current file. `mtime_obj`: date object representing `mtime`, `ctime_obj`: date object representing `ctime`. All variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). [boolean] -`-x` | **`--exclude-re`** Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times. [string] -`-X` | **`--exclude-glob`** Exclude files found with this glob. Can be used multiple times. [string] -`-h` | **`--help`** Display help. [boolean] - -## Good to know - -### Features +| Flag | Effect | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-v` | **`--version`** Print rexreplace version (can be given as only argument) [boolean] | +| `-V` | **`--verbose`** More chatty output [boolean] | +| `-L` | **`--literal`** Literal string search (no regex used when searching) [boolean] | +| `-I` | **`--void-ignore-case`** Void case insensitive search pattern. [boolean] | +| `-G` | **`--void-global`** Void global search (stop looking after the first match). [boolean] | +| `-s` | **`--dot-all`** Have `.` also match newline. [boolean] | +| `-M` | **`--void-multiline`** Void multiline search pattern. Makes ^ and $ match start/end of whole content rather than each line. [boolean] | +| `-u` | **`--unicode`** Treat pattern as a sequence of unicode code points. [boolean] | +| `-e` | **`--encoding`** Encoding of files/piped data. [default: "utf8"] | +| `-E` | **`--engine`** What regex engine to use: [choices: "V8"] [default: "V8"] | +| `-q` | **`--quiet`** Only display errors (no other info) [boolean] | +| `-Q` | **`--quiet-total`** Never display errors or info [boolean] | +| `-H` | **`--halt`** Halt on first error [boolean] [default: false] | +| `-d` | **`--debug`** Print debug info [boolean] | +| `-€` | **`--void-euro`** Void having `€` as alias for `$` in pattern and replacement parameters [boolean] | +| `-§` | **`--void-section`** Void having `§` as alias for `\` in pattern and replacement parameters [boolean] | +| `-o` | **`--output`** Output the final result instead of saving to file. Will also output content even if no replacement has taken place. [boolean] | +| `-A` | **`--void-async`** Handle files in a synchronous flow. Good to limit memory usage when handling large files. [boolean] | +| `-B` | **`--void-backup`** Avoid temporary backing up file. Works async (independent of -A flag) and will speed up things but at one point data lives only in memory, and you will lose the content if the process is abrupted. [boolean] | +| `-b` | **`--keep-backup`** Keep a backup file of the original content. [boolean] | +| `-m` | **`--output-match`** Output each match on a new line. Will not replace any content but you still need to provide a dummy value (like `_`) as replacement parameter. If search pattern does not contain matching groups the full match will be outputted. If search pattern does contain matching groups only matching groups will be outputted (same line with no delimiter). [boolean] | +| `-T` | **`--trim-pipe`** Trim piped data before processing. If piped data only consists of chars that can be trimmed (new line, space, tabs...) it will become an empty string. [boolean] | +| `-R` | **`--replacement-pipe`** Replacement will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter. [boolean] | +| `-j` | **`--replacement-js`** Treat replacement as javascript source code. The statement from the last expression will become the replacement string. Purposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. The full match will be available as a javascript variable named $0 while each captured group will be available as $1, $2, $3, ... and so on. At some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. If the javascript source code references to the full match or a captured group the code will run once per match. Otherwise, it will run once per file. The code has access to the following variables: `r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, `fs` from node, `path` from node, `globs` from npm, `pipe`: the data piped into the command (null if no piped data), `find`: pattern searched for (the needle), `text`: full text being searched i.e. file content or piped data (the haystack), `bytes`: total size of the haystack in bytes, `size`: human-friendly representation of the total size of the haystack, `time`: String representing the local time when the command was invoked, `time_obj`: date object representing `time`, `now`: alias for `time`, `cwd`: current process working dir, `nl`: a new-line char, `_`: a single space char (for easy string concatenation). The following values defaults to `❌` if haystack does not originate from a file: `file`: contains the full path of the active file being searched (including full filename), `file_rel`: contains `file` relative to current process working dir, `dirpath`: contains the full path without filename of the active file being searched, `dirpath_rel`: contains `dirpath` relative to current process working dir, `filename`: is the full filename of the active file being searched without path, `name`: filename of the active file being searched with no extension, `ext`: extension of the filename including leading dot, `mtime`: ISO inspired representation of the last local modification time of the current file, `ctime`: ISO representation of the local creation time of the current file. `mtime_obj`: date object representing `mtime`, `ctime_obj`: date object representing `ctime`. All variables, except from module, date objects, `nl` and `_`, has a corresponding variable name followed by `_` where the content has an extra space at the end (for easy concatenation). [boolean] | +| `-x` | **`--exclude-re`** Exclude files with a path that matches this regular expression. Will follow same regex flags and setup as the main search. Can be used multiple times. [string] | +| `-X` | **`--exclude-glob`** Exclude files found with this glob. Can be used multiple times. [string] | +| `-h` | **`--help`** Display help. [boolean] | + +## Good to know + +### Features - Patterns are described as javascript notation regex - Pattern defaults to global multiline case-insensitive search -- Supports regex lookaheads in the pattern -- Supports backreference to matching groups in the replacement -- Data to be treated can be piped in -- See the [release note](https://github.com/mathiasrw/rexreplace/releases) for a log of changes. Descriptions are given in latest patch version. - +- Supports regex lookaheads in the pattern +- Supports backreference to matching groups in the replacement +- Data to be treated can be piped in +- See the [release note](https://github.com/mathiasrw/rexreplace/releases) for a log of changes. Descriptions are given in latest patch version. ### Quirks -- Options can only be set after the replacement parameter. "_But I like to put my options as the first thing, so I know what I am doing_" I agree, but we must sometimes sacrifice habits for consistency. -- Per default `€` is treated as an alias for `$` in the CLI input. The main reason is for you not to worry about how command line tools often have a special relationship with the `$` char. You can escape your way out of this old love story, but it often pops up in unexpected ways. Use the `-€` flag if you need to search or replace the actual euro char. +- Options can only be set after the replacement parameter. "_But I like to put my options as the first thing, so I know what I am doing_" I agree, but we must sometimes sacrifice habits for consistency. -- Per default `§` is treated as an alias for `\` in the CLI input. The main reason is for you not to worry about escaping the escape of an escape. Use the `-§` flag if you need to search or replace the actual section char. +- Per default `€` is treated as an alias for `$` in the CLI input. The main reason is for you not to worry about how command line tools often have a special relationship with the `$` char. You can escape your way out of this old love story, but it often pops up in unexpected ways. Use the `-€` flag if you need to search or replace the actual euro char. +- Per default `§` is treated as an alias for `\` in the CLI input. The main reason is for you not to worry about escaping the escape of an escape. Use the `-§` flag if you need to search or replace the actual section char. ### Limitations + - RexReplace reads each file fully into memory, so working on your 8Gb log files will probably not be ideal. - For versions of Node prior to 6, please use version 2.2.x. For versions of Node prior to 0.12, please use [the legacy version of RexReplace called rreplace](https://www.npmjs.com/package/rreplace) - - ### Priorities -- Flexibility regarding text pattern matching + +- Flexibility regarding text pattern matching - Easy to filter what files to be treated - Helpful interface - Tests (if you know how to do a test cover report on javascript code ran via the command line, please let me know) - ### Not a priority -- Speed. Well... obviously, speed is important, but to what extent does a 29 millisecond command really satisfy the user compared to a 294 millisecond command? See _test->speed_ for more info. + +- Speed. Well... obviously, speed is important, but to what extent does a 29 millisecond command really satisfy the user compared to a 294 millisecond command? See _test->speed_ for more info. ```bash > time cat README.md | sed 's/a/x/g' > /dev/null cat myfile 0,00s user 0,00s system 45% cpu 0,011 total sed 's/a/x/g' > /dev/null 0,00s user 0,00s system 43% cpu 0,029 total -> time rr a x README.md -o > /dev/null +> time rr a x README.md -o > /dev/null rr x y myfile -o > /dev/null 0,21s user 0,04s system 86% cpu 0,294 total ``` - - - -## Test +## Test ### Regression + All CLI end to end tests are defined in [test/cli/run.sh](https://github.com/mathiasrw/rexreplace/blob/main/test/cli/run.sh) and all unit test are described in [`test/*.js`](https://github.com/mathiasrw/rexreplace/tree/main/test). After `git clone`'ing the repo and `npm install`'ing you can invoke them with: ```bash @@ -277,26 +247,26 @@ All CLI end to end tests are defined in [test/cli/run.sh](https://github.com/mat ## Performance -_**tl;dr**:_ +_**tl;dr**:_ _Files over 5 Mb are faster with `rr` than with `sed` - but - it does not matter as any file under 25 Mb has less than 0.7 seconds in difference._ -The speed test is initiated by `npm run test-speed`. The test takes files in different sizes and compares the processing time for RexReplace (`rr`) and the Unix tool `sed`. The test uses the sources of a website displaying [the book _1984_ by George Orwell](http://1984.surge.sh). The task for the tests is to remove all HTML tags by search-and-replace, so only the final text is left. The source is 888Kb, so all files up to 500Kb are generated directly from the source, while larger files are created by combining the first 500Kb several times. Each test runs 10 times to even out any temporary workload fluctuations. -Results from the latest speed test can always be seen in the [speed test log](https://github.com/mathiasrw/rexreplace/blob/main/test/speed/testlog.speed.md). +The speed test is initiated by `npm run test-speed`. The test takes files in different sizes and compares the processing time for RexReplace (`rr`) and the Unix tool `sed`. The test uses the sources of a website displaying [the book _1984_ by George Orwell](http://1984.surge.sh). The task for the tests is to remove all HTML tags by search-and-replace, so only the final text is left. The source is 888Kb, so all files up to 500Kb are generated directly from the source, while larger files are created by combining the first 500Kb several times. Each test runs 10 times to even out any temporary workload fluctuations. +Results from the latest speed test can always be seen in the [speed test log](https://github.com/mathiasrw/rexreplace/blob/main/test/speed/testlog.speed.md).

-The graph visualises speed as relative to fastest overall run (`sed` on a 1kb file). This chart also has [an interactive version in log scale](https://plot.ly/~mathiasrw/1.embed), so the details in the low end can be studied better. Interestingly files of 1Kb, 5Kb takes longer for `rr` than 10Kb files. +The graph visualises speed as relative to fastest overall run (`sed` on a 1kb file). This chart also has [an interactive version in log scale](https://plot.ly/~mathiasrw/1.embed), so the details in the low end can be studied better. Interestingly files of 1Kb, 5Kb takes longer for `rr` than 10Kb files. -Now, what is relevant to notice is how `sed` only takes 4.9 seconds longer for the 100Mb file - even if the difference looks drastic on the graph. +Now, what is relevant to notice is how `sed` only takes 4.9 seconds longer for the 100Mb file - even if the difference looks drastic on the graph. ``` Speed relative to fastest tool for each file size --------------------------------------------------- Bytes sed rr Time it took longer (seconds) -1 1 39 0,5 <= sed is 39x faster -5 1 32 0,4 +1 1 39 0,5 <= sed is 39x faster +5 1 32 0,4 10 1 27 0,4 100 1 19 0,3 500 1 7 0,3 @@ -310,39 +280,41 @@ Bytes sed rr Time it took longer (seconds) So even though the speed evolves very differently, there is only little practical use of the focus on speed for most use cases. Replacing in 10.000 small files? Use RexReplace and get yourself a cup of coffee - or spend half an hour getting `sed` to work as you want it to and enjoy the thrilling few seconds it takes to do its magic. -Please note that speeds might look very different when files get as large as the memory available. +Please note that speeds might look very different when files get as large as the memory available. Sure, I can help sharpen up the text for better clarity and impact. While I don't have specific knowledge about the rexreplace project, I understand the general idea conveyed in the text. Here's a revised version: --- +Here's an improved version of the text for your README: + ### Tips and Tricks for Performance -It is much more time expensive to read lots of files, than to have a long search regex. +Reading many files multiple times is far more time-consuming than creating a complex regex and reading each file once. -> **Illustrative Anecdote Time** -> -> Say you've got a bunch of files you want to duplicate, but you also have a list of keys that need to be unique across all the duplicated files. One way to do this is to add `_v2` to each key in the duplicate files. +> **Anecdote time** > -> Using rexreplace for each individual key would be the "default" approach. In a real-world example with 5,000 keys and 10,000 files, this method took 57 minutes. The slow part is that each of the 10,000 files is opened and read 5,000 times plus opening node 5000 times. +> Imagine you need to duplicate a set of files, but each duplicate must have unique keys. To achieve this, you can append `_v2` to each key in the duplicated files. > -> Doing the same task, but with all the keys bundled into a single long search regex using a `(key1|key2|key3|...)` format it only took 2.14 seconds! Even though this creates an nasty 300Kb search regex string, it’s way faster. +> Running a separate `rexreplace` command for each key is a logical approach. However, in a real-world scenario with 5,000 keys across 10,000 files, this method took **57 minutes**. The bottleneck was identifying the 10,000 files 5,000 times, opening, and reading each one repeatedly, plus the startup time for node 5,000 times. > -> ``` -> > rexreplace key1 key1_v2 src/v2/**/*.* -> > rexreplace key2 key2_v2 src/v2/**/*.* -> > rexreplace key3 key3_v2 src/v2/**/*.* +> Alternatively, bundling all keys into a single regex search pattern like `(key1|key2|key3|...)'` reduced the runtime to surprising **2.14 seconds**! Although this resulted in a 300Kb regex string, it was significantly faster. +> +> ```sh +> # Separate commands for each key +> rexreplace key1 key1_v2 src/v2/**/*.* +> rexreplace key2 key2_v2 src/v2/**/*.* +> rexreplace key3 key3_v2 src/v2/**/*.* > ... -> > rexreplace key5000 key5000_v2 src/v2/**/*.* -> => 57 minutes -> -> > rexreplace '(key1|key2|key3|...|key5000)' €1_v2 src/v2/**/*.* -> => 2.14 seconds +> rexreplace key5000 key5000_v2 src/v2/**/*.* +> # Total time: 57 minutes +> +> # Single command for all keys +> rexreplace '(key1|key2|key3|...|key5000)' '$1_v2' src/v2/**/*.* +> # Total time: 2.14 seconds > ``` -> Moral: Choose the right approach might save you time... - - - +> +> Moral: Choosing the right approach can save you a significant amount of time. ## Rumours @@ -350,7 +322,6 @@ It is much more time expensive to read lots of files, than to have a long search _.oO(What should "sed" have looked like by now?)_ - ### Future ideas - Default to RegExmoji lax syntax @@ -360,43 +331,40 @@ _.oO(What should "sed" have looked like by now?)_ - Let search and replace be within the names of the files (ask for overwriting. -Y = no questions) - Let search and replace be within the path of the files (ask for overwriting. -Y = no questions) - Let pattern and globs be piped -- Let pipe be placed into search or replace. +- Let pipe be placed into search or replace. - Let Pattern, replacement, and globs come from a file - Let pattern and glob be javascript code returning a string as the result - Auto string search / replace if no regex magic is used (and verify that speed is better) - Error != warning - Flag for String-literal (no regex, no special chars, no escape chars) to avoid backslashes or remembering which characters needs to be escaped - Check if https://github.com/eugeneware/replacestream is good to rely on -- Check if regex engine from spider monkey can be wrapped in something that does not need node +- Check if regex engine from spider monkey can be wrapped in something that does not need node - Check if sd can be wrapped in a WASM module - Set engine to RE2 https://www.npmjs.com/package/re2 - Set engine to run on streams with https://www.npmjs.com/package/replacestream - Implement in go so that all platforms can be supported with no need for node (might be based on) - Let https://github.com/dthree/vorpal deal with the interface? Or maybe https://www.npmjs.com/package/pretty-cli - ## Related projects Many projects are seeking to solve the same problem as RexReplace. I my oppinion they all lack the flexibility of the RexReplace CLI interface and diverse the replacement can be, but have other strong features. If our way does not suit you, we suggest you have a look at: - [sd](https://github.com/chmln/sd) - Blazingly fast! 5.9x **faster** than RexReplace. Almost perfect. Using _"Good ol' unix philosophy to the rescue."_ for pinpointing files so not always easy. Get it via cargo for Rust. -- [replace-in-file](https://www.npmjs.com/package/replace-in-file) - same speed as RexReplace. Very good support to be used as a module for a node application. A bit cumbersome CLI notation for pinpointing files. Get via npm. +- [replace-in-file](https://www.npmjs.com/package/replace-in-file) - same speed as RexReplace. Very good support to be used as a module for a node application. A bit cumbersome CLI notation for pinpointing files. Get via npm. - [replace-x](https://www.npmjs.com/package/replace-x) - 3.8x slower than RexReplace. A bit cumbersome CLI notation for pinpointing files. Get it via npm. - [replace](https://www.npmjs.com/package/replace) - 2.6x slower than RexReplace. Very chatty default output. A bit more cumbersome CLI notation for pinpointing files. Get it via npm. - ----- - +--- RexReplace mascot Benny on the RexReplace logBo -Please note that RexReplace is an [OPEN open source software](http://open-oss.com) project. +Please note that RexReplace is an [OPEN open source software](http://open-oss.com) project. This means that individuals making significant and valuable contributions are given commit access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project. -[![OPEN open source software](https://img.shields.io/badge/Open--OSS-%E2%9C%94-brightgreen.svg)](http://open-oss.com) - +[![OPEN open source software](https://img.shields.io/badge/Open--OSS-%E2%9C%94-brightgreen.svg)](http://open-oss.com) _Icon inspired by Freepik from www.flaticon.com_ ## License + [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmathiasrw%2Frexreplace.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmathiasrw%2Frexreplace?ref=badge_large) From f322ff27f276d2f3a07c6242b1ef4ac0edf65d1c Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Wed, 14 Aug 2024 16:30:06 +1000 Subject: [PATCH 17/17] As found --- README.md | 10 ++-- src/cli.ts | 6 +- src/env/deno.ts | 2 +- test/cli/run.sh | 2 +- test/manual.js | 11 ++++ test/plain.test.js | 17 ++++++ yarn.lock | 138 ++++++++++++++++++++++----------------------- 7 files changed, 107 insertions(+), 79 deletions(-) create mode 100644 test/manual.js create mode 100644 test/plain.test.js diff --git a/README.md b/README.md index 87834b3c..42e6a720 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ [![FOSSA Status](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmathiasrw%2Frexreplace?ref=badge_shield) [![OPEN open source software](https://img.shields.io/badge/Open--OSS-%E2%9C%94-brightgreen.svg)](http://open-oss.com) -RexReplace is a versatile tool to search and replace text in files from the command line. It's inspired by how developers often need to do quick fixes or one-liners for build scripts. +> RexReplace is a versatile tool to search and replace text in files from the command line. It's inspired by how developers often need to do quick fixes or one-liners for build scripts. **Key features**: @@ -294,11 +294,11 @@ Reading many files multiple times is far more time-consuming than creating a com > **Anecdote time** > -> Imagine you need to duplicate a set of files, but each duplicate must have unique keys. To achieve this, you can append `_v2` to each key in the duplicated files. +> Imagine you need to duplicate a set of files, but each duplicate must have unique keys. To achieve this, you can append `_v2` to each key in the duplicated files. Running a separate `rexreplace` command for each key is a reasoable approach. > -> Running a separate `rexreplace` command for each key is a logical approach. However, in a real-world scenario with 5,000 keys across 10,000 files, this method took **57 minutes**. The bottleneck was identifying the 10,000 files 5,000 times, opening, and reading each one repeatedly, plus the startup time for node 5,000 times. +> However, in a real-world scenario with 5,000 keys across 10,000 files, this approach took **57 minutes**. The bottleneck was identifying the 10,000 files 5,000 times, open + read each file 5000 times and the startup time of node x 5,000. > -> Alternatively, bundling all keys into a single regex search pattern like `(key1|key2|key3|...)'` reduced the runtime to surprising **2.14 seconds**! Although this resulted in a 300Kb regex string, it was significantly faster. +> Seeking to optimize performance we bundled all keys into a single regex search pattern like `(key1|key2|key3|...)'`. This resulted in a nasty 300KB one-line command but it reduced the runtime to **2.14 seconds**! > > ```sh > # Separate commands for each key @@ -314,7 +314,7 @@ Reading many files multiple times is far more time-consuming than creating a com > # Total time: 2.14 seconds > ``` > -> Moral: Choosing the right approach can save you a significant amount of time. +> Look, not all problems can be solved like this, but the moral is stil valid: Choosing the right approach can save you a significant amount of time. ## Rumours diff --git a/src/cli.ts b/src/cli.ts index e1946e66..617ef569 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,7 +1,7 @@ /// import yargs from 'yargs'; -import argMate, {helpText} from 'argmate'; +import argMate, {paramInfo} from 'argmate'; import * as rexreplace from './engine.ts'; import {chat, debug, die, warn, info, outputConfig, step} from './output.ts'; @@ -337,10 +337,10 @@ outro: ); // All options into one big config object for the rexreplace engine - let conf: any = {}; + let conf: any = argv; conf.showHelp = () => { - console.log(helpText()); + console.log('helpText()'); process.exit(); }; conf.needHelp = needHelp; diff --git a/src/env/deno.ts b/src/env/deno.ts index 103805ad..7fc51dc8 100644 --- a/src/env/deno.ts +++ b/src/env/deno.ts @@ -8,7 +8,7 @@ import fs from 'fs-extra'; import {cli2conf, executeReplacement} from '../cli.ts'; -const runtime: Runtime = { +export const runtime: Runtime = { fileReadSync: (path, encoding = 'utf8') => fs.readFileSync(path, {encoding}), async fileReadAsync(path, encoding = 'utf8') { diff --git a/test/cli/run.sh b/test/cli/run.sh index ace8b297..8c048386 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -48,7 +48,7 @@ reset() { echo -echo '>' Happy path +echo '>' Plain reset rexreplace x x my.file assert "cat my.file" "foobar" diff --git a/test/manual.js b/test/manual.js new file mode 100644 index 00000000..eb8ff2dc --- /dev/null +++ b/test/manual.js @@ -0,0 +1,11 @@ +// https://bun.sh/docs/test/writing + +// @ts-ignore +import { expect, test, describe } from 'bun:test'; + +import { cli2conf, executeReplacement } from '../src/cli.ts'; + +import { runtime } from '../src/env/deno.ts' + +executeReplacement(runtime, conf, pipeData); + diff --git a/test/plain.test.js b/test/plain.test.js new file mode 100644 index 00000000..54d45cc3 --- /dev/null +++ b/test/plain.test.js @@ -0,0 +1,17 @@ +// https://bun.sh/docs/test/writing + +// @ts-ignore +import { expect, test, describe } from 'bun:test'; + +import { cli2conf, executeReplacement } from '../src/cli.ts'; + +import { runtime } from '../src/env/bun.ts' + +executeReplacement(runtime, conf, pipeData); + +describe('Plain', () => { + test('Happy path', () => { + expect(1).toBe(1) + }) +}) + diff --git a/yarn.lock b/yarn.lock index ee52b104..08572865 100644 --- a/yarn.lock +++ b/yarn.lock @@ -103,74 +103,74 @@ slash "3.0.0" source-map "^0.7.3" -"@swc/core-darwin-arm64@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz#3bb751899cd208be261c48190b75c87171be79b4" - integrity sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w== - -"@swc/core-darwin-x64@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz#9860087421ac258f59c5aaede4b76dfe680bb28d" - integrity sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ== - -"@swc/core-linux-arm-gnueabihf@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz#ed321346fea49cc07cdb1217b3ae5c7f3f8ba7ae" - integrity sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ== - -"@swc/core-linux-arm64-gnu@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz#bdabe0364f2851f7c1446a5da82b2ccc2a021f65" - integrity sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw== - -"@swc/core-linux-arm64-musl@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz#e9e14a8f228bddc68ffc5ab4495000ae8a56ced2" - integrity sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ== - -"@swc/core-linux-x64-gnu@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz#283baa984b370944cec8fe4a3a64a756cc40cccc" - integrity sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw== - -"@swc/core-linux-x64-musl@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz#18d3e773d150061aa2210149d4abff56ff1465fc" - integrity sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ== - -"@swc/core-win32-arm64-msvc@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz#85a1d2b5c6292c98865ebbc2ad07be23e6869005" - integrity sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA== - -"@swc/core-win32-ia32-msvc@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz#023501d012e3993933e06a9874e5568d38fbdb24" - integrity sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ== - -"@swc/core-win32-x64-msvc@1.3.91": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz#a70898460d3a91e59d14c4a0a1e772fb00643d11" - integrity sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ== +"@swc/core-darwin-arm64@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.92.tgz#0498d3584cf877e39107c94705c38fa4a8c04789" + integrity sha512-v7PqZUBtIF6Q5Cp48gqUiG8zQQnEICpnfNdoiY3xjQAglCGIQCjJIDjreZBoeZQZspB27lQN4eZ43CX18+2SnA== + +"@swc/core-darwin-x64@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.92.tgz#1728e7ebbfe37b56c07d99e29dde78bfa90cf8d1" + integrity sha512-Q3XIgQfXyxxxms3bPN+xGgvwk0TtG9l89IomApu+yTKzaIIlf051mS+lGngjnh9L0aUiCp6ICyjDLtutWP54fw== + +"@swc/core-linux-arm-gnueabihf@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.92.tgz#6f7c20833b739f8911c936c9783976ded2c449dc" + integrity sha512-tnOCoCpNVXC+0FCfG84PBZJyLlz0Vfj9MQhyhCvlJz9hQmvpf8nTdKH7RHrOn8VfxtUBLdVi80dXgIFgbvl7qA== + +"@swc/core-linux-arm64-gnu@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.92.tgz#bb01dd9b922b0c076c38924013bd10036ce39c7c" + integrity sha512-lFfGhX32w8h1j74Iyz0Wv7JByXIwX11OE9UxG+oT7lG0RyXkF4zKyxP8EoxfLrDXse4Oop434p95e3UNC3IfCw== + +"@swc/core-linux-arm64-musl@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.92.tgz#0070165eed2805475c98eb732bab8bdca955932e" + integrity sha512-rOZtRcLj57MSAbiecMsqjzBcZDuaCZ8F6l6JDwGkQ7u1NYR57cqF0QDyU7RKS1Jq27Z/Vg21z5cwqoH5fLN+Sg== + +"@swc/core-linux-x64-gnu@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.92.tgz#d9785f93b9121eeef0f54e8d845dd216698e0115" + integrity sha512-qptoMGnBL6v89x/Qpn+l1TH1Y0ed+v0qhNfAEVzZvCvzEMTFXphhlhYbDdpxbzRmCjH6GOGq7Y+xrWt9T1/ARg== + +"@swc/core-linux-x64-musl@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.92.tgz#8fe5cf244695bf4f0bc7dc7df450a9bd1bfccc2b" + integrity sha512-g2KrJ43bZkCZHH4zsIV5ErojuV1OIpUHaEyW1gf7JWKaFBpWYVyubzFPvPkjcxHGLbMsEzO7w/NVfxtGMlFH/Q== + +"@swc/core-win32-arm64-msvc@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.92.tgz#d6150785455c813a8e62f4e4b0a22773baf398eb" + integrity sha512-3MCRGPAYDoQ8Yyd3WsCMc8eFSyKXY5kQLyg/R5zEqA0uthomo0m0F5/fxAJMZGaSdYkU1DgF73ctOWOf+Z/EzQ== + +"@swc/core-win32-ia32-msvc@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.92.tgz#8142166bceafbaa209d440b36fdc8cd4b4f82768" + integrity sha512-zqTBKQhgfWm73SVGS8FKhFYDovyRl1f5dTX1IwSKynO0qHkRCqJwauFJv/yevkpJWsI2pFh03xsRs9HncTQKSA== + +"@swc/core-win32-x64-msvc@1.3.92": + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.92.tgz#4ba542875fc690b579232721ccec7873e139646a" + integrity sha512-41bE66ddr9o/Fi1FBh0sHdaKdENPTuDpv1IFHxSg0dJyM/jX8LbkjnpdInYXHBxhcLVAPraVRrNsC4SaoPw2Pg== "@swc/core@^1.3.90": - version "1.3.91" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.91.tgz#4d7978846da67bfbe20486574d07f204d6891805" - integrity sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA== + version "1.3.92" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.92.tgz#f51808cdb6cbb90b0877b9a51806eea9a70eafca" + integrity sha512-vx0vUrf4YTEw59njOJ46Ha5i0cZTMYdRHQ7KXU29efN1MxcmJH2RajWLPlvQarOP1ab9iv9cApD7SMchDyx2vA== dependencies: "@swc/counter" "^0.1.1" "@swc/types" "^0.1.5" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.91" - "@swc/core-darwin-x64" "1.3.91" - "@swc/core-linux-arm-gnueabihf" "1.3.91" - "@swc/core-linux-arm64-gnu" "1.3.91" - "@swc/core-linux-arm64-musl" "1.3.91" - "@swc/core-linux-x64-gnu" "1.3.91" - "@swc/core-linux-x64-musl" "1.3.91" - "@swc/core-win32-arm64-msvc" "1.3.91" - "@swc/core-win32-ia32-msvc" "1.3.91" - "@swc/core-win32-x64-msvc" "1.3.91" + "@swc/core-darwin-arm64" "1.3.92" + "@swc/core-darwin-x64" "1.3.92" + "@swc/core-linux-arm-gnueabihf" "1.3.92" + "@swc/core-linux-arm64-gnu" "1.3.92" + "@swc/core-linux-arm64-musl" "1.3.92" + "@swc/core-linux-x64-gnu" "1.3.92" + "@swc/core-linux-x64-musl" "1.3.92" + "@swc/core-win32-arm64-msvc" "1.3.92" + "@swc/core-win32-ia32-msvc" "1.3.92" + "@swc/core-win32-x64-msvc" "1.3.92" "@swc/counter@^0.1.1": version "0.1.2" @@ -237,9 +237,9 @@ "@types/node" "*" "@types/node@*", "@types/node@^20.6.2": - version "20.8.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.2.tgz#d76fb80d87d0d8abfe334fc6d292e83e5524efc4" - integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== + version "20.8.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.3.tgz#c4ae2bb1cfab2999ed441a95c122bbbe1567a66d" + integrity sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw== "@types/responselike@^1.0.0": version "1.0.1" @@ -254,9 +254,9 @@ integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== "@types/yargs@^17.0.24": - version "17.0.26" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.26.tgz#388e5002a8b284ad7b4599ba89920a6d74d8d79a" - integrity sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw== + version "17.0.28" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" + integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== dependencies: "@types/yargs-parser" "*" @@ -313,7 +313,7 @@ arg@^4.1.0: integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argmate@../argmate: - version "0.3.0" + version "0.4.1-beta" argparse@^2.0.1: version "2.0.1"