From f777600d286513d781566ad9b521e1723c88eb28 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Mon, 24 Jul 2023 21:56:43 +1000 Subject: [PATCH 001/155] Test all versions of node --- .github/workflows/nodejs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 6d2e9525..5e4806fb 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - node-version: [12.x, 14.x, 15.x] + node-version: [12.x, 14.x, 16.x, 17.x, 18.x, 19.x, 20.x] steps: - uses: actions/checkout@v2 From 93d738f211723b0e08d4bb266d27f182b4c60d83 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Thu, 27 Jul 2023 16:42:01 +1000 Subject: [PATCH 002/155] Exclude paths by starting glob with '^' or '!' --- .npmignore | 3 +- README.md | 2 + bin/ES6/cli.js | 2 +- bin/ES6/engine.js | 26 +- bin/rexreplace.cli.js | 32 +- bin/rexreplace.cli.min.js | 722 ++++++++++++++++++++++- package.json | 23 +- src/cli.ts | 2 +- src/engine.ts | 30 +- yarn.lock | 1133 ++++++++++++++++--------------------- 10 files changed, 1265 insertions(+), 710 deletions(-) diff --git a/.npmignore b/.npmignore index 4e29e825..f6295369 100644 --- a/.npmignore +++ b/.npmignore @@ -2,10 +2,9 @@ test/* src/* gfx/* rollup.config.js -greenkeeper.json tmp/* -package-lock.json .*/ *.log *.txt *.file +*.lock \ No newline at end of file diff --git a/README.md b/README.md index c5f420c6..09a552df 100644 --- a/README.md +++ b/README.md @@ -319,6 +319,8 @@ _.oO(What should "sed" have looked like by now?)_ ### Future ideas +- Default to RegExmoji lax syntax +- Support RegExmoji strict syntax - Add support to require hjson, jsonh, yaml, ini files directly - Test-run with info outputted about what will happen (sets -t and does not change anything) - Let search and replace be within the names of the files (ask for overwriting. -Y = no questions) diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js index 0b709f5d..d7f874ea 100644 --- a/bin/ES6/cli.js +++ b/bin/ES6/cli.js @@ -241,7 +241,7 @@ function unescapeString(str = '') { }); let pipeInUse = false; let pipeData = ''; - config.files = yargs.argv._; + config.globs = yargs.argv._; config.pipedData = null; config.showHelp = yargs.showHelp; config.pattern = pattern; diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index 928a83ab..6afe3358 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -16,7 +16,7 @@ export function engine(config = { engine: 'V8' }) { if (handlePipedData(config)) { return doReplacement('Piped data', config, config.pipedData); } - config.files = globs.sync(config.files); + config.files = globs2paths(config.globs); if (!config.files.length) { return error(config.files.length + ' files found'); } @@ -68,7 +68,7 @@ export function engine(config = { engine: 'V8' }) { return; } // Release the memory while storing files - _data_rr = undefined; + _data_rr = ''; debug('Write new content to: ' + _file_rr); // Write directly to the same file (if the process is killed all new and old data is lost) if (_config_rr.voidBackup) { @@ -121,7 +121,7 @@ export function engine(config = { engine: 'V8' }) { } function handlePipedData(config) { step('Check Piped Data'); - if (config.files.length) { + if (config.globs.length) { if (!config.replacementJs) { chat('Piped data never used.'); } @@ -202,7 +202,7 @@ export function engine(config = { engine: 'V8' }) { if (config.literal) { pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); } - let regex = null; + let regex; let flags = getFlags(config); switch (config.engine) { case 'V8': @@ -339,3 +339,21 @@ function replacePlaceholders(str = '', conf) { } return str; } +function globs2paths(_globs = []) { + const globsToInclude = []; + const globsToExclude = []; + _globs.filter(Boolean).forEach((glob) => { + if ('!' === glob[0] || '^' === glob[0]) { + globsToExclude.push(glob.slice(1)); + } + else { + globsToInclude.push(glob); + } + }); + let filesToInclude = globs.sync(globsToInclude); + if (globsToExclude.length) { + const filesToExclude = globs.sync(globsToExclude); + return filesToInclude.filter((el) => !filesToExclude.includes(el)); + } + return filesToInclude; +} diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 6be58914..500745a8 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -72,7 +72,7 @@ var path = require('path'); var globs = require('globs'); var now = new Date(); - var version = '7.0.7'; + var version = '7.1.1'; function engine(config) { if ( config === void 0 ) config = { engine: 'V8' }; @@ -87,7 +87,7 @@ if (handlePipedData(config)) { return doReplacement('Piped data', config, config.pipedData); } - config.files = globs.sync(config.files); + config.files = globs2paths(config.globs); if (!config.files.length) { return error(config.files.length + ' files found'); } @@ -139,7 +139,7 @@ return; } // Release the memory while storing files - _data_rr = undefined; + _data_rr = ''; debug('Write new content to: ' + _file_rr); // Write directly to the same file (if the process is killed all new and old data is lost) if (_config_rr.voidBackup) { @@ -192,7 +192,7 @@ } function handlePipedData(config) { step('Check Piped Data'); - if (config.files.length) { + if (config.globs.length) { if (!config.replacementJs) { chat('Piped data never used.'); } @@ -275,7 +275,7 @@ if (config.literal) { pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); } - var regex = null; + var regex; var flags = getFlags(config); switch (config.engine) { case 'V8': @@ -418,6 +418,26 @@ } return str; } + function globs2paths(_globs) { + if ( _globs === void 0 ) _globs = []; + + var globsToInclude = []; + var globsToExclude = []; + _globs.filter(Boolean).forEach(function (glob) { + if ('!' === glob[0] || '^' === glob[0]) { + globsToExclude.push(glob.slice(1)); + } + else { + globsToInclude.push(glob); + } + }); + var filesToInclude = globs.sync(globsToInclude); + if (globsToExclude.length) { + var filesToExclude = globs.sync(globsToExclude); + return filesToInclude.filter(function (el) { return !filesToExclude.includes(el); }); + } + return filesToInclude; + } var assign; var pattern, replacement; @@ -625,7 +645,7 @@ }); var pipeInUse = false; var pipeData = ''; - config.files = yargs.argv._; + config.globs = yargs.argv._; config.pipedData = null; config.showHelp = yargs.showHelp; config.pattern = pattern; diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index d07e1605..500745a8 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,31 +1,691 @@ -var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(c){var d=0;return function(){return d>>0,$jscomp.propertyToPolyfillSymbol[k]=$jscomp.IS_SYMBOL_NATIVE? -$jscomp.global.Symbol(k):$jscomp.POLYFILL_PREFIX+f+"$"+k),$jscomp.defineProperty(h,$jscomp.propertyToPolyfillSymbol[k],{configurable:!0,writable:!0,value:d})))};$jscomp.initSymbol=function(){}; -$jscomp.polyfill("Symbol",function(c){if(c)return c;var d=function(r,y){this.$jscomp$symbol$id_=r;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:y})};d.prototype.toString=function(){return this.$jscomp$symbol$id_};var f="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",h=0,k=function(r){if(this instanceof k)throw new TypeError("Symbol is not a constructor");return new d(f+(r||"")+"_"+h++,r)};return k},"es6","es3"); -$jscomp.polyfill("Symbol.iterator",function(c){if(c)return c;c=Symbol("Symbol.iterator");for(var d="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),f=0;fparseInt(process.versions.node)?D("outputMatch is only supported in node 6+"):function(){var g=arguments;d(arguments);if(3===arguments.length)return d("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var l=1;lparseInt(process.versions.node))return D("Captured groups for javascript replacement is only supported in node 6+"); -d(b.replacement);return b.replacement}(a)||"";a.replacementOri=a.replacement;a.regex=function(b){d("Get final regex with engine: "+b.engine);var g=b.pattern;b.literal&&(g=g.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g,"\\$&"));var l=null;d("Get flags");var m="";b.voidGlobal||(m+="g");b.voidIgnoreCase||(m+="i");b.voidMultiline||(m+="m");b.dotAll&&(m+="s");b.unicode&&(m+="u");d(m);switch(b.engine){case "V8":try{l=new RegExp(g,m)}catch(p){if(b.debug)throw Error(p);D(p.message)}break;case "RE2":try{l=new (require("re2"))(g, -m)}catch(p){if(b.debug)throw Error(p);D(p.message)}break;default:D("Engine "+b.engine+" not supported")}d(l);return l}(a)||"";d(a);if(function(b){d("Check Piped Data");return b.files.length?(b.replacementJs||F("Piped data never used."),!1):null===b.pipedData||b.pipedDataUsed?!1:(b.dataIsPiped=!0,b.output=!0)}(a))return n("Piped data",a,a.pipedData);a.files=T.sync(a.files);if(!a.files.length)return w(a.files.length+" files found");F(a.files.length+" files found");d(a);a.files.filter(function(b){return t.existsSync(b)? -!0:w("File not found:",b)}).forEach(function(b){return e(b,a)})}function k(a){if(1===a)return"1 Byte";var e=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,e)).toFixed(e?1:0)+" "+["Bytes","KB","MB","GB","TB"][e]}function r(a,e,n){var b=qa,g=y(b),l=e.pipedData,m=e.pattern,p=e.replacementOri,u=process.cwd(),q="\u274c",B="\u274c",z="\u274c",J="\u274c",K="\u274c",L="\u274c",M="\u274c",N="\u274c",O="\u274c",P="\u274c",Q=new Date(0),R=new Date(0),A=-1,H="\u274c",W=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);'), -X=/bytes|size/.test(e.replacement),I=X&&5E7process.argv.length)/-v|--?version$/i.test(process.argv[process.argv.length-1])?(console.log("7.0.7"),process.exitCode=0,process.exit()):U=/-h|--?help$/i.test(process.argv[process.argv.length-1])?1:2;else{var oa=process.argv.splice(2,2);var va=oa[0];var pa=oa[1]}var E=require("yargs").strict().usage("RexReplace 7.0.7: 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> rexreplace pattern replacement [fileGlob|option]+").example("> rexreplace 'Foo' 'xxx' myfile.md", -"'foobar' in myfile.md will become 'xxxbar'").example("").example("> rr Foo xxx myfile.md","The alias 'rr' can be used instead of 'rexreplace'").example("").example("> rexreplace '(f?(o))o(.*)' '$3$1\u20ac2' 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").version("v","Print rexreplace version (can be given as only argument)","7.0.7").alias("v","version").boolean("V").describe("V", -"More chatty output").alias("V","verbose").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("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("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",!1).boolean("d").describe("d","Print debug info").alias("d","debug").boolean("\u20ac").describe("\u20ac","Void having '\u20ac' as alias for '$' in pattern and replacement parameters").alias("\u20ac","void-euro").boolean("\u00a7").describe("\u00a7","Void having '\u00a7' as alias for '\\' in pattern and replacement parameters").alias("\u00a7","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").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").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 will lose the content if the process is abrupted.").alias("B","void-backup").boolean("b").describe("b","Keep a backup file of the original content.").alias("b","keep-backup").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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter.").boolean("j").alias("j","replacement-js").describe("j","Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use \u20ac0, \u20ac1, \u20ac2, \u20ac3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `\u274c` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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").help("h").describe("h", -"Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)");(function(){if(0b.indexOf("-")&&(a[b]=E.argv[b])});var e=!1,n="";a.files=E.argv._;a.pipedData=null;a.showHelp=E.showHelp;a.pattern=va;a.replacement=a.replacementJs?pa:ua(pa);if(process.stdin.isTTY){if(a.replacementPipe)return na();h(a)}else process.stdin.setEncoding(a.encoding),process.stdin.on("readable",function(){var b= -process.stdin.read();if(null!==b)for(e=!0,n+=b;b=process.stdin.read();)n+=b}),process.stdin.on("end",function(){e&&(E.argv.trimPipe&&(n=n.trim()),a.pipedData=n);h(a)})})()})(); +#!/usr/bin/env node +(function () { + '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 info = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); + }; + var chat = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } + }; + 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(); + } + msg && error(' ❌ ' + msg, data); + kill(); + }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!config.quiet && !config.quietTotal) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; + }; + function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } + } + function step(data) { + if (config.verbose) { + debug(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'); + var path = require('path'); + var globs = require('globs'); + var now = new Date(); + var version = '7.1.1'; + function engine(config) { + if ( config === void 0 ) config = { engine: 'V8' }; + + outputConfig(config); + step('Displaying steps for:'); + step(config); + config.pattern = getFinalPattern(config) || ''; + config.replacement = getFinalReplacement(config) || ''; + config.replacementOri = config.replacement; + config.regex = getFinalRegex(config) || ''; + step(config); + if (handlePipedData(config)) { + return doReplacement('Piped data', config, config.pipedData); + } + config.files = globs2paths(config.globs); + if (!config.files.length) { + return error(config.files.length + ' files found'); + } + chat(config.files.length + ' files found'); + step(config); + config.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)); }) + // Do the replacement + .forEach(function (filepath) { return openFile(filepath, config); }); + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(/:/g, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + step('Check Piped Data'); + if (config.globs.length) { + if (!config.replacementJs) { + chat('Piped data never used.'); + } + return false; + } + if (null !== config.pipedData && !config.pipedDataUsed) { + config.dataIsPiped = true; + config.output = true; + return true; + } + return false; + } + function getFinalPattern(conf) { + step('Get final pattern'); + var pattern = replacePlaceholders(conf.pattern, conf); + /*if (config.patternFile) { + pattern = fs.readFileSync(pattern, 'utf8'); + pattern = new Function('return '+pattern)(); + }*/ + step(pattern); + return pattern; + } + function getFinalReplacement(conf) { + step('Get final replacement'); + /*if(config.replacementFile){ + return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); + }*/ + conf.replacement = replacePlaceholders(conf.replacement, conf); + if (conf.replacementPipe) { + step('Piping replacement'); + conf.pipedDataUsed = true; + if (null === conf.pipedData) { + return die('No data piped into replacement'); + } + conf.replacement = conf.pipedData; + } + 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 + //console.log(process); + if (conf.replacementJs && + /\$\d/.test(conf.replacement) && + parseInt(process.versions.node) < 6) { + return die('Captured groups for javascript replacement is only supported in node 6+'); + } + step(conf.replacement); + return conf.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 getFinalRegex(config) { + step('Get final regex with engine: ' + config.engine); + var pattern = config.pattern; + if (config.literal) { + pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); + } + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); + } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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 = /bytes|size/.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) { + _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(/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/)[1]; + _filename = pathInfo.base; + _name = pathInfo.name; + _ext = pathInfo.ext; + if (betterToReadfromFile || /[mc]time/.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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // Captures groups present, 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, 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); + }; + } + 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))); + } + var re = { + euro: /€/g, + section: /§/g, + }; + 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 globs2paths(_globs) { + if ( _globs === void 0 ) _globs = []; + + var globsToInclude = []; + var globsToExclude = []; + _globs.filter(Boolean).forEach(function (glob) { + if ('!' === glob[0] || '^' === glob[0]) { + globsToExclude.push(glob.slice(1)); + } + else { + globsToInclude.push(glob); + } + }); + var filesToInclude = globs.sync(globsToInclude); + if (globsToExclude.length) { + var filesToExclude = globs.sync(globsToExclude); + return 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 + 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; + } + else { + needHelp = 2; + } + } + else { + (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); + } + var yargs = require('yargs') + .strict() + .usage('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' + + '> rexreplace pattern replacement [fileGlob|option]+') + .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") + .example('') + .example("> rr Foo xxx 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") + .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('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('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('€') + .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. " + + '') + .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 will lose the content if the process is abrupted.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + + '') + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") + /* + .boolean('N') + .alias('N', 'void-newline') + .describe('N', + `Avoid having newline when outputting data (or when piping). `+ + `Normally . `+ + '' + ) + + + -E (Expect there to be no match and return exit 1 if found) + -e (Expect there to be batch and return exit 1 if not found) + */ + /* .boolean('P') + .describe('P', "Pattern is a filename from where the pattern will be generated. 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 a filename from where the replacement will be generated. ` + + `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + ) + + */ + /* // Ideas + + .boolean('n') + .describe('n', "Do replacement on file names instead of file content (rename 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('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') + .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") + + + */ + .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(); + //io(help); + 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); + } + // 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 + Object.keys(yargs.argv).forEach(function (key) { + if (1 < key.length && key.indexOf('-') < 0) { + config[key] = yargs.argv[key]; + } + }); + var pipeInUse = false; + var pipeData = ''; + config.globs = yargs.argv._; + config.pipedData = null; + config.showHelp = yargs.showHelp; + config.pattern = pattern; + if (config.replacementJs) { + config.replacement = replacement; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + engine(config); + }); + } + })(); + +})(); diff --git a/package.json b/package.json index f2591ecb..8116749e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rexreplace", - "version": "7.0.7", + "version": "7.1.1", "description": "Smoothly search & replace in files from CLI.", "author": "Mathias Rangel Wulff", "funding": { @@ -23,14 +23,14 @@ "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 && google-closure-compiler --js=bin/rexreplace.cli.js --js_output_file=bin/rexreplace.cli.min.js", + "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 rebase origin && yarn test-minify && yarn load-options && yarn bump", + "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)", @@ -53,12 +53,11 @@ "@rollup/plugin-commonjs": "20.0.0", "@rollup/plugin-node-resolve": "13.0.6", "@rollup/plugin-replace": "3.0.0", - "@types/node": "16.11.4", + "@types/node": "20.4.5", "assert": "^2.0.0", - "google-closure-compiler": "^20211006.0.0", - "magic-string": "^0.25.7", - "mocha": "9.1.3", - "prettier": "2.4.1", + "magic-string": "0.30.1", + "mocha": "10.2.0", + "prettier": "3.0.0", "rollup": "2.58.0", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.1", @@ -66,17 +65,19 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "1.1.3", - "typescript": "4.4.4", + "typescript": "5.1.6", "version-bump-prompt": "6.1.0", - "yarn": "1.22.17" + "yarn": "1.22.19" }, "resolutions": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.1", + "tough-cookie": "^4.1.3" }, "directories": { "test": "test" }, "dependencies": { + "ansi-regex": "6.0.1", "globs": "0.1.4", "yargs": "16.2.0" }, diff --git a/src/cli.ts b/src/cli.ts index 00419ea8..e81f1f8a 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -311,7 +311,7 @@ function unescapeString(str = '') { let pipeInUse = false; let pipeData = ''; - config.files = yargs.argv._; + config.globs = yargs.argv._; config.pipedData = null; config.showHelp = yargs.showHelp; config.pattern = pattern; diff --git a/src/engine.ts b/src/engine.ts index 63377d15..f932e6c4 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -30,7 +30,7 @@ export function engine(config: any = {engine: 'V8'}) { return doReplacement('Piped data', config, config.pipedData); } - config.files = globs.sync(config.files); + config.files = globs2paths(config.globs); if (!config.files.length) { return error(config.files.length + ' files found'); @@ -95,7 +95,7 @@ export function engine(config: any = {engine: 'V8'}) { } // Release the memory while storing files - _data_rr = undefined; + _data_rr = ''; debug('Write new content to: ' + _file_rr); @@ -155,7 +155,7 @@ export function engine(config: any = {engine: 'V8'}) { function handlePipedData(config) { step('Check Piped Data'); - if (config.files.length) { + if (config.globs.length) { if (!config.replacementJs) { chat('Piped data never used.'); } @@ -260,7 +260,7 @@ export function engine(config: any = {engine: 'V8'}) { pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); } - let regex = null; + let regex; let flags = getFlags(config); @@ -629,3 +629,25 @@ function replacePlaceholders(str = '', conf: any) { return str; } + +function globs2paths(_globs: string[] = []) { + const globsToInclude: string[] = []; + const globsToExclude: string[] = []; + + _globs.filter(Boolean).forEach((glob) => { + if ('!' === glob[0] || '^' === glob[0]) { + globsToExclude.push(glob.slice(1)); + } else { + globsToInclude.push(glob); + } + }); + + let filesToInclude = globs.sync(globsToInclude); + + if (globsToExclude.length) { + const filesToExclude = globs.sync(globsToExclude); + return filesToInclude.filter((el) => !filesToExclude.includes(el)); + } + + return filesToInclude; +} diff --git a/yarn.lock b/yarn.lock index 66f7959c..7cc82112 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,16 +3,61 @@ "@babel/runtime@^7.13.8": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== dependencies: - regenerator-runtime "^0.13.4" + 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== + +"@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.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== + +"@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + 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.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== + +"@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== + +"@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== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" "@jsdevtools/ez-spawn@^3.0.4": version "3.0.4" @@ -60,9 +105,9 @@ fastq "^1.6.0" "@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + 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" @@ -183,19 +228,19 @@ magic-string "^0.25.0" "@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/node@*", "@types/node@16.11.4": - version "16.11.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.4.tgz#90771124822d6663814f7c1c9b45a6654d8fd964" - integrity sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ== +"@types/node@*", "@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== "@types/resolve@1.17.1": version "1.17.1" @@ -204,11 +249,6 @@ dependencies: "@types/node" "*" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -229,6 +269,11 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" 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#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" @@ -237,12 +282,12 @@ agent-base@6, agent-base@^6.0.2: debug "4" agentkeepalive@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" - integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== dependencies: debug "^4.1.0" - depd "^1.1.2" + depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: @@ -282,6 +327,11 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" +ansi-regex@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + 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" @@ -302,9 +352,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: color-convert "^2.0.1" anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + 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" @@ -338,16 +388,16 @@ array-union@^2.1.0: integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + 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 sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^2.0.0: version "2.0.0" @@ -362,7 +412,7 @@ assert@^2.0.0: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== available-typed-arrays@^1.0.5: version "1.0.5" @@ -372,12 +422,12 @@ available-typed-arrays@^1.0.5: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + 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" @@ -387,7 +437,7 @@ balanced-match@^1.0.0: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -418,7 +468,14 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@~3.0.2: +brace-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== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~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== @@ -456,14 +513,14 @@ buffer-from@^1.0.0: integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + 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 sha1-y5T662HIaWRR2zZTThQi+U8K7og= + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" @@ -498,21 +555,21 @@ call-bind@^1.0.0, call-bind@^1.0.2: get-intrinsic "^1.0.2" call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + 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== camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + 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 sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@2.x, chalk@^2.4.2: +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== @@ -534,10 +591,10 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -585,34 +642,10 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - 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 sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== color-convert@^1.9.0: version "1.9.3" @@ -631,7 +664,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" @@ -651,9 +684,9 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: delayed-stream "~1.0.0" command-line-args@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be" - integrity sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A== + version "5.2.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" find-replace "^3.0.0" @@ -668,22 +701,22 @@ commander@^2.20.0: commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + 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 sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + 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 sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + 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#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" @@ -702,14 +735,14 @@ cross-spawn@^7.0.3: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" -debug@4, debug@4.3.2, debug@^4.1.0, debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -719,31 +752,32 @@ decamelize@^4.0.0: integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + 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== define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + 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== dependencies: - object-keys "^1.0.12" + 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 sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +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== detect-indent@^6.0.0: version "6.1.0" @@ -770,7 +804,7 @@ dir-glob@^3.0.1: duplexer@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== duplexer@^0.1.2: version "0.1.2" @@ -780,7 +814,7 @@ duplexer@^0.1.2: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -807,45 +841,10 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -es-abstract@^1.18.5: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - es6-object-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 sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== escalade@^3.1.1: version "3.1.1" @@ -860,7 +859,7 @@ escape-string-regexp@4.0.0: 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 sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== estree-walker@^1.0.1: version "1.0.1" @@ -889,22 +888,22 @@ 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 sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + 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.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-glob@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -918,9 +917,9 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" @@ -963,15 +962,17 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= +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== + 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 sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@~2.3.2: version "2.3.3" @@ -992,7 +993,7 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.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 sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.2" @@ -1007,7 +1008,7 @@ function-bind@^1.1.1: gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -1023,27 +1024,20 @@ get-caller-file@^2.0.5: 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.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +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== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + has-proto "^1.0.1" + has-symbols "^1.0.3" getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -1054,10 +1048,10 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@7.2.0: + version "7.2.0" + 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" @@ -1067,27 +1061,27 @@ glob@7.1.7: path-is-absolute "^1.0.0" glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + version "7.2.3" + 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.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" globby@^11.0.1: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" globs@0.1.4: @@ -1097,55 +1091,22 @@ globs@0.1.4: dependencies: glob "^7.1.1" -google-closure-compiler-java@^20211006.0.0: - version "20211006.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20211006.0.0.tgz#d3ccbbfa349f2ffff5e623d45e7798cfe8e450c4" - integrity sha512-ggvk48GuP5Y8TD1I9dcJTu50+BQ2AfroAAsTV7nnbKdEPCZ/XJmGqy5qrJk0ImdAvONUHZETc5DMHHgFI5WjMg== - 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== -google-closure-compiler-linux@^20211006.0.0: - version "20211006.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20211006.0.0.tgz#471eef6600a682d6cf95fc3218f9d925bcedb6b7" - integrity sha512-7FclqwRDHcx9zvoy1JCQB3DC84T0anyOsb5kNIZgIf/oaUCvq27ElJK1X7W6IenOcwYyvDDWeDb38YkWl15ANw== - -google-closure-compiler-osx@^20211006.0.0: - version "20211006.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20211006.0.0.tgz#6e74c82b9c167e34319bf67e93201bcde0a91169" - integrity sha512-b0FGLvYZuMbDoLcu5z1lw0nWigpT8G29acuh4Yz6zO4NFq1aCpyR1X+BPhC2KCxb2eaMWPx2xoxbsekhkU0VzQ== - -google-closure-compiler-windows@^20211006.0.0: - version "20211006.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20211006.0.0.tgz#ae88366bfce882e6d524a0dd35bb1a5681c31172" - integrity sha512-7P13hA42LWIm4o+speQC5Yhs3D+3q9nvuItOxLCzess1sPDeBKi5dQi3w+C2MBTDyVN0CTKL86iClyyOnrbuRQ== - -google-closure-compiler@^20211006.0.0: - version "20211006.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20211006.0.0.tgz#0c26abc40b30f989a913ead39d3b6d2099cf4e7a" - integrity sha512-WrzPLGtNMtgPubcvSur8JzzpuNn4feS7OMF74Hsm00G0qpdNvBVCIkMpnLr9SPZnl2vZ8UVqt83XVXMpQRTkUw== - dependencies: - chalk "2.x" - google-closure-compiler-java "^20211006.0.0" - minimist "1.x" - vinyl "2.x" - vinyl-sourcemaps-apply "^0.2.0" - optionalDependencies: - google-closure-compiler-linux "^20211006.0.0" - google-closure-compiler-osx "^20211006.0.0" - google-closure-compiler-windows "^20211006.0.0" +gopd@^1.0.1: + version "1.0.1" + 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.2.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + 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" @@ -1157,7 +1118,7 @@ gzip-size@^6.0.0: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" @@ -1167,25 +1128,32 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + 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" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +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== + 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== + +has-symbols@^1.0.2, has-symbols@^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== has-tostringtag@^1.0.0: version "1.0.0" @@ -1197,7 +1165,7 @@ has-tostringtag@^1.0.0: has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has@^1.0.3: version "1.0.3" @@ -1212,16 +1180,16 @@ he@1.2.0: integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hosted-git-info@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + 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.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + 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" @@ -1235,16 +1203,16 @@ http-proxy-agent@^4.0.1: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + 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" @@ -1252,7 +1220,7 @@ https-proxy-agent@^5.0.0: humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" @@ -1277,15 +1245,15 @@ ignore-walk@^3.0.3: dependencies: minimatch "^3.0.4" -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +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 sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" @@ -1300,12 +1268,12 @@ infer-owner@^1.0.4: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +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== @@ -1329,19 +1297,10 @@ inquirer@^7.3.3: strip-ansi "^6.0.0" through "^2.3.6" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +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" @@ -1351,13 +1310,6 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1365,42 +1317,27 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +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.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +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== dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + 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 sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" @@ -1426,12 +1363,12 @@ is-glob@^4.0.1, is-glob@~4.0.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 sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + 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 sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-nan@^1.2.1: version "1.3.2" @@ -1441,18 +1378,6 @@ is-nan@^1.2.1: call-bind "^1.0.0" define-properties "^1.1.3" -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1470,75 +1395,37 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.3, is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== +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== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" + 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 sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + 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== -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + 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 sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + 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 sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== js-yaml@4.1.0: version "4.1.0" @@ -1550,12 +1437,12 @@ js-yaml@4.1.0: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + 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 sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-parse-even-better-errors@^2.3.0: version "2.3.1" @@ -1567,29 +1454,29 @@ json-schema-traverse@^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.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +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 sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + 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.2.3" + json-schema "0.4.0" verror "1.10.0" locate-path@^6.0.0: @@ -1602,7 +1489,7 @@ locate-path@^6.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 sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash@^4.17.19: version "4.17.21" @@ -1624,6 +1511,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@0.30.1: + version "0.30.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.1.tgz#ce5cd4b0a81a5d032bd69aab4522299b2166284d" + integrity sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA== + 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" @@ -1632,11 +1526,11 @@ magic-string@^0.22.4: vlq "^0.2.2" magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + 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.4" + sourcemap-codec "^1.4.8" make-fetch-happen@^9.0.1: version "9.1.0" @@ -1660,44 +1554,51 @@ make-fetch-happen@^9.0.1: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -merge2@^1.3.0: +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== micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.50.0: - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== +mime-db@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== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.33" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" - integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== + 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.50.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#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +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== + dependencies: + 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#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@1.x, minimist@^1.2.5: +minimist@^1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -1750,12 +1651,17 @@ minipass-sized@^1.0.3: minipass "^3.0.0" minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" - integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== + 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" @@ -1769,32 +1675,29 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.3.tgz#8a623be6b323810493d8c8f6f7667440fa469fdb" - integrity sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw== +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== dependencies: - "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.2" - debug "4.3.2" + chokidar "3.5.3" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.1.7" - growl "1.10.5" + glob "7.2.0" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "3.0.4" + minimatch "5.0.1" ms "2.1.3" - nanoid "3.1.25" + nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - which "2.0.2" - workerpool "6.1.5" + workerpool "6.2.1" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -1814,15 +1717,15 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanoid@3.1.25: - version "3.1.25" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" - integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== +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== negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + 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" @@ -1925,7 +1828,7 @@ npmlog@^4.1.2: 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 sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== oauth-sign@~0.9.0: version "0.9.0" @@ -1935,12 +1838,7 @@ oauth-sign@~0.9.0: object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-is@^1.0.1: version "1.1.5" @@ -1950,25 +1848,15 @@ object-is@^1.0.1: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.0.12, object-keys@^1.1.1: +object-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== -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -1982,7 +1870,7 @@ onetime@^5.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 sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-limit@^3.0.2: version "3.1.0" @@ -2038,14 +1926,14 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + 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#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +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== @@ -2058,19 +1946,19 @@ path-type@^4.0.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -prettier@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== +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== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +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== @@ -2078,7 +1966,7 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" @@ -2088,20 +1976,25 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +psl@^1.1.33: + version "1.9.0" + 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.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + 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.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + 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" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" @@ -2123,10 +2016,10 @@ read-package-json-fast@^2.0.1: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -readable-stream@^2.0.6, readable-stream@^2.3.5: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +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" @@ -2155,10 +2048,10 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +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== regexpu-core@4.5.4: version "4.5.4" @@ -2184,16 +2077,6 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -replace-ext@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" - integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== - request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -2223,15 +2106,21 @@ request@^2.88.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 sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve@^1.17.0, resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" restore-cursor@^3.1.0: version "3.1.0" @@ -2244,7 +2133,7 @@ restore-cursor@^3.1.0: retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" @@ -2261,7 +2150,7 @@ rimraf@^3.0.2: 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 sha1-WOPjEpetGlMtkRQQi8BvJ1bXLD0= + integrity sha512-fgTlW26jOg5Mkm5+mDr/xst1ZyuH7JBU7KvJfys4C7wU7ymPyaofZsNpBeDnHzE7MVD2YcDjZbOU+M8dUJjG2A== dependencies: google-closure-compiler-js ">20170000" @@ -2350,9 +2239,9 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + 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== dependencies: lru-cache "^6.0.0" @@ -2366,7 +2255,7 @@ serialize-javascript@6.0.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 sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== shebang-command@^2.0.0: version "2.0.0" @@ -2380,79 +2269,60 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" - integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== + 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== slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -smart-buffer@^4.1.0: +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.1.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz#869cf2d7bd10fea96c7ad3111e81726855e285c3" - integrity sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg== + 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.1" - socks "^2.6.1" + debug "^4.3.3" + socks "^2.6.2" -socks@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" - integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== +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 "^1.1.5" - smart-buffer "^4.1.0" + ip "^2.0.0" + smart-buffer "^4.2.0" source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + 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.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - 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.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: +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.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + 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" @@ -2472,14 +2342,14 @@ ssri@^8.0.0, ssri@^8.0.1: minipass "^3.1.1" string-argv@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + 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 sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -2494,22 +2364,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -2520,7 +2374,7 @@ string_decoder@~1.1.1: 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 sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" @@ -2557,31 +2411,37 @@ 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.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + version "6.1.15" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" terser@^5.6.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== + version "5.19.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" + integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" - source-map "~0.7.2" 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" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tmp@^0.0.33: version "0.0.33" @@ -2597,13 +2457,15 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +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== dependencies: - psl "^1.1.28" + psl "^1.1.33" punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" tslib@^1.9.0: version "1.14.1" @@ -2611,21 +2473,21 @@ tslib@^1.9.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + 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 sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-detect@^4.0.8: version "4.0.8" @@ -2642,26 +2504,16 @@ 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@4.4.4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" - integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== +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== typical@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - 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" @@ -2699,6 +2551,11 @@ unique-slug@^2.0.0: 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== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -2706,21 +2563,28 @@ uri-js@^4.2.2: 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== + 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 sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@^0.12.0: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + version "0.12.5" + 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" is-generator-function "^1.0.7" is-typed-array "^1.1.3" - safe-buffer "^5.1.2" which-typed-array "^1.1.2" uuid@^3.3.2: @@ -2731,14 +2595,14 @@ uuid@^3.3.2: 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 sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + 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 sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -2751,54 +2615,23 @@ version-bump-prompt@6.1.0: dependencies: "@jsdevtools/version-bump-prompt" "6.1.0" -vinyl-sourcemaps-apply@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" - integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= - dependencies: - source-map "^0.5.1" - -vinyl@2.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" - integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.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-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== +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== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" + for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" -which@2.0.2, which@^2.0.1, which@^2.0.2: +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== @@ -2819,10 +2652,10 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -workerpool@6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" - integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== +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== wrap-ansi@^7.0.0: version "7.0.0" @@ -2836,7 +2669,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== y18n@^5.0.5: version "5.0.8" @@ -2881,10 +2714,10 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yarn@1.22.17: - version "1.22.17" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.17.tgz#bf910747d22497b573131f7341c0e1d15c74036c" - integrity sha512-H0p241BXaH0UN9IeH//RT82tl5PfNraVpSpEoW+ET7lmopNC61eZ+A+IDvU8FM6Go5vx162SncDL8J1ZjRBriQ== +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== yocto-queue@^0.1.0: version "0.1.0" From 4eb311b749948ad7b837a2030abd8ea495b5c442 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Thu, 27 Jul 2023 16:42:41 +1000 Subject: [PATCH 003/155] release v7.1.2 --- bin/rexreplace.cli.js | 2 +- bin/rexreplace.cli.min.js | 712 ++------------------------------------ package.json | 4 +- 3 files changed, 25 insertions(+), 693 deletions(-) diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 500745a8..394ccea7 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -72,7 +72,7 @@ var path = require('path'); var globs = require('globs'); var now = new Date(); - var version = '7.1.1'; + var version = '7.1.2'; function engine(config) { if ( config === void 0 ) config = { engine: 'V8' }; diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 500745a8..7dd3df55 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,691 +1,23 @@ #!/usr/bin/env node -(function () { - '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 info = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (config.quiet || config.quietTotal) { - return; - } - console.error(font.gray(msg), data); - }; - var chat = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (config.verbose) { - info(msg, data); - } - else { - debug(msg + ' ' + data); - } - }; - 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(); - } - msg && error(' ❌ ' + msg, data); - kill(); - }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); - } - if (config.halt) { - kill(msg); - } - return false; - }; - function debug(data) { - if (config.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } - } - function step(data) { - if (config.verbose) { - debug(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'); - var path = require('path'); - var globs = require('globs'); - var now = new Date(); - var version = '7.1.1'; - function engine(config) { - if ( config === void 0 ) config = { engine: 'V8' }; - - outputConfig(config); - step('Displaying steps for:'); - step(config); - config.pattern = getFinalPattern(config) || ''; - config.replacement = getFinalReplacement(config) || ''; - config.replacementOri = config.replacement; - config.regex = getFinalRegex(config) || ''; - step(config); - if (handlePipedData(config)) { - return doReplacement('Piped data', config, config.pipedData); - } - config.files = globs2paths(config.globs); - if (!config.files.length) { - return error(config.files.length + ' files found'); - } - chat(config.files.length + ' files found'); - step(config); - config.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)); }) - // Do the replacement - .forEach(function (filepath) { return openFile(filepath, config); }); - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - var salt = new Date().toISOString().replace(/:/g, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); - } - return info(_file_rr); - } - // 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) { - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, function (err) { - if (err) { - return error(err); - } - info(_file_rr); - }); - } - else { - info(_file_rr); - } - }); - }); - } - function handlePipedData(config) { - step('Check Piped Data'); - if (config.globs.length) { - if (!config.replacementJs) { - chat('Piped data never used.'); - } - return false; - } - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; - } - return false; - } - function getFinalPattern(conf) { - step('Get final pattern'); - var pattern = replacePlaceholders(conf.pattern, conf); - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); - }*/ - step(pattern); - return pattern; - } - function getFinalReplacement(conf) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - conf.replacement = replacePlaceholders(conf.replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - conf.replacement = conf.pipedData; - } - 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 - //console.log(process); - if (conf.replacementJs && - /\$\d/.test(conf.replacement) && - parseInt(process.versions.node) < 6) { - return die('Captured groups for javascript replacement is only supported in node 6+'); - } - step(conf.replacement); - return conf.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 getFinalRegex(config) { - step('Get final regex with engine: ' + config.engine); - var pattern = config.pattern; - if (config.literal) { - pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); - } - var regex; - var flags = getFlags(config); - switch (config.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.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 (config.debug) - { throw new Error(e$1); } - die(e$1.message); - } - break; - default: - die(("Engine " + (config.engine) + " not supported")); - } - step(regex); - return regex; - } - function getFlags(config) { - step('Get flags'); - var flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; - } - if (config.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.pipedData, _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 = /bytes|size/.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) { - _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(/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/)[1]; - _filename = pathInfo.base; - _name = pathInfo.name; - _ext = pathInfo.ext; - if (betterToReadfromFile || /[mc]time/.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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - // 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); - } - // Captures groups present, 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, 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); - }; - } - 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))); - } - var re = { - euro: /€/g, - section: /§/g, - }; - 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 globs2paths(_globs) { - if ( _globs === void 0 ) _globs = []; - - var globsToInclude = []; - var globsToExclude = []; - _globs.filter(Boolean).forEach(function (glob) { - if ('!' === glob[0] || '^' === glob[0]) { - globsToExclude.push(glob.slice(1)); - } - else { - globsToInclude.push(glob); - } - }); - var filesToInclude = globs.sync(globsToInclude); - if (globsToExclude.length) { - var filesToExclude = globs.sync(globsToExclude); - return 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 - 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; - } - else { - needHelp = 2; - } - } - else { - (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); - } - var yargs = require('yargs') - .strict() - .usage('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' + - '> rexreplace pattern replacement [fileGlob|option]+') - .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") - .example('') - .example("> rr Foo xxx 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") - .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('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('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('€') - .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. " + - '') - .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 will lose the content if the process is abrupted.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep a backup file of the original content.') - .alias('b', 'keep-backup') - .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + - '') - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") - /* - .boolean('N') - .alias('N', 'void-newline') - .describe('N', - `Avoid having newline when outputting data (or when piping). `+ - `Normally . `+ - '' - ) - - - -E (Expect there to be no match and return exit 1 if found) - -e (Expect there to be batch and return exit 1 if not found) - */ - /* .boolean('P') - .describe('P', "Pattern is a filename from where the pattern will be generated. 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 a filename from where the replacement will be generated. ` + - `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` - ) - - */ - /* // Ideas - - .boolean('n') - .describe('n', "Do replacement on file names instead of file content (rename 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('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') - .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") - - - */ - .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(); - //io(help); - 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); - } - // 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 - Object.keys(yargs.argv).forEach(function (key) { - if (1 < key.length && key.indexOf('-') < 0) { - config[key] = yargs.argv[key]; - } - }); - var pipeInUse = false; - var pipeData = ''; - config.globs = yargs.argv._; - config.pipedData = null; - config.showHelp = yargs.showHelp; - config.pattern = pattern; - if (config.replacementJs) { - config.replacement = replacement; - } - else { - config.replacement = unescapeString(replacement); - } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ - if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - engine(config); - } - else { - process.stdin.setEncoding(config.encoding); - 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 (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - config.pipedData = pipeData; - } - engine(config); - }); - } - })(); - -})(); +(function(){function z(a){p.debug&&console.error(w.gray(JSON.stringify(a,null,4)))}function g(a){p.verbose&&z(a)}function R(a,c){void 0===a&&(a=1);void 0===c&&(c="");c&&console.error(+c);process.exit(a)}function S(a){function c(b,d){if(d.voidAsync){A("Open sync: "+b);var e=m.readFileSync(b,d.encoding);return f(b,d,e)}A("Open async: "+b);m.readFile(b,d.encoding,function(h,k){return h?q(h):f(b,d,k)})}function f(b,d,e){z("Work on content from: "+b);d.replacementJs&&(d.replacement=pa(b,d,e));var h=e.replace(d.regex, +d.replacement);if(!d.outputMatch){if(d.output)return z("Output result from: "+b),process.stdout.write(h);if(h===e)A("Nothing changed in: "+b);else{e="";z("Write new content to: "+b);if(d.voidBackup)return m.writeFile(b,h,d.encoding,function(l){if(l)return q(l);B(b)});var k=r.normalize(r.join(process.cwd(),b));e=(new Date).toISOString().replace(/:/g,"_").replace("Z","");var n=k+"."+e+".backup";if(d.voidAsync){try{m.renameSync(k,n),m.writeFileSync(k,h,d.encoding),d.keepBackup||m.unlinkSync(n)}catch(l){return q(l)}return B(b)}m.rename(k, +n,function(l){if(l)return q(l);m.writeFile(k,h,d.encoding,function(v){if(v)return q(v);d.keepBackup?B(b):m.unlink(n,function(t){if(t)return q(t);B(b)})})})}}}void 0===a&&(a={engine:"V8"});p=a;g("Displaying steps for:");g(a);a.pattern=function(b){g("Get final pattern");b=T(b.pattern,b);g(b);return b}(a)||"";a.replacement=function(b){g("Get final replacement");b.replacement=T(b.replacement,b);if(b.replacementPipe){g("Piping replacement");b.pipedDataUsed=!0;if(null===b.pipedData)return x("No data piped into replacement"); +b.replacement=b.pipedData}if(b.outputMatch)return g("Output match"),6>parseInt(process.versions.node)?x("outputMatch is only supported in node 6+"):function(){var d=arguments;g(arguments);if(3===arguments.length)return g("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var e=1;eparseInt(process.versions.node))return x("Captured groups for javascript replacement is only supported in node 6+"); +g(b.replacement);return b.replacement}(a)||"";a.replacementOri=a.replacement;a.regex=function(b){g("Get final regex with engine: "+b.engine);var d=b.pattern;b.literal&&(d=d.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g,"\\$&"));g("Get flags");var e="";b.voidGlobal||(e+="g");b.voidIgnoreCase||(e+="i");b.voidMultiline||(e+="m");b.dotAll&&(e+="s");b.unicode&&(e+="u");g(e);switch(b.engine){case "V8":try{var h=new RegExp(d,e)}catch(k){if(b.debug)throw Error(k);x(k.message)}break;case "RE2":try{h=new (require("re2"))(d, +e)}catch(k){if(b.debug)throw Error(k);x(k.message)}break;default:x("Engine "+b.engine+" not supported")}g(h);return h}(a)||"";g(a);if(function(b){g("Check Piped Data");return b.globs.length?(b.replacementJs||A("Piped data never used."),!1):null===b.pipedData||b.pipedDataUsed?!1:(b.dataIsPiped=!0,b.output=!0)}(a))return f("Piped data",a,a.pipedData);a.files=qa(a.globs);if(!a.files.length)return q(a.files.length+" files found");A(a.files.length+" files found");g(a);a.files.filter(function(b){return m.existsSync(b)? +!0:q("File not found:",b)}).forEach(function(b){return c(b,a)})}function U(a){if(1===a)return"1 Byte";var c=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,c)).toFixed(c?1:0)+" "+["Bytes","KB","MB","GB","TB"][c]}function pa(a,c,f){var b=ra,d=P(b),e=c.pipedData,h=c.pattern,k=c.replacementOri,n=process.cwd(),l="\u274c",v="\u274c",t="\u274c",E="\u274c",F="\u274c",G="\u274c",H="\u274c",I="\u274c",J="\u274c",K="\u274c",L=new Date(0),M=new Date(0),u=-1,C="\u274c",V=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);'), +W=/bytes|size/.test(c.replacement),D=W&&5E7process.argv.length)/-v|--?version$/i.test(process.argv[process.argv.length-1])?(console.log("7.1.2"),process.exitCode=0,process.exit()):Q=/-h|--?help$/i.test(process.argv[process.argv.length- +1])?1:2;else{var na=process.argv.splice(2,2);var wa=na[0];var oa=na[1]}var y=require("yargs").strict().usage("RexReplace 7.1.2: 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> rexreplace pattern replacement [fileGlob|option]+").example("> rexreplace 'Foo' 'xxx' myfile.md","'foobar' in myfile.md will become 'xxxbar'").example("").example("> rr Foo xxx myfile.md","The alias 'rr' can be used instead of 'rexreplace'").example("").example("> rexreplace '(f?(o))o(.*)' '$3$1\u20ac2' 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").version("v","Print rexreplace version (can be given as only argument)","7.1.2").alias("v","version").boolean("V").describe("V","More chatty output").alias("V","verbose").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("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("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",!1).boolean("d").describe("d","Print debug info").alias("d","debug").boolean("\u20ac").describe("\u20ac","Void having '\u20ac' as alias for '$' in pattern and replacement parameters").alias("\u20ac", +"void-euro").boolean("\u00a7").describe("\u00a7","Void having '\u00a7' as alias for '\\' in pattern and replacement parameters").alias("\u00a7","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").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").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 will lose the content if the process is abrupted.").alias("B", +"void-backup").boolean("b").describe("b","Keep a backup file of the original content.").alias("b","keep-backup").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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter.").boolean("j").alias("j","replacement-js").describe("j","Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use \u20ac0, \u20ac1, \u20ac2, \u20ac3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `\u274c` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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").help("h").describe("h", +"Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)");(function(){if(0b.indexOf("-")&&(a[b]=y.argv[b])});var c=!1,f="";a.globs=y.argv._;a.pipedData=null;a.showHelp=y.showHelp;a.pattern=wa;a.replacement=a.replacementJs?oa:va(oa);if(process.stdin.isTTY){if(a.replacementPipe)return ma();S(a)}else process.stdin.setEncoding(a.encoding),process.stdin.on("readable",function(){var b= +process.stdin.read();if(null!==b)for(c=!0,f+=b;b=process.stdin.read();)f+=b}),process.stdin.on("end",function(){c&&(y.argv.trimPipe&&(f=f.trim()),a.pipedData=f);S(a)})})()})(); diff --git a/package.json b/package.json index 8116749e..0ed83f03 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rexreplace", - "version": "7.1.1", + "version": "7.1.2", "description": "Smoothly search & replace in files from CLI.", "author": "Mathias Rangel Wulff", "funding": { @@ -71,7 +71,7 @@ }, "resolutions": { "ansi-regex": "^5.0.1", - "tough-cookie": "^4.1.3" + "tough-cookie": "^4.1.3" }, "directories": { "test": "test" From 982a4dbafb0f02c0c8bc3902c1b5ac192449d5d3 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Fri, 28 Jul 2023 18:43:15 +1000 Subject: [PATCH 004/155] Exclude files via named params --- .prettierrc | 8 + bin/ES6/cli.js | 16 +- bin/ES6/engine.js | 465 ++++++++++++------------ bin/rexreplace.cli.js | 491 +++++++++++++------------- bin/rexreplace.cli.min.js | 725 ++++++++++++++++++++++++++++++++++++-- package.json | 7 +- src/cli.ts | 27 +- src/engine.ts | 477 ++++++++++++------------- test/cli/run.sh | 39 ++ 9 files changed, 1514 insertions(+), 741 deletions(-) create mode 100644 .prettierrc diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..d8c96bcc --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +printWidth: 100 +tabWidth: 4 +useTabs: true +bracketSpacing: false +trailingComma: es5 +singleQuote: true +arrowParens: "avoid" + diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js index d7f874ea..603100b5 100644 --- a/bin/ES6/cli.js +++ b/bin/ES6/cli.js @@ -28,11 +28,13 @@ const yargs = require('yargs') '> rexreplace pattern replacement [fileGlob|option]+') .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) .example('') - .example(`> rr Foo xxx myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + .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 glob if needed`) .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) .alias('v', 'version') .boolean('V') @@ -155,6 +157,12 @@ The following values defaults to \`❌\` if haystack does not originate from a f 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). `) + .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('N') .alias('N', 'void-newline') @@ -183,7 +191,7 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp /* // Ideas .boolean('n') - .describe('n', "Do replacement on file names instead of file content (rename the files)") + .describe('n', "Do replacement on file path/names instead of file content (rename/move the files)") .alias('n', 'name') // https://github.com/eugeneware/replacestream @@ -241,10 +249,12 @@ function unescapeString(str = '') { }); let pipeInUse = false; let pipeData = ''; - config.globs = yargs.argv._; 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; } diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index 6afe3358..6b7c691f 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -3,20 +3,30 @@ const path = require('path'); 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(config = { engine: 'V8' }) { outputConfig(config); step('Displaying steps for:'); step(config); - config.pattern = getFinalPattern(config) || ''; - config.replacement = getFinalReplacement(config) || ''; + config.pattern = getFinalPattern(config.pattern, config) || ''; + config.replacement = getFinalReplacement(config.replacement, config) || ''; config.replacementOri = config.replacement; - config.regex = getFinalRegex(config) || ''; + config.regex = getFinalRegex(config.pattern, config) || ''; step(config); if (handlePipedData(config)) { return doReplacement('Piped data', config, config.pipedData); } - config.files = globs2paths(config.globs); + config.files = getFilePaths(config); if (!config.files.length) { return error(config.files.length + ' files found'); } @@ -29,230 +39,229 @@ export function engine(config = { engine: 'V8' }) { .filter((filepath) => (fs.existsSync(filepath) ? true : error('File not found:', filepath))) // Do the replacement .forEach((filepath) => openFile(filepath, config)); - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, data); - }); - } +} +function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - const salt = new Date().toISOString().replace(/:/g, '_').replace('Z', ''); - const backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); } - return info(_file_rr); - } - // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, (err) => { + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, (err) => { - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, (err) => { - if (err) { - return error(err); - } - info(_file_rr); - }); - } - else { - info(_file_rr); - } - }); + info(_file_rr); }); } - function handlePipedData(config) { - step('Check Piped Data'); - if (config.globs.length) { - if (!config.replacementJs) { - chat('Piped data never used.'); + //Make sure data is always on disk + const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + const backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); } - return false; } - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; + catch (e) { + return error(e); } - return false; - } - function getFinalPattern(conf) { - step('Get final pattern'); - let pattern = replacePlaceholders(conf.pattern, conf); - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); - }*/ - step(pattern); - return pattern; + return info(_file_rr); } - function getFinalReplacement(conf) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - conf.replacement = replacePlaceholders(conf.replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - conf.replacement = conf.pipedData; + // Let me know when fs gets promise'fied + fs.rename(oriFile, backupFile, (err) => { + if (err) { + return error(err); } - if (conf.outputMatch) { - step('Output match'); - if (parseInt(process.versions.node) < 6) { - return die('outputMatch is only supported in node 6+'); + fs.writeFile(oriFile, result, _config_rr.encoding, (err) => { + if (err) { + return error(err); } - 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 - //console.log(process); - if (conf.replacementJs && - /\$\d/.test(conf.replacement) && - parseInt(process.versions.node) < 6) { - return die('Captured groups for javascript replacement is only supported in node 6+'); + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, (err) => { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); +} +function handlePipedData(config) { + step('Check Piped Data'); + if (config.includeGlob.length) { + if (!config.replacementJs && config.pipedData) { + chat('Piped data never used.'); } - step(conf.replacement); - return conf.replacement; + return false; } - /*function oneLinerFromFile(str){ - let lines = str.split("\n"); - if(lines.length===1){ - return str; - } - return lines.map(function (line) { - return line.trim(); - }).join(' '); + if (null !== config.pipedData && !config.pipedDataUsed) { + config.dataIsPiped = true; + config.output = true; + return true; + } + return false; +} +function getFinalPattern(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)(); }*/ - function getFinalRegex(config) { - step('Get final regex with engine: ' + config.engine); - let pattern = config.pattern; - if (config.literal) { - pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); - } - let regex; - let flags = getFlags(config); - switch (config.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.debug) - throw new Error(e); - die(e.message); - } - break; - case 'RE2': - try { - const RE2 = require('re2'); - regex = new RE2(pattern, flags); - } - catch (e) { - if (config.debug) - throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${config.engine} not supported`); + step(pattern); + return pattern; +} +function getFinalReplacement(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'); } - step(regex); - return regex; + replacement = conf.pipedData; } - function getFlags(config) { - step('Get flags'); - let flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; + if (conf.outputMatch) { + step('Output match'); + if (parseInt(process.versions.node) < 6) { + return die('outputMatch is only supported in node 6+'); } - if (config.unicode) { - flags += 'u'; - } - step(flags); - return flags; + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + let regex; + let flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.debug) + throw new Error(e); + die(e.message); + } + break; + case 'RE2': + try { + const RE2 = require('re2'); + regex = new RE2(pattern, flags); + } + catch (e) { + if (config.debug) + throw new Error(e); + die(e.message); + } + break; + default: + die(`Engine ${config.engine} not supported`); } + step(regex); + return regex; +} +function getFlags(config) { + step('Get flags'); + let flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.unicode) { + flags += 'u'; + } + step(flags); + return flags; } function readableSize(size) { if (1 === size) { @@ -280,7 +289,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { '};' + 'require = r;' + 'return eval(__code_rr);'); - const needsByteOrSize = /bytes|size/.test(_config_rr.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 (!_config_rr.dataIsPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); @@ -288,11 +297,11 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = _file.match(/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/)[1]; + _dirname = (_file.match(re.folderName) || ' _')[1]; _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || /[mc]time/.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { const fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -312,7 +321,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 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); } - // Captures groups present, so need to run once per match + // 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; @@ -326,10 +335,6 @@ function dynamicReplacement(_file_rr, _config_rr, _data_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)}`; } -const re = { - euro: /€/g, - section: /§/g, -}; function replacePlaceholders(str = '', conf) { if (!conf.voidEuro) { str = str.replace(re.euro, '$'); @@ -339,21 +344,19 @@ function replacePlaceholders(str = '', conf) { } return str; } -function globs2paths(_globs = []) { - const globsToInclude = []; - const globsToExclude = []; - _globs.filter(Boolean).forEach((glob) => { - if ('!' === glob[0] || '^' === glob[0]) { - globsToExclude.push(glob.slice(1)); - } - else { - globsToInclude.push(glob); - } - }); - let filesToInclude = globs.sync(globsToInclude); - if (globsToExclude.length) { - const filesToExclude = globs.sync(globsToExclude); - return filesToInclude.filter((el) => !filesToExclude.includes(el)); +function getFilePaths(conf) { + let { includeGlob, excludeGlob, excludeRe } = conf; + let filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map((el) => getFinalPattern(el, 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/rexreplace.cli.js b/bin/rexreplace.cli.js index 394ccea7..944fc55e 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -72,6 +72,16 @@ var path = require('path'); 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 = '7.1.2'; function engine(config) { if ( config === void 0 ) config = { engine: 'V8' }; @@ -79,15 +89,15 @@ outputConfig(config); step('Displaying steps for:'); step(config); - config.pattern = getFinalPattern(config) || ''; - config.replacement = getFinalReplacement(config) || ''; + config.pattern = getFinalPattern(config.pattern, config) || ''; + config.replacement = getFinalReplacement(config.replacement, config) || ''; config.replacementOri = config.replacement; - config.regex = getFinalRegex(config) || ''; + config.regex = getFinalRegex(config.pattern, config) || ''; step(config); if (handlePipedData(config)) { return doReplacement('Piped data', config, config.pipedData); } - config.files = globs2paths(config.globs); + config.files = getFilePaths(config); if (!config.files.length) { return error(config.files.length + ' files found'); } @@ -100,232 +110,231 @@ .filter(function (filepath) { return (fs.existsSync(filepath) ? true : error('File not found:', filepath)); }) // Do the replacement .forEach(function (filepath) { return openFile(filepath, config); }); - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, data); - }); - } + } + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - var salt = new Date().toISOString().replace(/:/g, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); } - return info(_file_rr); - } - // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, function (err) { + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, function (err) { - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, function (err) { - if (err) { - return error(err); - } - info(_file_rr); - }); - } - else { - info(_file_rr); - } - }); + info(_file_rr); }); } - function handlePipedData(config) { - step('Check Piped Data'); - if (config.globs.length) { - if (!config.replacementJs) { - chat('Piped data never used.'); + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); } - return false; } - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; + catch (e) { + return error(e); } - return false; + return info(_file_rr); } - function getFinalPattern(conf) { - step('Get final pattern'); - var pattern = replacePlaceholders(conf.pattern, conf); - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); - }*/ - step(pattern); - return pattern; - } - function getFinalReplacement(conf) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - conf.replacement = replacePlaceholders(conf.replacement, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - conf.replacement = conf.pipedData; + // Let me know when fs gets promise'fied + fs.rename(oriFile, backupFile, function (err) { + if (err) { + return error(err); } - if (conf.outputMatch) { - step('Output match'); - if (parseInt(process.versions.node) < 6) { - return die('outputMatch is only supported in node 6+'); + fs.writeFile(oriFile, result, _config_rr.encoding, function (err) { + if (err) { + return error(err); } - 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 - //console.log(process); - if (conf.replacementJs && - /\$\d/.test(conf.replacement) && - parseInt(process.versions.node) < 6) { - return die('Captured groups for javascript replacement is only supported in node 6+'); + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + step('Check Piped Data'); + if (config.includeGlob.length) { + if (!config.replacementJs && config.pipedData) { + chat('Piped data never used.'); } - step(conf.replacement); - return conf.replacement; + return false; } - /*function oneLinerFromFile(str){ - let lines = str.split("\n"); - if(lines.length===1){ - return str; - } - return lines.map(function (line) { - return line.trim(); - }).join(' '); + if (null !== config.pipedData && !config.pipedDataUsed) { + config.dataIsPiped = true; + config.output = true; + return true; + } + return false; + } + function getFinalPattern(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)(); }*/ - function getFinalRegex(config) { - step('Get final regex with engine: ' + config.engine); - var pattern = config.pattern; - if (config.literal) { - pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); - } - var regex; - var flags = getFlags(config); - switch (config.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.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 (config.debug) - { throw new Error(e$1); } - die(e$1.message); - } - break; - default: - die(("Engine " + (config.engine) + " not supported")); - } - step(regex); - return regex; - } - function getFlags(config) { - step('Get flags'); - var flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; + step(pattern); + return pattern; + } + function getFinalReplacement(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'); } - if (config.unicode) { - flags += 'u'; + replacement = conf.pipedData; + } + if (conf.outputMatch) { + step('Output match'); + if (parseInt(process.versions.node) < 6) { + return die('outputMatch is only supported in node 6+'); } - step(flags); - return flags; + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.unicode) { + flags += 'u'; + } + step(flags); + return flags; } function readableSize(size) { if (1 === size) { @@ -353,7 +362,7 @@ '};' + 'require = r;' + 'return eval(__code_rr);'); - var needsByteOrSize = /bytes|size/.test(_config_rr.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 (!_config_rr.dataIsPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); @@ -361,11 +370,11 @@ var pathInfo = path.parse(_file); _dirpath = pathInfo.dir; _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = _file.match(/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/)[1]; + _dirname = (_file.match(re.folderName) || ' _')[1]; _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || /[mc]time/.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { var fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -385,7 +394,7 @@ 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); } - // Captures groups present, so need to run once per match + // Capture groups used, so need to run once per match return function () { var arguments$1 = arguments; @@ -403,10 +412,6 @@ 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 re = { - euro: /€/g, - section: /§/g, - }; function replacePlaceholders(str, conf) { if ( str === void 0 ) str = ''; @@ -418,23 +423,21 @@ } return str; } - function globs2paths(_globs) { - if ( _globs === void 0 ) _globs = []; - - var globsToInclude = []; - var globsToExclude = []; - _globs.filter(Boolean).forEach(function (glob) { - if ('!' === glob[0] || '^' === glob[0]) { - globsToExclude.push(glob.slice(1)); - } - else { - globsToInclude.push(glob); - } - }); - var filesToInclude = globs.sync(globsToInclude); - if (globsToExclude.length) { - var filesToExclude = globs.sync(globsToExclude); - return filesToInclude.filter(function (el) { return !filesToExclude.includes(el); }); + function getFilePaths(conf) { + var includeGlob = conf.includeGlob; + var excludeGlob = conf.excludeGlob; + var excludeRe = conf.excludeRe; + var filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map(function (el) { return getFinalPattern(el, 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; } @@ -467,11 +470,13 @@ '> rexreplace pattern replacement [fileGlob|option]+') .example("> rexreplace 'Foo' 'xxx' myfile.md", "'foobar' in myfile.md will become 'xxxbar'") .example('') - .example("> rr Foo xxx myfile.md", "The alias 'rr' can be used instead of 'rexreplace'") + .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 glob if needed") .version('v', 'Print rexreplace version (can be given as only argument)', version) .alias('v', 'version') .boolean('V') @@ -556,6 +561,12 @@ .boolean('j') .alias('j', 'replacement-js') .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") + .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('N') .alias('N', 'void-newline') @@ -584,7 +595,7 @@ /* // Ideas .boolean('n') - .describe('n', "Do replacement on file names instead of file content (rename the files)") + .describe('n', "Do replacement on file path/names instead of file content (rename/move the files)") .alias('n', 'name') // https://github.com/eugeneware/replacestream @@ -645,10 +656,12 @@ }); var pipeInUse = false; var pipeData = ''; - config.globs = yargs.argv._; 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; } diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 7dd3df55..944fc55e 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,23 +1,704 @@ #!/usr/bin/env node -(function(){function z(a){p.debug&&console.error(w.gray(JSON.stringify(a,null,4)))}function g(a){p.verbose&&z(a)}function R(a,c){void 0===a&&(a=1);void 0===c&&(c="");c&&console.error(+c);process.exit(a)}function S(a){function c(b,d){if(d.voidAsync){A("Open sync: "+b);var e=m.readFileSync(b,d.encoding);return f(b,d,e)}A("Open async: "+b);m.readFile(b,d.encoding,function(h,k){return h?q(h):f(b,d,k)})}function f(b,d,e){z("Work on content from: "+b);d.replacementJs&&(d.replacement=pa(b,d,e));var h=e.replace(d.regex, -d.replacement);if(!d.outputMatch){if(d.output)return z("Output result from: "+b),process.stdout.write(h);if(h===e)A("Nothing changed in: "+b);else{e="";z("Write new content to: "+b);if(d.voidBackup)return m.writeFile(b,h,d.encoding,function(l){if(l)return q(l);B(b)});var k=r.normalize(r.join(process.cwd(),b));e=(new Date).toISOString().replace(/:/g,"_").replace("Z","");var n=k+"."+e+".backup";if(d.voidAsync){try{m.renameSync(k,n),m.writeFileSync(k,h,d.encoding),d.keepBackup||m.unlinkSync(n)}catch(l){return q(l)}return B(b)}m.rename(k, -n,function(l){if(l)return q(l);m.writeFile(k,h,d.encoding,function(v){if(v)return q(v);d.keepBackup?B(b):m.unlink(n,function(t){if(t)return q(t);B(b)})})})}}}void 0===a&&(a={engine:"V8"});p=a;g("Displaying steps for:");g(a);a.pattern=function(b){g("Get final pattern");b=T(b.pattern,b);g(b);return b}(a)||"";a.replacement=function(b){g("Get final replacement");b.replacement=T(b.replacement,b);if(b.replacementPipe){g("Piping replacement");b.pipedDataUsed=!0;if(null===b.pipedData)return x("No data piped into replacement"); -b.replacement=b.pipedData}if(b.outputMatch)return g("Output match"),6>parseInt(process.versions.node)?x("outputMatch is only supported in node 6+"):function(){var d=arguments;g(arguments);if(3===arguments.length)return g("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var e=1;eparseInt(process.versions.node))return x("Captured groups for javascript replacement is only supported in node 6+"); -g(b.replacement);return b.replacement}(a)||"";a.replacementOri=a.replacement;a.regex=function(b){g("Get final regex with engine: "+b.engine);var d=b.pattern;b.literal&&(d=d.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g,"\\$&"));g("Get flags");var e="";b.voidGlobal||(e+="g");b.voidIgnoreCase||(e+="i");b.voidMultiline||(e+="m");b.dotAll&&(e+="s");b.unicode&&(e+="u");g(e);switch(b.engine){case "V8":try{var h=new RegExp(d,e)}catch(k){if(b.debug)throw Error(k);x(k.message)}break;case "RE2":try{h=new (require("re2"))(d, -e)}catch(k){if(b.debug)throw Error(k);x(k.message)}break;default:x("Engine "+b.engine+" not supported")}g(h);return h}(a)||"";g(a);if(function(b){g("Check Piped Data");return b.globs.length?(b.replacementJs||A("Piped data never used."),!1):null===b.pipedData||b.pipedDataUsed?!1:(b.dataIsPiped=!0,b.output=!0)}(a))return f("Piped data",a,a.pipedData);a.files=qa(a.globs);if(!a.files.length)return q(a.files.length+" files found");A(a.files.length+" files found");g(a);a.files.filter(function(b){return m.existsSync(b)? -!0:q("File not found:",b)}).forEach(function(b){return c(b,a)})}function U(a){if(1===a)return"1 Byte";var c=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,c)).toFixed(c?1:0)+" "+["Bytes","KB","MB","GB","TB"][c]}function pa(a,c,f){var b=ra,d=P(b),e=c.pipedData,h=c.pattern,k=c.replacementOri,n=process.cwd(),l="\u274c",v="\u274c",t="\u274c",E="\u274c",F="\u274c",G="\u274c",H="\u274c",I="\u274c",J="\u274c",K="\u274c",L=new Date(0),M=new Date(0),u=-1,C="\u274c",V=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);'), -W=/bytes|size/.test(c.replacement),D=W&&5E7process.argv.length)/-v|--?version$/i.test(process.argv[process.argv.length-1])?(console.log("7.1.2"),process.exitCode=0,process.exit()):Q=/-h|--?help$/i.test(process.argv[process.argv.length- -1])?1:2;else{var na=process.argv.splice(2,2);var wa=na[0];var oa=na[1]}var y=require("yargs").strict().usage("RexReplace 7.1.2: 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> rexreplace pattern replacement [fileGlob|option]+").example("> rexreplace 'Foo' 'xxx' myfile.md","'foobar' in myfile.md will become 'xxxbar'").example("").example("> rr Foo xxx myfile.md","The alias 'rr' can be used instead of 'rexreplace'").example("").example("> rexreplace '(f?(o))o(.*)' '$3$1\u20ac2' 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").version("v","Print rexreplace version (can be given as only argument)","7.1.2").alias("v","version").boolean("V").describe("V","More chatty output").alias("V","verbose").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("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("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",!1).boolean("d").describe("d","Print debug info").alias("d","debug").boolean("\u20ac").describe("\u20ac","Void having '\u20ac' as alias for '$' in pattern and replacement parameters").alias("\u20ac", -"void-euro").boolean("\u00a7").describe("\u00a7","Void having '\u00a7' as alias for '\\' in pattern and replacement parameters").alias("\u00a7","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").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").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 will lose the content if the process is abrupted.").alias("B", -"void-backup").boolean("b").describe("b","Keep a backup file of the original content.").alias("b","keep-backup").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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter.").boolean("j").alias("j","replacement-js").describe("j","Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use \u20ac0, \u20ac1, \u20ac2, \u20ac3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `\u274c` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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").help("h").describe("h", -"Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)");(function(){if(0b.indexOf("-")&&(a[b]=y.argv[b])});var c=!1,f="";a.globs=y.argv._;a.pipedData=null;a.showHelp=y.showHelp;a.pattern=wa;a.replacement=a.replacementJs?oa:va(oa);if(process.stdin.isTTY){if(a.replacementPipe)return ma();S(a)}else process.stdin.setEncoding(a.encoding),process.stdin.on("readable",function(){var b= -process.stdin.read();if(null!==b)for(c=!0,f+=b;b=process.stdin.read();)f+=b}),process.stdin.on("end",function(){c&&(y.argv.trimPipe&&(f=f.trim()),a.pipedData=f);S(a)})})()})(); +(function () { + '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 info = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); + }; + var chat = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } + }; + 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(); + } + msg && error(' ❌ ' + msg, data); + kill(); + }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!config.quiet && !config.quietTotal) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; + }; + function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } + } + function step(data) { + if (config.verbose) { + debug(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'); + var path = require('path'); + 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 = '7.1.2'; + function engine(config) { + if ( config === void 0 ) config = { engine: 'V8' }; + + outputConfig(config); + 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 + // 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)); }) + // Do the replacement + .forEach(function (filepath) { return openFile(filepath, config); }); + } + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + 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; + } + function getFinalPattern(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)(); + }*/ + step(pattern); + return pattern; + } + function getFinalReplacement(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) { + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); + } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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.dataIsPiped) { + _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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // 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, 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); + }; + } + 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 filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map(function (el) { return getFinalPattern(el, 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 + 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; + } + else { + needHelp = 2; + } + } + else { + (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); + } + var yargs = require('yargs') + .strict() + .usage('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' + + '> 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 glob 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('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('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('€') + .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. " + + '') + .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 will lose the content if the process is abrupted.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + + '') + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") + .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('N') + .alias('N', 'void-newline') + .describe('N', + `Avoid having newline when outputting data (or when piping). `+ + `Normally . `+ + '' + ) + + + -E (Expect there to be no match and return exit 1 if found) + -e (Expect there to be batch and return exit 1 if not found) + */ + /* .boolean('P') + .describe('P', "Pattern is a filename from where the pattern will be generated. 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 a filename from where the replacement will be generated. ` + + `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + ) + + */ + /* // Ideas + + .boolean('n') + .describe('n', "Do replacement on file path/names 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('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') + .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") + + + */ + .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(); + //io(help); + 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); + } + // 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 + Object.keys(yargs.argv).forEach(function (key) { + if (1 < key.length && key.indexOf('-') < 0) { + config[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; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + engine(config); + }); + } + })(); + +})(); diff --git a/package.json b/package.json index 0ed83f03..c738b3f8 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,6 @@ "version": "7.1.2", "description": "Smoothly search & replace in files from CLI.", "author": "Mathias Rangel Wulff", - "funding": { - "paymail": "mwulff@moneybutton.com" - }, "license": "MIT", "main": "src/engine.js", "repository": { @@ -70,8 +67,8 @@ "yarn": "1.22.19" }, "resolutions": { - "ansi-regex": "^5.0.1", - "tough-cookie": "^4.1.3" + "ansi-regex": "5.0.1", + "tough-cookie": "4.1.3" }, "directories": { "test": "test" diff --git a/src/cli.ts b/src/cli.ts index e81f1f8a..ea1b046c 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -34,8 +34,9 @@ const yargs = require('yargs') .example(`> rexreplace 'Foo' 'xxx' myfile.md`, `'foobar' in myfile.md will become 'xxxbar'`) .example('') - .example(`> rr Foo xxx myfile.md`, `The alias 'rr' can be used instead of 'rexreplace'`) + .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'` @@ -45,7 +46,11 @@ const yargs = require('yargs') `> 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` + ) .version('v', 'Print rexreplace version (can be given as only argument)', rexreplace.version) .alias('v', 'version') @@ -215,6 +220,17 @@ The following values defaults to \`❌\` if haystack does not originate from a f 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). ` ) + .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('N') .alias('N', 'void-newline') @@ -245,7 +261,7 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp /* // Ideas .boolean('n') - .describe('n', "Do replacement on file names instead of file content (rename the files)") + .describe('n', "Do replacement on file path/names instead of file content (rename/move the files)") .alias('n', 'name') // https://github.com/eugeneware/replacestream @@ -311,10 +327,13 @@ function unescapeString(str = '') { let pipeInUse = false; let pipeData = ''; - config.globs = yargs.argv._; + 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; } else { diff --git a/src/engine.ts b/src/engine.ts index f932e6c4..7f497d1b 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -8,6 +8,17 @@ 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(config: any = {engine: 'V8'}) { @@ -16,13 +27,13 @@ export function engine(config: any = {engine: 'V8'}) { step('Displaying steps for:'); step(config); - config.pattern = getFinalPattern(config) || ''; + config.pattern = getFinalPattern(config.pattern, config) || ''; - config.replacement = getFinalReplacement(config) || ''; + config.replacement = getFinalReplacement(config.replacement, config) || ''; config.replacementOri = config.replacement; - config.regex = getFinalRegex(config) || ''; + config.regex = getFinalRegex(config.pattern, config) || ''; step(config); @@ -30,7 +41,7 @@ export function engine(config: any = {engine: 'V8'}) { return doReplacement('Piped data', config, config.pipedData); } - config.files = globs2paths(config.globs); + config.files = getFilePaths(config); if (!config.files.length) { return error(config.files.length + ' files found'); @@ -48,278 +59,276 @@ export function engine(config: any = {engine: 'V8'}) { // Do the replacement .forEach((filepath) => openFile(filepath, config)); +} + +function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); return doReplacement(file, config, data); - } else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { - if (err) { - return error(err); - } - - return doReplacement(file, config, 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); +// 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } - // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // Main regexp of the whole thing + const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } - // Release the memory while storing files - _data_rr = ''; + // Release the memory while storing files + _data_rr = ''; - debug('Write new content to: ' + _file_rr); + debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - - //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - const salt = new Date().toISOString().replace(/:/g, '_').replace('Z', ''); - const backupFile = oriFile + '.' + salt + '.backup'; + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } catch (e) { - return error(e); + //Make sure data is always on disk + const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + const backupFile = oriFile + '.' + salt + '.backup'; + + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); } - return info(_file_rr); + } catch (e) { + return error(e); + } + return info(_file_rr); + } + + // Let me know when fs gets promise'fied + fs.rename(oriFile, backupFile, (err) => { + if (err) { + return error(err); } - // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, (err) => { + fs.writeFile(oriFile, result, _config_rr.encoding, (err) => { if (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, (err) => { - if (err) { - return error(err); - } - - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, (err) => { - if (err) { - return error(err); - } - info(_file_rr); - }); - } else { + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, (err) => { + if (err) { + return error(err); + } info(_file_rr); - } - }); - }); - } - - function handlePipedData(config) { - step('Check Piped Data'); - - if (config.globs.length) { - if (!config.replacementJs) { - chat('Piped data never used.'); + }); + } else { + info(_file_rr); } + }); + }); +} - return false; - } +function handlePipedData(config) { + step('Check Piped Data'); - if (null !== config.pipedData && !config.pipedDataUsed) { - config.dataIsPiped = true; - config.output = true; - return true; + if (config.includeGlob.length) { + if (!config.replacementJs && config.pipedData) { + chat('Piped data never used.'); } return false; } - function getFinalPattern(conf: any) { - step('Get final pattern'); - let pattern = replacePlaceholders(conf.pattern, conf); - - /*if (config.patternFile) { - pattern = fs.readFileSync(pattern, 'utf8'); - pattern = new Function('return '+pattern)(); - }*/ - - step(pattern); - return pattern; + if (null !== config.pipedData && !config.pipedDataUsed) { + config.dataIsPiped = true; + config.output = true; + return true; } - function getFinalReplacement(conf: any) { - step('Get final replacement'); - /*if(config.replacementFile){ - return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ + return false; +} - conf.replacement = replacePlaceholders(conf.replacement, conf); +function getFinalPattern(pattern, conf: any) { + step('Get final pattern'); + pattern = replacePlaceholders(pattern, conf); - if (conf.replacementPipe) { - step('Piping replacement'); - conf.pipedDataUsed = true; - if (null === conf.pipedData) { - return die('No data piped into replacement'); - } - conf.replacement = conf.pipedData; - } + if (conf.literal) { + pattern = pattern.replace(re.regexSpecialChars, '\\$&'); + } - if (conf.outputMatch) { - step('Output match'); + /*if (config.patternFile) { + pattern = fs.readFileSync(pattern, 'utf8'); + pattern = new Function('return '+pattern)(); + }*/ - if (parseInt(process.versions.node) < 6) { - return die('outputMatch is only supported in node 6+'); - } + step(pattern); + return pattern; +} - return function () { - step(arguments); +function getFinalReplacement(replacement, conf: any) { + step('Get final replacement'); + /*if(config.replacementFile){ + return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); + }*/ - if (arguments.length === 3) { - step('Printing full match'); - process.stdout.write(arguments[0] + '\n'); - return ''; - } + replacement = replacePlaceholders(replacement, conf); - for (var i = 1; i < arguments.length - 2; i++) { - process.stdout.write(arguments[i]); - } - process.stdout.write('\n'); - return ''; - }; + 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 captured groups then run dynamicly - //console.log(process); - if ( - conf.replacementJs && - /\$\d/.test(conf.replacement) && - parseInt(process.versions.node) < 6 - ) { - return die('Captured groups for javascript replacement is only supported in node 6+'); + if (parseInt(process.versions.node) < 6) { + return die('outputMatch is only supported in node 6+'); } - step(conf.replacement); + return function () { + step(arguments); + + if (arguments.length === 3) { + step('Printing full match'); + process.stdout.write(arguments[0] + '\n'); + return ''; + } - return conf.replacement; + for (var i = 1; i < arguments.length - 2; i++) { + process.stdout.write(arguments[i]); + } + process.stdout.write('\n'); + return ''; + }; } - /*function oneLinerFromFile(str){ - let lines = str.split("\n"); - if(lines.length===1){ - return str; - } - return lines.map(function (line) { - return line.trim(); - }).join(' '); - }*/ + // If captured groups then run dynamicly + //console.log(process); + 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+'); + } - function getFinalRegex(config) { - step('Get final regex with engine: ' + config.engine); + step(replacement); - let pattern = config.pattern; + return replacement; +} - if (config.literal) { - pattern = pattern.replace(/[-\[\]{}()*+?.,\/\\^$|#\s]/g, '\\$&'); - } +/*function oneLinerFromFile(str){ + let lines = str.split("\n"); + if(lines.length===1){ + return str; + } + return lines.map(function (line) { + return line.trim(); + }).join(' '); +}*/ - let regex; - - let flags = getFlags(config); - - switch (config.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } catch (e) { - if (config.debug) throw new Error(e); - die(e.message); - } - break; - case 'RE2': - try { - const RE2 = require('re2'); - regex = new RE2(pattern, flags); - } catch (e) { - if (config.debug) throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${config.engine} not supported`); - } +function getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + + let regex; - step(regex); + let flags = getFlags(config); - return regex; + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } catch (e) { + if (config.debug) throw new Error(e); + die(e.message); + } + break; + case 'RE2': + try { + const RE2 = require('re2'); + regex = new RE2(pattern, flags); + } catch (e) { + if (config.debug) throw new Error(e); + die(e.message); + } + break; + default: + die(`Engine ${config.engine} not supported`); } - function getFlags(config) { - step('Get flags'); + step(regex); - let flags = ''; + return regex; +} - if (!config.voidGlobal) { - flags += 'g'; - } +function getFlags(config) { + step('Get flags'); - if (!config.voidIgnoreCase) { - flags += 'i'; - } + let flags = ''; - if (!config.voidMultiline) { - flags += 'm'; - } + if (!config.voidGlobal) { + flags += 'g'; + } - if (config.dotAll) { - flags += 's'; - } + if (!config.voidIgnoreCase) { + flags += 'i'; + } - if (config.unicode) { - flags += 'u'; - } + if (!config.voidMultiline) { + flags += 'm'; + } - step(flags); + if (config.dotAll) { + flags += 's'; + } - return flags; + if (config.unicode) { + flags += 'u'; } + + step(flags); + + return flags; } function readableSize(size) { @@ -429,7 +438,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { 'return eval(__code_rr);' ); - const needsByteOrSize = /bytes|size/.test(_config_rr.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 (!_config_rr.dataIsPiped) { @@ -438,12 +447,12 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; _dirpath_rel = path.relative(_cwd, _dirpath); - _dirname = _file.match(/[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/)[1]; + _dirname = (_file.match(re.folderName) || ' _')[1]; _filename = pathInfo.base; _name = pathInfo.name; _ext = pathInfo.ext; - if (betterToReadfromFile || /[mc]time/.test(_config_rr.replacement)) { + if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { const fileStats = fs.statSync(_file); _bytes = fileStats.size; _size = readableSize(_bytes); @@ -513,7 +522,7 @@ function dynamicReplacement(_file_rr, _config_rr, _data_rr) { code_rr ); } - // Captures groups present, so need to run once per match + // Capture groups used, so need to run once per match return function () { step(arguments); @@ -613,11 +622,6 @@ function localTimeString(dateObj = new Date()) { ).slice(-2)}.${('00' + dateObj.getMilliseconds()).slice(-3)}`; } -const re = { - euro: /€/g, - section: /§/g, -}; - function replacePlaceholders(str = '', conf: any) { if (!conf.voidEuro) { str = str.replace(re.euro, '$'); @@ -630,23 +634,22 @@ function replacePlaceholders(str = '', conf: any) { return str; } -function globs2paths(_globs: string[] = []) { - const globsToInclude: string[] = []; - const globsToExclude: string[] = []; +function getFilePaths(conf) { + let {includeGlob, excludeGlob, excludeRe} = conf; - _globs.filter(Boolean).forEach((glob) => { - if ('!' === glob[0] || '^' === glob[0]) { - globsToExclude.push(glob.slice(1)); - } else { - globsToInclude.push(glob); - } - }); + let filesToInclude = globs.sync(includeGlob); - let filesToInclude = globs.sync(globsToInclude); + if (excludeRe.length) { + excludeRe + .map((el) => getFinalPattern(el, conf)) + .forEach((re) => { + filesToInclude = filesToInclude.filter((el) => !el.match(re)); + }); + } - if (globsToExclude.length) { - const filesToExclude = globs.sync(globsToExclude); - return filesToInclude.filter((el) => !filesToExclude.includes(el)); + if (excludeGlob.length) { + const filesToExclude = globs.sync(excludeGlob); + filesToInclude = filesToInclude.filter((el) => !filesToExclude.includes(el)); } return filesToInclude; diff --git a/test/cli/run.sh b/test/cli/run.sh index bfbc28fd..9ae216f3 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -22,6 +22,7 @@ source $DIR/aserta.sh reset() { echo 'Resetting testdata' echo 'foobar' > my.file + echo 'abc123' > your.file } @@ -217,6 +218,43 @@ assert "rexreplace '*+*' 'b' my.file -o --literal" 'foobar' +# -x +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 your.file" 'abc123' +reset + rexreplace 'b' '*+*' '*.file' -x ^y +assert "cat my.file" 'foo*+*ar' +assert "cat your.file" 'abc123' + + +# -X +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' + + + + + + + + + # # -P # reset @@ -268,6 +306,7 @@ assert "rexreplace '*+*' 'b' my.file -o --literal" 'foobar' # reset rm my.file +rm your.file assert_end "rexreplace" From 6a3286b9dd7c7cff788ef70ae16539a5dc93321f Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Fri, 28 Jul 2023 18:44:37 +1000 Subject: [PATCH 005/155] release v7.1.3 --- README.md | 2 + bin/rexreplace.cli.js | 2 +- bin/rexreplace.cli.min.js | 727 ++------------------------------------ package.json | 2 +- 4 files changed, 28 insertions(+), 705 deletions(-) diff --git a/README.md b/README.md index 09a552df..10d7fe5f 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,8 @@ Flag | Effect `-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 diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 944fc55e..092aad0e 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -82,7 +82,7 @@ byteOrSize: /bytes|size/, folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, }; - var version = '7.1.2'; + var version = '7.1.3'; function engine(config) { if ( config === void 0 ) config = { engine: 'V8' }; diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 944fc55e..14a8670a 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,704 +1,25 @@ #!/usr/bin/env node -(function () { - '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 info = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (config.quiet || config.quietTotal) { - return; - } - console.error(font.gray(msg), data); - }; - var chat = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (config.verbose) { - info(msg, data); - } - else { - debug(msg + ' ' + data); - } - }; - 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(); - } - msg && error(' ❌ ' + msg, data); - kill(); - }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - - if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); - } - if (config.halt) { - kill(msg); - } - return false; - }; - function debug(data) { - if (config.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } - } - function step(data) { - if (config.verbose) { - debug(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'); - var path = require('path'); - 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 = '7.1.2'; - function engine(config) { - if ( config === void 0 ) config = { engine: 'V8' }; - - outputConfig(config); - 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 - // 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)); }) - // Do the replacement - .forEach(function (filepath) { return openFile(filepath, config); }); - } - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); - } - return info(_file_rr); - } - // 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) { - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, function (err) { - if (err) { - return error(err); - } - info(_file_rr); - }); - } - else { - info(_file_rr); - } - }); - }); - } - function handlePipedData(config) { - 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; - } - function getFinalPattern(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)(); - }*/ - step(pattern); - return pattern; - } - function getFinalReplacement(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) { - 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 - //console.log(process); - 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 getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); - var regex; - var flags = getFlags(config); - switch (config.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.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 (config.debug) - { throw new Error(e$1); } - die(e$1.message); - } - break; - default: - die(("Engine " + (config.engine) + " not supported")); - } - step(regex); - return regex; - } - function getFlags(config) { - step('Get flags'); - var flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; - } - if (config.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.pipedData, _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.dataIsPiped) { - _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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - // 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); - } - // 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, 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); - }; - } - 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 filesToInclude = globs.sync(includeGlob); - if (excludeRe.length) { - excludeRe - .map(function (el) { return getFinalPattern(el, 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 - 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; - } - else { - needHelp = 2; - } - } - else { - (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); - } - var yargs = require('yargs') - .strict() - .usage('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' + - '> 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 glob 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('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('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('€') - .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. " + - '') - .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 will lose the content if the process is abrupted.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep a backup file of the original content.') - .alias('b', 'keep-backup') - .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + - '') - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") - .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('N') - .alias('N', 'void-newline') - .describe('N', - `Avoid having newline when outputting data (or when piping). `+ - `Normally . `+ - '' - ) - - - -E (Expect there to be no match and return exit 1 if found) - -e (Expect there to be batch and return exit 1 if not found) - */ - /* .boolean('P') - .describe('P', "Pattern is a filename from where the pattern will be generated. 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 a filename from where the replacement will be generated. ` + - `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` - ) - - */ - /* // Ideas - - .boolean('n') - .describe('n', "Do replacement on file path/names 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('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') - .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") - - - */ - .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(); - //io(help); - 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); - } - // 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 - Object.keys(yargs.argv).forEach(function (key) { - if (1 < key.length && key.indexOf('-') < 0) { - config[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; - } - else { - config.replacement = unescapeString(replacement); - } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ - if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - engine(config); - } - else { - process.stdin.setEncoding(config.encoding); - 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 (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - config.pipedData = pipeData; - } - engine(config); - }); - } - })(); - -})(); +(function(){function x(a){l.debug&&console.error(v.gray(JSON.stringify(a,null,4)))}function f(a){l.verbose&&x(a)}function T(a,b){void 0===a&&(a=1);void 0===b&&(b="");b&&console.error(+b);process.exit(a)}function U(a){void 0===a&&(a={engine:"V8"});l=a;f("Displaying steps for:");f(a);a.pattern=V(a.pattern,a)||"";a.replacement=ra(a.replacement,a)||"";a.replacementOri=a.replacement;a.regex=sa(a.pattern,a)||"";f(a);if(ta(a))return Q("Piped data",a,a.pipedData);a.files=ua(a);if(!a.files.length)return n(a.files.length+ +" files found");y(a.files.length+" files found");f(a);a.files.filter(function(b){return k.existsSync(b)?!0:n("File not found:",b)}).forEach(function(b){return va(b,a)})}function va(a,b){if(b.voidAsync){y("Open sync: "+a);var c=k.readFileSync(a,b.encoding);return Q(a,b,c)}y("Open async: "+a);k.readFile(a,b.encoding,function(d,e){return d?n(d):Q(a,b,e)})}function Q(a,b,c){x("Work on content from: "+a);b.replacementJs&&(b.replacement=wa(a,b,c));var d=c.replace(b.regex,b.replacement);if(!b.outputMatch){if(b.output)return x("Output result from: "+ +a),process.stdout.write(d);if(d===c)y("Nothing changed in: "+a);else{c="";x("Write new content to: "+a);if(b.voidBackup)return k.writeFile(a,d,b.encoding,function(h){if(h)return n(h);z(a)});var e=p.normalize(p.join(process.cwd(),a));c=(new Date).toISOString().replace(q.colon,"_").replace("Z","");var g=e+"."+c+".backup";if(b.voidAsync){try{k.renameSync(e,g),k.writeFileSync(e,d,b.encoding),b.keepBackup||k.unlinkSync(g)}catch(h){return n(h)}return z(a)}k.rename(e,g,function(h){if(h)return n(h);k.writeFile(e, +d,b.encoding,function(A){if(A)return n(A);b.keepBackup?z(a):k.unlink(g,function(m){if(m)return n(m);z(a)})})})}}}function ta(a){f("Check Piped Data");return a.includeGlob.length?(!a.replacementJs&&a.pipedData&&y("Piped data never used."),!1):null===a.pipedData||a.pipedDataUsed?!1:(a.dataIsPiped=!0,a.output=!0)}function V(a,b){f("Get final pattern");a=W(a,b);b.literal&&(a=a.replace(q.regexSpecialChars,"\\$&"));f(a);return a}function ra(a,b){f("Get final replacement");a=W(a,b);if(b.replacementPipe){f("Piping replacement"); +b.pipedDataUsed=!0;if(null===b.pipedData)return w("No data piped into replacement");a=b.pipedData}if(b.outputMatch)return f("Output match"),6>parseInt(process.versions.node)?w("outputMatch is only supported in node 6+"):function(){var c=arguments;f(arguments);if(3===arguments.length)return f("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var d=1;dparseInt(process.versions.node))return w("Captured groups for javascript replacement is only supported in node 6+");f(a);return a}function sa(a,b){f("Get final regex with engine: "+b.engine);f("Get flags");var c="";b.voidGlobal||(c+="g");b.voidIgnoreCase||(c+="i");b.voidMultiline||(c+="m");b.dotAll&&(c+="s");b.unicode&&(c+="u");f(c);switch(b.engine){case "V8":try{var d=new RegExp(a,c)}catch(e){if(b.debug)throw Error(e);w(e.message)}break;case "RE2":try{d=new (require("re2"))(a,c)}catch(e){if(b.debug)throw Error(e); +w(e.message)}break;default:w("Engine "+b.engine+" not supported")}f(d);return d}function X(a){if(1===a)return"1 Byte";var b=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,b)).toFixed(b?1:0)+" "+["Bytes","KB","MB","GB","TB"][b]}function wa(a,b,c){var d=xa,e=R(d),g=b.pipedData,h=b.pattern,A=b.replacementOri,m=process.cwd(),r="\u274c",E="\u274c",B="\u274c",F="\u274c",G="\u274c",H="\u274c",I="\u274c",J="\u274c",K="\u274c",L="\u274c",M=new Date(0),N=new Date(0),t=-1,C="\u274c",Y=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);'), +Z=q.byteOrSize.test(b.replacement),D=Z&&5E7process.argv.length)/-v|--?version$/i.test(process.argv[process.argv.length-1])?(console.log("7.1.3"),process.exitCode=0,process.exit()):S=/-h|--?help$/i.test(process.argv[process.argv.length-1])?1:2;else{var pa=process.argv.splice(2,2);var Ca=pa[0];var qa=pa[1]}var u=require("yargs").strict().usage("RexReplace 7.1.3: 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> 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\u20ac2' 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 glob if needed").version("v", +"Print rexreplace version (can be given as only argument)","7.1.3").alias("v","version").boolean("V").describe("V","More chatty output").alias("V","verbose").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("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("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",!1).boolean("d").describe("d","Print debug info").alias("d","debug").boolean("\u20ac").describe("\u20ac","Void having '\u20ac' as alias for '$' in pattern and replacement parameters").alias("\u20ac","void-euro").boolean("\u00a7").describe("\u00a7","Void having '\u00a7' as alias for '\\' in pattern and replacement parameters").alias("\u00a7", +"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").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").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 will lose the content if the process is abrupted.").alias("B", +"void-backup").boolean("b").describe("b","Keep a backup file of the original content.").alias("b","keep-backup").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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter.").boolean("j").alias("j","replacement-js").describe("j","Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use \u20ac0, \u20ac1, \u20ac2, \u20ac3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `\u274c` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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").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").help("h").describe("h","Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)");(function(){if(0d.indexOf("-")&&(a[d]=u.argv[d])});var b=!1,c="";a.pipedData=null;a.showHelp=u.showHelp;a.pattern=Ca;a.includeGlob=u.argv._;a.excludeGlob=[].concat(u.argv.excludeGlob).filter(Boolean);a.excludeRe=[].concat(u.argv.excludeRe).filter(Boolean);a.replacement=a.replacementJs?qa:Ba(qa);if(process.stdin.isTTY){if(a.replacementPipe)return oa();U(a)}else process.stdin.setEncoding(a.encoding),process.stdin.on("readable",function(){var d=process.stdin.read();if(null!==d)for(b=!0,c+=d;d=process.stdin.read();)c+= +d}),process.stdin.on("end",function(){b&&(u.argv.trimPipe&&(c=c.trim()),a.pipedData=c);U(a)})})()})(); diff --git a/package.json b/package.json index c738b3f8..55da158e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rexreplace", - "version": "7.1.2", + "version": "7.1.3", "description": "Smoothly search & replace in files from CLI.", "author": "Mathias Rangel Wulff", "license": "MIT", From 7290089b7a3c355e0e6632d62679c993dbfb8b22 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Fri, 28 Jul 2023 19:06:15 +1000 Subject: [PATCH 006/155] Devops --- .github/workflows/nodejs.yml | 6 +++--- .npmignore | 6 ++++-- README.md | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 5e4806fb..829456e6 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -2,9 +2,9 @@ name: CI-test on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: @@ -13,7 +13,7 @@ jobs: strategy: matrix: - node-version: [12.x, 14.x, 16.x, 17.x, 18.x, 19.x, 20.x] + node-version: [14.x, 16.x, 17.x, 18.x, 19.x, 20.x] steps: - uses: actions/checkout@v2 diff --git a/.npmignore b/.npmignore index f6295369..e46c6cc4 100644 --- a/.npmignore +++ b/.npmignore @@ -3,8 +3,10 @@ src/* gfx/* rollup.config.js tmp/* -.*/ +.* *.log *.txt *.file -*.lock \ No newline at end of file +*.lock +*.ts +legacy/ \ No newline at end of file diff --git a/README.md b/README.md index 10d7fe5f..a83c23f7 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ rr x y myfile -o > /dev/null 0,21s user 0,04s system 86% cpu 0,294 total ## Test ### Regression -All CLI end to end tests are defined in [test/cli/run.sh](https://github.com/mathiasrw/rexreplace/blob/master/test/cli/run.sh) and all unit test are described in [`test/*.js`](https://github.com/mathiasrw/rexreplace/tree/master/test). After `git clone`'ing the repo and `npm install`'ing you can invoke them with: +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 > npm test @@ -281,7 +281,7 @@ _**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/master/test/speed/testlog.speed.md). +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).

From 7f14931228fc977d95dc2220b0b5cf17e39b2248 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Fri, 28 Jul 2023 23:28:37 +1000 Subject: [PATCH 007/155] Devops --- bin/rexreplace.cli.min.js | 727 ++++++++++++++++++++++++++++++++++++-- package.json | 1 - yarn.lock | 9 +- 3 files changed, 705 insertions(+), 32 deletions(-) diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 14a8670a..092aad0e 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,25 +1,704 @@ #!/usr/bin/env node -(function(){function x(a){l.debug&&console.error(v.gray(JSON.stringify(a,null,4)))}function f(a){l.verbose&&x(a)}function T(a,b){void 0===a&&(a=1);void 0===b&&(b="");b&&console.error(+b);process.exit(a)}function U(a){void 0===a&&(a={engine:"V8"});l=a;f("Displaying steps for:");f(a);a.pattern=V(a.pattern,a)||"";a.replacement=ra(a.replacement,a)||"";a.replacementOri=a.replacement;a.regex=sa(a.pattern,a)||"";f(a);if(ta(a))return Q("Piped data",a,a.pipedData);a.files=ua(a);if(!a.files.length)return n(a.files.length+ -" files found");y(a.files.length+" files found");f(a);a.files.filter(function(b){return k.existsSync(b)?!0:n("File not found:",b)}).forEach(function(b){return va(b,a)})}function va(a,b){if(b.voidAsync){y("Open sync: "+a);var c=k.readFileSync(a,b.encoding);return Q(a,b,c)}y("Open async: "+a);k.readFile(a,b.encoding,function(d,e){return d?n(d):Q(a,b,e)})}function Q(a,b,c){x("Work on content from: "+a);b.replacementJs&&(b.replacement=wa(a,b,c));var d=c.replace(b.regex,b.replacement);if(!b.outputMatch){if(b.output)return x("Output result from: "+ -a),process.stdout.write(d);if(d===c)y("Nothing changed in: "+a);else{c="";x("Write new content to: "+a);if(b.voidBackup)return k.writeFile(a,d,b.encoding,function(h){if(h)return n(h);z(a)});var e=p.normalize(p.join(process.cwd(),a));c=(new Date).toISOString().replace(q.colon,"_").replace("Z","");var g=e+"."+c+".backup";if(b.voidAsync){try{k.renameSync(e,g),k.writeFileSync(e,d,b.encoding),b.keepBackup||k.unlinkSync(g)}catch(h){return n(h)}return z(a)}k.rename(e,g,function(h){if(h)return n(h);k.writeFile(e, -d,b.encoding,function(A){if(A)return n(A);b.keepBackup?z(a):k.unlink(g,function(m){if(m)return n(m);z(a)})})})}}}function ta(a){f("Check Piped Data");return a.includeGlob.length?(!a.replacementJs&&a.pipedData&&y("Piped data never used."),!1):null===a.pipedData||a.pipedDataUsed?!1:(a.dataIsPiped=!0,a.output=!0)}function V(a,b){f("Get final pattern");a=W(a,b);b.literal&&(a=a.replace(q.regexSpecialChars,"\\$&"));f(a);return a}function ra(a,b){f("Get final replacement");a=W(a,b);if(b.replacementPipe){f("Piping replacement"); -b.pipedDataUsed=!0;if(null===b.pipedData)return w("No data piped into replacement");a=b.pipedData}if(b.outputMatch)return f("Output match"),6>parseInt(process.versions.node)?w("outputMatch is only supported in node 6+"):function(){var c=arguments;f(arguments);if(3===arguments.length)return f("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var d=1;dparseInt(process.versions.node))return w("Captured groups for javascript replacement is only supported in node 6+");f(a);return a}function sa(a,b){f("Get final regex with engine: "+b.engine);f("Get flags");var c="";b.voidGlobal||(c+="g");b.voidIgnoreCase||(c+="i");b.voidMultiline||(c+="m");b.dotAll&&(c+="s");b.unicode&&(c+="u");f(c);switch(b.engine){case "V8":try{var d=new RegExp(a,c)}catch(e){if(b.debug)throw Error(e);w(e.message)}break;case "RE2":try{d=new (require("re2"))(a,c)}catch(e){if(b.debug)throw Error(e); -w(e.message)}break;default:w("Engine "+b.engine+" not supported")}f(d);return d}function X(a){if(1===a)return"1 Byte";var b=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,b)).toFixed(b?1:0)+" "+["Bytes","KB","MB","GB","TB"][b]}function wa(a,b,c){var d=xa,e=R(d),g=b.pipedData,h=b.pattern,A=b.replacementOri,m=process.cwd(),r="\u274c",E="\u274c",B="\u274c",F="\u274c",G="\u274c",H="\u274c",I="\u274c",J="\u274c",K="\u274c",L="\u274c",M=new Date(0),N=new Date(0),t=-1,C="\u274c",Y=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);'), -Z=q.byteOrSize.test(b.replacement),D=Z&&5E7process.argv.length)/-v|--?version$/i.test(process.argv[process.argv.length-1])?(console.log("7.1.3"),process.exitCode=0,process.exit()):S=/-h|--?help$/i.test(process.argv[process.argv.length-1])?1:2;else{var pa=process.argv.splice(2,2);var Ca=pa[0];var qa=pa[1]}var u=require("yargs").strict().usage("RexReplace 7.1.3: 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> 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\u20ac2' 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 glob if needed").version("v", -"Print rexreplace version (can be given as only argument)","7.1.3").alias("v","version").boolean("V").describe("V","More chatty output").alias("V","verbose").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("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("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",!1).boolean("d").describe("d","Print debug info").alias("d","debug").boolean("\u20ac").describe("\u20ac","Void having '\u20ac' as alias for '$' in pattern and replacement parameters").alias("\u20ac","void-euro").boolean("\u00a7").describe("\u00a7","Void having '\u00a7' as alias for '\\' in pattern and replacement parameters").alias("\u00a7", -"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").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").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 will lose the content if the process is abrupted.").alias("B", -"void-backup").boolean("b").describe("b","Keep a backup file of the original content.").alias("b","keep-backup").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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter.").boolean("j").alias("j","replacement-js").describe("j","Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use \u20ac0, \u20ac1, \u20ac2, \u20ac3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `\u274c` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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").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").help("h").describe("h","Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)");(function(){if(0d.indexOf("-")&&(a[d]=u.argv[d])});var b=!1,c="";a.pipedData=null;a.showHelp=u.showHelp;a.pattern=Ca;a.includeGlob=u.argv._;a.excludeGlob=[].concat(u.argv.excludeGlob).filter(Boolean);a.excludeRe=[].concat(u.argv.excludeRe).filter(Boolean);a.replacement=a.replacementJs?qa:Ba(qa);if(process.stdin.isTTY){if(a.replacementPipe)return oa();U(a)}else process.stdin.setEncoding(a.encoding),process.stdin.on("readable",function(){var d=process.stdin.read();if(null!==d)for(b=!0,c+=d;d=process.stdin.read();)c+= -d}),process.stdin.on("end",function(){b&&(u.argv.trimPipe&&(c=c.trim()),a.pipedData=c);U(a)})})()})(); +(function () { + '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 info = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); + }; + var chat = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } + }; + 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(); + } + msg && error(' ❌ ' + msg, data); + kill(); + }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!config.quiet && !config.quietTotal) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; + }; + function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } + } + function step(data) { + if (config.verbose) { + debug(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'); + var path = require('path'); + 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 = '7.1.3'; + function engine(config) { + if ( config === void 0 ) config = { engine: 'V8' }; + + outputConfig(config); + 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 + // 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)); }) + // Do the replacement + .forEach(function (filepath) { return openFile(filepath, config); }); + } + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + 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; + } + function getFinalPattern(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)(); + }*/ + step(pattern); + return pattern; + } + function getFinalReplacement(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) { + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); + } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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.dataIsPiped) { + _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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // 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, 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); + }; + } + 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 filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map(function (el) { return getFinalPattern(el, 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 + 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; + } + else { + needHelp = 2; + } + } + else { + (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); + } + var yargs = require('yargs') + .strict() + .usage('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' + + '> 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 glob 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('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('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('€') + .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. " + + '') + .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 will lose the content if the process is abrupted.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + + '') + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") + .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('N') + .alias('N', 'void-newline') + .describe('N', + `Avoid having newline when outputting data (or when piping). `+ + `Normally . `+ + '' + ) + + + -E (Expect there to be no match and return exit 1 if found) + -e (Expect there to be batch and return exit 1 if not found) + */ + /* .boolean('P') + .describe('P', "Pattern is a filename from where the pattern will be generated. 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 a filename from where the replacement will be generated. ` + + `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + ) + + */ + /* // Ideas + + .boolean('n') + .describe('n', "Do replacement on file path/names 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('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') + .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") + + + */ + .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(); + //io(help); + 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); + } + // 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 + Object.keys(yargs.argv).forEach(function (key) { + if (1 < key.length && key.indexOf('-') < 0) { + config[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; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + engine(config); + }); + } + })(); + +})(); diff --git a/package.json b/package.json index 55da158e..b7c6db42 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "test": "test" }, "dependencies": { - "ansi-regex": "6.0.1", "globs": "0.1.4", "yargs": "16.2.0" }, diff --git a/yarn.lock b/yarn.lock index 7cc82112..e2bc8a99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -327,12 +327,7 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-regex@^2.0.0, ansi-regex@^5.0.1: +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== @@ -2457,7 +2452,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tough-cookie@^4.1.3, tough-cookie@~2.5.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== From b81073df2592a37fac0bb198cff61c7d4ce33695 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Sat, 29 Jul 2023 11:13:45 +1000 Subject: [PATCH 008/155] Create scorecard.yml --- .github/workflows/scorecard.yml | 72 +++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 00000000..530a12b3 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,72 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '28 17 * * 5' + push: + branches: [ "main" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + with: + sarif_file: results.sarif From 7b419770a3bb31168008ff5545aef3370231d405 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 05:13:25 +0000 Subject: [PATCH 009/155] Update actions/upload-artifact action to v3.1.2 (#349) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 530a12b3..3ae866a5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: SARIF file path: results.sarif From 618323f9302dfafaeacce106ba54abfa00f46693 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 06:31:14 +0000 Subject: [PATCH 010/155] Update dependency magic-string to v0.30.2 (#350) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b7c6db42..3ef894f5 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "3.0.0", "@types/node": "20.4.5", "assert": "^2.0.0", - "magic-string": "0.30.1", + "magic-string": "0.30.2", "mocha": "10.2.0", "prettier": "3.0.0", "rollup": "2.58.0", diff --git a/yarn.lock b/yarn.lock index e2bc8a99..9eb96c00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1506,10 +1506,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@0.30.1: - version "0.30.1" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.1.tgz#ce5cd4b0a81a5d032bd69aab4522299b2166284d" - integrity sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA== +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== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" From d28ca6143925126c01d87ef2e449329d86cc4b56 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 09:15:04 +0000 Subject: [PATCH 011/155] Update dependency rollup-plugin-filesize to v9.1.2 (#351) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 3ef894f5..35672aa8 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "prettier": "3.0.0", "rollup": "2.58.0", "rollup-plugin-closure-compiler-js": "^1.0.6", - "rollup-plugin-filesize": "9.1.1", + "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", diff --git a/yarn.lock b/yarn.lock index 9eb96c00..45a32308 100644 --- a/yarn.lock +++ b/yarn.lock @@ -666,7 +666,7 @@ color-name@~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: +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== @@ -2149,15 +2149,15 @@ rollup-plugin-closure-compiler-js@^1.0.6: dependencies: google-closure-compiler-js ">20170000" -rollup-plugin-filesize@9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.1.tgz#31a6b02b27ce08082ef0970cfe4c451714ff91c4" - integrity sha512-x0r2A85TCEdRwF3rm+bcN4eAmbER8tt+YVf88gBQ6sLyH4oGcnNLPQqAUX+v7mIvHC/y59QwZvo6vxaC2ias6Q== +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" + colors "1.4.0" filesize "^6.1.0" gzip-size "^6.0.0" pacote "^11.2.7" From 16c1fd7a97a34ad896533f601316752e948bcd7a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 13:05:15 +0000 Subject: [PATCH 012/155] Update dependency @rollup/plugin-node-resolve to v13.3.0 (#352) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 35672aa8..09ed6a70 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rollup/plugin-buble": "0.21.3", "@rollup/plugin-commonjs": "20.0.0", - "@rollup/plugin-node-resolve": "13.0.6", + "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "3.0.0", "@types/node": "20.4.5", "assert": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 45a32308..18a0c56c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -186,15 +186,15 @@ magic-string "^0.25.7" resolve "^1.17.0" -"@rollup/plugin-node-resolve@13.0.6": - version "13.0.6" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz#29629070bb767567be8157f575cfa8f2b8e9ef77" - integrity sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA== +"@rollup/plugin-node-resolve@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" deepmerge "^4.2.2" + is-builtin-module "^3.1.0" is-module "^1.0.0" resolve "^1.19.0" @@ -507,7 +507,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -builtin-modules@^3.1.0: +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== @@ -1312,6 +1312,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-builtin-module@^3.1.0: + 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" From 39c4eede78a2c2661e6e050b3553d614a1d52097 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 15:10:16 +0000 Subject: [PATCH 013/155] Update dependency @rollup/plugin-replace to v3.1.0 (#353) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 09ed6a70..92430e63 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@rollup/plugin-buble": "0.21.3", "@rollup/plugin-commonjs": "20.0.0", "@rollup/plugin-node-resolve": "13.3.0", - "@rollup/plugin-replace": "3.0.0", + "@rollup/plugin-replace": "3.1.0", "@types/node": "20.4.5", "assert": "^2.0.0", "magic-string": "0.30.2", diff --git a/yarn.lock b/yarn.lock index 18a0c56c..19125c50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -198,10 +198,10 @@ is-module "^1.0.0" resolve "^1.19.0" -"@rollup/plugin-replace@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz#3a4c9665d4e7a4ce2c360cf021232784892f3fac" - integrity sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg== +"@rollup/plugin-replace@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-3.1.0.tgz#d31e3a90c6b47064f3c9f2ce0ded5bcf0d3b82f6" + integrity sha512-pA3XRUrSKybVYqmH5TqWNZpGxF+VV+1GrYchKgCNIj2vsSOX7CVm2RCtx8p2nrC7xvkziYyK+lSi74T93MU3YA== dependencies: "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" From bce540d3a498c61119bd1f7fe8416e4ce6d69cf7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 01:22:12 +1000 Subject: [PATCH 014/155] Update dependency rollup to v2.79.1 (#354) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 92430e63..397cb09e 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "magic-string": "0.30.2", "mocha": "10.2.0", "prettier": "3.0.0", - "rollup": "2.58.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", diff --git a/yarn.lock b/yarn.lock index 19125c50..7f1dd814 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2199,10 +2199,10 @@ rollup-plugin-typescript3@1.1.3: glob "^7.1.6" tslib "^2.1.0" -rollup@2.58.0: - version "2.58.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" - integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== +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" From 0fee1b27b26282952127db2c29527189041999ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 01:22:26 +1000 Subject: [PATCH 015/155] Update github/codeql-action action to v2.21.2 (#355) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3ae866a5..b93b1a24 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/upload-sarif@0ba4244466797eb048eb91a6cd43d5c03ca8bd05 # v2.21.2 with: sarif_file: results.sarif From a1add35927d5ad09da8b4d125a85ac7e381178fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 01:26:15 +1000 Subject: [PATCH 016/155] Update dependency @rollup/plugin-buble to v1 (#360) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 397cb09e..a4adb86a 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "sed" ], "devDependencies": { - "@rollup/plugin-buble": "0.21.3", + "@rollup/plugin-buble": "1.0.2", "@rollup/plugin-commonjs": "20.0.0", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "3.1.0", diff --git a/yarn.lock b/yarn.lock index 7f1dd814..11cdc85e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -164,12 +164,12 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" -"@rollup/plugin-buble@0.21.3": - version "0.21.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e" - integrity sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw== +"@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" "^3.0.8" + "@rollup/pluginutils" "^5.0.1" "@types/buble" "^0.19.2" buble "^0.20.0" @@ -206,7 +206,7 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -215,6 +215,15 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@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== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -227,7 +236,7 @@ dependencies: magic-string "^0.25.0" -"@types/estree@*": +"@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== @@ -861,7 +870,7 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -estree-walker@^2.0.1: +estree-walker@^2.0.1, 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== From 0927ab9d6d51f56ac2d66e32397ec56ea25383bb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 01:26:27 +1000 Subject: [PATCH 017/155] Update github/super-linter Docker tag to v2.2.2 (#356) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/linter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 95ff540f..04e183cc 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -43,7 +43,7 @@ jobs: # Run Linter against code base # ################################ - name: Lint Code Base - uses: docker://github/super-linter:v2.0.0 + uses: docker://github/super-linter:v2.2.2 env: VALIDATE_ALL_CODEBASE: true VALIDATE_YAML: true From 13a7e03f2690916bd48c6883bd19a03bc50ab3ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 21:31:44 +0000 Subject: [PATCH 018/155] Update ossf/scorecard-action action to v2.2.0 (#357) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b93b1a24..d3f7883f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0 with: results_file: results.sarif results_format: sarif From e36531648256ff413f8e27e6e7676c69c736168e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 00:04:05 +0000 Subject: [PATCH 019/155] Update actions/checkout action (#358) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/linter.yml | 2 +- .github/workflows/nodejs.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 04e183cc..fa28570b 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -37,7 +37,7 @@ jobs: # Checkout the code base # ########################## - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v3 ################################ # Run Linter against code base # diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 829456e6..83fea1fa 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -16,7 +16,7 @@ jobs: node-version: [14.x, 16.x, 17.x, 18.x, 19.x, 20.x] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d3f7883f..ce2f90c6 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: persist-credentials: false From 47e6c601cd5ce89c743481160f350688f94fe301 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 04:30:32 +0000 Subject: [PATCH 020/155] Update actions/setup-node action to v3 (#359) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/nodejs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 83fea1fa..1457ba7e 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: npx yarn install From ddb60ef3d442e55d21964ed980e2f96facb418c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 08:16:39 +0000 Subject: [PATCH 021/155] Update dependency @rollup/plugin-commonjs to v25 (#361) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 52 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index a4adb86a..f2943bfc 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "devDependencies": { "@rollup/plugin-buble": "1.0.2", - "@rollup/plugin-commonjs": "20.0.0", + "@rollup/plugin-commonjs": "25.0.3", "@rollup/plugin-node-resolve": "13.3.0", "@rollup/plugin-replace": "3.1.0", "@types/node": "20.4.5", diff --git a/yarn.lock b/yarn.lock index 11cdc85e..bee34210 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,7 +46,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.15": +"@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== @@ -173,18 +173,17 @@ "@types/buble" "^0.19.2" buble "^0.20.0" -"@rollup/plugin-commonjs@20.0.0": - version "20.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz#3246872dcbcb18a54aaa6277a8c7d7f1b155b745" - integrity sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg== +"@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" "^3.1.0" + "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.27.0" "@rollup/plugin-node-resolve@13.3.0": version "13.3.0" @@ -870,7 +869,7 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -estree-walker@^2.0.1, estree-walker@^2.0.2: +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== @@ -1076,6 +1075,17 @@ 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" @@ -1399,7 +1409,7 @@ 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: +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== @@ -1543,6 +1553,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: 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-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" @@ -1609,6 +1626,13 @@ 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" @@ -2124,7 +2148,7 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve@^1.17.0, resolve@^1.19.0: +resolve@^1.19.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== From 6ed405bc2c6e062ba0e9d90273c8bd41c4cbb27a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 20:25:27 +1000 Subject: [PATCH 022/155] Update dependency @rollup/plugin-node-resolve to v15 (#362) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 32 +++++++++++++++----------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index f2943bfc..493bd9b1 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rollup/plugin-buble": "1.0.2", "@rollup/plugin-commonjs": "25.0.3", - "@rollup/plugin-node-resolve": "13.3.0", + "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "3.1.0", "@types/node": "20.4.5", "assert": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index bee34210..a2fb4e3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -185,17 +185,17 @@ is-reference "1.2.1" magic-string "^0.27.0" -"@rollup/plugin-node-resolve@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" - integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== +"@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" "^3.1.0" - "@types/resolve" "1.17.1" + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" deepmerge "^4.2.2" - is-builtin-module "^3.1.0" + is-builtin-module "^3.2.1" is-module "^1.0.0" - resolve "^1.19.0" + resolve "^1.22.1" "@rollup/plugin-replace@3.1.0": version "3.1.0" @@ -245,17 +245,15 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/node@*", "@types/node@20.4.5": +"@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== -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" +"@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== abbrev@1: version "1.1.1" @@ -1331,7 +1329,7 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-builtin-module@^3.1.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== @@ -2148,7 +2146,7 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve@^1.19.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== From 118c87920d9d534b81fb7d143944c9f5411edda1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 10:35:45 +0000 Subject: [PATCH 023/155] Update dependency @rollup/plugin-replace to v5 (#363) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 33 +++++++-------------------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 493bd9b1..54398307 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@rollup/plugin-buble": "1.0.2", "@rollup/plugin-commonjs": "25.0.3", "@rollup/plugin-node-resolve": "15.1.0", - "@rollup/plugin-replace": "3.1.0", + "@rollup/plugin-replace": "5.0.2", "@types/node": "20.4.5", "assert": "^2.0.0", "magic-string": "0.30.2", diff --git a/yarn.lock b/yarn.lock index a2fb4e3b..25b50c01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -197,22 +197,13 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-3.1.0.tgz#d31e3a90c6b47064f3c9f2ce0ded5bcf0d3b82f6" - integrity sha512-pA3XRUrSKybVYqmH5TqWNZpGxF+VV+1GrYchKgCNIj2vsSOX7CVm2RCtx8p2nrC7xvkziYyK+lSi74T93MU3YA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== +"@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: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" + "@rollup/pluginutils" "^5.0.1" + magic-string "^0.27.0" "@rollup/pluginutils@^5.0.1": version "5.0.2" @@ -240,11 +231,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/node@20.4.5": version "20.4.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" @@ -862,11 +848,6 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -1981,7 +1962,7 @@ performance-now@^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.2.2, picomatch@^2.3.1: +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== From 298c3f6b94f0324b75835780ff500c5740c594fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 20:36:16 +1000 Subject: [PATCH 024/155] Bump http-cache-semantics from 4.1.0 to 4.1.1 (#343) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From df73e41d3947723d77aca715753e3ed6af6e3290 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Fri, 28 Jul 2023 19:06:15 +1000 Subject: [PATCH 025/155] Devops --- .github/workflows/nodejs.yml | 6 +++--- .npmignore | 6 ++++-- README.md | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 5e4806fb..829456e6 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -2,9 +2,9 @@ name: CI-test on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: @@ -13,7 +13,7 @@ jobs: strategy: matrix: - node-version: [12.x, 14.x, 16.x, 17.x, 18.x, 19.x, 20.x] + node-version: [14.x, 16.x, 17.x, 18.x, 19.x, 20.x] steps: - uses: actions/checkout@v2 diff --git a/.npmignore b/.npmignore index f6295369..e46c6cc4 100644 --- a/.npmignore +++ b/.npmignore @@ -3,8 +3,10 @@ src/* gfx/* rollup.config.js tmp/* -.*/ +.* *.log *.txt *.file -*.lock \ No newline at end of file +*.lock +*.ts +legacy/ \ No newline at end of file diff --git a/README.md b/README.md index 10d7fe5f..a83c23f7 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ rr x y myfile -o > /dev/null 0,21s user 0,04s system 86% cpu 0,294 total ## Test ### Regression -All CLI end to end tests are defined in [test/cli/run.sh](https://github.com/mathiasrw/rexreplace/blob/master/test/cli/run.sh) and all unit test are described in [`test/*.js`](https://github.com/mathiasrw/rexreplace/tree/master/test). After `git clone`'ing the repo and `npm install`'ing you can invoke them with: +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 > npm test @@ -281,7 +281,7 @@ _**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/master/test/speed/testlog.speed.md). +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).

From bd7dae6d29e821200d0d9bced42568f29ea70763 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Fri, 28 Jul 2023 23:28:37 +1000 Subject: [PATCH 026/155] Devops --- bin/rexreplace.cli.min.js | 727 ++++++++++++++++++++++++++++++++++++-- package.json | 1 - yarn.lock | 9 +- 3 files changed, 705 insertions(+), 32 deletions(-) diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 14a8670a..092aad0e 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -1,25 +1,704 @@ #!/usr/bin/env node -(function(){function x(a){l.debug&&console.error(v.gray(JSON.stringify(a,null,4)))}function f(a){l.verbose&&x(a)}function T(a,b){void 0===a&&(a=1);void 0===b&&(b="");b&&console.error(+b);process.exit(a)}function U(a){void 0===a&&(a={engine:"V8"});l=a;f("Displaying steps for:");f(a);a.pattern=V(a.pattern,a)||"";a.replacement=ra(a.replacement,a)||"";a.replacementOri=a.replacement;a.regex=sa(a.pattern,a)||"";f(a);if(ta(a))return Q("Piped data",a,a.pipedData);a.files=ua(a);if(!a.files.length)return n(a.files.length+ -" files found");y(a.files.length+" files found");f(a);a.files.filter(function(b){return k.existsSync(b)?!0:n("File not found:",b)}).forEach(function(b){return va(b,a)})}function va(a,b){if(b.voidAsync){y("Open sync: "+a);var c=k.readFileSync(a,b.encoding);return Q(a,b,c)}y("Open async: "+a);k.readFile(a,b.encoding,function(d,e){return d?n(d):Q(a,b,e)})}function Q(a,b,c){x("Work on content from: "+a);b.replacementJs&&(b.replacement=wa(a,b,c));var d=c.replace(b.regex,b.replacement);if(!b.outputMatch){if(b.output)return x("Output result from: "+ -a),process.stdout.write(d);if(d===c)y("Nothing changed in: "+a);else{c="";x("Write new content to: "+a);if(b.voidBackup)return k.writeFile(a,d,b.encoding,function(h){if(h)return n(h);z(a)});var e=p.normalize(p.join(process.cwd(),a));c=(new Date).toISOString().replace(q.colon,"_").replace("Z","");var g=e+"."+c+".backup";if(b.voidAsync){try{k.renameSync(e,g),k.writeFileSync(e,d,b.encoding),b.keepBackup||k.unlinkSync(g)}catch(h){return n(h)}return z(a)}k.rename(e,g,function(h){if(h)return n(h);k.writeFile(e, -d,b.encoding,function(A){if(A)return n(A);b.keepBackup?z(a):k.unlink(g,function(m){if(m)return n(m);z(a)})})})}}}function ta(a){f("Check Piped Data");return a.includeGlob.length?(!a.replacementJs&&a.pipedData&&y("Piped data never used."),!1):null===a.pipedData||a.pipedDataUsed?!1:(a.dataIsPiped=!0,a.output=!0)}function V(a,b){f("Get final pattern");a=W(a,b);b.literal&&(a=a.replace(q.regexSpecialChars,"\\$&"));f(a);return a}function ra(a,b){f("Get final replacement");a=W(a,b);if(b.replacementPipe){f("Piping replacement"); -b.pipedDataUsed=!0;if(null===b.pipedData)return w("No data piped into replacement");a=b.pipedData}if(b.outputMatch)return f("Output match"),6>parseInt(process.versions.node)?w("outputMatch is only supported in node 6+"):function(){var c=arguments;f(arguments);if(3===arguments.length)return f("Printing full match"),process.stdout.write(arguments[0]+"\n"),"";for(var d=1;dparseInt(process.versions.node))return w("Captured groups for javascript replacement is only supported in node 6+");f(a);return a}function sa(a,b){f("Get final regex with engine: "+b.engine);f("Get flags");var c="";b.voidGlobal||(c+="g");b.voidIgnoreCase||(c+="i");b.voidMultiline||(c+="m");b.dotAll&&(c+="s");b.unicode&&(c+="u");f(c);switch(b.engine){case "V8":try{var d=new RegExp(a,c)}catch(e){if(b.debug)throw Error(e);w(e.message)}break;case "RE2":try{d=new (require("re2"))(a,c)}catch(e){if(b.debug)throw Error(e); -w(e.message)}break;default:w("Engine "+b.engine+" not supported")}f(d);return d}function X(a){if(1===a)return"1 Byte";var b=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,b)).toFixed(b?1:0)+" "+["Bytes","KB","MB","GB","TB"][b]}function wa(a,b,c){var d=xa,e=R(d),g=b.pipedData,h=b.pattern,A=b.replacementOri,m=process.cwd(),r="\u274c",E="\u274c",B="\u274c",F="\u274c",G="\u274c",H="\u274c",I="\u274c",J="\u274c",K="\u274c",L="\u274c",M=new Date(0),N=new Date(0),t=-1,C="\u274c",Y=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);'), -Z=q.byteOrSize.test(b.replacement),D=Z&&5E7process.argv.length)/-v|--?version$/i.test(process.argv[process.argv.length-1])?(console.log("7.1.3"),process.exitCode=0,process.exit()):S=/-h|--?help$/i.test(process.argv[process.argv.length-1])?1:2;else{var pa=process.argv.splice(2,2);var Ca=pa[0];var qa=pa[1]}var u=require("yargs").strict().usage("RexReplace 7.1.3: 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> 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\u20ac2' 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 glob if needed").version("v", -"Print rexreplace version (can be given as only argument)","7.1.3").alias("v","version").boolean("V").describe("V","More chatty output").alias("V","verbose").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("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("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",!1).boolean("d").describe("d","Print debug info").alias("d","debug").boolean("\u20ac").describe("\u20ac","Void having '\u20ac' as alias for '$' in pattern and replacement parameters").alias("\u20ac","void-euro").boolean("\u00a7").describe("\u00a7","Void having '\u00a7' as alias for '\\' in pattern and replacement parameters").alias("\u00a7", -"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").boolean("A").alias("A","void-async").describe("A","Handle files in a synchronous flow. Good to limit memory usage when handling large files. ").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 will lose the content if the process is abrupted.").alias("B", -"void-backup").boolean("b").describe("b","Keep a backup file of the original content.").alias("b","keep-backup").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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter.").boolean("j").alias("j","replacement-js").describe("j","Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use \u20ac0, \u20ac1, \u20ac2, \u20ac3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `\u274c` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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").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").help("h").describe("h","Display help.").alias("h","help").epilog("Inspiration: .oO(What should 'sed' have been by now?)");(function(){if(0d.indexOf("-")&&(a[d]=u.argv[d])});var b=!1,c="";a.pipedData=null;a.showHelp=u.showHelp;a.pattern=Ca;a.includeGlob=u.argv._;a.excludeGlob=[].concat(u.argv.excludeGlob).filter(Boolean);a.excludeRe=[].concat(u.argv.excludeRe).filter(Boolean);a.replacement=a.replacementJs?qa:Ba(qa);if(process.stdin.isTTY){if(a.replacementPipe)return oa();U(a)}else process.stdin.setEncoding(a.encoding),process.stdin.on("readable",function(){var d=process.stdin.read();if(null!==d)for(b=!0,c+=d;d=process.stdin.read();)c+= -d}),process.stdin.on("end",function(){b&&(u.argv.trimPipe&&(c=c.trim()),a.pipedData=c);U(a)})})()})(); +(function () { + '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 info = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); + }; + var chat = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } + }; + 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(); + } + msg && error(' ❌ ' + msg, data); + kill(); + }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!config.quiet && !config.quietTotal) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; + }; + function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } + } + function step(data) { + if (config.verbose) { + debug(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'); + var path = require('path'); + 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 = '7.1.3'; + function engine(config) { + if ( config === void 0 ) config = { engine: 'V8' }; + + outputConfig(config); + 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 + // 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)); }) + // Do the replacement + .forEach(function (filepath) { return openFile(filepath, config); }); + } + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + 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; + } + function getFinalPattern(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)(); + }*/ + step(pattern); + return pattern; + } + function getFinalReplacement(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) { + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); + } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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.dataIsPiped) { + _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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // 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, 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); + }; + } + 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 filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map(function (el) { return getFinalPattern(el, 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 + 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; + } + else { + needHelp = 2; + } + } + else { + (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); + } + var yargs = require('yargs') + .strict() + .usage('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' + + '> 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 glob 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('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('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('€') + .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. " + + '') + .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 will lose the content if the process is abrupted.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + + '') + .boolean('j') + .alias('j', 'replacement-js') + .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") + .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('N') + .alias('N', 'void-newline') + .describe('N', + `Avoid having newline when outputting data (or when piping). `+ + `Normally . `+ + '' + ) + + + -E (Expect there to be no match and return exit 1 if found) + -e (Expect there to be batch and return exit 1 if not found) + */ + /* .boolean('P') + .describe('P', "Pattern is a filename from where the pattern will be generated. 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 a filename from where the replacement will be generated. ` + + `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + ) + + */ + /* // Ideas + + .boolean('n') + .describe('n', "Do replacement on file path/names 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('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') + .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") + + + */ + .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(); + //io(help); + 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); + } + // 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 + Object.keys(yargs.argv).forEach(function (key) { + if (1 < key.length && key.indexOf('-') < 0) { + config[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; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + engine(config); + }); + } + })(); + +})(); diff --git a/package.json b/package.json index 55da158e..b7c6db42 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "test": "test" }, "dependencies": { - "ansi-regex": "6.0.1", "globs": "0.1.4", "yargs": "16.2.0" }, diff --git a/yarn.lock b/yarn.lock index 18adbfeb..1bc7ec8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -327,12 +327,7 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-regex@^2.0.0, ansi-regex@^5.0.1: +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== @@ -2467,7 +2462,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tough-cookie@^4.1.3, tough-cookie@~2.5.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== From e0efa87246de5bf6e79319bbf3ae715ebb1436bd Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Sat, 29 Jul 2023 00:30:50 +1000 Subject: [PATCH 027/155] Code cleanup --- bin/ES6/cli.js | 114 ++++++++++++++++++----------------- bin/ES6/engine.js | 2 +- bin/rexreplace.cli.js | 40 +++++++------ bin/rexreplace.cli.min.js | 40 +++++++------ package.json | 1 + src/cli.ts | 121 +++++++++++++++++++------------------- src/engine.ts | 4 +- yarn.lock | 25 +++++++- 8 files changed, 194 insertions(+), 153 deletions(-) diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js index 603100b5..88975a6f 100644 --- a/bin/ES6/cli.js +++ b/bin/ES6/cli.js @@ -95,7 +95,7 @@ const yargs = require('yargs') .describe('A', `Handle files in a synchronous flow. Good to limit memory usage when handling large files. ` + '') .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 will lose the content if the process is abrupted.') + .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.') .alias('B', 'void-backup') .boolean('b') .describe('b', 'Keep a backup file of the original content.') @@ -104,7 +104,7 @@ const yargs = require('yargs') .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). ` + + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + ``) .alias('m', 'output-match') .boolean('T') @@ -116,47 +116,6 @@ 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.` + '') - .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 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). -`) .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') @@ -164,7 +123,13 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') /* - .boolean('N') + + + -T (Expect no match and return exit 1 if found) + -t (Expect a match and return exit 1 if not found) + + + .boolean('N') .alias('N', 'void-newline') .describe('N', `Avoid having newline when outputting data (or when piping). `+ @@ -173,18 +138,16 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp ) - -E (Expect there to be no match and return exit 1 if found) - -e (Expect there to be batch and return exit 1 if not found) -*/ - /* .boolean('P') - .describe('P', "Pattern is a filename from where the pattern will be generated. 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('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 a filename from where the replacement will be generated. ` + - `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` ) */ @@ -211,9 +174,9 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp .alias('g', 'glob-pipe') - .boolean('j') - .describe('j', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('j', 'pattern-js') + .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') @@ -221,6 +184,47 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp */ + .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 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). + `) .help('h') .describe('h', 'Display help.') .alias('h', 'help') diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js index 6b7c691f..ccc346bb 100644 --- a/bin/ES6/engine.js +++ b/bin/ES6/engine.js @@ -1,4 +1,4 @@ -const fs = require('fs'); +const fs = require('fs-extra'); const path = require('path'); const globs = require('globs'); const now = new Date(); diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 092aad0e..89a07aca 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -68,7 +68,7 @@ process.exit(error); } - var fs = require('fs'); + var fs = require('fs-extra'); var path = require('path'); var globs = require('globs'); var now = new Date(); @@ -537,7 +537,7 @@ .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. " + '') .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 will lose the content if the process is abrupted.') + .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.') .alias('B', 'void-backup') .boolean('b') .describe('b', 'Keep a backup file of the original content.') @@ -546,7 +546,7 @@ .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). " + + "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + "") .alias('m', 'output-match') .boolean('T') @@ -558,9 +558,6 @@ .alias('R', 'replacement-pipe') .describe('R', "Replacement will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + '') - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") .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') @@ -568,7 +565,13 @@ .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') /* - .boolean('N') + + + -T (Expect no match and return exit 1 if found) + -t (Expect a match and return exit 1 if not found) + + + .boolean('N') .alias('N', 'void-newline') .describe('N', `Avoid having newline when outputting data (or when piping). `+ @@ -577,18 +580,16 @@ ) - -E (Expect there to be no match and return exit 1 if found) - -e (Expect there to be batch and return exit 1 if not found) - */ - /* .boolean('P') - .describe('P', "Pattern is a filename from where the pattern will be generated. 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('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 a filename from where the replacement will be generated. ` + - `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` ) */ @@ -615,9 +616,9 @@ .alias('g', 'glob-pipe') - .boolean('j') - .describe('j', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('j', 'pattern-js') + .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') @@ -625,6 +626,9 @@ */ + .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") .help('h') .describe('h', 'Display help.') .alias('h', 'help') diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 092aad0e..89a07aca 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -68,7 +68,7 @@ process.exit(error); } - var fs = require('fs'); + var fs = require('fs-extra'); var path = require('path'); var globs = require('globs'); var now = new Date(); @@ -537,7 +537,7 @@ .describe('A', "Handle files in a synchronous flow. Good to limit memory usage when handling large files. " + '') .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 will lose the content if the process is abrupted.') + .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.') .alias('B', 'void-backup') .boolean('b') .describe('b', 'Keep a backup file of the original content.') @@ -546,7 +546,7 @@ .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). " + + "If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). " + "") .alias('m', 'output-match') .boolean('T') @@ -558,9 +558,6 @@ .alias('R', 'replacement-pipe') .describe('R', "Replacement will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + '') - .boolean('j') - .alias('j', 'replacement-js') - .describe('j', "Treat replacement as javascript source code. \nThe statement from the last expression will become the replacement string. \nPurposefully implemented the most insecure way possible to remove _any_ incentive to consider running code from an untrusted part. \nThe 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. \nAt some point, the $ char _will_ give you a headache when used from the command line, so use €0, €1, €2, €3... instead. \nIf 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\nThe code has access to the following variables: \n`r` as an alias for `require` with both expanded to understand a relative path even if it is not starting with `./`, \n`fs` from node, \n`path` from node, \n`globs` from npm, \n`pipe`: the data piped into the command (null if no piped data), \n`find`: pattern searched for (the needle), \n`text`: full text being searched i.e. file content or piped data (the haystack), \n`bytes`: total size of the haystack in bytes, \n`size`: human-friendly representation of the total size of the haystack, \n`time`: String representing the local time when the command was invoked,\n`time_obj`: date object representing `time`,\n`now`: alias for `time`,\n`cwd`: current process working dir, \n`nl`: a new-line char,\n`_`: a single space char (for easy string concatenation).\n\nThe following values defaults to `❌` if haystack does not originate from a file:\n`file`: contains the full path of the active file being searched (including full filename), \n`file_rel`: contains `file` relative to current process working dir, \n`dirpath`: contains the full path without filename of the active file being searched, \n`dirpath_rel`: contains `dirpath` relative to current process working dir, \n`filename`: is the full filename of the active file being searched without path, \n`name`: filename of the active file being searched with no extension, \n`ext`: extension of the filename including leading dot, \n`mtime`: ISO inspired representation of the last local modification time of the current file, \n`ctime`: ISO representation of the local creation time of the current file. \n`mtime_obj`: date object representing `mtime`, \n`ctime_obj`: date object representing `ctime`. \n\nAll 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") .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') @@ -568,7 +565,13 @@ .describe('X', 'Exclude files found with this glob. Can be used multiple times.') .alias('X', 'exclude-glob') /* - .boolean('N') + + + -T (Expect no match and return exit 1 if found) + -t (Expect a match and return exit 1 if not found) + + + .boolean('N') .alias('N', 'void-newline') .describe('N', `Avoid having newline when outputting data (or when piping). `+ @@ -577,18 +580,16 @@ ) - -E (Expect there to be no match and return exit 1 if found) - -e (Expect there to be batch and return exit 1 if not found) - */ - /* .boolean('P') - .describe('P', "Pattern is a filename from where the pattern will be generated. 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('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 a filename from where the replacement will be generated. ` + - `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` ) */ @@ -615,9 +616,9 @@ .alias('g', 'glob-pipe') - .boolean('j') - .describe('j', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('j', 'pattern-js') + .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') @@ -625,6 +626,9 @@ */ + .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") .help('h') .describe('h', 'Display help.') .alias('h', 'help') diff --git a/package.json b/package.json index b7c6db42..6538ec30 100644 --- a/package.json +++ b/package.json @@ -74,6 +74,7 @@ "test": "test" }, "dependencies": { + "fs-extra": "^11.1.1", "globs": "0.1.4", "yargs": "16.2.0" }, diff --git a/src/cli.ts b/src/cli.ts index ea1b046c..3ae4cd13 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -140,7 +140,7 @@ const yargs = require('yargs') .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 will lose the content if the process is abrupted.' + '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.' ) .alias('B', 'void-backup') @@ -154,7 +154,7 @@ const yargs = require('yargs') `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). ` + + `If search pattern _does_ contain matching groups only matching groups will be outputted (same line with no delimiter). ` + `` ) .alias('m', 'output-match') @@ -176,50 +176,6 @@ const yargs = require('yargs') '' ) - .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 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). -` - ) .string('x') .describe( 'x', @@ -232,7 +188,13 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp .alias('X', 'exclude-glob') /* - .boolean('N') + + + -T (Expect no match and return exit 1 if found) + -t (Expect a match and return exit 1 if not found) + + + .boolean('N') .alias('N', 'void-newline') .describe('N', `Avoid having newline when outputting data (or when piping). `+ @@ -241,19 +203,16 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp ) - -E (Expect there to be no match and return exit 1 if found) - -e (Expect there to be batch and return exit 1 if not found) -*/ - /* .boolean('P') - .describe('P', "Pattern is a filename from where the pattern will be generated. 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('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 a filename from where the replacement will be generated. ` + - `If more than one line is found in the file the final replacement will be defined by each line trimmed and having newlines removed followed by all other rules (like -€).` + `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` ) */ @@ -261,7 +220,7 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp /* // Ideas .boolean('n') - .describe('n', "Do replacement on file path/names instead of file content (rename/move the files)") + .describe('n', "Do replacement on file path+name instead of file content (rename/move the files)") .alias('n', 'name') // https://github.com/eugeneware/replacestream @@ -281,9 +240,9 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp .alias('g', 'glob-pipe') - .boolean('j') - .describe('j', "Pattern is javascript source that will return a string giving the pattern to use") - .alias('j', 'pattern-js') + .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') @@ -292,6 +251,50 @@ All variables, except from module, date objects, \`nl\` and \`_\`, has a corresp */ + .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 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). + ` + ) .help('h') .describe('h', 'Display help.') .alias('h', 'help') diff --git a/src/engine.ts b/src/engine.ts index 7f497d1b..4322a182 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -1,4 +1,4 @@ -const fs = require('fs'); +const fs = require('fs-extra'); const path = require('path'); @@ -37,6 +37,8 @@ export function engine(config: any = {engine: 'V8'}) { step(config); + + if (handlePipedData(config)) { return doReplacement('Piped data', config, config.pipedData); } diff --git a/yarn.lock b/yarn.lock index 1bc7ec8a..b2e23783 100644 --- a/yarn.lock +++ b/yarn.lock @@ -978,6 +978,15 @@ form-data@~2.3.2: 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" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + 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" @@ -1098,7 +1107,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.2.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== @@ -1459,6 +1468,15 @@ json-stringify-safe@~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" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + 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" @@ -2561,6 +2579,11 @@ universalify@^0.2.0: 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#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" From 062f540f30930f45da2599076b5d68d9b08281b8 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Tue, 1 Aug 2023 09:38:40 +1000 Subject: [PATCH 028/155] Readme visuals --- README.md | 18 +++++++++--------- src/cli.ts | 6 ++---- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a83c23f7..92ce06ec 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,6 @@ -_Please note that issues have been observed when piping using node version 15. We are on the case to identify the exact problem_ ----- - - [![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) @@ -19,11 +10,20 @@ _Please note that issues have been observed when piping using node version 15. W +

+
+RexReplace mascot Benny on the RexReplace logo +
+
+

+--- # RexReplace + + 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. **Key features**: diff --git a/src/cli.ts b/src/cli.ts index 3ae4cd13..4eb3f2f7 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -190,8 +190,8 @@ const yargs = require('yargs') /* - -T (Expect no match and return exit 1 if found) - -t (Expect a match and return exit 1 if not found) + -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') @@ -215,9 +215,7 @@ const yargs = require('yargs') `Replacement is the path to a filename containing the replacement`.`Will be followed by other all rules (like -€)` ) - */ - /* // Ideas .boolean('n') .describe('n', "Do replacement on file path+name instead of file content (rename/move the files)") From ed7a2ef431e67050c13cceeac975191126d8bb29 Mon Sep 17 00:00:00 2001 From: "M. Wulff" Date: Tue, 1 Aug 2023 12:52:11 +1000 Subject: [PATCH 029/155] Add build files --- bin/ES6/cli.js | 298 ++++ bin/ES6/engine.js | 362 +++++ bin/ES6/output.js | 52 + bin/rexreplace.cli.js | 707 ++++++++++ bin/rexreplace.cli.min.js | 707 ++++++++++ src/engine.ts | 2 - yarn.lock | 2762 +++++++++++++++++++++++++++++++++++++ 7 files changed, 4888 insertions(+), 2 deletions(-) create mode 100644 bin/ES6/cli.js create mode 100644 bin/ES6/engine.js create mode 100644 bin/ES6/output.js create mode 100755 bin/rexreplace.cli.js create mode 100755 bin/rexreplace.cli.min.js create mode 100644 yarn.lock diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js new file mode 100644 index 00000000..fe15f0eb --- /dev/null +++ b/bin/ES6/cli.js @@ -0,0 +1,298 @@ +#!/usr/bin/env node +// 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 +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; + } + else { + needHelp = 2; + } +} +else { + [pattern, replacement] = process.argv.splice(2, 2); +} +const yargs = require('yargs') + .strict() + .usage('RexReplace ' + + 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' + + '> 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 glob 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('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('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('€') + .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. ` + + '') + .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.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + + '') + .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') + /* + + + -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 be followed by other all 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('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') + .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 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). + `) + .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; + //io(help); + process.exitCode = exitcode; + process.exit(); +} +function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); +} +(function () { + 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 + Object.keys(yargs.argv).forEach((key) => { + if (1 < key.length && key.indexOf('-') < 0) { + config[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; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + rexreplace.engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + rexreplace.engine(config); + }); + } +})(); diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js new file mode 100644 index 00000000..ccc346bb --- /dev/null +++ b/bin/ES6/engine.js @@ -0,0 +1,362 @@ +const fs = require('fs-extra'); +const path = require('path'); +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(config = { engine: 'V8' }) { + outputConfig(config); + 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 + // 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))) + // Do the replacement + .forEach((filepath) => openFile(filepath, config)); +} +function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + const backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) => { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, (err) => { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); +} +function handlePipedData(config) { + 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; +} +function getFinalPattern(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)(); + }*/ + step(pattern); + return pattern; +} +function getFinalReplacement(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) { + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + let regex; + let flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.debug) + throw new Error(e); + die(e.message); + } + break; + case 'RE2': + try { + const RE2 = require('re2'); + regex = new RE2(pattern, flags); + } + catch (e) { + if (config.debug) + throw new Error(e); + die(e.message); + } + break; + default: + die(`Engine ${config.engine} not supported`); + } + step(regex); + return regex; +} +function getFlags(config) { + step('Get flags'); + let flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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.dataIsPiped) { + _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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // 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, 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); + }; +} +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) { + let { includeGlob, excludeGlob, excludeRe } = conf; + let filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map((el) => getFinalPattern(el, 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 new file mode 100644 index 00000000..d3e1e30c --- /dev/null +++ b/bin/ES6/output.js @@ -0,0 +1,52 @@ +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; +}; +export const info = function (msg, data = '') { + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); +}; +export const chat = function (msg, data = '') { + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } +}; +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) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; +}; +export function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } +} +export function step(data) { + if (config.verbose) { + debug(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 new file mode 100755 index 00000000..15ef7be1 --- /dev/null +++ b/bin/rexreplace.cli.js @@ -0,0 +1,707 @@ +#!/usr/bin/env node +(function () { + '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 info = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); + }; + var chat = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } + }; + 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(); + } + msg && error(' ❌ ' + msg, data); + kill(); + }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!config.quiet && !config.quietTotal) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; + }; + function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } + } + function step(data) { + if (config.verbose) { + debug(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 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 = '7.1.3'; + function engine(config) { + if ( config === void 0 ) config = { engine: 'V8' }; + + outputConfig(config); + 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 + // 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)); }) + // Do the replacement + .forEach(function (filepath) { return openFile(filepath, config); }); + } + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + 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; + } + function getFinalPattern(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)(); + }*/ + step(pattern); + return pattern; + } + function getFinalReplacement(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) { + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); + } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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.dataIsPiped) { + _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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // 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, 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); + }; + } + 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 filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map(function (el) { return getFinalPattern(el, 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 + 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; + } + else { + needHelp = 2; + } + } + else { + (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); + } + var yargs = require('yargs') + .strict() + .usage('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' + + '> 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 glob 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('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('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('€') + .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. " + + '') + .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.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + + '') + .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') + /* + + + -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 be followed by other all 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('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') + .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 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") + .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(); + //io(help); + 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); + } + // 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 + Object.keys(yargs.argv).forEach(function (key) { + if (1 < key.length && key.indexOf('-') < 0) { + config[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; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + engine(config); + }); + } + })(); + +})(); diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js new file mode 100755 index 00000000..15ef7be1 --- /dev/null +++ b/bin/rexreplace.cli.min.js @@ -0,0 +1,707 @@ +#!/usr/bin/env node +(function () { + '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 info = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.quiet || config.quietTotal) { + return; + } + console.error(font.gray(msg), data); + }; + var chat = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (config.verbose) { + info(msg, data); + } + else { + debug(msg + ' ' + data); + } + }; + 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(); + } + msg && error(' ❌ ' + msg, data); + kill(); + }; + var error = function (msg, data) { + if ( data === void 0 ) data = ''; + + if (!config.quiet && !config.quietTotal) { + console.error(font.red(msg), data); + } + if (config.halt) { + kill(msg); + } + return false; + }; + function debug(data) { + if (config.debug) { + console.error(font.gray(JSON.stringify(data, null, 4))); + } + } + function step(data) { + if (config.verbose) { + debug(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 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 = '7.1.3'; + function engine(config) { + if ( config === void 0 ) config = { engine: 'V8' }; + + outputConfig(config); + 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 + // 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)); }) + // Do the replacement + .forEach(function (filepath) { return openFile(filepath, config); }); + } + function openFile(file, config) { + if (config.voidAsync) { + chat('Open sync: ' + file); + var data = fs.readFileSync(file, config.encoding); + return doReplacement(file, config, data); + } + else { + chat('Open async: ' + file); + fs.readFile(file, config.encoding, function (err, data) { + if (err) { + return error(err); + } + return doReplacement(file, config, 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); + // Variables to be accessible from js. + if (_config_rr.replacementJs) { + _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + } + // Main regexp of the whole thing + var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + // The output of matched strings is done from the replacement, so no need to continue + if (_config_rr.outputMatch) { + return; + } + if (_config_rr.output) { + debug('Output result from: ' + _file_rr); + return process.stdout.write(result); + } + // Nothing replaced = no need for writing file again + if (result === _data_rr) { + chat('Nothing changed in: ' + _file_rr); + return; + } + // Release the memory while storing files + _data_rr = ''; + debug('Write new content to: ' + _file_rr); + // 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 (err) { + return error(err); + } + info(_file_rr); + }); + } + //Make sure data is always on disk + var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + var backupFile = oriFile + '.' + salt + '.backup'; + if (_config_rr.voidAsync) { + try { + fs.renameSync(oriFile, backupFile); + fs.writeFileSync(oriFile, result, _config_rr.encoding); + if (!_config_rr.keepBackup) { + fs.unlinkSync(backupFile); + } + } + catch (e) { + return error(e); + } + return info(_file_rr); + } + // 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) { + if (err) { + return error(err); + } + if (!_config_rr.keepBackup) { + fs.unlink(backupFile, function (err) { + if (err) { + return error(err); + } + info(_file_rr); + }); + } + else { + info(_file_rr); + } + }); + }); + } + function handlePipedData(config) { + 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; + } + function getFinalPattern(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)(); + }*/ + step(pattern); + return pattern; + } + function getFinalReplacement(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) { + 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 + //console.log(process); + 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 getFinalRegex(pattern, config) { + step('Get final regex with engine: ' + config.engine); + var regex; + var flags = getFlags(config); + switch (config.engine) { + case 'V8': + try { + regex = new RegExp(pattern, flags); + } + catch (e) { + if (config.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 (config.debug) + { throw new Error(e$1); } + die(e$1.message); + } + break; + default: + die(("Engine " + (config.engine) + " not supported")); + } + step(regex); + return regex; + } + function getFlags(config) { + step('Get flags'); + var flags = ''; + if (!config.voidGlobal) { + flags += 'g'; + } + if (!config.voidIgnoreCase) { + flags += 'i'; + } + if (!config.voidMultiline) { + flags += 'm'; + } + if (config.dotAll) { + flags += 's'; + } + if (config.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.pipedData, _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.dataIsPiped) { + _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); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); + } + } + if (needsByteOrSize && -1 === _bytes) { + _bytes = Buffer.from(_text).length; + _size = readableSize(_bytes); + } + // 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); + } + // 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, 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); + }; + } + 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 filesToInclude = globs.sync(includeGlob); + if (excludeRe.length) { + excludeRe + .map(function (el) { return getFinalPattern(el, 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 + 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; + } + else { + needHelp = 2; + } + } + else { + (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); + } + var yargs = require('yargs') + .strict() + .usage('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' + + '> 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 glob 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('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('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('€') + .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. " + + '') + .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.') + .alias('B', 'void-backup') + .boolean('b') + .describe('b', 'Keep a backup file of the original content.') + .alias('b', 'keep-backup') + .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + + '') + .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') + /* + + + -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 be followed by other all 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('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') + .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 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") + .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(); + //io(help); + 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); + } + // 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 + Object.keys(yargs.argv).forEach(function (key) { + if (1 < key.length && key.indexOf('-') < 0) { + config[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; + } + else { + config.replacement = unescapeString(replacement); + } + /*if(Boolean(process.stdout.isTTY)){ + config.output = true; + }*/ + if (Boolean(process.stdin.isTTY)) { + if (config.replacementPipe) { + return backOut(); + } + engine(config); + } + else { + process.stdin.setEncoding(config.encoding); + 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 (yargs.argv.trimPipe) { + pipeData = pipeData.trim(); + } + config.pipedData = pipeData; + } + engine(config); + }); + } + })(); + +})(); diff --git a/src/engine.ts b/src/engine.ts index 4322a182..4c81b773 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -37,8 +37,6 @@ export function engine(config: any = {engine: 'V8'}) { step(config); - - if (handlePipedData(config)) { return doReplacement('Piped data', config, config.pipedData); } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..98473f49 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2762 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/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== + 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== + +"@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.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== + +"@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.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== + +"@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== + +"@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== + 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== + dependencies: + call-me-maybe "^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": + version "6.1.0" + 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" + globby "^11.0.1" + inquirer "^7.3.3" + log-symbols "^4.0.0" + semver "^7.3.2" + +"@nodelib/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== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/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== + +"@nodelib/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== + dependencies: + "@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.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@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== + +"@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/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== + +"@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== + +"@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== + +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@^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: + 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.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + dependencies: + debug "^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== + 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" + 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#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#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" + 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#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + 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== + +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" + +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== + +array-back@^3.0.1, array-back@^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== + +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== + +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.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" + is-nan "^1.2.1" + object-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== + +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" + +binary-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== + +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" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-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== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~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== + 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== + +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" + +call-bind@^1.0.0, call-bind@^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== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^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== + +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== + +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" + 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#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#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + 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" + normalize-path "~3.0.0" + readdirp "~3.6.0" + 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" + 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#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#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + 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" + 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" + 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#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" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + 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#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#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== + +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== + +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== + dependencies: + path-key "^3.1.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#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.3.3: + version "4.3.4" + 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#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#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#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + 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== + +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== + +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== + +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== + +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== + +dir-glob@^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== + 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" + +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== + +es6-object-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== + +escalade@^3.1.1: + version "3.1.1" + 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#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#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#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#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" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + 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.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@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-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" + 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#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#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" + 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#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + 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#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#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#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + 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" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + 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" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+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== + +function-bind@^1.1.1: + version "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" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +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== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +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" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + 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-absolute "^1.0.0" + +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/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-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" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globs@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== + 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" + 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#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" + 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== + 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== + +has-symbols@^1.0.2, has-symbols@^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== + +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== + 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" + +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.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== + +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" + +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" + +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" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + 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" + +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" + 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#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#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + 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" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-binary-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== + 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.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== + 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" + 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#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~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== + 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.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-number@^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== + +is-plain-obj@^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== + +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-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== + 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" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + 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-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" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + 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" + +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== + 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== + +lodash@^4.17.19: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0, log-symbols@^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== + 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== + 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== + 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-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" + +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== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@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== + +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" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +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== + dependencies: + 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#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + 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" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.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== + +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== + +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== + +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== + +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" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +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" + +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.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== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-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== + +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== + 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== + 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== + +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== + 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== + 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" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^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== + +path-key@^3.1.0: + version "3.1.1" + 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" + 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#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" + 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== + +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" + +psl@^1.1.33: + version "1.9.0" + 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#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" + 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#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + 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" + +readdirp@~3.6.0: + version "3.6.0" + 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#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.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== + +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" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + 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-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.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#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#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" + 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#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#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +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-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: + version "2.1.2" + 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#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#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + 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@^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== + dependencies: + shebang-regex "^3.0.0" + +shebang-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== + +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== + +slash@^3.0.0: + version "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" + +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== + +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: + 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== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.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== + 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" + 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#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#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#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" + 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#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#c9738b0b98845a3b344d334b8fa3041aaba53a69" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + 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.19.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" + integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + 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" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+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== + 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== + dependencies: + 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#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" + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + +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" + 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== + +typical@^4.0.0: + version "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" + 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#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" + 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#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +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== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + 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== + +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" + integrity sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg== + 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" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + 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#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" + 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#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.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== + +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== + +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== + +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== + +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== + +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== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + 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#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +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== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From a7aed5daabc0924a5f04eb37870d9352ff334896 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Aug 2023 07:21:38 +0000 Subject: [PATCH 030/155] Update dependency @types/node to v20.4.7 (#365) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index da4be906..849fc574 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.3", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.4.5", + "@types/node": "20.4.7", "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 98473f49..d8e8419a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -231,10 +231,10 @@ 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#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" - integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== +"@types/node@20.4.7": + version "20.4.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.7.tgz#74d323a93f1391a63477b27b9aec56669c98b2ab" + integrity sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g== "@types/resolve@1.20.2": version "1.20.2" From 8a19c0c82b78322b9ed4d0d2bc0570500c8206c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Aug 2023 10:12:24 +0000 Subject: [PATCH 031/155] Update dependency prettier to v3.0.1 (#366) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 849fc574..c45947ca 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", - "prettier": "3.0.0", + "prettier": "3.0.1", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index d8e8419a..8530bca6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1985,10 +1985,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.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.1.tgz#65271fc9320ce4913c57747a70ce635b30beaa40" + integrity sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ== process-nextick-args@~2.0.0: version "2.0.1" From 828e120f3d96cc059af1f947689166ef2c72cb41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Aug 2023 12:04:54 +0000 Subject: [PATCH 032/155] Update dependency rollup-plugin-hashbang to v3 (#369) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 22 +++++----------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index c45947ca..5e5b4a46 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "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-hashbang": "3.0.0", "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "1.1.3", diff --git a/yarn.lock b/yarn.lock index 8530bca6..3f6ec6ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1536,13 +1536,6 @@ magic-string@0.30.2: 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" @@ -2200,12 +2193,12 @@ rollup-plugin-filesize@9.1.2: 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== +rollup-plugin-hashbang@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-hashbang/-/rollup-plugin-hashbang-3.0.0.tgz#6173df959592ba73d2e8ce01816a37c511a5e005" + integrity sha512-nNC2NeNcvkklPhPCUF8Yb+2a19xI0dSBBJJ2x814+Al2BqIEWOyaGIgEjPVSjjgxhoabkJC5vbO4AeI3cxx3wg== dependencies: - magic-string "^0.22.4" + magic-string "^0.25.7" rollup-plugin-preserve-shebang@1.0.1: version "1.0.1" @@ -2652,11 +2645,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" From 749fed1f13246ce337120ec707e2904991a95b8c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Aug 2023 15:09:34 +0000 Subject: [PATCH 033/155] Update dependency @types/node to v20.4.8 (#371) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5e5b4a46..12af906d 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.3", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.4.7", + "@types/node": "20.4.8", "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 3f6ec6ac..f6bc1086 100644 --- a/yarn.lock +++ b/yarn.lock @@ -231,10 +231,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.4.7": - version "20.4.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.7.tgz#74d323a93f1391a63477b27b9aec56669c98b2ab" - integrity sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g== +"@types/node@20.4.8": + version "20.4.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.8.tgz#b5dda19adaa473a9bf0ab5cbd8f30ec7d43f5c85" + integrity sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg== "@types/resolve@1.20.2": version "1.20.2" From a09262e22573783e35c7107ef56dfa4429290b07 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Aug 2023 19:29:03 +0000 Subject: [PATCH 034/155] Update dependency rollup-plugin-typescript3 to v3 (#370) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 159 ++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 138 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 12af906d..ac15203d 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "rollup-plugin-hashbang": "3.0.0", "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", - "rollup-plugin-typescript3": "1.1.3", + "rollup-plugin-typescript3": "3.0.2", "typescript": "5.1.6", "version-bump-prompt": "6.1.0", "yarn": "1.22.19" diff --git a/yarn.lock b/yarn.lock index f6bc1086..ca0fdba5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,6 +14,18 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@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" @@ -164,6 +176,11 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@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" @@ -319,7 +336,7 @@ 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@^2.0.0, ansi-regex@^5.0.1, ansi-regex@^6.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -338,6 +355,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -710,7 +732,7 @@ 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== -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, 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== @@ -798,6 +820,11 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -811,6 +838,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encoding@^0.1.12: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -951,6 +983,14 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1051,6 +1091,17 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.2.6: + version "10.3.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" + integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + 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/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -1436,6 +1487,15 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== +jackspeak@^2.0.3: + version "2.2.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" + integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -1529,6 +1589,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" + integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== + magic-string@0.30.2: version "0.30.2" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca" @@ -1623,6 +1688,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + 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" @@ -1687,6 +1759,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" + integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== + minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -1963,6 +2040,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -2214,13 +2299,13 @@ rollup-plugin-progress@1.1.2: 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== +rollup-plugin-typescript3@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-3.0.2.tgz#095a3595af0e53a0b31217fc8ca9f1b0de629494" + integrity sha512-CQcBsiuEFsxV8VbAP6B+EgKAD7tIdKmIeR1o1TlBEA8Aacpmvnl/cVuuLRh1kPCvQ/z2AiWeYmR2mrVjhazaKA== dependencies: - glob "^7.1.6" - tslib "^2.1.0" + glob "^10.2.6" + tslib "^2.5.2" rollup@2.79.1: version "2.79.1" @@ -2299,6 +2384,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -2371,6 +2461,15 @@ string-argv@^0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== +"string-width-cjs@npm:string-width@^4.2.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: + 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== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -2380,14 +2479,14 @@ 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: - 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== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" string_decoder@~1.1.1: version "1.1.1" @@ -2396,6 +2495,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", 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== + dependencies: + ansi-regex "^5.0.1" + 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" @@ -2403,12 +2509,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: 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== +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^6.0.1" strip-json-comments@3.1.1: version "3.1.1" @@ -2497,7 +2603,7 @@ 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: +tslib@^2.5.2: version "2.6.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== @@ -2682,7 +2788,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", 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== @@ -2691,6 +2797,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" From 3871fe42222c957fc27e78e9d304c8be8464445e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 5 Aug 2023 22:49:13 +0000 Subject: [PATCH 035/155] Update github/super-linter Docker tag to v5 (#373) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/linter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index fa28570b..6d3e00a2 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -43,7 +43,7 @@ jobs: # Run Linter against code base # ################################ - name: Lint Code Base - uses: docker://github/super-linter:v2.2.2 + uses: docker://github/super-linter:v5.0.0 env: VALIDATE_ALL_CODEBASE: true VALIDATE_YAML: true From 6e6e9e116f21bd75814a0763eb4171ff3fb6422e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 12 Aug 2023 03:36:52 +0000 Subject: [PATCH 036/155] Update dependency @rollup/plugin-commonjs to v25.0.4 (#374) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ac15203d..71a08f8b 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "devDependencies": { "@rollup/plugin-buble": "1.0.2", - "@rollup/plugin-commonjs": "25.0.3", + "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@types/node": "20.4.8", diff --git a/yarn.lock b/yarn.lock index ca0fdba5..0ea5313a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -190,10 +190,10 @@ "@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== +"@rollup/plugin-commonjs@25.0.4": + version "25.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz#a7547a0c4ec3fa79818eb313e1de0023e548f4e6" + integrity sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" From 79d80f08234630d87727f229b99f24bec8cd5277 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 12 Aug 2023 06:22:39 +0000 Subject: [PATCH 037/155] Update dependency @types/node to v20.4.10 (#375) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 71a08f8b..593abaf2 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.4.8", + "@types/node": "20.4.10", "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 0ea5313a..5fe5027e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.4.8": - version "20.4.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.8.tgz#b5dda19adaa473a9bf0ab5cbd8f30ec7d43f5c85" - integrity sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg== +"@types/node@20.4.10": + version "20.4.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.10.tgz#73c9480791e3ddeb4887a660fc93a7f59353ad45" + integrity sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg== "@types/resolve@1.20.2": version "1.20.2" From 7f8f040e74eee8c7a4038e1bd67c6a344342efd8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 12 Aug 2023 09:50:51 +0000 Subject: [PATCH 038/155] Update github/codeql-action action to v2.21.3 (#376) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ce2f90c6..ab364cef 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0ba4244466797eb048eb91a6cd43d5c03ca8bd05 # v2.21.2 + uses: github/codeql-action/upload-sarif@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 with: sarif_file: results.sarif From 083afa7f2b092dfcd9b86b9314edb95f4f8684c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 02:03:18 +0000 Subject: [PATCH 039/155] Update dependency @types/node to v20.5.0 (#377) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 593abaf2..aaf903f7 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.4.10", + "@types/node": "20.5.0", "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 5fe5027e..853c9690 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.4.10": - version "20.4.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.10.tgz#73c9480791e3ddeb4887a660fc93a7f59353ad45" - integrity sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg== +"@types/node@20.5.0": + version "20.5.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.0.tgz#7fc8636d5f1aaa3b21e6245e97d56b7f56702313" + integrity sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q== "@types/resolve@1.20.2": version "1.20.2" From b29d6072fad706b38f9e5bc77bec17d2dfa57915 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Aug 2023 04:23:17 +0000 Subject: [PATCH 040/155] Update dependency @types/node to v20.5.1 (#378) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index aaf903f7..de4506fa 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.5.0", + "@types/node": "20.5.1", "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 853c9690..3a54146b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.5.0": - version "20.5.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.0.tgz#7fc8636d5f1aaa3b21e6245e97d56b7f56702313" - integrity sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q== +"@types/node@20.5.1": + version "20.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.1.tgz#178d58ee7e4834152b0e8b4d30cbfab578b9bb30" + integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg== "@types/resolve@1.20.2": version "1.20.2" From 1a8f4c85d1d8cc470d388ebc455cde07a391d790 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Aug 2023 06:56:08 +0000 Subject: [PATCH 041/155] Update dependency prettier to v3.0.2 (#379) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index de4506fa..6afb0e76 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", - "prettier": "3.0.1", + "prettier": "3.0.2", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 3a54146b..c9432247 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2063,10 +2063,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.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.1.tgz#65271fc9320ce4913c57747a70ce635b30beaa40" - integrity sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ== +prettier@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.2.tgz#78fcecd6d870551aa5547437cdae39d4701dca5b" + integrity sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ== process-nextick-args@~2.0.0: version "2.0.1" From bf79414ce2223656b4f4f7e1d88bc7a18eb91674 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Aug 2023 10:45:08 +0000 Subject: [PATCH 042/155] Update github/codeql-action action to v2.21.4 (#380) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ab364cef..44104fa4 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3 + uses: github/codeql-action/upload-sarif@a09933a12a80f87b87005513f0abb1494c27a716 # v2.21.4 with: sarif_file: results.sarif From 118897f7df2650c857c5fd4d2e7341f9f0a6b426 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Aug 2023 13:02:19 +0000 Subject: [PATCH 043/155] Update dependency @rollup/plugin-node-resolve to v15.2.0 (#381) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6afb0e76..17dfb8c2 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rollup/plugin-buble": "1.0.2", "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.1.0", + "@rollup/plugin-node-resolve": "15.2.0", "@rollup/plugin-replace": "5.0.2", "@types/node": "20.5.1", "assert": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index c9432247..a578faab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,10 +202,10 @@ 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== +"@rollup/plugin-node-resolve@15.2.0": + version "15.2.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.0.tgz#982053b237f81471aace570472e88a456d211621" + integrity sha512-mKur03xNGT8O9ODO6FtT43ITGqHWZbKPdVJHZb+iV9QYcdlhUUB0wgknvA4KCUmC5oHJF6O2W1EgmyOQyVUI4Q== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" From 6e6f6cf55d339849070ba2dec013e6b02ab9d3b8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 26 Aug 2023 04:23:09 +0000 Subject: [PATCH 044/155] Update dependency @rollup/plugin-node-resolve to v15.2.1 (#382) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 17dfb8c2..b2b989ed 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rollup/plugin-buble": "1.0.2", "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.2.0", + "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@types/node": "20.5.1", "assert": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index a578faab..db4fb4ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,10 +202,10 @@ is-reference "1.2.1" magic-string "^0.27.0" -"@rollup/plugin-node-resolve@15.2.0": - version "15.2.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.0.tgz#982053b237f81471aace570472e88a456d211621" - integrity sha512-mKur03xNGT8O9ODO6FtT43ITGqHWZbKPdVJHZb+iV9QYcdlhUUB0wgknvA4KCUmC5oHJF6O2W1EgmyOQyVUI4Q== +"@rollup/plugin-node-resolve@15.2.1": + version "15.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz#a15b14fb7969229e26a30feff2816d39eff503f0" + integrity sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" From 6eae3422efd748f3aa2c98a06d10f98cd0e6fb12 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 26 Aug 2023 06:04:06 +0000 Subject: [PATCH 045/155] Update dependency @types/node to v20.5.6 (#383) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b2b989ed..850b60fa 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.5.1", + "@types/node": "20.5.6", "assert": "^2.0.0", "magic-string": "0.30.2", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index db4fb4ed..a40d3281 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.5.1": - version "20.5.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.1.tgz#178d58ee7e4834152b0e8b4d30cbfab578b9bb30" - integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg== +"@types/node@20.5.6": + version "20.5.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.6.tgz#5e9aaa86be03a09decafd61b128d6cec64a5fe40" + integrity sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ== "@types/resolve@1.20.2": version "1.20.2" From 6dc0c8b26ef59a8b508e133623ef1dabf82109c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 26 Aug 2023 09:48:29 +0000 Subject: [PATCH 046/155] Update dependency magic-string to v0.30.3 (#384) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 850b60fa..68b0da42 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.2", "@types/node": "20.5.6", "assert": "^2.0.0", - "magic-string": "0.30.2", + "magic-string": "0.30.3", "mocha": "10.2.0", "prettier": "3.0.2", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index a40d3281..d2fc1eaf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1594,10 +1594,10 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -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" From 9c399bb3877d78d28b8421c62e7bf8d924a8f06c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 26 Aug 2023 13:40:54 +0000 Subject: [PATCH 047/155] Update actions/checkout action to v3.6.0 (#385) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 44104fa4..7e895976 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 with: persist-credentials: false From a2580b04320bcc91308b28bcd97bccf80ba4ea4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 26 Aug 2023 15:02:03 +0000 Subject: [PATCH 048/155] Update dependency typescript to v5.2.2 (#386) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 68b0da42..21eef962 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.2", - "typescript": "5.1.6", + "typescript": "5.2.2", "version-bump-prompt": "6.1.0", "yarn": "1.22.19" }, diff --git a/yarn.lock b/yarn.lock index d2fc1eaf..dabb8aaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2635,10 +2635,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" From 135428a094bc07e1c92aa84841340682e809e26c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 03:53:56 +0000 Subject: [PATCH 049/155] Update dependency @types/node to v20.5.8 (#387) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 21eef962..6f8eb93f 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.5.6", + "@types/node": "20.5.8", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index dabb8aaa..a2fc2cb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.5.6": - version "20.5.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.6.tgz#5e9aaa86be03a09decafd61b128d6cec64a5fe40" - integrity sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ== +"@types/node@20.5.8": + version "20.5.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.8.tgz#fb171fd22d37ca6e2ea97fde88e6a13ee14bc327" + integrity sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw== "@types/resolve@1.20.2": version "1.20.2" From 4b3e2c2136b379017420ab2d6828c7e512c2c80f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 06:04:38 +0000 Subject: [PATCH 050/155] Update dependency prettier to v3.0.3 (#388) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6f8eb93f..4500674f 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", - "prettier": "3.0.2", + "prettier": "3.0.3", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index a2fc2cb5..9032ac6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2063,10 +2063,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.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.2.tgz#78fcecd6d870551aa5547437cdae39d4701dca5b" - integrity sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ== +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" From af0d988b658554c9dbd18a207b75ebc3e4c92c2a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 11:14:38 +0000 Subject: [PATCH 051/155] Update github/codeql-action action to v2.21.5 (#389) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7e895976..6789ed93 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@a09933a12a80f87b87005513f0abb1494c27a716 # v2.21.4 + uses: github/codeql-action/upload-sarif@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8 # v2.21.5 with: sarif_file: results.sarif From f772e40dfb90aeb0bc72af6ed1b065a16522a284 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Sep 2023 02:02:44 +0000 Subject: [PATCH 052/155] Update dependency @types/node to v20.5.9 (#390) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4500674f..3d9de678 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.5.8", + "@types/node": "20.5.9", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 9032ac6d..59d0c02c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.5.8": - version "20.5.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.8.tgz#fb171fd22d37ca6e2ea97fde88e6a13ee14bc327" - integrity sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw== +"@types/node@20.5.9": + version "20.5.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.9.tgz#a70ec9d8fa0180a314c3ede0e20ea56ff71aed9a" + integrity sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ== "@types/resolve@1.20.2": version "1.20.2" From 13f3e61487f2d01c093c6d191f76e5ced35264cf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 03:44:51 +0000 Subject: [PATCH 053/155] Update actions/upload-artifact action to v3.1.3 (#391) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6789ed93..a74823ef 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: SARIF file path: results.sarif From 7b5e8cdde5dc662b97f5f58b7857f58cad4103da Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 07:45:47 +0000 Subject: [PATCH 054/155] Update dependency @types/node to v20.6.0 (#392) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3d9de678..d86af3b1 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.5.9", + "@types/node": "20.6.0", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 59d0c02c..ede2925a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.5.9": - version "20.5.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.9.tgz#a70ec9d8fa0180a314c3ede0e20ea56ff71aed9a" - integrity sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ== +"@types/node@20.6.0": + version "20.6.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16" + integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== "@types/resolve@1.20.2": version "1.20.2" From aa0544c1d873c86c420c9ffa3d9a99e6a4f166fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 10:48:25 +0000 Subject: [PATCH 055/155] Update dependency assert to v2.1.0 (#393) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index ede2925a..cd38371e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -409,14 +409,15 @@ assert-plus@1.0.0, assert-plus@^1.0.0: 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-object-assign "^1.1.0" - is-nan "^1.2.1" - object-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" @@ -765,7 +766,7 @@ deepmerge@^4.2.2: 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: +define-properties@^1.1.3, define-properties@^1.1.4: 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== @@ -860,11 +861,6 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -es6-object-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== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1430,7 +1426,7 @@ is-module@^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.2.1: +is-nan@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== @@ -1942,7 +1938,7 @@ object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-is@^1.0.1: +object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -1955,6 +1951,16 @@ object-keys@^1.1.1: 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#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2712,7 +2718,7 @@ util-deprecate@~1.0.1: 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#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== From 2b6e94127f5c2cdecc5cce64104352d9973638ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 12:04:50 +0000 Subject: [PATCH 056/155] Update actions/checkout action to v4 (#394) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/linter.yml | 2 +- .github/workflows/nodejs.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 6d3e00a2..a6f159c4 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -37,7 +37,7 @@ jobs: # Checkout the code base # ########################## - name: Checkout Code - uses: actions/checkout@v3 + uses: actions/checkout@v4 ################################ # Run Linter against code base # diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 1457ba7e..be82c601 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -16,7 +16,7 @@ jobs: node-version: [14.x, 16.x, 17.x, 18.x, 19.x, 20.x] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a74823ef..d114c785 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 with: persist-credentials: false From a04e2c1a1dbbf0df33d971cc1cf9ebc99a73a904 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Sep 2023 04:36:28 +0000 Subject: [PATCH 057/155] Update dependency @types/node to v20.6.1 (#395) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d86af3b1..8f914e3d 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.6.0", + "@types/node": "20.6.1", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index cd38371e..70e6e88e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.6.0": - version "20.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16" - integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== +"@types/node@20.6.1": + version "20.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.1.tgz#8b589bba9b2af0128796461a0979764562687e6f" + integrity sha512-4LcJvuXQlv4lTHnxwyHQZ3uR9Zw2j7m1C9DfuwoTFQQP4Pmu04O6IfLYgMmHoOCt0nosItLLZAH+sOrRE0Bo8g== "@types/resolve@1.20.2": version "1.20.2" From 887e8bec5221986a8c1e72a500ea4037c39c6a22 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Sep 2023 07:47:31 +0000 Subject: [PATCH 058/155] Update github/codeql-action action to v2.21.7 (#396) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d114c785..fea3d7a2 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8 # v2.21.5 + uses: github/codeql-action/upload-sarif@04daf014b50eaf774287bf3f0f1869d4b4c4b913 # v2.21.7 with: sarif_file: results.sarif From 1457664bd683709ba6fe0c874335308da6510f7a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Sep 2023 20:27:49 +1000 Subject: [PATCH 059/155] Update dependency @types/node to v20.6.2 (#397) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8f914e3d..3260f999 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.6.1", + "@types/node": "20.6.2", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 70e6e88e..1bc851fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.6.1": - version "20.6.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.1.tgz#8b589bba9b2af0128796461a0979764562687e6f" - integrity sha512-4LcJvuXQlv4lTHnxwyHQZ3uR9Zw2j7m1C9DfuwoTFQQP4Pmu04O6IfLYgMmHoOCt0nosItLLZAH+sOrRE0Bo8g== +"@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" From a952b40a9a6ef3ac8488ccfaf3f5b6c866e01bc6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Sep 2023 04:03:34 +0000 Subject: [PATCH 060/155] Update dependency @types/node to v20.6.3 (#398) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3260f999..832f1e28 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.6.2", + "@types/node": "20.6.3", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 1bc851fc..4a21d15d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@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/node@20.6.3": + version "20.6.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" + integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== "@types/resolve@1.20.2": version "1.20.2" From c2d386dac8dde2d2d2ac5b0a836b13c02dd5ec69 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Sep 2023 07:26:59 +0000 Subject: [PATCH 061/155] Update github/codeql-action action to v2.21.8 (#399) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fea3d7a2..9f94e1d8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@04daf014b50eaf774287bf3f0f1869d4b4c4b913 # v2.21.7 + uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8 with: sarif_file: results.sarif From 7a7fbf613420f044d40d73905e6d843614dd3bb6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Sep 2023 10:10:23 +0000 Subject: [PATCH 062/155] Update actions/checkout action to v4.1.0 (#400) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 9f94e1d8..a7b954a6 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: persist-credentials: false From 810d0a4826fc57ed70b88ccf7b27b5c39d12ff61 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Sep 2023 02:06:31 +0000 Subject: [PATCH 063/155] Update dependency @types/node to v20.6.4 (#401) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 832f1e28..0f767fbd 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.6.3", + "@types/node": "20.6.4", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 4a21d15d..9952ee7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.6.3": - version "20.6.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" - integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== +"@types/node@20.6.4": + version "20.6.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.4.tgz#7882cb8b8adc3106c352dac9c02d4d3ebb95cf3e" + integrity sha512-nU6d9MPY0NBUMiE/nXd2IIoC4OLvsLpwAjheoAeuzgvDZA1Cb10QYg+91AF6zQiKWRN5i1m07x6sMe0niBznoQ== "@types/resolve@1.20.2": version "1.20.2" From a8d767f33e8144f35de48c5539e38c19fed35b0f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Sep 2023 21:57:56 +0000 Subject: [PATCH 064/155] Update dependency @types/node to v20.6.5 (#402) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0f767fbd..e4ce0909 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.6.4", + "@types/node": "20.6.5", "assert": "^2.0.0", "magic-string": "0.30.3", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 9952ee7b..5ec69b5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.6.4": - version "20.6.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.4.tgz#7882cb8b8adc3106c352dac9c02d4d3ebb95cf3e" - integrity sha512-nU6d9MPY0NBUMiE/nXd2IIoC4OLvsLpwAjheoAeuzgvDZA1Cb10QYg+91AF6zQiKWRN5i1m07x6sMe0niBznoQ== +"@types/node@20.6.5": + version "20.6.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" + integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== "@types/resolve@1.20.2": version "1.20.2" From a91d406fd0fb77a4b872766236580df310cd7128 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 03:44:30 +0000 Subject: [PATCH 065/155] Update dependency magic-string to v0.30.4 (#403) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e4ce0909..8dbd43ab 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.2", "@types/node": "20.6.5", "assert": "^2.0.0", - "magic-string": "0.30.3", + "magic-string": "0.30.4", "mocha": "10.2.0", "prettier": "3.0.3", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index 5ec69b5b..60ca670f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1590,10 +1590,10 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -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== +magic-string@0.30.4: + version "0.30.4" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" + integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" From d2c9b3c6189308316b075a3ef57c3a99a149112b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 07:03:12 +0000 Subject: [PATCH 066/155] Update github/codeql-action action to v2.21.9 (#404) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a7b954a6..bc5683c0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8 + uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9 with: sarif_file: results.sarif From 5c041b192cbacd4c4744d254354f9e36c44dce66 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 08:17:21 +0000 Subject: [PATCH 067/155] Update dependency @types/node to v20.7.2 (#405) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8dbd43ab..04d3370f 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.6.5", + "@types/node": "20.7.2", "assert": "^2.0.0", "magic-string": "0.30.4", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 60ca670f..ac17c7a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.6.5": - version "20.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" - integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== +"@types/node@20.7.2": + version "20.7.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.2.tgz#0bdc211f8c2438cfadad26dc8c040a874d478aed" + integrity sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ== "@types/resolve@1.20.2": version "1.20.2" From 9c158b0d0dd24507a4a339a0b1f049b0ed9a79e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 14:02:40 +0000 Subject: [PATCH 068/155] Update dependency @types/node to v20.8.0 (#406) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 04d3370f..5f774a27 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@types/node": "20.7.2", + "@types/node": "20.8.0", "assert": "^2.0.0", "magic-string": "0.30.4", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index ac17c7a3..bc9deb25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.7.2": - version "20.7.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.2.tgz#0bdc211f8c2438cfadad26dc8c040a874d478aed" - integrity sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ== +"@types/node@20.8.0": + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== "@types/resolve@1.20.2": version "1.20.2" From 3c28cee4d829da889afdfc5d1819ad00160d6692 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 04:13:10 +0000 Subject: [PATCH 069/155] Update dependency @rollup/plugin-buble to v1.0.3 (#407) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5f774a27..a0d8f26d 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "sed" ], "devDependencies": { - "@rollup/plugin-buble": "1.0.2", + "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", diff --git a/yarn.lock b/yarn.lock index bc9deb25..1c8f3c65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -181,10 +181,10 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@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== +"@rollup/plugin-buble@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-1.0.3.tgz#6ce275f062a3bac583472cf14f54aa5f0957dccf" + integrity sha512-QYD9BKkJoof0FdCFeSYYhF6/Y8e0Mnf+098xGgmWOFJ4UPHlWujjqOYeVwEm2hJPOmlR5k7HPUdAjqtOWhN64Q== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/buble" "^0.19.2" From bebf0dc6d5a8737cf0d0a560aac866b15c1e365f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 06:26:24 +0000 Subject: [PATCH 070/155] Update dependency @rollup/plugin-commonjs to v25.0.5 (#408) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a0d8f26d..6db1f720 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "devDependencies": { "@rollup/plugin-buble": "1.0.3", - "@rollup/plugin-commonjs": "25.0.4", + "@rollup/plugin-commonjs": "25.0.5", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@types/node": "20.8.0", diff --git a/yarn.lock b/yarn.lock index 1c8f3c65..4c06d825 100644 --- a/yarn.lock +++ b/yarn.lock @@ -190,10 +190,10 @@ "@types/buble" "^0.19.2" buble "^0.20.0" -"@rollup/plugin-commonjs@25.0.4": - version "25.0.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz#a7547a0c4ec3fa79818eb313e1de0023e548f4e6" - integrity sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ== +"@rollup/plugin-commonjs@25.0.5": + version "25.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.5.tgz#0bac8f985a5de151b4b09338847f8c7f20a28a29" + integrity sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" From 1a514ef2f784b87d03cc30354a49e5dae3880192 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 10:53:05 +0000 Subject: [PATCH 071/155] Update dependency @rollup/plugin-node-resolve to v15.2.2 (#409) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6db1f720..ead87f1c 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.5", - "@rollup/plugin-node-resolve": "15.2.1", + "@rollup/plugin-node-resolve": "15.2.2", "@rollup/plugin-replace": "5.0.2", "@types/node": "20.8.0", "assert": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 4c06d825..5de7316c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,10 +202,10 @@ is-reference "1.2.1" magic-string "^0.27.0" -"@rollup/plugin-node-resolve@15.2.1": - version "15.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz#a15b14fb7969229e26a30feff2816d39eff503f0" - integrity sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w== +"@rollup/plugin-node-resolve@15.2.2": + version "15.2.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.2.tgz#9ffa367a0a359f0dfc7703acfa8bd311ef9f6832" + integrity sha512-f64bU4OKqV0yihtxFemmuf0oj37pToCFMISCA+sJbbIAl5wcpbRO9XgWNWb1tDiWQJUcPxo6V0l59hcuZOQ3kw== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" From 1bba445cba73cee386f996774b6b9a367cd0ff60 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 12:34:10 +0000 Subject: [PATCH 072/155] Update dependency @rollup/plugin-replace to v5.0.3 (#410) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ead87f1c..324ba4c0 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.5", "@rollup/plugin-node-resolve": "15.2.2", - "@rollup/plugin-replace": "5.0.2", + "@rollup/plugin-replace": "5.0.3", "@types/node": "20.8.0", "assert": "^2.0.0", "magic-string": "0.30.4", diff --git a/yarn.lock b/yarn.lock index 5de7316c..65848fb9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -214,10 +214,10 @@ 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== +"@rollup/plugin-replace@5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.3.tgz#55a4550bd6d5e83a65df3d201e0b3d219be7b4b2" + integrity sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.27.0" From f4b70021a62521784f5668b30aad3042dfaee26b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:20:35 +0000 Subject: [PATCH 073/155] Update dependency @types/node to v20.8.3 (#411) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 324ba4c0..1fb35cd9 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@rollup/plugin-commonjs": "25.0.5", "@rollup/plugin-node-resolve": "15.2.2", "@rollup/plugin-replace": "5.0.3", - "@types/node": "20.8.0", + "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.4", "mocha": "10.2.0", diff --git a/yarn.lock b/yarn.lock index 65848fb9..55647baa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,10 +248,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/node@20.8.0": - version "20.8.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" - integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== +"@types/node@20.8.3": + version "20.8.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.3.tgz#c4ae2bb1cfab2999ed441a95c122bbbe1567a66d" + integrity sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw== "@types/resolve@1.20.2": version "1.20.2" From ee9051241e63a4c7071122bcd7a6f73788bdd86a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 18:07:19 +0000 Subject: [PATCH 074/155] Update github/codeql-action action to v2.22.0 (#412) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index bc5683c0..0c7551ae 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9 + uses: github/codeql-action/upload-sarif@2cb752a87e96af96708ab57187ab6372ee1973ab # v2.22.0 with: sarif_file: results.sarif From 01cde1d3504970e5e8e72754f66f04ac8ae87115 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 21:41:09 +0000 Subject: [PATCH 075/155] Update ossf/scorecard-action action to v2.3.0 (#413) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0c7551ae..ac587514 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0 + uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0 with: results_file: results.sarif results_format: sarif From d73c3ec5d88a76c24da28312ce2a00e59f2c835b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 00:30:24 +0000 Subject: [PATCH 076/155] Update dependency @rollup/plugin-node-resolve to v15.2.3 (#415) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 1fb35cd9..39c82ab4 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.5", - "@rollup/plugin-node-resolve": "15.2.2", + "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.3", "@types/node": "20.8.3", "assert": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 55647baa..bede92d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,10 +202,10 @@ is-reference "1.2.1" magic-string "^0.27.0" -"@rollup/plugin-node-resolve@15.2.2": - version "15.2.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.2.tgz#9ffa367a0a359f0dfc7703acfa8bd311ef9f6832" - integrity sha512-f64bU4OKqV0yihtxFemmuf0oj37pToCFMISCA+sJbbIAl5wcpbRO9XgWNWb1tDiWQJUcPxo6V0l59hcuZOQ3kw== +"@rollup/plugin-node-resolve@15.2.3": + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" From 0cc84656f767e89694dd72a5092c88a1b4cf96a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 03:18:52 +0000 Subject: [PATCH 077/155] Update dependency magic-string to v0.30.5 (#417) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 39c82ab4..bfa1199f 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.3", "@types/node": "20.8.3", "assert": "^2.0.0", - "magic-string": "0.30.4", + "magic-string": "0.30.5", "mocha": "10.2.0", "prettier": "3.0.3", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index bede92d9..e82e3a8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1590,10 +1590,10 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@0.30.4: - version "0.30.4" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" - integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== +magic-string@0.30.5: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" From 1ffb9bdc5c5e147c24ba1f6329476616ad57ef50 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:35:22 +0000 Subject: [PATCH 078/155] Update github/codeql-action action to v2.22.3 (#418) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ac587514..3c86cebf 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2cb752a87e96af96708ab57187ab6372ee1973ab # v2.22.0 + uses: github/codeql-action/upload-sarif@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 with: sarif_file: results.sarif From c7bc671ed961f90872b23ad3601a62ac1ec4ee0e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Oct 2023 19:31:20 +0000 Subject: [PATCH 079/155] Update dependency @rollup/plugin-commonjs to v25.0.7 (#419) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index bfa1199f..6839a567 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "devDependencies": { "@rollup/plugin-buble": "1.0.3", - "@rollup/plugin-commonjs": "25.0.5", + "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.3", "@types/node": "20.8.3", diff --git a/yarn.lock b/yarn.lock index e82e3a8e..81617e57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -190,17 +190,17 @@ "@types/buble" "^0.19.2" buble "^0.20.0" -"@rollup/plugin-commonjs@25.0.5": - version "25.0.5" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.5.tgz#0bac8f985a5de151b4b09338847f8c7f20a28a29" - integrity sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w== +"@rollup/plugin-commonjs@25.0.7": + version "25.0.7" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" + integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== 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" + magic-string "^0.30.3" "@rollup/plugin-node-resolve@15.2.3": version "15.2.3" @@ -1590,7 +1590,7 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@0.30.5: +magic-string@0.30.5, magic-string@^0.30.3: version "0.30.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== From efa4dc063192f3994f3f0a36c3740d72cce81ced Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:58:14 +0000 Subject: [PATCH 080/155] Update dependency @rollup/plugin-replace to v5.0.4 (#420) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 19 ++++++------------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 6839a567..5eac8737 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.3", + "@rollup/plugin-replace": "5.0.4", "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.5", diff --git a/yarn.lock b/yarn.lock index 81617e57..36be5c60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,7 +58,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+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.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -214,13 +214,13 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.3.tgz#55a4550bd6d5e83a65df3d201e0b3d219be7b4b2" - integrity sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q== +"@rollup/plugin-replace@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.4.tgz#fef548dc751d06747e8dca5b0e8e1fbf647ac7e1" + integrity sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ== dependencies: "@rollup/pluginutils" "^5.0.1" - magic-string "^0.27.0" + magic-string "^0.30.3" "@rollup/pluginutils@^5.0.1": version "5.0.2" @@ -1604,13 +1604,6 @@ magic-string@^0.25.0, magic-string@^0.25.7: 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-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" From 854e066082ad49411cfa7c85244f4a090edce111 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Oct 2023 04:20:26 +0000 Subject: [PATCH 081/155] Update actions/checkout action to v4.1.1 (#421) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3c86cebf..1ec342bd 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: persist-credentials: false From eeaf62f8717d727d45a4aa872108f7ffb4a12f4f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Oct 2023 06:14:15 +0000 Subject: [PATCH 082/155] Update github/codeql-action action to v2.22.4 (#422) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1ec342bd..ca4767f3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 + uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 with: sarif_file: results.sarif From 199a4ea76acc2fd099e884c445e6b66d102a6ed1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 04:58:05 +0000 Subject: [PATCH 083/155] Update github/codeql-action action to v2.22.5 (#423) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ca4767f3..b71f0e8c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 + uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5 with: sarif_file: results.sarif From 7a122111584b45105ed6dc3e079965b9c7bb386d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 06:55:49 +0000 Subject: [PATCH 084/155] Update ossf/scorecard-action action to v2.3.1 (#424) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b71f0e8c..017bc4d2 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0 + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 with: results_file: results.sarif results_format: sarif From 7bfc9eaca809a08229387be107c4ac9392f0358f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 09:40:23 +0000 Subject: [PATCH 085/155] Update actions/setup-node action to v4 (#425) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/nodejs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index be82c601..e2f82e48 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: npx yarn install From 00eb123788052021db597274d5ea921bb671f6dc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 29 Oct 2023 21:24:02 +0000 Subject: [PATCH 086/155] Update dependency @rollup/plugin-replace to v5.0.5 (#426) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5eac8737..041483cf 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.4", + "@rollup/plugin-replace": "5.0.5", "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.5", diff --git a/yarn.lock b/yarn.lock index 36be5c60..6c2d7316 100644 --- a/yarn.lock +++ b/yarn.lock @@ -214,10 +214,10 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.4.tgz#fef548dc751d06747e8dca5b0e8e1fbf647ac7e1" - integrity sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ== +"@rollup/plugin-replace@5.0.5": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz#33d5653dce6d03cb24ef98bef7f6d25b57faefdf" + integrity sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.30.3" From 2083f96e953b2f7e25b570df25e480448759ec86 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Wed, 15 Nov 2023 11:51:31 +1100 Subject: [PATCH 087/155] Update readme --- README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 92ce06ec..c7c86a76 100644 --- a/README.md +++ b/README.md @@ -10,21 +10,17 @@ -

-
-RexReplace mascot Benny on the RexReplace logo -
-
-

+# RexReplace + +

RexReplace mascot Benny as the RexReplace logo +

---- -# RexReplace -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. Its inspired by how developers often need to do quick fixes or one-liners for build scripts. **Key features**: From 61a31588dbe7c72a6e29bfdc134712a6efdde125 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Thu, 16 Nov 2023 07:53:42 +1100 Subject: [PATCH 088/155] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 041483cf..47b3cbea 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "rexreplace", "version": "7.1.3", - "description": "Smoothly search & replace in files from CLI.", + "description": "Smooth search & replace across files from the CLI | 🔎 🔃 📄", "author": "Mathias Rangel Wulff", "license": "MIT", "main": "src/engine.js", From 167991bade3a3bc88fe2bd7c408b1ddab281fac1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Nov 2023 04:22:53 +0000 Subject: [PATCH 089/155] Update dependency yarn to v1.22.21 (#427) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 47b3cbea..1584db41 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "rollup-plugin-typescript3": "3.0.2", "typescript": "5.2.2", "version-bump-prompt": "6.1.0", - "yarn": "1.22.19" + "yarn": "1.22.21" }, "resolutions": { "ansi-regex": "5.0.1", diff --git a/yarn.lock b/yarn.lock index 6c2d7316..454ebb66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2853,10 +2853,10 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -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== +yarn@1.22.21: + version "1.22.21" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.21.tgz#1959a18351b811cdeedbd484a8f86c3cc3bbaf72" + integrity sha512-ynXaJsADJ9JiZ84zU25XkPGOvVMmZ5b7tmTSpKURYwgELdjucAOydqIOrOfTxVYcNXe91xvLZwcRh68SR3liCg== yocto-queue@^0.1.0: version "0.1.0" From 35c3743fd66a475ee9923a4cda0479d898fd7215 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Nov 2023 06:49:13 +0000 Subject: [PATCH 090/155] Update github/codeql-action action to v2.22.7 (#428) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 017bc4d2..85da4d07 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5 + uses: github/codeql-action/upload-sarif@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7 with: sarif_file: results.sarif From eccc16085f2195dc4467b84465d74c478c646eb8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Nov 2023 10:21:03 +0000 Subject: [PATCH 091/155] Update dependency prettier to v3.1.0 (#429) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 1584db41..f1043b7d 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.5", "mocha": "10.2.0", - "prettier": "3.0.3", + "prettier": "3.1.0", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 454ebb66..fe064e87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2062,10 +2062,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.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== +prettier@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" + integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== process-nextick-args@~2.0.0: version "2.0.1" From 65f942d3aa3861a5ed867c66b4bee02c367d5cde Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Nov 2023 05:08:30 +0000 Subject: [PATCH 092/155] Update github/codeql-action action to v2.22.8 (#430) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 85da4d07..81a9ba3a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7 + uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8 with: sarif_file: results.sarif From 94e28aed5ef1ba5b8c720f23a8e654491bf5e2b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Nov 2023 06:47:14 +0000 Subject: [PATCH 093/155] Update dependency typescript to v5.3.2 (#431) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f1043b7d..b3e704b7 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.2", - "typescript": "5.2.2", + "typescript": "5.3.2", "version-bump-prompt": "6.1.0", "yarn": "1.22.21" }, diff --git a/yarn.lock b/yarn.lock index fe064e87..e2376b12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2634,10 +2634,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.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +typescript@5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.2.tgz#00d1c7c1c46928c5845c1ee8d0cc2791031d4c43" + integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== typical@^4.0.0: version "4.0.0" From dc8bec82c955ed1cac52c3a4154c7290d002fa8b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 04:30:48 +0000 Subject: [PATCH 094/155] Update dependency fs-extra to v11.2.0 (#432) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index e2376b12..6e39eea1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1002,9 +1002,9 @@ form-data@~2.3.2: 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== + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -2687,9 +2687,9 @@ universalify@^0.2.0: 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#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== uri-js@^4.2.2: version "4.4.1" From ab5cd503e1d64fb22ea7ffd6e59c2cf220e626eb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Dec 2023 10:39:52 +0000 Subject: [PATCH 095/155] Update dependency typescript to v5.3.3 (#433) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b3e704b7..fa318478 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.2", - "typescript": "5.3.2", + "typescript": "5.3.3", "version-bump-prompt": "6.1.0", "yarn": "1.22.21" }, diff --git a/yarn.lock b/yarn.lock index 6e39eea1..8adc6aad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2634,10 +2634,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.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.2.tgz#00d1c7c1c46928c5845c1ee8d0cc2791031d4c43" - integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== +typescript@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== typical@^4.0.0: version "4.0.0" From bd8d37f154e5657d6ecb610733819dcc31be840c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Dec 2023 12:10:55 +0000 Subject: [PATCH 096/155] Update dependency prettier to v3.1.1 (#435) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fa318478..b0c88e5a 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.5", "mocha": "10.2.0", - "prettier": "3.1.0", + "prettier": "3.1.1", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 8adc6aad..399a6116 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2062,10 +2062,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.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" - integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== +prettier@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" + integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== process-nextick-args@~2.0.0: version "2.0.1" From 849039baecf067e79eae99fc0737a583b33dcb41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Dec 2023 15:53:22 +0000 Subject: [PATCH 097/155] Update github/codeql-action action to v2.22.9 (#434) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 81a9ba3a..60d8056b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8 + uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 with: sarif_file: results.sarif From 948ac437e68b2fdbc059851955646b0b20bf7f0f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Dec 2023 03:23:01 +0000 Subject: [PATCH 098/155] Update github/codeql-action action to v2.22.11 (#436) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 60d8056b..4e748b6f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 + uses: github/codeql-action/upload-sarif@03e7845b7bfcd5e7fb63d1ae8c61b0e791134fab # v2.22.11 with: sarif_file: results.sarif From 51387fc80e3347b6d281838970cf7e29c2cb7e09 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Dec 2023 06:53:06 +0000 Subject: [PATCH 099/155] Update actions/upload-artifact action to v4 (#437) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 4e748b6f..2e8d237f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 + uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 with: name: SARIF file path: results.sarif From 64bcf65422e25acded10cbda5868c0858cfe53b3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Dec 2023 10:57:44 +0000 Subject: [PATCH 100/155] Update github/codeql-action action to v3 (#438) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2e8d237f..165a5d88 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@03e7845b7bfcd5e7fb63d1ae8c61b0e791134fab # v2.22.11 + uses: github/codeql-action/upload-sarif@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 with: sarif_file: results.sarif From 9121e204972517a76a17e1c7ef1dd642e675a2a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Dec 2023 04:39:52 +0000 Subject: [PATCH 101/155] Update github/codeql-action action to v3.22.12 (#439) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 165a5d88..19b4901d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 + uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 with: sarif_file: results.sarif From d39220130a4d30ed34f80568aa93893877b8466d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 04:32:09 +0000 Subject: [PATCH 102/155] Update actions/upload-artifact action to v4.1.0 (#440) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 19b4901d..ae6aa03d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 + uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 with: name: SARIF file path: results.sarif From 6cc0ac92ab7b42e411ad9e79f7d06c08bf8a637a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 06:04:28 +0000 Subject: [PATCH 103/155] Update dependency prettier to v3.2.1 (#441) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b0c88e5a..63a8b568 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.5", "mocha": "10.2.0", - "prettier": "3.1.1", + "prettier": "3.2.1", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 399a6116..c4c009e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2062,10 +2062,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.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" - integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== +prettier@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.1.tgz#babf33580e16c796a9740b9fae551624f7bfeaab" + integrity sha512-qSUWshj1IobVbKc226Gw2pync27t0Kf0EdufZa9j7uBSJay1CC+B3K5lAAZoqgX3ASiKuWsk6OmzKRetXNObWg== process-nextick-args@~2.0.0: version "2.0.1" From 1b08dd254f822df35177081698673fd0cba97100 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 10:41:47 +0000 Subject: [PATCH 104/155] Update github/codeql-action action to v3.23.0 (#442) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ae6aa03d..03d04cab 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 + uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 with: sarif_file: results.sarif From ddd94fc62fb6a3bd133a0766c04639f13169066a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 14 Jan 2024 07:34:09 +0000 Subject: [PATCH 105/155] Update dependency prettier to v3.2.2 (#443) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 63a8b568..bbe59303 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.5", "mocha": "10.2.0", - "prettier": "3.2.1", + "prettier": "3.2.2", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index c4c009e6..cbab2684 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2062,10 +2062,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.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.1.tgz#babf33580e16c796a9740b9fae551624f7bfeaab" - integrity sha512-qSUWshj1IobVbKc226Gw2pync27t0Kf0EdufZa9j7uBSJay1CC+B3K5lAAZoqgX3ASiKuWsk6OmzKRetXNObWg== +prettier@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.2.tgz#96e580f7ca9c96090ad054616c0c4597e2844b65" + integrity sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A== process-nextick-args@~2.0.0: version "2.0.1" From 609395c5143cecc0c91f0afc93b795eea87e8759 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Jan 2024 05:29:44 +0000 Subject: [PATCH 106/155] Update dependency prettier to v3.2.4 (#444) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index bbe59303..58428e59 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.5", "mocha": "10.2.0", - "prettier": "3.2.2", + "prettier": "3.2.4", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index cbab2684..c02f7bf7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2062,10 +2062,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.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.2.tgz#96e580f7ca9c96090ad054616c0c4597e2844b65" - integrity sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A== +prettier@3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" + integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== process-nextick-args@~2.0.0: version "2.0.1" From 66e96306aa047c34892c73316b66df20ab682597 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Jan 2024 06:46:58 +0000 Subject: [PATCH 107/155] Update github/codeql-action action to v3.23.1 (#445) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 03d04cab..7c1f4601 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 + uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 with: sarif_file: results.sarif From 7c557956aa9a639988472d3b87331435ab1ac76b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Jan 2024 10:46:39 +0000 Subject: [PATCH 108/155] Update actions/upload-artifact action to v4.2.0 (#446) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7c1f4601..57f08197 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 + uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 with: name: SARIF file path: results.sarif From 5a9fa4b8642576f5099b81fc58ff710ae31862c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jan 2024 05:19:54 +0000 Subject: [PATCH 109/155] Update github/codeql-action action to v3.23.2 (#447) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 57f08197..2a01a662 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: sarif_file: results.sarif From 9acf6fc7763c763360b4b387593809b902380956 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jan 2024 06:50:37 +0000 Subject: [PATCH 110/155] Update actions/upload-artifact action to v4.3.0 (#448) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2a01a662..46f6f820 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 + uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 with: name: SARIF file path: results.sarif From bc0183639ad738ad42b3c23270c45d42cf765346 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Feb 2024 08:27:06 +0000 Subject: [PATCH 111/155] Update dependency magic-string to v0.30.6 (#449) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 58428e59..1f166abf 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.5", "@types/node": "20.8.3", "assert": "^2.0.0", - "magic-string": "0.30.5", + "magic-string": "0.30.6", "mocha": "10.2.0", "prettier": "3.2.4", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index c02f7bf7..109774f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1590,10 +1590,10 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@0.30.5, magic-string@^0.30.3: - version "0.30.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" - integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== +magic-string@0.30.6: + version "0.30.6" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.6.tgz#996e21b42f944e45591a68f0905d6a740a12506c" + integrity sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -1604,6 +1604,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.30.3: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + 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" From a33e30bedced941c95e7898bed68a936fbe2084b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Feb 2024 09:22:42 +0000 Subject: [PATCH 112/155] Update github/codeql-action action to v3.24.0 (#450) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 46f6f820..d56cda64 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: sarif_file: results.sarif From 098746fb80c3da08e9b1c2024b40ab32fd32be4f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 10:22:08 +0000 Subject: [PATCH 113/155] Update dependency prettier to v3.2.5 (#451) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 1f166abf..dafcb6db 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.6", "mocha": "10.2.0", - "prettier": "3.2.4", + "prettier": "3.2.5", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 109774f6..61c19b59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2069,10 +2069,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.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" - integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== +prettier@3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== process-nextick-args@~2.0.0: version "2.0.1" From 1ee1aefe8d67263f62ebcf0c54a696eb84db1e13 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Feb 2024 03:55:56 +0000 Subject: [PATCH 114/155] Update actions/upload-artifact action to v4.3.1 (#452) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d56cda64..e0fe38a0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: SARIF file path: results.sarif From 1881865dccec1eecc0c6523a6d606da606132e52 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Feb 2024 07:45:07 +0000 Subject: [PATCH 115/155] Update dependency magic-string to v0.30.7 (#453) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index dafcb6db..48a57ed6 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.5", "@types/node": "20.8.3", "assert": "^2.0.0", - "magic-string": "0.30.6", + "magic-string": "0.30.7", "mocha": "10.2.0", "prettier": "3.2.5", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index 61c19b59..d896d209 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1590,10 +1590,10 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@0.30.6: - version "0.30.6" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.6.tgz#996e21b42f944e45591a68f0905d6a740a12506c" - integrity sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA== +magic-string@0.30.7: + version "0.30.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" + integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" From bcce0fc4d101f1365fbb6be6fe56b5f0f82fe273 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Feb 2024 09:52:26 +0000 Subject: [PATCH 116/155] Update dependency mocha to v10.3.0 (#454) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 38 ++++++++++---------------------------- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 48a57ed6..f344547c 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.7", - "mocha": "10.2.0", + "mocha": "10.3.0", "prettier": "3.2.5", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index d896d209..580617e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1075,17 +1075,16 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.1.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 "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" glob@^10.2.6: version "10.3.3" @@ -1110,17 +1109,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" @@ -1773,10 +1761,10 @@ mkdirp@^1.0.3, mkdirp@^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" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== +mocha@10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" + integrity sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" @@ -1785,13 +1773,12 @@ mocha@10.2.0: diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.2.0" + glob "8.1.0" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" @@ -1815,11 +1802,6 @@ mute-stream@0.0.8: 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#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" From 46ed9c11e4f1b807f194c057c4dc3c18039b3083 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:33:11 +0000 Subject: [PATCH 117/155] Update github/codeql-action action to v3.24.3 (#455) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e0fe38a0..728b339e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: sarif_file: results.sarif From 2e23348dadd02483f97bdb8f72de4ea29055eefb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 01:46:18 +0000 Subject: [PATCH 118/155] Update actions/checkout action to v4.1.6 (#458) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 728b339e..e584eb53 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false From 325208d1a95f2fe2ab70eb7428481efe856f1d57 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 03:50:06 +0000 Subject: [PATCH 119/155] Update actions/upload-artifact action to v4.3.3 (#459) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index e584eb53..dc942c4a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif From a645d891a96da255dba80ed7a2e079877f0c1c3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 04:14:43 +0000 Subject: [PATCH 120/155] Update dependency @rollup/plugin-commonjs to v25.0.8 (#460) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index f344547c..06adcd49 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "devDependencies": { "@rollup/plugin-buble": "1.0.3", - "@rollup/plugin-commonjs": "25.0.7", + "@rollup/plugin-commonjs": "25.0.8", "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@types/node": "20.8.3", diff --git a/yarn.lock b/yarn.lock index 580617e1..1edd8107 100644 --- a/yarn.lock +++ b/yarn.lock @@ -190,10 +190,10 @@ "@types/buble" "^0.19.2" buble "^0.20.0" -"@rollup/plugin-commonjs@25.0.7": - version "25.0.7" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" - integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== +"@rollup/plugin-commonjs@25.0.8": + version "25.0.8" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz#c77e608ab112a666b7f2a6bea625c73224f7dd34" + integrity sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" @@ -2449,7 +2449,7 @@ string-argv@^0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -"string-width-cjs@npm:string-width@^4.2.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-cjs@npm: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== @@ -2467,6 +2467,15 @@ 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: + 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== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -2483,7 +2492,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm: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== @@ -2497,6 +2506,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: 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== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -2776,7 +2792,16 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm: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== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +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== From 54262e003215de2533d28efafd0445c493b240c1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 06:32:26 +0000 Subject: [PATCH 121/155] Update dependency @rollup/plugin-replace to v5.0.7 (#461) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 06adcd49..fe090c5a 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@rollup/plugin-buble": "1.0.3", "@rollup/plugin-commonjs": "25.0.8", "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.5", + "@rollup/plugin-replace": "5.0.7", "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.7", diff --git a/yarn.lock b/yarn.lock index 1edd8107..751dda69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -214,10 +214,10 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz#33d5653dce6d03cb24ef98bef7f6d25b57faefdf" - integrity sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ== +"@rollup/plugin-replace@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz#150c9ee9db8031d9e4580a61a0edeaaed3d37687" + integrity sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.30.3" From f69705d8ccb773a0daa0936d9a99bb524befdef6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 09:14:17 +0000 Subject: [PATCH 122/155] Update dependency magic-string to v0.30.10 (#462) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fe090c5a..3f0a7398 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.7", "@types/node": "20.8.3", "assert": "^2.0.0", - "magic-string": "0.30.7", + "magic-string": "0.30.10", "mocha": "10.3.0", "prettier": "3.2.5", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index 751dda69..c2adcd06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1578,10 +1578,10 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@0.30.7: - version "0.30.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" - integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== +magic-string@0.30.10: + version "0.30.10" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" From 70f59354090a44cd25551915dae04febce6f3c31 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 12:09:01 +0000 Subject: [PATCH 123/155] Update dependency tough-cookie to v4.1.4 (#463) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3f0a7398..a6bb60ec 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ }, "resolutions": { "ansi-regex": "5.0.1", - "tough-cookie": "4.1.3" + "tough-cookie": "4.1.4" }, "directories": { "test": "test" diff --git a/yarn.lock b/yarn.lock index c2adcd06..889fd9ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2592,10 +2592,10 @@ to-regex-range@^5.0.1: dependencies: 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#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== +tough-cookie@4.1.4, tough-cookie@~2.5.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" punycode "^2.1.1" From 74fd28c4cf1472c743d763615737bb6dd1f3d57f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 15:23:16 +0000 Subject: [PATCH 124/155] Update dependency yarn to v1.22.22 (#464) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a6bb60ec..dd96313c 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "rollup-plugin-typescript3": "3.0.2", "typescript": "5.3.3", "version-bump-prompt": "6.1.0", - "yarn": "1.22.21" + "yarn": "1.22.22" }, "resolutions": { "ansi-regex": "5.0.1", diff --git a/yarn.lock b/yarn.lock index 889fd9ff..5f8f0a42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2867,10 +2867,10 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yarn@1.22.21: - version "1.22.21" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.21.tgz#1959a18351b811cdeedbd484a8f86c3cc3bbaf72" - integrity sha512-ynXaJsADJ9JiZ84zU25XkPGOvVMmZ5b7tmTSpKURYwgELdjucAOydqIOrOfTxVYcNXe91xvLZwcRh68SR3liCg== +yarn@1.22.22: + version "1.22.22" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.22.tgz#ac34549e6aa8e7ead463a7407e1c7390f61a6610" + integrity sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg== yocto-queue@^0.1.0: version "0.1.0" From 0a1abe12d60612141c7d5421cd8bba7067a75d03 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 18:51:16 +0000 Subject: [PATCH 125/155] Update ossf/scorecard-action action to v2.3.3 (#465) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dc942c4a..f5461733 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif From b91656f357f436897e1ee154baaaa4595198412c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 22:02:32 +0000 Subject: [PATCH 126/155] Update dependency mocha to v10.4.0 (#466) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index dd96313c..89eb868c 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.10", - "mocha": "10.3.0", + "mocha": "10.4.0", "prettier": "3.2.5", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index 5f8f0a42..0a59de14 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1761,10 +1761,10 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" - integrity sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg== +mocha@10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261" + integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" From a0c52542faab2ea830c5df182b875f530fa469ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jun 2024 01:31:26 +0000 Subject: [PATCH 127/155] Update dependency prettier to v3.3.1 (#467) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 89eb868c..b8ecef46 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.10", "mocha": "10.4.0", - "prettier": "3.2.5", + "prettier": "3.3.1", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 0a59de14..97f7919b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2051,10 +2051,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.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== +prettier@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.1.tgz#e68935518dd90bb7ec4821ba970e68f8de16e1ac" + integrity sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg== process-nextick-args@~2.0.0: version "2.0.1" From 3a1da40fdfa913d260dda49c0bdde993eb0b3469 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jun 2024 03:55:49 +0000 Subject: [PATCH 128/155] Update dependency typescript to v5.4.5 (#468) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b8ecef46..a1da86b8 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.2", - "typescript": "5.3.3", + "typescript": "5.4.5", "version-bump-prompt": "6.1.0", "yarn": "1.22.22" }, diff --git a/yarn.lock b/yarn.lock index 97f7919b..1fd5eef9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2639,10 +2639,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.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +typescript@5.4.5: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== typical@^4.0.0: version "4.0.0" From 7acacfa0049c235705bc4d85c883112b16994cf8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jun 2024 07:06:54 +0000 Subject: [PATCH 129/155] Update github/codeql-action action to v3.25.8 (#469) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f5461733..df2c1df6 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: results.sarif From ef1539f6d189c2fc3619f3247574407b9bef3e23 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jun 2024 09:10:29 +0000 Subject: [PATCH 130/155] Update dependency @rollup/plugin-commonjs to v26 (#470) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 57 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a1da86b8..77df6a84 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "devDependencies": { "@rollup/plugin-buble": "1.0.3", - "@rollup/plugin-commonjs": "25.0.8", + "@rollup/plugin-commonjs": "26.0.1", "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.7", "@types/node": "20.8.3", diff --git a/yarn.lock b/yarn.lock index 1fd5eef9..20fc7e70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -190,15 +190,15 @@ "@types/buble" "^0.19.2" buble "^0.20.0" -"@rollup/plugin-commonjs@25.0.8": - version "25.0.8" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz#c77e608ab112a666b7f2a6bea625c73224f7dd34" - integrity sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A== +"@rollup/plugin-commonjs@26.0.1": + version "26.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz#16d4d6e54fa63021249a292b50f27c0b0f1a30d8" + integrity sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" estree-walker "^2.0.2" - glob "^8.0.3" + glob "^10.4.1" is-reference "1.2.1" magic-string "^0.30.3" @@ -1075,7 +1075,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@8.1.0, glob@^8.0.3: +glob@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -1097,6 +1097,17 @@ glob@^10.2.6: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" +glob@^10.4.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" + 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/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -1480,6 +1491,15 @@ jackspeak@^2.0.3: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^3.1.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" + integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -1566,6 +1586,11 @@ log-symbols@4.1.0, log-symbols@^4.0.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1679,6 +1704,13 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + 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" @@ -1748,6 +1780,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -2036,6 +2073,14 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" From cb3f816120da0d749faa12ff26370c5b68c0505d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Jun 2024 03:31:41 +0000 Subject: [PATCH 131/155] Update actions/checkout action to v4.1.7 (#471) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index df2c1df6..af024791 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: persist-credentials: false From cceb6ba3b5a4b1ab34300071be4fc508f3980f5a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Jun 2024 08:10:27 +0000 Subject: [PATCH 132/155] Update dependency prettier to v3.3.2 (#472) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 77df6a84..d6d6df0d 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.10", "mocha": "10.4.0", - "prettier": "3.3.1", + "prettier": "3.3.2", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 20fc7e70..49e77106 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2096,10 +2096,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.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.1.tgz#e68935518dd90bb7ec4821ba970e68f8de16e1ac" - integrity sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg== +prettier@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" + integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== process-nextick-args@~2.0.0: version "2.0.1" From 2277923efbe1fcc4e5628ec45ea1fc49af38dece Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Jun 2024 10:27:54 +0000 Subject: [PATCH 133/155] Update github/codeql-action action to v3.25.10 (#473) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index af024791..578ca859 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 with: sarif_file: results.sarif From a82ca87f1e8f81dfc4ca2118f6b2b7c777adf4dc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 22 Jun 2024 05:05:26 +0000 Subject: [PATCH 134/155] Update dependency typescript to v5.5.2 (#474) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d6d6df0d..2667d140 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.2", - "typescript": "5.4.5", + "typescript": "5.5.2", "version-bump-prompt": "6.1.0", "yarn": "1.22.22" }, diff --git a/yarn.lock b/yarn.lock index 49e77106..172185fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2684,10 +2684,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.4.5: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== +typescript@5.5.2: + version "5.5.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507" + integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew== typical@^4.0.0: version "4.0.0" From 0e05150a8cffd0e7cd73d2279bc8e791694f4061 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 03:35:02 +0000 Subject: [PATCH 135/155] Update github/codeql-action action to v3.25.11 (#475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 578ca859..5da3d529 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: sarif_file: results.sarif From 737bf09faa03652269fe6cf0512537b5cea3a52e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 06:43:23 +0000 Subject: [PATCH 136/155] Update dependency mocha to v10.5.2 (#477) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 2667d140..ae8ea7a8 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.10", - "mocha": "10.4.0", + "mocha": "10.5.2", "prettier": "3.3.2", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index 172185fd..8edf76ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -601,10 +601,10 @@ chardet@^0.7.0: 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#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -1798,14 +1798,14 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261" - integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA== +mocha@10.5.2: + version "10.5.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.5.2.tgz#0a3481fb67c0a7fc144a909b2d6a9fec35ec5989" + integrity sha512-9btlN3JKCefPf+vKd/kcKz2SXxi12z6JswkGfaAF0saQvnsqLJk504ZmbxhSoENge08E9dsymozKgFMTl5PQsA== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.3" + chokidar "^3.5.3" debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" From 9960d3d4f040f677f93f06b57172310d64ed0601 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 19:55:44 +0000 Subject: [PATCH 137/155] Update dependency rollup-plugin-typescript3 to v3.0.5 (#478) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 77 ++++++++++++++++++---------------------------------- 2 files changed, 28 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index ae8ea7a8..69d6b469 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "rollup-plugin-hashbang": "3.0.0", "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", - "rollup-plugin-typescript3": "3.0.2", + "rollup-plugin-typescript3": "3.0.5", "typescript": "5.5.2", "version-bump-prompt": "6.1.0", "yarn": "1.22.22" diff --git a/yarn.lock b/yarn.lock index 8edf76ae..ab972fa5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1086,17 +1086,6 @@ glob@8.1.0: minimatch "^5.0.1" once "^1.3.0" -glob@^10.2.6: - version "10.3.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" - integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - glob@^10.4.1: version "10.4.1" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" @@ -1108,6 +1097,18 @@ glob@^10.4.1: minipass "^7.1.2" path-scurry "^1.11.1" +glob@^10.4.2: + version "10.4.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.2.tgz#bed6b95dade5c1f80b4434daced233aee76160e5" + integrity sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + 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/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -1482,15 +1483,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -jackspeak@^2.0.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" - integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jackspeak@^3.1.2: version "3.4.0" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" @@ -1598,11 +1590,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== - magic-string@0.30.10: version "0.30.10" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" @@ -1697,13 +1684,6 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" @@ -2020,6 +2000,11 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + pacote@^11.2.7: version "11.3.5" resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" @@ -2065,14 +2050,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" @@ -2332,13 +2309,13 @@ rollup-plugin-progress@1.1.2: dependencies: chalk "^2.4.2" -rollup-plugin-typescript3@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-3.0.2.tgz#095a3595af0e53a0b31217fc8ca9f1b0de629494" - integrity sha512-CQcBsiuEFsxV8VbAP6B+EgKAD7tIdKmIeR1o1TlBEA8Aacpmvnl/cVuuLRh1kPCvQ/z2AiWeYmR2mrVjhazaKA== +rollup-plugin-typescript3@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript3/-/rollup-plugin-typescript3-3.0.5.tgz#ddab0de4b81f7d104e76fc3695a7c387a5c58658" + integrity sha512-BWmj3OzLPUaJnb3laE0nx6JjpqYwzcmG0nwidcW3SjHWVZSLMoDsM1lWK31ljTUCqY6tZRRuUrvzfW2/pqUHLA== dependencies: - glob "^10.2.6" - tslib "^2.5.2" + glob "^10.4.2" + tslib "^2.6.3" rollup@2.79.1: version "2.79.1" @@ -2652,10 +2629,10 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.5.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tunnel-agent@^0.6.0: version "0.6.0" From ba7baeb14ba6d7f2e443b65158a99a78aed8fde3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 07:32:15 +0000 Subject: [PATCH 138/155] Update dependency typescript to v5.5.3 (#480) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 69d6b469..248de6fa 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.5", - "typescript": "5.5.2", + "typescript": "5.5.3", "version-bump-prompt": "6.1.0", "yarn": "1.22.22" }, diff --git a/yarn.lock b/yarn.lock index ab972fa5..11a32de1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2661,10 +2661,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.5.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507" - integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew== +typescript@5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" + integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== typical@^4.0.0: version "4.0.0" From f7cd86447a29db32a09166ad338031c040917f1e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 10:57:38 +0000 Subject: [PATCH 139/155] Update actions/upload-artifact action to v4.3.4 (#479) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5da3d529..5d0bf13e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 with: name: SARIF file path: results.sarif From d1d498311af71ff9d5eb4f346443f2d74cec2c2b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 14:16:59 +0000 Subject: [PATCH 140/155] Update dependency mocha to v10.6.0 (#481) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 167 +++++++++++++++++++++++++-------------------------- 2 files changed, 82 insertions(+), 87 deletions(-) diff --git a/package.json b/package.json index 248de6fa..d1cee39d 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.10", - "mocha": "10.5.2", + "mocha": "10.6.0", "prettier": "3.3.2", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index 11a32de1..12464304 100644 --- a/yarn.lock +++ b/yarn.lock @@ -324,10 +324,10 @@ ansi-align@^3.0.0: 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== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.2.1: version "4.3.2" @@ -499,7 +499,7 @@ brotli-size@4.0.0: dependencies: duplexer "0.1.1" -browser-stdout@1.3.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== @@ -749,13 +749,20 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.3.3: +debug@4, debug@^4.1.0, debug@^4.3.3: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + 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" @@ -799,10 +806,10 @@ detect-newline@^3.1.0: 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#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dir-glob@^3.0.1: version "3.0.1" @@ -866,16 +873,16 @@ escalade@^3.1.1: 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#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#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +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== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -959,7 +966,7 @@ find-replace@^3.0.0: dependencies: array-back "^3.0.1" -find-up@5.0.0: +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== @@ -1075,17 +1082,6 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@8.1.0: - 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" - glob@^10.4.1: version "10.4.1" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" @@ -1121,6 +1117,17 @@ 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.1.0: + 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" @@ -1223,7 +1230,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.2.0: +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== @@ -1492,7 +1499,7 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -js-yaml@4.1.0: +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== @@ -1570,7 +1577,7 @@ lodash@^4.17.19: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.0.0: +log-symbols@^4.0.0, log-symbols@^4.1.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== @@ -1663,13 +1670,6 @@ mimic-fn@^2.1.0: 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#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== - dependencies: - 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#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -1677,7 +1677,7 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: +minimatch@^5.0.1, minimatch@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -1778,38 +1778,38 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@10.5.2: - version "10.5.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.5.2.tgz#0a3481fb67c0a7fc144a909b2d6a9fec35ec5989" - integrity sha512-9btlN3JKCefPf+vKd/kcKz2SXxi12z6JswkGfaAF0saQvnsqLJk504ZmbxhSoENge08E9dsymozKgFMTl5PQsA== +mocha@10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.6.0.tgz#465fc66c52613088e10018989a3b98d5e11954b9" + integrity sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw== dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" chokidar "^3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "8.1.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.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== -ms@2.1.3, ms@^2.0.0: +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== @@ -2365,10 +2365,10 @@ semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: 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== +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" @@ -2542,18 +2542,11 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-json-comments@3.1.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" 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== - 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" @@ -2568,6 +2561,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +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== + 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" @@ -2809,10 +2809,10 @@ widest-line@^3.1.0: 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== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" @@ -2856,17 +2856,12 @@ yallist@^4.0.0: 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#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^20.2.2: +yargs-parser@^20.2.2, yargs-parser@^20.2.9: 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== -yargs-unparser@2.0.0: +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== @@ -2876,7 +2871,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: +yargs@16.2.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== From 95ae5957b05be86f0ba60af827a8a18c5a189ef3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 04:48:56 +0000 Subject: [PATCH 141/155] Update github/codeql-action action to v3.25.12 (#482) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5d0bf13e..f660cf28 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 + uses: github/codeql-action/upload-sarif@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 with: sarif_file: results.sarif From 9161b8b8a57f1067577373a92df7fe2120b5b9b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 17:13:14 +0000 Subject: [PATCH 142/155] Update dependency prettier to v3.3.3 (#483) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d1cee39d..96f929ca 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "assert": "^2.0.0", "magic-string": "0.30.10", "mocha": "10.6.0", - "prettier": "3.3.2", + "prettier": "3.3.3", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", "rollup-plugin-filesize": "9.1.2", diff --git a/yarn.lock b/yarn.lock index 12464304..b65fd353 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2073,10 +2073,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.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== +prettier@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== process-nextick-args@~2.0.0: version "2.0.1" From d7cf41143f6bfc89b191792bc5d597f74afdbc12 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Jul 2024 05:20:25 +0000 Subject: [PATCH 143/155] Update github/codeql-action action to v3.25.13 (#484) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f660cf28..c58c17bb 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 + uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 with: sarif_file: results.sarif From a2f4d2c7ed6db5c7a7a5f3a185d6de518959c018 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Jul 2024 02:00:57 +0000 Subject: [PATCH 144/155] Update dependency mocha to v10.7.0 (#485) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 96f929ca..59a7dc4b 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.10", - "mocha": "10.6.0", + "mocha": "10.7.0", "prettier": "3.3.3", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index b65fd353..6e036516 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1778,10 +1778,10 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@10.6.0: - version "10.6.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.6.0.tgz#465fc66c52613088e10018989a3b98d5e11954b9" - integrity sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw== +mocha@10.7.0: + version "10.7.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.0.tgz#9e5cbed8fa9b37537a25bd1f7fb4f6fc45458b9a" + integrity sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA== dependencies: ansi-colors "^4.1.3" browser-stdout "^1.3.1" From 38d9ffaa4d3a6c8fafd7b5d4e7fddeb86247d939 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jul 2024 03:34:45 +0000 Subject: [PATCH 145/155] Update dependency typescript to v5.5.4 (#486) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 59a7dc4b..7ff075f4 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "rollup-plugin-preserve-shebang": "1.0.1", "rollup-plugin-progress": "1.1.2", "rollup-plugin-typescript3": "3.0.5", - "typescript": "5.5.3", + "typescript": "5.5.4", "version-bump-prompt": "6.1.0", "yarn": "1.22.22" }, diff --git a/yarn.lock b/yarn.lock index 6e036516..590a0b30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2661,10 +2661,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.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" - integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== +typescript@5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== typical@^4.0.0: version "4.0.0" From cab11d404a68c0c7ad25342522e82f5bd2f706d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jul 2024 06:14:05 +0000 Subject: [PATCH 146/155] Update github/codeql-action action to v3.25.15 (#487) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c58c17bb..8034b12f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: sarif_file: results.sarif From ffed1229efaed1d5fd25fc861aa63833f96587ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jul 2024 09:27:28 +0000 Subject: [PATCH 147/155] Update ossf/scorecard-action action to v2.4.0 (#488) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8034b12f..65e98b63 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 + uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 with: results_file: results.sarif results_format: sarif From 8dd52217d503d61ad87bb2674da04ce9392afb78 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Aug 2024 03:33:42 +0000 Subject: [PATCH 148/155] Update actions/upload-artifact action to v4.3.5 (#489) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 65e98b63..9a96fb2f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 with: name: SARIF file path: results.sarif From cab8a565066f235fe23131183e4a69013275d731 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Aug 2024 07:17:04 +0000 Subject: [PATCH 149/155] Update dependency magic-string to v0.30.11 (#490) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 7ff075f4..ed686f36 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-replace": "5.0.7", "@types/node": "20.8.3", "assert": "^2.0.0", - "magic-string": "0.30.10", + "magic-string": "0.30.11", "mocha": "10.7.0", "prettier": "3.3.3", "rollup": "2.79.1", diff --git a/yarn.lock b/yarn.lock index 590a0b30..3a16d524 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,6 +63,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + "@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" @@ -1597,12 +1602,12 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@0.30.10: - version "0.30.10" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" - integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== +magic-string@0.30.11: + version "0.30.11" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" + integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" + "@jridgewell/sourcemap-codec" "^1.5.0" magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" From b6e85dd0d7b11a4e3f7ed00f8078309648420a82 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 05:49:15 +0000 Subject: [PATCH 150/155] Update actions/upload-artifact action to v4.3.6 (#491) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 9a96fb2f..af0d2a45 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -59,7 +59,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 + uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: SARIF file path: results.sarif From edb29b10189c798038c02437d56e510c7e1c0987 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 06:47:59 +0000 Subject: [PATCH 151/155] Update github/codeql-action action to v3.26.0 (#493) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index af0d2a45..ba9e9d68 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/upload-sarif@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 with: sarif_file: results.sarif From 247ae89e7bbbb690462f8c90d10309f99af3cb2f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 09:31:19 +0000 Subject: [PATCH 152/155] Update dependency mocha to v10.7.3 (#492) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ed686f36..aaf37c01 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@types/node": "20.8.3", "assert": "^2.0.0", "magic-string": "0.30.11", - "mocha": "10.7.0", + "mocha": "10.7.3", "prettier": "3.3.3", "rollup": "2.79.1", "rollup-plugin-closure-compiler-js": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index 3a16d524..a4d34ca5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1783,10 +1783,10 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@10.7.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.0.tgz#9e5cbed8fa9b37537a25bd1f7fb4f6fc45458b9a" - integrity sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA== +mocha@10.7.3: + version "10.7.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" + integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A== dependencies: ansi-colors "^4.1.3" browser-stdout "^1.3.1" From c760112a5a7f1960620b5f4cc6725161ab3c0407 Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Thu, 15 Aug 2024 04:00:17 +1000 Subject: [PATCH 153/155] Clean up dependencies --- .gitignore | 2 + bin/rexreplace.cli.js | 437 +++----- bin/rexreplace.cli.min.js | 437 +++----- package.json | 182 ++-- rollup.config.js | 30 +- yarn.lock | 1983 ++++++------------------------------- 6 files changed, 716 insertions(+), 2355 deletions(-) diff --git a/.gitignore b/.gitignore index a12d85ce..4396e4ad 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ myfile tmp/* package-lock.json .vscode +/dist +/bin \ No newline at end of file diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 15ef7be1..0b9191d3 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -2,46 +2,35 @@ (function () { 'use strict'; - var font = {}; - font.red = font.green = font.gray = function (str) { return str; }; + let font = {}; + font.red = font.green = font.gray = (str)=>str; // check for node version supporting chalk - if so overwrite `font` //const font = import('chalk'); - var config = null; - var outputConfig = function (_config) { + let config = null; + const outputConfig = function(_config) { config = _config; }; - var info = function (msg, data) { - if ( data === void 0 ) data = ''; - + const info = function(msg, data = '') { if (config.quiet || config.quietTotal) { return; } console.error(font.gray(msg), data); }; - var chat = function (msg, data) { - if ( data === void 0 ) data = ''; - + const chat = function(msg, data = '') { if (config.verbose) { info(msg, data); - } - else { + } else { debug(msg + ' ' + data); } }; - var die = function (msg, data, displayHelp) { - if ( msg === void 0 ) msg = ''; - if ( data === void 0 ) data = ''; - if ( displayHelp === void 0 ) displayHelp = false; - + const die = function(msg = '', data = '', displayHelp = false) { if (displayHelp && !config.quietTotal) { config.showHelp(); } msg && error(' ❌ ' + msg, data); kill(); }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - + const error = function(msg, data = '') { if (!config.quiet && !config.quietTotal) { console.error(font.red(msg), data); } @@ -60,19 +49,16 @@ debug(data); } } - function kill(error, msg) { - if ( error === void 0 ) error = 1; - if ( msg === void 0 ) msg = ''; - + function kill(error = 1, msg = '') { msg && console.error(+msg); process.exit(error); } - var fs = require('fs-extra'); - var path = require('path'); - var globs = require('globs'); - var now = new Date(); - var re = { + const fs = require('fs-extra'); + const path = require('path'); + const globs = require('globs'); + const now = new Date(); + const re = { euro: /€/g, section: /§/g, mctime: /[mc]time/, @@ -80,12 +66,12 @@ capturedGroupRef: /\$\d/, regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, + folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ }; - var version = '7.1.3'; - function engine(config) { - if ( config === void 0 ) config = { engine: 'V8' }; - + const version = '7.1.3'; + function engine(config = { + engine: 'V8' + }) { outputConfig(config); step('Displaying steps for:'); step(config); @@ -103,23 +89,20 @@ } chat(config.files.length + ' files found'); step(config); - config.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)); }) - // Do the replacement - .forEach(function (filepath) { return openFile(filepath, config); }); + config.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))// Do the replacement + .forEach((filepath)=>openFile(filepath, config)); } function openFile(file, config) { if (config.voidAsync) { chat('Open sync: ' + file); var data = fs.readFileSync(file, config.encoding); return doReplacement(file, config, data); - } - else { + } else { chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { + fs.readFile(file, config.encoding, function(err, data) { if (err) { return error(err); } @@ -135,7 +118,7 @@ _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); } // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); // The output of matched strings is done from the replacement, so no need to continue if (_config_rr.outputMatch) { return; @@ -154,7 +137,7 @@ debug('Write new content to: ' + _file_rr); // 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) { + return fs.writeFile(_file_rr, result, _config_rr.encoding, function(err) { if (err) { return error(err); } @@ -162,9 +145,9 @@ }); } //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; + const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + const backupFile = oriFile + '.' + salt + '.backup'; if (_config_rr.voidAsync) { try { fs.renameSync(oriFile, backupFile); @@ -172,30 +155,28 @@ if (!_config_rr.keepBackup) { fs.unlinkSync(backupFile); } - } - catch (e) { + } catch (e) { return error(e); } return info(_file_rr); } // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, function (err) { + fs.rename(oriFile, backupFile, (err)=>{ if (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, function (err) { + fs.writeFile(oriFile, result, _config_rr.encoding, (err)=>{ if (err) { return error(err); } if (!_config_rr.keepBackup) { - fs.unlink(backupFile, function (err) { + fs.unlink(backupFile, (err)=>{ if (err) { return error(err); } info(_file_rr); }); - } - else { + } else { info(_file_rr); } }); @@ -225,16 +206,14 @@ /*if (config.patternFile) { pattern = fs.readFileSync(pattern, 'utf8'); pattern = new Function('return '+pattern)(); - }*/ - step(pattern); + }*/ step(pattern); return pattern; } function getFinalReplacement(replacement, conf) { step('Get final replacement'); /*if(config.replacementFile){ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - replacement = replacePlaceholders(replacement, conf); + }*/ replacement = replacePlaceholders(replacement, conf); if (conf.replacementPipe) { step('Piping replacement'); conf.pipedDataUsed = true; @@ -248,17 +227,15 @@ if (parseInt(process.versions.node) < 6) { return die('outputMatch is only supported in node 6+'); } - return function () { - var arguments$1 = arguments; - + 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$1[i]); + for(var i = 1; i < arguments.length - 2; i++){ + process.stdout.write(arguments[i]); } process.stdout.write('\n'); return ''; @@ -266,9 +243,7 @@ } // If captured groups then run dynamicly //console.log(process); - if (conf.replacementJs && - re.capturedGroupRef.test(conf.replacement) && - parseInt(process.versions.node) < 6) { + 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); @@ -282,42 +257,37 @@ return lines.map(function (line) { return line.trim(); }).join(' '); - }*/ - function getFinalRegex(pattern, config) { + }*/ function getFinalRegex(pattern, config) { step('Get final regex with engine: ' + config.engine); - var regex; - var flags = getFlags(config); - switch (config.engine) { + let regex; + let flags = getFlags(config); + switch(config.engine){ case 'V8': try { regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.debug) - { throw new Error(e); } + } catch (e) { + if (config.debug) throw new Error(e); die(e.message); } break; case 'RE2': try { - var RE2 = require('re2'); + const RE2 = require('re2'); regex = new RE2(pattern, flags); - } - catch (e$1) { - if (config.debug) - { throw new Error(e$1); } - die(e$1.message); + } catch (e) { + if (config.debug) throw new Error(e); + die(e.message); } break; default: - die(("Engine " + (config.engine) + " not supported")); + die(`Engine ${config.engine} not supported`); } step(regex); return regex; } function getFlags(config) { step('Get flags'); - var flags = ''; + let flags = ''; if (!config.voidGlobal) { flags += 'g'; } @@ -340,34 +310,27 @@ 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]); + 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) { - 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'; + 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'; // 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 + 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.dataIsPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); - var pathInfo = path.parse(_file); + const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; _dirpath_rel = path.relative(_cwd, _dirpath); _dirname = (_file.match(re.folderName) || ' _')[1]; @@ -375,15 +338,15 @@ _name = pathInfo.name; _ext = pathInfo.ext; if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - var fileStats = fs.statSync(_file); + 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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); } } if (needsByteOrSize && -1 === _bytes) { @@ -395,26 +358,20 @@ 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); } // Capture groups used, so need to run once per match - return function () { - var arguments$1 = arguments; - + return function() { 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; + 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$1[i]) + '; '; + 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); }; } - 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 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 ( str === void 0 ) str = ''; - + function replacePlaceholders(str = '', conf) { if (!conf.voidEuro) { str = str.replace(re.euro, '$'); } @@ -424,147 +381,43 @@ return str; } function getFilePaths(conf) { - var includeGlob = conf.includeGlob; - var excludeGlob = conf.excludeGlob; - var excludeRe = conf.excludeRe; - var filesToInclude = globs.sync(includeGlob); + let { includeGlob, excludeGlob, excludeRe } = conf; + let filesToInclude = globs.sync(includeGlob); if (excludeRe.length) { - excludeRe - .map(function (el) { return getFinalPattern(el, conf); }) - .forEach(function (re) { - filesToInclude = filesToInclude.filter(function (el) { return !el.match(re); }); + excludeRe.map((el)=>getFinalPattern(el, conf)).forEach((re)=>{ + filesToInclude = filesToInclude.filter((el)=>!el.match(re)); }); } if (excludeGlob.length) { - var filesToExclude = globs.sync(excludeGlob); - filesToInclude = filesToInclude.filter(function (el) { return !filesToExclude.includes(el); }); + const filesToExclude = globs.sync(excludeGlob); + filesToInclude = filesToInclude.filter((el)=>!filesToExclude.includes(el)); } return filesToInclude; } - var assign; - var pattern, replacement; + // CLI interface for rexreplace + 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 - var needHelp = 0; + let 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])) { + } else if (/-h|--?help$/i.test(process.argv[process.argv.length - 1])) { needHelp = 1; - } - else { + } else { needHelp = 2; } + } else { + [pattern, replacement] = process.argv.splice(2, 2); } - else { - (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); - } - var yargs = require('yargs') - .strict() - .usage('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' + - '> 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 glob 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('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('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('€') - .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. " + - '') - .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.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep a backup file of the original content.') - .alias('b', 'keep-backup') - .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + - '') - .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') - /* + const yargs = require('yargs').strict().usage('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' + '> 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 glob 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('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('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('€').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. ` + '').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.').alias('B', 'void-backup').boolean('b').describe('b', 'Keep a backup file of the original content.').alias('b', 'keep-backup').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 will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + '').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')/* -T (Expect no match in any file and return exit 1 if found) @@ -624,75 +477,103 @@ .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 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") - .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; - + */ .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 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). + `).help('h').describe('h', 'Display help.').alias('h', 'help').epilog(`Inspiration: .oO(What should 'sed' have been by now?)`); + function backOut(exitcode = 1) { yargs.showHelp(); //io(help); process.exitCode = exitcode; process.exit(); } - function unescapeString(str) { - if ( str === void 0 ) str = ''; - - return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); + function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); } - (function () { + (function() { if (0 < needHelp) { return backOut(needHelp - 1); } // All options into one big config object for the rexreplace core - var config = {}; + let config = {}; // Use only camelCase full lenght version of settings so we make sure the core can be documented propperly - Object.keys(yargs.argv).forEach(function (key) { + Object.keys(yargs.argv).forEach((key)=>{ if (1 < key.length && key.indexOf('-') < 0) { config[key] = yargs.argv[key]; } }); - var pipeInUse = false; - var pipeData = ''; + let pipeInUse = false; + let 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); + config.excludeGlob = [ + ...yargs.argv.excludeGlob + ].filter(Boolean); + config.excludeRe = [ + ...yargs.argv.excludeRe + ].filter(Boolean); if (config.replacementJs) { config.replacement = replacement; - } - else { + } else { config.replacement = unescapeString(replacement); } /*if(Boolean(process.stdout.isTTY)){ config.output = true; - }*/ - if (Boolean(process.stdin.isTTY)) { + }*/ if (Boolean(process.stdin.isTTY)) { if (config.replacementPipe) { return backOut(); } engine(config); - } - else { + } else { process.stdin.setEncoding(config.encoding); - process.stdin.on('readable', function () { - var chunk = process.stdin.read(); + process.stdin.on('readable', ()=>{ + let chunk = process.stdin.read(); if (null !== chunk) { pipeInUse = true; pipeData += chunk; - while ((chunk = process.stdin.read())) { + while(chunk = process.stdin.read()){ pipeData += chunk; } } }); - process.stdin.on('end', function () { + process.stdin.on('end', ()=>{ if (pipeInUse) { if (yargs.argv.trimPipe) { pipeData = pipeData.trim(); diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js index 15ef7be1..0b9191d3 100755 --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -2,46 +2,35 @@ (function () { 'use strict'; - var font = {}; - font.red = font.green = font.gray = function (str) { return str; }; + let font = {}; + font.red = font.green = font.gray = (str)=>str; // check for node version supporting chalk - if so overwrite `font` //const font = import('chalk'); - var config = null; - var outputConfig = function (_config) { + let config = null; + const outputConfig = function(_config) { config = _config; }; - var info = function (msg, data) { - if ( data === void 0 ) data = ''; - + const info = function(msg, data = '') { if (config.quiet || config.quietTotal) { return; } console.error(font.gray(msg), data); }; - var chat = function (msg, data) { - if ( data === void 0 ) data = ''; - + const chat = function(msg, data = '') { if (config.verbose) { info(msg, data); - } - else { + } else { debug(msg + ' ' + data); } }; - var die = function (msg, data, displayHelp) { - if ( msg === void 0 ) msg = ''; - if ( data === void 0 ) data = ''; - if ( displayHelp === void 0 ) displayHelp = false; - + const die = function(msg = '', data = '', displayHelp = false) { if (displayHelp && !config.quietTotal) { config.showHelp(); } msg && error(' ❌ ' + msg, data); kill(); }; - var error = function (msg, data) { - if ( data === void 0 ) data = ''; - + const error = function(msg, data = '') { if (!config.quiet && !config.quietTotal) { console.error(font.red(msg), data); } @@ -60,19 +49,16 @@ debug(data); } } - function kill(error, msg) { - if ( error === void 0 ) error = 1; - if ( msg === void 0 ) msg = ''; - + function kill(error = 1, msg = '') { msg && console.error(+msg); process.exit(error); } - var fs = require('fs-extra'); - var path = require('path'); - var globs = require('globs'); - var now = new Date(); - var re = { + const fs = require('fs-extra'); + const path = require('path'); + const globs = require('globs'); + const now = new Date(); + const re = { euro: /€/g, section: /§/g, mctime: /[mc]time/, @@ -80,12 +66,12 @@ capturedGroupRef: /\$\d/, regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/, + folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ }; - var version = '7.1.3'; - function engine(config) { - if ( config === void 0 ) config = { engine: 'V8' }; - + const version = '7.1.3'; + function engine(config = { + engine: 'V8' + }) { outputConfig(config); step('Displaying steps for:'); step(config); @@ -103,23 +89,20 @@ } chat(config.files.length + ' files found'); step(config); - config.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)); }) - // Do the replacement - .forEach(function (filepath) { return openFile(filepath, config); }); + config.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))// Do the replacement + .forEach((filepath)=>openFile(filepath, config)); } function openFile(file, config) { if (config.voidAsync) { chat('Open sync: ' + file); var data = fs.readFileSync(file, config.encoding); return doReplacement(file, config, data); - } - else { + } else { chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { + fs.readFile(file, config.encoding, function(err, data) { if (err) { return error(err); } @@ -135,7 +118,7 @@ _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); } // Main regexp of the whole thing - var result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); // The output of matched strings is done from the replacement, so no need to continue if (_config_rr.outputMatch) { return; @@ -154,7 +137,7 @@ debug('Write new content to: ' + _file_rr); // 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) { + return fs.writeFile(_file_rr, result, _config_rr.encoding, function(err) { if (err) { return error(err); } @@ -162,9 +145,9 @@ }); } //Make sure data is always on disk - var oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - var salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - var backupFile = oriFile + '.' + salt + '.backup'; + const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); + const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); + const backupFile = oriFile + '.' + salt + '.backup'; if (_config_rr.voidAsync) { try { fs.renameSync(oriFile, backupFile); @@ -172,30 +155,28 @@ if (!_config_rr.keepBackup) { fs.unlinkSync(backupFile); } - } - catch (e) { + } catch (e) { return error(e); } return info(_file_rr); } // Let me know when fs gets promise'fied - fs.rename(oriFile, backupFile, function (err) { + fs.rename(oriFile, backupFile, (err)=>{ if (err) { return error(err); } - fs.writeFile(oriFile, result, _config_rr.encoding, function (err) { + fs.writeFile(oriFile, result, _config_rr.encoding, (err)=>{ if (err) { return error(err); } if (!_config_rr.keepBackup) { - fs.unlink(backupFile, function (err) { + fs.unlink(backupFile, (err)=>{ if (err) { return error(err); } info(_file_rr); }); - } - else { + } else { info(_file_rr); } }); @@ -225,16 +206,14 @@ /*if (config.patternFile) { pattern = fs.readFileSync(pattern, 'utf8'); pattern = new Function('return '+pattern)(); - }*/ - step(pattern); + }*/ step(pattern); return pattern; } function getFinalReplacement(replacement, conf) { step('Get final replacement'); /*if(config.replacementFile){ return oneLinerFromFile(fs.readFileSync(replacement,'utf8')); - }*/ - replacement = replacePlaceholders(replacement, conf); + }*/ replacement = replacePlaceholders(replacement, conf); if (conf.replacementPipe) { step('Piping replacement'); conf.pipedDataUsed = true; @@ -248,17 +227,15 @@ if (parseInt(process.versions.node) < 6) { return die('outputMatch is only supported in node 6+'); } - return function () { - var arguments$1 = arguments; - + 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$1[i]); + for(var i = 1; i < arguments.length - 2; i++){ + process.stdout.write(arguments[i]); } process.stdout.write('\n'); return ''; @@ -266,9 +243,7 @@ } // If captured groups then run dynamicly //console.log(process); - if (conf.replacementJs && - re.capturedGroupRef.test(conf.replacement) && - parseInt(process.versions.node) < 6) { + 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); @@ -282,42 +257,37 @@ return lines.map(function (line) { return line.trim(); }).join(' '); - }*/ - function getFinalRegex(pattern, config) { + }*/ function getFinalRegex(pattern, config) { step('Get final regex with engine: ' + config.engine); - var regex; - var flags = getFlags(config); - switch (config.engine) { + let regex; + let flags = getFlags(config); + switch(config.engine){ case 'V8': try { regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.debug) - { throw new Error(e); } + } catch (e) { + if (config.debug) throw new Error(e); die(e.message); } break; case 'RE2': try { - var RE2 = require('re2'); + const RE2 = require('re2'); regex = new RE2(pattern, flags); - } - catch (e$1) { - if (config.debug) - { throw new Error(e$1); } - die(e$1.message); + } catch (e) { + if (config.debug) throw new Error(e); + die(e.message); } break; default: - die(("Engine " + (config.engine) + " not supported")); + die(`Engine ${config.engine} not supported`); } step(regex); return regex; } function getFlags(config) { step('Get flags'); - var flags = ''; + let flags = ''; if (!config.voidGlobal) { flags += 'g'; } @@ -340,34 +310,27 @@ 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]); + 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) { - 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'; + 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'; // 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 + 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.dataIsPiped) { _file = path.normalize(path.join(_cwd, _file_rr)); _file_rel = path.relative(_cwd, _file); - var pathInfo = path.parse(_file); + const pathInfo = path.parse(_file); _dirpath = pathInfo.dir; _dirpath_rel = path.relative(_cwd, _dirpath); _dirname = (_file.match(re.folderName) || ' _')[1]; @@ -375,15 +338,15 @@ _name = pathInfo.name; _ext = pathInfo.ext; if (betterToReadfromFile || re.mctime.test(_config_rr.replacement)) { - var fileStats = fs.statSync(_file); + 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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); + //console.log('filesize: ', fileStats.size); + //console.log('dataSize: ', _bytes); } } if (needsByteOrSize && -1 === _bytes) { @@ -395,26 +358,20 @@ 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); } // Capture groups used, so need to run once per match - return function () { - var arguments$1 = arguments; - + return function() { 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; + 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$1[i]) + '; '; + 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); }; } - 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 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 ( str === void 0 ) str = ''; - + function replacePlaceholders(str = '', conf) { if (!conf.voidEuro) { str = str.replace(re.euro, '$'); } @@ -424,147 +381,43 @@ return str; } function getFilePaths(conf) { - var includeGlob = conf.includeGlob; - var excludeGlob = conf.excludeGlob; - var excludeRe = conf.excludeRe; - var filesToInclude = globs.sync(includeGlob); + let { includeGlob, excludeGlob, excludeRe } = conf; + let filesToInclude = globs.sync(includeGlob); if (excludeRe.length) { - excludeRe - .map(function (el) { return getFinalPattern(el, conf); }) - .forEach(function (re) { - filesToInclude = filesToInclude.filter(function (el) { return !el.match(re); }); + excludeRe.map((el)=>getFinalPattern(el, conf)).forEach((re)=>{ + filesToInclude = filesToInclude.filter((el)=>!el.match(re)); }); } if (excludeGlob.length) { - var filesToExclude = globs.sync(excludeGlob); - filesToInclude = filesToInclude.filter(function (el) { return !filesToExclude.includes(el); }); + const filesToExclude = globs.sync(excludeGlob); + filesToInclude = filesToInclude.filter((el)=>!filesToExclude.includes(el)); } return filesToInclude; } - var assign; - var pattern, replacement; + // CLI interface for rexreplace + 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 - var needHelp = 0; + let 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])) { + } else if (/-h|--?help$/i.test(process.argv[process.argv.length - 1])) { needHelp = 1; - } - else { + } else { needHelp = 2; } + } else { + [pattern, replacement] = process.argv.splice(2, 2); } - else { - (assign = process.argv.splice(2, 2), pattern = assign[0], replacement = assign[1]); - } - var yargs = require('yargs') - .strict() - .usage('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' + - '> 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 glob 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('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('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('€') - .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. " + - '') - .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.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep a backup file of the original content.') - .alias('b', 'keep-backup') - .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 will be piped in. You still need to provide a dummy value (like `_`) as replacement parameter." + - '') - .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') - /* + const yargs = require('yargs').strict().usage('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' + '> 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 glob 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('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('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('€').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. ` + '').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.').alias('B', 'void-backup').boolean('b').describe('b', 'Keep a backup file of the original content.').alias('b', 'keep-backup').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 will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + '').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')/* -T (Expect no match in any file and return exit 1 if found) @@ -624,75 +477,103 @@ .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 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") - .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; - + */ .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 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). + `).help('h').describe('h', 'Display help.').alias('h', 'help').epilog(`Inspiration: .oO(What should 'sed' have been by now?)`); + function backOut(exitcode = 1) { yargs.showHelp(); //io(help); process.exitCode = exitcode; process.exit(); } - function unescapeString(str) { - if ( str === void 0 ) str = ''; - - return new Function(("return '" + (str.replace(/'/g, "\\'")) + "'"))(); + function unescapeString(str = '') { + return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); } - (function () { + (function() { if (0 < needHelp) { return backOut(needHelp - 1); } // All options into one big config object for the rexreplace core - var config = {}; + let config = {}; // Use only camelCase full lenght version of settings so we make sure the core can be documented propperly - Object.keys(yargs.argv).forEach(function (key) { + Object.keys(yargs.argv).forEach((key)=>{ if (1 < key.length && key.indexOf('-') < 0) { config[key] = yargs.argv[key]; } }); - var pipeInUse = false; - var pipeData = ''; + let pipeInUse = false; + let 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); + config.excludeGlob = [ + ...yargs.argv.excludeGlob + ].filter(Boolean); + config.excludeRe = [ + ...yargs.argv.excludeRe + ].filter(Boolean); if (config.replacementJs) { config.replacement = replacement; - } - else { + } else { config.replacement = unescapeString(replacement); } /*if(Boolean(process.stdout.isTTY)){ config.output = true; - }*/ - if (Boolean(process.stdin.isTTY)) { + }*/ if (Boolean(process.stdin.isTTY)) { if (config.replacementPipe) { return backOut(); } engine(config); - } - else { + } else { process.stdin.setEncoding(config.encoding); - process.stdin.on('readable', function () { - var chunk = process.stdin.read(); + process.stdin.on('readable', ()=>{ + let chunk = process.stdin.read(); if (null !== chunk) { pipeInUse = true; pipeData += chunk; - while ((chunk = process.stdin.read())) { + while(chunk = process.stdin.read()){ pipeData += chunk; } } }); - process.stdin.on('end', function () { + process.stdin.on('end', ()=>{ if (pipeInUse) { if (yargs.argv.trimPipe) { pipeData = pipeData.trim(); diff --git a/package.json b/package.json index aaf37c01..eac63a74 100644 --- a/package.json +++ b/package.json @@ -1,93 +1,91 @@ { - "name": "rexreplace", - "version": "7.1.3", - "description": "Smooth search & replace across files from the 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.3", - "@rollup/plugin-commonjs": "26.0.1", - "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.7", - "@types/node": "20.8.3", - "assert": "^2.0.0", - "magic-string": "0.30.11", - "mocha": "10.7.3", - "prettier": "3.3.3", - "rollup": "2.79.1", - "rollup-plugin-closure-compiler-js": "^1.0.6", - "rollup-plugin-filesize": "9.1.2", - "rollup-plugin-hashbang": "3.0.0", - "rollup-plugin-preserve-shebang": "1.0.1", - "rollup-plugin-progress": "1.1.2", - "rollup-plugin-typescript3": "3.0.5", - "typescript": "5.5.4", - "version-bump-prompt": "6.1.0", - "yarn": "1.22.22" - }, - "resolutions": { - "ansi-regex": "5.0.1", - "tough-cookie": "4.1.4" - }, - "directories": { - "test": "test" - }, - "dependencies": { - "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.4", + "description": "Smooth search & replace across files from the 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-commonjs": "26.0.1", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-replace": "5.0.7", + "@rollup/plugin-swc": "^0.3.1", + "@swc/core": "^1.7.11", + "@types/node": "20.8.3", + "assert": "^2.0.0", + "mocha": "10.7.3", + "prettier": "3.3.3", + "rollup": "2.79.1", + "rollup-plugin-closure-compiler-js": "^1.0.6", + "rollup-plugin-progress": "1.1.2", + "rollup-plugin-typescript3": "3.0.5", + "typescript": "5.5.4", + "version-bump-prompt": "6.1.0", + "yarn": "1.22.22" + }, + "resolutions": { + "ansi-regex": "6", + "glob": "9", + "tough-cookie": "4.1.4" + }, + "directories": { + "test": "test" + }, + "dependencies": { + "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" +} \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index c17d1e89..dba6fc8e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -6,15 +6,12 @@ import typescript from 'rollup-plugin-typescript3'; import closure from 'rollup-plugin-closure-compiler-js'; */ -// import filesize from 'rollup-plugin-filesize'; import replace from '@rollup/plugin-replace'; -import hashbang from 'rollup-plugin-hashbang' -import buble from '@rollup/plugin-buble'; +import swc from '@rollup/plugin-swc'; import resolve from '@rollup/plugin-node-resolve'; -// https://github.com/ritz078/rollup-plugin-filesize // https://github.com/jkuri/rollup-plugin-progress // https://github.com/camelaissani/rollup-plugin-closure-compiler-js // https://github.com/rollup/rollup-plugin-buble (for browser) @@ -27,30 +24,29 @@ export default [ input: 'bin/ES6/cli.js', output: { name: 'rexreplace', - //file: 'build/ES5/rexreplace.bundle.js', file: 'bin/rexreplace.cli.js', - format: 'iife' + format: 'iife', + banner: '#!/usr/bin/env node', }, plugins: [ - hashbang(), - //typescript(), - resolve(), - buble(), + hashbang(), + resolve(), + swc({ jsc: { target: 'es5', }, }), 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/yarn.lock b/yarn.lock index a4d34ca5..7670952d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,80 +2,11 @@ # yarn lockfile v1 -"@babel/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== - 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== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@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.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== - -"@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.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== - -"@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== - "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@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== - 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" @@ -121,80 +52,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" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@rollup/plugin-buble@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-1.0.3.tgz#6ce275f062a3bac583472cf14f54aa5f0957dccf" - integrity sha512-QYD9BKkJoof0FdCFeSYYhF6/Y8e0Mnf+098xGgmWOFJ4UPHlWujjqOYeVwEm2hJPOmlR5k7HPUdAjqtOWhN64Q== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/buble" "^0.19.2" - buble "^0.20.0" - "@rollup/plugin-commonjs@26.0.1": version "26.0.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz#16d4d6e54fa63021249a292b50f27c0b0f1a30d8" @@ -227,31 +84,108 @@ "@rollup/pluginutils" "^5.0.1" magic-string "^0.30.3" +"@rollup/plugin-swc@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-swc/-/plugin-swc-0.3.1.tgz#aa22c5d4e5ed29d06ed5c3e4daded0037ad7044f" + integrity sha512-oqHt6W2J3CoIrdWpbLiRXdRkepEv+qwCgHMnSmh7waPFxaEeO3tocA1xy2p2qoJmk1zygDoxtPeP95z8bsJ+fA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + smob "^1.4.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== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" picomatch "^2.3.1" -"@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== - -"@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" +"@swc/core-darwin-arm64@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.11.tgz#53cd615d55330329ed5ac843b8f6aedb5de7c82f" + integrity sha512-HRQv4qIeMBPThZ6Y/4yYW52rGsS6yrpusvuxLGyoFo45Y0y12/V2yXkOIA/0HIQyrqoUAxn1k4zQXpPaPNCmnw== + +"@swc/core-darwin-x64@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.11.tgz#c0e3f248d075160b86f12b21b9dafee48196f52e" + integrity sha512-vtMQj0F3oYwDu5yhO7SKDRg1XekRSi6/TbzHAbBXv+dBhlGGvcZZynT1H90EVFTv+7w7Sh+lOFvRv5Z4ZTcxow== + +"@swc/core-linux-arm-gnueabihf@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.11.tgz#677f87c806261243afe4903fde3dfac11e9f159b" + integrity sha512-mHtzWKxhtyreI4CSxs+3+ENv8t/Qo35WFoYG66qHEgJz/Z2Lh6jv1E+MYgHdYwnpQHgHbdvAco7HsBu/Dt6xXw== + +"@swc/core-linux-arm64-gnu@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.11.tgz#ad38860e7ebed7ece215ea02f1a134798275ce2c" + integrity sha512-FRwe/x0GfXSQjGP2lIk+NO0pUFS/lI/RorCLBPiK808EVE9JTbh9DKCc/4Bbb4jgScAjNkrFCUVObQYl3YKmpA== + +"@swc/core-linux-arm64-musl@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.11.tgz#ffe7cf7e23b6c4022c66b274cc2ff068c0a7cede" + integrity sha512-GY/rs0+GUq14Gbnza90KOrQd/9yHd5qQMii5jcSWcUCT5A8QTa8kiicsM2NxZeTJ69xlKmT7sLod5l99lki/2A== + +"@swc/core-linux-x64-gnu@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.11.tgz#697fb7dcb453509d8a08da781e7ec337b112f54b" + integrity sha512-QDkGRwSPmp2RBOlSs503IUXlWYlny8DyznTT0QuK0ML2RpDFlXWU94K/EZhS0RBEUkMY/W51OacM8P8aS/dkCg== + +"@swc/core-linux-x64-musl@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.11.tgz#70deeedd81d77deb062c71d68cab79b36219f79f" + integrity sha512-SBEfKrXy6zQ6ksnyxw1FaCftrIH4fLfA81xNnKb7x/6iblv7Ko6H0aK3P5C86jyqF/82+ONl9C7ImGkUFQADig== + +"@swc/core-win32-arm64-msvc@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.11.tgz#f232c2d5ea93a0aa6650e5a8c49f5b23db6a218b" + integrity sha512-a2Y4xxEsLLYHJN7sMnw9+YQJDi3M1BxEr9hklfopPuGGnYLFNnx5CypH1l9ReijEfWjIAHNi7pq3m023lzW1Hg== + +"@swc/core-win32-ia32-msvc@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.11.tgz#3fa43c3bf4b1593fa9abe017b55080651e7fff06" + integrity sha512-ZbZFMwZO+j8ulhegJ7EhJ/QVZPoQ5qc30ylJQSxizizTJaen71Q7/13lXWc6ksuCKvg6dUKrp/TPgoxOOtSrFA== + +"@swc/core-win32-x64-msvc@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.11.tgz#433bac0a04a0a49c9d9c8f1fe45f5555c88deca7" + integrity sha512-IUohZedSJyDu/ReEBG/mqX6uG29uA7zZ9z6dIAF+p6eFxjXmh9MuHryyM+H8ebUyoq/Ad3rL+rUCksnuYNnI0w== + +"@swc/core@^1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.11.tgz#167f46ee64f7fdd0eb58e62d0a5643fa65b86559" + integrity sha512-AB+qc45UrJrDfbhPKcUXk+9z/NmFfYYwJT6G7/iur0fCse9kXjx45gi40+u/O2zgarG/30/zV6E3ps8fUvjh7g== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.12" + optionalDependencies: + "@swc/core-darwin-arm64" "1.7.11" + "@swc/core-darwin-x64" "1.7.11" + "@swc/core-linux-arm-gnueabihf" "1.7.11" + "@swc/core-linux-arm64-gnu" "1.7.11" + "@swc/core-linux-arm64-musl" "1.7.11" + "@swc/core-linux-x64-gnu" "1.7.11" + "@swc/core-linux-x64-musl" "1.7.11" + "@swc/core-win32-arm64-msvc" "1.7.11" + "@swc/core-win32-ia32-msvc" "1.7.11" + "@swc/core-win32-x64-msvc" "1.7.11" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f" + integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA== + dependencies: + "@swc/counter" "^0.1.3" "@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== + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/node@20.8.3": version "20.8.3" @@ -263,72 +197,6 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -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@^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: - 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.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== - dependencies: - debug "^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== - 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.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -341,10 +209,10 @@ 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@^6.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-regex@6, ansi-regex@^5.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^3.2.1: version "3.2.1" @@ -360,11 +228,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -373,19 +236,6 @@ 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== - -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" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -401,18 +251,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" @@ -424,64 +262,22 @@ 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== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" 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" - binary-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== - -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" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== brace-expansion@^2.0.1: version "2.0.1" @@ -490,100 +286,44 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~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== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 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" + fill-range "^7.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== - -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" - -call-bind@^1.0.0, call-bind@^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== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" call-me-maybe@^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== -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" @@ -621,21 +361,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" @@ -657,11 +382,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" 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" - 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" @@ -686,18 +406,6 @@ color-name@~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" @@ -708,37 +416,12 @@ 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== - 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== - -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== - -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +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== @@ -747,24 +430,10 @@ cross-spawn@^7.0.0, 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.1.0, debug@^4.3.3: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== dependencies: ms "2.1.2" @@ -778,29 +447,24 @@ deepmerge@^4.2.2: 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, define-properties@^1.1.4: - 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== +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.1: + 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#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== - -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== - detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" @@ -823,60 +487,27 @@ 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== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -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== -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -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== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 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" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + get-intrinsic "^1.2.4" -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== +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@^1.0.5: version "1.0.5" @@ -893,11 +524,6 @@ estree-walker@^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== -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" @@ -907,25 +533,10 @@ 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.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -933,15 +544,10 @@ fast-glob@^3.2.9: 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" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -952,15 +558,10 @@ figures@^3.0.0: 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== - -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== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -991,28 +592,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -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.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" @@ -1022,63 +601,36 @@ 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" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+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== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "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" +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 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== -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== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + es-errors "^1.3.0" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" - -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" + hasown "^2.0.0" glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -1087,51 +639,15 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" - integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - path-scurry "^1.11.1" - -glob@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.2.tgz#bed6b95dade5c1f80b4434daced233aee76160e5" - integrity sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -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/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@9, glob@^10.4.1, glob@^10.4.2, glob@^7.1.1, glob@^8.1.0: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== 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" - -glob@^8.1.0: - 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" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" globby@^11.0.1: version "11.1.0" @@ -1164,31 +680,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -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" @@ -1199,92 +695,42 @@ has-flag@^4.0.0: 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#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.1.1" + es-define-property "^1.0.0" 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== + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== -has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^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== -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== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 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-symbols "^1.0.3" -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== +hasown@^2.0.0, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" 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.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== - -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" - -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" - -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" @@ -1292,49 +738,12 @@ 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" - -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" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -inherits@2, inherits@^2.0.3, 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== @@ -1358,11 +767,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" @@ -1390,25 +794,18 @@ is-callable@^1.1.3: 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#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.13.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== dependencies: - has "^1.0.3" + hasown "^2.0.2" 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" @@ -1428,11 +825,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" @@ -1464,46 +856,22 @@ is-reference@1.2.1: "@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== + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== 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== + which-typed-array "^1.1.14" 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== - -jackspeak@^3.1.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" - integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -1511,36 +879,6 @@ 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-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" @@ -1550,21 +888,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" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -1591,198 +914,59 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: is-unicode-supported "^0.1.0" lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== -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== - dependencies: - yallist "^4.0.0" - -magic-string@0.30.11: +magic-string@^0.30.3: version "0.30.11" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" -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.30.3: - version "0.30.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" - integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -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" - 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== micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" -mime-db@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== - -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" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -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== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1, minimatch@^5.1.6: +minimatch@^5.1.6: 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" -minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== 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== +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== - -minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -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.7.3: version "10.7.3" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" @@ -1814,7 +998,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.0.0, ms@^2.1.3: +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== @@ -1824,131 +1008,18 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -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" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -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" - -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" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -1956,22 +1027,15 @@ object-keys@^1.1.1: 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== + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" + call-bind "^1.0.5" + define-properties "^1.2.1" 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#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#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -1998,53 +1062,11 @@ 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" - -package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== - -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" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^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== - path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -2055,7 +1077,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: +path-scurry@^1.6.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -2068,53 +1090,30 @@ path-type@^4.0.0: 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#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" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + prettier@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== -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" - psl@^1.1.33: version "1.9.0" 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#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== +punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== querystringify@^2.1.1: version "2.2.0" @@ -2133,27 +1132,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" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -2161,73 +1139,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.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== - -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" @@ -2239,11 +1150,11 @@ 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-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 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" @@ -2255,23 +1166,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" @@ -2279,34 +1178,6 @@ rollup-plugin-closure-compiler-js@^1.0.6: 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@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-hashbang/-/rollup-plugin-hashbang-3.0.0.tgz#6173df959592ba73d2e8ce01816a37c511a5e005" - integrity sha512-nNC2NeNcvkklPhPCUF8Yb+2a19xI0dSBBJJ2x814+Al2BqIEWOyaGIgEjPVSjjgxhoabkJC5vbO4AeI3cxx3wg== - dependencies: - magic-string "^0.25.7" - -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" @@ -2348,27 +1219,20 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: +safe-buffer@^5.1.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== -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== - dependencies: - lru-cache "^6.0.0" +semver@^7.3.2: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== serialize-javascript@^6.0.2: version "6.0.2" @@ -2377,10 +1241,17 @@ serialize-javascript@^6.0.2: 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== +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" shebang-command@^2.0.0: version "2.0.0" @@ -2394,107 +1265,27 @@ shebang-regex@^3.0.0: 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: +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== -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - slash@^3.0.0: version "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" - -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== - -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" +smob@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.5.0.tgz#85d79a1403abf128d24d3ebc1cdc5e1a9548d3ab" + integrity sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig== 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-cjs@npm: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== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -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.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== @@ -2503,36 +1294,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.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== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm: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== - dependencies: - ansi-regex "^5.0.1" - -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" @@ -2540,13 +1301,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.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" @@ -2578,28 +1332,6 @@ supports-preserve-symlinks-flag@^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.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== - 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.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== - 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" @@ -2619,7 +1351,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tough-cookie@4.1.4, tough-cookie@~2.5.0: +tough-cookie@4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== @@ -2639,27 +1371,10 @@ tslib@^2.6.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== -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== + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== type-fest@^0.21.3: version "0.21.3" @@ -2676,43 +1391,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" @@ -2723,13 +1401,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -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" @@ -2738,11 +1409,6 @@ url-parse@^1.5.3: 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== - util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" @@ -2754,27 +1420,6 @@ 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== - -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" @@ -2782,52 +1427,29 @@ version-bump-prompt@6.1.0: dependencies: "@jsdevtools/version-bump-prompt" "6.1.0" -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== +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.2" -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.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm: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== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -2837,30 +1459,11 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -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== - 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== -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== - yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" From 4a8bc0342c0174ce0441add399737955ee5bfe9f Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Thu, 15 Aug 2024 04:03:07 +1000 Subject: [PATCH 154/155] Clean up dependencies --- bin/ES6/cli.js | 1 - bin/rexreplace.cli.js | 2 +- bin/rexreplace.cli.min.js | 2 +- rollup.config.js | 1 - src/cli.ts | 2 -- 5 files changed, 2 insertions(+), 6 deletions(-) mode change 100755 => 100644 bin/rexreplace.cli.min.js diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js index fe15f0eb..e5521863 100644 --- a/bin/ES6/cli.js +++ b/bin/ES6/cli.js @@ -1,4 +1,3 @@ -#!/usr/bin/env node // CLI interface for rexreplace import * as rexreplace from './engine'; let pattern, replacement; diff --git a/bin/rexreplace.cli.js b/bin/rexreplace.cli.js index 0b9191d3..baa2cc7f 100755 --- a/bin/rexreplace.cli.js +++ b/bin/rexreplace.cli.js @@ -68,7 +68,7 @@ byteOrSize: /bytes|size/, folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ }; - const version = '7.1.3'; + const version = '7.1.4'; function engine(config = { engine: 'V8' }) { diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js old mode 100755 new mode 100644 index 0b9191d3..baa2cc7f --- a/bin/rexreplace.cli.min.js +++ b/bin/rexreplace.cli.min.js @@ -68,7 +68,7 @@ byteOrSize: /bytes|size/, folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ }; - const version = '7.1.3'; + const version = '7.1.4'; function engine(config = { engine: 'V8' }) { diff --git a/rollup.config.js b/rollup.config.js index dba6fc8e..46d2955d 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -29,7 +29,6 @@ export default [ banner: '#!/usr/bin/env node', }, plugins: [ - hashbang(), resolve(), swc({ jsc: { target: 'es5', }, }), replace({ diff --git a/src/cli.ts b/src/cli.ts index 4eb3f2f7..10e66506 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,5 +1,3 @@ -#!/usr/bin/env node - // CLI interface for rexreplace import * as rexreplace from './engine'; From fc55f3710f20d502abaa2caa892c715f7062bddc Mon Sep 17 00:00:00 2001 From: Mathias Wulff Date: Thu, 15 Aug 2024 04:07:45 +1000 Subject: [PATCH 155/155] Void minification --- bin/ES6/cli.js | 297 ------------------- bin/ES6/engine.js | 362 ----------------------- bin/ES6/output.js | 52 ---- bin/rexreplace.cli.js | 588 -------------------------------------- bin/rexreplace.cli.min.js | 588 -------------------------------------- package.json | 4 +- 6 files changed, 2 insertions(+), 1889 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.js delete mode 100644 bin/rexreplace.cli.min.js diff --git a/bin/ES6/cli.js b/bin/ES6/cli.js deleted file mode 100644 index e5521863..00000000 --- a/bin/ES6/cli.js +++ /dev/null @@ -1,297 +0,0 @@ -// 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 -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; - } - else { - needHelp = 2; - } -} -else { - [pattern, replacement] = process.argv.splice(2, 2); -} -const yargs = require('yargs') - .strict() - .usage('RexReplace ' + - 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' + - '> 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 glob 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('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('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('€') - .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. ` + - '') - .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.') - .alias('B', 'void-backup') - .boolean('b') - .describe('b', 'Keep a backup file of the original content.') - .alias('b', 'keep-backup') - .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 will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + - '') - .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') - /* - - - -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 be followed by other all 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('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') - .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 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). - `) - .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; - //io(help); - process.exitCode = exitcode; - process.exit(); -} -function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); -} -(function () { - 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 - Object.keys(yargs.argv).forEach((key) => { - if (1 < key.length && key.indexOf('-') < 0) { - config[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; - } - else { - config.replacement = unescapeString(replacement); - } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ - if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - rexreplace.engine(config); - } - else { - process.stdin.setEncoding(config.encoding); - 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 (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - config.pipedData = pipeData; - } - rexreplace.engine(config); - }); - } -})(); diff --git a/bin/ES6/engine.js b/bin/ES6/engine.js deleted file mode 100644 index ccc346bb..00000000 --- a/bin/ES6/engine.js +++ /dev/null @@ -1,362 +0,0 @@ -const fs = require('fs-extra'); -const path = require('path'); -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(config = { engine: 'V8' }) { - outputConfig(config); - 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 - // 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))) - // Do the replacement - .forEach((filepath) => openFile(filepath, config)); -} -function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } - else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function (err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - const backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } - catch (e) { - return error(e); - } - return info(_file_rr); - } - // 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) => { - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, (err) => { - if (err) { - return error(err); - } - info(_file_rr); - }); - } - else { - info(_file_rr); - } - }); - }); -} -function handlePipedData(config) { - 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; -} -function getFinalPattern(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)(); - }*/ - step(pattern); - return pattern; -} -function getFinalReplacement(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) { - 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 - //console.log(process); - 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 getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); - let regex; - let flags = getFlags(config); - switch (config.engine) { - case 'V8': - try { - regex = new RegExp(pattern, flags); - } - catch (e) { - if (config.debug) - throw new Error(e); - die(e.message); - } - break; - case 'RE2': - try { - const RE2 = require('re2'); - regex = new RE2(pattern, flags); - } - catch (e) { - if (config.debug) - throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${config.engine} not supported`); - } - step(regex); - return regex; -} -function getFlags(config) { - step('Get flags'); - let flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; - } - if (config.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.pipedData, _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.dataIsPiped) { - _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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - // 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); - } - // 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, 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); - }; -} -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) { - let { includeGlob, excludeGlob, excludeRe } = conf; - let filesToInclude = globs.sync(includeGlob); - if (excludeRe.length) { - excludeRe - .map((el) => getFinalPattern(el, 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 deleted file mode 100644 index d3e1e30c..00000000 --- a/bin/ES6/output.js +++ /dev/null @@ -1,52 +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 config = null; -export const outputConfig = function (_config) { - config = _config; -}; -export const info = function (msg, data = '') { - if (config.quiet || config.quietTotal) { - return; - } - console.error(font.gray(msg), data); -}; -export const chat = function (msg, data = '') { - if (config.verbose) { - info(msg, data); - } - else { - debug(msg + ' ' + data); - } -}; -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) { - console.error(font.red(msg), data); - } - if (config.halt) { - kill(msg); - } - return false; -}; -export function debug(data) { - if (config.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } -} -export function step(data) { - if (config.verbose) { - debug(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 deleted file mode 100755 index baa2cc7f..00000000 --- a/bin/rexreplace.cli.js +++ /dev/null @@ -1,588 +0,0 @@ -#!/usr/bin/env node -(function () { - 'use strict'; - - 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; - const outputConfig = function(_config) { - config = _config; - }; - const info = function(msg, data = '') { - if (config.quiet || config.quietTotal) { - return; - } - console.error(font.gray(msg), data); - }; - const chat = function(msg, data = '') { - if (config.verbose) { - info(msg, data); - } else { - debug(msg + ' ' + data); - } - }; - const die = function(msg = '', data = '', displayHelp = false) { - if (displayHelp && !config.quietTotal) { - config.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); - }; - const error = function(msg, data = '') { - if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); - } - if (config.halt) { - kill(msg); - } - return false; - }; - function debug(data) { - if (config.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } - } - function step(data) { - if (config.verbose) { - debug(data); - } - } - function kill(error = 1, msg = '') { - msg && console.error(+msg); - process.exit(error); - } - - const fs = require('fs-extra'); - const path = require('path'); - const globs = require('globs'); - const now = new Date(); - const re = { - euro: /€/g, - section: /§/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ - }; - const version = '7.1.4'; - function engine(config = { - engine: 'V8' - }) { - outputConfig(config); - 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// 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))// Do the replacement - .forEach((filepath)=>openFile(filepath, config)); - } - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function(err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - const backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } catch (e) { - return error(e); - } - return info(_file_rr); - } - // 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)=>{ - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, (err)=>{ - if (err) { - return error(err); - } - info(_file_rr); - }); - } else { - info(_file_rr); - } - }); - }); - } - function handlePipedData(config) { - 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; - } - function getFinalPattern(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)(); - }*/ step(pattern); - return pattern; - } - function getFinalReplacement(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) { - 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 - //console.log(process); - 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 getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); - let regex; - let flags = getFlags(config); - switch(config.engine){ - case 'V8': - try { - regex = new RegExp(pattern, flags); - } catch (e) { - if (config.debug) throw new Error(e); - die(e.message); - } - break; - case 'RE2': - try { - const RE2 = require('re2'); - regex = new RE2(pattern, flags); - } catch (e) { - if (config.debug) throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${config.engine} not supported`); - } - step(regex); - return regex; - } - function getFlags(config) { - step('Get flags'); - let flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; - } - if (config.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.pipedData, _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.dataIsPiped) { - _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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - // 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); - } - // 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, 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); - }; - } - 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) { - let { includeGlob, excludeGlob, excludeRe } = conf; - let filesToInclude = globs.sync(includeGlob); - if (excludeRe.length) { - excludeRe.map((el)=>getFinalPattern(el, 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; - } - - // CLI interface for rexreplace - 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 - let 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; - } else { - needHelp = 2; - } - } else { - [pattern, replacement] = process.argv.splice(2, 2); - } - const yargs = require('yargs').strict().usage('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' + '> 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 glob 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('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('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('€').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. ` + '').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.').alias('B', 'void-backup').boolean('b').describe('b', 'Keep a backup file of the original content.').alias('b', 'keep-backup').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 will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + '').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')/* - - - -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 be followed by other all 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('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') - .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 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). - `).help('h').describe('h', 'Display help.').alias('h', 'help').epilog(`Inspiration: .oO(What should 'sed' have been by now?)`); - function backOut(exitcode = 1) { - yargs.showHelp(); - //io(help); - process.exitCode = exitcode; - process.exit(); - } - function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); - } - (function() { - 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 - Object.keys(yargs.argv).forEach((key)=>{ - if (1 < key.length && key.indexOf('-') < 0) { - config[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; - } else { - config.replacement = unescapeString(replacement); - } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - engine(config); - } else { - process.stdin.setEncoding(config.encoding); - 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 (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - config.pipedData = pipeData; - } - engine(config); - }); - } - })(); - -})(); diff --git a/bin/rexreplace.cli.min.js b/bin/rexreplace.cli.min.js deleted file mode 100644 index baa2cc7f..00000000 --- a/bin/rexreplace.cli.min.js +++ /dev/null @@ -1,588 +0,0 @@ -#!/usr/bin/env node -(function () { - 'use strict'; - - 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; - const outputConfig = function(_config) { - config = _config; - }; - const info = function(msg, data = '') { - if (config.quiet || config.quietTotal) { - return; - } - console.error(font.gray(msg), data); - }; - const chat = function(msg, data = '') { - if (config.verbose) { - info(msg, data); - } else { - debug(msg + ' ' + data); - } - }; - const die = function(msg = '', data = '', displayHelp = false) { - if (displayHelp && !config.quietTotal) { - config.showHelp(); - } - msg && error(' ❌ ' + msg, data); - kill(); - }; - const error = function(msg, data = '') { - if (!config.quiet && !config.quietTotal) { - console.error(font.red(msg), data); - } - if (config.halt) { - kill(msg); - } - return false; - }; - function debug(data) { - if (config.debug) { - console.error(font.gray(JSON.stringify(data, null, 4))); - } - } - function step(data) { - if (config.verbose) { - debug(data); - } - } - function kill(error = 1, msg = '') { - msg && console.error(+msg); - process.exit(error); - } - - const fs = require('fs-extra'); - const path = require('path'); - const globs = require('globs'); - const now = new Date(); - const re = { - euro: /€/g, - section: /§/g, - mctime: /[mc]time/, - colon: /:/g, - capturedGroupRef: /\$\d/, - regexSpecialChars: /[-\[\]{}()*+?.,\/\\^$|#\s]/g, - byteOrSize: /bytes|size/, - folderName: /[\\\/]+([^\\\/]+)[\\\/]+[^\\\/]+$/ - }; - const version = '7.1.4'; - function engine(config = { - engine: 'V8' - }) { - outputConfig(config); - 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// 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))// Do the replacement - .forEach((filepath)=>openFile(filepath, config)); - } - function openFile(file, config) { - if (config.voidAsync) { - chat('Open sync: ' + file); - var data = fs.readFileSync(file, config.encoding); - return doReplacement(file, config, data); - } else { - chat('Open async: ' + file); - fs.readFile(file, config.encoding, function(err, data) { - if (err) { - return error(err); - } - return doReplacement(file, config, 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); - // Variables to be accessible from js. - if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); - } - // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); - // The output of matched strings is done from the replacement, so no need to continue - if (_config_rr.outputMatch) { - return; - } - if (_config_rr.output) { - debug('Output result from: ' + _file_rr); - return process.stdout.write(result); - } - // Nothing replaced = no need for writing file again - if (result === _data_rr) { - chat('Nothing changed in: ' + _file_rr); - return; - } - // Release the memory while storing files - _data_rr = ''; - debug('Write new content to: ' + _file_rr); - // 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 (err) { - return error(err); - } - info(_file_rr); - }); - } - //Make sure data is always on disk - const oriFile = path.normalize(path.join(process.cwd(), _file_rr)); - const salt = new Date().toISOString().replace(re.colon, '_').replace('Z', ''); - const backupFile = oriFile + '.' + salt + '.backup'; - if (_config_rr.voidAsync) { - try { - fs.renameSync(oriFile, backupFile); - fs.writeFileSync(oriFile, result, _config_rr.encoding); - if (!_config_rr.keepBackup) { - fs.unlinkSync(backupFile); - } - } catch (e) { - return error(e); - } - return info(_file_rr); - } - // 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)=>{ - if (err) { - return error(err); - } - if (!_config_rr.keepBackup) { - fs.unlink(backupFile, (err)=>{ - if (err) { - return error(err); - } - info(_file_rr); - }); - } else { - info(_file_rr); - } - }); - }); - } - function handlePipedData(config) { - 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; - } - function getFinalPattern(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)(); - }*/ step(pattern); - return pattern; - } - function getFinalReplacement(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) { - 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 - //console.log(process); - 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 getFinalRegex(pattern, config) { - step('Get final regex with engine: ' + config.engine); - let regex; - let flags = getFlags(config); - switch(config.engine){ - case 'V8': - try { - regex = new RegExp(pattern, flags); - } catch (e) { - if (config.debug) throw new Error(e); - die(e.message); - } - break; - case 'RE2': - try { - const RE2 = require('re2'); - regex = new RE2(pattern, flags); - } catch (e) { - if (config.debug) throw new Error(e); - die(e.message); - } - break; - default: - die(`Engine ${config.engine} not supported`); - } - step(regex); - return regex; - } - function getFlags(config) { - step('Get flags'); - let flags = ''; - if (!config.voidGlobal) { - flags += 'g'; - } - if (!config.voidIgnoreCase) { - flags += 'i'; - } - if (!config.voidMultiline) { - flags += 'm'; - } - if (config.dotAll) { - flags += 's'; - } - if (config.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.pipedData, _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.dataIsPiped) { - _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); - //console.log('filesize: ', fileStats.size); - //console.log('dataSize: ', _bytes); - } - } - if (needsByteOrSize && -1 === _bytes) { - _bytes = Buffer.from(_text).length; - _size = readableSize(_bytes); - } - // 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); - } - // 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, 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); - }; - } - 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) { - let { includeGlob, excludeGlob, excludeRe } = conf; - let filesToInclude = globs.sync(includeGlob); - if (excludeRe.length) { - excludeRe.map((el)=>getFinalPattern(el, 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; - } - - // CLI interface for rexreplace - 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 - let 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; - } else { - needHelp = 2; - } - } else { - [pattern, replacement] = process.argv.splice(2, 2); - } - const yargs = require('yargs').strict().usage('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' + '> 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 glob 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('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('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('€').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. ` + '').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.').alias('B', 'void-backup').boolean('b').describe('b', 'Keep a backup file of the original content.').alias('b', 'keep-backup').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 will be piped in. You still need to provide a dummy value (like \`_\`) as replacement parameter.` + '').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')/* - - - -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 be followed by other all 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('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') - .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 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). - `).help('h').describe('h', 'Display help.').alias('h', 'help').epilog(`Inspiration: .oO(What should 'sed' have been by now?)`); - function backOut(exitcode = 1) { - yargs.showHelp(); - //io(help); - process.exitCode = exitcode; - process.exit(); - } - function unescapeString(str = '') { - return new Function(`return '${str.replace(/'/g, "\\'")}'`)(); - } - (function() { - 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 - Object.keys(yargs.argv).forEach((key)=>{ - if (1 < key.length && key.indexOf('-') < 0) { - config[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; - } else { - config.replacement = unescapeString(replacement); - } - /*if(Boolean(process.stdout.isTTY)){ - config.output = true; - }*/ if (Boolean(process.stdin.isTTY)) { - if (config.replacementPipe) { - return backOut(); - } - engine(config); - } else { - process.stdin.setEncoding(config.encoding); - 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 (yargs.argv.trimPipe) { - pipeData = pipeData.trim(); - } - config.pipedData = pipeData; - } - engine(config); - }); - } - })(); - -})(); diff --git a/package.json b/package.json index eac63a74..999a129b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "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", + "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", @@ -33,7 +33,7 @@ "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", + "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": [