diff --git a/commandLine/src/main.cpp b/commandLine/src/main.cpp
index 07d67a7a..d604b0d6 100644
--- a/commandLine/src/main.cpp
+++ b/commandLine/src/main.cpp
@@ -1,6 +1,6 @@
#include "ofMain.h"
#include "optionparser.h"
-enum optionIndex { UNKNOWN, HELP, PLUS, RECURSIVE, LISTTEMPLATES, PLATFORMS, ADDONS, OFPATH, VERBOSE, TEMPLATE, DRYRUN };
+enum optionIndex { UNKNOWN, HELP, PLUS, RECURSIVE, LISTTEMPLATES, PLATFORMS, ADDONS, OFPATH, VERBOSE, TEMPLATE, DRYRUN, ADDONDEFINES };
constexpr option::Descriptor usage[] =
{
{UNKNOWN, 0, "", "",option::Arg::None, "Options:\n" },
@@ -13,6 +13,7 @@ constexpr option::Descriptor usage[] =
{VERBOSE, 0,"v","verbose",option::Arg::None, " --verbose, -v \trun verbose" },
{TEMPLATE, 0,"t","template",option::Arg::Optional, " --template, -t \tproject template" },
{DRYRUN, 0,"d","dryrun",option::Arg::None, " --dryrun, -d \tdry run, don't change files" },
+ {ADDONDEFINES, 0,"D","addondefines",option::Arg::None, " --addondefines, -D \tadd preprocessor defines for each addon" },
{0,0,0,0,0,0}
};
@@ -70,6 +71,7 @@ bool bRecursive; // do we recurse in update mode?
bool bHelpRequested; // did we request help?
bool bListTemplates; // did we request help?
bool bDryRun; // do dry run (useful for debugging recursive update)
+bool bAddonDefines; // add preprocessor defines for addons
@@ -236,7 +238,6 @@ bool isGoodOFPath(std::string path) {
}
-
void updateProject(std::string path, ofTargetPlatform target, bool bConsiderParameterAddons = true) {
// bConsiderParameterAddons = do we consider that the user could call update with a new set of addons
@@ -258,6 +259,8 @@ void updateProject(std::string path, ofTargetPlatform target, bool bConsiderPara
project->parseAddons();
}
+ if (bAddonDefines) project->addAddonDefineFlags();
+
if (!bDryRun) project->save();
}
@@ -340,6 +343,7 @@ int main(int argc, char* argv[]){
//------------------------------------------- pre-parse
bAddonsPassedIn = false;
bDryRun = false;
+ bAddonDefines = false;
busingEnvVar = false;
bVerbose = false;
mode = PG_MODE_NONE;
@@ -386,6 +390,10 @@ int main(int argc, char* argv[]){
bDryRun = true;
}
+ if (options[ADDONDEFINES].count() > 0){
+ bAddonDefines = true;
+ }
+
if (options[VERBOSE].count() > 0){
bVerbose = true;
}
diff --git a/frontend/app.js b/frontend/app.js
index edb2f304..482abccc 100644
--- a/frontend/app.js
+++ b/frontend/app.js
@@ -2,15 +2,15 @@
// 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 {ipcRenderer} = require('electron');
+const path = require('path');
+const fs = require('fs');
-var platforms;
-var templates;
+let platforms;
+let templates;
-// var platforms = {
+// let platforms = {
// "osx": "OS X (Xcode)",
// "vs": "Windows (Visual Studio)",
// "ios": "iOS (Xcode)",
@@ -20,38 +20,36 @@ 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 currentPath;
+let isOfPathGood = false;
+let isFirstTimeSierra = false;
+let bVerbose = false;
+let localAddons = [];
//-----------------------------------------------------------------------------------
// IPC
//-----------------------------------------------------------------------------------
//-------------------------------------------
-ipc.on('setOfPath', function(arg) {
+ipcRenderer.on('setOfPath', (sender, arg) => {
setOFPath(arg);
});
-ipc.on('cwd', function(arg) {
+ipcRenderer.on('cwd', (sender, arg) => {
console.log(arg);
});
-ipc.on('setUpdatePath', function(arg) {
- var elem = document.getElementById("updateMultiplePath");
+ipcRenderer.on('setUpdatePath', (sender, arg) => {
+ let elem = document.getElementById("updateMultiplePath");
elem.value = arg;
$("#updateMultiplePath").change();
});
-ipc.on('isUpdateMultiplePathOk', function(arg) {
+ipcRenderer.on('isUpdateMultiplePathOk', (sender, arg) => {
if (arg == true){
$("#updateMultipleWrongMessage").hide();
$("#updateMultipleButton").removeClass("disabled");
@@ -64,28 +62,30 @@ ipc.on('isUpdateMultiplePathOk', function(arg) {
});
//-------------------------------------------
-ipc.on('setup', function(arg) {
+ipcRenderer.on('setup', (sender, arg) => {
setup();
});
//-----------------------------------------
// this is called from main when defaults are loaded in:
-ipc.on('setDefaults', function(arg) {
-
+ipcRenderer.on('setDefaults', (sender, arg) => {
+ console.log('received defaults', arg);
defaultSettings = arg;
setOFPath(defaultSettings['defaultOfPath']);
enableAdvancedMode(defaultSettings['advancedMode']);
+ enableAddonFlags(defaultSettings['useAddonDefines']);
+
});
//-------------------------------------------
-ipc.on('setStartingProject', function(arg) {
+ipcRenderer.on('setStartingProject', (sender, arg) => {
$("#projectPath").val(arg['path']);
$("#projectName").val(arg['name']);
});
//-------------------------------------------
-ipc.on('setProjectPath', function(arg) {
+ipcRenderer.on('setProjectPath', (sender, arg) => {
$("#projectPath").val(arg);
//defaultSettings['lastUsedProjectPath'] = arg;
//saveDefaultSettings();
@@ -93,30 +93,30 @@ ipc.on('setProjectPath', function(arg) {
});
//-------------------------------------------
-ipc.on('setGenerateMode', function(arg) {
+ipcRenderer.on('setGenerateMode', (sender, arg) => {
+ console.log('[app.js] switching generate mode...', arg);
switchGenerateMode(arg);
});
//-------------------------------------------
-ipc.on('importProjectSettings', function(settings) {
+ipcRenderer.on('importProjectSettings', (sender, settings) => {
$("#projectPath").val(settings['projectPath']);
$("#projectName").val(settings['projectName']).trigger('change'); // change triggers addon scanning
});
//-------------------------------------------
-ipc.on('setAddons', function(arg) {
+ipcRenderer.on('setAddons', (sender, arg) => {
- console.log("got set addons");
- console.log(arg);
+ console.log("got set addons", arg);
addonsInstalled = arg;
- var select = document.getElementById("addonsList");
+ let select = document.getElementById("addonsList");
select.innerHTML = "";
if (arg !== null && arg.length > 0) {
// add:
- for (var i = 0; i < arg.length; i++) {
+ for (let i = 0; i < arg.length; i++) {
$('
Generate
diff --git a/frontend/index.js b/frontend/index.js
index 17207574..42f6073f 100644
--- a/frontend/index.js
+++ b/frontend/index.js
@@ -1,17 +1,22 @@
"use strict";
-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;
+const {app} = require('electron'); // Module to control application life.
+const {BrowserWindow} = require('electron'); // Module to create native browser window.
+const {dialog} = require('electron');
+const {ipcMain} = require('electron');
+const {Menu} = require('electron');
+
+// const {crashReporter} = require('electron'); // Requires server destination
+
+const fs = require('fs');
+const path = require('path');
+const moniker = require('moniker');
+const exec = require('child_process').exec;
+const os = require("os");
+
+const debugDevTools = false;
+let dialogIsOpen = false;
// Debugging: start the Electron PG from the terminal to see the messages from console.log()
// Example: /path/to/PG/Contents/MacOS/Electron /path/to/PG/Contents/Ressources/app
@@ -19,19 +24,175 @@ var exec = require('child_process').exec;
-//--------------------------------------------------------- load settings
-var obj;
+const getStartingProjectName = () => {
+ let ofRoot = obj["defaultOfPath"];
+ if (!ofRoot || ofRoot === "") ofRoot = guessOFRoot()
+ let defaultPathForProjects = path.join(ofRoot, obj["defaultRelativeProjectPath"]);
+ let foundOne = false;
+ let goodName = getGoodSketchName(defaultPathForProjects);
+ startingProject['path'] = defaultPathForProjects;
+ startingProject['name'] = goodName;
+}
-try {
- var settings = fs.readFileSync(path.resolve(__dirname, 'settings.json'));
- obj = JSON.parse(settings, 'utf8');
- console.log(obj);
-} catch (e) {
+const parseAddonsAndUpdateSelect = (arg) => {
+ console.log("in parseAddonsAndUpdateSelect " + arg);
+ //path = require('path').resolve(__dirname, defaultOfPath + "/addons");
+ addons = getDirectories(arg + "/addons","ofx");
+
+ if (addons){
+ if (addons.length > 0){
+ addons = addons.filter( function(addon) {
+ return addonsToSkip.indexOf(addon)==-1;
+ });
+ }
+ }
+
+ console.log("Reloading the addons folder, these were found:");
+ console.log(addons);
+ mainWindow.webContents.send('setAddons', addons);
+}
+
+const parsePlatformsAndUpdateSelect = (arg) => {
+ let folders = getDirectories(arg + "/scripts/templates");
+ console.log("Reloading the templates folder, these were found:");
+ console.log(folders);
+
+ let platformsWeHave = {};
+ let templatesWeHave = {};
+
+ if (folders === undefined || folders === null) {
+ //do something
+ } else {
+ // check all folder name under /scripts/templates
+ for (let id in folders) {
+ let key = folders[id];
+ if (platforms[key]) {
+ // this folder is for platform
+ console.log("Found platform, key " + key + " has value " + platforms[key]);
+ platformsWeHave[key] = platforms[key];
+ }else{
+ // this folder is for template
+ if(templates[key]){
+ console.log("Found template folder, key " + key + " has value " + templates[key]);
+ templatesWeHave[key] = templates[key];
+ }else{
+ // Unofficial folder name, maybe user's custom template?
+ // We use folder name for both of key and value
+ console.log("Found unofficial folder, key " + key + " has value " + key);
+ templatesWeHave[key] = key;
+ }
+ }
+ }
+ }
+ // saninty check...
+ // for(let key in platformsWeHave){
+ // console.log("key " + key + " has value " + platformsWeHave[key]);
+ // }
+ mainWindow.webContents.send('setPlatforms', platformsWeHave);
+
+ mainWindow.webContents.send('setTemplates', templatesWeHave);
+
+}
+
+const getGoodSketchName = (arg) => {
+
+ let currentProjectPath = arg;
+ let foundOne = false;
+ let goodName = "mySketch";
+
+ if (bUseMoniker){
+
+ let projectNames = new moniker.Dictionary();
+ let tmpPath = require('path');
+ projectNames.read( tmpPath.join(__dirname, 'static', 'data', 'sketchAdjectives.txt'));
+ goodName = "mySketch";
+
+ while (foundOne === false) {
+ if (fs.existsSync(tmpPath.join(currentProjectPath, goodName))) {
+ console.log("«" + goodName + "» already exists, generating a new name...");
+ let adjective = projectNames.choose();
+ goodName = "my" + adjective.charAt(0).toUpperCase() + adjective.slice(1) + "Sketch";
+ } else {
+ foundOne = true;
+ }
+ }
+
+ } else {
+
+ let date = new Date();
+ let formattedDate = formatDate(date);
+ goodName = "sketch_" + formattedDate;
+ let count = 1;
+
+ while (foundOne === false) {
+ if (fs.existsSync(path.join(currentProjectPath, goodName))) {
+ console.log("«" + goodName + "» already exists, generating a new name...");
+ goodName = "sketch_" + formattedDate + toLetters(count);
+ count++;
+ } else {
+ foundOne = true;
+ }
+ }
+ }
+
+ return goodName;
+
+}
+
+
+const getDirectories = (srcpath, acceptedPrefix) => {
+
+ // because this is called at a different time, fs and path
+ // seemed to be "bad" for some reason...
+ // that's why I am making temp ones here.
+ // console.log(path);
+
+ let fsTemp = require('fs');
+ let pathTemp = require('path');
+
+ try {
- // automatic platform detection
- var os = require("os");
- var myPlatform = "Unknown";
+ return fsTemp.readdirSync(srcpath).filter( (file) => {
+
+ //console.log(srcpath);
+ //console.log(file);
+ try{
+ let joinedPath = pathTemp.join(srcpath, file);
+ if ((acceptedPrefix==null || file.substring(0,acceptedPrefix.length)==acceptedPrefix) && joinedPath !== null) {
+ // only accept folders (potential addons)
+ return fsTemp.statSync(joinedPath).isDirectory();
+ }
+ }catch(e){}
+ });
+ } catch (e) {
+ console.log(e);
+ return null;
+ // if (e.code === 'ENOENT') {
+ // console.log("This doesn't seem to be a valid addons folder:\n" + srcpath);
+ // mainWindow.webContents.send('sendUIMessage', "No addons were found in " + srcpath + ".\nIs the OF path correct?");
+ // } else {
+ // throw e;
+ // }
+ }
+}
+
+let guessOFRoot = () => {
+ console.log('[index.js] guessing of root...');
+ const githubOFRoot = path.resolve(__dirname, '../../../');
+ const releaseOFRoot = path.resolve(__dirname, '../../');
+
+ console.log('Which root am I likely to be in?', path.basename(githubOFRoot), path.basename(releaseOFRoot) );
+
+ let ofRoot = githubOFRoot;
+ if (path.basename(releaseOFRoot).indexOf("of_v") !== -1) ofRoot = releaseOFRoot;
+ return ofRoot;
+};
+
+let getPlatform = () => {
+
+ console.log('[index.js] getting platform...');
+ let myPlatform = "Unknown";
if (/^win/.test(process.platform)) {
myPlatform = 'vs';
}
@@ -52,19 +213,34 @@ try {
myPlatform = 'linux64';
}
}
+ return myPlatform;
+};
+
+//--------------------------------------------------------- load settings
+
+let obj;
+
+// load settings.json
+
+try {
+ let settings = fs.readFileSync(path.resolve(__dirname, 'settings.json'));
+ obj = JSON.parse(settings, 'utf8');
+} catch (e) {
+ console.error("could not load settings.json");
obj = {
- "defaultOfPath": "",
- "advancedMode": false,
- "defaultPlatform": myPlatform,
- "showConsole": false,
- "showDeveloperTools": false,
- "defaultRelativeProjectPath": "apps/myApps",
- "useDictionaryNameGenerator": false
+ defaultOfPath : guessOFRoot(),
+ defaultPlatform : getPlatform(),
+ advancedMode : false,
+ showConsole : false,
+ showDeveloperTools : false,
+ defaultRelativeProjectPath : "apps/myApps",
+ useDictionaryNameGenerator : false,
+ useAddonDefines : false
};
}
-var hostplatform = "";
+let hostplatform = "";
if (/^win/.test(process.platform)) {
hostplatform = 'windows';
} else if (process.platform === "darwin") {
@@ -75,12 +251,12 @@ if (/^win/.test(process.platform)) {
console.log("detected platform: " + hostplatform + " in " + __dirname);
-var defaultOfPath = obj["defaultOfPath"];
-var addons;
+let defaultOfPath = obj["defaultOfPath"];
+let addons;
// hide some addons, per https://github.com/openframeworks/projectGenerator/issues/62
-var addonsToSkip = [
+let addonsToSkip = [
"ofxiOS",
"ofxMultiTouch",
"ofxEmscripten",
@@ -88,7 +264,7 @@ var addonsToSkip = [
"ofxAndroid"
]
-var platforms = {
+let platforms = {
"osx": "OS X (Xcode)",
"vs": "Windows (Visual Studio 2017)",
"ios": "iOS (Xcode)",
@@ -97,9 +273,9 @@ var platforms = {
"linuxarmv6l": "Linux ARMv6 (Makefiles)",
"linuxarmv7l": "Linux ARMv7 (Makefiles)"
};
-var bUseMoniker = obj["useDictionaryNameGenerator"];
+let bUseMoniker = obj["useDictionaryNameGenerator"];
-var templates = {
+let templates = {
"emscripten": "Emscripten",
"gitignore": "Git Ignore",
"gles2": "Open GL ES 2",
@@ -140,22 +316,22 @@ if (!path.isAbsolute(defaultOfPath)) {
}
// now, let's look for a folder called mySketch, and keep counting until we find one that doesn't exist
-var startingProject = {};
+let startingProject = {};
startingProject['name'] = "";
startingProject['path'] = "";
getStartingProjectName();
//---------------------------------------------------------
// Report crashes to our server.
-require('crash-reporter').start();
+// 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() {
+app.on('window-all-closed', () => {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform != 'darwin') {
@@ -167,11 +343,11 @@ app.on('window-all-closed', function() {
function formatDate(d){
//get the month
- var month = d.getMonth();
+ let month = d.getMonth();
//get the day
- var day = d.getDate();
+ let day = d.getDate();
//get the year
- var year = d.getFullYear();
+ let 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
@@ -195,7 +371,7 @@ function formatDate(d){
// wraps over to bb no aa, why?
function toLetters(num) {
- var mod = num % 26,
+ let mod = num % 26,
pow = num / 26 | 0,
out = mod ? String.fromCharCode(96 + (num % 26)) : (--pow, 'z');
return pow ? toLetters(pow) + out : out;
@@ -206,36 +382,40 @@ function toLetters(num) {
//-------------------------------------------------------- window
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
-app.on('ready', function() {
+app.on('ready', () => {
// Create the browser window.
+
mainWindow = new BrowserWindow({
width: 500,
height: 600,
resizable: false,
- frame: false
+ frame: false,
+ webPreferences: {
+ nodeIntegration: true
+ }
});
// 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.loadURL('file://' + __dirname + '/index.html');
// Open the devtools.
- if (obj["showDeveloperTools"]) {
+ if (obj["showDeveloperTools"] || debugDevTools) {
mainWindow.openDevTools();
}
//when the window is loaded send the defaults
- mainWindow.webContents.on('did-finish-load', function() {
+ mainWindow.webContents.on('did-finish-load', () => {
//parseAddonsAndUpdateSelect();
mainWindow.webContents.send('cwd', app.getAppPath());
mainWindow.webContents.send('cwd', __dirname);
mainWindow.webContents.send('cwd', process.resourcesPath);
mainWindow.webContents.send('setStartingProject', startingProject);
+ mainWindow.webContents.send('checkOfPathAfterSetup', '');
mainWindow.webContents.send('setDefaults', obj);
mainWindow.webContents.send('setup', '');
- mainWindow.webContents.send('checkOfPathAfterSetup', '');
});
@@ -243,7 +423,7 @@ app.on('ready', function() {
//console.log();
// Emitted when the window is closed.
- mainWindow.on('closed', function() {
+ mainWindow.on('closed', () => {
mainWindow = null;
process.exit();
@@ -252,12 +432,12 @@ app.on('ready', function() {
// when you should delete the corresponding element.
});
- var menuTmpl = [{
+ let menuTmpl = [{
label: 'Atom Shell',
submenu: [{
label: 'Quit',
accelerator: 'Command+Q',
- click: function() {
+ click: () => {
mainWindow.close();
}
}]
@@ -266,13 +446,13 @@ app.on('ready', function() {
submenu: [{
label: 'Reload',
accelerator: 'Command+R',
- click: function() {
+ click: () => {
mainWindow.reload();
}
}, {
label: 'Toggle DevTools',
accelerator: 'Alt+Command+I',
- click: function() {
+ click: () => {
mainWindow.toggleDevTools();
}
}]
@@ -306,169 +486,18 @@ app.on('ready', function() {
selector: 'selectAll:'
}, ]
}];
- var menuV = menu.buildFromTemplate(menuTmpl);
- menu.setApplicationMenu(menuV);
+ let menuV = Menu.buildFromTemplate(menuTmpl);
+ Menu.setApplicationMenu(menuV);
});
-function getStartingProjectName() {
-
- var defaultPathForProjects = path.join(obj["defaultOfPath"], obj["defaultRelativeProjectPath"]);
- var foundOne = false;
- var goodName = getGoodSketchName(defaultPathForProjects);
- startingProject['path'] = defaultPathForProjects;
- startingProject['name'] = goodName;
-}
-
-function parseAddonsAndUpdateSelect(arg) {
- console.log("in parseAddonsAndUpdateSelect " + arg);
- //path = require('path').resolve(__dirname, defaultOfPath + "/addons");
- addons = getDirectories(arg + "/addons","ofx");
-
- if (addons){
- if (addons.length > 0){
- addons = addons.filter( function(addon) {
- return addonsToSkip.indexOf(addon)==-1;
- });
- }
- }
-
- console.log("Reloading the addons folder, these were found:");
- console.log(addons);
- mainWindow.webContents.send('setAddons', addons);
-}
-
-function parsePlatformsAndUpdateSelect(arg) {
- var folders = getDirectories(arg + "/scripts/templates");
- console.log("Reloading the templates folder, these were found:");
- console.log(folders);
-
- var platformsWeHave = {};
- var 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];
- if (platforms[key]) {
- // this folder is for platform
- console.log("Found platform, key " + key + " has value " + platforms[key]);
- platformsWeHave[key] = platforms[key];
- }else{
- // this folder is for template
- if(templates[key]){
- console.log("Found template folder, key " + key + " has value " + templates[key]);
- templatesWeHave[key] = templates[key];
- }else{
- // Unofficial folder name, maybe user's custom template?
- // We use folder name for both of key and value
- console.log("Found unofficial folder, key " + key + " has value " + key);
- templatesWeHave[key] = key;
- }
- }
- }
- }
- // saninty check...
- // for(var key in platformsWeHave){
- // console.log("key " + key + " has value " + platformsWeHave[key]);
- // }
- mainWindow.webContents.send('setPlatforms', platformsWeHave);
-
- mainWindow.webContents.send('setTemplates', templatesWeHave);
-
-}
-
-function getGoodSketchName(arg){
-
- var currentProjectPath = arg;
- var foundOne = false;
- var goodName = "mySketch";
-
- if (bUseMoniker){
-
- var projectNames = new moniker.Dictionary();
- var tmpPath = require('path');
- projectNames.read( tmpPath.join(__dirname, 'static', 'data', 'sketchAdjectives.txt'));
- goodName = "mySketch";
-
- while (foundOne === false) {
- if (fs.existsSync(tmpPath.join(currentProjectPath, goodName))) {
- console.log("«" + goodName + "» already exists, generating a new name...");
- var adjective = projectNames.choose();
- goodName = "my" + adjective.charAt(0).toUpperCase() + adjective.slice(1) + "Sketch";
- } else {
- foundOne = true;
- }
- }
-
- } else {
-
- var date = new Date();
- var formattedDate = formatDate(date);
- goodName = "sketch_" + formattedDate;
- var count = 1;
-
- while (foundOne === false) {
- if (fs.existsSync(path.join(currentProjectPath, goodName))) {
- console.log("«" + goodName + "» already exists, generating a new name...");
- goodName = "sketch_" + formattedDate + toLetters(count);
- count++;
- } else {
- foundOne = true;
- }
- }
- }
-
- return goodName;
-
-}
-
-
-function getDirectories(srcpath, acceptedPrefix) {
-
- // because this is called at a different time, fs and path
- // seemed to be "bad" for some reason...
- // 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) {
-
- //console.log(srcpath);
- //console.log(file);
- try{
- var joinedPath = pathTemp.join(srcpath, file);
- if ((acceptedPrefix==null || file.substring(0,acceptedPrefix.length)==acceptedPrefix) && joinedPath !== null) {
- // only accept folders (potential addons)
- return fsTemp.statSync(joinedPath).isDirectory();
- }
- }catch(e){}
- });
- } catch (e) {
- console.log(e);
- return null;
- // if (e.code === 'ENOENT') {
- // console.log("This doesn't seem to be a valid addons folder:\n" + srcpath);
- // mainWindow.webContents.send('sendUIMessage', "No addons were found in " + srcpath + ".\nIs the OF path correct?");
- // } else {
- // throw e;
- // }
- }
-}
-
// function getDirs(srcpath, cb) {
// fs.readdir(srcpath, function (err, files) {
// if(err) {
// console.error(err);
// return cb([]);
// }
-// var iterator = function (file, cb) {
+// let iterator = function (file, cb) {
// fs.stat(path.join(srcpath, file), function (err, stats) {
// if(err) {
// console.error(err);
@@ -481,23 +510,23 @@ function getDirectories(srcpath, acceptedPrefix) {
// });
// }
-ipc.on('isOFProjectFolder', function(event, project) {
- var fsTemp = require('fs');
- var pathTemp = require('path');
- var folder;
+ipcMain.on('isOFProjectFolder', (event, project) => {
+ let fsTemp = require('fs');
+ let pathTemp = require('path');
+ let folder;
folder = pathTemp.join(project['projectPath'], project['projectName']);
try {
- var tmpFiles = fsTemp.readdirSync(folder);
+ let tmpFiles = fsTemp.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;
- tmpFiles.forEach(function(el, i) {
+ let foundSrcFolder = false;
+ let foundAddons = false;
+ tmpFiles.forEach( (el, i) => {
if (el == 'src') {
foundSrcFolder = true;
}
@@ -510,9 +539,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 = fsTemp.readFileSync(pathTemp.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
@@ -522,9 +551,9 @@ ipc.on('isOFProjectFolder', function(event, project) {
});
// remove comments
- projectAddons.forEach(function(element, index) {
- this[index] = this[index].split('#')[0];
- }, projectAddons);
+ projectAddons.forEach( (element, index) => {
+ projectAddons[index] = projectAddons[index].split('#')[0];
+ }, projectAddons);
// console.log('addons', projectAddons);
@@ -555,17 +584,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;
@@ -632,27 +661,33 @@ 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) {
+ let 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) {
+ipcMain.on('update', function(event, arg) {
- var update = arg;
- var exec = require('child_process').exec;
- var pathTemp = require('path');
+ console.log('[index.js] updating...', arg);
+ let update = arg;
+ let exec = require('child_process').exec;
+ let pathTemp = require('path');
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;
+ let definesString = "";
+
+ if (update['addondefines'] !== null) {
+ definesString = "-D";
+ }
if (update['updatePath'] !== null) {
updatePath = update['updatePath'];
@@ -680,7 +715,7 @@ ipc.on('update', function(event, arg) {
verboseString = "-v";
}
- var pgApp = pathTemp.normalize(pathTemp.join(pathTemp.join(__dirname, "app"), "projectGenerator"));
+ let pgApp = pathTemp.normalize(pathTemp.join(pathTemp.join(__dirname, "app"), "projectGenerator"));
if( hostplatform == "linux" || hostplatform == "linux64" ){
pgApp = pathTemp.join(rootPath, "apps/projectGenerator/commandLine/bin/projectGenerator");
@@ -692,7 +727,10 @@ ipc.on('update', function(event, arg) {
pgApp = "\"" + pgApp + "\"";
}
- var wholeString = pgApp + " " + recursiveString + " " + verboseString + " " + pathString + " " + platformString + " " + templateString + " " + updatePath;
+
+ let wholeString = pgApp + " " + recursiveString + " " + verboseString + " " + pathString + " " + platformString + " " + templateString + " " + definesString + " " + updatePath;
+
+ console.log('[index.js] sending to pg via update... ', wholeString);
exec(wholeString, {maxBuffer : Infinity}, function callback(error, stdout, stderr) {
@@ -717,29 +755,33 @@ ipc.on('update', function(event, arg) {
}
});
- console.log(wholeString);
-
//console.log(__dirname);
});
-ipc.on('generate', function(event, arg) {
+ipcMain.on('generate', function(event, arg) {
+ console.log('[index.js] generating...', arg);
- var generate = arg;
+ let generate = arg;
- var exec = require('child_process').exec;
+ let exec = require('child_process').exec;
- var pathTemp = require('path');
+ let pathTemp = require('path');
- var projectString = "";
- var pathString = "";
- var addonString = "";
- var platformString = "";
- var templateString = "";
- var verboseString = "";
- var rootPath = defaultOfPath;
+ let projectString = "";
+ let pathString = "";
+ let addonString = "";
+ let platformString = "";
+ let templateString = "";
+ let verboseString = "";
+ let rootPath = defaultOfPath;
+ let definesString = "";
+
+ if (generate['addondefines'] !== null) {
+ definesString = "-D";
+ }
if (generate['platformList'] !== null) {
@@ -771,7 +813,7 @@ ipc.on('generate', function(event, arg) {
projectString = "\"" + pathTemp.join(generate['projectPath'], generate['projectName']) + "\"";
}
- var pgApp="";
+ let pgApp="";
if(hostplatform == "linux" || hostplatform == "linux64"){
pgApp = pathTemp.join(rootPath, "apps/projectGenerator/commandLine/bin/projectGenerator");
//pgApp = "projectGenerator";
@@ -785,14 +827,16 @@ ipc.on('generate', function(event, arg) {
pgApp = pgApp = "\"" + pgApp + "\"";
}
- var wholeString = pgApp + " " + verboseString + " " + pathString + " " + addonString + " " + platformString + " " + templateString + " " + projectString;
+ let wholeString = pgApp + " " + verboseString + " " + pathString + " " + addonString + " " + platformString + " " + templateString + " " + definesString + " " + projectString;
+
+ console.log('[index.js] sending to pg via generate... ', wholeString);
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++) {
+ let wasError = false;
+ let text = stdout; //Big text with many line breaks
+ let 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;
@@ -803,7 +847,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']);
+ let fullPath = pathTemp.join(generate['projectPath'], generate['projectName']);
if (error === null && wasError === false) {
event.sender.send('consoleMessage', "
" + wholeString + "" + stdout);
event.sender.send('sendUIMessage',
@@ -843,49 +887,65 @@ ipc.on('generate', function(event, arg) {
//console.log(arg);
});
-ipc.on('pickOfPath', function(event, arg) {
-
- path = dialog.showOpenDialog({
+ipcMain.on('pickOfPath', function(event, arg) {
+ console.log('pick OF Path');
+ 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( response => {
+
+ const filename = response.filePaths[0];
+ if (filename) {
+ defaultOfPath = filename;
+ event.sender.send('setOfPath', filename);
}
+ }).catch(err => {
+ console.error('pickUpdatePath', err);
});
});
-ipc.on('pickUpdatePath', function(event, arg) {
- path = dialog.showOpenDialog({
+ipcMain.on('pickUpdatePath', function(event, arg) {
+ console.log('update OF Path');
+
+
+ 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( response => {
+
+ const filename = response.filePaths[0];
+ if (filename) {
+ event.sender.send('setUpdatePath', filename);
}
+ }).catch(err => {
+ console.error('pickUpdatePath', err);
});
});
-ipc.on('pickProjectPath', function(event, arg) {
- path = dialog.showOpenDialog({
+ipcMain.on('pickProjectPath', function(event, arg) {
+ console.log('pick Project Path');
+
+ 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( response => {
+
+ const filename = response.filePaths[0];
+ if (filename) {
+ event.sender.send('setProjectPath', filename);
}
- });
+ }).catch(err => {
+ console.error('pickProjectPath', err);
+ })
});
-ipc.on('checkMultiUpdatePath', function(event, arg) {
+ipcMain.on('checkMultiUpdatePath', function(event, arg) {
if (fs.existsSync(arg)) {
@@ -896,37 +956,40 @@ ipc.on('checkMultiUpdatePath', function(event, arg) {
});
-var dialogIsOpen = false;
-ipc.on('pickProjectImport', function(event, arg) {
+ipcMain.on('pickProjectImport', function(event, arg) {
+
if(dialogIsOpen){
return;
}
dialogIsOpen = true;
- path = dialog.showOpenDialog({
+ let currentPath = dialog.showOpenDialog(mainWindow, {
title: 'Select the folder of your project, typically apps/myApps/myGeniusApp',
properties: ['openDirectory'],
filters: [],
defaultPath: arg
- }, function(filenames) {
- if (filenames != null) {
+ }).then( response => {
+ const filename = response.filePaths[0];
+ if (filename) {
// gather project information
- var tmpPath = require('path');
- var projectSettings = {};
- projectSettings['projectName'] = tmpPath.basename(filenames[0]);
- projectSettings['projectPath'] = tmpPath.dirname(filenames[0]);
+ let projectSettings = {};
+ projectSettings['projectName'] = path.basename(filename);
+ projectSettings['projectPath'] = path.dirname(filename);
event.sender.send('importProjectSettings', projectSettings);
}
dialogIsOpen = false;
+ }).catch( err => {
+ console.error('pickProjectImport', err);
+ dialogIsOpen = false;
});
});
-ipc.on('launchProjectinIDE', function(event, arg) {
+ipcMain.on('launchProjectinIDE', function(event, arg) {
- var pathTemp = require('path');
- var fsTemp = require('fs');
- var fullPath = pathTemp.join(arg['projectPath'], arg['projectName']);
+ let pathTemp = require('path');
+ let fsTemp = require('fs');
+ let fullPath = pathTemp.join(arg['projectPath'], arg['projectName']);
if( fsTemp.statSync(fullPath).isDirectory() == false ){
// project doesn't exist
@@ -937,7 +1000,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 = pathTemp.join(fullPath, arg['projectName'] + '.xcodeproj');
console.log( osxPath );
osxPath = "\"" + osxPath + "\"";
@@ -947,7 +1010,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 = pathTemp.join(fullPath, arg['projectName'] + '.qbs');
linuxPath = linuxPath.replace(/ /g, '\\ ');
console.log( linuxPath );
exec('xdg-open ' + linuxPath, function callback(error, stdout, stderr){
@@ -965,7 +1028,7 @@ ipc.on('launchProjectinIDE', function(event, arg) {
}
});
} else if( hostplatform == 'windows'){
- var windowsPath = pathTemp.join(fullPath, arg['projectName'] + '.sln');
+ let windowsPath = pathTemp.join(fullPath, arg['projectName'] + '.sln');
console.log( windowsPath );
windowsPath = "\"" + windowsPath + "\"";
exec('start ' + "\"\"" + " " + windowsPath, function callback(error, stdout, stderr){
@@ -974,6 +1037,6 @@ ipc.on('launchProjectinIDE', function(event, arg) {
}
});
-ipc.on('quit', function(event, arg) {
+ipcMain.on('quit', function(event, arg) {
app.quit();
});
diff --git a/frontend/npm-shrinkwrap.json b/frontend/npm-shrinkwrap.json
deleted file mode 100644
index 5574e10c..00000000
--- a/frontend/npm-shrinkwrap.json
+++ /dev/null
@@ -1,1836 +0,0 @@
-{
- "name": "projectGenerator",
- "version": "0.0.1",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "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
- },
- "ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
- "asar": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/asar/-/asar-0.8.3.tgz",
- "integrity": "sha1-wuA/kFRRbbv1Z1noVOnOjRqdOdM=",
- "dev": true,
- "requires": {
- "chromium-pickle-js": "0.1.0",
- "commander": "2.3.0",
- "cuint": "0.1.5",
- "glob": "^5.0.5",
- "minimatch": "2.0.4",
- "mkdirp": "^0.5.0",
- "mksnapshot": "0.1.0"
- },
- "dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.4.tgz",
- "integrity": "sha1-g76hFYA+egl6eAIkJyh+23Yvr+0=",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.0.0"
- }
- }
- }
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
- "async": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "base64-js": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
- "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=",
- "dev": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
- "dev": true,
- "requires": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- }
- },
- "bl": {
- "version": "0.9.5",
- "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz",
- "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=",
- "dev": true,
- "requires": {
- "readable-stream": "~1.0.26"
- },
- "dependencies": {
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- }
- }
- },
- "bluebird": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
- "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=",
- "dev": true
- },
- "boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
- "dev": true,
- "requires": {
- "hoek": "2.x.x"
- }
- },
- "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,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
- "dev": true
- },
- "buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
- "dev": true
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
- "chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
- "dev": true,
- "requires": {
- "traverse": ">=0.3.0 <0.4"
- }
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "chromium-pickle-js": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz",
- "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
- "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "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
- },
- "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,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "dev": true,
- "requires": {
- "boom": "2.x.x"
- }
- },
- "ctype": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
- "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
- "dev": true
- },
- "cuint": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.1.5.tgz",
- "integrity": "sha1-uEixhGbz8YD5bR624HzLfs8Sai4=",
- "dev": true
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "decompress-zip": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.1.0.tgz",
- "integrity": "sha1-vOYMEWZPLWYPykvPY0r23l1sFMc=",
- "dev": true,
- "requires": {
- "binary": "^0.3.0",
- "graceful-fs": "^3.0.0",
- "mkpath": "^0.1.0",
- "nopt": "^3.0.1",
- "q": "^1.1.2",
- "readable-stream": "^1.1.8",
- "touch": "0.0.3"
- },
- "dependencies": {
- "graceful-fs": {
- "version": "3.0.12",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
- "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
- "dev": true,
- "requires": {
- "natives": "^1.1.3"
- }
- }
- }
- },
- "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==",
- "dev": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "electron-debug": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-0.1.1.tgz",
- "integrity": "sha1-nkexjSZIeUQOdyV9khzS+eCRE70="
- },
- "electron-download": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-1.4.1.tgz",
- "integrity": "sha1-T5G6vypVbxReP7hT32qWwoJeGM0=",
- "dev": true,
- "requires": {
- "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-packager": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-5.2.0.tgz",
- "integrity": "sha1-4baqaDtlj707+cDMHdrNlw+LCVg=",
- "dev": true,
- "requires": {
- "asar": "^0.8.2",
- "electron-download": "^1.0.0",
- "extract-zip": "^1.0.3",
- "minimist": "^1.1.1",
- "mkdirp": "^0.5.0",
- "mv": "^2.0.3",
- "ncp": "^2.0.0",
- "plist": "^1.1.0",
- "rcedit": "^0.3.0",
- "rimraf": "^2.3.2",
- "run-series": "^1.1.1"
- }
- },
- "electron-prebuilt": {
- "version": "0.30.8",
- "resolved": "https://registry.npmjs.org/electron-prebuilt/-/electron-prebuilt-0.30.8.tgz",
- "integrity": "sha1-d84yesFYAYRc7TFq4qvNxuWxvxs=",
- "dev": true,
- "requires": {
- "electron-download": "^1.0.0",
- "extract-zip": "^1.0.3"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extract-zip": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
- "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
- "dev": true,
- "requires": {
- "concat-stream": "1.6.2",
- "debug": "2.6.9",
- "mkdirp": "0.5.1",
- "yauzl": "2.4.1"
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
- "dev": true
- },
- "fd-slicer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
- "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
- "dev": true,
- "requires": {
- "pend": "~1.2.0"
- }
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
- "foreachasync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz",
- "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "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==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fs-extra": {
- "version": "0.18.2",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.18.2.tgz",
- "integrity": "sha1-rwXKcCsLbfp96AOh96tHnsXCFSU=",
- "dev": true,
- "requires": {
- "graceful-fs": "^3.0.5",
- "jsonfile": "^2.0.0",
- "rimraf": "^2.2.8"
- },
- "dependencies": {
- "graceful-fs": {
- "version": "3.0.12",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
- "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
- "dev": true,
- "requires": {
- "natives": "^1.1.3"
- }
- }
- }
- },
- "generate-function": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
- "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
- "dev": true,
- "requires": {
- "is-property": "^1.0.2"
- }
- },
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
- "dev": true,
- "requires": {
- "is-property": "^1.0.0"
- }
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
- "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
- "dev": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "dev": true,
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "hawk": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
- "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=",
- "dev": true,
- "requires": {
- "boom": "2.x.x",
- "cryptiles": "2.x.x",
- "hoek": "2.x.x",
- "sntp": "1.x.x"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
- "dev": true
- },
- "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
- },
- "hosted-git-info": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
- "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
- "dev": true
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-finite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-my-ip-valid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
- "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
- "dev": true
- },
- "is-my-json-valid": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz",
- "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==",
- "dev": true,
- "requires": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "is-my-ip-valid": "^1.0.0",
- "jsonpointer": "^4.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- }
- }
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
- "dev": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "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==",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "jsonpointer": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
- "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "mime-db": {
- "version": "1.40.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
- "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.24",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
- "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
- "dev": true,
- "requires": {
- "mime-db": "1.40.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- }
- }
- },
- "mkpath": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
- "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
- "dev": true
- },
- "mksnapshot": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.1.0.tgz",
- "integrity": "sha1-99CavKgGrYw3gNpwG7GHeNfOaaw=",
- "dev": true,
- "requires": {
- "decompress-zip": "0.1.0",
- "fs-extra": "0.18.2",
- "request": "2.55.0"
- },
- "dependencies": {
- "asn1": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
- "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=",
- "dev": true
- },
- "assert-plus": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
- "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
- "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=",
- "dev": true
- },
- "caseless": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz",
- "integrity": "sha1-t7Zc5r8UE4hlOc/VM/CzDv+pz4g=",
- "dev": true
- },
- "combined-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
- "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
- "dev": true,
- "requires": {
- "delayed-stream": "0.0.5"
- }
- },
- "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
- },
- "delayed-stream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
- "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
- "dev": true
- },
- "form-data": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz",
- "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=",
- "dev": true,
- "requires": {
- "async": "~0.9.0",
- "combined-stream": "~0.0.4",
- "mime-types": "~2.0.3"
- }
- },
- "har-validator": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz",
- "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=",
- "dev": true,
- "requires": {
- "bluebird": "^2.9.30",
- "chalk": "^1.0.0",
- "commander": "^2.8.1",
- "is-my-json-valid": "^2.12.0"
- }
- },
- "http-signature": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
- "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=",
- "dev": true,
- "requires": {
- "asn1": "0.1.11",
- "assert-plus": "^0.1.5",
- "ctype": "0.5.3"
- }
- },
- "mime-db": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz",
- "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=",
- "dev": true
- },
- "mime-types": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz",
- "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=",
- "dev": true,
- "requires": {
- "mime-db": "~1.12.0"
- }
- },
- "node-uuid": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
- "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz",
- "integrity": "sha1-fb6uRPbKRU4fFoRR1jB0ZzWBPOM=",
- "dev": true
- },
- "qs": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz",
- "integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=",
- "dev": true
- },
- "request": {
- "version": "2.55.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz",
- "integrity": "sha1-11wc32eddrsQD5v/4f5VG1wk6T0=",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.5.0",
- "bl": "~0.9.0",
- "caseless": "~0.9.0",
- "combined-stream": "~0.0.5",
- "forever-agent": "~0.6.0",
- "form-data": "~0.2.0",
- "har-validator": "^1.4.0",
- "hawk": "~2.3.0",
- "http-signature": "~0.10.0",
- "isstream": "~0.1.1",
- "json-stringify-safe": "~5.0.0",
- "mime-types": "~2.0.1",
- "node-uuid": "~1.4.0",
- "oauth-sign": "~0.6.0",
- "qs": "~2.4.0",
- "stringstream": "~0.0.4",
- "tough-cookie": ">=0.12.0",
- "tunnel-agent": "~0.4.0"
- }
- },
- "tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
- "dev": true
- }
- }
- },
- "moniker": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz",
- "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4="
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "mv": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
- "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
- "dev": true,
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- }
- },
- "n-readlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/n-readlines/-/n-readlines-1.0.0.tgz",
- "integrity": "sha512-ISDqGcspVu6U3VKqtJZG1uR55SmNNF9uK0EMq1IvNVVZOui6MW6VR0+pIZhqz85ORAGp+4zW+5fJ/SE7bwEibA=="
- },
- "natives": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
- "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==",
- "dev": true
- },
- "ncp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
- "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
- "dev": true
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "nugget": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/nugget/-/nugget-1.6.2.tgz",
- "integrity": "sha1-iMpuA7pXBqmRc/XaCQJZPWvK4Qc=",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "object-keys": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
- "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-exists": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz",
- "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
- "dev": true
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "plist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
- "integrity": "sha1-CEtQk93JJQbiWfh0uNmxr7jHlZM=",
- "dev": true,
- "requires": {
- "base64-js": "0.0.8",
- "util-deprecate": "1.0.2",
- "xmlbuilder": "4.0.0",
- "xmldom": "0.1.x"
- }
- },
- "pretty-bytes": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
- "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1",
- "meow": "^3.1.0"
- }
- },
- "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
- },
- "progress-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
- "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
- "dev": true,
- "requires": {
- "speedometer": "~0.1.2",
- "through2": "~0.2.3"
- }
- },
- "psl": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
- "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
- "dev": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
- "dev": true
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "dev": true
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "rcedit": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.3.0.tgz",
- "integrity": "sha1-y17uGF5Ub57aWXwkjJkGGG+pa84=",
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- }
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- }
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dev": true,
- "requires": {
- "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.0",
- "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.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
- "resolve": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
- "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
- "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
- "dev": true,
- "requires": {
- "glob": "^6.0.1"
- }
- },
- "run-series": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.8.tgz",
- "integrity": "sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg==",
- "dev": true
- },
- "safe-buffer": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
- "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
- "dev": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "dev": true
- },
- "single-line-log": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-0.4.1.tgz",
- "integrity": "sha1-h6VWSfdJ14PsDc2AToFA2Yc8fO4=",
- "dev": true
- },
- "sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
- "dev": true,
- "requires": {
- "hoek": "2.x.x"
- }
- },
- "spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
- },
- "speedometer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
- "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
- "dev": true
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "stringstream": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
- "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "throttleit": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
- "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
- "dev": true
- },
- "through2": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
- "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
- "dev": true,
- "requires": {
- "readable-stream": "~1.1.9",
- "xtend": "~2.1.1"
- }
- },
- "touch": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
- "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
- "dev": true,
- "requires": {
- "nopt": "~1.0.10"
- },
- "dependencies": {
- "nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- }
- }
- },
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "dev": true,
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
- }
- },
- "traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
- "dev": true
- },
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "uri-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
- "dev": true
- },
- "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",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "walk": {
- "version": "2.3.14",
- "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz",
- "integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==",
- "requires": {
- "foreachasync": "^3.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "xmlbuilder": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
- "integrity": "sha1-mLj2UcowqmJANvEn0RzGbce5B6M=",
- "dev": true,
- "requires": {
- "lodash": "^3.5.0"
- }
- },
- "xmldom": {
- "version": "0.1.27",
- "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
- "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
- "dev": true
- },
- "xtend": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
- "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
- "dev": true,
- "requires": {
- "object-keys": "~0.4.0"
- }
- },
- "yauzl": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
- "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
- "dev": true,
- "requires": {
- "fd-slicer": "~1.0.1"
- }
- }
- }
-}
diff --git a/frontend/package.json b/frontend/package.json
index 4c7832e8..b48e732f 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "projectGenerator",
"productName": "projectGenerator",
- "version": "0.0.1",
+ "version": "0.30.0",
"description": "repo for testing a gui using electron for the project generator",
"license": "MIT",
"main": "index.js",
@@ -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 --version=0.30.0",
- "build:osx": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --version=0.30.0 --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 --version=0.30.0 --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 --version=0.30.0 --platform=linux --arch=x64",
- "build:vs": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --version=0.30.0 --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 ",
+ "build:osx": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --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 --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 --platform=linux --arch=x64",
+ "build:vs": "electron-packager . $npm_package_productName --icon=static/icon/of.icns --out=dist --ignore='dist' --ignore='readme.md' --prune --overwrite --platform=win32 --arch=ia32"
},
"files": [
"index.html",
@@ -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": "^5.0.0",
- "electron-prebuilt": "^0.30.0"
+ "electron": "^8.0.3",
+ "electron-packager": "^14.2.1"
}
}
diff --git a/frontend/readme.md b/frontend/readme.md
index b62f4e1e..d35c7027 100644
--- a/frontend/readme.md
+++ b/frontend/readme.md
@@ -36,32 +36,38 @@ cd openFrameworks/apps/projectGenerator
cp commandLine/bin/projectGenerator frontend/app
```
-### Install node.js
+### Install Node.js & yarn package manager
If you don't already have it, you can install node via a number of means:
- Directly from the [node.js website](https://nodejs.org/en/download/)
- Using a [package manager for your platform](https://nodejs.org/en/download/package-manager/)
- - `brew install node`
- - `apt-get install nodejs`
- - etc.
-- Using a node version manager like [nvm](https://github.com/creationix/nvm)
+ - MacOS `brew install node`
+ - Debian/Linux `apt-get install nodejs`
+ - [Windows installer](https://nodejs.org/en/download/)
+- Optionally using a node version manager like [nvm](https://github.com/creationix/nvm)
- Install nvm for your platform, then:
- `nvm install latest`
+To install yarn [follow the guide from the project website](https://classic.yarnpkg.com/en/docs/install)
+- MacOS `brew install yarn`
+- Debian/Ubuntu `sudo apt update && sudo apt install yarn`
+- [Windows installer](https://classic.yarnpkg.com/en/docs/install/#windows-stable)
+
+
### Install frontend dependencies
Install the depencies for the electron app:
```
cd openFrameworks/apps/projectGenerator/frontend
-npm install
+yarn install
```
### Updating
It's always good to update npm before generating the PG.
```
-npm update
+yarn update
```
### Debugging
@@ -78,7 +84,7 @@ Moreover, Electron uses Webkit so all the Webkit developper tools are available
Run a development build with:
```
-npm start
+yarn start
```
### Release
@@ -86,16 +92,16 @@ npm start
To build & package the app for OS X, Linux, and Windows, using [electron-packager](https://github.com/maxogden/electron-packager):
```
-npm run build
+yarn run build
```
To build a platform-specific package:
```
-npm run build:osx
-npm run build:linux32
-npm run build:linux64
-npm run build:vs
+yarn run build:osx
+yarn run build:linux32
+yarn run build:linux64
+yarn run build:vs
```
This will created a packaged app for that platform(s) specified inside the `dist` folder.
diff --git a/frontend/settings.json b/frontend/settings.json
deleted file mode 100644
index fe230ab1..00000000
--- a/frontend/settings.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "advancedMode": false,
- "defaultOfPath": "../",
- "defaultPlatform": "osx",
- "defaultRelativeProjectPath": "apps/myApps",
- "showConsole": false,
- "showDeveloperTools": false,
- "useDictionaryNameGenerator": true
-}
\ No newline at end of file
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
new file mode 100644
index 00000000..ee20f102
--- /dev/null
+++ b/frontend/yarn.lock
@@ -0,0 +1,1106 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@electron/get@^1.0.1", "@electron/get@^1.6.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.9.0.tgz#7fa6e61d7ff50fb82a8a41f437af7de3b97aa9a5"
+ integrity sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw==
+ dependencies:
+ debug "^4.1.1"
+ env-paths "^2.2.0"
+ fs-extra "^8.1.0"
+ got "^9.6.0"
+ progress "^2.0.3"
+ sanitize-filename "^1.6.2"
+ sumchecker "^3.0.1"
+ optionalDependencies:
+ global-agent "^2.0.2"
+ global-tunnel-ng "^2.7.1"
+
+"@sindresorhus/is@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+
+"@szmarczak/http-timer@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+ dependencies:
+ defer-to-connect "^1.0.1"
+
+"@types/events@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
+ integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+
+"@types/glob@^7.1.1":
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
+ integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
+ dependencies:
+ "@types/events" "*"
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/minimatch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+
+"@types/node@*":
+ version "13.9.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72"
+ integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==
+
+"@types/node@^12.0.12":
+ version "12.12.30"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.30.tgz#3501e6f09b954de9c404671cefdbcc5d9d7c45f6"
+ integrity sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg==
+
+asar@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/asar/-/asar-2.1.0.tgz#97c6a570408c4e38a18d4a3fb748a621b5a7844e"
+ integrity sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==
+ dependencies:
+ chromium-pickle-js "^0.2.0"
+ commander "^2.20.0"
+ cuint "^0.2.2"
+ glob "^7.1.3"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ tmp-promise "^1.0.5"
+ optionalDependencies:
+ "@types/glob" "^7.1.1"
+
+author-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450"
+ integrity sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.2.3:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
+ integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
+
+bluebird@^3.1.1, bluebird@^3.5.0:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+boolean@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f"
+ integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+buffer-alloc-unsafe@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+ integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+ integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+ dependencies:
+ buffer-alloc-unsafe "^1.1.0"
+ buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+ integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+cacheable-request@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^3.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^4.1.0"
+ responselike "^1.0.2"
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+chromium-pickle-js@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
+ integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
+
+clone-response@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
+ integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
+ dependencies:
+ mimic-response "^1.0.0"
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+compare-version@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
+ integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+config-chain@^1.1.11:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
+ integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+core-js@^3.6.4:
+ version "3.6.4"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647"
+ integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cross-zip@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-3.0.0.tgz#478136c7ba2df7e5888f7fb57211a4bbd5afafb4"
+ integrity sha512-cm+l8PJ6WiSQmKZ/x8DGvUm2u/3FX2JFs1AFd18gdHaVhP5Lf4oE6Jrj2Jd05JYSioz5x+nIRVp0zBQuzuCRcQ==
+ dependencies:
+ rimraf "^3.0.0"
+
+cuint@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
+ integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=
+
+debug@2.6.9, debug@^2.2.0, debug@^2.6.8:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decompress-response@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+ dependencies:
+ mimic-response "^1.0.0"
+
+defer-to-connect@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+ integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+detect-node@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
+ integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+electron-notarize@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-0.2.1.tgz#759e8006decae19134f82996ed910db26d9192cc"
+ integrity sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==
+ dependencies:
+ debug "^4.1.1"
+ fs-extra "^8.1.0"
+
+electron-osx-sign@^0.4.11:
+ version "0.4.15"
+ resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.15.tgz#560e190297f0dbf40d4c192e06f160f669c2d015"
+ integrity sha512-1QtPNpjIji9bGZ0VRFwtJUyU1uHi7q3XUAOG0qFsvAUfs5H0T8hbgUfyg3xvPzmF1ruV8T8pQmQ86vNfLrcRiA==
+ 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"
+
+electron-packager@^14.2.1:
+ version "14.2.1"
+ resolved "https://registry.yarnpkg.com/electron-packager/-/electron-packager-14.2.1.tgz#e1884eee608455e71e96342717e0527d25a329df"
+ integrity sha512-g6y3BVrAOz/iavKD+VMFbehrQcwCWuA3CZvVbmmbQuCfegGA1ytwWn0BNIDDrEdbuz31Fti7mnNHhb5L+3Wq9A==
+ dependencies:
+ "@electron/get" "^1.6.0"
+ asar "^2.0.1"
+ cross-zip "^3.0.0"
+ debug "^4.0.1"
+ electron-notarize "^0.2.0"
+ electron-osx-sign "^0.4.11"
+ fs-extra "^8.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 "^2.0.0"
+ resolve "^1.1.6"
+ sanitize-filename "^1.6.0"
+ semver "^6.0.0"
+ yargs-parser "^16.0.0"
+
+electron@^8.0.3:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-8.1.1.tgz#737a5af03c7b4af60b49dff7bfe1203fcbd5bf89"
+ integrity sha512-t+5zzFo7VOgckJc9YpImHJkpqeWxwpmEjywWbAa4IT5MULS7h1XU52H9gMswK/y8xc5lBNwxLhJSty/15+gi1A==
+ dependencies:
+ "@electron/get" "^1.0.1"
+ "@types/node" "^12.0.12"
+ extract-zip "^1.0.3"
+
+encodeurl@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+env-paths@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
+ integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
+
+error-ex@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es6-error@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
+ integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
+
+escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+extract-zip@^1.0.3:
+ version "1.6.7"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
+ integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=
+ dependencies:
+ concat-stream "1.6.2"
+ debug "2.6.9"
+ mkdirp "0.5.1"
+ yauzl "2.4.1"
+
+fd-slicer@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+ integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=
+ dependencies:
+ pend "~1.2.0"
+
+find-up@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+flora-colossus@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-1.0.1.tgz#aba198425a8185341e64f9d2a6a96fd9a3cbdb93"
+ integrity sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==
+ dependencies:
+ debug "^4.1.1"
+ fs-extra "^7.0.0"
+
+fs-extra@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
+ integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+galactus@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/galactus/-/galactus-0.2.1.tgz#cbed2d20a40c1f5679a35908e2b9415733e78db9"
+ integrity sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=
+ dependencies:
+ debug "^3.1.0"
+ flora-colossus "^1.0.0"
+ fs-extra "^4.0.0"
+
+get-package-info@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/get-package-info/-/get-package-info-1.0.0.tgz#6432796563e28113cd9474dbbd00052985a4999c"
+ integrity sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=
+ dependencies:
+ bluebird "^3.1.1"
+ debug "^2.2.0"
+ lodash.get "^4.0.0"
+ read-pkg-up "^2.0.0"
+
+get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
+ integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
+ dependencies:
+ pump "^3.0.0"
+
+glob@^7.1.3:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-agent@^2.0.2:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.8.tgz#99d153662b2c04cbc1199ffbc081a3aa656ac50f"
+ integrity sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A==
+ dependencies:
+ boolean "^3.0.0"
+ core-js "^3.6.4"
+ es6-error "^4.1.1"
+ matcher "^2.1.0"
+ roarr "^2.15.2"
+ semver "^7.1.2"
+ serialize-error "^5.0.0"
+
+global-tunnel-ng@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f"
+ integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==
+ dependencies:
+ encodeurl "^1.0.2"
+ lodash "^4.17.10"
+ npm-conf "^1.1.3"
+ tunnel "^0.0.6"
+
+globalthis@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9"
+ integrity sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==
+ dependencies:
+ define-properties "^1.1.3"
+
+got@^9.6.0:
+ version "9.6.0"
+ resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
+ dependencies:
+ "@sindresorhus/is" "^0.14.0"
+ "@szmarczak/http-timer" "^1.1.2"
+ cacheable-request "^6.0.0"
+ decompress-response "^3.3.0"
+ duplexer3 "^0.1.4"
+ get-stream "^4.1.0"
+ lowercase-keys "^1.0.1"
+ mimic-response "^1.0.1"
+ p-cancelable "^1.0.0"
+ to-readable-stream "^1.0.0"
+ url-parse-lax "^3.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+ integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
+
+hosted-git-info@^2.1.4:
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+
+http-cache-semantics@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+ integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.3, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isbinaryfile@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
+ integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
+ dependencies:
+ buffer-alloc "^1.2.0"
+
+json-buffer@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+
+json-stringify-safe@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+junk@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
+ integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
+
+keyv@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+ dependencies:
+ json-buffer "3.0.0"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+lodash.get@^4.0.0:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+
+lodash@^4.17.10:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
+lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+matcher@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/matcher/-/matcher-2.1.0.tgz#64e1041c15b993e23b786f93320a7474bf833c28"
+ integrity sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+
+mimic-response@^1.0.0, mimic-response@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+mkdirp@0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+mkdirp@^0.5.1:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c"
+ integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==
+ dependencies:
+ minimist "^1.2.5"
+
+moniker@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/moniker/-/moniker-0.1.2.tgz#872dfba575dcea8fa04a5135b13d5f24beccc97e"
+ integrity sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+n-readlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.0.tgz#c353797f216c253fdfef7e91da4e8b17c29a91a6"
+ integrity sha512-ISDqGcspVu6U3VKqtJZG1uR55SmNNF9uK0EMq1IvNVVZOui6MW6VR0+pIZhqz85ORAGp+4zW+5fJ/SE7bwEibA==
+
+normalize-package-data@^2.3.2:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-url@^4.1.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
+ integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
+
+npm-conf@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
+ integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==
+ dependencies:
+ config-chain "^1.1.11"
+ pify "^3.0.0"
+
+object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+p-cancelable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+parse-author@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f"
+ integrity sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=
+ dependencies:
+ author-regex "^1.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+plist@^3.0.0, plist@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c"
+ integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==
+ dependencies:
+ base64-js "^1.2.3"
+ xmlbuilder "^9.0.7"
+ xmldom "0.1.x"
+
+prepend-http@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+ integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+rcedit@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-2.1.1.tgz#483b8f42004895cb81abc5c64c7b91645fc6ed53"
+ integrity sha512-N1JyXxHD2zpqqW4A77RNK1d/M+tyed9JkvL/lnUI5cf4igF/8B9FNLFCtDUhGrk2GWEPxC+RF0WXWWB3I8QC7w==
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+readable-stream@^2.2.2:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ 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"
+
+resolve@^1.1.6, resolve@^1.10.0:
+ version "1.15.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
+ integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
+ dependencies:
+ path-parse "^1.0.6"
+
+responselike@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+ dependencies:
+ lowercase-keys "^1.0.0"
+
+rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+roarr@^2.15.2:
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.2.tgz#34f6229ae3c8c12167c4ae60f58fe75e79a1e394"
+ integrity sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q==
+ dependencies:
+ boolean "^3.0.0"
+ 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"
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+sanitize-filename@^1.6.0, sanitize-filename@^1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378"
+ integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==
+ dependencies:
+ truncate-utf8-bytes "^1.0.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+"semver@2 || 3 || 4 || 5":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.1.2:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6"
+ integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==
+
+serialize-error@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-5.0.0.tgz#a7ebbcdb03a5d71a6ed8461ffe0fc1a1afed62ac"
+ integrity sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==
+ dependencies:
+ type-fest "^0.8.0"
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+sprintf-js@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
+ integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+sumchecker@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
+ integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==
+ dependencies:
+ debug "^4.1.0"
+
+tmp-promise@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.1.0.tgz#bb924d239029157b9bc1d506a6aa341f8b13e64c"
+ integrity sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==
+ dependencies:
+ bluebird "^3.5.0"
+ tmp "0.1.0"
+
+tmp@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
+ integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==
+ dependencies:
+ rimraf "^2.6.3"
+
+to-readable-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
+
+truncate-utf8-bytes@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
+ integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys=
+ dependencies:
+ utf8-byte-length "^1.0.1"
+
+tunnel@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
+ integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
+
+type-fest@^0.8.0:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+url-parse-lax@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
+ dependencies:
+ prepend-http "^2.0.0"
+
+utf8-byte-length@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
+ integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xmlbuilder@^9.0.7:
+ version "9.0.7"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
+ integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
+
+xmldom@0.1.x:
+ version "0.1.31"
+ resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff"
+ integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==
+
+yargs-parser@^16.0.0:
+ version "16.1.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1"
+ integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yauzl@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
+ integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=
+ dependencies:
+ fd-slicer "~1.0.1"
diff --git a/ofxProjectGenerator/src/projects/baseProject.cpp b/ofxProjectGenerator/src/projects/baseProject.cpp
index 1d60d662..ccf266ad 100644
--- a/ofxProjectGenerator/src/projects/baseProject.cpp
+++ b/ofxProjectGenerator/src/projects/baseProject.cpp
@@ -295,6 +295,7 @@ void baseProject::addAddon(std::string addonName){
}
void baseProject::addAddon(ofAddon & addon){
+
for(int i=0;i<(int)addons.size();i++){
if(addons[i].name==addon.name) return;
}
@@ -356,6 +357,14 @@ void baseProject::addAddon(ofAddon & addon){
}
}
+void baseProject::addAddonDefineFlags() {
+ for (auto & addon : addons ) {
+ std::string str = "OFXADDON_"+ofToUpper(addon.name);
+ ofLogVerbose() << "adding preprocessor define: " << str;
+ addDefine( str );
+ }
+}
+
void baseProject::parseAddons(){
ofFile addonsMake(ofFilePath::join(projectDir,"addons.make"));
ofBuffer addonsMakeMem;
diff --git a/ofxProjectGenerator/src/projects/baseProject.h b/ofxProjectGenerator/src/projects/baseProject.h
index c4048b10..484bff5b 100644
--- a/ofxProjectGenerator/src/projects/baseProject.h
+++ b/ofxProjectGenerator/src/projects/baseProject.h
@@ -4,6 +4,7 @@
#include "ofAddon.h"
#include "ofConstants.h"
+#include "ofUtils.h"
#include "ofFileUtils.h"
#include "pugixml.hpp"
@@ -35,13 +36,14 @@ class baseProject {
}
};
- baseProject(std::string _target);
+ baseProject(std::string _target );
virtual ~baseProject(){}
bool create(std::string path, std::string templateName="");
void parseAddons();
void parseConfigMake();
+ void addAddonDefineFlags();
bool save();
// this shouldn't be called by anyone. call "create(...), save" etc
@@ -83,6 +85,8 @@ class baseProject {
std::string templatePath;
std::string target;
+
+
protected:
void recursiveCopyContents(const ofDirectory & srcDir, ofDirectory & destDir);