From 24dfbaf6b4757a1c0e89bb1a083944f8b1dd6a46 Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Tue, 25 Apr 2023 21:28:42 +0900 Subject: [PATCH 01/11] too many updates... --- frontend/app.js | 87 +- frontend/index.html | 22 +- frontend/index.js | 516 +++---- frontend/npm-shrinkwrap.json | 2598 ++++++++++++++-------------------- frontend/package.json | 10 +- frontend/preload.js | 17 + 6 files changed, 1398 insertions(+), 1852 deletions(-) create mode 100644 frontend/preload.js diff --git a/frontend/app.js b/frontend/app.js index e7aed63a..e7f1d756 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -1,11 +1,8 @@ -"use strict"; // instead of ipc, maybe? // https://github.com/atom/electron/blob/master/docs/api/remote.md -var ipc = require('ipc'); -var path = require('path'); -var fs = require('fs'); - +const ipc = window.ipc_wrapper; +const path = ipc.path; var platforms; var templates; @@ -20,38 +17,37 @@ var templates; // "linuxarmv7l": "Linux ARMv7 (Makefiles)" // }; -var defaultSettings; -var addonsInstalled; -var currentPath; -var isOfPathGood = false; -var isFirstTimeSierra = false; -var bVerbose = false; -var localAddons = []; +let defaultSettings; +let addonsInstalled; +let isOfPathGood = false; +let isFirstTimeSierra = false; +let bVerbose = false; +let localAddons = []; -var numAddedSrcPaths = 1; +let numAddedSrcPaths = 1; //----------------------------------------------------------------------------------- // IPC //----------------------------------------------------------------------------------- //------------------------------------------- -ipc.on('setOfPath', function(arg) { +ipc.on('setOfPath', function(event, arg) { setOFPath(arg); }); -ipc.on('cwd', function(arg) { +ipc.on('cwd', function(event, arg) { console.log(arg); }); -ipc.on('setUpdatePath', function(arg) { +ipc.on('setUpdatePath', function(event, arg) { var elem = document.getElementById("updateMultiplePath"); elem.value = arg; $("#updateMultiplePath").change(); }); -ipc.on('isUpdateMultiplePathOk', function(arg) { +ipc.on('isUpdateMultiplePathOk', function(event, arg) { if (arg == true){ $("#updateMultipleWrongMessage").hide(); $("#updateMultipleButton").removeClass("disabled"); @@ -64,13 +60,13 @@ ipc.on('isUpdateMultiplePathOk', function(arg) { }); //------------------------------------------- -ipc.on('setup', function(arg) { +ipc.on('setup', function(event, arg) { setup(); }); //----------------------------------------- // this is called from main when defaults are loaded in: -ipc.on('setDefaults', function(arg) { +ipc.on('setDefaults', function(event, arg) { defaultSettings = arg; setOFPath(defaultSettings['defaultOfPath']); @@ -79,13 +75,13 @@ ipc.on('setDefaults', function(arg) { }); //------------------------------------------- -ipc.on('setStartingProject', function(arg) { +ipc.on('setStartingProject', function(event, arg) { $("#projectPath").val(arg['path']); $("#projectName").val(arg['name']); }); //------------------------------------------- -ipc.on('setProjectPath', function(arg) { +ipc.on('setProjectPath', function(event, arg) { $("#projectPath").val(arg); //defaultSettings['lastUsedProjectPath'] = arg; //saveDefaultSettings(); @@ -93,24 +89,24 @@ ipc.on('setProjectPath', function(arg) { }); //------------------------------------------- -ipc.on('setSourceExtraPath', function(arg, index) { +ipc.on('setSourceExtraPath', function(event, [arg, index]) { // TODO: checkAddSourcePath(index); $("#sourceExtra-"+index).val(arg); }); //------------------------------------------- -ipc.on('setGenerateMode', function(arg) { +ipc.on('setGenerateMode', function(event, arg) { switchGenerateMode(arg); }); //------------------------------------------- -ipc.on('importProjectSettings', function(settings) { +ipc.on('importProjectSettings', function(event, settings) { $("#projectPath").val(settings['projectPath']); $("#projectName").val(settings['projectName']).trigger('change'); // change triggers addon scanning }); //------------------------------------------- -ipc.on('setAddons', function(arg) { +ipc.on('setAddons', function(event, arg) { console.log("got set addons"); console.log(arg); @@ -162,7 +158,7 @@ ipc.on('setAddons', function(arg) { }); -ipc.on('setPlatforms', function(arg) { +ipc.on('setPlatforms', function(event, arg) { console.log("got set platforms"); console.log(arg); @@ -211,7 +207,7 @@ ipc.on('setPlatforms', function(arg) { }); -ipc.on('setTemplates', function(arg) { +ipc.on('setTemplates', function(event, arg) { console.log("----------------"); console.log("got set templates"); console.log(arg); @@ -268,7 +264,7 @@ ipc.on('setTemplates', function(arg) { }); -ipc.on('enableTemplate', function (arg) { +ipc.on('enableTemplate', function (event, arg) { console.log('enableTemplate'); let items = arg.bMulti === false ? $('#templatesDropdown .menu .item') : $('#templatesDropdownMulti .menu .item'); @@ -291,7 +287,7 @@ ipc.on('enableTemplate', function (arg) { //------------------------------------------- // select the list of addons and notify if some aren't installed -ipc.on('selectAddons', function(arg) { +ipc.on('selectAddons', function(event, arg) { // todo : DEAL WITH LOCAL ADDONS HERE.... @@ -321,8 +317,9 @@ ipc.on('selectAddons', function(arg) { var neededAddonPathRel = path.join($("#projectPath").val(), $("#projectName").val(), arg[i]); console.log(neededAddonPathRel); - if (fs.existsSync(neededAddonPathRel) || - fs.existsSync(neededAddons[i])){ + if (fs.existsSync(neededAddonPathRel) + || fs.existsSync(neededAddons[i])) + { localAddons.push(arg[i]); } else { neededAddons.push(arg[i]); @@ -379,7 +376,7 @@ ipc.on('selectAddons', function(arg) { //------------------------------------------- // allow main to send UI messages -ipc.on('sendUIMessage', function(arg) { +ipc.on('sendUIMessage', function(event, arg) { // check if it has "success" message: @@ -388,12 +385,12 @@ ipc.on('sendUIMessage', function(arg) { }); //------------------------------------------- -ipc.on('consoleMessage', function(msg) { +ipc.on('consoleMessage', function(event, msg) { consoleMessage(msg); }); //------------------------------------------- -ipc.on('generateCompleted', function(isSuccessful) { +ipc.on('generateCompleted', function(event, isSuccessful) { if (isSuccessful === true) { // We want to switch to update mode now $("#projectName").trigger('change'); @@ -401,13 +398,13 @@ ipc.on('generateCompleted', function(isSuccessful) { }); //------------------------------------------- -ipc.on('updateCompleted', function(isSuccessful) { +ipc.on('updateCompleted', function(event, isSuccessful) { if (isSuccessful === true) { // eventual callback after update completed } }); -ipc.on('setRandomisedSketchName', function(newName) { +ipc.on('setRandomisedSketchName', function(event, newName) { $("#projectName").val(newName); }); @@ -420,9 +417,9 @@ ipc.on('setRandomisedSketchName', function(newName) { //---------------------------------------- function setOFPath(arg) { // get the element: - var elem = document.getElementById("ofPath"); + const elem = document.getElementById("ofPath"); - if (!path.isAbsolute(arg)) { + if (arg != null && !path.isAbsolute(arg)) { // if we are relative, don't do anything... @@ -746,6 +743,7 @@ function setup() { selectedPlatforms: selectedPlatformArray, bMulti: false } + console.log(arg); ipc.send('refreshTemplateList', arg); }) $("#platformsDropdownMulti").on('change', function () { @@ -886,15 +884,11 @@ function openDragInputModal(e){ //---------------------------------------- function saveDefaultSettings() { + if(!defaultSettings) return; - var fs = require('fs'); - fs.writeFile(path.resolve(__dirname, 'settings.json'), JSON.stringify(defaultSettings, null, '\t'), function(err) { - if (err) { - console.log("Unable to save defaultSettings to settings.json... (Error=" + err.code + ")"); - } else { - console.log("Updated default settings for the PG. (written to settings.json)"); - } - }); + const defaultSettingsJsonString = JSON.stringify(defaultSettings, null, '\t'); + const result = ipc.sendSync('saveDefaultSettings', defaultSettingsJsonString); + console.log(result); } //---------------------------------------- @@ -1136,6 +1130,7 @@ function browseOfPath() { function browseProjectPath() { var path = $("#projectPath").val(); + console.log(path); if (path === ''){ path = $("#ofPath").val(); } diff --git a/frontend/index.html b/frontend/index.html index f3526962..3d7322c1 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -9,10 +9,12 @@ body { background-color: #ddd; -webkit-user-select: none; + user-select: none; } /* enable some text to be selectable */ .selectable, .selectable * { -webkit-user-select: text; + user-select: text; } .draggable { @@ -39,6 +41,7 @@ .ui.dimmer > .content { -webkit-user-select: none !important; + user-select: none !important; } #uiModal { @@ -54,14 +57,13 @@ } .fixedElement { -position: fixed; - z-index: 101; - margin: 0em; - width: 100%; - + position: fixed; + z-index: 101; + margin: 0em; + width: 100%; } - #fullConsoleOutput textarea{ + #fullConsoleOutput textarea { border:0px; background-color: #333; width:100%; @@ -83,9 +85,9 @@ <div class="draggable" id="df" style="padding:0px; margin:0px; background: linear-gradient(rgba(0,0,0,0.85), rgba(0,0,0,0.85)); height:2.5em"> <button class="circular ui secondary mini icon button undraggable" onclick="quit()" style="margin:5px;"> - <i class="icon remove"></i> -</button> - <<!-- div class="ui container" style="padding:0px; margin:0px;"> + <i class="icon remove"></i> + </button> + <!-- <div class="ui container" style="padding:0px; margin:0px;"> <a class="item menuItem"> <div style="white" onclick="quit()"><i class="remove link icon white" style="color:#fff"></i> </div> @@ -365,7 +367,7 @@ <p>Welcome to the console :)</p> </div> </section> - <script type="text/javascript" src="static/js/jquery.min.js" onload="window.$ = window.jQuery = module.exports;"></script> + <script type="text/javascript" src="static/js/jquery.min.js"></script> <script type="text/javascript" src="static/js/semantic.min.js"></script> <script type="text/javascript" src="static/js/jquery.dragbetter.js"></script> <script src="app.js"></script> diff --git a/frontend/index.js b/frontend/index.js index e09a5da1..4b9186c0 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -1,16 +1,19 @@ -"use strict"; +const fs = require('fs'); +const path = require('path'); +const moniker = require('moniker'); +const process = require('process'); +const os = require("os"); +const exec = require('child_process').exec; + +const { + app, + BrowserWindow, + dialog, + ipcMain, + Menu, + crashReporter +} = require('electron'); -var app = require('app'); // Module to control application life. -var BrowserWindow = require('browser-window'); // Module to create native browser window. -var dialog = require('dialog'); -var ipc = require('ipc'); -var fs = require('fs'); -var path = require('path'); -var menu = require('menu'); -var moniker = require('moniker'); -var process = require('process'); -var os = require("os"); -var exec = require('child_process').exec; // Debugging: start the Electron PG from the terminal to see the messages from console.log() @@ -20,18 +23,16 @@ var exec = require('child_process').exec; //--------------------------------------------------------- load settings -var obj; +let obj; try { - var settings = fs.readFileSync(path.resolve(__dirname, 'settings.json')); + const settings = fs.readFileSync(path.resolve(__dirname, 'settings.json')); obj = JSON.parse(settings, 'utf8'); console.log(obj); } catch (e) { - // automatic platform detection - var os = require("os"); - var myPlatform = "Unknown"; + let myPlatform = "Unknown"; if (/^win/.test(process.platform)) { myPlatform = 'vs'; } @@ -64,23 +65,38 @@ try { }; } -var hostplatform = ""; -if (/^win/.test(process.platform)) { - hostplatform = 'windows'; -} else if (process.platform === "darwin") { - hostplatform = 'osx'; -} else if (process.platform === "linux") { - hostplatform = 'linux'; +const templateSettings = { + "defaultOfPath": "", + "advancedMode": false, + "defaultPlatform": 'osx', + "showConsole": false, + "showDeveloperTools": false, + "defaultRelativeProjectPath": "apps/myApps", + "useDictionaryNameGenerator": false +}; + +for(const key in templateSettings) { + if(!obj.hasOwnProperty(key)) { + obj[key] = templateSettings[key]; + } } -console.log("detected platform: " + hostplatform + " in " + __dirname); +const hostplatform = (() => { + if (/^win/.test(process.platform)) { + return 'windows'; + } else if (process.platform === "darwin") { + return 'osx'; + } else if (process.platform === "linux") { + return 'linux'; + } + return 'unknown'; +})(); -var defaultOfPath = obj["defaultOfPath"]; -var addons; +console.log("detected platform: " + hostplatform + " in " + __dirname); // hide some addons, per https://github.com/openframeworks/projectGenerator/issues/62 -var addonsToSkip = [ +const addonsToSkip = [ "ofxiOS", "ofxMultiTouch", "ofxEmscripten", @@ -88,7 +104,7 @@ var addonsToSkip = [ "ofxAndroid" ] -var platforms = { +const platforms = { "osx": "OS X (Xcode)", "vs": "Windows (Visual Studio 2017)", "msys2": "Windows (msys2/mingw)", @@ -98,9 +114,10 @@ var platforms = { "linuxarmv6l": "Linux ARMv6 (Makefiles)", "linuxarmv7l": "Linux ARMv7 (Makefiles)" }; -var bUseMoniker = obj["useDictionaryNameGenerator"]; -var templates = { +const bUseMoniker = obj["useDictionaryNameGenerator"]; + +const templates = { "emscripten": "Emscripten", "gitignore": "Git Ignore", "gles2": "Open GL ES 2", @@ -123,7 +140,8 @@ var templates = { "vscode": "Visual Studio Code", }; - +let defaultOfPath = obj["defaultOfPath"]; +let addons; if (!path.isAbsolute(defaultOfPath)) { @@ -131,29 +149,31 @@ if (!path.isAbsolute(defaultOfPath)) { // arturo, this may differ on linux, if putting ../ in settings doesn't work for the default path // take a look at this... - if (hostplatform=="windows" || hostplatform=="linux"){ - defaultOfPath = path.resolve(path.join(path.join(__dirname,"../../"), defaultOfPath)); - } else if(hostplatform=="osx"){ + if (hostplatform == "windows" || hostplatform == "linux"){ + defaultOfPath = path.resolve(path.join(path.join(__dirname, "../../"), defaultOfPath)); + } else if(hostplatform == "osx"){ defaultOfPath = path.resolve(path.join(path.join(__dirname, "../../../../"), defaultOfPath)); } - obj["defaultOfPath"] = defaultOfPath; + obj["defaultOfPath"] = defaultOfPath || ""; } // now, let's look for a folder called mySketch, and keep counting until we find one that doesn't exist -var startingProject = {}; -startingProject['name'] = ""; -startingProject['path'] = ""; +const startingProject = { + 'name': '', + 'path': '' +}; getStartingProjectName(); //--------------------------------------------------------- // Report crashes to our server. -require('crash-reporter').start(); +// TODO: need to fix? +// crashReporter.start(); //--------------------------------------------------------- // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is GCed. -var mainWindow = null; +let mainWindow = null; // Quit when all windows are closed. app.on('window-all-closed', function() { @@ -164,38 +184,21 @@ app.on('window-all-closed', function() { function formatDate(d){ + //get the year + const year = d.getFullYear().toString().substring(2, 4); //get the month - var month = d.getMonth(); + const month = (d.getMonth() + 1).toString().padStart(2, '0'); //get the day - var day = d.getDate(); - //get the year - var year = d.getFullYear(); - //pull the last two digits of the year - year = year.toString().substr(2,2); - //increment month by 1 since it is 0 indexed - month = month + 1; - //converts month to a string - month = month + ""; - - //if month is 1-9 pad right with a 0 for two digits - if (month.length == 1){ - month = "0" + month; - } - //convert day to string - day = day + ""; - //if day is between 1-9 pad right with a 0 for two digits - if (day.length == 1){ - day = "0" + day; - } + const day = d.getDate().toString().padStart(2, '0');; //return the string "MMddyy" return month + day + year; } // wraps over to bb no aa, why? function toLetters(num) { - var mod = num % 26, - pow = num / 26 | 0, - out = mod ? String.fromCharCode(96 + (num % 26)) : (--pow, 'z'); + const mod = num % 26; + const pow = (num / 26) | 0; + const out = mod ? String.fromCharCode(96 + (num % 26)) : (--pow, 'z'); return pow ? toLetters(pow) + out : out; } @@ -209,15 +212,18 @@ app.on('ready', function() { mainWindow = new BrowserWindow({ width: 500, height: 600, - resizable: false, - frame: false + resizable: true, // TODO: fix to false, true for debug + frame: false, + webPreferences: { + preload: path.join(__dirname, 'preload.js') + } }); // load jquery here: // http://stackoverflow.com/questions/30271011/electron-jquery-errors // and load the index.html of the app. - mainWindow.loadUrl('file://' + __dirname + '/index.html'); + mainWindow.loadFile(path.join(__dirname, 'index.html')); // Open the devtools. if (obj["showDeveloperTools"]) { @@ -251,7 +257,7 @@ app.on('ready', function() { // when you should delete the corresponding element. }); - var menuTmpl = [{ + const menuTmpl = [{ label: 'Atom Shell', submenu: [{ label: 'Quit', @@ -305,16 +311,14 @@ app.on('ready', function() { selector: 'selectAll:' }, ] }]; - var menuV = menu.buildFromTemplate(menuTmpl); - menu.setApplicationMenu(menuV); - + const menuV = Menu.buildFromTemplate(menuTmpl); + Menu.setApplicationMenu(menuV); }); function getStartingProjectName() { - - var defaultPathForProjects = path.join(obj["defaultOfPath"], obj["defaultRelativeProjectPath"]); - var foundOne = false; - var goodName = getGoodSketchName(defaultPathForProjects); + console.log(obj["defaultOfPath"], obj["defaultRelativeProjectPath"]); + const defaultPathForProjects = path.join(obj["defaultOfPath"], obj["defaultRelativeProjectPath"]); + const goodName = getGoodSketchName(defaultPathForProjects); startingProject['path'] = defaultPathForProjects; startingProject['name'] = goodName; } @@ -325,11 +329,11 @@ function parseAddonsAndUpdateSelect(arg) { addons = getDirectories(arg + "/addons","ofx"); if (addons){ - if (addons.length > 0){ - addons = addons.filter( function(addon) { - return addonsToSkip.indexOf(addon)==-1; - }); - } + if (addons.length > 0){ + addons = addons.filter( function(addon) { + return addonsToSkip.indexOf(addon) == -1; + }); + } } console.log("Reloading the addons folder, these were found:"); @@ -338,19 +342,19 @@ function parseAddonsAndUpdateSelect(arg) { } function parsePlatformsAndUpdateSelect(arg) { - var folders = getDirectories(arg + "/scripts/templates"); + const folders = getDirectories(arg + "/scripts/templates"); console.log("Reloading the templates folder, these were found:"); console.log(folders); - var platformsWeHave = {}; - var templatesWeHave = {}; + const platformsWeHave = {}; + const templatesWeHave = {}; if (folders === undefined || folders === null) { //do something } else { // check all folder name under /scripts/templates - for (var id in folders) { - var key = folders[id]; + for (const id in folders) { + const key = folders[id]; if (platforms[key]) { // this folder is for platform console.log("Found platform, key " + key + " has value " + platforms[key]); @@ -370,7 +374,7 @@ function parsePlatformsAndUpdateSelect(arg) { } } // saninty check... - // for(var key in platformsWeHave){ + // for(const key in platformsWeHave){ // console.log("key " + key + " has value " + platformsWeHave[key]); // } mainWindow.webContents.send('setPlatforms', platformsWeHave); @@ -379,23 +383,20 @@ function parsePlatformsAndUpdateSelect(arg) { } -function getGoodSketchName(arg){ - - var currentProjectPath = arg; - var foundOne = false; - var goodName = "mySketch"; +function getGoodSketchName(currentProjectPath){ + let foundOne = false; + let goodName = "mySketch"; if (bUseMoniker){ - var projectNames = new moniker.Dictionary(); - var tmpPath = require('path'); - projectNames.read( tmpPath.join(__dirname, 'static', 'data', 'sketchAdjectives.txt')); + const projectNames = new moniker.Dictionary(); + projectNames.read( path.join(__dirname, 'static', 'data', 'sketchAdjectives.txt')); goodName = "mySketch"; while (foundOne === false) { - if (fs.existsSync(tmpPath.join(currentProjectPath, goodName))) { + if (fs.existsSync(path.join(currentProjectPath, goodName))) { console.log("«" + goodName + "» already exists, generating a new name..."); - var adjective = projectNames.choose(); + const adjective = projectNames.choose(); goodName = "my" + adjective.charAt(0).toUpperCase() + adjective.slice(1) + "Sketch"; } else { foundOne = true; @@ -404,12 +405,12 @@ function getGoodSketchName(arg){ } else { - var date = new Date(); - var formattedDate = formatDate(date); + const date = new Date(); + const formattedDate = formatDate(date); goodName = "sketch_" + formattedDate; - var count = 1; + let count = 1; - while (foundOne === false) { + while (foundOne === false) { if (fs.existsSync(path.join(currentProjectPath, goodName))) { console.log("«" + goodName + "» already exists, generating a new name..."); goodName = "sketch_" + formattedDate + toLetters(count); @@ -432,22 +433,21 @@ function getDirectories(srcpath, acceptedPrefix) { // that's why I am making temp ones here. // console.log(path); - var fsTemp = require('fs'); - var pathTemp = require('path'); - try { - return fsTemp.readdirSync(srcpath).filter(function(file) { + return fs.readdirSync(srcpath).filter(function(file) { //console.log(srcpath); //console.log(file); try{ - var joinedPath = pathTemp.join(srcpath, file); - if ((acceptedPrefix==null || file.substring(0,acceptedPrefix.length)==acceptedPrefix) && joinedPath !== null) { + const joinedPath = path.join(srcpath, file); + if ((acceptedPrefix == null || file.substring(0, acceptedPrefix.length) == acceptedPrefix) && joinedPath !== null) { // only accept folders (potential addons) - return fsTemp.statSync(joinedPath).isDirectory(); + return fs.statSync(joinedPath).isDirectory(); } - }catch(e){} + } catch(e) { + + } }); } catch (e) { console.log(e); @@ -467,7 +467,7 @@ function getDirectories(srcpath, acceptedPrefix) { // console.error(err); // return cb([]); // } -// var iterator = function (file, cb) { +// const iterator = function (file, cb) { // fs.stat(path.join(srcpath, file), function (err, stats) { // if(err) { // console.error(err); @@ -480,23 +480,21 @@ function getDirectories(srcpath, acceptedPrefix) { // }); // } -ipc.on('isOFProjectFolder', function(event, project) { - var fsTemp = require('fs'); - var pathTemp = require('path'); - var folder; - folder = pathTemp.join(project['projectPath'], project['projectName']); +ipcMain.on('isOFProjectFolder', function(event, project) { + let folder; + folder = path.join(project['projectPath'], project['projectName']); try { - var tmpFiles = fsTemp.readdirSync(folder); + const tmpFiles = fs.readdirSync(folder); if (!tmpFiles || tmpFiles.length <= 1) { return false; } // we need at least 2 files/folders within // todo: also check for config.make & addons.make ? - var foundSrcFolder = false; - var foundAddons = false; - var foundConfig = false; + let foundSrcFolder = false; + let foundAddons = false; + let foundConfig = false; tmpFiles.forEach(function(el, i) { if (el == 'src') { foundSrcFolder = true; @@ -513,9 +511,9 @@ ipc.on('isOFProjectFolder', function(event, project) { event.sender.send('setGenerateMode', 'updateMode'); if (foundAddons) { - var projectAddons = fsTemp.readFileSync(pathTemp.resolve(folder, 'addons.make')).toString().split("\n"); + let projectAddons = fs.readFileSync(path.resolve(folder, 'addons.make')).toString().split("\n"); - projectAddons = projectAddons.filter(function(el) { + projectAddons = projectAddons.filter((el) => { if (el === '' || el === 'addons') { return false; } // eleminates these items @@ -525,9 +523,7 @@ ipc.on('isOFProjectFolder', function(event, project) { }); // remove comments - projectAddons.forEach(function(element, index) { - this[index] = this[index].split('#')[0]; - }, projectAddons); + projectAddons = projectAddons.map((element) => element.split('#')[0]); // console.log('addons', projectAddons); @@ -537,8 +533,8 @@ ipc.on('isOFProjectFolder', function(event, project) { } if(foundConfig){ - var projectExtra = fsTemp.readFileSync(pathTemp.resolve(folder, 'config.make')).toString().split("\n"); - projectExtra = projectExtra.filter(function(el) { + let projectExtra = fs.readFileSync(path.resolve(folder, 'config.make')).toString().split("\n"); + projectExtra = projectExtra.filter((el) => { if (el === '' || el[0] === '#') { return false; } // eleminates these items @@ -549,26 +545,26 @@ ipc.on('isOFProjectFolder', function(event, project) { }); //read the valid lines - var extraSrcPathsCount = 0; + let extraSrcPathsCount = 0; - projectExtra.forEach(function(el, i) { + projectExtra.forEach((el, i) => { //remove spaces - var line = el.replace(/ /g, ''); + const line = el.replace(/ /g, ''); //split either on = or += - var splitter = "+="; - var n = line.indexOf(splitter); - var macro, value; + let splitter = "+="; + let n = line.indexOf(splitter); + let macro, value; if( n != -1 ){ - var macro = line.substr(0, n); - var value = line.substr(n + splitter.length); - }else{ + macro = line.substring(0, n); + value = line.substring(n + splitter.length); + } else { splitter = "="; n = line.indexOf(splitter); if( n != -1 ){ - macro = line.substr(0, n); - value = line.substr(n + splitter.length); + macro = line.substring(0, n); + value = line.substring(n + splitter.length); } } @@ -592,7 +588,7 @@ ipc.on('isOFProjectFolder', function(event, project) { /*if (joinedPath != null){ // only accept folders (potential addons) - return fsTemp.statSync(joinedPath).isDirectory(); + return fs.statSync(joinedPath).isDirectory(); }*/ } catch (e) { // error reading dir event.sender.send('setGenerateMode', 'createMode'); @@ -609,17 +605,17 @@ ipc.on('isOFProjectFolder', function(event, project) { //----------------------------------------------------------- ipc -ipc.on('refreshAddonList', function(event, arg) { +ipcMain.on('refreshAddonList', function(event, arg) { console.log("in refresh " + arg) parseAddonsAndUpdateSelect(arg); }); -ipc.on('refreshPlatformList', function(event, arg) { +ipcMain.on('refreshPlatformList', function(event, arg) { parsePlatformsAndUpdateSelect(arg); }); -ipc.on('refreshTemplateList', function (event, arg) { +ipcMain.on('refreshTemplateList', function (event, arg) { console.log("refreshTemplateList"); let selectedPlatforms = arg.selectedPlatforms; let ofPath = arg.ofPath; @@ -686,27 +682,39 @@ ipc.on('refreshTemplateList', function (event, arg) { mainWindow.webContents.send('enableTemplate', returnArg); }); -ipc.on('getRandomSketchName', function(event, arg) { - var goodName = getGoodSketchName(arg); +ipcMain.on('getRandomSketchName', function(event, arg) { + const goodName = getGoodSketchName(arg); event.sender.send('setRandomisedSketchName', goodName); event.sender.send('setGenerateMode', 'createMode'); // it's a new sketch name, we are in create mode }); -ipc.on('update', function(event, arg) { +function getPgPath() { + let pgApp = ""; + if(hostplatform == "linux" || hostplatform == "linux64"){ + pgApp = path.join(rootPath, "apps/projectGenerator/commandLine/bin/projectGenerator"); + //pgApp = "projectGenerator"; + } else { + pgApp = path.normalize(path.join(__dirname, "app", "projectGenerator")); + } - var update = arg; - var exec = require('child_process').exec; - var pathTemp = require('path'); + if( hostplatform == 'osx' || hostplatform == 'linux' || hostplatform == 'linux64' ){ + pgApp = pgApp.replace(/ /g, '\\ '); + } else { + pgApp = pgApp = "\"" + pgApp + "\""; + } + return pgApp; +} +ipcMain.on('update', function(event, update) { console.log(update); - var updatePath = ""; - var pathString = ""; - var platformString = ""; - var templateString = ""; - var recursiveString = ""; - var verboseString = ""; - var rootPath = defaultOfPath; + let updatePath = ""; + let pathString = ""; + let platformString = ""; + let templateString = ""; + let recursiveString = ""; + let verboseString = ""; + let rootPath = defaultOfPath; if (update['updatePath'] !== null) { updatePath = update['updatePath']; @@ -734,21 +742,19 @@ ipc.on('update', function(event, arg) { verboseString = "-v"; } - var pgApp = pathTemp.normalize(pathTemp.join(pathTemp.join(__dirname, "app"), "projectGenerator")); + const pgApp = getPgPath(); - if( hostplatform == "linux" || hostplatform == "linux64" ){ - pgApp = pathTemp.join(rootPath, "apps/projectGenerator/commandLine/bin/projectGenerator"); - } - - if( arg.platform == 'osx' || arg.platform == 'linux' || arg.platform == 'linux64' ){ - pgApp = pgApp.replace(/ /g, '\\ '); - } else { - pgApp = "\"" + pgApp + "\""; - } - - var wholeString = pgApp + " " + recursiveString + " " + verboseString + " " + pathString + " " + platformString + " " + templateString + " " + updatePath; - - exec(wholeString, {maxBuffer : Infinity}, function callback(error, stdout, stderr) { + const wholeString = [ + pgApp, + recursiveString, + verboseString, + pathString, + platformString, + templateString, + updatePath + ].join(" "); + + exec(wholeString, { maxBuffer : Infinity }, function callback(error, stdout, stderr) { if (error === null) { event.sender.send('consoleMessage', "<strong>" + wholeString + "</strong><br>" + stdout); @@ -777,24 +783,15 @@ ipc.on('update', function(event, arg) { }); -ipc.on('generate', function(event, arg) { - - - var generate = arg; - - var exec = require('child_process').exec; - - - var pathTemp = require('path'); - - var projectString = ""; - var pathString = ""; - var addonString = ""; - var platformString = ""; - var templateString = ""; - var verboseString = ""; - var rootPath = defaultOfPath; - var sourceExtraString = ""; +ipcMain.on('generate', function(event, generate) { + let projectString = ""; + let pathString = ""; + let addonString = ""; + let platformString = ""; + let templateString = ""; + let verboseString = ""; + let rootPath = defaultOfPath; + let sourceExtraString = ""; if (generate['platformList'] !== null) { platformString = "-p\"" + generate['platformList'].join(",") + "\""; @@ -826,31 +823,25 @@ ipc.on('generate', function(event, arg) { if (generate.projectName !== null && generate.projectPath !== null) { - projectString = "\"" + pathTemp.join(generate['projectPath'], generate['projectName']) + "\""; - } - - var pgApp=""; - if(hostplatform == "linux" || hostplatform == "linux64"){ - pgApp = pathTemp.join(rootPath, "apps/projectGenerator/commandLine/bin/projectGenerator"); - //pgApp = "projectGenerator"; - }else{ - pgApp = pathTemp.normalize(pathTemp.join(pathTemp.join(__dirname, "app"), "projectGenerator")); + projectString = "\"" + path.join(generate['projectPath'], generate['projectName']) + "\""; } - if( arg.platform == 'osx' || arg.platform == 'linux' || arg.platform == 'linux64' ){ - pgApp = pgApp.replace(/ /g, '\\ '); - } else { - pgApp = pgApp = "\"" + pgApp + "\""; - } - - var wholeString = pgApp + " " + verboseString + " " + pathString + " " + addonString + " " + platformString + sourceExtraString + " " + templateString + " " + projectString; - - exec(wholeString, {maxBuffer : Infinity}, function callback(error, stdout, stderr) { - - var wasError = false; - var text = stdout; //Big text with many line breaks - var lines = text.split(os.EOL); //Will return an array of lines on every OS node works - for (var i = 0; i < lines.length; i++) { + const pgApp = getPgPath(); + const wholeString = [ + pgApp, + verboseString, + pathString, + addonString, + platformString + sourceExtraString, + templateString, + projectString + ].join(' '); + + exec(wholeString, { maxBuffer : Infinity }, function callback(error, stdout, stderr) { + let wasError = false; + const text = stdout; //Big text with many line breaks + const lines = text.split(os.EOL); //Will return an array of lines on every OS node works + for (let i = 0; i < lines.length; i++) { if (lines[i].indexOf("Result:") > -1) { if (lines[i].indexOf("error") > -1) { wasError = true; @@ -861,7 +852,7 @@ ipc.on('generate', function(event, arg) { // wasError = did the PG spit out an error (like a bad path, etc) // error = did node have an error running this command line app - var fullPath = pathTemp.join(generate['projectPath'], generate['projectName']); + const fullPath = path.join(generate['projectPath'], generate['projectName']); if (error === null && wasError === false) { event.sender.send('consoleMessage', "<strong>" + wholeString + "</strong><br>" + stdout); event.sender.send('sendUIMessage', @@ -901,62 +892,62 @@ ipc.on('generate', function(event, arg) { //console.log(arg); }); -ipc.on('pickOfPath', function(event, arg) { - - path = dialog.showOpenDialog({ +ipcMain.on('pickOfPath', function(event, arg) { + dialog.showOpenDialog({ title: 'select the root of OF, where you see libs, addons, etc', properties: ['openDirectory'], filters: [], defaultPath: arg - }, function(filenames) { - if (filenames !== undefined && filenames.length > 0) { - defaultOfPath = filenames[0]; - event.sender.send('setOfPath', filenames[0]); + }).then(function(filenames) { + if (filenames !== undefined && filenames.filePaths.length > 0) { + defaultOfPath = filenames.filePaths[0]; + console.log('setOfPath: ', defaultOfPath); + event.sender.send('setOfPath', defaultOfPath); } }); }); -ipc.on('pickUpdatePath', function(event, arg) { - path = dialog.showOpenDialog({ +ipcMain.on('pickUpdatePath', function(event, arg) { + dialog.showOpenDialog({ title: 'select root folder where you want to update', properties: ['openDirectory'], filters: [], defaultPath: arg - }, function(filenames) { - if (filenames !== undefined && filenames.length > 0) { - defaultOfPath = filenames[0]; - event.sender.send('setUpdatePath', filenames[0]); + }).then(function(filenames) { + if (filenames !== undefined && filenames.filePaths.length > 0) { + // defaultOfPath = filenames.filePaths[0]; // TODO: IS THIS CORRECT? + event.sender.send('setUpdatePath', filenames.filePaths[0]); } }); }); -ipc.on('pickProjectPath', function(event, arg) { - path = dialog.showOpenDialog({ +ipcMain.on('pickProjectPath', function(event, arg) { + dialog.showOpenDialog({ title: 'select parent folder for project, typically apps/myApps', properties: ['openDirectory'], filters: [], defaultPath: arg - }, function(filenames) { - if (filenames !== undefined && filenames.length > 0) { - event.sender.send('setProjectPath', filenames[0]); + }).then(function(filenames) { + if (filenames !== undefined && filenames.filePaths.length > 0) { + event.sender.send('setProjectPath', filenames.filePaths[0]); } }); }); -ipc.on('pickSourcePath', function(event, arg, index) { - path = dialog.showOpenDialog({ +ipcMain.on('pickSourcePath', function(event, arg, index) { + dialog.showOpenDialog({ title: 'select extra source or include folder paths to add to project', properties: ['openDirectory'], filters: [], defaultPath: arg - }, function(filenames) { - if (filenames !== undefined && filenames.length > 0) { - event.sender.send('setSourceExtraPath', filenames[0], index); + }).then(function(filenames) { + if (filenames !== undefined && filenames.filePaths.length > 0) { + event.sender.send('setSourceExtraPath', [filenames.filePaths[0], index]); } }); }); -ipc.on('checkMultiUpdatePath', function(event, arg) { +ipcMain.on('checkMultiUpdatePath', function(event, arg) { if (fs.existsSync(arg)) { @@ -967,25 +958,25 @@ ipc.on('checkMultiUpdatePath', function(event, arg) { }); -var dialogIsOpen = false; -ipc.on('pickProjectImport', function(event, arg) { +let dialogIsOpen = false; +ipcMain.on('pickProjectImport', function(event, arg) { if(dialogIsOpen){ return; } dialogIsOpen = true; - path = dialog.showOpenDialog({ + dialog.showOpenDialog({ title: 'Select the folder of your project, typically apps/myApps/myGeniusApp', properties: ['openDirectory'], filters: [], defaultPath: arg - }, function(filenames) { - if (filenames != null) { + }).then(function(filenames) { + if (filenames != null && filenames.filePaths.length > 0) { // gather project information - var tmpPath = require('path'); - var projectSettings = {}; - projectSettings['projectName'] = tmpPath.basename(filenames[0]); - projectSettings['projectPath'] = tmpPath.dirname(filenames[0]); + const projectSettings = { + 'projectName': path.basename(filenames.filePaths[0]), + 'projectPath': path.dirname(filenames.filePaths[0]) + }; event.sender.send('importProjectSettings', projectSettings); } dialogIsOpen = false; @@ -993,13 +984,10 @@ ipc.on('pickProjectImport', function(event, arg) { }); -ipc.on('launchProjectinIDE', function(event, arg) { +ipcMain.on('launchProjectinIDE', function(event, arg) { + const fullPath = path.join(arg['projectPath'], arg['projectName']); - var pathTemp = require('path'); - var fsTemp = require('fs'); - var fullPath = pathTemp.join(arg['projectPath'], arg['projectName']); - - if( fsTemp.statSync(fullPath).isDirectory() == false ){ + if( fs.statSync(fullPath).isDirectory() == false ){ // project doesn't exist event.sender.send('projectLaunchCompleted', false ); return; @@ -1008,7 +996,7 @@ ipc.on('launchProjectinIDE', function(event, arg) { // // launch xcode if( arg.platform == 'osx' ){ if(hostplatform == 'osx'){ - var osxPath = pathTemp.join(fullPath, arg['projectName'] + '.xcodeproj'); + let osxPath = path.join(fullPath, arg['projectName'] + '.xcodeproj'); console.log( osxPath ); osxPath = "\"" + osxPath + "\""; @@ -1018,7 +1006,7 @@ ipc.on('launchProjectinIDE', function(event, arg) { } } else if( arg.platform == 'linux' || arg.platform == 'linux64' ){ if(hostplatform == 'linux'){ - var linuxPath = pathTemp.join(fullPath, arg['projectName'] + '.qbs'); + let linuxPath = path.join(fullPath, arg['projectName'] + '.qbs'); linuxPath = linuxPath.replace(/ /g, '\\ '); console.log( linuxPath ); exec('xdg-open ' + linuxPath, function callback(error, stdout, stderr){ @@ -1036,7 +1024,7 @@ ipc.on('launchProjectinIDE', function(event, arg) { } }); } else if( hostplatform == 'windows'){ - var windowsPath = pathTemp.join(fullPath, arg['projectName'] + '.sln'); + let windowsPath = path.join(fullPath, arg['projectName'] + '.sln'); console.log( windowsPath ); windowsPath = "\"" + windowsPath + "\""; exec('start ' + "\"\"" + " " + windowsPath, function callback(error, stdout, stderr){ @@ -1045,6 +1033,28 @@ ipc.on('launchProjectinIDE', function(event, arg) { } }); -ipc.on('quit', function(event, arg) { +ipcMain.on('quit', function(event, arg) { app.quit(); }); + +ipcMain.on('saveDefaultSettings', function(event, defaultSettings) { + fs.writeFile(path.resolve(__dirname, 'settings.json'), defaultSettings, function(err) { + if (err) { + event.returnValue = "Unable to save defaultSettings to settings.json... (Error=" + err.code + ")"; + } else { + event.returnValue = "Updated default settings for the PG. (written to settings.json)"; + } + }); +}); + +ipcMain.on('path', (event, [ key, args ]) => { + console.log('path', key, args); + event.returnValue = path[key](... args); + return; +}); + +ipcMain.on('fs', (event, [ key, args ]) => { + console.log('fs', key, args); + event.returnValue = fs[key](... args); + return; +}); \ No newline at end of file diff --git a/frontend/npm-shrinkwrap.json b/frontend/npm-shrinkwrap.json index 9a40b7ca..b2dc01c7 100644 --- a/frontend/npm-shrinkwrap.json +++ b/frontend/npm-shrinkwrap.json @@ -9,723 +9,775 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "electron-debug": "^0.1.1", "moniker": "^0.1.2", - "n-readlines": "^1.0.0", - "walk": "^2.3.9" + "n-readlines": "^1.0.0" }, "devDependencies": { - "electron-packager": "^12.1.0", - "electron-prebuilt": "^0.37.8" + "electron": "^24.1.2", + "electron-packager": "^17.1.1" }, "engines": { "node": ">=6.11.0" } }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@electron/asar": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.4.tgz", + "integrity": "sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==", "dev": true, "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" + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10.12.0" } }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "node_modules/@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" } }, - "node_modules/asar": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/asar/-/asar-0.14.6.tgz", - "integrity": "sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg==", - "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", + "node_modules/@electron/get/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "chromium-pickle-js": "^0.2.0", - "commander": "^2.9.0", - "cuint": "^0.2.1", - "glob": "^6.0.4", - "minimatch": "^3.0.3", - "mkdirp": "^0.5.0", - "mksnapshot": "^0.3.4", - "tmp": "0.0.28" - }, - "bin": { - "asar": "bin/asar.js" + "ms": "2.1.2" }, "engines": { - "node": ">=4.6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, "engines": { - "node": ">=0.8" + "node": ">=6 <7 || >=8" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "node_modules/@electron/get/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/author-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", - "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "engines": { - "node": ">=0.8" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "node_modules/@electron/notarize": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.3.tgz", + "integrity": "sha512-9oRzT56rKh5bspk3KpAVF8lPKHYQrBnRwcgiOeR0hdilVEQmszDaAu0IPCPrwwzJN0ugNs0rRboTreHMt/6mBQ==", "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, "engines": { - "node": "*" + "node": ">= 10.0.0" } }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha512-hURVuTTGLOppKhjSe9lZy4NCjnvaIAF/juwazv4WtHwsk5rxKrU1WbxN+XtwKDSvkrNbIIaTBQd9wUsSwruZUg==", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "node_modules/@electron/notarize/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "tweetnacl": "^0.14.3" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "node_modules/@electron/notarize/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/notarize/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@electron/notarize/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "node_modules/@electron/osx-sign": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.4.tgz", + "integrity": "sha512-xfhdEcIOfAZg7scZ9RQPya1G1lWo8/zMCwUXAulq0SfY7ONIW+b9qGyKdMyuMctNYwllrIS+vmxfijSfjeh97g==", "dev": true, "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "node_modules/@electron/osx-sign/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": "*" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/@electron/osx-sign/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "node_modules/@electron/universal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz", + "integrity": "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==", "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, "engines": { - "node": ">=0.2.0" + "node": ">=8.6" } }, - "node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "node_modules/@electron/universal/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "node_modules/@electron/universal/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], "dependencies": { - "traverse": ">=0.3.0 <0.4" + "cross-spawn": "^7.0.1" }, "engines": { - "node": "*" + "node": ">= 10" } }, - "node_modules/chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", - "dev": true - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "defer-to-connect": "^2.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dev": true, - "engines": [ - "node >= 0.8" - ], "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@types/node": "*" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "node_modules/@types/node": { + "version": "18.16.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.0.tgz", + "integrity": "sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==", "dev": true }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", "dev": true, "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, + "optional": true, "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" + "@types/node": "*" } }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/decompress-zip": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.3.tgz", - "integrity": "sha512-/fy1L4s+4jujqj3kNptWjilFw3E6De8U6XUFvqmh4npN3Vsypm3oT2V0bXcmbBWS+5j5tr4okYaFrOmyZkszEg==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, - "dependencies": { - "binary": "^0.3.0", - "graceful-fs": "^4.1.3", - "mkpath": "^0.1.0", - "nopt": "^3.0.1", - "q": "^1.1.2", - "readable-stream": "^1.1.8", - "touch": "0.0.3" - }, - "bin": { - "decompress-zip": "bin/decompress-zip" - }, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/decompress-zip/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "node_modules/decompress-zip/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/decompress-zip/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { - "node": ">=4.0.0" + "node": "*" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "engines": { + "node": ">=10.6.0" } }, - "node_modules/electron-debug": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-0.1.1.tgz", - "integrity": "sha512-Fu5sTlb8Y9fbeu8NFLzTbL24jSIm9dOZDv/c4n1gk5TQTAezAJY2D37vW+k+ltqiVaqGIBZG1nkJBUgU1CZVtw==", + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/electron-download": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", - "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", - "deprecated": "Please use @electron/get moving forward.", + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dev": true, "dependencies": { - "debug": "^3.0.0", - "env-paths": "^1.0.0", - "fs-extra": "^4.0.1", - "minimist": "^1.2.0", - "nugget": "^2.0.1", - "path-exists": "^3.0.0", - "rc": "^1.2.1", - "semver": "^5.4.1", - "sumchecker": "^2.0.2" - }, - "bin": { - "electron-download": "lib/cli.js" + "mimic-response": "^1.0.0" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, "engines": { - "node": ">= 4.0" + "node": ">= 6" } }, - "node_modules/electron-download/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/electron-osx-sign": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.17.tgz", - "integrity": "sha512-wUJPmZJQCs1zgdlQgeIpRcvrf7M5/COQaOV68Va1J/SgmWx5KL2otgg+fAae7luw6qz9R8Gvu/Qpe9tAOu/3xQ==", - "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "bluebird": "^3.5.0", - "compare-version": "^0.1.2", - "debug": "^2.6.8", - "isbinaryfile": "^3.0.2", - "minimist": "^1.2.0", - "plist": "^3.0.1" - }, - "bin": { - "electron-osx-flat": "bin/electron-osx-flat.js", - "electron-osx-sign": "bin/electron-osx-sign.js" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.0.0" + "node": ">= 8" } }, - "node_modules/electron-osx-sign/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/cross-spawn-windows-exe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz", + "integrity": "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://github.com/sponsors/malept" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-cross-spawn-windows-exe?utm_medium=referral&utm_source=npm_fund" } - ] + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "is-wsl": "^2.2.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 10" + } }, - "node_modules/electron-osx-sign/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "node_modules/electron-osx-sign/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/electron-osx-sign/node_modules/plist": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-osx-sign/node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, "engines": { - "node": ">=8.0" + "node": ">=10" } }, - "node_modules/electron-packager": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-12.2.0.tgz", - "integrity": "sha512-T5W/FIK4VXhYIOWxkehmz6zXt2S/sA9JZ3AL+/jeKCicQY6QVQ0K8B7W801L+GPTwbgTPycHjO+iqEf1BhZ+Iw==", + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, + "optional": true, "dependencies": { - "asar": "^0.14.0", - "debug": "^3.0.0", - "electron-download": "^4.1.1", - "electron-osx-sign": "^0.4.1", - "extract-zip": "^1.0.3", - "fs-extra": "^5.0.0", - "galactus": "^0.2.1", - "get-package-info": "^1.0.0", - "nodeify": "^1.0.1", - "parse-author": "^2.0.0", - "pify": "^3.0.0", - "plist": "^2.0.0", - "rcedit": "^1.0.0", - "resolve": "^1.1.6", - "sanitize-filename": "^1.6.0", - "semver": "^5.3.0", - "yargs-parser": "^10.0.0" - }, - "bin": { - "electron-packager": "cli.js" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">= 4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/electron-prebuilt": { - "version": "0.37.8", - "resolved": "https://registry.npmjs.org/electron-prebuilt/-/electron-prebuilt-0.37.8.tgz", - "integrity": "sha512-UACICTYJZ5wzT8rYz2s1UJB7CvoKbZcrQIQvcFntjMD6BDpyvDSbz0eBDHJmw+VcYtPSImtD0nTb8wpoAb8Q+g==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "electron-download": "^2.0.0", - "extract-zip": "^1.0.3" - }, - "bin": { - "electron": "cli.js" - } + "optional": true }, - "node_modules/electron-prebuilt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", "dev": true, "dependencies": { - "ms": "2.0.0" + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" } }, - "node_modules/electron-prebuilt/node_modules/electron-download": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-2.2.1.tgz", - "integrity": "sha512-q616zmyExQmm47IxKQfpsXupiK7HPwPM2jGK1dSGTP+xxJqDrsXhotBtymmY70UxAJF+C9mFQGgQ3fypTbpF4A==", - "deprecated": "Please use @electron/get moving forward.", + "node_modules/electron": { + "version": "24.1.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-24.1.2.tgz", + "integrity": "sha512-V0isWbyLYiXrSCcB4lrSVhS/U56NFGfuqHyc+yEPkyhhvY+h4F85cYGdEiZlXp6XjHT+/CLHmw0ltK54g9lvDw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "debug": "^2.2.0", - "home-path": "^1.0.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.0", - "mv": "^2.0.3", - "nugget": "^1.5.1", - "path-exists": "^1.0.0", - "rc": "^1.1.2" + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" }, "bin": { - "electron-download": "cli.js" + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" } }, - "node_modules/electron-prebuilt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/electron-prebuilt/node_modules/nugget": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-1.6.2.tgz", - "integrity": "sha512-Lp7BJE8PUn/l1CHwruaednZHUNz/MN2MkxabNfkIHRy49UzcMSHdBg5/TXCUvkPmzYTqYv79H5Jjfco2dTgZVw==", - "dev": true, - "dependencies": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^1.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^0.4.1", - "throttleit": "0.0.2" + "node_modules/electron-packager": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.1.tgz", + "integrity": "sha512-r1NDtlajsq7gf2EXgjRfblCVPquvD2yeg+6XGErOKblvxOpDi0iulZLVhgYDP4AEF1P5/HgbX/vwjlkEv7PEIQ==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@electron/get": "^2.0.0", + "@electron/notarize": "^1.2.3", + "@electron/osx-sign": "^1.0.1", + "@electron/universal": "^1.3.2", + "cross-spawn-windows-exe": "^1.2.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^10.1.0", + "galactus": "^0.2.1", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "rcedit": "^3.0.1", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" }, "bin": { - "nugget": "bin.js" + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 14.17.5" + }, + "funding": { + "url": "https://github.com/electron/electron-packager?sponsor=1" } }, - "node_modules/electron-prebuilt/node_modules/path-exists": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", - "integrity": "sha512-BD2vrQBPFI3VkVKzTrOmaG2WtPQoduNXu1A5tLYMOW8RN6G9CdhdSkmw+ljxUkJcj4pbXQGw0lzl7MFLnhba9Q==", + "node_modules/electron-packager/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/electron-prebuilt/node_modules/pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha512-LNisJvAjy+hruxp3GV4IkZZscTI34+ISfeM1hesB9V6ezIDfXYrBi9TIXVjjMcEB4QFN7tL+dFDEk4s8jMBMyA==", + "node_modules/electron-packager/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/electron-packager/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" + "lru-cache": "^6.0.0" }, "bin": { - "pretty-bytes": "cli.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/electron-prebuilt/node_modules/single-line-log": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-0.4.1.tgz", - "integrity": "sha512-L3Y5LepaFaTPgD/ftnTVC0mdLeIL+e7wKFuJrdudiI4S9Bab4KfPDoJTmIWLaffa2HIQCExhvgYOLF7RKKvk5w==", - "dev": true + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } }, "node_modules/env-paths": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", - "integrity": "sha512-+6r/UAzikJWJPcQZpBQS+bVmjAMz2BkDP/N4n2Uz1zz8lyw1IHWUeVdh/85gs0dp5A+z76LOQhCZkR6F88mlUw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/error-ex": { @@ -737,61 +789,67 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "bin": { "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node_modules/fd-slicer": { @@ -803,6 +861,32 @@ "pend": "~1.2.0" } }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -865,45 +949,47 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==" - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "universalify": "^2.0.0" }, - "engines": { - "node": ">= 0.12" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "engines": { + "node": ">= 10.0.0" } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -932,6 +1018,21 @@ "universalify": "^0.1.0" } }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "optional": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-package-info": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", @@ -962,69 +1063,122 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { - "assert-plus": "^1.0.0" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { + "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "2 || 3", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "node_modules/global-agent/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "optional": true, "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1037,11 +1191,31 @@ "node": ">= 0.4.0" } }, - "node_modules/home-path": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.7.tgz", - "integrity": "sha512-tM1pVa+u3ZqQwIkXcWfhUlY3HWS3TsnKsfi2OHHvnhkX52s9etyktPyy1rQotkr0euWimChDq+QkQuDe8ngUlQ==", - "dev": true + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "optional": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/hosted-git-info": { "version": "2.8.9", @@ -1049,31 +1223,23 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, - "node_modules/indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dev": true, "dependencies": { - "repeating": "^2.0.0" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.19.0" } }, "node_modules/inflight": { @@ -1092,12 +1258,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -1116,95 +1276,63 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg==", - "dev": true - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, - "dependencies": { - "buffer-alloc": "^1.2.0" - }, "engines": { - "node": ">=0.6.0" + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "dev": true, + "optional": true }, "node_modules/jsonfile": { "version": "4.0.0", @@ -1215,28 +1343,22 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, "engines": { - "node": ">=0.6.0" + "node": ">=8" } }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" + "dependencies": { + "json-buffer": "3.0.1" } }, "node_modules/load-json-file": { @@ -1282,171 +1404,47 @@ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", - "dev": true, - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", - "dev": true, - "dependencies": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/meow/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/meow/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, + "optional": true, "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "escape-string-regexp": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/meow/node_modules/read-pkg-up": { + "node_modules/mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "node": ">=4" } }, "node_modules/minimatch": { @@ -1470,57 +1468,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha512-bauHShmaxVQiEvlrAPWxSPn8spSL8gDVRl11r8vLT4r/KdnknLqtqwQbToZ2Oa8sJkExYY1z6/d+X7pNiqo4yg==", - "dev": true - }, - "node_modules/mksnapshot": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.5.tgz", - "integrity": "sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw==", - "dev": true, - "dependencies": { - "decompress-zip": "0.3.x", - "fs-extra": "0.26.7", - "request": "2.x" - } - }, - "node_modules/mksnapshot/node_modules/fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha512-waKu+1KumRhYv8D8gMRCKJGAMI9pRnPuEb1mvgYD0f7wBscg+h6bW4FDTmEZhB9VKxvoTtxW+Y7bnIlB7zja6Q==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/mksnapshot/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/moniker": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", @@ -1535,20 +1482,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "dev": true, - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/n-readlines": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/n-readlines/-/n-readlines-1.0.1.tgz", @@ -1557,37 +1490,6 @@ "node": ">=6.x.x" } }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/nodeify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", - "integrity": "sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw==", - "dev": true, - "dependencies": { - "is-promise": "~1.0.0", - "promise": "~1.3.0" - } - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -1600,72 +1502,28 @@ "validate-npm-package-license": "^3.0.1" } }, - "node_modules/nugget": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.2.0.tgz", - "integrity": "sha512-I4Yt4dRPes82Tx/s7qDn8z1cA2pmZy2bOJiTdcb/BZJ1LJkEYd9GqunQD37unPUPjdmW6dkkVZmxN+8Gxt6Xlg==", - "dev": true, - "dependencies": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^4.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^1.1.2", - "throttleit": "0.0.2" - }, - "bin": { - "nugget": "bin.js" - } - }, - "node_modules/nugget/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/nugget/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", - "dev": true - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1675,13 +1533,13 @@ "wrappy": "1" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/p-limit": { @@ -1759,6 +1617,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -1792,142 +1659,62 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/plist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", - "integrity": "sha512-yirJ+8SSb8o7pkfyNv+fTzUP0GbK52HMvh0MjMycCxvpL8rHiAfKhXU/3R5znSJnrGakV0WNZhr8yTR4//PjyA==", - "dev": true, - "dependencies": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.x" - } - }, - "node_modules/pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha512-MIBPjZz6oGNSw5rn2mSp+nP9FGoaVo6QsPyPVEaD4puilz5hZNa3kfnrlqRNYFsugslbU3An4mnkLLtZOaWvrA==", - "dev": true, - "dependencies": { - "speedometer": "~0.1.2", - "through2": "~0.2.3" - } - }, - "node_modules/promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz", - "integrity": "sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", "dev": true, "dependencies": { - "is-promise": "~1" + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.4.0" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/rcedit": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.0.1.tgz", + "integrity": "sha512-XM0Jv40/y4hVAqj/MO70o/IWs4uOsaSoo2mLyk3klFDW+SStLnCtzuQu+1OBTIMGlM8CvaK9ftlYCp6DJ+cMsw==", "dev": true, "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "cross-spawn-windows-exe": "^1.1.0" }, - "bin": { - "rc": "cli.js" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/rcedit": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz", - "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==", - "dev": true - }, "node_modules/read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -1955,78 +1742,6 @@ "node": ">=4" } }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "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" - } - }, - "node_modules/redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", - "dev": true, - "dependencies": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "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" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/resolve": { "version": "1.22.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz", @@ -2044,37 +1759,40 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "dependencies": { - "glob": "^6.0.1" + "lowercase-keys": "^2.0.0" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "dev": true, + "optional": true, "dependencies": { - "truncate-utf8-bytes": "^1.0.0" + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/semver": { @@ -2086,19 +1804,48 @@ "semver": "bin/semver" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true }, - "node_modules/single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha512-awzaaIPtYFdexLr6TBpcZSGPB6D1RInNO/qNetgaJloPDF/D0GkVtLvGEp8InfmLV7CyLyQ5fIRP+tVN/JmWQA==", + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "string-width": "^1.0.1" + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/spdx-correct": { @@ -2133,71 +1880,12 @@ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, - "node_modules/speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha512-phdEoDlA6EUIVtzwq1UiNMXDUogczp204aYF/yfOhjNePWFfIpBJ1k5wLMuXQhEOOMjuTJEcc4vdZa+vuP+n/Q==", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "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" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, "node_modules/strip-bom": { "version": "3.0.0", @@ -2208,55 +1896,60 @@ "node": ">=4" } }, - "node_modules/strip-indent": { + "node_modules/strip-outer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, "dependencies": { - "get-stdin": "^4.0.1" - }, - "bin": { - "strip-indent": "cli.js" + "escape-string-regexp": "^1.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, "node_modules/sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha512-16O54scwFPgX60Of/+QJSufmklGqnHZyBK6uewBvtcp3VxT5RM65c/OnGCeEPnjBF8TJoO5Pf6gHAOXfxIjNpA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", "dev": true, "dependencies": { - "debug": "^2.2.0" + "debug": "^4.1.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 8.0" } }, "node_modules/sumchecker/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/sumchecker/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node_modules/supports-preserve-symlinks-flag": { @@ -2271,149 +1964,40 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha512-HtlTFeyYs1elDM2txiIGsdXHaq8kffVaZH/QEBRbo95zQqzlsBx5ELKhkPOZVad9OK9oxzwx6UrQN8Vfh/+yag==", - "dev": true - }, - "node_modules/through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==", - "dev": true, - "dependencies": { - "readable-stream": "~1.1.9", - "xtend": "~2.1.1" - } - }, - "node_modules/through2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "integrity": "sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha512-/LQ54KM9rPf3rGXGo2UPQWx3ol242Zg6Whq27H5DEmZhCJo+pm9N5BzRGepO9vTVhYxpXJdcc1+3uaYt9NyeKg==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "escape-string-regexp": "^1.0.2" }, "engines": { - "node": ">=0.8" + "node": ">=0.10.0" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": "*" + "node": ">=0.8.0" } }, - "node_modules/trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, + "optional": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dev": true, - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" + "node": ">=10" }, - "engines": { - "node": "*" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -2423,37 +2007,6 @@ "node": ">= 4.0.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", - "dev": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -2464,32 +2017,19 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/walk": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", - "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", "dependencies": { - "foreachasync": "^3.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/wrappy": { @@ -2499,43 +2039,27 @@ "dev": true }, "node_modules/xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "dev": true, "engines": { - "node": ">=0.1" + "node": ">=8.0" } }, - "node_modules/xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", - "dev": true, - "dependencies": { - "object-keys": "~0.4.0" - }, - "engines": { - "node": ">=0.4" - } + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "camelcase": "^4.1.0" + "engines": { + "node": ">=12" } }, "node_modules/yauzl": { diff --git a/frontend/package.json b/frontend/package.json index fd0b9e09..8d31abed 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { - "name": "projectGenerator", + "name": "project-generator", "productName": "projectGenerator", - "version": "0.0.1", + "version": "0.1.0", "description": "repo for testing a gui using electron for the project generator", "license": "MIT", "main": "index.js", @@ -31,13 +31,11 @@ "electron-app" ], "dependencies": { - "electron-debug": "^0.1.1", "moniker": "^0.1.2", - "walk": "^2.3.9", "n-readlines": "^1.0.0" }, "devDependencies": { - "electron-packager": "^12.1.0", - "electron-prebuilt": "^0.37.8" + "electron": "^24.1.2", + "electron-packager": "^17.1.1" } } diff --git a/frontend/preload.js b/frontend/preload.js new file mode 100644 index 00000000..7207df0d --- /dev/null +++ b/frontend/preload.js @@ -0,0 +1,17 @@ +const { contextBridge, ipcRenderer } = require('electron'); + +// TODO: need fix? (is this insecure?) +contextBridge.exposeInMainWorld('ipc_wrapper', { + send: (event, data) => ipcRenderer.send(event, data), + sendSync: (event, data) => ipcRenderer.sendSync(event, data), + on: (channel, func) => ipcRenderer.on(channel, func), + path: { + join: (... args) => ipcRenderer.sendSync('path', ['join', args]), + isAbsolute: (p) => ipcRenderer.sendSync('path', ['isAbsolute', [p]]), + relative: (from, to) => ipcRenderer.sendSync('path', ['relative', [from, to]]), + resolve: (... args) => ipcRenderer.sendSync('path', ['resolve', args]), + }, + fs: { + existsSync: (p) => ipcRenderer.sendSync('fs', ['existsSync', [p]]), + } +}); From ed3f27e4c6cb625af64f014ba38530d9de787dfc Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Wed, 26 Apr 2023 12:13:25 +0900 Subject: [PATCH 02/11] clean up --- frontend/app.js | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/frontend/app.js b/frontend/app.js index e7f1d756..ec079e05 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -1130,7 +1130,6 @@ function browseOfPath() { function browseProjectPath() { var path = $("#projectPath").val(); - console.log(path); if (path === ''){ path = $("#ofPath").val(); } @@ -1163,13 +1162,13 @@ function checkAddSourcePath(index){ } function browseSourcePath(index) { - var path = $("#ofPath").val(); + const path = $("#ofPath").val(); ipc.send('pickSourcePath', path, index); // current path could go here } function browseImportProject() { - var path = $("#projectPath").val(); + const path = $("#projectPath").val(); if (path === ''){ path = $("#ofPath").val(); } @@ -1177,8 +1176,7 @@ function browseImportProject() { } function getUpdatePath() { - - var path = $("#updateMultiplePath").val(); + const path = $("#updateMultiplePath").val(); if (path === ''){ path = $("#ofPath").val(); } @@ -1187,31 +1185,40 @@ function getUpdatePath() { } function rescanAddons() { - ipc.send('refreshAddonList', $("#ofPath").val()); - var projectInfo = {}; - projectInfo['projectName'] = $("#projectName").val(); - projectInfo['projectPath'] = $("#projectPath").val(); + ipc.sendSync('refreshAddonList', $("#ofPath").val()); + + const projectInfo = { + 'projectName': $("#projectName").val(), + 'projectPath': $("#projectPath").val(), + }; ipc.send('isOFProjectFolder', projectInfo); // <- this forces addon reload } function getRandomSketchName(){ - var path = $("#projectPath").val(); - if (path === ''){ + const path = $("#projectPath").val(); + if (path === '') { $("#projectPath").oneTimeTooltip('Please specify a path first...'); } else { - ipc.send('getRandomSketchName', path ); + const result = ipc.sendSync('getRandomSketchName', path ); + const { + randomisedSketchName, + generateMode + } = result; + $("#projectName").val(randomisedSketchName); + switchGenerateMode(generateMode); } } function launchInIDE(){ - var platform = getPlatformList()[0]; - - var project = {}; - project['projectName'] = $("#projectName").val(); - project['projectPath'] = $("#projectPath").val(); - project['platform'] = platform; - project['ofPath'] = $("#ofPath").val(); + const platform = getPlatformList()[0]; + + const project = { + 'projectName': $("#projectName").val(), + 'projectPath': $("#projectPath").val(), + 'platform': platform, + 'ofPath': $("#ofPath").val() + }; ipc.send('launchProjectinIDE', project ); } From cb6896b54fe7b7733c58318ba95fda0ead08bf2f Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Wed, 26 Apr 2023 12:14:01 +0900 Subject: [PATCH 03/11] update some ipc messaging --- frontend/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/index.js b/frontend/index.js index 4b9186c0..bf30a1ef 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -397,6 +397,7 @@ function getGoodSketchName(currentProjectPath){ if (fs.existsSync(path.join(currentProjectPath, goodName))) { console.log("«" + goodName + "» already exists, generating a new name..."); const adjective = projectNames.choose(); + console.log(adjective); goodName = "my" + adjective.charAt(0).toUpperCase() + adjective.slice(1) + "Sketch"; } else { foundOne = true; @@ -608,6 +609,7 @@ ipcMain.on('isOFProjectFolder', function(event, project) { ipcMain.on('refreshAddonList', function(event, arg) { console.log("in refresh " + arg) parseAddonsAndUpdateSelect(arg); + event.returnValue = true; }); ipcMain.on('refreshPlatformList', function(event, arg) { @@ -684,8 +686,9 @@ ipcMain.on('refreshTemplateList', function (event, arg) { ipcMain.on('getRandomSketchName', function(event, arg) { const goodName = getGoodSketchName(arg); - event.sender.send('setRandomisedSketchName', goodName); - event.sender.send('setGenerateMode', 'createMode'); // it's a new sketch name, we are in create mode + event.returnValue = { randomisedSketchName: goodName, generateMode: 'createMode' }; + // event.sender.send('setRandomisedSketchName', goodName); + // event.sender.send('setGenerateMode', 'createMode'); // it's a new sketch name, we are in create mode }); function getPgPath() { From 3d1642aa89144dd2cb67901226259052e7e68dcb Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 01:40:12 +0900 Subject: [PATCH 04/11] update electron versions --- frontend/package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 8d31abed..0de0b2a7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,11 +16,11 @@ }, "scripts": { "start": "electron .", - "build": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --all --overwrite --electron-version=0.37.8", - "build:osx": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=0.37.8 --platform=darwin --arch=x64", - "build:linux32": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=0.37.8 --platform=linux --arch=ia32", - "build:linux64": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=0.37.8 --platform=linux --arch=x64", - "build:vs": "electron-packager . --icon=static/icon/of.ico --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=0.37.8 --platform=win32 --arch=ia32" + "build": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --all --overwrite --electron-version=17.1.1", + "build:osx": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=17.1.1 --platform=darwin --arch=x64", + "build:linux32": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=17.1.1 --platform=linux --arch=ia32", + "build:linux64": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=17.1.1 --platform=linux --arch=x64", + "build:vs": "electron-packager . --icon=static/icon/of.ico --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --electron-version=17.1.1 --platform=win32 --arch=ia32" }, "files": [ "index.html", From e4490bddee074530be81bed5fbdeec905b0c81ee Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 01:42:46 +0900 Subject: [PATCH 05/11] fix about "update multiple" --- frontend/app.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/app.js b/frontend/app.js index ec079e05..28f59b6b 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -1176,12 +1176,12 @@ function browseImportProject() { } function getUpdatePath() { - const path = $("#updateMultiplePath").val(); - if (path === ''){ - path = $("#ofPath").val(); + let updateMultiplePath = $("#updateMultiplePath").val(); + if (updateMultiplePath === ''){ + updateMultiplePath = $("#ofPath").val(); } - ipc.send('pickUpdatePath', path); // current path could go here + ipc.send('pickUpdatePath', updateMultiplePath); // current path could go here } function rescanAddons() { From 2aae0b4c91401367ed73784743e930229d9dc2bf Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 02:17:36 +0900 Subject: [PATCH 06/11] fix url --- frontend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 0de0b2a7..067d84e5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,7 +9,7 @@ "author": { "name": "zach lieberman", "email": "?", - "url": "openframeworks.cc" + "url": "https://openframeworks.cc" }, "engines": { "node": ">=6.11.0" From cae057a7065acfcf5ba463dbb34042217fa9eda5 Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 02:17:53 +0900 Subject: [PATCH 07/11] clean up and add TODO --- frontend/app.js | 424 ++++++++++++++++++++++-------------------------- 1 file changed, 191 insertions(+), 233 deletions(-) diff --git a/frontend/app.js b/frontend/app.js index 28f59b6b..532207ce 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -4,8 +4,8 @@ const ipc = window.ipc_wrapper; const path = ipc.path; -var platforms; -var templates; +let platforms; +let templates; // var platforms = { // "osx": "OS X (Xcode)", @@ -36,27 +36,23 @@ ipc.on('setOfPath', function(event, arg) { }); ipc.on('cwd', function(event, arg) { - console.log(arg); }); ipc.on('setUpdatePath', function(event, arg) { - var elem = document.getElementById("updateMultiplePath"); + const elem = document.getElementById("updateMultiplePath"); elem.value = arg; $("#updateMultiplePath").change(); - }); ipc.on('isUpdateMultiplePathOk', function(event, arg) { - if (arg == true){ + if (arg == true){ $("#updateMultipleWrongMessage").hide(); $("#updateMultipleButton").removeClass("disabled"); - - } else { + } else { $("#updateMultipleWrongMessage").show(); $("#updateMultipleButton").addClass("disabled"); - - } + } }); //------------------------------------------- @@ -67,7 +63,6 @@ ipc.on('setup', function(event, arg) { //----------------------------------------- // this is called from main when defaults are loaded in: ipc.on('setDefaults', function(event, arg) { - defaultSettings = arg; setOFPath(defaultSettings['defaultOfPath']); enableAdvancedMode(defaultSettings['advancedMode']); @@ -107,35 +102,30 @@ ipc.on('importProjectSettings', function(event, settings) { //------------------------------------------- ipc.on('setAddons', function(event, arg) { - console.log("got set addons"); console.log(arg); addonsInstalled = arg; - var select = document.getElementById("addonsList"); + const select = document.getElementById("addonsList"); select.innerHTML = ""; - if (arg !== null && arg.length > 0) { + if (addonsInstalled !== null && addonsInstalled.length > 0) { // add: - for (var i = 0; i < arg.length; i++) { - + for(let i = 0; i < addonsInstalled.length; i++) { $('<div/>', { "class": 'item', - "data-value": arg[i] - }).html(arg[i]).appendTo(select); + "data-value": addonsInstalled[i] + }).html(addonsInstalled[i]).appendTo(select); } $("#ofPathSierraMessage").hide(); $("#ofPathWrongMessage").hide(); isOfPathGood = true; - - - } else { - if(isFirstTimeSierra){ + if(isFirstTimeSierra) { $("#ofPathSierraMessage").show(); - }else{ + } else { $("#ofPathWrongMessage").show(); } isOfPathGood = false; @@ -143,13 +133,10 @@ ipc.on('setAddons', function(event, arg) { // bounce to settings //$('.main .ui').tab('change tab', 'settings') - - - } - $('#addonsDropdown') + $('#addonsDropdown') .dropdown({ allowAdditions: false, fullTextSearch: 'exact', @@ -167,11 +154,8 @@ ipc.on('setPlatforms', function(event, arg) { platforms = arg; - var select = document.getElementById("platformList"); - var option, i; - for (var i in platforms) { - var myClass = 'platform'; - + let select = document.getElementById("platformList"); + for (const i in platforms) { $('<div/>', { "class": 'item', "data-value": i @@ -179,22 +163,21 @@ ipc.on('setPlatforms', function(event, arg) { } // start the platform drop down. - $('#platformsDropdown').dropdown({ + $('#platformsDropdown') + .dropdown({ allowAdditions: false }); // set the platform to default $('#platformsDropdown').dropdown('set exactly', defaultSettings['defaultPlatform']); - var select = document.getElementById("platformListMulti"); - var option, i; - for (var i in platforms) { - var myClass = 'platform'; - + select = document.getElementById("platformListMulti"); + for (const i in platforms) { $('<div/>', { "class": 'item', "data-value": i - }).html(platforms[i]).appendTo(select); } + }).html(platforms[i]).appendTo(select); + } // start the platform drop down. $('#platformsDropdownMulti') @@ -214,12 +197,9 @@ ipc.on('setTemplates', function(event, arg) { templates = arg; - var select = document.getElementById("templateList"); - var option, i; - for (var i in templates) { + let select = document.getElementById("templateList"); + for (const i in templates) { console.log(i); - var myClass = 'template'; - $('<div/>', { "class": 'item', "data-value": i @@ -230,22 +210,19 @@ ipc.on('setTemplates', function(event, arg) { // start the template drop down. $('#templatesDropdown') - .dropdown({ - allowAdditions: false, - fullTextSearch: 'exact', - match: "text", - maxSelections: 1 - }); + .dropdown({ + allowAdditions: false, + fullTextSearch: 'exact', + match: "text", + maxSelections: 1 + }); // // set the template to default //$('#templatesDropdown').dropdown('set exactly', defaultSettings['defaultTemplate']); // Multi - var select = document.getElementById("templateListMulti"); - var option, i; - for (var i in templates) { - var myClass = 'template'; - + select = document.getElementById("templateListMulti"); + for (const i in templates) { $('<div/>', { "class": 'item', "data-value": i @@ -288,22 +265,20 @@ ipc.on('enableTemplate', function (event, arg) { //------------------------------------------- // select the list of addons and notify if some aren't installed ipc.on('selectAddons', function(event, arg) { - - // todo : DEAL WITH LOCAL ADDONS HERE.... - var addonsAlreadyPicked = $("#addonsDropdown").val().split(','); + const addonsAlreadyPicked = $("#addonsDropdown").val().split(','); console.log(addonsAlreadyPicked); console.log(arg); console.log(addonsInstalled); - var neededAddons = []; + const neededAddons = []; localAddons = []; //haystack.indexOf(needle) >= 0 - for (var i = 0; i < arg.length; i++) { + for (let i = 0; i < arg.length; i++) { arg[i] = arg[i].trim(); // first, check if it's already picked, then do nothing if (addonsAlreadyPicked.indexOf(arg[i]) >= 0){ @@ -314,8 +289,7 @@ ipc.on('selectAddons', function(event, arg) { if (addonsInstalled.indexOf(arg[i]) >= 0){ $('#addonsDropdown').dropdown('set selected', arg[i]); } else { - - var neededAddonPathRel = path.join($("#projectPath").val(), $("#projectName").val(), arg[i]); + const neededAddonPathRel = path.join($("#projectPath").val(), $("#projectName").val(), arg[i]); console.log(neededAddonPathRel); if (fs.existsSync(neededAddonPathRel) || fs.existsSync(neededAddons[i])) @@ -357,30 +331,24 @@ ipc.on('selectAddons', function(event, arg) { } -// <div class="ui red message" id="missingAddonMessage" style="display: none"> -// <p> -// <div class="header"> -// Missing addons -// </div> -// </p> -// <p>you are attempting to update a project that is missing the following addons</p> -// <p><div id="missingAddonList"></div></p> -// <p>please download the missing addons and put them in your addons folder, then relaunch the project generator.</p> -// <p>if you choose to update this project without these addons, you may overwrite the settings on the project.</p> -// </div> - - - - + // <div class="ui red message" id="missingAddonMessage" style="display: none"> + // <p> + // <div class="header"> + // Missing addons + // </div> + // </p> + // <p>you are attempting to update a project that is missing the following addons</p> + // <p><div id="missingAddonList"></div></p> + // <p>please download the missing addons and put them in your addons folder, then relaunch the project generator.</p> + // <p>if you choose to update this project without these addons, you may overwrite the settings on the project.</p> + // </div> }); //------------------------------------------- // allow main to send UI messages ipc.on('sendUIMessage', function(event, arg) { - // check if it has "success" message: - displayModal(arg); }); @@ -420,16 +388,13 @@ function setOFPath(arg) { const elem = document.getElementById("ofPath"); if (arg != null && !path.isAbsolute(arg)) { - // if we are relative, don't do anything... elem.value = arg; - } else { - // else check settings for how we want this path.... make relative if we need to: if (defaultSettings['useRelativePath'] === true) { - var relativePath = path.normalize(path.relative(path.resolve(__dirname), arg)) + "/"; + const relativePath = path.normalize(path.relative(path.resolve(__dirname), arg)) + "/"; elem.value = relativePath; } else { elem.value = arg; @@ -444,43 +409,43 @@ function setOFPath(arg) { function setup() { jQuery.fn.extend({ - oneTimeTooltip: function(msg) { - return this.each(function() { - $(this).popup({ - content : msg, - position : 'bottom center', - on: 'manual', - onVisible: function(e){ - // hide on focus / change / onShow (for dropdowns) - $(e).one('focus change click', function(){ $(this).popup('hide');} ); - console.log($(e).children('input')); - } - }).popup('show') - }); - } + oneTimeTooltip: function (msg) { + return this.each(function () { + $(this).popup({ + content: msg, + position: 'bottom center', + on: 'manual', + onVisible: function (e) { + // hide on focus / change / onShow (for dropdowns) + $(e).one('focus change click', function () { $(this).popup('hide'); }); + console.log($(e).children('input')); + } + }).popup('show') + }); + } }); $(document).ready(function() { - - - try{ - var os = require('os'); - - var os_release = os.release(); - var os_major_pos = os_release.indexOf("."); - var os_major = os_release.slice(0, os_major_pos); - - var isSierra = (os.platform() === 'darwin' && Number(os_major)>=16); - if(isSierra){ - var ofpath = document.getElementById("ofPath").value; - var runningOnVar = false - try{ + try { + // TODO: need to fix? + const os = require('os'); + + const os_release = os.release(); + const os_major_pos = os_release.indexOf("."); + const os_major = os_release.slice(0, os_major_pos); + + const isSierra = (os.platform() === 'darwin' && parseInt(os_major) >= 16); + if(isSierra) { + const ofpath = document.getElementById("ofPath").value; + try { runningOnVar = (ofpath.length >= 8 && ofpath.substring(0,8)==='/private'); - }catch(e){} - isFirstTimeSierra = runningOnVar; + isFirstTimeSierra = runningOnVar; + } catch(e) { + isFirstTimeSierra = false; + } } - }catch(e){ + } catch(e) { isFirstTimeSierra = false; } @@ -503,7 +468,7 @@ function setup() { $("#updateMenuButton").tab({ 'onVisible':function(){ - if (isOfPathGood !== true){ + if (isOfPathGood !== true) { $('#settingsMenuButton').click(); $('#ofPathError').modal({ onHide: function () { @@ -515,7 +480,7 @@ function setup() { }); $("#settingsMenuButton").tab({ - 'onVisible':function(){ + 'onVisible': () => { console.log("settings!! "); $('#createMenuButon').removeClass('active'); $('#updateMenuButton').removeClass('active'); @@ -537,13 +502,16 @@ function setup() { // bind external URLs (load it in default browser; not within Electron) $('*[data-toggle="external_target"]').click(function (e) { + // TODO: need to fix e.preventDefault(); - var shell = require('shell'); + const shell = require('shell'); shell.openExternal( $(this).prop('href') ); }); $("#projectPath").on('change', function () { - if( $(this).is(":focus")===true ){ return; } + if($(this).is(":focus") === true) { + return; + } $("#projectName").trigger('change'); // checks the project on the new location }); @@ -554,15 +522,15 @@ function setup() { $("#projectName").on('change', function () { if( $(this).is(":focus")===true ){ return; } - var project = {}; - // fix "non alpha numeric characters here" as we did in the old PG - var currentStr = $("#projectName").val() - var stripped = currentStr.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'_'); + const currentStr = $("#projectName").val() + const stripped = currentStr.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '_'); $("#projectName").val(stripped) - project['projectName'] = $("#projectName").val(); - project['projectPath'] = $("#projectPath").val(); + const project = { + projectName: $("#projectName").val(), + projectPath: $("#projectPath").val() + }; // check if project exists ipc.send('isOFProjectFolder', project); @@ -580,7 +548,7 @@ function setup() { }); $("#advancedOptions").checkbox(); - $("#advancedOptions").on("change", function() { + $("#advancedOptions").on("change", () => { if ($("#advancedOptions").filter(":checked").length > 0) { enableAdvancedMode(true); } else { @@ -608,13 +576,15 @@ function setup() { $("#ofPath").on("change", function(){ - var ofpath = $("#ofPath").val(); - defaultSettings['defaultOfPath'] = ofpath; + const ofpath = $("#ofPath").val(); + defaultSettings['defaultOfPath'] = ofpath; console.log("ofPath val " + ofpath); - if(isFirstTimeSierra){ - //var sys = require('sys') - var exec = require('child_process').exec; - function puts(error, stdout, stderr) { console.log(stdout + " " + stderr) } + if(isFirstTimeSierra) { + // TODO: need to fix (move to main process with ipc send sync?) + const exec = require('child_process').exec; + function puts(error, stdout, stderr) { + console.log(stdout + " " + stderr); + } exec("xattr -r -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); $("#projectPath").val(ofpath + "/apps/myApps").trigger('change'); @@ -639,18 +609,20 @@ function setup() { // updates ofPath when the field is manually changed $("#ofPath").on('blur', function(e){ - var ofpath = $(this).val(); + const ofpath = $(this).val(); setOFPath(ofpath); - if(isFirstTimeSierra){ - //var sys = require('sys') - var exec = require('child_process').exec; - function puts(error, stdout, stderr) { console.log(stdout + " " + stderr) } + if(isFirstTimeSierra) { + // TODO: need to fix (move to main process with ipc send sync?) + const exec = require('child_process').exec; + function puts(error, stdout, stderr) { + console.log(stdout + " " + stderr); + } exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); $("#projectPath").val(ofpath + "/apps/myApps").trigger('change'); //exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); } }).on('keypress', function(e){ - if(e.which==13){ + if(e.which == 13){ e.preventDefault(); $(this).blur(); } @@ -658,9 +630,9 @@ function setup() { /* Stuff for the console setting (removed from UI) - $("#consoleToggle").on("change", function () { - enableConsole( $(this).is(':checked') ); - });*/ + $("#consoleToggle").on("change", function () { + enableConsole( $(this).is(':checked') ); + });*/ // enable console? (hiddens setting) // if(defaultSettings['showConsole']){ $("body").addClass('enableConsole'); } // $("#showConsole").on('click', function(){ $('body').addClass('showConsole'); }); @@ -775,15 +747,14 @@ function blockDragEvent(e){ function acceptDraggedFiles( e ){ // handle file - var files = e.originalEvent.dataTransfer.files; - var types = e.originalEvent.dataTransfer.types; + const files = e.originalEvent.dataTransfer.files; + const types = e.originalEvent.dataTransfer.types; // this first check filters out most files - if(files && files.length == 1 && files[0].type==="" && types[0]=="Files"){ - + if(files && files.length == 1 && files[0].type == "" && types[0] == "Files"){ // this folder check is more relayable - var file = e.originalEvent.dataTransfer.items[0].webkitGetAsEntry(); - if( file.isDirectory ){ + const file = e.originalEvent.dataTransfer.items[0].webkitGetAsEntry(); + if(file.isDirectory) { return true; } } @@ -823,11 +794,11 @@ function onDropFile( e ){ $("updateMenuButton").triggerHandler('click'); } else { - var files = e.originalEvent.dataTransfer.files; + const files = e.originalEvent.dataTransfer.files; // import single project folder $("#projectName").val( files[0].name ); - var projectFullPath = files[0].path; - var projectParentPath = path.normalize(projectFullPath+'/..'); + const projectFullPath = files[0].path; + const projectParentPath = path.normalize(projectFullPath + '/..'); $("#projectPath").val( projectParentPath ).triggerHandler('change'); $("createMenuButon").triggerHandler('click'); @@ -840,8 +811,8 @@ function onDropFile( e ){ $("#dropZone").addClass("deny").removeClass("accept"); displayModal( - "The file you dropped is not compatible for importing.<br>"+ - "To import an OpenFrameworks project, drag & drop the whole project folder." + `The file you dropped is not compatible for importing.<br> + To import an OpenFrameworks project, drag & drop the whole project folder.` ); } return false; @@ -894,48 +865,48 @@ function saveDefaultSettings() { //---------------------------------------- function generate() { // let's get all the info: - var platformValueArray = getPlatformList(); + const platformValueArray = getPlatformList(); - var templatePicked = $("#templatesDropdown .active"); - var templateValueArray = []; - for (var i = 0; i < templatePicked.length; i++){ + const templatePicked = $("#templatesDropdown .active"); + const templateValueArray = []; + for (let i = 0; i < templatePicked.length; i++){ templateValueArray.push($(templatePicked[i]).attr("data-value")); } - var addonsPicked = $("#addonsDropdown .active"); - var addonValueArray = []; + const addonsPicked = $("#addonsDropdown .active"); + const addonValueArray = []; - for (var i = 0; i < addonsPicked.length; i++){ + for(let i = 0; i < addonsPicked.length; i++) { addonValueArray.push($(addonsPicked[i]).attr("data-value")); } // add any local addons - for (var i = 0; i < localAddons.length; i++){ + for(let i = 0; i < localAddons.length; i++) { addonValueArray.push(localAddons[i]); } // extra source locations - var srcExtraArr = ""; - for(var i = 0; i < numAddedSrcPaths; i++){ - var srcExtra = $("#sourceExtra-"+i).val(); + const srcExtraArr = []; + for(let i = 0; i < numAddedSrcPaths; i++) { + const srcExtra = $("#sourceExtra-" + i).val(); if( srcExtra != '' ){ - srcExtraArr += ", " + srcExtra; + srcExtraArr.push(srcExtra); } } - - - var lengthOfPlatforms = platformValueArray.length; - - var gen = {}; - - gen['projectName'] = $("#projectName").val(); - gen['projectPath'] = $("#projectPath").val(); - gen['sourcePath'] = srcExtraArr; - gen['platformList'] = platformValueArray; - gen['templateList'] = templateValueArray; - gen['addonList'] = addonValueArray; //$("#addonsDropdown").val(); - gen['ofPath'] = $("#ofPath").val(); - gen['verbose'] = bVerbose; + const srcExtraList = srcExtraArr.join(','); + + const lengthOfPlatforms = platformValueArray.length; + + const gen = { + projectName: $("#projectName").val(), + projectPath: $("#projectPath").val(), + sourcePath: srcExtraList, + platformList: platformValueArray, + templateList: templateValueArray, + addonList: addonValueArray, //$("#addonsDropdown").val(); + ofPath: $("#ofPath").val(), + verbose: bVerbose + }; // console.log(gen); if (gen['projectName'] === '') { @@ -947,39 +918,34 @@ function generate() { } else { ipc.send('generate', gen); } - } //---------------------------------------- function updateRecursive() { - // get the path and the platform list + // platformsDropdownMulti - - //platformsDropdownMulti - - - - var platformsPicked = $("#platformsDropdownMulti .active"); - var platformValueArray = []; - for (var i = 0; i < platformsPicked.length; i++){ + const platformsPicked = $("#platformsDropdownMulti .active"); + const platformValueArray = []; + for (let i = 0; i < platformsPicked.length; i++){ platformValueArray.push($(platformsPicked[i]).attr("data-value")); } - var templatePicked = $("#templatesDropdownMulti .active"); - var templateValueArray = []; - for (var i = 0; i < templatePicked.length; i++){ + const templatePicked = $("#templatesDropdownMulti .active"); + const templateValueArray = []; + for (let i = 0; i < templatePicked.length; i++){ templateValueArray.push($(templatePicked[i]).attr("data-value")); } - var gen = {}; - gen['updatePath'] = $("#updateMultiplePath").val(); - gen['platformList'] = platformValueArray; - gen['templateList'] = templateValueArray; - gen['updateRecursive'] = true; - gen['ofPath'] = $("#ofPath").val(); - gen['verbose'] = bVerbose; + const gen = { + updatePath: $("#updateMultiplePath").val(), + platformList: platformValueArray, + templateList: templateValueArray, + updateRecursive: true, + ofPath: $("#ofPath").val(), + verbose: bVerbose + }; if (gen['updatePath'] === '') { displayModal("Please set update path"); @@ -996,7 +962,6 @@ function switchGenerateMode(mode) { // switch to update mode if (mode == 'updateMode') { - $("#generateButton").hide(); $("#updateButton").show(); $("#missingAddonMessage").hide(); @@ -1009,7 +974,6 @@ function switchGenerateMode(mode) { clearAddonSelection(); clearExtraSourceList(); - } // [default]: switch to createMode (generate new projects) else { @@ -1028,17 +992,12 @@ function switchGenerateMode(mode) { $("#adons-refresh-icon").hide(); console.log('Switching GenerateMode to Create...'); - - - } } //---------------------------------------- function clearAddonSelection() { - $('#addonsDropdown').dropdown('clear'); - } //---------------------------------------- @@ -1050,7 +1009,6 @@ function enableAdvancedMode(isAdvanced) { $('#sourceExtraSection').show(); $('#templateSection').show(); $('#templateSectionMulti').show(); - } else { $('#platformsDropdown').addClass("disabled"); $('#platformsDropdown').dropdown('set exactly', defaultSettings['defaultPlatform']); @@ -1062,7 +1020,6 @@ function enableAdvancedMode(isAdvanced) { $("body").removeClass('advanced'); $('a.updateMultiMenuOption').hide(); - } defaultSettings['advancedMode'] = isAdvanced; saveDefaultSettings(); @@ -1085,9 +1042,9 @@ function enableConsole( showConsole ){ //---------------------------------------- function getPlatformList() { - var platformsPicked = $("#platformsDropdown .active"); - var platformValueArray = []; - for (var i = 0; i < platformsPicked.length; i++){ + const platformsPicked = $("#platformsDropdown .active"); + const platformValueArray = []; + for (let i = 0; i < platformsPicked.length; i++){ platformValueArray.push($(platformsPicked[i]).attr("data-value")); } return platformValueArray; @@ -1097,7 +1054,8 @@ function getPlatformList() { function displayModal(message) { $("#uiModal .content").html(message).find('*[data-toggle="external_target"]').click(function (e) { e.preventDefault(); - var shell = require('shell'); + // TODO: need to fix this + const shell = require('shell'); shell.openExternal( $(this).prop("href") ); }); @@ -1111,8 +1069,8 @@ function displayModal(message) { } //---------------------------------------- -function consoleMessage(message) { - message = (message + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + "<br>\n" + '$2'); // nl2br +function consoleMessage(orig_message) { + const message = (orig_message + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + "<br>\n" + '$2'); // nl2br $("#console").append($("<p>").html(message)); $("#consoleContainer").scrollTop($('#console').offset().top); // scrolls console to bottom } @@ -1129,11 +1087,11 @@ function browseOfPath() { } function browseProjectPath() { - var path = $("#projectPath").val(); - if (path === ''){ - path = $("#ofPath").val(); + const projectPath = $("#projectPath").val(); + if (projectPath === ''){ + projectPath = $("#ofPath").val(); } - ipc.send('pickProjectPath', path); // current path could go here + ipc.send('pickProjectPath', projectPath); // current path could go here } function clearExtraSourceList(){ @@ -1146,15 +1104,15 @@ function clearExtraSourceList(){ function checkAddSourcePath(index){ //if we don't have another field below us - add one - var nextFieldId = '#sourceExtra-'+(index+1); + const nextFieldId = '#sourceExtra-' + (index + 1); if( $(nextFieldId).length == 0 ){ - var nextIndex = index+1; - var extrafield = '<div class="field"> \ - <div class="ui icon input fluid"> \ - <input type="text" placeholder="Extra source path..." id="sourceExtra-'+nextIndex+'"> \ - <i class="search link icon" onclick="browseSourcePath('+nextIndex+')"></i> \ - </div> \ - </div>'; + const nextIndex = index + 1; + const extrafield = `<div class="field"> + <div class="ui icon input fluid"> + <input type="text" placeholder="Extra source path..." id="sourceExtra-${nextIndex}"> \ + <i class="search link icon" onclick="browseSourcePath(${nextIndex})"></i> \ + </div> + </div>`; $("#sourceExtraSection").append(extrafield); numAddedSrcPaths++; @@ -1162,17 +1120,17 @@ function checkAddSourcePath(index){ } function browseSourcePath(index) { - const path = $("#ofPath").val(); - ipc.send('pickSourcePath', path, index); // current path could go here + const ofPath = $("#ofPath").val(); + ipc.send('pickSourcePath', ofPath, index); // current path could go here } function browseImportProject() { - const path = $("#projectPath").val(); - if (path === ''){ - path = $("#ofPath").val(); + const projectPath = $("#projectPath").val(); + if (projectPath === ''){ + projectPath = $("#ofPath").val(); } - ipc.send('pickProjectImport', path); + ipc.send('pickProjectImport', projectPath); } function getUpdatePath() { @@ -1195,12 +1153,12 @@ function rescanAddons() { } function getRandomSketchName(){ - const path = $("#projectPath").val(); - if (path === '') { + const projectPath = $("#projectPath").val(); + if (projectPath === '') { $("#projectPath").oneTimeTooltip('Please specify a path first...'); } else { - const result = ipc.sendSync('getRandomSketchName', path ); + const result = ipc.sendSync('getRandomSketchName', projectPath); const { randomisedSketchName, generateMode From 525d6ba9ccf97b0e30acf41b9825ef364cefad23 Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 02:38:13 +0900 Subject: [PATCH 08/11] move to some features to main process from renderer process --- frontend/app.js | 35 ++++++++++------------------------- frontend/index.js | 14 +++++++++++++- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/frontend/app.js b/frontend/app.js index 532207ce..54946fc9 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -428,14 +428,14 @@ function setup() { $(document).ready(function() { try { - // TODO: need to fix? - const os = require('os'); - - const os_release = os.release(); - const os_major_pos = os_release.indexOf("."); + const { + release, + platform + } = ipc.sendSync('getOSInfo'); + const os_major_pos = release.indexOf("."); const os_major = os_release.slice(0, os_major_pos); + const isSierra = (platform === 'darwin' && parseInt(os_major) >= 16); - const isSierra = (os.platform() === 'darwin' && parseInt(os_major) >= 16); if(isSierra) { const ofpath = document.getElementById("ofPath").value; try { @@ -502,10 +502,8 @@ function setup() { // bind external URLs (load it in default browser; not within Electron) $('*[data-toggle="external_target"]').click(function (e) { - // TODO: need to fix e.preventDefault(); - const shell = require('shell'); - shell.openExternal( $(this).prop('href') ); + ipc.send('openExternal', $(this).prop('href')); }); $("#projectPath").on('change', function () { @@ -580,14 +578,8 @@ function setup() { defaultSettings['defaultOfPath'] = ofpath; console.log("ofPath val " + ofpath); if(isFirstTimeSierra) { - // TODO: need to fix (move to main process with ipc send sync?) - const exec = require('child_process').exec; - function puts(error, stdout, stderr) { - console.log(stdout + " " + stderr); - } - exec("xattr -r -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); + ipc.sendSync('firstTimeSierra', "xattr -r -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app"); $("#projectPath").val(ofpath + "/apps/myApps").trigger('change'); - } saveDefaultSettings(); @@ -612,12 +604,7 @@ function setup() { const ofpath = $(this).val(); setOFPath(ofpath); if(isFirstTimeSierra) { - // TODO: need to fix (move to main process with ipc send sync?) - const exec = require('child_process').exec; - function puts(error, stdout, stderr) { - console.log(stdout + " " + stderr); - } - exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); + ipc.sendSync("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app"); $("#projectPath").val(ofpath + "/apps/myApps").trigger('change'); //exec("xattr -d com.apple.quarantine " + ofpath + "/projectGenerator-osx/projectGenerator.app", puts); } @@ -1054,9 +1041,7 @@ function getPlatformList() { function displayModal(message) { $("#uiModal .content").html(message).find('*[data-toggle="external_target"]').click(function (e) { e.preventDefault(); - // TODO: need to fix this - const shell = require('shell'); - shell.openExternal( $(this).prop("href") ); + ipc.send('openExternal', $(this).prop("href") ); }); if (message.indexOf("Success!") > -1){ diff --git a/frontend/index.js b/frontend/index.js index bf30a1ef..3ff102c2 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -11,7 +11,8 @@ const { dialog, ipcMain, Menu, - crashReporter + crashReporter, + shell, } = require('electron'); @@ -1060,4 +1061,15 @@ ipcMain.on('fs', (event, [ key, args ]) => { console.log('fs', key, args); event.returnValue = fs[key](... args); return; +}); + +ipcMain.on('getOSInfo', (event) => { + event.returnValue = { + release: os.release(), + platform: os.platform(), + }; +}); + +ipcMain.on('openExternal', (event, [ url ]) => { + shell.openExternal(url); }); \ No newline at end of file From 52af21254c24fbbccf07f772deec777705c161f0 Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 02:40:59 +0900 Subject: [PATCH 09/11] update .gitignore only check on macos --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 03d557c9..ff69d2b0 100644 --- a/.gitignore +++ b/.gitignore @@ -91,4 +91,8 @@ Icon .AppleDesktop Network Trash Folder Temporary Items -.apdisk \ No newline at end of file +.apdisk + +commandLine/bin/projectGenerator* +frontend/app/projectGenerator* + From 4998f6cbef58a1c4b7d8b36c3117012c7bff0c24 Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 02:42:58 +0900 Subject: [PATCH 10/11] omg... forgot to commit --- frontend/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/index.js b/frontend/index.js index 3ff102c2..933263b3 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -1072,4 +1072,10 @@ ipcMain.on('getOSInfo', (event) => { ipcMain.on('openExternal', (event, [ url ]) => { shell.openExternal(url); +}); + +ipcMain.on('firstTimeSierra', (event, command) => { + exec(command, function callback(error, stdout, stderr){ + console.log(stdout + " " + stderr); + }); }); \ No newline at end of file From efa90085ada1c2a7c410ab7569af013347edaa30 Mon Sep 17 00:00:00 2001 From: 2bit <i@2bit.jp> Date: Thu, 27 Apr 2023 07:59:22 +0900 Subject: [PATCH 11/11] fix about extra source path --- frontend/app.js | 12 +++++++----- frontend/index.js | 14 ++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/frontend/app.js b/frontend/app.js index 54946fc9..6b8d28a1 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -86,7 +86,7 @@ ipc.on('setProjectPath', function(event, arg) { //------------------------------------------- ipc.on('setSourceExtraPath', function(event, [arg, index]) { // TODO: checkAddSourcePath(index); - $("#sourceExtra-"+index).val(arg); + $("#sourceExtra-" + index).val(arg); }); //------------------------------------------- @@ -244,7 +244,9 @@ ipc.on('setTemplates', function(event, arg) { ipc.on('enableTemplate', function (event, arg) { console.log('enableTemplate'); - let items = arg.bMulti === false ? $('#templatesDropdown .menu .item') : $('#templatesDropdownMulti .menu .item'); + const items = arg.bMulti === false + ? $('#templatesDropdown .menu .item') + : $('#templatesDropdownMulti .menu .item'); // enable all first for (let i = 0; i < items.length; i++) { @@ -252,7 +254,7 @@ ipc.on('enableTemplate', function (event, arg) { item.removeClass("disabled"); } - for (let template of arg.invalidTemplateList) { + for (const template of arg.invalidTemplateList) { for (let i = 0; i < items.length; i++) { let item = $(items[i]); if (item.attr('data-value') === template) { @@ -1090,7 +1092,7 @@ function clearExtraSourceList(){ function checkAddSourcePath(index){ //if we don't have another field below us - add one const nextFieldId = '#sourceExtra-' + (index + 1); - if( $(nextFieldId).length == 0 ){ + if( $(nextFieldId).length == 0 ) { const nextIndex = index + 1; const extrafield = `<div class="field"> <div class="ui icon input fluid"> @@ -1106,7 +1108,7 @@ function checkAddSourcePath(index){ function browseSourcePath(index) { const ofPath = $("#ofPath").val(); - ipc.send('pickSourcePath', ofPath, index); // current path could go here + ipc.send('pickSourcePath', [ ofPath, index ]); // current path could go here } diff --git a/frontend/index.js b/frontend/index.js index 933263b3..c3aeae18 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -483,11 +483,9 @@ function getDirectories(srcpath, acceptedPrefix) { // } ipcMain.on('isOFProjectFolder', function(event, project) { - let folder; - folder = path.join(project['projectPath'], project['projectName']); + const folder = path.join(project['projectPath'], project['projectName']); try { - const tmpFiles = fs.readdirSync(folder); if (!tmpFiles || tmpFiles.length <= 1) { return false; @@ -575,9 +573,9 @@ ipcMain.on('isOFProjectFolder', function(event, project) { console.log("Reading config pair. Macro: " + macro + " Value: " + value); - if(macro.startsWith('PROJECT_EXTERNAL_SOURCE_PATHS')){ - event.sender.send('setSourceExtraPath', value, extraSrcPathsCount); - extraSrcPathsCount++; + if(macro.startsWith('PROJECT_EXTERNAL_SOURCE_PATHS')) { + event.sender.send('setSourceExtraPath', [value, extraSrcPathsCount]); + extraSrcPathsCount++; } } }); @@ -938,12 +936,12 @@ ipcMain.on('pickProjectPath', function(event, arg) { }); }); -ipcMain.on('pickSourcePath', function(event, arg, index) { +ipcMain.on('pickSourcePath', function(event, [ ofPath, index ]) { dialog.showOpenDialog({ title: 'select extra source or include folder paths to add to project', properties: ['openDirectory'], filters: [], - defaultPath: arg + defaultPath: ofPath }).then(function(filenames) { if (filenames !== undefined && filenames.filePaths.length > 0) { event.sender.send('setSourceExtraPath', [filenames.filePaths[0], index]);