From 3d7eb02f69e24280ec47929f5718778f212cb2c9 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Sat, 16 Nov 2019 16:53:45 -0800 Subject: [PATCH 01/24] chore: update yarn.lock Forgot to commit yarn.lock when removing conventional-changelog-eslint --- yarn.lock | 7 ------- 1 file changed, 7 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1e7711c8..66087655 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5341,13 +5341,6 @@ conventional-changelog-angular@^5.0.0: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-eslint@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.4.tgz#8f4736a23e0cd97e890e76fccc287db2f205f2ff" - integrity sha512-CPwTUENzhLGl3auunrJxiIEWncAGaby7gOFCdj2gslIuOFJ0KPJVOUhRz4Da/I53sdo/7UncUJkiLg94jEsjxg== - dependencies: - q "^1.5.1" - conventional-changelog-writer@^4.0.0: version "4.0.10" resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.10.tgz#39f6458cca62a8151b3ce582a57ff71fd2b0ff7a" From 44ecbcf04b9673a8b9e70ee9875cb8f8d15161ef Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Sun, 17 Nov 2019 12:50:19 -0800 Subject: [PATCH 02/24] chore: Remove unneeded dependencies --- package.json | 9 ++------- yarn.lock | 50 +------------------------------------------------- 2 files changed, 3 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index ab945036..9f4e06ea 100644 --- a/package.json +++ b/package.json @@ -58,8 +58,6 @@ "electron-forge": "~5.2.4", "electron-protocol-serve": "^1.3.0", "ember-cli-babel": "^7.11.1", - "ember-cli-htmlbars": "^4.0.5", - "ember-cli-version-checker": "^3.1.3", "ember-inspector": "^3.12.5", "execa": "^3.3.0", "file-url": "^3.0.0", @@ -71,7 +69,6 @@ "rsvp": "^4.0.1", "silent-error": "^1.1.1", "symlink-or-copy": "^1.2.0", - "tmp": "^0.1.0", "tree-kill": "^1.1.0", "tree-sync": "^2.0.0", "yarn-or-npm": "^3.0.1" @@ -97,6 +94,7 @@ "ember-cli-deploy-git": "^1.3.4", "ember-cli-deploy-git-ci": "^1.0.1", "ember-cli-eslint": "^5.1.0", + "ember-cli-htmlbars": "^4.0.5", "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-sass": "^10.0.1", "ember-cli-sri": "^2.1.1", @@ -105,7 +103,6 @@ "ember-disable-prototype-extensions": "^1.1.3", "ember-export-application-global": "^2.0.0", "ember-load-initializers": "^2.1.0", - "ember-maybe-import-regenerator": "^0.1.6", "ember-qunit": "^4.5.1", "ember-resolver": "^5.3.0", "ember-source": "~3.14.1", @@ -115,14 +112,12 @@ "eslint-plugin-node": "^10.0.0", "loader.js": "^4.7.0", "mocha": "^6.2.2", - "mock-spawn": "^0.2.6", "mockery": "^2.1.0", - "ncp": "^2.0.0", "qunit-dom": "^0.9.0", "sass": "^1.23.3", "semantic-release": "^15.10.6", "sinon": "^7.5.0", - "testdouble": "^3.12.4", + "tmp": "^0.1.0", "walk-sync": "^2.0.2" }, "engines": { diff --git a/yarn.lock b/yarn.lock index 66087655..3a7927c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10614,11 +10614,6 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - is-relative-path@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46" @@ -12509,13 +12504,6 @@ mock-require@^2.0.1: dependencies: caller-id "^0.1.0" -mock-spawn@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/mock-spawn/-/mock-spawn-0.2.6.tgz#b39c15a1c067504310144151f2c1de344d03937f" - integrity sha1-s5wVocBnUEMQFEFR8sHeNE0Dk38= - dependencies: - through "2.3.x" - mockery@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mockery/-/mockery-2.1.0.tgz#5b0aef1ff564f0f8139445e165536c7909713470" @@ -12646,11 +12634,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -ncp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= - needle@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" @@ -14731,14 +14714,6 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -quibble@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.5.7.tgz#34ea5467eee32dfa37968742a5af21b02cd6ebe0" - integrity sha512-QnHxlD12qhGGjvoEW4PIp8tA80tKjh5CxTg5wLTPp/aqvHElBA+Ag3JN0dWlHY96CUaJqSGmLxTLi+7wbysyZw== - dependencies: - lodash "^4.17.14" - resolve "^1.11.1" - quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" @@ -16649,14 +16624,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object-es5@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/stringify-object-es5/-/stringify-object-es5-2.5.0.tgz#057c3c9a90a127339bb9d1704a290bb7bd0a1ec5" - integrity sha1-BXw8mpChJzObudFwSikLt70KHsU= - dependencies: - is-plain-obj "^1.0.0" - is-regexp "^1.0.0" - stringify-package@^1.0.0, stringify-package@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" @@ -17052,16 +17019,6 @@ terser@^4.1.2, terser@^4.3.9: source-map "~0.6.1" source-map-support "~0.5.12" -testdouble@^3.12.4: - version "3.12.4" - resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.12.4.tgz#c8b30a62077212c10c2e05dc4105610d28013df4" - integrity sha512-Ake1UjvG6XKYUrVGyNv52xg5lQM079dTQW8/F8GWuE1lbC1NRmkUgtgLrsRr+7SPQZZhIhZp6lHUWXMMBvSHEw== - dependencies: - lodash "^4.17.15" - quibble "^0.5.6" - stringify-object-es5 "^2.5.0" - theredoc "^1.0.0" - testem@^2.17.0: version "2.17.0" resolved "https://registry.yarnpkg.com/testem/-/testem-2.17.0.tgz#1cb4a2a90524a088803dfe52fbf197a6fd73c883" @@ -17131,11 +17088,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -theredoc@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/theredoc/-/theredoc-1.0.0.tgz#bcace376af6feb1873efbdd0f91ed026570ff062" - integrity sha512-KU3SA3TjRRM932jpNfD3u4Ec3bSvedyo5ITPI7zgWYnKep7BwQQaxlhI9qbO+lKJoRnoAbEVfMcAHRuKVYikDA== - throttleit@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" @@ -17172,7 +17124,7 @@ through2@~0.2.3: readable-stream "~1.1.9" xtend "~2.1.1" -through@2, through@2.3.x, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= From 9fd0475ee810fa736d344fea7f5930df63622248 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Sun, 17 Nov 2019 13:18:45 -0800 Subject: [PATCH 03/24] chore: Put ember-cli in peerDependencies --- .eslintrc.js | 3 --- package.json | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 6042133b..90a5dff6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -60,9 +60,6 @@ module.exports = { rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { // add your custom rules and overrides for node files here 'ember/avoid-leaking-state-in-ember-objects': 'off', - 'node/no-unpublished-require': ['error', { - 'allowModules': ['ember-cli'] - }] }) } ] diff --git a/package.json b/package.json index 9f4e06ea..9b069e0a 100644 --- a/package.json +++ b/package.json @@ -120,6 +120,9 @@ "tmp": "^0.1.0", "walk-sync": "^2.0.2" }, + "peerDependencies": { + "ember-cli": "^3.0.0" + }, "engines": { "node": "8.* || >= 10.*" }, From 452b154106dffc723ab6d141477c858795963210 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Sun, 17 Nov 2019 13:47:56 -0800 Subject: [PATCH 04/24] feat: Update to electron-forge 6 --- .../files/ember-electron/.compilerc | 5 - blueprints/ember-electron/index.js | 42 +- lib/commands/electron.js | 67 +- lib/tasks/assemble.js | 4 +- lib/tasks/make.js | 60 +- lib/tasks/package.js | 52 +- lib/test-support/test-runner.js | 19 +- lib/utils/assemble-tree.js | 6 - node-tests/acceptance/end-to-end-test.js | 27 +- .../ember-electron/.compilerc | 5 - .../ember-electron/electron-forge-config.js | 48 +- .../ember-electron/.compilerc | 5 - .../ember-electron/electron-forge-config.js | 48 +- .../project-simple/ember-electron/.compilerc | 5 - .../ember-electron/electron-forge-config.js | 48 +- node-tests/helpers/expect.js | 2 + node-tests/helpers/mocks/ef-handle.js | 22 - node-tests/helpers/mocks/ef-start.js | 19 - .../integration/models/assembler-test.js | 1 - .../integration/utils/assemble-tree-test.js | 3 - node-tests/unit/commands/electron-test.js | 39 +- node-tests/unit/tasks/make-test.js | 2 +- node-tests/unit/tasks/package-test.js | 2 +- package.json | 11 +- test-runner.js | 107 - .../dummy/app/templates/docs/faq/structure.md | 3 - yarn.lock | 3769 +++-------------- 27 files changed, 829 insertions(+), 3592 deletions(-) delete mode 100644 blueprints/ember-electron/files/ember-electron/.compilerc delete mode 100644 node-tests/fixtures/project-missing-main/ember-electron/.compilerc delete mode 100644 node-tests/fixtures/project-resources/ember-electron/.compilerc delete mode 100644 node-tests/fixtures/project-simple/ember-electron/.compilerc delete mode 100644 node-tests/helpers/mocks/ef-handle.js delete mode 100644 node-tests/helpers/mocks/ef-start.js delete mode 100644 test-runner.js diff --git a/blueprints/ember-electron/files/ember-electron/.compilerc b/blueprints/ember-electron/files/ember-electron/.compilerc deleted file mode 100644 index 310aa349..00000000 --- a/blueprints/ember-electron/files/ember-electron/.compilerc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "application/javascript": { - "passthrough": true - } -} \ No newline at end of file diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index c00384d4..9b65d09f 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -11,8 +11,8 @@ const path = require('path'); const { all, denodeify } = require('rsvp'); const Blueprint = require('ember-cli/lib/models/blueprint'); -const efImport = require('electron-forge/dist/api/import').default; -const { setupForgeEnv, shouldUseYarn } = require('../../lib/utils/yarn-or-npm'); +const { api } = require('@electron-forge/core'); +const { setupForgeEnv } = require('../../lib/utils/yarn-or-npm'); const Logger = require('../../lib/utils/logger'); @@ -59,28 +59,28 @@ module.exports = class EmberElectronBlueprint extends Blueprint { }); } - _installElectronTooling(logger) { + async _installElectronTooling(logger) { // n.b. addPackageToProject does not let us save prod deps, so we task let npmInstall = this.taskFor('npm-install'); setupForgeEnv(this.project.root); logger.startProgress('Installing electron build tools'); - return efImport({ - updateScripts: false, - outDir: 'electron-out', - }) - .then(() => npmInstall.run({ - 'save-dev': true, - verbose: false, - packages: ['devtron@^1.4.0'], - })) - .then(() => npmInstall.run({ - save: true, - verbose: false, - packages: ['electron-protocol-serve@^1.3.0'], - })) - .then(() => logger.message('Installed electron build tools')); + await api.import({ + shouldUpdateScript: () => false, + outDir: 'electron-out', + }); + await npmInstall.run({ + 'save-dev': true, + verbose: false, + packages: ['devtron@^1.4.0'], + }); + await npmInstall.run({ + save: true, + verbose: false, + packages: ['electron-protocol-serve@^1.3.0'], + }); + logger.message('Installed electron build tools'); } _createResourcesDirectories(logger) { @@ -109,7 +109,6 @@ module.exports = class EmberElectronBlueprint extends Blueprint { let packageJsonPath = path.join(this.project.root, 'package.json'); let forgeConfigPath = './ember-electron/electron-forge-config.js'; - let isUsingYarn = shouldUseYarn(this.project.root); // If we had a forge config before running forge import, then it may be // customized by the user, so let's not mess with it. @@ -129,11 +128,6 @@ module.exports = class EmberElectronBlueprint extends Blueprint { return; } - // required to force the package manager to use yarn when the project uses yarn - if (isUsingYarn) { - forgeConfig.electronPackagerConfig.packageManager = 'yarn'; - } - forgeConfig = JSON.stringify(forgeConfig, null, 2); packageJson.config.forge = forgeConfigPath; diff --git a/lib/commands/electron.js b/lib/commands/electron.js index 53684632..44fb54a3 100644 --- a/lib/commands/electron.js +++ b/lib/commands/electron.js @@ -7,7 +7,7 @@ const Command = require('ember-cli/lib/models/command'); const Builder = require('../models/builder'); const Watcher = require('ember-cli/lib/models/watcher'); const Logger = require('../utils/logger'); -const efStart = require('electron-forge/dist/api/start').default; +const { api } = require('@electron-forge/core'); const { Promise } = RSVP; @@ -69,7 +69,7 @@ module.exports = Command.extend({ return buildWatcher; }, - _startElectron({ outputPath, verbose }, logger = new Logger(this)) { + async _startElectron({ outputPath, verbose }, logger = new Logger(this)) { const argv = this._getArgv(); let electronArgs = []; @@ -83,37 +83,38 @@ module.exports = Command.extend({ outputPath = path.resolve(outputPath); - return efStart({ appPath: outputPath, dir: outputPath, args: electronArgs }) - .then((handle) => new Promise((resolve/* , reject */) => { - handle.on('close', (code, signal) => { - if (verbose) { - logger.section([ - 'Electron closed', - ` - with code: ${code}`, - ` - with signal: ${signal}`, - ]); - } - }); - - handle.on('disconnect', () => { - if (verbose) { - logger.message('Electron disconnected.'); - } - }); - - handle.on('error', (err) => { - logger.error(err); - }); - - handle.on('exit', (/* code, signal */) => { - logger.message('Electron exited.'); - resolve(); - }); - - handle.on('message', (message) => { - logger.message(message); - }); - })); + let handle = await api.start({ appPath: outputPath, dir: outputPath, args: electronArgs }); + + handle.on('close', (code, signal) => { + if (verbose) { + logger.section([ + 'Electron closed', + ` - with code: ${code}`, + ` - with signal: ${signal}`, + ]); + } + }); + + handle.on('disconnect', () => { + if (verbose) { + logger.message('Electron disconnected.'); + } + }); + + handle.on('error', (err) => { + logger.error(err); + }); + + handle.on('message', (message) => { + logger.message(message); + }); + + await new Promise((resolve) => { + handle.on('exit', () => { + logger.message('Electron exited.'); + resolve(); + }); + }); }, // For test instrumentation diff --git a/lib/tasks/assemble.js b/lib/tasks/assemble.js index 12241f18..c894df04 100644 --- a/lib/tasks/assemble.js +++ b/lib/tasks/assemble.js @@ -65,9 +65,9 @@ class AssembleTask extends Task { pruneCommand() { if (shouldUseYarn(this.project.root)) { - return 'yarn install --production --no-bin-links'; + return 'yarn'; } else { - return 'npm install --production --no-bin-links'; + return 'npm install'; } } diff --git a/lib/tasks/make.js b/lib/tasks/make.js index 02ce4632..ebfa66d9 100644 --- a/lib/tasks/make.js +++ b/lib/tasks/make.js @@ -1,10 +1,9 @@ 'use strict'; const chalk = require('chalk'); -const { resolve } = require('rsvp'); const Task = require('ember-cli/lib/models/task'); const PackageTask = require('./package'); -const forgeMake = require('electron-forge/dist/api/make').default; +const { api } = require('@electron-forge/core'); // // A task that runs electron-forge make to make installers. The skipPackage @@ -15,43 +14,38 @@ const forgeMake = require('electron-forge/dist/api/make').default; // rather than re-assembling/rebuilding. // class MakeTask extends Task { - run(options) { + async run(options) { let { ui, analytics, project } = this; let { skipPackage, outputPath, platform, arch, targets } = options; - let packagePromise; - if (skipPackage) { - // Nothing to do -- we assume the packaged app is present and let forge - // do the rest - packagePromise = resolve(); - } else { + // If skipPackage is set, we assume the packaged app is present and let + // forge do the rest + if (!skipPackage) { let packageTask = new PackageTask({ ui, analytics, project }); - packagePromise = packageTask.run(options); + await packageTask.run(options); } - return packagePromise.then(() => { - ui.writeLine(chalk.green('Making Electron project.')); - - let overrideTargets; - if (typeof targets === 'string') { - overrideTargets = targets.split(','); - } - - let options = { - dir: project.root, - outDir: outputPath, - skipPackage: true, - overrideTargets, - }; - if (platform) { - options.platform = platform; - } - if (arch) { - options.arch = arch; - } - - return forgeMake(options); - }); + ui.writeLine(chalk.green('Making Electron project.')); + + let overrideTargets; + if (typeof targets === 'string') { + overrideTargets = targets.split(','); + } + + let makeOptions = { + dir: project.root, + outDir: outputPath, + skipPackage: true, + overrideTargets, + }; + if (platform) { + makeOptions.platform = platform; + } + if (arch) { + makeOptions.arch = arch; + } + + return await api.make(makeOptions); } } diff --git a/lib/tasks/package.js b/lib/tasks/package.js index be5978d5..f453cc8a 100644 --- a/lib/tasks/package.js +++ b/lib/tasks/package.js @@ -2,12 +2,11 @@ const chalk = require('chalk'); const childProcess = require('child_process'); -const { resolve } = require('rsvp'); const quickTemp = require('quick-temp'); const Task = require('ember-cli/lib/models/task'); const AssembleTask = require('./assemble'); const { setupForgeEnv } = require('../utils/yarn-or-npm'); -const forgePackage = require('electron-forge/dist/api/package').default; +const { api } = require('@electron-forge/core'); // // A task that runs electron-forge pacakge to package the app. The @@ -16,46 +15,47 @@ const forgePackage = require('electron-forge/dist/api/package').default; // app rather than re-assembling/rebuilding. // class PackageTask extends Task { - run(options) { + async run(options) { let { ui, analytics, project } = this; let { projectPath, outputPath, platform, arch } = options; - let assemblePromise; - if (projectPath) { - // We have a path to an assembled project, so just pass it to forge - assemblePromise = resolve(); - } else { - // Assemble the project and pass to forge - projectPath = quickTemp.makeOrRemake(this, '-tmpPath'); - - if (process.platform !== 'win32') { - childProcess.execSync(`chmod a+x ${projectPath}`); + let cleanupFn; + try { + // If projectPath is set then we already have an assembled project + if (!projectPath) { + // Assemble the project and pass to forge + projectPath = quickTemp.makeOrRemake(this, '-tmpPath'); + cleanupFn = () => quickTemp.remove(this, '-tmpPath'); + + if (process.platform !== 'win32') { + childProcess.execSync(`chmod a+x ${projectPath}`); + } + + options.outputPath = projectPath; + let assembleTask = new AssembleTask({ ui, analytics, project }); + await assembleTask.run(options); } - options.outputPath = projectPath; - let assembleTask = new AssembleTask({ ui, analytics, project }); - assemblePromise = assembleTask.run(options); - } - - return assemblePromise.then(() => { setupForgeEnv(this.project.root); ui.writeLine(chalk.green('Packaging Electron project.')); - let options = { + let packageOptions = { dir: projectPath, outDir: outputPath, }; if (platform) { - options.platform = platform; + packageOptions.platform = platform; } if (arch) { - options.arch = arch; + packageOptions.arch = arch; } - return forgePackage(options); - }).finally(() => { - quickTemp.remove(this, '-tmpPath'); - }); + return await api.package(packageOptions); + } finally { + if (cleanupFn) { + cleanupFn(); + } + } } } diff --git a/lib/test-support/test-runner.js b/lib/test-support/test-runner.js index 3a0b0b85..34024ce3 100644 --- a/lib/test-support/test-runner.js +++ b/lib/test-support/test-runner.js @@ -25,12 +25,12 @@ module.exports = { 'protocol': 'browser', }; -if (require.main === module) { +async function main() { let path = require('path'); let url = require('url'); let fileUrl = require('file-url'); let treeKill = require('tree-kill'); - let { start: efStart } = require('electron-forge'); + const { api } = require('@electron-forge/core'); let [, , buildDir, testemUrl, testPageUrl, id] = process.argv; @@ -54,7 +54,7 @@ if (require.main === module) { testUrl = testUrl.replace(/&/g, '__amp__'); // Start electron - efStart({ + let { pid } = await api.start({ appPath: buildDir, dir: buildDir, args: [ @@ -62,10 +62,13 @@ if (require.main === module) { testUrl, testemUrl, ], - }).then(({ pid }) => { - // Clean up when we're killed - process.on('SIGTERM', () => { - treeKill(pid); - }); }); + // Clean up when we're killed + process.on('SIGTERM', () => { + treeKill(pid); + }); +} + +if (require.main === module) { + main(); } diff --git a/lib/utils/assemble-tree.js b/lib/utils/assemble-tree.js index 086b5cbe..85f369dd 100644 --- a/lib/utils/assemble-tree.js +++ b/lib/utils/assemble-tree.js @@ -20,7 +20,6 @@ module.exports = function assembleTree({ ui, project, platform, inputNode }) { // going to end up looking like this: // // ├── package.json - // ├── .compilerc // ├── ember // │ ├── // ├── ember-electron @@ -87,14 +86,9 @@ this addon once you removed the {{welcome-page}} template tag. ], }), - new Funnel('ember-electron', { - files: ['.compilerc'], - }), - new Funnel('ember-electron', { destDir: 'ember-electron', exclude: [ - '.compilerc', 'resources*/**', 'resources*/**/.*', 'test-main.js', diff --git a/node-tests/acceptance/end-to-end-test.js b/node-tests/acceptance/end-to-end-test.js index d421475c..b4a020af 100644 --- a/node-tests/acceptance/end-to-end-test.js +++ b/node-tests/acceptance/end-to-end-test.js @@ -148,7 +148,7 @@ describe('end-to-end', function() { it('makes', () => { // Only build zip target so we don't fail from missing platform dependencies // (e.g. rpmbuild) - return ember('electron:make', '--targets', 'zip').then(() => { + return ember('electron:make', '--targets', '@electron-forge/maker-zip').then(() => { expect(existsSync(path.join('electron-out', 'make'))).to.be.ok; }); }); @@ -173,31 +173,6 @@ describe('end-to-end', function() { return expect(ember('electron:test')).to.eventually.be.fulfilled; }); } - - describe('test-runner.js/blueprint update', function() { - before(function() { - let { name: tmpDir } = tmp.dirSync(); - process.chdir(tmpDir); - - return ember('new', 'ee-test-app', '--yarn').then(() => { - process.chdir('ee-test-app'); - - return ember('install', 'ember-electron@2.7.2'); - }).then(() => { - // Now that the old blueprint has been run, use yarn to update the addon - // to the current version - return run('yarn', ['add', '-D', path.join(packageTmpDir, 'package')]); - }); - }); - - after(() => { - process.chdir(rootDir); - }); - - it('can run tests without re-running the blueprint (deprecated)', function() { - return expect(ember('electron:test')).to.eventually.be.fulfilled; - }); - }); }); function listenForPrompts(child) { diff --git a/node-tests/fixtures/project-missing-main/ember-electron/.compilerc b/node-tests/fixtures/project-missing-main/ember-electron/.compilerc deleted file mode 100644 index ed737469..00000000 --- a/node-tests/fixtures/project-missing-main/ember-electron/.compilerc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "application/javascript": { - "passthrough": true - } -} diff --git a/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js b/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js index b28fdd62..d72a322c 100644 --- a/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js +++ b/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js @@ -1,27 +1,25 @@ module.exports = { - 'make_targets': { - 'win32': [ - 'squirrel', - ], - 'darwin': [ - 'zip', - ], - 'linux': [ - 'deb', - 'rpm', - ], - }, - 'electronPackagerConfig': {}, - 'electronWinstallerConfig': { - 'name': '', - }, - 'electronInstallerDebian': {}, - 'electronInstallerRedhat': {}, - 'github_repository': { - 'owner': '', - 'name': '', - }, - 'windowsStoreConfig': { - 'packageName': '', - }, + "packagerConfig": {}, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "ee_app" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ] + }, + { + "name": "@electron-forge/maker-deb", + "config": {} + }, + { + "name": "@electron-forge/maker-rpm", + "config": {} + } + ] }; diff --git a/node-tests/fixtures/project-resources/ember-electron/.compilerc b/node-tests/fixtures/project-resources/ember-electron/.compilerc deleted file mode 100644 index ed737469..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/.compilerc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "application/javascript": { - "passthrough": true - } -} diff --git a/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js b/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js index b28fdd62..d72a322c 100644 --- a/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js +++ b/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js @@ -1,27 +1,25 @@ module.exports = { - 'make_targets': { - 'win32': [ - 'squirrel', - ], - 'darwin': [ - 'zip', - ], - 'linux': [ - 'deb', - 'rpm', - ], - }, - 'electronPackagerConfig': {}, - 'electronWinstallerConfig': { - 'name': '', - }, - 'electronInstallerDebian': {}, - 'electronInstallerRedhat': {}, - 'github_repository': { - 'owner': '', - 'name': '', - }, - 'windowsStoreConfig': { - 'packageName': '', - }, + "packagerConfig": {}, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "ee_app" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ] + }, + { + "name": "@electron-forge/maker-deb", + "config": {} + }, + { + "name": "@electron-forge/maker-rpm", + "config": {} + } + ] }; diff --git a/node-tests/fixtures/project-simple/ember-electron/.compilerc b/node-tests/fixtures/project-simple/ember-electron/.compilerc deleted file mode 100644 index ed737469..00000000 --- a/node-tests/fixtures/project-simple/ember-electron/.compilerc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "application/javascript": { - "passthrough": true - } -} diff --git a/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js b/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js index b28fdd62..d72a322c 100644 --- a/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js +++ b/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js @@ -1,27 +1,25 @@ module.exports = { - 'make_targets': { - 'win32': [ - 'squirrel', - ], - 'darwin': [ - 'zip', - ], - 'linux': [ - 'deb', - 'rpm', - ], - }, - 'electronPackagerConfig': {}, - 'electronWinstallerConfig': { - 'name': '', - }, - 'electronInstallerDebian': {}, - 'electronInstallerRedhat': {}, - 'github_repository': { - 'owner': '', - 'name': '', - }, - 'windowsStoreConfig': { - 'packageName': '', - }, + "packagerConfig": {}, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "ee_app" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ] + }, + { + "name": "@electron-forge/maker-deb", + "config": {} + }, + { + "name": "@electron-forge/maker-rpm", + "config": {} + } + ] }; diff --git a/node-tests/helpers/expect.js b/node-tests/helpers/expect.js index 61cb6916..27ca0407 100755 --- a/node-tests/helpers/expect.js +++ b/node-tests/helpers/expect.js @@ -1,6 +1,8 @@ const chai = require('chai'); const chaiAsPromised = require('chai-as-promised'); +const sinonChai = require('sinon-chai'); chai.use(chaiAsPromised); +chai.use(sinonChai); module.exports = chai.expect; diff --git a/node-tests/helpers/mocks/ef-handle.js b/node-tests/helpers/mocks/ef-handle.js deleted file mode 100644 index 5f2001ef..00000000 --- a/node-tests/helpers/mocks/ef-handle.js +++ /dev/null @@ -1,22 +0,0 @@ -class MockElectronForgeHandle { - constructor() { - this.handles = {}; - this.exitImmediately = true; - } - - trigger(method = '') { - if (this.handles[method]) { - this.handles[method](); - } - } - - on(handle, method) { - this.handles[handle] = method; - - if (this.exitImmediately && handle === 'exit') { - method(); - } - } -} - -module.exports = MockElectronForgeHandle; diff --git a/node-tests/helpers/mocks/ef-start.js b/node-tests/helpers/mocks/ef-start.js deleted file mode 100644 index a67cc0a9..00000000 --- a/node-tests/helpers/mocks/ef-start.js +++ /dev/null @@ -1,19 +0,0 @@ -const MockElectronForgeHandle = require('./ef-handle'); - -class MockElectronForgeStart { - constructor() { - this.calls = []; - this.handle = new MockElectronForgeHandle(); - this.default = this.default.bind(this); - } - - default() { - this.calls.push(arguments); - - return new Promise((resolve) => { - resolve(this.handle); - }); - } -} - -module.exports = MockElectronForgeStart; diff --git a/node-tests/integration/models/assembler-test.js b/node-tests/integration/models/assembler-test.js index 1f727b1a..fd3336f2 100644 --- a/node-tests/integration/models/assembler-test.js +++ b/node-tests/integration/models/assembler-test.js @@ -72,7 +72,6 @@ describe('Assembler model', () => { return assemble(fixturePath('project-simple')).then(({ directory }) => { let files = walkSync(directory, { directories: false }); expect(files).to.deep.equal([ - '.compilerc', 'ember-electron/electron-forge-config.js', 'ember-electron/main.js', 'ember/assets/app.css', diff --git a/node-tests/integration/utils/assemble-tree-test.js b/node-tests/integration/utils/assemble-tree-test.js index 62b33828..2e28a0c1 100644 --- a/node-tests/integration/utils/assemble-tree-test.js +++ b/node-tests/integration/utils/assemble-tree-test.js @@ -64,7 +64,6 @@ describe('assembleTree', () => { return buildTree(projectPath, { inputNode }).then(({ directory }) => { let files = walkSync(directory, { directories: false }); expect(files).to.deep.equal([ - '.compilerc', 'ember-electron/electron-forge-config.js', 'ember-electron/main.js', 'ember/assets/app.css', @@ -82,7 +81,6 @@ describe('assembleTree', () => { return buildTree(projectPath, { inputNode }).then(({ directory }) => { let files = walkSync(directory, { directories: false }); expect(files).to.deep.equal([ - '.compilerc', 'ember-electron/electron-forge-config.js', 'ember-electron/main.js', 'ember/assets/app.css', @@ -100,7 +98,6 @@ describe('assembleTree', () => { return buildTree(projectPath, { inputNode, platform: 'win32' }).then(({ directory }) => { let files = walkSync(directory, { directories: false }); expect(files).to.deep.equal([ - '.compilerc', 'ember-electron/electron-forge-config.js', 'ember-electron/main.js', 'ember-electron/resources/platform.txt', diff --git a/node-tests/unit/commands/electron-test.js b/node-tests/unit/commands/electron-test.js index 29bb4e26..6e6afd89 100755 --- a/node-tests/unit/commands/electron-test.js +++ b/node-tests/unit/commands/electron-test.js @@ -1,15 +1,36 @@ 'use strict'; const mockery = require('mockery'); -const MockElectronForgeStart = require('../../helpers/mocks/ef-start'); const RSVP = require('rsvp'); const MockUI = require('console-ui/mock'); const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); const MockProject = require('../../helpers/mocks/project'); const expect = require('../../helpers/expect'); +const sinon = require('sinon'); + +class MockHandle { + constructor() { + this.handles = {}; + this.exitImmediately = true; + } + + trigger(method = '') { + if (this.handles[method]) { + this.handles[method](); + } + } + + on(handle, method) { + this.handles[handle] = method; + + if (this.exitImmediately && handle === 'exit') { + method(); + } + } +} describe('electron command', () => { - let CommandUnderTest, commandOptions, mockElectronForgeStart, argv; + let CommandUnderTest, commandOptions, startStub, argv; before(() => { mockery.enable({ @@ -23,8 +44,8 @@ describe('electron command', () => { }); beforeEach(() => { - mockElectronForgeStart = new MockElectronForgeStart(); - mockery.registerMock('electron-forge/dist/api/start', mockElectronForgeStart); + startStub = sinon.stub().callsFake(() => new MockHandle()); + mockery.registerMock('@electron-forge/core', { api: { start: startStub } }); argv = ['./electron', './project']; const cmd = require('../../../lib/commands/electron'); @@ -121,7 +142,7 @@ describe('electron command', () => { const command = new CommandUnderTest(commandOptions).validateAndRun(); return expect(command).to.be.fulfilled.then(() => { - expect(mockElectronForgeStart.calls.length).to.equal(1); + expect(startStub).to.have.been.calledOnce; }); }); @@ -133,8 +154,8 @@ describe('electron command', () => { const command = new CommandUnderTest(commandOptions).validateAndRun(); return expect(command).to.be.fulfilled.then(() => { - expect(mockElectronForgeStart.calls.length).to.equal(1); - expect(mockElectronForgeStart.calls[0][0].args).to.deep.equal([]); + expect(startStub).to.have.been.calledOnce; + expect(startStub.firstCall.args[0].args).to.deep.equal([]); }); }); @@ -147,8 +168,8 @@ describe('electron command', () => { const command = new CommandUnderTest(commandOptions).validateAndRun(); return expect(command).to.be.fulfilled.then(() => { - expect(mockElectronForgeStart.calls.length).to.equal(1); - expect(mockElectronForgeStart.calls[0][0].args).to.deep.equal(['arg1', '--arg2', '--arg3=value']); + expect(startStub).to.have.been.calledOnce; + expect(startStub.firstCall.args[0].args).to.deep.equal(['arg1', '--arg2', '--arg3=value']); }); }); }); diff --git a/node-tests/unit/tasks/make-test.js b/node-tests/unit/tasks/make-test.js index ff71fbbf..e9de1af5 100644 --- a/node-tests/unit/tasks/make-test.js +++ b/node-tests/unit/tasks/make-test.js @@ -62,7 +62,7 @@ describe('MakeTask', () => { forgeMakeFail = false; mockery.registerMock('./package', MockPackageTask); - mockery.registerMock('electron-forge/dist/api/make', { default: mockForgeMake }); + mockery.registerMock('@electron-forge/core', { api: { make: mockForgeMake } }); const MakeTask = require('../../../lib/tasks/make'); task = new MakeTask({ diff --git a/node-tests/unit/tasks/package-test.js b/node-tests/unit/tasks/package-test.js index ce35a0bb..1e29ce09 100644 --- a/node-tests/unit/tasks/package-test.js +++ b/node-tests/unit/tasks/package-test.js @@ -74,7 +74,7 @@ describe('PackageTask', () => { process.env.NODE_INSTALLER = useYarn ? 'yarn' : 'npm'; }, }); - mockery.registerMock('electron-forge/dist/api/package', { default: mockForgePackage }); + mockery.registerMock('@electron-forge/core', { api: { package: mockForgePackage } }); const PackageTask = require('../../../lib/tasks/package'); task = new PackageTask({ diff --git a/package.json b/package.json index 9b069e0a..ec2ea77c 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "test-slow": "mocha ./node-tests/acceptance/**/*.js" }, "dependencies": { + "@electron-forge/core": "^6.0.0-beta.45", "broccoli-file-creator": "^2.1.1", "broccoli-funnel": "^2.0.2", "broccoli-merge-trees": "^3.0.2", @@ -55,7 +56,6 @@ "chalk": "^3.0.0", "console-ui": "^2.2.3", "core-object": "^3.1.0", - "electron-forge": "~5.2.4", "electron-protocol-serve": "^1.3.0", "ember-cli-babel": "^7.11.1", "ember-inspector": "^3.12.5", @@ -76,14 +76,9 @@ "devDependencies": { "@ember/optional-features": "^1.1.0", "babel-eslint": "^10.0.3", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-preset-env": "^1.2.2", - "babel-preset-react": "^6.23.0", "broccoli-asset-rev": "^3.0.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", - "electron-compile": "^6.4.3", - "electron-prebuilt-compile": "^4.0.0", "ember-auto-import": "^1.5.2", "ember-cli": "~3.14.0", "ember-cli-addon-docs": "^0.6.15", @@ -117,6 +112,7 @@ "sass": "^1.23.3", "semantic-release": "^15.10.6", "sinon": "^7.5.0", + "sinon-chai": "^3.3.0", "tmp": "^0.1.0", "walk-sync": "^2.0.2" }, @@ -136,8 +132,5 @@ "ember-engines" ] }, - "config": { - "forge": "./ember-electron/electron-forge-config.js" - }, "homepage": "https://adopted-ember-addons.github.io/ember-electron" } diff --git a/test-runner.js b/test-runner.js deleted file mode 100644 index f7f0ec61..00000000 --- a/test-runner.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * THIS FILE IS DEPRECATED. It has been moved to lib/test-support/ and - * modified, but is left here so apps that haven't rerun the blueprint to - * update the test-runner.js/test-main.js interactions will still function. - **/ - -// -// This script does double-duty. It can be included from testem-electron.js -// to define an Electron test runner like so: -// -// // testem.js -// module.exports = { -// "launchers": { -// "Electron": require("ember-electron/test-runner") -// }, -// "launch_in_ci": [ -// "Electron" -// ], -// "launch_in_dev": [ -// "Electron" -// ] -// } -// -// The runner is configured to invoke this script as a command-line executable -// with the proper arguments to run electron and communicate back to testem. -// - -module.exports = { - 'exe': 'node', - 'args': [__filename, '', '', '', ''], - 'protocol': 'browser', -}; - -if (require.main === module) { - let path = require('path'); - let fs = require('fs'); - let url = require('url'); - let fileUrl = require('file-url'); - let treeKill = require('tree-kill'); - let { start: efStart } = require('electron-forge'); - - let [, , buildDir, baseUrl, testPageUrl, id] = process.argv; - let emberAppDir = path.join(buildDir, 'ember'); - let baseObj = url.parse(baseUrl); - let testPageObj = url.parse(testPageUrl, true); - - // Build testem.js URL - baseObj.pathname = '/testem.js'; - let testemJsUrl = url.format(baseObj); - - // Process the HTML to: - // * inject our getTestemId() script so the testem client can extract the ID - // from the query params and be able to communicate with the testem server - // * rewrite the testem.js script to use an absolute URL pointing to the - // testem server - let testPagePath = path.join(emberAppDir, path.join.apply(null, testPageObj.pathname.split('/'))); - let htmlContent = fs.readFileSync(testPagePath, 'utf8').toString(); - htmlContent = htmlContent.replace(/^(\s*)/m, [ - '$1', - '$1 ', - ].join('\n')); - - htmlContent = htmlContent.replace(/src="[^"]*testem\.js"/, `src="${ testemJsUrl }"`); - let htmlPath = path.join(emberAppDir, 'tests', 'index-electron.html'); - fs.writeFileSync(htmlPath, htmlContent, 'utf8'); - - // Build a file: URL to our temp file, preserving query params from the test - // page and adding the testem id - let htmlFileObj = url.parse(fileUrl(htmlPath)); - htmlFileObj.query = testPageObj.query; - htmlFileObj.query.testemId = id; - let testUrl = url.format(htmlFileObj); - // On windows the testUrl argv is truncated before the first '&' by the time - // it reaches our main.js. This appears to have something to do with how - // electron-compile (I think) uses a batch script to invoke its cli.js, and - // the fact that '&' is a special shell character. So we do our own cheesy - // workaround. - testUrl = testUrl.replace(/&/g, '__amp__'); - - // Start electron - efStart({ appPath: buildDir, dir: buildDir, args: [testUrl] }).then(({ pid }) => { - // Clean up when we're killed - process.on('SIGTERM', () => { - treeKill(pid); - }); - }); -} else { - // We put this here because when this script is invoked as an executable, - // testem squashes the output so the warning isn't visible to the user. But - // when testem-electron.js requires this script, the output is going to - // stdout and is visible to the user. - const UI = require('console-ui'); - const ui = new UI({ - inputStream: process.stdin, - outputStream: process.stdout, - errorStream: process.stderr, - }); - - ui.writeDeprecateLine('This test-runner.js is deprecated. Please read https://github.com/adopted-ember-addons/ember-electron/blob/master/docs/faq/test-runner-deprecation.md for more information.'); -} diff --git a/tests/dummy/app/templates/docs/faq/structure.md b/tests/dummy/app/templates/docs/faq/structure.md index 263424d1..e265cf17 100644 --- a/tests/dummy/app/templates/docs/faq/structure.md +++ b/tests/dummy/app/templates/docs/faq/structure.md @@ -4,7 +4,6 @@ The `ember-electron` folder created at the root of your project by `ember-electr ``` ember-electron - ├── .compilerc ├── .electron-forge ├── main.js ├── resources @@ -18,7 +17,6 @@ The `resources` directories are meant for non-code resources, such as images, js ``` ember-electron ├── package.json - ├── .compilerc ├── ember │ ├── ├── ember-electron @@ -32,7 +30,6 @@ The `resources` directories are meant for non-code resources, such as images, js ``` - `package.json` is copied from the root of your project; -- `.compilerc` is copied from your ember-electron dir; - `ember` contains the built Ember app; and - `ember-electron` contains - `resources`, assembled as described; and diff --git a/yarn.lock b/yarn.lock index 3a7927c3..2fc8020d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -780,6 +780,176 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@electron-forge/async-ora@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/async-ora/-/async-ora-6.0.0-beta.45.tgz#908f3c3841ec14404ea6fcc9e978008bf334d9da" + integrity sha512-0v53aKolSjq2lxHZ/GZACkT0QnZRHIeaAmma7BjxK1b3oecUbDJDJLsxGDrJmDblt1nkQ/nY8/YSbs0wpiZMBg== + dependencies: + colors "^1.2.0" + debug "^4.1.0" + log-symbols "^3.0.0" + ora "^3.0.0" + pretty-ms "^5.0.0" + +"@electron-forge/core@^6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-6.0.0-beta.45.tgz#bed28100464650c47aa07c94c7d4d250a70aff14" + integrity sha512-wv1FnFjTTGWBLXnNkPEI9U6c8RVYXhIpOHDIn+s20L8xVaK+HxEOp3UeywT1Lb8A5Fv6kgT3LNjQCmjZHsSlMA== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.45" + "@electron-forge/installer-base" "6.0.0-beta.45" + "@electron-forge/installer-deb" "6.0.0-beta.45" + "@electron-forge/installer-dmg" "6.0.0-beta.45" + "@electron-forge/installer-exe" "6.0.0-beta.45" + "@electron-forge/installer-rpm" "6.0.0-beta.45" + "@electron-forge/installer-zip" "6.0.0-beta.45" + "@electron-forge/maker-base" "6.0.0-beta.45" + "@electron-forge/plugin-base" "6.0.0-beta.45" + "@electron-forge/publisher-base" "6.0.0-beta.45" + "@electron-forge/shared-types" "6.0.0-beta.45" + "@electron-forge/template-webpack" "6.0.0-beta.45" + "@electron/get" "^1.3.1" + colors "^1.2.0" + cross-spawn-promise "^0.10.1" + debug "^4.1.0" + electron-packager "^14.0.5" + electron-rebuild "^1.8.6" + find-up "^4.1.0" + fs-extra "^8.1.0" + glob "^7.1.4" + lodash.merge "^4.6.2" + lodash.template "^4.5.0" + log-symbols "^3.0.0" + node-fetch "^2.6.0" + nugget "^2.0.1" + resolve-package "^1.0.1" + semver "^6.3.0" + source-map-support "^0.5.13" + sudo-prompt "^9.0.0" + username "^5.1.0" + yarn-or-npm "^3.0.1" + +"@electron-forge/installer-base@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-base/-/installer-base-6.0.0-beta.45.tgz#d088e99da071cb432cb165788ca1f09d4d03194d" + integrity sha512-7zxOT+R1+eyp752Yq6V+9Wt7KGEyw8p7K+djoonOAcb2wk01SRzkQstKspy9bRCn0uXlSA/6qjHq/74vht7BLg== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.45" + +"@electron-forge/installer-darwin@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-darwin/-/installer-darwin-6.0.0-beta.45.tgz#d49e5c19f5457a77f5845c443d6962c33ac085f8" + integrity sha512-mv/7eZQQm5RwWahBMUg1pZetf8QPennOAqZDic2F4ultDJevk082CdDn/8pXRFHQlRNhhq0toXpm/1/dLOtwOQ== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.45" + "@electron-forge/installer-base" "6.0.0-beta.45" + fs-extra "^8.1.0" + sudo-prompt "^9.0.0" + +"@electron-forge/installer-deb@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-deb/-/installer-deb-6.0.0-beta.45.tgz#faeefa827f7a09a9de958ca36edb899c38c9e028" + integrity sha512-ppbgsmH4qyQroqw7UpcLCAZcsLfxKmJArgxNVU0UDcorQc/toqskgqnlCU2RQ0nwSEOBuBen1HNlH5yD4ewOsA== + dependencies: + "@electron-forge/installer-linux" "6.0.0-beta.45" + +"@electron-forge/installer-dmg@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-dmg/-/installer-dmg-6.0.0-beta.45.tgz#f25250df412a3cb8c01d10358ae24caf9404d8bb" + integrity sha512-TxRJJIShvr//Tz6G3EplqBQwZkLcujhTWcQtV3/yUciW66wVdl88BPH682llLjwao3cZaSY3KRx0anWshSgRoQ== + dependencies: + "@electron-forge/installer-darwin" "6.0.0-beta.45" + cross-spawn-promise "^0.10.1" + debug "^4.1.0" + fs-extra "^8.1.0" + +"@electron-forge/installer-exe@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-exe/-/installer-exe-6.0.0-beta.45.tgz#c3ce96f92ec9b03d1a133f24df88434f70beb0f3" + integrity sha512-kIpkd5EQjqtQTvnpE++8Z9REvn3jY0NhsYT9vw+g+AADN9NYb8kZa/aFtMJl10FHU4PbcP8hk9PEDj6Z1exVxQ== + dependencies: + "@electron-forge/installer-base" "6.0.0-beta.45" + open "^6.4.0" + +"@electron-forge/installer-linux@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-linux/-/installer-linux-6.0.0-beta.45.tgz#c98f645fadc2d9c2751a9f38438c077ce04a9076" + integrity sha512-zpCuKLCoLpeHrL6EZ2eLRq8B3a0ycD5tSHYWdvwEwfuBEUFqKxnx9KCehrH/JOh5vCtcGM2vP3ZfS2rap2w5xQ== + dependencies: + "@electron-forge/installer-base" "6.0.0-beta.45" + sudo-prompt "^9.0.0" + +"@electron-forge/installer-rpm@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-rpm/-/installer-rpm-6.0.0-beta.45.tgz#8935c985d065170b8e45504d5083bca5359b168f" + integrity sha512-7xWn+1Q8fuk9rw7BGlPWbkZSy4Oy8WfztEWiHXPAR5cDQK4R+1/vPxkCAxIhdlUAZcdF29lGKcTqfW3GFK9aKA== + dependencies: + "@electron-forge/installer-linux" "6.0.0-beta.45" + +"@electron-forge/installer-zip@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-zip/-/installer-zip-6.0.0-beta.45.tgz#6b26dba3e1b7db6c1e859a86d9f100b33e7d4a00" + integrity sha512-+eKKN52pnuExC5zfPBW3LzrWZbe1SxGetDiKS0AVlTEWCMnaeXWJTWMtG/aNbjIahHnTDMutsSLM4qfeIT86kw== + dependencies: + "@electron-forge/installer-darwin" "6.0.0-beta.45" + cross-spawn-promise "^0.10.1" + fs-extra "^8.1.0" + +"@electron-forge/maker-base@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.0-beta.45.tgz#63c52b173307139fbac636c5ca59c4adcf178069" + integrity sha512-x/NKMfHqhpW+a+NbAFKmTcVAjZJJeDkfC3wIfnjJB2CiZ8iRFyXJN8mklAt8Bou5y9ABrSAbQp+e9Hx6mNI6FA== + dependencies: + "@electron-forge/shared-types" "6.0.0-beta.45" + fs-extra "^8.1.0" + which "^1.3.1" + +"@electron-forge/plugin-base@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/plugin-base/-/plugin-base-6.0.0-beta.45.tgz#233cffb84ba55c0388243fcf1182340c85cf9671" + integrity sha512-CovVnCUQeACh2YWJ0KT5i7kIk4ocxKJ1hABIvFvDkV0gCV2HaFhRQzVWMEPJQgPVJFM4zcVnq4IfyST7evc0zg== + dependencies: + "@electron-forge/shared-types" "6.0.0-beta.45" + +"@electron-forge/publisher-base@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/publisher-base/-/publisher-base-6.0.0-beta.45.tgz#77788e91993f0e7fd4f75e4f65b6b92353183c40" + integrity sha512-DgvXg5e6B4RuNlTdhaMZiVg+ENrl1EBBC5CxL++4N+hTQ0N5NyGbAQob0y0/MStyzuj7O0nL+jVOX+jp4OBjXw== + +"@electron-forge/shared-types@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.0-beta.45.tgz#aa3b4e6f72609fdd088ee3fb433d6ac141e07389" + integrity sha512-XabfYQ1PquG9MWlOi784wuBodlPDcu/7mG0z+dGidDY3jgYBiLmf1+qtivXQDRbl8ULrCVWfuy4CNWQlc8/PTA== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.45" + "@types/electron-packager" "^14.0.0" + electron-rebuild "^1.8.6" + ora "^3.0.0" + +"@electron-forge/template-webpack@6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-6.0.0-beta.45.tgz#c307599c1800271b712e4a4e6289fb51a3bb566a" + integrity sha512-Acm2EX62SyuZPwAGJoQoyw9olXBraxQxscX5pVZDFB0hI40uI5GO+q6T6IZLoaXi6w0kNV2Rhkb3iHyyw2B+lw== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.45" + "@electron-forge/shared-types" "6.0.0-beta.45" + fs-extra "^8.1.0" + +"@electron/get@^1.3.1", "@electron/get@^1.6.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.7.0.tgz#be5cd8cfd142964fb3d8d2f4c895790a3f4c4804" + integrity sha512-Xzo+xLQ+gwmGywFnFuG7HNIALPVJOCkvKagGxSXU1LC3s/j3h2Nku9OdwJ4KDkITeUuXfvAO5KS8rLGcmAunNQ== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" + fs-extra "^8.1.0" + got "^9.6.0" + sanitize-filename "^1.6.2" + sumchecker "^3.0.0" + optionalDependencies: + global-agent "^2.0.2" + global-tunnel-ng "^2.7.1" + "@ember-data/-build-infra@3.14.0": version "3.14.0" resolved "https://registry.yarnpkg.com/@ember-data/-build-infra/-/-build-infra-3.14.0.tgz#d81242b018038b0bf39bceaa1b0df167398f60b8" @@ -1082,21 +1252,6 @@ once "^1.4.0" universal-user-agent "^4.0.0" -"@octokit/rest@^15.2.6": - version "15.18.3" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.3.tgz#ff4ecbb784ca286c40cc1d568abceda6d99b36fc" - integrity sha512-oHABAvvC83tPIuvUfWRaw9eLThFrCxBgywl+KvEwfTFjoCrMOfEaMh0r39+Ub/EEbV345GJiMzN+zPZ4kqOvbA== - dependencies: - before-after-hook "^1.1.0" - btoa-lite "^1.0.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lodash "^4.17.4" - node-fetch "^2.1.1" - universal-user-agent "^2.0.0" - url-template "^2.0.8" - "@octokit/rest@^16.27.0": version "16.35.0" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.35.0.tgz#7ccc1f802f407d5b8eb21768c6deca44e7b4c0d8" @@ -1122,35 +1277,6 @@ dependencies: "@types/node" ">= 8" -"@paulcbetts/mime-db@~1.22.0": - version "1.22.4" - resolved "https://registry.yarnpkg.com/@paulcbetts/mime-db/-/mime-db-1.22.4.tgz#b8ff8e78087a40992990f702f8d9c65499be2ef1" - integrity sha1-uP+OeAh6QJkpkPcC+NnGVJm+LvE= - -"@paulcbetts/mime-types@^2.1.10": - version "2.1.10" - resolved "https://registry.yarnpkg.com/@paulcbetts/mime-types/-/mime-types-2.1.10.tgz#8aa531f1f68fac80842e79aeff86797c309227dd" - integrity sha1-iqUx8faPrICELnmu/4Z5fDCSJ90= - dependencies: - "@paulcbetts/mime-db" "~1.22.0" - -"@paulcbetts/vueify@9.4.3": - version "9.4.3" - resolved "https://registry.yarnpkg.com/@paulcbetts/vueify/-/vueify-9.4.3.tgz#36e2d23bd7c019e8ade48fc857f5a376431e2a54" - integrity sha1-NuLSO9fAGeit5I/IV/WjdkMeKlQ= - dependencies: - chalk "^1.1.1" - convert-source-map "^1.2.0" - cssnano "^3.3.2" - hash-sum "^1.0.2" - lru-cache "^4.0.0" - object-assign "^4.0.1" - source-map "^0.5.6" - through "^2.3.6" - vue-hot-reload-api "^2.0.1" - vue-template-compiler "^2.0.0-alpha.8" - vue-template-es2015-compiler "^1.4.2" - "@semantic-release/commit-analyzer@^6.1.0": version "6.3.3" resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.3.tgz#885f7e46e2f0aef23a23be0904dbf18d6ece45ca" @@ -1224,6 +1350,11 @@ lodash "^4.17.4" read-pkg-up "^7.0.0" +"@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== + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -1258,6 +1389,13 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== +"@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/acorn@^4.0.3": version "4.0.5" resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.5.tgz#e29fdf884695e77be4e99e67d748f5147255752d" @@ -1275,6 +1413,16 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/electron-packager@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@types/electron-packager/-/electron-packager-14.0.0.tgz#f6dab1542fe02a3dd235d9bf66c8cb365f123902" + integrity sha512-n47/AbT4DEYPyXtES2myPyKCxVE3hICAB3MnpoVg+Ba8CLBGOpUUsNJ5fyLhfKt5N06sT9nTk4eAc+rtYVpvTQ== + dependencies: + "@electron/get" "^1.3.1" + "@types/node" "*" + electron-notarize "^0.1.1" + electron-osx-sign "^0.4.11" + "@types/ember@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@types/ember/-/ember-3.1.1.tgz#401810fa3ba911855d609d334ea77990b9b94802" @@ -1428,7 +1576,7 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== -"@types/glob@*", "@types/glob@^7.1.1": +"@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== @@ -1459,16 +1607,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.8.tgz#dab418655af39ce2fa99286a0bed21ef8072ac9d" integrity sha512-XLla8N+iyfjvsa0KKV+BP/iGSoTmwxsu5Ci5sM33z9TjohF72DEz95iNvD6pPmemvbQgxAv/909G73gUn8QR7w== -"@types/node@^7.0.12": - version "7.10.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.10.9.tgz#4343e3b009f8cf5e1ed685e36097b74b4101e880" - integrity sha512-usSpgoUsRtO5xNV5YEPU8PPnHisFx8u0rokj1BPVn/hDF7zwUDzVLiuKZM38B7z8V2111Fj6kd4rGtQFUZpNOw== - -"@types/node@^8.0.24": - version "8.10.59" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.59.tgz#9e34261f30183f9777017a13d185dfac6b899e04" - integrity sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ== - "@types/node@^9.6.0": version "9.6.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.55.tgz#7cc1358c9c18e71f6c020e410962971863232cf5" @@ -1670,11 +1808,6 @@ JSONStream@^1.0.4, JSONStream@^1.3.4, JSONStream@^1.3.5: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= - abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -1685,11 +1818,6 @@ abbrev@1, abbrev@~1.1.1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= - abortcontroller-polyfill@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.4.0.tgz#0d5eb58e522a461774af8086414f68e1dda7a6c4" @@ -1710,13 +1838,6 @@ acorn-dynamic-import@^3.0.0: dependencies: acorn "^5.0.0" -acorn-globals@^1.0.3, acorn-globals@^1.0.4: - version "1.0.9" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" - integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= - dependencies: - acorn "^2.1.0" - acorn-globals@^4.1.0, acorn-globals@^4.3.0: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" @@ -1735,16 +1856,6 @@ acorn-walk@^6.0.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" - integrity sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ= - -acorn@^2.1.0, acorn@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" - integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= - acorn@^5.0.0, acorn@^5.2.1, acorn@^5.5.3, acorn@^5.6.2: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" @@ -1804,14 +1915,6 @@ ajv-keywords@^3.1.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" @@ -1822,20 +1925,6 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - amd-name-resolver@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/amd-name-resolver/-/amd-name-resolver-1.2.0.tgz#fc41b3848824b557313897d71f8d5a0184fbe679" @@ -1873,7 +1962,7 @@ ansi-escapes@^1.1.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= -ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -1925,11 +2014,6 @@ ansi-to-html@^0.6.6: dependencies: entities "^1.1.2" -ansi@^0.3.0, ansi@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - integrity sha1-DELU+xcWDVqa8eSEus4cZpIsGyE= - ansicolors@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" @@ -1945,7 +2029,7 @@ ansistyles@~0.1.3: resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= -any-promise@^1.0.0, any-promise@^1.1.0: +any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -1973,23 +2057,6 @@ aot-test-generators@^0.1.0: dependencies: jsesc "^2.5.0" -appdmg@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/appdmg/-/appdmg-0.4.5.tgz#47a827865b8a0be48abb3522567e3493d2f1b838" - integrity sha1-R6gnhluKC+SKuzUiVn40k9LxuDg= - dependencies: - async "^1.4.2" - cp-file "^3.1.0" - ds-store "^0.1.5" - execa "^0.4.0" - fs-temp "^1.0.0" - fs-xattr "^0.1.14" - image-size "^0.5.0" - is-my-json-valid "^2.13.1" - minimist "^1.1.3" - parse-color "^1.0.0" - repeat-string "^1.5.4" - applause@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/applause/-/applause-1.2.2.tgz#a8468579e81f67397bb5634c29953bedcd0f56c0" @@ -2009,20 +2076,6 @@ aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -archiver@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-0.11.0.tgz#98177da7a6c0192b7f2798f30cd6eab8abd76690" - integrity sha1-mBd9p6bAGSt/J5jzDNbquKvXZpA= - dependencies: - async "~0.9.0" - buffer-crc32 "~0.2.1" - glob "~3.2.6" - lazystream "~0.1.0" - lodash "~2.4.1" - readable-stream "~1.0.26" - tar-stream "~0.4.0" - zip-stream "~0.4.0" - archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -2063,11 +2116,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-buffer-from-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/array-buffer-from-string/-/array-buffer-from-string-0.1.0.tgz#3b14351f86149d84efc612c5ada7ed85169d7b07" - integrity sha1-OxQ1H4YUnYTvxhLFrafthRadewc= - array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -2142,83 +2190,22 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@^2.0.0, asap@~2.0.3: +asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d" - integrity sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0= - -asar@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-0.11.0.tgz#b926e792c315f8c048c43371e325b09c97a76464" - integrity sha1-uSbnksMV+MBIxDNx4yWwnJenZGQ= - dependencies: - chromium-pickle-js "^0.1.0" - commander "^2.9.0" - cuint "^0.2.1" - glob "^6.0.4" - minimatch "^3.0.0" - mkdirp "^0.5.0" - mksnapshot "^0.3.0" - -asar@^0.12.0: - version "0.12.4" - resolved "https://registry.yarnpkg.com/asar/-/asar-0.12.4.tgz#2dd3f116882eab8c0f23b754792a82a7d9fce171" - integrity sha1-LdPxFoguq4wPI7dUeSqCp9n84XE= - dependencies: - chromium-pickle-js "^0.2.0" - commander "^2.9.0" - cuint "^0.2.1" - glob "^6.0.4" - minimatch "^3.0.3" - mkdirp "^0.5.0" - mksnapshot "^0.3.0" - tmp "0.0.28" - -asar@^0.13.0: - version "0.13.1" - resolved "https://registry.yarnpkg.com/asar/-/asar-0.13.1.tgz#dfc73f574a7db256b09ba62d1f0e95cd4a6cb8d3" - integrity sha512-HJnZadTbDVDhBDv3tMyDov3ZnwMYYmz80/+a7S6cFPvulUyRz55UG5hOyHeWSP1iZud6vjFq8GOYM6xxtxJECQ== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^2.9.0" - cuint "^0.2.1" - glob "^6.0.4" - minimatch "^3.0.3" - mkdirp "^0.5.0" - mksnapshot "^0.3.0" - tmp "0.0.28" - -asar@^0.14.0: - version "0.14.6" - resolved "https://registry.yarnpkg.com/asar/-/asar-0.14.6.tgz#0e56ff7fad97470845391c3a2b8690b7cabef6d8" - integrity sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^2.9.0" - cuint "^0.2.1" - glob "^6.0.4" - minimatch "^3.0.3" - mkdirp "^0.5.0" - mksnapshot "^0.3.4" - tmp "0.0.28" - -asar@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-1.0.0.tgz#5624ffa1369aa929871dfc036de02c20871bdc2e" - integrity sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg== +asar@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/asar/-/asar-2.0.1.tgz#8518a1c62c238109c15a5f742213e83a09b9fd38" + integrity sha512-Vo9yTuUtyFahkVMFaI6uMuX6N7k5DWa6a/8+7ov0/f8Lq9TVR0tUjzSzxQSxT1Y+RJIZgnP7BVb6Uhi+9cjxqA== dependencies: chromium-pickle-js "^0.2.0" - commander "^2.19.0" + commander "^2.20.0" cuint "^0.2.2" glob "^7.1.3" minimatch "^3.0.4" mkdirp "^0.5.1" - pify "^4.0.1" tmp-promise "^1.0.5" asn1.js@^4.0.0: @@ -2257,11 +2244,6 @@ assert-plus@^0.1.5: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" integrity sha1-7nQAlBMALYTOxyGcasgRgS5yMWA= -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -2321,12 +2303,7 @@ async-promise-queue@^1.0.3, async-promise-queue@^1.0.5: async "^2.4.1" debug "^2.6.8" -async@1.x, async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.0.0, async@^2.1.5, async@^2.4.1, async@^2.6.2: +async@^2.4.1, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -2363,18 +2340,6 @@ author-regex@^1.0.0: resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450" integrity sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA= -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - autoprefixer@^7.0.0: version "7.2.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.6.tgz#256672f86f7c735da849c4f07d008abb056067dc" @@ -2387,45 +2352,17 @@ autoprefixer@^7.0.0: postcss "^6.0.17" postcss-value-parser "^3.2.3" -aws-sdk@^2.9.0: - version "2.573.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.573.0.tgz#e4d35b6ac7e039eda2b1a365574380521b87e065" - integrity sha512-NC6A0d96aowA1L1UW8idNTUnDTzjoCysiZY0rDiumMu9jhAouLp07ffc2sXgTWg9pWvXrEex2Aeps9oQWq/6OA== - dependencies: - buffer "^4.9.1" - events "^1.1.1" - ieee754 "^1.1.13" - jmespath "^0.15.0" - querystring "^0.2.0" - sax "^1.2.1" - url "^0.10.3" - uuid "^3.3.2" - xml2js "^0.4.19" - -aws-sdk@~2.0.31: - version "2.0.31" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.0.31.tgz#e72cf1fdc69015bd9fd2bdf3d3b88c16507d268e" - integrity sha1-5yzx/caQFb2f0r3z07iMFlB9Jo4= - dependencies: - xml2js "0.2.6" - xmlbuilder "0.4.2" - aws-sign2@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" integrity sha1-xXED96F/wDfwLXwuZLYC6iI/fWM= -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.2.1, aws4@^1.8.0: +aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== @@ -2439,7 +2376,7 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.13.2, babel-core@^6.26.0, babel-core@^6.26.3: +babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== @@ -2499,15 +2436,6 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" @@ -2629,11 +2557,6 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-array-includes@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/babel-plugin-array-includes/-/babel-plugin-array-includes-2.0.3.tgz#cf5452e81c7b803fb7959f1045ac88e2ec28ff76" - integrity sha1-z1RS6Bx7gD+3lZ8QRayI4uwo/3Y= - babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" @@ -2710,16 +2633,11 @@ babel-plugin-module-resolver@^3.1.1, babel-plugin-module-resolver@^3.2.0: reselect "^3.0.1" resolve "^1.4.0" -babel-plugin-syntax-async-functions@^6.1.4, babel-plugin-syntax-async-functions@^6.8.0: +babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= -babel-plugin-syntax-async-generators@^6.1.4: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= - babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" @@ -2730,16 +2648,6 @@ babel-plugin-syntax-exponentiation-operator@^6.8.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0= - -babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" @@ -2750,7 +2658,7 @@ babel-plugin-syntax-trailing-function-commas@^6.22.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= -babel-plugin-transform-async-to-generator@^6.1.4, babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: +babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= @@ -2807,7 +2715,7 @@ babel-plugin-transform-es2015-computed-properties@^6.22.0: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.0.2, babel-plugin-transform-es2015-destructuring@^6.23.0: +babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= @@ -2854,7 +2762,7 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015 babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.0.12, babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: version "6.26.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== @@ -2890,7 +2798,7 @@ babel-plugin-transform-es2015-object-super@^6.22.0: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.0.2, babel-plugin-transform-es2015-parameters@^6.23.0: +babel-plugin-transform-es2015-parameters@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= @@ -2910,14 +2818,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.22.0: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-spread@^6.1.4, babel-plugin-transform-es2015-spread@^6.22.0: +babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.0.2, babel-plugin-transform-es2015-sticky-regex@^6.22.0: +babel-plugin-transform-es2015-sticky-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= @@ -2940,7 +2848,7 @@ babel-plugin-transform-es2015-typeof-symbol@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.0.2, babel-plugin-transform-es2015-unicode-regex@^6.22.0: +babel-plugin-transform-es2015-unicode-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= @@ -2958,14 +2866,6 @@ babel-plugin-transform-exponentiation-operator@^6.22.0: babel-plugin-syntax-exponentiation-operator "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988= - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - babel-plugin-transform-object-rest-spread@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" @@ -2974,38 +2874,6 @@ babel-plugin-transform-object-rest-spread@^6.26.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-plugin-transform-react-display-name@^6.23.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" - integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24= - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY= - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM= - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" @@ -3030,7 +2898,7 @@ babel-polyfill@^6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-env@^1.2.2, babel-preset-env@^1.3.2, babel-preset-env@^1.7.0: +babel-preset-env@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== @@ -3066,41 +2934,7 @@ babel-preset-env@^1.2.2, babel-preset-env@^1.3.2, babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" -babel-preset-es2016-node5@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-es2016-node5/-/babel-preset-es2016-node5-1.1.2.tgz#5ec43d2d8bf41d5315804740cc38f0ddeab26986" - integrity sha1-XsQ9LYv0HVMVgEdAzDjw3eqyaYY= - dependencies: - babel-plugin-syntax-async-functions "^6.1.4" - babel-plugin-syntax-async-generators "^6.1.4" - babel-plugin-transform-async-to-generator "^6.1.4" - babel-plugin-transform-es2015-destructuring "^6.0.2" - babel-plugin-transform-es2015-modules-commonjs "^6.0.12" - babel-plugin-transform-es2015-parameters "^6.0.2" - babel-plugin-transform-es2015-spread "^6.1.4" - babel-plugin-transform-es2015-sticky-regex "^6.0.2" - babel-plugin-transform-es2015-unicode-regex "^6.0.2" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0= - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-react@^6.23.0, babel-preset-react@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A= - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-register@^6.16.3, babel-register@^6.26.0: +babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= @@ -3162,7 +2996,7 @@ babel6-plugin-strip-class-callcheck@^6.0.0: resolved "https://registry.yarnpkg.com/babel6-plugin-strip-class-callcheck/-/babel6-plugin-strip-class-callcheck-6.0.0.tgz#de841c1abebbd39f78de0affb2c9a52ee228fddf" integrity sha1-3oQcGr6705943gr/ssmlLuIo/d8= -babylon@^6.17.0, babylon@^6.18.0: +babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== @@ -3179,21 +3013,11 @@ backo2@1.0.2: resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= - 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= -base32-encode@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-0.1.1.tgz#7510f6aa44e2c695b7efcb2673a454f8f8505ea0" - integrity sha512-jjc+6TC8PXrsxJ4CQr9ibioNhhAM1p/RvS9hy3Q+cxPphvXmLnFSkXoen2XXzNBrYjdmzajRtbFDl1x28F5F4A== - base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" @@ -3204,11 +3028,6 @@ base64-js@0.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.2.tgz#024f0f72afa25b75f9c0ee73cd4f55ec1bed9784" integrity sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q= -base64-js@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" - integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE= - base64-js@^1.0.2, base64-js@^1.2.3: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" @@ -3246,11 +3065,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" - integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== - before-after-hook@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" @@ -3289,26 +3103,11 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -binary@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - "binaryextensions@1 || 2": version "2.2.0" resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.2.0.tgz#e7c6ba82d4f5f5758c26078fe8eea28881233311" integrity sha512-bHhs98rj/7i/RZpCSJ3uk55pLXOItjIrh2sRQZSM6OoktScX+LxJzvlU+FELp9j3TdcddTmmYArLSGptCTwjuw== -bl@^0.9.0: - version "0.9.5" - resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" - integrity sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ= - dependencies: - readable-stream "~1.0.26" - blank-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/blank-object/-/blank-object-1.0.2.tgz#f990793fbe9a8c8dd013fb3219420bec81d5f4b9" @@ -3319,14 +3118,7 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^3.1.1, bluebird@^3.3.4, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@^3.1.1, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== @@ -3367,6 +3159,11 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +boolean@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-2.0.3.tgz#da4a5c5a85231d64dd4f6022a0fa5a66adc76653" + integrity sha512-iHzXeFCXWrpjYE7DToXGCBPGZf0eVISqzL+4sgrOSYEKXnb59WHPFvGTTyCj6zJ/MuuLAxEn8zPkrTHHzlt3IA== + boom@0.4.x: version "0.4.2" resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" @@ -3374,13 +3171,6 @@ boom@0.4.x: dependencies: hoek "0.9.x" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= - dependencies: - hoek "2.x.x" - bops@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/bops/-/bops-0.0.3.tgz#c5cbf6fea8be7401ca5ea6d1679e6c4e8b407c79" @@ -3423,13 +3213,6 @@ boxen@^1.2.1: term-size "^1.2.0" widest-line "^2.0.0" -bplist-creator@~0.0.3: - version "0.0.8" - resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" - integrity sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA== - dependencies: - stream-buffers "~2.2.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -4229,14 +4012,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - browserslist@^2.11.3: version "2.11.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" @@ -4274,11 +4049,6 @@ btoa-lite@^1.0.0: resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= -btoa@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - 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" @@ -4292,21 +4062,11 @@ buffer-alloc@^1.2.0: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" -buffer-crc32@^0.2.5, buffer-crc32@~0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - 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@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" - integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -4317,7 +4077,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^4.3.0, buffer@^4.9.1: +buffer@^4.3.0: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== @@ -4326,11 +4086,6 @@ buffer@^4.3.0, buffer@^4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= - builtin-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" @@ -4420,6 +4175,19 @@ cacheable-request@^2.1.1: normalize-url "2.0.1" responselike "1.0.2" +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" + calculate-cache-key-for-tree@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/calculate-cache-key-for-tree/-/calculate-cache-key-for-tree-2.0.0.tgz#7ac57f149a4188eacb0a45b210689215d3fef8d6" @@ -4476,21 +4244,11 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -4508,16 +4266,6 @@ can-symlink@^1.0.0: dependencies: tmp "0.0.28" -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -4528,11 +4276,6 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30001010" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001010.tgz#1bcbfb0afce73ae5308964db0bafac814ee44c0a" - integrity sha512-frpo0HYuu8tOQqTq/B4LVBDUHFwAeEHLHmSMzG90Ymgq4ll4EArwpqFzNANfQaQwD/q3IIZqQYxftbprZnt8pA== - caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001004: version "1.0.30001010" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001010.tgz#397a14034d384260453cc81994f494626d34b938" @@ -4571,14 +4314,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - chai-as-promised@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" @@ -4598,14 +4333,7 @@ chai@^4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= - dependencies: - traverse ">=0.3.0 <0.4" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -4633,16 +4361,6 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -character-parser@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-1.2.1.tgz#c0dde4ab182713b919b970959a123ecc1a30fcd6" - integrity sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY= - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -4665,19 +4383,6 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -cheerio@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" - integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "~3.8.1" - lodash "^4.1.0" - optionalDependencies: - jsdom "^7.0.2" - cheerio@^0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" @@ -4746,11 +4451,6 @@ chrome-trace-event@^1.0.0: dependencies: tslib "^1.9.0" -chromium-pickle-js@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz#1d48b107d82126a2f3e211c2ea25f803ba551b21" - integrity sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE= - 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" @@ -4781,13 +4481,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== - dependencies: - chalk "^1.1.3" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -4812,7 +4505,7 @@ clean-css-promise@^0.1.0: clean-css "^3.4.5" pinkie-promise "^2.0.0" -clean-css@^3.1.9, clean-css@^3.4.5: +clean-css@^3.4.5: version "3.4.28" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.28.tgz#bf1945e82fc808f55695e6ddeaec01400efd03ff" integrity sha1-vxlF6C/ICPVWlebd6uwBQA79A/8= @@ -4907,24 +4600,6 @@ clipboard@^2.0.0: select "^1.1.2" tiny-emitter "^2.0.0" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -4943,7 +4618,7 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-response@1.0.2: +clone-response@1.0.2, 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= @@ -4982,19 +4657,12 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= - dependencies: - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -coffee-script@^1.10.0, coffee-script@^1.9.0: +coffee-script@^1.10.0: version "1.12.7" resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== @@ -5007,7 +4675,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.3.0, color-convert@^1.9.0: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -5021,66 +4689,26 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-convert@~0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= - color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@^1.1.2, colors@^1.3.3: +colors@^1.1.2, colors@^1.2.0, colors@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -colors@~0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" - integrity sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w= - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - columnify@~1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -5089,7 +4717,7 @@ columnify@~1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -5108,28 +4736,18 @@ commander@2.12.2: resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" integrity sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA== -commander@2.8.x, commander@~2.8.1: +commander@2.8.x: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= dependencies: graceful-readlink ">= 1.0.0" -commander@^2.11.0, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0, commander@^2.6.0, commander@^2.9.0, commander@~2.20.3: +commander@^2.11.0, commander@^2.15.1, commander@^2.20.0, commander@^2.6.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" - integrity sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E= - -commander@~2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" - integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= - comment-regex@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/comment-regex/-/comment-regex-1.0.1.tgz#e070d2c4db33231955d0979d27c918fcb6f93565" @@ -5178,15 +4796,6 @@ component-inherit@0.0.3: resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= -compress-commons@~0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-0.1.6.tgz#0c740870fde58cba516f0ac0c822e33a0b85dfa3" - integrity sha1-DHQIcP3ljLpRbwrAyCLjOguF36M= - dependencies: - buffer-crc32 "~0.2.1" - crc32-stream "~0.3.1" - readable-stream "~1.0.26" - compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -5212,7 +4821,7 @@ concat-map@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, concat-stream@^1.4.7, concat-stream@^1.5.0: +concat-stream@^1.4.7, concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -5222,7 +4831,7 @@ concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@^1.1.12: +config-chain@^1.1.11, config-chain@^1.1.12: 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== @@ -5304,13 +4913,6 @@ consolidate@^0.15.1: dependencies: bluebird "^3.1.1" -constantinople@~3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.0.2.tgz#4b945d9937907bcd98ee575122c3817516544141" - integrity sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE= - dependencies: - acorn "^2.1.0" - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -5378,7 +4980,7 @@ conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.7: through2 "^3.0.0" trim-off-newlines "^1.0.0" -convert-source-map@^1.2.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -5440,6 +5042,11 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== +core-js@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.1.tgz#76dd6828412900ab27c8ce0b22e6114d7ce21b18" + integrity sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg== + core-object@2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/core-object/-/core-object-2.0.6.tgz#60134b9c40ff69b27bc15e82db945e4df782961b" @@ -5477,27 +5084,6 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cp-file@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-3.2.0.tgz#6f83616254624f0ad58aa4aa8d076f026be7e188" - integrity sha1-b4NhYlRiTwrViqSqjQdvAmvn4Yg= - dependencies: - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nested-error-stacks "^1.0.1" - object-assign "^4.0.1" - pify "^2.3.0" - pinkie-promise "^2.0.0" - readable-stream "^2.1.4" - -crc32-stream@~0.3.1: - version "0.3.4" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-0.3.4.tgz#73bc25b45fac1db6632231a7bfce8927e9f06552" - integrity sha1-c7wltF+sHbZjIjGnv86JJ+nwZVI= - dependencies: - buffer-crc32 "~0.2.1" - readable-stream "~1.0.24" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -5536,14 +5122,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn-async@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" - integrity sha1-hF/wwINKPe2dFg2sptOQkGuyiMw= - dependencies: - lru-cache "^4.0.0" - which "^1.2.8" - cross-spawn-promise@^0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/cross-spawn-promise/-/cross-spawn-promise-0.10.1.tgz#db9cb4c50c60b72a15be049b78122ce382d87b10" @@ -5551,7 +5129,7 @@ cross-spawn-promise@^0.10.1: dependencies: cross-spawn "^5.1.0" -cross-spawn@^5.0.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= @@ -5580,6 +5158,13 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +cross-zip@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-2.1.6.tgz#344d3ba9488609942987d815bb84860cff3d9491" + integrity sha512-xLIETNkzRcU6jGRzenJyRFxahbtP4628xEKMTI/Ql0Vu8m4h8M7uRLVi7E5OYHuJ6VQPsG4icJumKAFUvfm0+A== + dependencies: + rimraf "^3.0.0" + crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -5592,13 +5177,6 @@ cryptiles@0.2.x: dependencies: boom "0.4.x" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= - dependencies: - boom "2.x.x" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -5626,46 +5204,13 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -cson-parser@^1.0.6, cson-parser@^1.1.0: +cson-parser@^1.1.0: version "1.3.5" resolved "https://registry.yarnpkg.com/cson-parser/-/cson-parser-1.3.5.tgz#7ec675e039145533bf2a6a856073f1599d9c2d24" integrity sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ= dependencies: coffee-script "^1.10.0" -cson@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/cson/-/cson-3.0.2.tgz#83ee9089db3c254bec1e98e498d9aacf11adcc54" - integrity sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ= - dependencies: - coffee-script "^1.9.0" - cson-parser "^1.0.6" - extract-opts "^3.0.1" - requirefresh "^2.0.0" - safefs "^4.0.0" - -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-parse@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.0.4.tgz#38b0503fbf9da9f54e9c1dbda60e145c77117bdd" - integrity sha1-OLBQP7+dqfVOnB29pg4UXHcRe90= - -css-parse@1.7.x: - version "1.7.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" - integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= - -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= - dependencies: - css "^2.0.0" - css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" @@ -5691,11 +5236,6 @@ css-select@~1.2.0: domutils "1.5.1" nth-check "~1.0.1" -css-stringify@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/css-stringify/-/css-stringify-1.0.5.tgz#b0d042946db2953bb9d292900a6cb5f6d0122031" - integrity sha1-sNBClG2ylTu50pKQCmy19tASIDE= - css-tree@1.0.0-alpha.29: version "1.0.0-alpha.29" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" @@ -5727,62 +5267,6 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -css@~1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/css/-/css-1.0.8.tgz#9386811ca82bccc9ee7fb5a732b1e2a317c8a3e7" - integrity sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c= - dependencies: - css-parse "1.0.4" - css-stringify "1.0.5" - -cssnano@^3.3.2: - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - csso@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" @@ -5790,26 +5274,11 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0", "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -"cssstyle@>= 0.2.29 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= - dependencies: - cssom "0.3.x" - cssstyle@^1.0.0, cssstyle@^1.1.1: version "1.4.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" @@ -5822,7 +5291,7 @@ ctype@0.5.3: resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" integrity sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8= -cuint@^0.2.1, cuint@^0.2.2: +cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= @@ -5872,19 +5341,7 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: - 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" - -debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.5.1, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.5.1, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -5905,6 +5362,13 @@ debug@3.2.6, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2. dependencies: ms "^2.1.1" +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: + 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" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -5918,7 +5382,7 @@ decamelize-keys@^1.0.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -5935,19 +5399,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -decompress-zip@0.3.x: - version "0.3.2" - resolved "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.3.2.tgz#f3fa2841666abce394604f4a9e8a7085c202d464" - integrity sha512-Ab1QY4LrWMrUuo53lLnmGOby7v8ryqxJ+bKibKSiPisx+25mhut1dScVBXAYx14i/PqSrFZvR2FRRazhLbvL+g== - dependencies: - binary "^0.3.0" - graceful-fs "^4.1.3" - mkpath "^0.1.0" - nopt "^3.0.1" - q "^1.1.2" - readable-stream "^1.1.8" - touch "0.0.3" - deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -5972,6 +5423,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd" + integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -6081,37 +5537,10 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -detective-less@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/detective-less/-/detective-less-1.0.2.tgz#a68af9ca5f69d74b7d0aa190218b211d83b4f7e3" - integrity sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA== - dependencies: - debug "^4.0.0" - gonzales-pe "^4.2.3" - node-source-walk "^4.0.0" - -detective-sass@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-2.0.1.tgz#05660aa1b95cfd87f574643bface3e8a268112a1" - integrity sha1-BWYKoblc/Yf1dGQ7+s4+iiaBEqE= - dependencies: - debug "^3.1.0" - gonzales-pe "^3.4.4" - node-source-walk "^3.2.0" - -detective-scss@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-1.0.1.tgz#743246a0dd358d9d91ff4125417f6a77fbcf270f" - integrity sha1-dDJGoN01jZ2R/0ElQX9qd/vPJw8= - dependencies: - debug "^3.1.0" - gonzales-pe "^3.4.4" - node-source-walk "^3.2.0" - -detective-stylus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-1.0.0.tgz#50aee7db8babb990381f010c63fabba5b58e54cd" - integrity sha1-UK7n24uruZA4HwEMY/q7pbWOVM0= +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== dezalgo@^1.0.0, dezalgo@~1.0.3: version "1.0.3" @@ -6199,13 +5628,6 @@ domexception@^1.0.1: dependencies: webidl-conversions "^4.0.2" -domhandler@2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" - integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= - dependencies: - domelementtype "1" - domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -6213,7 +5635,7 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domutils@1.5, domutils@1.5.1: +domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= @@ -6260,15 +5682,6 @@ dotenv@^5.0.1: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== -ds-store@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ds-store/-/ds-store-0.1.6.tgz#d1024ef746ed0c13f0f7fec85c7e858e8c4b7ca7" - integrity sha1-0QJO90btDBPw9/7IXH6FjoxLfKc= - dependencies: - bplist-creator "~0.0.3" - macos-alias "~0.2.5" - tn1150 "^0.1.0" - duplex@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/duplex/-/duplex-1.0.0.tgz#6abc5c16ec17e4c578578727126700590d3a2dda" @@ -6296,14 +5709,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -eachr@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eachr/-/eachr-3.3.0.tgz#11f7287be7d31d6b99947fe0d8a79de99ac2a469" - integrity sha512-yKWuGwOE283CTgbEuvqXXusLH4VBXnY2nZbDkeWev+cpAXY6zCIADSPLdvfkAROc0t8S4l07U1fateCdEDuuvg== - dependencies: - editions "^2.2.0" - typechecker "^4.9.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -6317,14 +5722,6 @@ editions@^1.1.1: resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== -editions@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.2.0.tgz#dacd0c2a9441ebef592bba316a6264febb337f35" - integrity sha512-RYg3iEA2BDLCNVe8PUkD+ox5vAKxB9XS/mAhx1bdxGCF0CpX077C0pyTA9t5D6idCYA3avl5/XDHKPsHFrygfw== - dependencies: - errlop "^1.1.2" - semver "^6.3.0" - editor@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" @@ -6335,238 +5732,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-compile@*, electron-compile@^6.4.3: - version "6.4.4" - resolved "https://registry.yarnpkg.com/electron-compile/-/electron-compile-6.4.4.tgz#24c5bc4c937856fcc9141cf3cc7251172e0205df" - integrity sha512-LEOq5Tt7fAfONEyYLR0Ue1kL6/H8NAX6s9ouw4g6Azhu6onWh166fnf2O7Y3f9qkQEqYzwZl49Rd/QWxLG2AYw== - dependencies: - "@paulcbetts/mime-types" "^2.1.10" - "@types/node" "^7.0.12" - btoa "^1.1.2" - debug "^2.5.1" - lru-cache "^4.0.1" - mkdirp "^0.5.1" - pify "^2.3.0" - rimraf "^2.5.4" - rxjs "^5.1.1" - spawn-rx "^2.0.3" - yargs "^4.8.1" - -electron-compilers@*: - version "5.9.0" - resolved "https://registry.yarnpkg.com/electron-compilers/-/electron-compilers-5.9.0.tgz#953dc14e24fb15b37d5e90de2c39d753f3f8140e" - integrity sha1-lT3BTiT7FbN9XpDeLDnXU/P4FA4= - dependencies: - "@paulcbetts/mime-types" "^2.1.10" - "@paulcbetts/vueify" "9.4.3" - babel-core "^6.13.2" - babel-preset-env "^1.3.2" - btoa "^1.1.2" - cheerio "^0.20.0" - coffee-script "^1.10.0" - cson "^3.0.2" - debug "^2.5.1" - detective-less "^1.0.0" - detective-sass "^2.0.0" - detective-scss "^1.0.0" - detective-stylus "^1.0.0" - graphql "^0.9.3" - graphql-tag "^2.0.0" - istanbul "^0.4.5" - jade "^1.11.0" - js-string-escape "^1.0.1" - less "^2.7.1" - mkdirp "^0.5.1" - nib "^1.1.2" - resolve "^1.2.0" - rimraf "^2.5.4" - sass-lookup "^1.0.2" - sass.js "^0.10.1" - sorcery "^0.10.0" - stylus "^0.54.5" - stylus-lookup "^1.0.1" - toutsuite "^0.6.0" - typescript ">=1.6" - -electron-download@^4.0.0, electron-download@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz#02e69556705cc456e520f9e035556ed5a015ebe8" - integrity sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg== - dependencies: - debug "^3.0.0" - env-paths "^1.0.0" - fs-extra "^4.0.1" - minimist "^1.2.0" - nugget "^2.0.1" - path-exists "^3.0.0" - rc "^1.2.1" - semver "^5.4.1" - sumchecker "^2.0.2" - -electron-forge-template-angular2@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/electron-forge-template-angular2/-/electron-forge-template-angular2-1.0.6.tgz#c5411ff3732116885bff5fafa5d1728a5809a2b1" - integrity sha1-xUEf83MhFohb/1+vpdFyilgJorE= - -electron-forge-template-react-typescript@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/electron-forge-template-react-typescript/-/electron-forge-template-react-typescript-1.0.6.tgz#55988260c11ae45eff688fd47749afe1d75a5b23" - integrity sha1-VZiCYMEa5F7/aI/Ud0mv4ddaWyM= - -electron-forge-template-react@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/electron-forge-template-react/-/electron-forge-template-react-1.0.4.tgz#7fbc8345380f348c34387ea2130d275ce6682e20" - integrity sha1-f7yDRTgPNIw0OH6iEw0nXOZoLiA= - -electron-forge-template-vue@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/electron-forge-template-vue/-/electron-forge-template-vue-1.0.3.tgz#58a11ec972a0f0518e1306da7a573fbaf6b4ac50" - integrity sha1-WKEeyXKg8FGOEwbaelc/uva0rFA= - -electron-forge@~5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/electron-forge/-/electron-forge-5.2.4.tgz#67e0980b4e669e6a18869fbe60ddf254fbf4090e" - integrity sha512-237Yc3VraTuavNxW9UeMf21pH4zX3Ry3PvJYfHx0sidgXlZlq9nVLVqW1viYfHOBCV361gsAEBvfmNxC752OaA== - dependencies: - "@octokit/rest" "^15.2.6" - aws-sdk "^2.9.0" - babel-register "^6.16.3" - bluebird "^3.4.6" - colors "^1.1.2" - commander "^2.9.0" - cross-spawn-promise "^0.10.1" - debug "^3.0.0" - electron-forge-template-angular2 "^1.0.3" - electron-forge-template-react "^1.0.2" - electron-forge-template-react-typescript "^1.0.3" - electron-forge-template-vue "^1.0.2" - electron-packager "^11.0.0" - electron-rebuild "^1.6.0" - exact-version "^1.0.1" - form-data "^2.1.4" - fs-extra "^5.0.0" - glob "^7.1.1" - inquirer "^5.0.0" - lodash.merge "^4.6.0" - lodash.template "^4.4.0" - log-symbols "^2.0.0" - mime-types "^2.1.17" - node-fetch "^2.0.0" - node-gyp "^3.4.0" - nugget "^2.0.1" - opn "^5.0.0" - ora "^2.0.0" - parse-author "^2.0.0" - pify "^3.0.0" - resolve-package "^1.0.1" - s3 "^4.4.0" - semver "^5.3.0" - sudo-prompt "^8.0.0" - tabtab "^2.2.1" - username "^3.0.0" - yarn-or-npm "^2.0.2" - zip-folder "^1.0.0" - optionalDependencies: - electron-installer-debian "^1.1.0" - electron-installer-dmg "^0.2.0" - electron-installer-flatpak "^0.8.0" - electron-installer-redhat "^0.5.0" - electron-installer-snap "^3.1.0" - electron-windows-store "^0.12.0" - electron-winstaller "^2.5.0" - electron-wix-msi "^2.1.1" - -electron-installer-common@^0.6.2, electron-installer-common@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/electron-installer-common/-/electron-installer-common-0.6.3.tgz#d17f5062890acaef0c7dd7972aae3a746bca921f" - integrity sha512-ylecrLzz2Qmfv9QgFBoQAcB7i51ROUXguA0EExo70LVeJznDi94vCwVSoKotC7BslmUH6Iz1vYZOyqMon8PhcA== - dependencies: - asar "^1.0.0" - cross-spawn-promise "^0.10.1" - debug "^4.1.1" - fs-extra "^7.0.1" - glob "^7.1.3" - glob-promise "^3.4.0" - lodash "^4.17.11" - parse-author "^2.0.0" - semver "^6.0.0" - tmp-promise "^1.0.5" - -electron-installer-debian@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/electron-installer-debian/-/electron-installer-debian-1.2.0.tgz#1cb3c457cd4fc5e5adaae4d587170eca3a85a219" - integrity sha512-gowfDlBY4NPZ6dMLsoSJzEeXlEa650NAjvtnYk6/Ikq9tFtS7xCs+Oyk91gNGDbFczA8QAelmR4KX4hV/eebKQ== - dependencies: - debug "^4.1.1" - electron-installer-common "^0.6.2" - fs-extra "^7.0.1" - get-folder-size "^2.0.1" - lodash "^4.17.4" - pify "^4.0.1" - word-wrap "^1.2.3" - yargs "^13.2.2" - -electron-installer-dmg@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/electron-installer-dmg/-/electron-installer-dmg-0.2.1.tgz#de835f02009b83f82e408036ac31462c3d6cb249" - integrity sha1-3oNfAgCbg/guQIA2rDFGLD1sskk= - dependencies: - debug "^2.2.0" - minimist "^1.1.1" - optionalDependencies: - appdmg "^0.4.5" - -electron-installer-flatpak@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/electron-installer-flatpak/-/electron-installer-flatpak-0.8.0.tgz#8edd178e0e04ec2da0fa40e777b67c9ccb78775f" - integrity sha1-jt0Xjg4E7C2g+kDnd7Z8nMt4d18= - dependencies: - asar "^0.12.0" - async "^2.0.0" - debug "^2.2.0" - flatpak-bundler "^0.1.0" - fs-extra "^0.30.0" - lodash "^4.13.0" - temp "^0.8.3" - yargs "^6.0.0" - -electron-installer-redhat@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/electron-installer-redhat/-/electron-installer-redhat-0.5.0.tgz#09699cd37bc911cf7ff99587ba77aa205e836cd2" - integrity sha1-CWmc03vJEc9/+ZWHuneqIF6DbNI= - dependencies: - asar "^0.13.0" - async "^2.1.5" - debug "^2.6.3" - fs-extra "^2.1.2" - glob "^7.1.1" - lodash "^4.17.4" - parse-author "^2.0.0" - temp "^0.8.3" - word-wrap "^1.2.1" - yargs "7.0.2" - -electron-installer-snap@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/electron-installer-snap/-/electron-installer-snap-3.2.0.tgz#42bce8e96daebb158540d113158e14e9ba3fdb94" - integrity sha512-rWGlRBOHGDD6kZvr+wi0+6dQfv89mjoa6Ak9j1/M2VTphRhZWISmbQMzCCjStRlGPyTHbggYoCL9FyIaHie3Iw== +electron-notarize@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-0.1.1.tgz#c3563d70c5e7b3315f44e8495b30050a8c408b91" + integrity sha512-TpKfJcz4LXl5jiGvZTs5fbEx+wUFXV5u8voeG5WCHWfY/cdgdD8lDZIZRqLVOtR3VO+drgJ9aiSHIO9TYn/fKg== dependencies: - cross-spawn-promise "^0.10.1" debug "^4.1.1" - electron-installer-common "^0.6.3" - fs-extra "^7.0.1" - js-yaml "^3.10.0" - lodash.filter "^4.6.0" - lodash.merge "^4.6.0" - lodash.pull "^4.1.0" - nodeify "^1.0.1" - pify "^4.0.1" - semver "^6.0.0" - tmp-promise "^1.0.3" - which "^1.3.0" - yargs "^13.2.2" + fs-extra "^8.0.1" -electron-osx-sign@^0.4.1: +electron-osx-sign@^0.4.11: version "0.4.14" resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.14.tgz#770397c0eb604adfe8a3ec044795db3c123e59d3" integrity sha512-72vtrz9I3dOeFDaNvO5thwIjrimDiXMmYEbN0hEBqnvcSSMOWugjim2wiY9ox3dhuBFUhxp3owmuZCoH3Ij08A== @@ -6578,43 +5752,28 @@ electron-osx-sign@^0.4.1: minimist "^1.2.0" plist "^3.0.1" -electron-packager@^11.0.0: - version "11.2.1" - resolved "https://registry.yarnpkg.com/electron-packager/-/electron-packager-11.2.1.tgz#a1ef12b8743f92cb099d68941a7535849af09c60" - integrity sha512-r2x4KMYnbuMdW+7ElCootPc7YiiUHT2FwOWnmA79i28VBUexSs2Zv50ORSjJSx2j37KqYduV378/ZnzvCFBALg== +electron-packager@^14.0.5: + version "14.1.0" + resolved "https://registry.yarnpkg.com/electron-packager/-/electron-packager-14.1.0.tgz#c12f340fbba83e4730fe44a884e532962cda987d" + integrity sha512-4oGtQYYjSA/M4BGOwG0NBqEtThBf7aCV76C2AZsD71eGocYqZNvtvfzeeMnKkc3EW1nPq7iJ4Wge+GXma0kwIA== dependencies: - asar "^0.14.0" - debug "^3.0.0" - electron-download "^4.0.0" - electron-osx-sign "^0.4.1" - extract-zip "^1.0.3" - fs-extra "^5.0.0" + "@electron/get" "^1.6.0" + asar "^2.0.1" + cross-zip "^2.1.5" + debug "^4.0.1" + electron-notarize "^0.1.1" + electron-osx-sign "^0.4.11" + fs-extra "^8.1.0" + galactus "^0.2.1" get-package-info "^1.0.0" - mz "^2.6.0" - nodeify "^1.0.1" + junk "^3.1.0" parse-author "^2.0.0" - pify "^3.0.0" - plist "^2.0.0" - pruner "^0.0.7" - rcedit "^1.0.0" + plist "^3.0.0" + rcedit "^2.0.0" resolve "^1.1.6" sanitize-filename "^1.6.0" - semver "^5.3.0" - yargs-parser "^9.0.2" - -electron-prebuilt-compile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/electron-prebuilt-compile/-/electron-prebuilt-compile-4.0.0.tgz#3262fe69fa343022353e4c8bd16c60e8f181c47e" - integrity sha512-mIQSctVTH6zq0P5oBb5XI+aT6grCIXIF3ntIxx45HNoAQggMUmA9Gf1dUquila3gSHzMN6pcN7ClpEPXPvFm+w== - dependencies: - babel-plugin-array-includes "^2.0.3" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-preset-es2016-node5 "^1.1.2" - babel-preset-react "^6.24.1" - electron "4.0.0" - electron-compile "*" - electron-compilers "*" - yargs "^6.6.0" + semver "^6.0.0" + yargs-parser "^16.0.0" electron-protocol-serve@^1.3.0: version "1.3.0" @@ -6623,7 +5782,7 @@ electron-protocol-serve@^1.3.0: dependencies: mock-require "^2.0.1" -electron-rebuild@^1.6.0: +electron-rebuild@^1.8.6: version "1.8.6" resolved "https://registry.yarnpkg.com/electron-rebuild/-/electron-rebuild-1.8.6.tgz#4454ef5517c0588aef9bca0d923ff5633000b949" integrity sha512-4BAPcNG0XP6stByqvFXggrjmf/C47P2L6HFFrWdR2ako1VLiTDIeZAOmU4WEBuWdaXYNqstleszVmcNHdRDojA== @@ -6638,59 +5797,11 @@ electron-rebuild@^1.6.0: spawn-rx "^3.0.0" yargs "^13.2.4" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.295, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.47: +electron-to-chromium@^1.3.295, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.47: version "1.3.306" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz#e8265301d053d5f74e36cb876486830261fbe946" integrity sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A== -electron-windows-store@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/electron-windows-store/-/electron-windows-store-0.12.0.tgz#c2fd84504c62aeaecc4d1f8bd3420600acc30d26" - integrity sha512-iTssRJClxOQ3gQ9FXN7veYC1AlwJoSo4Kea5mLP4WrnSP6yDp5iVRQr/8cDhs4z4s0jRqC9D9pdhhelkHrHI5g== - dependencies: - chalk "^2.1.0" - commander "^2.11.0" - debug "^2.6.3" - flatten-packages "^0.1.4" - fs-extra "^4.0.1" - inquirer "^3.2.3" - lodash.defaults "^4.2.0" - lodash.merge "^4.6.0" - multiline "^1.0.2" - path-exists "^3.0.0" - -electron-winstaller@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/electron-winstaller/-/electron-winstaller-2.7.0.tgz#55fb64901bcdeeb9b3facd825e1ef2658b94a27d" - integrity sha512-WKRUTyGzTQbM2Q6dYm/iQqdYRQRTMiFakPxqOCJrH29YPVelGG9vNldal68fnq2yL+FFsoQi/3+qb6jDk143mw== - dependencies: - asar "^0.11.0" - bluebird "^3.3.4" - debug "^2.2.0" - fs-extra "^2.1.2" - lodash.template "^4.2.2" - temp "^0.8.3" - -electron-wix-msi@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/electron-wix-msi/-/electron-wix-msi-2.2.0.tgz#aac46870fd46cb7787609e4f9eeb24fd6585fd0e" - integrity sha512-gDozcNtyOz0VUDEPCrOXCSAAjObtdYvnDoBHnKMrxW0cWZiopQSUUYY3o6rspfHoglSd2MI52Z3wJnKlrZ1plg== - dependencies: - debug "^4.1.1" - fs-extra "^8.1.0" - klaw "^3.0.0" - lodash "^4.17.15" - uuid "^3.3.3" - -electron@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-4.0.0.tgz#6ccb40cc8bf2d49954dcea73b97ae7ad12ee04b3" - integrity sha512-3XPG/3IXlvnT1oe1K6zEushoD0SKbP8xwdrL10EWGe6k2iOV4hSHqJ8vWnR8yZ7VbSXmBRfomEFDNAo/q/cwKw== - dependencies: - "@types/node" "^8.0.24" - electron-download "^4.1.0" - extract-zip "^1.0.3" - elliptic@^6.0.0: version "6.5.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" @@ -7785,7 +6896,7 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= -encodeurl@~1.0.2: +encodeurl@^1.0.2, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= @@ -7858,11 +6969,6 @@ ensure-posix-path@^1.0.0, ensure-posix-path@^1.0.1, ensure-posix-path@^1.0.2, en resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce" integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw== -entities@1.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" - integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= - entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -7886,19 +6992,17 @@ env-paths@^1.0.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA= +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== + err-code@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= -errlop@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.2.0.tgz#15d02f8232e788da39b6472fb76809fff423a7d8" - integrity sha512-xlbC/1TA2kMaPYy0DtlL0sLyu6T5ZYpLNnOY5EtvDbHRnzUAipUqW1eKObQgwWbRDiudE2IJaxJAgw4fF39Lcw== - dependencies: - editions "^2.2.0" - -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: +errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -7944,16 +7048,16 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +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== + es6-promise@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-1.0.0.tgz#f90d3629faa7c26166ae4df77c89bacdeb8dca7f" integrity sha1-+Q02KfqnwmFmrk33fIm6zeuNyn8= -es6-promise@^3.1.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= - es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -7976,19 +7080,12 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" +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== -escodegen@^1.11.0, escodegen@^1.6.1, escodegen@^1.9.1: +escodegen@^1.11.0, escodegen@^1.9.1: version "1.12.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== @@ -8105,11 +7202,6 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -8139,11 +7231,6 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= - estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -8179,11 +7266,6 @@ events-to-array@^1.0.1: resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6" integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y= -events@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" @@ -8197,11 +7279,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exact-version@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/exact-version/-/exact-version-1.0.2.tgz#2ac417243c00c5e42418e678c598dbd1393d1d89" - integrity sha512-s3lu2hhoU8J89M+0dOeeaRbyXhNMs9vpz6pQiZUCVx7WwFw5X+nhLYp8Bq9ERho05LNvidCkZiD3nHKZwCK9nw== - exec-file-sync@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/exec-file-sync/-/exec-file-sync-2.0.2.tgz#58d441db46e40de6d1f30de5be022785bd89e328" @@ -8216,18 +7293,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== -execa@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" - integrity sha1-TrZGejaglfq7KXD/nV4/t7zm68M= - dependencies: - cross-spawn-async "^2.1.1" - is-stream "^1.1.0" - npm-run-path "^1.0.0" - object-assign "^4.0.1" - path-key "^1.0.0" - strip-eof "^1.0.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -8356,7 +7421,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -8370,15 +7435,6 @@ external-editor@^1.1.0: spawn-sync "^1.0.15" tmp "^0.0.29" -external-editor@^2.0.4, external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -8402,25 +7458,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-opts@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/extract-opts/-/extract-opts-3.4.0.tgz#ab07a7873896a1a7e350f27e2d52645c2ceba9ac" - integrity sha512-M7Y+1cJDkzOWqvGH5F/V2qgkD6+uitW3NV9rQGl+pLSVuXZ4IDDQgxxMeLPKcWUyfypBWczIILiroSuhXG7Ytg== - dependencies: - eachr "^3.2.0" - editions "^2.2.0" - typechecker "^4.9.0" - -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" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -8518,26 +7555,11 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fd-slicer@~1.0.0, 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" - figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -8672,11 +7694,6 @@ find-yarn-workspace-root@^1.1.0, find-yarn-workspace-root@^1.2.1: fs-extra "^4.0.3" micromatch "^3.1.4" -findit2@~2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/findit2/-/findit2-2.2.3.tgz#58a466697df8a6205cdfdbf395536b8bd777a5f6" - integrity sha1-WKRmaX34piBc39vzlVNri9d3pfY= - findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -8714,36 +7731,18 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" -flatpak-bundler@^0.1.0: - version "0.1.3" - resolved "https://registry.yarnpkg.com/flatpak-bundler/-/flatpak-bundler-0.1.3.tgz#e45dfa0c4a7485c370e0915e4728929798503946" - integrity sha1-5F36DEp0hcNw4JFeRyiSl5hQOUY= - dependencies: - debug "^2.2.0" - es6-promisify "^5.0.0" - fs-extra "^0.30.0" - lodash "^4.16.2" - tmp "0.0.29" - flatted@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flatten-packages@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/flatten-packages/-/flatten-packages-0.1.4.tgz#edc5f1ad09bdbad98a1e6332bd2917d0d9332193" - integrity sha1-7cXxrQm9utmKHmMyvSkX0NkzIZM= +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: - colors "~0.6.2" - commander "~2.1.0" - semver "~2.2.1" - wrench "~1.5.4" - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + debug "^4.1.1" + fs-extra "^7.0.0" flush-write-stream@^1.0.0: version "1.1.1" @@ -8753,13 +7752,6 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -fmix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" - integrity sha1-x7vxJN7ELJ0ZHPuUfQqXeN2YbAw= - dependencies: - imul "^1.0.0" - follow-redirects@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" @@ -8782,15 +7774,6 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^2.1.4: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - form-data@~0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz#91abd788aba9702b1aabfa8bc01031a2ac9e3b12" @@ -8800,15 +7783,6 @@ form-data@~0.1.0: combined-stream "~0.0.4" mime "~1.2.11" -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -8861,17 +7835,6 @@ fs-exists-sync@^0.1.0: resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= -fs-extra@0.26.7: - version "0.26.7" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" - integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" @@ -8882,26 +7845,7 @@ fs-extra@^0.24.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" - integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - -fs-extra@^4.0.0, fs-extra@^4.0.1, fs-extra@^4.0.2, fs-extra@^4.0.3: +fs-extra@^4.0.0, fs-extra@^4.0.2, fs-extra@^4.0.3: 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== @@ -8953,13 +7897,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-temp@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fs-temp/-/fs-temp-1.1.2.tgz#cc52f038bbefe510f6bcd09ec592b79d0f69253f" - integrity sha1-zFLwOLvv5RD2vNCexZK3nQ9pJT8= - dependencies: - random-path "^0.1.0" - fs-tree-diff@^0.5.2, fs-tree-diff@^0.5.3, fs-tree-diff@^0.5.4, fs-tree-diff@^0.5.6, fs-tree-diff@^0.5.7, fs-tree-diff@^0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/fs-tree-diff/-/fs-tree-diff-0.5.9.tgz#a4ec6182c2f5bd80b9b83c8e23e4522e6f5fd946" @@ -9021,14 +7958,6 @@ fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: imurmurhash "^0.1.4" readable-stream "1 || 2" -fs-xattr@^0.1.14: - version "0.1.17" - resolved "https://registry.yarnpkg.com/fs-xattr/-/fs-xattr-0.1.17.tgz#ee943483c6fe9704a8f0e1476e8145a9886f8b0f" - integrity sha512-SpBbnN1lkSgBjELpnxnxfcl236ceCu6LnrfrT4CREsux4LP4PvKU37IpceJqAInnTTOWmeVHi9c8lKXIdfynPg== - dependencies: - buffer-from "^0.1.1" - nan "^2.3.2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -9047,16 +7976,6 @@ fsevents@~2.1.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -9067,27 +7986,20 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gar@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8" - integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w== +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" gather-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" integrity sha1-szmUr0V6gRVwDUEPMXczy+egkEs= -gauge@~1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - integrity sha1-6c7FSD09TuDvRLYKfZnkk14TbZM= - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -9102,20 +8014,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - genfun@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" @@ -9147,14 +8045,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-folder-size@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-folder-size/-/get-folder-size-2.0.1.tgz#3fe0524dd3bad05257ef1311331417bcd020a497" - integrity sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA== - dependencies: - gar "^1.0.4" - tiny-each-async "2.0.3" - get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" @@ -9194,7 +8084,7 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.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== @@ -9299,30 +8189,11 @@ glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-promise@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" - integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== - dependencies: - "@types/glob" "*" - glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@7.0.x: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -9335,7 +8206,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.10, glob@^5.0.15: +glob@^5.0.10: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= @@ -9346,17 +8217,6 @@ glob@^5.0.10, glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.3, glob@^7.0.4, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.5, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -9369,13 +8229,18 @@ glob@^7.0.3, glob@^7.0.4, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@~3.2.6: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - integrity sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0= - dependencies: - inherits "2" - minimatch "0.3" +global-agent@^2.0.2: + version "2.1.6" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.6.tgz#cc2b0102a6d440b68c87fd0e61a366bf607dd3aa" + integrity sha512-fL+xfraAlc1MXU8Gs0DAg/eHH+H1CjxbK+BLU3Qt55dAVMAQ8fH8k/UrLwV4A+Vk/hl/TePWuTxFnqJzCV1/Kw== + dependencies: + boolean "^2.0.3" + core-js "^3.4.0" + es6-error "^4.1.1" + matcher "^2.0.0" + roarr "^2.14.4" + semver "^6.3.0" + serialize-error "^5.0.0" global-dirs@^0.1.0: version "0.1.1" @@ -9404,6 +8269,16 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" +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" + globals@^11.1.0, globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -9414,6 +8289,15 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.0.tgz#c5fb98213a9b4595f59cf3e7074f141b4169daae" + integrity sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + object-keys "^1.0.12" + globby@^10.0.0, globby@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" @@ -9453,20 +8337,6 @@ globby@^9.0.0: pify "^4.0.1" slash "^2.0.0" -gonzales-pe@^3.4.4: - version "3.4.7" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-3.4.7.tgz#17c7be67ad6caff6277a3e387ac736e983d280ec" - integrity sha1-F8e+Z61sr/Ynej44esc26YPSgOw= - dependencies: - minimist "1.1.x" - -gonzales-pe@^4.2.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2" - integrity sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ== - dependencies: - minimist "1.1.x" - good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -9514,35 +8384,33 @@ got@^8.0.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.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.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== -graceful-fs@~3.0.5: - version "3.0.12" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz#0034947ce9ed695ec8ab0b854bc919e82b1ffaef" - integrity sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg== - dependencies: - natives "^1.1.3" - "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= -graphql-tag@^2.0.0: - version "2.10.1" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" - integrity sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg== - -graphql@^0.9.3: - version "0.9.6" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.9.6.tgz#514421e9d225c29dfc8fd305459abae58815ef2c" - integrity sha1-UUQh6dIlwp38j9MFRZq65YgV7yw= - dependencies: - iterall "^1.0.0" - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -9553,7 +8421,7 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.0: +handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.0: version "4.5.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.2.tgz#5a4eb92ab5962ca3415ac188c86dc7f784f76a0f" integrity sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg== @@ -9564,24 +8432,11 @@ handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, ha optionalDependencies: uglify-js "^3.1.4" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4= - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio= - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" @@ -9716,11 +8571,6 @@ hash-for-dep@^1.0.2, hash-for-dep@^1.2.3, hash-for-dep@^1.4.7, hash-for-dep@^1.5 resolve "^1.10.0" resolve-package-path "^1.0.11" -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -9739,17 +8589,7 @@ hawk@1.1.1: hoek "0.9.x" sntp "0.2.x" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -he@1.2.0, he@^1.1.0: +he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -9808,11 +8648,6 @@ hoek@0.9.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz#3d322462badf07716ea7eb85baf88079cddce505" integrity sha1-PTIkYrrfB3Fup+uFuviAec3c5QU= -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= - hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" @@ -9850,11 +8685,6 @@ hosted-git-info@^3.0.0: dependencies: lru-cache "^5.1.1" -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -9879,22 +8709,16 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" -htmlparser2@~3.8.1: - version "3.8.3" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" - integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= - dependencies: - domelementtype "1" - domhandler "2.3" - domutils "1.5" - entities "1.0" - readable-stream "1.1" - http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +http-cache-semantics@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" + integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== + http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -9958,15 +8782,6 @@ http-signature@~0.10.0: assert-plus "^0.1.5" ctype "0.5.3" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -9981,7 +8796,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.3: +https-proxy-agent@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== @@ -10014,14 +8829,14 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== @@ -10053,11 +8868,6 @@ ignore@^5.1.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== -image-size@^0.5.0, image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - import-fresh@^3.0.0, import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -10078,11 +8888,6 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= -imul@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" - integrity sha1-nVhnFh6LPelsLDjV3HyxAvNeKsk= - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -10143,7 +8948,7 @@ inflight@^1.0.4, inflight@~1.0.6: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, 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== @@ -10188,26 +8993,6 @@ inline-source-map-comment@^1.0.5: sum-up "^1.0.1" xtend "^4.0.0" -inquirer@^1.0.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" - integrity sha1-TexvMvN+97sLLtPx0aXD9UUHSRg= - dependencies: - ansi-escapes "^1.1.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - external-editor "^1.1.0" - figures "^1.3.5" - lodash "^4.3.0" - mute-stream "0.0.6" - pinkie-promise "^2.0.0" - run-async "^2.2.0" - rx "^4.1.0" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - inquirer@^2: version "2.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-2.0.0.tgz#e1351687b90d150ca403ceaa3cefb1e3065bef4b" @@ -10228,45 +9013,6 @@ inquirer@^2: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - inquirer@^6, inquirer@^6.2.2, inquirer@^6.5.1: version "6.5.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" @@ -10309,11 +9055,6 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -10334,11 +9075,6 @@ ipaddr.js@1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -10506,22 +9242,6 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== - -is-my-json-valid@^2.13.1: - version "2.20.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz#1345a6fca3e8daefc10d0fa77067f54cedafd59a" - integrity sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA== - dependencies: - 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" - is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -10580,21 +9300,11 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" -is-promise@^2.0.0, is-promise@^2.1.0: +is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-promise@~1, is-promise@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" - integrity sha1-MVc3YcBX4zwukaq56W2gjO++duU= - -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -10614,11 +9324,6 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-relative-path@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46" - integrity sha1-CRtGoNZ8HtD+hfH4z93gBrslHUY= - is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" @@ -10634,13 +9339,6 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= - dependencies: - html-comment-regex "^1.1.0" - is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -10749,26 +9447,6 @@ issue-parser@^5.0.0: lodash.isstring "^4.0.1" lodash.uniqby "^4.7.0" -istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - istextorbinary@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.1.0.tgz#dbed2a6f51be2f7475b68f89465811141b758874" @@ -10786,37 +9464,11 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -iterall@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" - integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== - -jade@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/jade/-/jade-1.11.0.tgz#9c80e538c12d3fb95c8d9bb9559fa0cc040405fd" - integrity sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0= - dependencies: - character-parser "1.2.1" - clean-css "^3.1.9" - commander "~2.6.0" - constantinople "~3.0.1" - jstransformer "0.0.2" - mkdirp "~0.5.0" - transformers "2.1.0" - uglify-js "^2.4.19" - void-elements "~2.0.1" - with "~4.0.0" - java-properties@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== -jmespath@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" - integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= - joi@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/joi/-/joi-12.0.0.tgz#46f55e68f4d9628f01bbb695902c8b307ad8d33a" @@ -10861,7 +9513,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.0: +js-yaml@3.13.1, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -10869,14 +9521,6 @@ js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, argparse "^1.0.7" esprima "^4.0.0" -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -10945,27 +9589,6 @@ jsdom@^12.0.0: ws "^6.1.0" xml-name-validator "^3.0.0" -jsdom@^7.0.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" - integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4= - dependencies: - abab "^1.0.0" - acorn "^2.4.0" - acorn-globals "^1.0.4" - cssom ">= 0.3.0 < 0.4.0" - cssstyle ">= 0.2.29 < 0.3.0" - escodegen "^1.6.1" - nwmatcher ">= 1.3.7 < 2.0.0" - parse5 "^1.5.1" - request "^2.55.0" - sax "^1.1.4" - symbol-tree ">= 3.1.0 < 4.0.0" - tough-cookie "^2.2.0" - webidl-conversions "^2.0.0" - whatwg-url-compat "~0.6.5" - xml-name-validator ">= 2.0.1 < 3.0.0" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -11078,11 +9701,6 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -11093,13 +9711,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jstransformer@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-0.0.2.tgz#7aae29a903d196cfa0973d885d3e47947ecd76ab" - integrity sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs= - dependencies: - is-promise "^2.0.0" - promise "^6.0.1" +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== just-extend@^4.0.2: version "4.0.2" @@ -11113,6 +9728,13 @@ keyv@3.0.0: dependencies: json-buffer "3.0.0" +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" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -11137,20 +9759,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -11158,30 +9766,11 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - lazy-property@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= -lazystream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-0.1.0.tgz#1b25d63c772a4c20f0a5ed0a9d77f484b6e16920" - integrity sha1-GyXWPHcqTCDwpe0KnXf0hLbhaSA= - dependencies: - readable-stream "~1.0.2" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -11203,20 +9792,6 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -less@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" - integrity sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ== - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - mime "^1.2.11" - mkdirp "^0.5.0" - promise "^7.1.1" - request "2.81.0" - source-map "^0.5.3" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -11575,7 +10150,7 @@ lodash.assign@^3.2.0: lodash._createassigner "^3.0.0" lodash.keys "^3.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: +lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= @@ -11612,7 +10187,7 @@ lodash.debounce@^3.1.1: dependencies: lodash._getnative "^3.0.0" -lodash.defaults@^4.0.1, lodash.defaults@^4.2.0: +lodash.defaults@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= @@ -11622,17 +10197,12 @@ lodash.defaultsdeep@^4.6.0, lodash.defaultsdeep@^4.6.1: resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= - lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= -lodash.filter@^4.4.0, lodash.filter@^4.6.0: +lodash.filter@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= @@ -11719,31 +10289,11 @@ lodash.omit@^4.1.0: resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - integrity sha1-QzCUmoM6fI2iLMIPaibE1Z3runA= - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= - lodash.pick@^4.2.1: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= -lodash.pull@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.pull/-/lodash.pull-4.1.0.tgz#60060cc6bd625b4d4567ec27dc45cd1be9eec012" - integrity sha1-YAYMxr1iW01FZ+wn3EXNG+nuwBI= - lodash.reduce@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" @@ -11774,7 +10324,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.2.2, lodash.template@^4.4.0, lodash.template@^4.5.0: +lodash.template@^4.4.0, lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -11819,33 +10369,30 @@ lodash@^3.10.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.0, lodash@^4.15.0, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -lodash@~2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" - integrity sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= - -log-symbols@2.2.0, log-symbols@^2.0.0, log-symbols@^2.2.0: +log-symbols@2.2.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: chalk "^2.0.1" +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + lolex@^4.1.0, lolex@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7" integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg== -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -11871,17 +10418,17 @@ lowercase-keys@1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= -lowercase-keys@^1.0.0: +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== -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= +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== -lru-cache@^4.0.0, lru-cache@^4.0.1: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -11901,13 +10448,6 @@ lunr@^2.3.6: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072" integrity sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg== -macos-alias@~0.2.5: - version "0.2.11" - resolved "https://registry.yarnpkg.com/macos-alias/-/macos-alias-0.2.11.tgz#feeea6c13ba119814a43fc43c470b31e59ef718a" - integrity sha1-/u6mwTuhGYFKQ/xDxHCzHlnvcYo= - dependencies: - nan "^2.4.0" - macos-release@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" @@ -12088,10 +10628,12 @@ matcher-collection@^2.0.0: "@types/minimatch" "^3.0.3" minimatch "^3.0.2" -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= +matcher@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-2.0.0.tgz#85fe38d97670dbd2a46590cf099401e2ffb4755c" + integrity sha512-nlmfSlgHBFx36j/Pl/KQPbIaqE8Zf0TqmSMjsuddHDg6PMSVgmyW9HpkLs0o0M1n2GIZ/S2BZBLIww/xjhiGng== + dependencies: + escape-string-regexp "^2.0.0" md5-hex@^2.0.0: version "2.0.0" @@ -12153,14 +10695,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: +mem@^4.0.0, mem@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== @@ -12303,7 +10838,7 @@ mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== -mime-types@^2.1.12, mime-types@^2.1.17, mime-types@^2.1.18, mime-types@^2.1.19, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.19, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.25" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== @@ -12315,7 +10850,7 @@ mime-types@~1.0.1: resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" integrity sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4= -mime@1.6.0, mime@^1.2.11: +mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -12340,7 +10875,7 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.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== @@ -12355,14 +10890,6 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" - integrity sha1-J12O2qxPG7MyZHIInnlJyDlGmd0= - dependencies: - lru-cache "2" - sigmund "~1.0.0" - "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -12383,11 +10910,6 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@1.1.x: - version "1.1.3" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= - minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -12437,7 +10959,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@~0.5.x: +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -12449,20 +10971,6 @@ mkdirp@^0.3.5: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" integrity sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc= -mkpath@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" - integrity sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE= - -mksnapshot@^0.3.0, mksnapshot@^0.3.4: - version "0.3.5" - resolved "https://registry.yarnpkg.com/mksnapshot/-/mksnapshot-0.3.5.tgz#c63a9f91138ca9392e42b9979c31179ac900d4c0" - integrity sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw== - dependencies: - decompress-zip "0.3.x" - fs-extra "0.26.7" - request "2.x" - mktemp@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/mktemp/-/mktemp-0.4.0.tgz#6d0515611c8a8c84e484aa2000129b98e981ff0b" @@ -12557,22 +11065,6 @@ ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multiline@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/multiline/-/multiline-1.0.2.tgz#69b1f25ff074d2828904f244ddd06b7d96ef6c93" - integrity sha1-abHyX/B00oKJBPJE3dBrfZbvbJM= - dependencies: - strip-indent "^1.0.0" - -murmur-32@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/murmur-32/-/murmur-32-0.1.0.tgz#c1a79d4fc5fabf0405749d0aff77c41402055861" - integrity sha1-waedT8X6vwQFdJ0K/3fEFAIFWGE= - dependencies: - array-buffer-from-string "^0.1.0" - fmix "^0.1.0" - imul "^1.0.0" - mustache@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.1.0.tgz#9fba26e7aefc5709f07ff585abb7e0abced6c372" @@ -12593,16 +11085,7 @@ mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mz@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1, nan@^2.3.2, nan@^2.4.0: +nan@^2.12.1: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -12624,11 +11107,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -natives@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" - integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -12658,20 +11136,6 @@ nerf-dart@^1.0.0: resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" integrity sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo= -nested-error-stacks@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz#19f619591519f096769a5ba9a86e6eeec823c3cf" - integrity sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88= - dependencies: - inherits "~2.0.1" - -nib@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/nib/-/nib-1.1.2.tgz#6a69ede4081b95c0def8be024a4c8ae0c2cbb6c7" - integrity sha1-amnt5AgblcDe+L4CSkyK4MLLtsc= - dependencies: - stylus "0.54.5" - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -12724,30 +11188,12 @@ node-fetch-npm@^2.0.2: dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-fetch@^2.0.0, node-fetch@^2.1.1, node-fetch@^2.3.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-gyp@^3.4.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" + safe-buffer "^5.1.1" + +node-fetch@^2.3.0, node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== node-gyp@^5.0.1, node-gyp@^5.0.2, node-gyp@^5.0.5: version "5.0.5" @@ -12839,20 +11285,6 @@ node-releases@^1.1.38: dependencies: semver "^6.3.0" -node-source-walk@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-3.3.0.tgz#ad18e35bfdb3d0b6f7e0e4aff1e78f846a3b8873" - integrity sha1-rRjjW/2z0Lb34OSv8eePhGo7iHM= - dependencies: - babylon "^6.17.0" - -node-source-walk@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-4.2.0.tgz#c2efe731ea8ba9c03c562aa0a9d984e54f27bc2c" - integrity sha512-hPs/QMe6zS94f5+jG3kk9E7TNm4P2SulrKiLWMzKszBfNZvL/V6wseHlTd7IvfW0NZWqPtK3+9yYNr+3USGteA== - dependencies: - "@babel/parser" "^7.0.0" - node-uuid@~1.4.0: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" @@ -12863,15 +11295,7 @@ node-watch@0.6.1: resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.6.1.tgz#b9874111ce9f5841b1c7596120206c7b825be0e9" integrity sha512-gwQiR7weFRV8mAtT0x0kXkZ18dfRLB45xH7q0hCOVQMLfLb2f1ZaSvR57q4/b/Vj6B0RwMNJYbvb69e1yM7qEA== -nodeify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" - integrity sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0= - dependencies: - is-promise "~1.0.0" - promise "~1.3.0" - -"nopt@2 || 3", nopt@3.x, nopt@^3.0.1, nopt@^3.0.6: +"nopt@2 || 3", nopt@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= @@ -12886,13 +11310,6 @@ nopt@^4.0.1, nopt@~4.0.1: abbrev "1" osenv "^0.1.4" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -12929,17 +11346,7 @@ normalize-url@2.0.1: query-string "^5.0.1" sort-keys "^2.0.0" -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^4.0.0: +normalize-url@^4.0.0, 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== @@ -12962,6 +11369,14 @@ npm-cache-filename@~1.0.2: resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= +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" + npm-git-info@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/npm-git-info/-/npm-git-info-1.0.3.tgz#a933c42ec321e80d3646e0d6e844afe94630e1d5" @@ -13042,13 +11457,6 @@ npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: npm-package-arg "^6.1.0" safe-buffer "^5.2.0" -npm-run-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" - integrity sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8= - dependencies: - path-key "^1.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -13199,15 +11607,6 @@ npm@^6.10.3: gauge "~2.7.3" set-blocking "~2.0.0" -npmlog@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" - integrity sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI= - dependencies: - ansi "~0.3.1" - are-we-there-yet "~1.1.2" - gauge "~1.2.5" - nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -13238,11 +11637,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -"nwmatcher@>= 1.3.7 < 2.0.0": - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" - integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== - nwsapi@^2.0.7, nwsapi@^2.0.9: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -13253,11 +11647,6 @@ oauth-sign@~0.3.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz#cb540f93bb2b22a7d5941691a288d60e8ea9386e" integrity sha1-y1QPk7srIqfVlBaRoojWDo6pOG4= -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -13366,7 +11755,7 @@ on-headers@~1.0.1, on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -13392,18 +11781,18 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +open@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== -opn@^5.0.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -13412,13 +11801,6 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk= - dependencies: - wordwrap "~0.0.2" - optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -13443,7 +11825,7 @@ ora@^2.0.0: strip-ansi "^4.0.0" wcwidth "^1.0.1" -ora@^3.4.0: +ora@^3.0.0, ora@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== @@ -13465,13 +11847,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -13481,7 +11856,7 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-name@^3.0.0, os-name@^3.1.0: +os-name@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== @@ -13499,7 +11874,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -13512,6 +11887,11 @@ p-cancelable@^0.4.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== +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-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -13714,13 +12094,6 @@ parse-author@^2.0.0: dependencies: author-regex "^1.0.0" -parse-color@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" - integrity sha1-e3SLlag/A/FqlPU15S1/PZRlhhk= - dependencies: - color-convert "~0.5.0" - parse-git-config@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb" @@ -13760,6 +12133,11 @@ parse-ms@^1.0.0: resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" integrity sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0= +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -13775,11 +12153,6 @@ parse5@5.1.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= - parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -13848,11 +12221,6 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -path-key@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" - integrity sha1-XVPVeAGWRsDWiADbThRua9wqx68= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -13941,11 +12309,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - perfectionist@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/perfectionist/-/perfectionist-2.4.0.tgz#c147ad3714e126467f1764129ee72df861d47ea0" @@ -13962,11 +12325,6 @@ perfectionist@^2.4.0: vendors "^1.0.0" write-file-stdout "0.0.2" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -14033,16 +12391,7 @@ pkg-up@^2.0.0: dependencies: find-up "^2.1.0" -plist@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/plist/-/plist-2.1.0.tgz#57ccdb7a0821df21831217a3cad54e3e146a1025" - integrity sha1-V8zbeggh3yGDEhejytVOPhRqECU= - dependencies: - base64-js "1.2.0" - xmlbuilder "8.2.2" - xmldom "0.1.x" - -plist@^3.0.1: +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== @@ -14070,68 +12419,6 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - postcss-easy-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-easy-import/-/postcss-easy-import-3.0.0.tgz#8eaaf5ae59566083d0cae98735dfd803e3ab194d" @@ -14146,13 +12433,6 @@ postcss-easy-import@^3.0.0: postcss-import "^10.0.0" resolve "^1.1.7" -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== - dependencies: - postcss "^5.0.4" - postcss-functions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" @@ -14189,75 +12469,6 @@ postcss-less@^3.1.0: dependencies: postcss "^7.0.14" -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - postcss-nested@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz#cde40bd07a078565f3df72e2dc2665871c724852" @@ -14266,55 +12477,6 @@ postcss-nested@^3.0.0: postcss "^6.0.14" postcss-selector-parser "^3.1.1" -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - postcss-scss@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.3.1.tgz#65c610d8e2a7ee0e62b1835b71b8870734816e4b" @@ -14336,15 +12498,6 @@ postcss-selector-namespace@^2.0.0: dependencies: postcss "^7.0.0" -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss-selector-parser@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" @@ -14354,40 +12507,12 @@ postcss-selector-parser@^3.1.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: +postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16, postcss@^5.2.4: +postcss@^5.0.8, postcss@^5.2.4: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== @@ -14420,7 +12545,7 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0, prepend-http@^1.0.1: +prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= @@ -14445,6 +12570,13 @@ pretty-ms@^3.1.0: dependencies: parse-ms "^1.0.0" +pretty-ms@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.0.0.tgz#6133a8f55804b208e4728f6aa7bf01085e951e24" + integrity sha512-94VRYjL9k33RzfKiGokPBPpsmloBYSf5Ri+Pq19zlsEcUKFob+admeXr5eFDRuPjFmEOcjJvPGdillYOJyvZ7Q== + dependencies: + parse-ms "^2.1.0" + printf@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/printf/-/printf-0.5.2.tgz#8546e01a1f647b1dff510ae92bdc92beb8c9b2f9" @@ -14514,34 +12646,6 @@ promise.prototype.finally@^3.1.0, promise.prototype.finally@^3.1.1: es-abstract "^1.13.0" function-bind "^1.1.1" -promise@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6" - integrity sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY= - dependencies: - asap "~1.0.0" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -promise@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" - integrity sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU= - dependencies: - is-promise "~1" - -promise@~2.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-2.0.0.tgz#46648aa9d605af5d2e70c3024bf59436da02b80e" - integrity sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4= - dependencies: - is-promise "~1" - promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -14574,13 +12678,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pruner@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/pruner/-/pruner-0.0.7.tgz#345fbcb3e80701163a1d7adf56bac229a5a1e4c1" - integrity sha1-NF+8s+gHARY6HXrfVrrCKaWh5ME= - dependencies: - fs-extra "^4.0.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -14668,24 +12765,11 @@ qs@~1.0.0: resolved "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz#50a93e2b5af6691c31bcea5dae78ee6ea1903768" integrity sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g= -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -14709,7 +12793,7 @@ querystring-es3@^0.2.0: resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= -querystring@0.2.0, querystring@^0.2.0: +querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= @@ -14752,14 +12836,6 @@ qw@~1.0.1: resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= -random-path@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/random-path/-/random-path-0.1.1.tgz#f8f4d36f75a134ca15fd39c7d7505fbf163b634c" - integrity sha1-+PTTb3WhNMoV/TnH11BfvxY7Y0w= - dependencies: - base32-encode "^0.1.0" - murmur-32 "^0.1.0" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -14798,7 +12874,7 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7, rc@^1.2.8: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -14808,10 +12884,10 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -rcedit@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-1.1.2.tgz#7a28edf981953f75b5f3e5d4cbc1f9ffa0abbc78" - integrity sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw== +rcedit@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-2.1.0.tgz#37ae6ad1fc8d7734b2e445ec3d378ace89d4076d" + integrity sha512-Nrd/65LzMjFmKpS9d2fqIxVYdW0M8ovsN0PgZhCrPMQss2yznkp6/zjEQ1a9DzzoGv2uuN3yDJAeHybOD5ZNKA== read-cache@^1.0.0: version "1.0.0" @@ -14946,7 +13022,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -14959,16 +13035,6 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@1.1: - version "1.1.13" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" - integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - "readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" @@ -14978,20 +13044,20 @@ readable-stream@1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^1.0.27-1, readable-stream@^1.1.8, readable-stream@~1.1.10, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= +readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~1.0.2, readable-stream@~1.0.24, readable-stream@~1.0.26: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= +readable-stream@~1.1.10, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -15064,22 +13130,6 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" - integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== - dependencies: - balanced-match "^1.0.0" - regenerate-unicode-properties@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" @@ -15232,7 +13282,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -15260,35 +13310,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@2.x, request@^2.45.0, request@^2.55.0, request@^2.87.0, request@^2.88.0: +request@^2.45.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -15354,13 +13376,6 @@ require-relative@^0.8.7: resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= -requirefresh@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/requirefresh/-/requirefresh-2.3.0.tgz#fb09387b57f5ed335ff4a4beea3d8c0bf2367306" - integrity sha512-oskKAg0pSlPnJAkFMrcqrHeCGzYunl4Hkl+N/NW3nnFWDHRg97yb475HtF5ax8LP9i8QvVkenVIhjNb+h+P7nA== - dependencies: - editions "^2.2.0" - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -15417,11 +13432,6 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - resolve@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" @@ -15429,14 +13439,14 @@ resolve@1.9.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.3, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.8.1: +resolve@^1.1.3, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.8.1: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -responselike@1.0.2: +responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= @@ -15479,13 +13489,6 @@ reusify@^1.0.0: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - rimraf@2, rimraf@^2.2.8, rimraf@^2.3.4, rimraf@^2.4.1, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -15507,11 +13510,6 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" -rimraf@~2.2.8: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -15520,6 +13518,18 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +roarr@^2.14.4: + version "2.14.5" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.14.5.tgz#0a6c5b41e7e4a7b34f1ecb81b5c41a2b66e412e8" + integrity sha512-jwwW1NEYh06O+teTDJt4ETtLdxb3BBir0vThgQQGz88bYypRv69jQhMVRKI8Ps/6LeqsRBGe28V3Awjy38LFoQ== + dependencies: + boolean "^2.0.3" + detect-node "^2.0.4" + globalthis "^1.0.0" + json-stringify-safe "^5.0.1" + semver-compare "^1.0.0" + sprintf-js "^1.1.2" + rollup-plugin-commonjs@^8.3.0: version "8.4.1" resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz#5c9cea2b2c3de322f5fbccd147e07ed5e502d7a0" @@ -15607,30 +13617,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= - rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= -rxjs@^5.1.1, rxjs@^5.5.2: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - rxjs@^6.3.1, rxjs@^6.4.0: version "6.5.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" @@ -15638,21 +13629,6 @@ rxjs@^6.3.1, rxjs@^6.4.0: dependencies: tslib "^1.9.0" -s3@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/s3/-/s3-4.4.0.tgz#56a4f775515a7b6b9c8e5c6b1ab51f9037669f1f" - integrity sha1-VqT3dVFae2ucjlxrGrUfkDdmnx8= - dependencies: - aws-sdk "~2.0.31" - fd-slicer "~1.0.0" - findit2 "~2.2.3" - graceful-fs "~3.0.5" - mime "~1.2.11" - mkdirp "~0.5.0" - pend "~1.2.0" - rimraf "~2.2.8" - streamsink "~1.2.0" - safe-buffer@5.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" @@ -15673,31 +13649,13 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: - ret "~0.1.10" - -safefs@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/safefs/-/safefs-4.2.0.tgz#6d60d3aecc47c3d02b0ecf39ee0a3798cb363218" - integrity sha512-1amPBO92jw/hWS+gH/u7z7EL7YxaJ8WecBQl49tMQ6Y6EQfndxNNKwlPqDOcwpUetdmK6nKLoVdjybVScRwq5A== - dependencies: - editions "^2.2.0" - graceful-fs "^4.2.3" + ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sander@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" - integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= - dependencies: - es6-promise "^3.1.2" - graceful-fs "^4.1.3" - mkdirp "^0.5.1" - rimraf "^2.5.2" - sane@^4.0.0, sane@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" @@ -15713,26 +13671,13 @@ sane@^4.0.0, sane@^4.1.0: minimist "^1.1.1" walker "~1.0.5" -sanitize-filename@^1.6.0: +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" -sass-lookup@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-1.1.0.tgz#da44a21beea5955f14effdb81bdee2751b6d15e2" - integrity sha1-2kSiG+6llV8U7/24G97idRttFeI= - dependencies: - commander "~2.8.1" - is-relative-path "~1.0.0" - -sass.js@^0.10.1: - version "0.10.13" - resolved "https://registry.yarnpkg.com/sass.js/-/sass.js-0.10.13.tgz#6f39698755a14d7a7795f9dc85175f122ad91d9b" - integrity sha512-kgx2iuK+Rg2GM9mNTL9nYsJVTRp64JcHTIgkkHb+TsZY/+C2X6gd3rD7j+SPohNNHewEIBLZ9zpTpDGXX/3Ksg== - sass@^1.22.10, sass@^1.23.3: version "1.23.6" resolved "https://registry.yarnpkg.com/sass/-/sass-1.23.6.tgz#7cce6dbeac1b8caeb33301a817642ee2708f7d7e" @@ -15740,17 +13685,7 @@ sass@^1.22.10, sass@^1.23.3: dependencies: chokidar ">=2.0.0 <4.0.0" -sax@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/sax/-/sax-0.4.2.tgz#39f3b601733d6bec97105b242a2a40fd6978ac3c" - integrity sha1-OfO2AXM9a+yXEFskKipA/Wl4rDw= - -sax@0.5.x: - version "0.5.8" - resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" - integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= - -sax@>=0.6.0, sax@^1.1.4, sax@^1.2.1, sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -15816,6 +13751,11 @@ semantic-release@^15.10.6: signale "^1.2.1" yargs "^14.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-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -15838,11 +13778,6 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-2.2.1.tgz#7941182b3ffcc580bff1c17942acdf7951c0d213" - integrity sha1-eUEYKz/8xYC/8cF5QqzfeVHA0hM= - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -15867,6 +13802,13 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +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" + serialize-javascript@^1.7.0: version "1.9.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" @@ -15956,11 +13898,6 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -15994,6 +13931,11 @@ single-line-log@^1.1.2: dependencies: string-width "^1.0.1" +sinon-chai@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.3.0.tgz#8084ff99451064910fbe2c2cb8ab540c00b740ea" + integrity sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA== + sinon@^7.5.0: version "7.5.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" @@ -16085,13 +14027,6 @@ sntp@0.2.x: dependencies: hoek "0.9.x" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= - dependencies: - hoek "2.x.x" - socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" @@ -16163,23 +14098,6 @@ socks@~2.3.2: ip "1.1.5" smart-buffer "^4.1.0" -sorcery@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" - integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc= - dependencies: - buffer-crc32 "^0.2.5" - minimist "^1.2.0" - sander "^0.5.0" - sourcemap-codec "^1.3.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -16219,7 +14137,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== @@ -16237,7 +14155,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@~0.5.12: +source-map-support@^0.5.13, source-map-support@~0.5.12: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== @@ -16255,13 +14173,6 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.1.x, source-map@~0.1.7, source-map@~0.1.x: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - source-map@0.4.x, source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -16269,7 +14180,7 @@ source-map@0.4.x, source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -16279,19 +14190,14 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= +source-map@~0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= dependencies: amdefine ">=0.0.4" -sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.1: +sourcemap-codec@^1.4.1: version "1.4.6" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== @@ -16316,15 +14222,6 @@ spawn-error-forwarder@~1.0.0: resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029" integrity sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk= -spawn-rx@^2.0.3: - version "2.0.12" - resolved "https://registry.yarnpkg.com/spawn-rx/-/spawn-rx-2.0.12.tgz#b6285294499426089beea0c3c1ec32d7fc57a376" - integrity sha512-gOPXiQQFQ9lTOLuys0iMn3jfxxv9c7zzwhbYLOEbQGvEShHVJ5sSR1oD3Daj88os7jKArDYT7rbOKdvNhe7iEg== - dependencies: - debug "^2.5.1" - lodash.assign "^4.2.0" - rxjs "^5.1.1" - spawn-rx@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spawn-rx/-/spawn-rx-3.0.0.tgz#1d33511e13ec26337da51d78630e08beb57a6767" @@ -16406,7 +14303,7 @@ split@^1.0.0: dependencies: through "2" -sprintf-js@^1.0.3: +sprintf-js@^1.0.3, 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== @@ -16486,11 +14383,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-buffers@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" - integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= - stream-combiner2@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" @@ -16538,11 +14430,6 @@ stream-to-array@^2.3.0: dependencies: any-promise "^1.1.0" -streamsink@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/streamsink/-/streamsink-1.2.0.tgz#efafee9f1e22d3591ed7de3dcaa95c3f5e79f73c" - integrity sha1-76/unx4i01ke1949yqlcP1559zw= - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -16558,7 +14445,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -16682,7 +14569,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.0, strip-indent@^1.0.1: +strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= @@ -16709,45 +14596,10 @@ styled_string@0.0.1: resolved "https://registry.yarnpkg.com/styled_string/-/styled_string-0.0.1.tgz#d22782bd81295459bc4f1df18c4bad8e94dd124a" integrity sha1-0ieCvYEpVFm8Tx3xjEutjpTdEko= -stylus-lookup@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-1.0.2.tgz#7959beac0bb557ebd13af3bc3acbeeffb27660d4" - integrity sha1-eVm+rAu1V+vROvO8Osvu/7J2YNQ= - dependencies: - commander "~2.8.1" - debug "^3.1.0" - is-relative-path "~1.0.0" - -stylus@0.54.5: - version "0.54.5" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" - integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= - dependencies: - css-parse "1.7.x" - debug "*" - glob "7.0.x" - mkdirp "0.5.x" - sax "0.5.x" - source-map "0.1.x" - -stylus@^0.54.5: - version "0.54.7" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.7.tgz#c6ce4793965ee538bcebe50f31537bfc04d88cd2" - integrity sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug== - dependencies: - css-parse "~2.0.0" - debug "~3.1.0" - glob "^7.1.3" - mkdirp "~0.5.x" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.0.0" - source-map "^0.7.3" - -sudo-prompt@^8.0.0: - version "8.2.5" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" - integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== +sudo-prompt@^9.0.0: + version "9.1.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0" + integrity sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA== sum-up@^1.0.1: version "1.0.3" @@ -16756,12 +14608,12 @@ sum-up@^1.0.1: dependencies: chalk "^1.0.0" -sumchecker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e" - integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4= +sumchecker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.0.tgz#da5457b4605184575c76540e5e99cc777cb8ce4c" + integrity sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ== dependencies: - debug "^2.2.0" + debug "^4.1.0" supports-color@6.0.0: version "6.0.0" @@ -16775,7 +14627,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.1.0, supports-color@^3.2.3: +supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= @@ -16830,25 +14682,7 @@ svgo@1.3.0: unquote "~1.1.1" util.promisify "~1.0.0" -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -"symbol-tree@>= 3.1.0 < 4.0.0", symbol-tree@^3.2.2: +symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -16869,11 +14703,6 @@ sync-disk-cache@^1.3.3: rimraf "^2.2.8" username-sync "^1.0.2" -synchronous-promise@^1.0.7: - version "1.0.18" - resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-1.0.18.tgz#936e8763e6554088cdcf78dc64f7473b972fcefc" - integrity sha512-UqMAK6BBBXu8qaDI5omlyV9iDpM9nQfgthaBOK0nlfXnMgiuOBv+meWG73CGeCCFRhOOOa2e4rvqYzfynzy5zg== - table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -16884,20 +14713,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tabtab@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tabtab/-/tabtab-2.2.2.tgz#7a047f143b010b4cbd31f857e82961512cbf4e14" - integrity sha1-egR/FDsBC0y9MfhX6ClhUSy/ThQ= - dependencies: - debug "^2.2.0" - inquirer "^1.0.2" - lodash.difference "^4.5.0" - lodash.uniq "^4.5.0" - minimist "^1.2.0" - mkdirp "^0.5.1" - npmlog "^2.0.3" - object-assign "^4.1.0" - tailwindcss@^0.6.1: version "0.6.6" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-0.6.6.tgz#a8c8a8bf7d230c8bc10031672923d84af29cd34d" @@ -16928,25 +14743,6 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar-stream@~0.4.0: - version "0.4.7" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-0.4.7.tgz#1f1d2ce9ebc7b42765243ca0e8f1b7bfda0aadcd" - integrity sha1-Hx0s6evHtCdlJDyg6PG3v9oKrc0= - dependencies: - bl "^0.9.0" - end-of-stream "^1.0.0" - readable-stream "^1.0.27-1" - xtend "^4.0.0" - -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -16972,13 +14768,6 @@ temp@0.9.0: dependencies: rimraf "~2.6.2" -temp@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - tempy@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" @@ -17074,20 +14863,6 @@ text-table@^0.2.0, text-table@~0.2.0: resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= - dependencies: - any-promise "^1.0.0" - throttleit@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" @@ -17151,11 +14926,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tiny-each-async@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tiny-each-async/-/tiny-each-async-2.0.3.tgz#8ebbbfd6d6295f1370003fbb37162afe5a0a51d1" - integrity sha1-jru/1tYpXxNwAD+7NxYq/loKUdE= - tiny-emitter@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" @@ -17178,7 +14948,7 @@ tiny-relative-date@^1.3.0: resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== -tmp-promise@^1.0.3, tmp-promise@^1.0.5: +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== @@ -17193,13 +14963,6 @@ tmp@0.0.28: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.29, tmp@^0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" - integrity sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA= - dependencies: - os-tmpdir "~1.0.1" - tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -17214,18 +14977,18 @@ tmp@0.1.0, tmp@^0.1.0: dependencies: rimraf "^2.6.3" +tmp@^0.0.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + integrity sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA= + dependencies: + os-tmpdir "~1.0.1" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -tn1150@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tn1150/-/tn1150-0.1.0.tgz#673503d24d56b87de8b8c77fee3fc0853d59a18d" - integrity sha1-ZzUD0k1WuH3ouMd/7j/AhT1ZoY0= - dependencies: - unorm "^1.4.1" - to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -17253,6 +15016,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +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== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -17295,13 +15063,6 @@ topo@2.x.x: dependencies: hoek "4.x.x" -touch@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/touch/-/touch-0.0.3.tgz#51aef3d449571d4f287a5d87c9c8b49181a0db1d" - integrity sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0= - dependencies: - nopt "~1.0.10" - tough-cookie@>=0.12.0: version "3.0.1" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" @@ -17311,7 +15072,7 @@ tough-cookie@>=0.12.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3: +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -17319,13 +15080,6 @@ tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4 psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -17334,14 +15088,6 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -toutsuite@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/toutsuite/-/toutsuite-0.6.0.tgz#fad2b445372ccbb831609d4e7803fcf392bed4ce" - integrity sha1-+tK0RTcsy7gxYJ1OeAP885K+1M4= - dependencies: - debug "^2.5.1" - synchronous-promise "^1.0.7" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -17349,25 +15095,6 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -tr46@~0.0.1: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -transformers@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/transformers/-/transformers-2.1.0.tgz#5d23cb35561dd85dc67fb8482309b47d53cce9a7" - integrity sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac= - dependencies: - css "~1.0.8" - promise "~2.0" - uglify-js "~2.2.5" - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= - traverse@~0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" @@ -17449,6 +15176,11 @@ tunnel-agent@~0.4.0: resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us= +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -17476,7 +15208,7 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.1: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -17489,13 +15221,6 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typechecker@^4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-4.9.0.tgz#e00a0102f858571c7c5cb8af7f440695decae334" - integrity sha512-gN9+YYaQ9N8JZpCHJq0z1thokA5UfpzF3NbCJzJbM/vW7XtEZ5QyGE7I0RrBUEaLHDUf/MUXlmVpnVBDfE6AoQ== - dependencies: - editions "^2.2.0" - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -17515,26 +15240,11 @@ typescript-memoize@^1.0.0-alpha.3: dependencies: core-js "2.4.1" -typescript@>=1.6: - version "3.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.2.tgz#27e489b95fa5909445e9fef5ee48d81697ad18fb" - integrity sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ== - uc.micro@^1.0.0, uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -uglify-js@^2.4.19: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - uglify-js@^3.1.4: version "3.6.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.9.tgz#85d353edb6ddfb62a9d798f36e91792249320611" @@ -17543,19 +15253,6 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" -uglify-js@~2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz#a6e02a70d839792b9780488b7b8b184c095c99c7" - integrity sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc= - dependencies: - optimist "~0.3.5" - source-map "~0.1.7" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -17617,11 +15314,6 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -17658,13 +15350,6 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universal-user-agent@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.1.0.tgz#5abfbcc036a1ba490cb941f8fd68c46d3669e8e4" - integrity sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q== - dependencies: - os-name "^3.0.0" - universal-user-agent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16" @@ -17677,11 +15362,6 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unorm@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -17764,24 +15444,11 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= - url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= -url@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -17816,13 +15483,13 @@ username@^1.0.1: dependencies: meow "^3.4.0" -username@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/username/-/username-3.0.0.tgz#b3dba982a72b4ce59d52f159fa1aeba266af5fc8" - integrity sha1-s9upgqcrTOWdUvFZ+hrromavX8g= +username@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/username/-/username-5.1.0.tgz#a7f9325adce2d0166448cdd55d4985b1360f2508" + integrity sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg== dependencies: - execa "^0.7.0" - mem "^1.1.0" + execa "^1.0.0" + mem "^4.3.0" utf8-byte-length@^1.0.1: version "1.0.4" @@ -17873,7 +15540,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.0, uuid@^3.3.2, uuid@^3.3.3: +uuid@^3.3.2, uuid@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== @@ -17927,29 +15594,6 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -void-elements@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -vue-hot-reload-api@^2.0.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-template-compiler@^2.0.0-alpha.8: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" - integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.4.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" @@ -18035,11 +15679,6 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webidl-conversions@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" - integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY= - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -18114,13 +15753,6 @@ whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url-compat@~0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" - integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8= - dependencies: - tr46 "~0.0.1" - whatwg-url@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" @@ -18139,22 +15771,12 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.8, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@1.3.1, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -18182,16 +15804,6 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= - windows-release@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" @@ -18199,29 +15811,11 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -with@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/with/-/with-4.0.3.tgz#eefd154e9e79d2c8d3417b647a8f14d9fecce14e" - integrity sha1-7v0VTp550sjTQXtkeo8U2f7M4U4= - dependencies: - acorn "^1.0.1" - acorn-globals "^1.0.3" - -word-wrap@^1.2.1, word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -18277,11 +15871,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -wrench@~1.5.4: - version "1.5.9" - resolved "https://registry.yarnpkg.com/wrench/-/wrench-1.5.9.tgz#411691c63a9b2531b1700267279bdeca23b2142a" - integrity sha1-QRaRxjqbJTGxcAJnJ5veyiOyFCo= - write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -18351,52 +15940,16 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -"xml-name-validator@>= 2.0.1 < 3.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xml2js@0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.2.6.tgz#d209c4e4dda1fc9c452141ef41c077f5adfdf6c4" - integrity sha1-0gnE5N2h/JxFIUHvQcB39a399sQ= - dependencies: - sax "0.4.2" - -xml2js@^0.4.19: - version "0.4.22" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.22.tgz#4fa2d846ec803237de86f30aa9b5f70b6600de02" - integrity sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw== - dependencies: - sax ">=0.6.0" - util.promisify "~1.0.0" - xmlbuilder "~11.0.0" - -xmlbuilder@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-0.4.2.tgz#1776d65f3fdbad470a08d8604cdeb1c4e540ff83" - integrity sha1-F3bWXz/brUcKCNhgTN6xxOVA/4M= - -xmlbuilder@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" - integrity sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M= - xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - xmlchars@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" @@ -18475,27 +16028,13 @@ yargs-parser@^15.0.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= - dependencies: - camelcase "^3.0.0" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= +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 "^3.0.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^9.0.2: version "9.0.2" @@ -18513,7 +16052,7 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs@13.3.0, yargs@^13.2.2, yargs@^13.2.4, yargs@^13.3.0: +yargs@13.3.0, yargs@^13.2.4, yargs@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== @@ -18529,25 +16068,6 @@ yargs@13.3.0, yargs@^13.2.2, yargs@^13.2.4, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.0.2.tgz#115b97df1321823e8b8648e8968c782521221f67" - integrity sha1-EVuX3xMhgj6Lhkjolox4JSEiH2c= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yargs@^11.0.0: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" @@ -18583,62 +16103,6 @@ yargs@^14.0.0: y18n "^4.0.0" yargs-parser "^15.0.0" -yargs@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - -yargs@^6.0.0, yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yarn-or-npm@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-2.0.4.tgz#46e38aafce74c350e6c0cca72712fca7410fad98" - integrity sha1-RuOKr850w1DmwMynJxL8p0EPrZg= - dependencies: - cross-spawn "^5.0.0" - yarn-or-npm@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666" @@ -18647,13 +16111,6 @@ yarn-or-npm@^3.0.1: cross-spawn "^6.0.5" pkg-dir "^4.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" - yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" @@ -18678,19 +16135,3 @@ yuidocjs@^0.10.2: minimatch "^3.0.2" rimraf "^2.4.1" yui "^3.18.1" - -zip-folder@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/zip-folder/-/zip-folder-1.0.0.tgz#70a7744fd1789a2feb41ad3419b32e9fd87957b2" - integrity sha1-cKd0T9F4mi/rQa00GbMun9h5V7I= - dependencies: - archiver "^0.11.0" - -zip-stream@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-0.4.1.tgz#4ea795a8ce19e9fab49a31d1d0877214159f03a3" - integrity sha1-TqeVqM4Z6fq0mjHR0IdyFBWfA6M= - dependencies: - compress-commons "~0.1.0" - lodash "~2.4.1" - readable-stream "~1.0.26" From 3da0858ff9fcd4a4a89292ed944e261b476e3878 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Mon, 18 Nov 2019 11:37:52 -0800 Subject: [PATCH 05/24] feat: simplify build pipeline This commit significantly simplifies the build pipeline. The lynch pin was getting rid of the resources folders, since those were what created a difference between the Electron app as it existed in the source tree, and as it existed when we invoked electron-forge. Removing that allowed us to put a proper electron-forge project inside the Ember app, complete with its own package.json and node_modules. Then the ember electron commands just need to build the ember app, put the results in the Electron app, and we have a complete electron app exactly as electron-forge would expect. This also allows us to keep the Electron dependencies separate from the Ember dependencies, which makes dependency management/maintenance much simpler. --- .eslintrc.js | 33 ++- .mocharc.js | 3 + .travis.yml | 2 +- .../files/ember-electron/test-main.js | 2 - .../ember-electron/files/testem-electron.js | 4 +- .../files/tests/ember-electron/.eslintrc.js | 5 - blueprints/ember-electron/index.js | 131 +-------- .../files}/.eslintrc.js | 0 .../main.js => forge/files/src/index.js | 4 +- forge/files/tests/index.js | 1 + forge/template.js | 33 +++ index.js | 20 +- lib/commands/assemble.js | 26 -- lib/commands/base.js | 53 ++++ lib/commands/build.js | 30 +- lib/commands/electron.js | 130 ++------- lib/commands/make.js | 29 +- lib/commands/package.js | 31 ++- lib/commands/test.js | 17 +- lib/models/assembler.js | 262 ------------------ lib/models/builder.js | 77 ----- lib/resources/shim-footer.js | 2 +- lib/tasks/assemble.js | 89 ------ lib/tasks/build-for-test.js | 18 -- lib/tasks/build.js | 54 ---- lib/tasks/electron.js | 74 +++++ lib/tasks/make.js | 31 +-- lib/tasks/package.js | 61 ++-- lib/tasks/yarn-or-npm.js | 18 ++ .../{test-main.js => test-index.js} | 1 - lib/utils/assemble-tree.js | 132 --------- lib/utils/build-paths.js | 11 + lib/utils/logger.js | 31 --- lib/utils/yarn-or-npm.js | 23 -- node-tests/.eslintrc | 3 - node-tests/acceptance/end-to-end-test.js | 8 +- node-tests/helpers/expect.js | 8 - node-tests/helpers/mock-electron-project.js | 23 ++ node-tests/helpers/mocks/project.js | 30 -- node-tests/helpers/test-setup.js | 13 + node-tests/integration/commands/build-test.js | 62 +++++ .../integration/commands/electron-test.js | 138 +++++++++ node-tests/integration/commands/make-test.js | 143 ++++++++++ .../integration/commands/package-test.js | 86 ++++++ .../integration/models/assembler-test.js | 132 --------- .../integration/utils/assemble-tree-test.js | 204 -------------- node-tests/mocha-standard.js | 6 - node-tests/runner.js | 22 -- node-tests/unit/commands/assemble-test.js | 76 ----- node-tests/unit/commands/build-test.js | 25 -- node-tests/unit/commands/electron-test.js | 175 ------------ node-tests/unit/commands/make-test.js | 76 ----- node-tests/unit/commands/package-test.js | 76 ----- node-tests/unit/commands/test-test.js | 28 -- node-tests/unit/models/builder-test.js | 133 --------- node-tests/unit/tasks/assemble-test.js | 223 --------------- node-tests/unit/tasks/build-for-test-test.js | 48 ---- node-tests/unit/tasks/build-test.js | 115 -------- node-tests/unit/tasks/make-test.js | 225 --------------- node-tests/unit/tasks/package-test.js | 234 ---------------- node-tests/unit/utils/test-task-mixin-test.js | 32 --- node-tests/unit/utils/yarn-or-npm-test.js | 86 ------ package.json | 34 +-- tests/unit/end-to-end-test.js | 6 +- yarn.lock | 107 ++++++- 65 files changed, 921 insertions(+), 3094 deletions(-) create mode 100644 .mocharc.js delete mode 100644 blueprints/ember-electron/files/ember-electron/test-main.js delete mode 100644 blueprints/ember-electron/files/tests/ember-electron/.eslintrc.js rename {blueprints/ember-electron/files/ember-electron => forge/files}/.eslintrc.js (100%) rename blueprints/ember-electron/files/ember-electron/main.js => forge/files/src/index.js (97%) create mode 100644 forge/files/tests/index.js create mode 100644 forge/template.js delete mode 100644 lib/commands/assemble.js create mode 100644 lib/commands/base.js delete mode 100644 lib/models/assembler.js delete mode 100644 lib/models/builder.js delete mode 100644 lib/tasks/assemble.js delete mode 100644 lib/tasks/build-for-test.js delete mode 100644 lib/tasks/build.js create mode 100644 lib/tasks/electron.js create mode 100644 lib/tasks/yarn-or-npm.js rename lib/test-support/{test-main.js => test-index.js} (99%) delete mode 100644 lib/utils/assemble-tree.js create mode 100644 lib/utils/build-paths.js delete mode 100644 lib/utils/logger.js delete mode 100644 lib/utils/yarn-or-npm.js delete mode 100644 node-tests/.eslintrc delete mode 100755 node-tests/helpers/expect.js create mode 100644 node-tests/helpers/mock-electron-project.js delete mode 100755 node-tests/helpers/mocks/project.js create mode 100644 node-tests/helpers/test-setup.js create mode 100644 node-tests/integration/commands/build-test.js create mode 100755 node-tests/integration/commands/electron-test.js create mode 100644 node-tests/integration/commands/make-test.js create mode 100644 node-tests/integration/commands/package-test.js delete mode 100644 node-tests/integration/models/assembler-test.js delete mode 100644 node-tests/integration/utils/assemble-tree-test.js delete mode 100755 node-tests/mocha-standard.js delete mode 100755 node-tests/runner.js delete mode 100644 node-tests/unit/commands/assemble-test.js delete mode 100644 node-tests/unit/commands/build-test.js delete mode 100755 node-tests/unit/commands/electron-test.js delete mode 100644 node-tests/unit/commands/make-test.js delete mode 100644 node-tests/unit/commands/package-test.js delete mode 100755 node-tests/unit/commands/test-test.js delete mode 100644 node-tests/unit/models/builder-test.js delete mode 100644 node-tests/unit/tasks/assemble-test.js delete mode 100644 node-tests/unit/tasks/build-for-test-test.js delete mode 100644 node-tests/unit/tasks/build-test.js delete mode 100644 node-tests/unit/tasks/make-test.js delete mode 100644 node-tests/unit/tasks/package-test.js delete mode 100644 node-tests/unit/utils/test-task-mixin-test.js delete mode 100644 node-tests/unit/utils/yarn-or-npm-test.js diff --git a/.eslintrc.js b/.eslintrc.js index 90a5dff6..98b70126 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,8 +26,7 @@ module.exports = { 'processNode': true }, rules: { - 'ember/no-jquery': 'error', - 'no-console': 'off' + 'ember/no-jquery': 'error' }, overrides: [ // node files @@ -61,6 +60,36 @@ module.exports = { // add your custom rules and overrides for node files here 'ember/avoid-leaking-state-in-ember-objects': 'off', }) + }, + // forge template files + { + files: [ + 'forge/files/**/*.js' + ], + env: { + browser: false, + node: true + }, + plugins: ['node'], + rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { + 'node/no-missing-require': ['error', { + 'allowModules': [ + 'electron', + 'ember-electron' + ], + }] + }) + }, + // mocha files + { + files: [ + 'node-tests/**/*.js' + ], + env: { + browser: false, + node: true, + mocha: true + } } ] }; diff --git a/.mocharc.js b/.mocharc.js new file mode 100644 index 00000000..76a91ac4 --- /dev/null +++ b/.mocharc.js @@ -0,0 +1,3 @@ +module.exports = { + file: [ 'node-tests/helpers/test-setup' ] +}; diff --git a/.travis.yml b/.travis.yml index 6a77c11d..d9506497 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ jobs: - env: EMBER_TRY_SCENARIO=ember-canary include: - # runs linting and fast integration/unit tests + # runs linting and fast tests - stage: "Basic Tests" script: - yarn lint:hbs diff --git a/blueprints/ember-electron/files/ember-electron/test-main.js b/blueprints/ember-electron/files/ember-electron/test-main.js deleted file mode 100644 index 0cd0f74c..00000000 --- a/blueprints/ember-electron/files/ember-electron/test-main.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-env node */ -require('ember-electron/lib/test-support/test-main'); diff --git a/blueprints/ember-electron/files/testem-electron.js b/blueprints/ember-electron/files/testem-electron.js index cf089ff9..2bd0edce 100644 --- a/blueprints/ember-electron/files/testem-electron.js +++ b/blueprints/ember-electron/files/testem-electron.js @@ -1,4 +1,3 @@ -/* eslint-env node */ module.exports = { test_page: 'tests/index.html?hidepassed', disable_watching: true, @@ -16,10 +15,9 @@ module.exports = { // Note: Some these Chrome options may not be supported in Electron // See https://electronjs.org/docs/api/chrome-command-line-switches ci: [ - // --no-sandbox may be needed when running inside a container + // --no-sandbox is needed when running Chrome inside a container process.env.CI ? '--no-sandbox' : null, '--headless', - '--disable-gpu', '--disable-dev-shm-usage', '--disable-software-rasterizer', '--mute-audio', diff --git a/blueprints/ember-electron/files/tests/ember-electron/.eslintrc.js b/blueprints/ember-electron/files/tests/ember-electron/.eslintrc.js deleted file mode 100644 index 1147d299..00000000 --- a/blueprints/ember-electron/files/tests/ember-electron/.eslintrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - env: { - node: true - } -}; diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index 9b65d09f..c3c3d145 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -1,20 +1,6 @@ -// Workaround for https://github.com/adopted-ember-addons/ember-electron/issues/320, -// caused by https://github.com/ember-cli/ember-cli/issues/7431 -Object.keys(require.cache).forEach((filename) => { - if (filename.indexOf('fs-extra') !== -1) { - delete require.cache[filename]; - } -}); - -const fs = require('fs-extra'); -const path = require('path'); -const { all, denodeify } = require('rsvp'); - const Blueprint = require('ember-cli/lib/models/blueprint'); const { api } = require('@electron-forge/core'); -const { setupForgeEnv } = require('../../lib/utils/yarn-or-npm'); - -const Logger = require('../../lib/utils/logger'); +const chalk = require('chalk'); module.exports = class EmberElectronBlueprint extends Blueprint { constructor(options) { @@ -27,116 +13,13 @@ module.exports = class EmberElectronBlueprint extends Blueprint { return entityName; } - afterInstall(/* options */) { - let logger = new Logger(this); - - return this._checkForgeConfig(logger) - .then(() => this._installElectronTooling(logger)) - .then(() => this._createResourcesDirectories(logger)) - .then(() => this._ensureForgeConfig(logger)); - } - - _checkForgeConfig(logger) { - const readJson = denodeify(fs.readJson); - - let packageJsonPath = path.join(this.project.root, 'package.json'); - - return readJson(packageJsonPath) - .then((packageJson) => { - let hasForgeConfig = false; - let message; - - try { - hasForgeConfig = packageJson.config.forge !== undefined; - } catch(err) { - // no-op - } - - this.hasForgeConfig = hasForgeConfig; - message = `Project ${hasForgeConfig ? 'has' : 'needs'} forge config`; - - logger.message(message); - }); - } - - async _installElectronTooling(logger) { - // n.b. addPackageToProject does not let us save prod deps, so we task - let npmInstall = this.taskFor('npm-install'); - setupForgeEnv(this.project.root); + async afterInstall(/* options */) { + this.ui.writeLine(chalk.green('Creating electron-forge project at `./electron`')); - logger.startProgress('Installing electron build tools'); - - await api.import({ - shouldUpdateScript: () => false, - outDir: 'electron-out', - }); - await npmInstall.run({ - 'save-dev': true, - verbose: false, - packages: ['devtron@^1.4.0'], + await api.init({ + dir: 'electron', + interactive: true, + template: 'ember-electron/forge/template' }); - await npmInstall.run({ - save: true, - verbose: false, - packages: ['electron-protocol-serve@^1.3.0'], - }); - logger.message('Installed electron build tools'); - } - - _createResourcesDirectories(logger) { - const ensureFile = denodeify(fs.ensureFile); - - logger.startProgress('Creating ember-electron resource dirs'); - - let rootDir = this.options.project.root; - let ensureResourceDirGitKeeps = [ - 'resources', - 'resources-darwin', - 'resources-linux', - 'resources-win32', - ] - .map((dirName) => path.join(rootDir, 'ember-electron', dirName)) - .map((dirPath) => ensureFile(path.join(dirPath, '.gitkeep'))); - - return all(ensureResourceDirGitKeeps) - .then(() => logger.message('Created ember-electron resource dirs')); - } - - _ensureForgeConfig(logger) { - const readJson = denodeify(fs.readJson); - const writeFile = denodeify(fs.writeFile); - const writeJson = denodeify(fs.writeJson); - - let packageJsonPath = path.join(this.project.root, 'package.json'); - let forgeConfigPath = './ember-electron/electron-forge-config.js'; - - // If we had a forge config before running forge import, then it may be - // customized by the user, so let's not mess with it. - if (this.hasForgeConfig) { - return; - } - - logger.startProgress('Extracting ember-electron forge config'); - - // Move the forge config generated by the import command out of package.json - // and into its own file, updating package.json to point to the file. - return readJson(packageJsonPath) - .then((packageJson) => { - let forgeConfig = packageJson.config.forge; - - if (typeof packageJson.config.forge === 'string') { - return; - } - - forgeConfig = JSON.stringify(forgeConfig, null, 2); - - packageJson.config.forge = forgeConfigPath; - - return all([ - writeFile(forgeConfigPath, `module.exports = ${forgeConfig};`), - writeJson(packageJsonPath, packageJson, { spaces: 2 }), - ]) - .then(() => logger.message('Extracted ember-electron forge config')); - }); } }; diff --git a/blueprints/ember-electron/files/ember-electron/.eslintrc.js b/forge/files/.eslintrc.js similarity index 100% rename from blueprints/ember-electron/files/ember-electron/.eslintrc.js rename to forge/files/.eslintrc.js diff --git a/blueprints/ember-electron/files/ember-electron/main.js b/forge/files/src/index.js similarity index 97% rename from blueprints/ember-electron/files/ember-electron/main.js rename to forge/files/src/index.js index 487f378b..ed5a42e0 100644 --- a/blueprints/ember-electron/files/ember-electron/main.js +++ b/forge/files/src/index.js @@ -1,4 +1,4 @@ -/* eslint-env node */ +/* eslint-disable no-console */ const { app, BrowserWindow, protocol } = require('electron'); const { dirname, join, resolve } = require('path'); const protocolServe = require('electron-protocol-serve'); @@ -21,7 +21,7 @@ else { protocol.registerStandardSchemes(['serve'], { secure: true }); } protocolServe({ - cwd: join(__dirname || resolve(dirname('')), '..', 'ember'), + cwd: join(__dirname || resolve(dirname('')), '..', 'ember-dist'), app, protocol, }); diff --git a/forge/files/tests/index.js b/forge/files/tests/index.js new file mode 100644 index 00000000..8f806a7f --- /dev/null +++ b/forge/files/tests/index.js @@ -0,0 +1 @@ +require('ember-electron/lib/test-support/test-index'); diff --git a/forge/template.js b/forge/template.js new file mode 100644 index 00000000..0c4fce97 --- /dev/null +++ b/forge/template.js @@ -0,0 +1,33 @@ +const denodeify = require('denodeify'); +const path = require('path'); +const readFile = denodeify(require('fs').readFile); +const writeFile = denodeify(require('fs').writeFile); +const rimraf = denodeify(require('rimraf')); +const ncp = denodeify(require('ncp')); +const { emberBuildDir } = require('../lib/utils/build-paths'); + +module.exports = { + devDependencies: [ + 'devtron' + ], + dependencies: [ + 'electron-protocol-serve' + ], + async initializeTemplate(dir) { + // delete source directory with default files + await rimraf(path.join(dir, 'src')); + + // copy our initial content + await ncp(path.join(__dirname, 'files'), dir); + + // add our ember build directory to .gitignore + let gitIgnorePath = path.join(dir, '.gitignore'); + let contents = await readFile(gitIgnorePath); + await writeFile(gitIgnorePath, [ + contents.toString(), + '# Ember build', + `${emberBuildDir}/`, + '' + ].join('\n')); + } +}; diff --git a/index.js b/index.js index 28ebc7d0..d6a5f841 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,5 @@ -'use strict'; - -const fs = require('fs-extra'); +const fs = require('fs'); const path = require('path'); -const assembleTree = require('./lib/utils/assemble-tree'); function injectScript(scriptName) { let dirname = __dirname || process.cwd(); @@ -32,26 +29,11 @@ module.exports = { 'electron': require('./lib/commands/electron'), 'electron:test': require('./lib/commands/test'), 'electron:build': require('./lib/commands/build'), - 'electron:assemble': require('./lib/commands/assemble'), 'electron:package': require('./lib/commands/package'), 'electron:make': require('./lib/commands/make'), }; }, - postprocessTree(type, tree) { - // Check if we're supposed to be assembling as part of the build - if (type === 'all' && process.env.EMBER_CLI_ELECTRON_ASSEMBLE) { - tree = assembleTree({ - ui: this.ui, - project: this.project, - platform: process.env.EMBER_CLI_ELECTRON_PLATFORM, - inputNode: tree, - }); - } - - return tree; - }, - contentFor(type) { const { env: { EMBER_CLI_ELECTRON } } = process; diff --git a/lib/commands/assemble.js b/lib/commands/assemble.js deleted file mode 100644 index b9f3d0db..00000000 --- a/lib/commands/assemble.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const { join } = require('path'); -const Command = require('ember-cli/lib/models/command'); -const AssembleTask = require('../tasks/assemble'); - -const defaultOut = join('electron-out', 'project'); - -module.exports = Command.extend({ - name: 'electron:assemble', - description: `Assembles your app and places it into the output path (${defaultOut} by default).`, - - availableOptions: [ - { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, - { name: 'platform', type: String, default: process.platform, aliases: ['p'] }, - { name: 'build-path', type: 'Path', aliases: ['i'], description: 'Reuse the build previously built via "ember electron:build" at this path rather than rebuilding.' }, - { name: 'output-path', type: 'Path', default: defaultOut, aliases: ['o'] }, - ], - - run(options) { - let { ui, analytics, project } = this; - let assembleTask = new AssembleTask({ ui, analytics, project }); - - return assembleTask.run(options); - }, -}); diff --git a/lib/commands/base.js b/lib/commands/base.js new file mode 100644 index 00000000..e5058ab8 --- /dev/null +++ b/lib/commands/base.js @@ -0,0 +1,53 @@ +'use strict'; + +const Command = require('ember-cli/lib/models/command'); +const ElectronTask = require('../tasks/electron'); +const ElectronMakeTask = require('../tasks/make'); +const ElectronPackageTask = require('../tasks/package'); +const ElectronTestServerTask = require('../tasks/test-server'); +const ElectronTestTask = require('../tasks/test'); +const YarnOrNpmTask = require('../tasks/yarn-or-npm'); +const Win = require('ember-cli/lib/utilities/windows-admin'); +const fs = require('fs'); +const { electronProjectPath } = require('../utils/build-paths'); +const SilentError = require('silent-error'); + +const upgradeDocumentationUrl = 'https://adopted-ember-addons.github.io/ember-electron/docs/guides/upgrade'; + +module.exports = Command.extend({ + init() { + this._super(...arguments); + Object.assign(this.tasks, { + 'Electron': ElectronTask, + 'ElectronMake': ElectronMakeTask, + 'ElectronPackage': ElectronPackageTask, + 'ElectronTestServer': ElectronTestServerTask, + 'ElectronTest': ElectronTestTask, + 'YarnOrNpm': YarnOrNpmTask + }); + }, + + async prepareRun() { + if (!fs.existsSync(electronProjectPath)) { + return Promise.reject( + new SilentError([ + `No './${electronProjectPath}' folder found. This folder must exist and`, + `contain an electron-forge project. It should have been generated by`, + `ember-electron's blueprint when you first ran 'ember install`, + `ember-electron'. If you are upgrading from ember-electron v2, you`, + `should read the upgrade documentation at ${upgradeDocumentationUrl}.`, + ].join(' ')) + ); + } + + // Set up the yarn/npm environment variable so forge uses the right package + // manager + await this.runTask('YarnOrNpm'); + + // Tell our addon that we're building for electron, so it should inject + // shims, etc. + process.env.EMBER_CLI_ELECTRON = true; + + await Win.checkIfSymlinksNeedToBeEnabled(this.ui); + } +}); diff --git a/lib/commands/build.js b/lib/commands/build.js index 1939af49..d625aa62 100644 --- a/lib/commands/build.js +++ b/lib/commands/build.js @@ -1,23 +1,31 @@ 'use strict'; -const { join } = require('path'); const BuildCommand = require('ember-cli/lib/commands/build'); -const BuildTask = require('../tasks/build'); - -const defaultOut = join('electron-out', 'ember'); +const { emberBuildPath } = require('../utils/build-paths'); module.exports = BuildCommand.extend({ name: 'electron:build', - description: `Builds your ember app for Electron and places it into the output path (${defaultOut} by default).`, + description: `Builds your ember app for Electron and installs it in the Electron app.`, availableOptions: [ - { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, - { name: 'output-path', type: 'Path', default: defaultOut, aliases: ['o'] }, + { + name: 'environment', + type: String, + default: 'development', + aliases: ['e', { dev: 'development' }, { prod: 'production' }], + description: 'Possible values are "development", "production", and "test".', + }, + { name: 'output-path', type: 'Path', default: emberBuildPath, aliases: ['o'] }, + { name: 'watch', type: Boolean, default: false, aliases: ['w'] }, + { name: 'watcher', type: String }, { name: 'suppress-sizes', type: Boolean, default: false }, ], - init() { - this._super(...arguments); - this.tasks.Build = BuildTask; - }, + run() { + // Tell our addon that we're building for electron, so it should inject + // shims, etc. + process.env.EMBER_CLI_ELECTRON = true; + + return this._super(...arguments); + } }); diff --git a/lib/commands/electron.js b/lib/commands/electron.js index 44fb54a3..ab1e3493 100644 --- a/lib/commands/electron.js +++ b/lib/commands/electron.js @@ -1,124 +1,30 @@ 'use strict'; -const RSVP = require('rsvp'); -const path = require('path'); +const BaseCommand = require('./base'); -const Command = require('ember-cli/lib/models/command'); -const Builder = require('../models/builder'); -const Watcher = require('ember-cli/lib/models/watcher'); -const Logger = require('../utils/logger'); -const { api } = require('@electron-forge/core'); - -const { Promise } = RSVP; - -module.exports = Command.extend({ +module.exports = BaseCommand.extend({ name: 'electron', description: 'Builds your app and launches Electron. You can pass extra flags (e.g. --inspect-brk) to Electron by putting them after `---`', - availableOptions: [{ - name: 'watcher', - type: String, - default: 'events', - aliases: ['w'], - }, - { - name: 'environment', - type: String, - default: 'development', - aliases: [ - 'e', - { dev: 'development' }, - { prod: 'production' }, - ], - }, { - name: 'output-path', - type: String, - default: path.join('electron-out', 'project'), - aliases: ['o'], - }, { - name: 'verbose', - type: Boolean, - default: false, - aliases: ['v'], - }], - - run(options) { - let logger = new Logger(this); - - return this._buildAndWatch(options, logger) - .then(() => this._startElectron(options, logger)); - }, - - _buildAndWatch({ environment, outputPath, watcher }) { - const { ui, project, analytics } = this; - const builder = new Builder({ - ui, - project, - environment, - outputPath, - assemble: true, - symlinkNodeModules: true, - }); - const buildWatcher = new Watcher({ - ui, - builder, - analytics, - options: { watcher }, - }); - - return buildWatcher; - }, + availableOptions: [ + { name: 'watcher', type: String, default: 'events', aliases: ['w'] }, + { + name: 'environment', + type: String, + default: 'development', + aliases: ['e', { dev: 'development' }, { prod: 'production' }], + description: 'Possible values are "development", "production", and "test".', + } + ], - async _startElectron({ outputPath, verbose }, logger = new Logger(this)) { - const argv = this._getArgv(); + async run(commandOptions) { + await this.prepareRun(); - let electronArgs = []; - let separatorIndex = argv.indexOf('---'); + let separatorIndex = process.argv.indexOf('---'); if (separatorIndex !== -1) { - electronArgs = argv.slice(separatorIndex + 1); - logger.message(`Starting Electron with args '${electronArgs.join(' ')}'...`); - } else { - logger.message('Starting Electron...'); + commandOptions.electronArgs = process.argv.slice(separatorIndex + 1); } - outputPath = path.resolve(outputPath); - - let handle = await api.start({ appPath: outputPath, dir: outputPath, args: electronArgs }); - - handle.on('close', (code, signal) => { - if (verbose) { - logger.section([ - 'Electron closed', - ` - with code: ${code}`, - ` - with signal: ${signal}`, - ]); - } - }); - - handle.on('disconnect', () => { - if (verbose) { - logger.message('Electron disconnected.'); - } - }); - - handle.on('error', (err) => { - logger.error(err); - }); - - handle.on('message', (message) => { - logger.message(message); - }); - - await new Promise((resolve) => { - handle.on('exit', () => { - logger.message('Electron exited.'); - resolve(); - }); - }); - }, - - // For test instrumentation - _getArgv() { - return process.argv; - }, + return await this.runTask('Electron', commandOptions); + } }); diff --git a/lib/commands/make.js b/lib/commands/make.js index a5951d2c..b15282dd 100644 --- a/lib/commands/make.js +++ b/lib/commands/make.js @@ -1,27 +1,34 @@ 'use strict'; -const Command = require('ember-cli/lib/models/command'); -const MakeTask = require('../tasks/make'); +const BaseCommand = require('./base'); +const { emberBuildPath } = require('../utils/build-paths'); -module.exports = Command.extend({ +module.exports = BaseCommand.extend({ name: 'electron:make', description: 'Packages your Ember + Electron app into shippable installers', availableOptions: [ { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, - { name: 'platform', type: String, default: process.platform, aliases: ['p'] }, + { name: 'platform', type: String, aliases: ['p'] }, { name: 'arch', type: String, aliases: ['a'] }, { name: 'targets', type: String, aliases: ['t'], description: 'Override the build targets specified in your electron-forge config.' }, - { name: 'build-path', type: 'Path', aliases: ['b'], description: 'Reuse the build previously built via "ember electron:build" at this path rather than rebuilding.' }, - { name: 'assemble-path', type: 'Path', aliases: ['i'], description: 'Reuse the build previously assembled via "ember electron:assemble" at this path rather than rebuilding/assembling.' }, - { name: 'skip-package', type: Boolean, aliases: ['s'], description: 'Skip the packaging step and use an already-packaged build from the output path.' }, + { name: 'skip-package', type: Boolean, default: false, aliases: ['sp'], description: 'Skip the packaging step and use an already-packaged build from the output path.' }, + { name: 'skip-build', type: Boolean, aliases: ['sb'], description: 'If not skipping packing step, skip the Ember build step and use an already-build from the output path.' }, { name: 'output-path', type: 'Path', default: 'electron-out', aliases: ['o'] }, ], - run(options) { - let { ui, analytics, project } = this; - let makeTask = new MakeTask({ ui, analytics, project }); + async run(commandOptions) { + await this.prepareRun(); - return makeTask.run(options); + let { environment, skipPackage, skipBuild } = commandOptions; + if (!skipPackage && !skipBuild) { + await this.runTask('Build', { environment, outputPath: emberBuildPath }); + } + + if (commandOptions.targets) { + commandOptions.targets = commandOptions.targets.split(','); + } + + return this.runTask('ElectronMake', commandOptions); }, }); diff --git a/lib/commands/package.js b/lib/commands/package.js index 70757c94..a03436c3 100644 --- a/lib/commands/package.js +++ b/lib/commands/package.js @@ -1,25 +1,28 @@ 'use strict'; -const Command = require('ember-cli/lib/models/command'); -const PackageTask = require('../tasks/package'); +const BaseCommand = require('./base'); +const { emberBuildPath } = require('../utils/build-paths'); -module.exports = Command.extend({ +module.exports = BaseCommand.extend({ name: 'electron:package', description: 'Builds & packages your Electron app', availableOptions: [ - { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, - { name: 'platform', type: String, default: process.platform, aliases: ['p'] }, - { name: 'arch', type: String, aliases: ['a'] }, - { name: 'build-path', type: 'Path', aliases: ['b'], description: 'Reuse the build previously built via "ember electron:build" at this path rather than rebuilding.' }, - { name: 'project-path', type: 'Path', aliases: ['i'], description: 'Reuse the project previously assembled via "ember electron:assemble" at this path rather than rebuilding/assembling.' }, - { name: 'output-path', type: 'Path', default: 'electron-out', aliases: ['o'] }, + { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, + { name: 'platform', type: String, aliases: ['p'] }, + { name: 'arch', type: String, aliases: ['a'] }, + { name: 'skip-build', type: Boolean, aliases: ['s'], description: 'Skip the Ember build step and use an already-build from the output path.' }, + { name: 'output-path', type: 'Path', default: 'electron-out', aliases: ['o'] }, ], - run(options) { - let { ui, analytics, project } = this; - let packageTask = new PackageTask({ ui, analytics, project }); + async run(commandOptions) { + await this.prepareRun(); - return packageTask.run(options); - }, + let { environment, skipBuild } = commandOptions; + if (!skipBuild) { + await this.runTask('Build', { environment, outputPath: emberBuildPath }); + } + + return this.runTask('ElectronPackage', commandOptions); + } }); diff --git a/lib/commands/test.js b/lib/commands/test.js index fe11de5f..b7ebd82a 100644 --- a/lib/commands/test.js +++ b/lib/commands/test.js @@ -1,8 +1,6 @@ 'use strict'; let TestCommand = require('ember-cli/lib/commands/test'); -let Builder = require('../models/builder'); -let BuildForTestTask = require('../tasks/build-for-test'); let TestTask = require('../tasks/test'); let TestServerTask = require('../tasks/test-server'); @@ -12,11 +10,7 @@ module.exports = TestCommand.extend({ init() { this._super(...arguments); - // Used if we are running in server mode - this.Builder = Builder; this.tasks.TestServer = TestServerTask; - // Used if we're not running in server mode - this.tasks.Build = BuildForTestTask; this.tasks.Test = TestTask; }, @@ -32,15 +26,8 @@ module.exports = TestCommand.extend({ return this._super(...arguments); }, - run(options) { - // If we are running in server mode, the command will use the builder and - // we need to set the assemble and symlinkNodeModules options here, which - // will get passed to the builder instance. If we're not running in server - // mode, we can't pass any options through to the build task, which is why - // we set it to the BuildForTestTask in init(), which forces these flags on. - options.assemble = true; - options.symlinkNodeModules = true; - + run() { + process.env.EMBER_CLI_ELECTRON = true; return this._super(...arguments); }, }); diff --git a/lib/models/assembler.js b/lib/models/assembler.js deleted file mode 100644 index 7b7a7277..00000000 --- a/lib/models/assembler.js +++ /dev/null @@ -1,262 +0,0 @@ -'use strict'; -const exit = require('capture-exit'); -exit.captureExit(); - -const fs = require('fs-extra'); -const path = require('path'); -const Promise = require('rsvp').Promise; -const CoreObject = require('core-object'); -const SilentError = require('silent-error'); -const chalk = require('chalk'); - -const rimraf = require('rimraf').sync; -const Sync = require('tree-sync'); - -/** - * Wrapper for the Broccoli [Builder](https://github.com/broccolijs/broccoli/blob/master/lib/builder.js) class. - * Used to assemble an ember-electron app after the Ember build is complete. - * - * This file is copied from ember-cli/lib/models/builder.js, and adapted to meet - * our needs. This mainly meant modifying/simplifying how we build the tree - * that we pass to the broccoli builder, removing some build instrumentation - * and updating some UI strings. - * - * @private - * @module ember-electron - * @class Assembler - * @constructor - * @extends Task - */ -class Assembler extends CoreObject { - - constructor(options) { - super(options); - - this.setupBroccoliBuilder(); - this.trapSignals(); - this._instantiationStack = (new Error()).stack.replace(/[^\n]*\n/, ''); - } - - /** - * @private - * @method setupBroccoliBuilder - */ - setupBroccoliBuilder() { - this.platform = this.platform || process.platform; - - const broccoli = require('broccoli-builder'); - - this.tree = this.makeTree(); - - this.builder = new broccoli.Builder(this.tree); - } - - makeTree() { - const assembleTree = require('../utils/assemble-tree'); - - return assembleTree({ - ui: this.ui, - project: this.project, - platform: this.platform, - inputNode: this.emberBuildPath, - }); - } - - /** - * @private - * @method trapSignals - */ - trapSignals() { - this._boundOnSIGINT = this.onSIGINT.bind(this); - this._boundOnSIGTERM = this.onSIGTERM.bind(this); - this._boundOnMessage = this.onMessage.bind(this); - this._boundCleanup = this.cleanup.bind(this); - - process.on('SIGINT', this._boundOnSIGINT); - process.on('SIGTERM', this._boundOnSIGTERM); - process.on('message', this._boundOnMessage); - exit.onExit(this._boundCleanup); - - if (/^win/.test(process.platform)) { - this.trapWindowsSignals(); - } - } - - _cleanupSignals() { - process.removeListener('SIGINT', this._boundOnSIGINT); - process.removeListener('SIGTERM', this._boundOnSIGTERM); - process.removeListener('message', this._boundOnMessage); - exit.offExit(this._boundCleanup); - - if (/^win/.test(process.platform)) { - this._cleanupWindowsSignals(); - } - } - - /** - * @private - * @method trapWindowsSignals - */ - trapWindowsSignals() { - // This is required to capture Ctrl + C on Windows - if (process.stdin && process.stdin.isTTY) { - process.stdin.setRawMode(true); - this._windowsCtrlCTrap = function(data) { - if (data.length === 1 && data[0] === 0x03) { - process.emit('SIGINT'); - } - }; - process.stdin.on('data', this._windowsCtrlCTrap); - } - } - - _cleanupWindowsSignals() { - if (this._windowsCtrlCTrap && process.stdin.removeListener) { - process.stdin.removeListener('data', this._windowsCtrlCTrap); - } - } - - /** - Determine whether the output path is safe to delete. If the outputPath - appears anywhere in the parents of the project root, the build would - delete the project directory. In this case return `false`, otherwise - return `true`. - - @private - @method canDeleteOutputPath - @param {String} outputPath - @return {Boolean} - */ - canDeleteOutputPath(outputPath) { - let rootPathParents = [this.project.root]; - let dir = path.dirname(this.project.root); - rootPathParents.push(dir); - while (dir !== path.dirname(dir)) { - dir = path.dirname(dir); - rootPathParents.push(dir); - } - return rootPathParents.indexOf(outputPath) === -1; - } - - /** - * @private - * @method copyToOutputPath - * @param {String} inputPath - */ - copyToOutputPath(inputPath) { - let outputPath = this.outputPath; - - fs.mkdirsSync(outputPath); - - if (!this.canDeleteOutputPath(outputPath)) { - throw new SilentError(`Using an assembly destination path of \`${outputPath}\` is not supported.`); - } - - let sync = this._sync; - if (sync === undefined) { - this._sync = sync = new Sync(inputPath, path.resolve(this.outputPath)); - } - - // Make sure there's isn't a symlinked node_modules from an ember electron - // command, or sync'ing will traverse into it and delete folders out of our - // project's node_modules. - const modules = path.join(outputPath, 'node_modules'); - if (outputPath && fs.existsSync(modules)) { - // Will unlink if it's a symlink or recursively delete if not - rimraf(modules); - } - - let changes = sync.sync(); - - return changes.map(op => op[1]); - } - - /** - * @private - * @method processBuildResult - * @param results - * @return {Promise} - */ - processBuildResult(results) { - let self = this; - - return Promise.resolve() - .then(() => self.copyToOutputPath(results.directory)) - .then(syncResult => { - results.outputChanges = syncResult; - return results; - }); - } - - /** - * @private - * @method assemble - * @return {Promise} - */ - assemble(willReadStringDir) { - return this.builder.build(willReadStringDir) - .then(this.processBuildResult.bind(this)); - } - - /** - * Delegates to the `cleanup` method of the wrapped Broccoli builder. - * - * @private - * @method cleanup - * @return {Promise} - */ - cleanup() { - let ui = this.project.ui; - ui.startProgress('cleaning up'); - ui.writeLine('cleaning up...'); - - this._cleanupSignals(); - - return this.builder.cleanup().finally(() => { - ui.stopProgress(); - }).catch(err => { - ui.writeLine(chalk.red('Cleanup error.')); - ui.writeError(err); - }); - } - - /** - * Handles the `SIGINT` signal. - * - * Calls {{#crossLink "Builder/cleanupAndExit:method"}}{{/crossLink}} by default. - * - * @private - * @method onSIGINT - */ - onSIGINT() { - process.exit(1); - } - - /** - * Handles the `SIGTERM` signal. - * - * Calls {{#crossLink "Builder/cleanupAndExit:method"}}{{/crossLink}} by default. - * - * @private - * @method onSIGTERM - */ - onSIGTERM() { - process.exit(1); - } - - /** - * Handles the `message` event on the `process`. - * - * Calls `process.exit` if the `kill` property on the `message` is set. - * - * @private - * @method onMessage - */ - onMessage(message) { - if (message.kill) { - process.exit(1); - } - } -} - -module.exports = Assembler; diff --git a/lib/models/builder.js b/lib/models/builder.js deleted file mode 100644 index 0acb8865..00000000 --- a/lib/models/builder.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; - -const BaseBuilder = require('ember-cli/lib/models/builder'); -const fs = require('fs-extra'); -const path = require('path'); -const symlinkOrCopySync = require('symlink-or-copy').sync; -const rimraf = require('rimraf').sync; - -// -// A builder that subclasses ember cli's builder model, and adds the ability to -// optionally assemble as a part of the build. This allows us to simply build -// the platform-agnostic Ember app, or build and assemble the platform-specific -// assembled package (platform-specific because of the resources- -// directory collapsing), using a single broccoli tree in either case. -// -// This builder can also optionally create a symlink from the output path to our -// project's node_modules, e.g., for `ember electron` or -// `ember electron:test -s`. -// -class Builder extends BaseBuilder { - constructor(options) { - // platform is only used when assembling - let { assemble, platform } = options; - // Tell our addon that we're building for electron, so it should inject - // shims, etc. - process.env.EMBER_CLI_ELECTRON = true; - if (assemble) { - // We want to assemble as part of the broccoli build, so set these - // environment variables to tell our addon's postProcessTree() hook to - // include the assembly instructions. - process.env.EMBER_CLI_ELECTRON_ASSEMBLE = true; - process.env.EMBER_CLI_ELECTRON_PLATFORM = platform || process.platform; - } - - super(...arguments); - } - - copyToOutputPath() { - // This will invoke tree-sync, which we can't let find our node_modules - // symlink or it will traverse into it and run amok, deleting folders out - // of our project's node_modules. - this._unsymlinkModules(); - let ret; - try { - ret = super.copyToOutputPath(...arguments); - } finally { - this._symlinkModules(); - } - - return ret; - } - - _unsymlinkModules() { - const { outputPath } = this; - const modules = path.join(outputPath, 'node_modules'); - - if (fs.existsSync(modules)) { - // Will unlink if it's a symlink or recursively delete if not - rimraf(modules); - } - } - - _symlinkModules() { - if (!this.symlinkNodeModules) { - return; - } - - const { outputPath } = this; - const source = path.join(this.project.root, 'node_modules'); - const target = path.join(outputPath, 'node_modules'); - - fs.mkdirsSync(outputPath); - symlinkOrCopySync(source, target); - } -} - -module.exports = Builder; diff --git a/lib/resources/shim-footer.js b/lib/resources/shim-footer.js index fb6e317d..8acb0e8d 100644 --- a/lib/resources/shim-footer.js +++ b/lib/resources/shim-footer.js @@ -12,7 +12,7 @@ return requireNode(...args); } - console.error(error); + console.error(error); // eslint-disable-line no-console } }; } else { diff --git a/lib/tasks/assemble.js b/lib/tasks/assemble.js deleted file mode 100644 index c894df04..00000000 --- a/lib/tasks/assemble.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict'; - -const chalk = require('chalk'); -const execa = require('execa'); -const Task = require('ember-cli/lib/models/task'); -const BuildTask = require('./build'); -const Assembler = require('../models/assembler'); -const { shouldUseYarn } = require('../utils/yarn-or-npm'); - -// -// A task for assembling an electron forge-compatible project by combining the -// ember app with the contents of the ember-electron/ directory plus a copy of -// package.json, and installing production dependencies. The output should be -// runnable via `forge start -p `. -// -// A path to an already-built electron app can optionally be specified via -// `buildPath`, in which case it will be used instead of rebuilding the Ember -// app in a temp directory. -// -class AssembleTask extends Task { - run(options) { - let { ui, analytics, project } = this; - let { buildPath, outputPath } = options; - - let assemblePromise; - if (buildPath) { - // We have a build path, so we're just assembling via an AssembleTask - assemblePromise = this.assemble(options); - } else { - // We are building and assembling, so do both in the same broccoli tree - // via a BuildTask with the assemble options set. - let buildTask = new BuildTask({ ui, analytics, project }); - options.assemble = true; - assemblePromise = buildTask.run(options); - } - - return assemblePromise.then(() => this.installDependencies(ui, outputPath)); - } - - assemble({ buildPath, outputPath, platform }) { - let { ui, project } = this; - ui.startProgress(chalk.green('Assembling Electron project'), chalk.green('.')); - - let assembler = new Assembler({ - ui, - platform, - emberBuildPath: buildPath, - outputPath, - project, - }); - - return assembler.assemble() - .finally(() => { - ui.stopProgress(); - - return assembler.cleanup(); - }) - .then(() => ui.writeLine(chalk.green(`Assembled Electron project successfully. Stored in "${outputPath}".`))) - .catch((err) => { - ui.writeLine(chalk.red('Assembly failed.')); - - throw err; - }); - } - - pruneCommand() { - if (shouldUseYarn(this.project.root)) { - return 'yarn'; - } else { - return 'npm install'; - } - } - - installDependencies(ui, path) { - ui.startProgress('installing production dependencies'); - - let [command, ...args] = this.pruneCommand().split(' '); - - return execa( - command, - args, - { cwd: path } - ).catch().then(() => { - ui.stopProgress(); - }); - } -} - -module.exports = AssembleTask; diff --git a/lib/tasks/build-for-test.js b/lib/tasks/build-for-test.js deleted file mode 100644 index f0e60713..00000000 --- a/lib/tasks/build-for-test.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -const BuildTask = require('./build'); - -// -// A task that builds for running tests -- a Build task that assembles and -// then symlinks node_modules. -// -class BuildForTestTask extends BuildTask { - run(options) { - options.assemble = true; - options.symlinkNodeModules = true; - - return super.run(...arguments); - } -} - -module.exports = BuildForTestTask; diff --git a/lib/tasks/build.js b/lib/tasks/build.js deleted file mode 100644 index 4bb74381..00000000 --- a/lib/tasks/build.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const chalk = require('chalk'); -const Task = require('ember-cli/lib/models/task'); -const Builder = require('../models/builder'); - -// -// A task that builds out the Ember app shimmed to run in electron, -// optionally assembles the app into an electron forge-compatible project, and -// optionally symlinks node_modules to the project's node_modules. -// -class BuildTask extends Task { - // platform is only used when assembling - run({ outputPath, environment, assemble, symlinkNodeModules, platform }) { - let { ui, project } = this; - - let progressMessage; - let successMessage; - if (assemble) { - progressMessage = 'Building and assembling'; - successMessage = 'Built and assembled'; - } else { - progressMessage = 'Building'; - successMessage = 'Built'; - } - - ui.startProgress(chalk.green(progressMessage), chalk.green('.')); - - let builder = new Builder({ - ui, - outputPath, - environment, - assemble, - symlinkNodeModules, - platform, - project, - }); - - return builder.build() - .finally(() => { - ui.stopProgress(); - - return builder.cleanup(); - }) - .then(() => ui.writeLine(chalk.green(`${successMessage} Electron project successfully. Stored in "${outputPath}".`))) - .catch((err) => { - ui.writeLine(chalk.red('Build failed.')); - - throw err; - }); - } -} - -module.exports = BuildTask; diff --git a/lib/tasks/electron.js b/lib/tasks/electron.js new file mode 100644 index 00000000..a8f21d4b --- /dev/null +++ b/lib/tasks/electron.js @@ -0,0 +1,74 @@ +'use strict'; + +const chalk = require('chalk'); +const Task = require('ember-cli/lib/models/task'); +const Watcher = require('ember-cli/lib/models/watcher'); +const Builder = require('ember-cli/lib/models/builder'); +const path = require('path'); +const { electronProjectPath, emberBuildPath } = require('../utils/build-paths'); +const debug = require('debug')('ember-electron:electron-task'); +const { api } = require('@electron-forge/core'); + +class ElectronTask extends Task { + async run(options) { + let { ui } = this; + + ui.startProgress(chalk.green('Building'), chalk.green('.')); + + let builder = new Builder({ + ui, + outputPath: emberBuildPath, + environment: options.environment, + project: this.project, + }); + + ui.writeLine(`Environment: ${options.environment}`); + + let watcher = new Watcher({ + ui, + builder, + analytics: this.analytics, + options, + }); + + await watcher; + await this._runElectron(builder, options); + } + + async _runElectron(builder, { electronArgs = [] }) { + if (electronArgs.length > 0) { + this.ui.writeLine(chalk(`Starting Electron with args '${electronArgs.join(' ')}'...`)); + } else { + this.ui.writeLine(chalk('Starting Electron...')); + } + + let proc = await api.start({ dir: path.resolve(electronProjectPath), args: electronArgs }); + + proc.on('close', (code, signal) => { + debug(`Electron closed with code: ${code} with signal: ${signal}`); + }); + + proc.on('disconnect', () => { + debug('Electron disconnected.'); + }); + + proc.on('error', (err) => { + debug(`Error: ${err.stack || err}`); + }); + + proc.on('message', (message) => { + debug(message); + }); + + await new Promise((resolve) => { + proc.on('exit', () => { + debug('Electron exited.'); + resolve(); + }); + }); + + await builder.cleanup(); + } +} + +module.exports = ElectronTask; diff --git a/lib/tasks/make.js b/lib/tasks/make.js index ebfa66d9..0a790092 100644 --- a/lib/tasks/make.js +++ b/lib/tasks/make.js @@ -2,41 +2,25 @@ const chalk = require('chalk'); const Task = require('ember-cli/lib/models/task'); -const PackageTask = require('./package'); +const { electronProjectPath } = require('../utils/build-paths'); const { api } = require('@electron-forge/core'); // // A task that runs electron-forge make to make installers. The skipPackage -// option can be specified to skip building/assembling/packaging and use the -// previously-packaged app matching the platform/arch. If it's not specified, -// projectPath/buildPath can optionally be specified, which will be passed -// upstream to use an already-assembled project or already-built Ember app -// rather than re-assembling/rebuilding. +// option can be specified to skip building/packaging and use the +// previously-packaged app matching the platform/arch. // class MakeTask extends Task { async run(options) { - let { ui, analytics, project } = this; + let { ui } = this; let { skipPackage, outputPath, platform, arch, targets } = options; - // If skipPackage is set, we assume the packaged app is present and let - // forge do the rest - if (!skipPackage) { - let packageTask = new PackageTask({ ui, analytics, project }); - await packageTask.run(options); - } - ui.writeLine(chalk.green('Making Electron project.')); - let overrideTargets; - if (typeof targets === 'string') { - overrideTargets = targets.split(','); - } - let makeOptions = { - dir: project.root, + dir: electronProjectPath, outDir: outputPath, - skipPackage: true, - overrideTargets, + skipPackage }; if (platform) { makeOptions.platform = platform; @@ -44,6 +28,9 @@ class MakeTask extends Task { if (arch) { makeOptions.arch = arch; } + if (targets) { + makeOptions.overrideTargets = targets; + } return await api.make(makeOptions); } diff --git a/lib/tasks/package.js b/lib/tasks/package.js index f453cc8a..16c2d178 100644 --- a/lib/tasks/package.js +++ b/lib/tasks/package.js @@ -1,61 +1,32 @@ 'use strict'; const chalk = require('chalk'); -const childProcess = require('child_process'); -const quickTemp = require('quick-temp'); const Task = require('ember-cli/lib/models/task'); -const AssembleTask = require('./assemble'); -const { setupForgeEnv } = require('../utils/yarn-or-npm'); +const { electronProjectPath } = require('../utils/build-paths'); const { api } = require('@electron-forge/core'); // -// A task that runs electron-forge pacakge to package the app. The -// projectPath/buildPath options can optionally be specified, which will be -// passed upstream to use an already-assembled project or already-built Ember -// app rather than re-assembling/rebuilding. +// A task that runs electron-forge package to package the app. // class PackageTask extends Task { async run(options) { - let { ui, analytics, project } = this; - let { projectPath, outputPath, platform, arch } = options; + let { ui } = this; + let { outputPath, platform, arch } = options; - let cleanupFn; - try { - // If projectPath is set then we already have an assembled project - if (!projectPath) { - // Assemble the project and pass to forge - projectPath = quickTemp.makeOrRemake(this, '-tmpPath'); - cleanupFn = () => quickTemp.remove(this, '-tmpPath'); + ui.writeLine(chalk.green('Packaging Electron project.')); - if (process.platform !== 'win32') { - childProcess.execSync(`chmod a+x ${projectPath}`); - } - - options.outputPath = projectPath; - let assembleTask = new AssembleTask({ ui, analytics, project }); - await assembleTask.run(options); - } - - setupForgeEnv(this.project.root); - ui.writeLine(chalk.green('Packaging Electron project.')); - - let packageOptions = { - dir: projectPath, - outDir: outputPath, - }; - if (platform) { - packageOptions.platform = platform; - } - if (arch) { - packageOptions.arch = arch; - } - - return await api.package(packageOptions); - } finally { - if (cleanupFn) { - cleanupFn(); - } + let packageOptions = { + dir: electronProjectPath, + outDir: outputPath, + }; + if (platform) { + packageOptions.platform = platform; + } + if (arch) { + packageOptions.arch = arch; } + + return await api.package(packageOptions); } } diff --git a/lib/tasks/yarn-or-npm.js b/lib/tasks/yarn-or-npm.js new file mode 100644 index 00000000..e04f35d1 --- /dev/null +++ b/lib/tasks/yarn-or-npm.js @@ -0,0 +1,18 @@ +'use strict'; + +const NpmTask = require('ember-cli/lib/tasks/npm-task'); + +// +// A task that determines whether ember-cli is using yarn or npm in this +// project, and sets an environment variable telling electron-forge to use the +// same so we don't have to worry about whether its detection logic is in sync +// with ember-cli's +// +class YarnOrNpmTask extends NpmTask { + async run() { + await this.findPackageManager(); + process.env.NODE_INSTALLER = this.useYarn ? 'yarn' : 'npm'; + } +} + +module.exports = YarnOrNpmTask; diff --git a/lib/test-support/test-main.js b/lib/test-support/test-index.js similarity index 99% rename from lib/test-support/test-main.js rename to lib/test-support/test-index.js index e8d77ccd..a3e50fa4 100644 --- a/lib/test-support/test-main.js +++ b/lib/test-support/test-index.js @@ -1,4 +1,3 @@ -/* eslint-env node */ const { app, BrowserWindow, protocol, session } = require('electron'); const { dirname, resolve, relative } = require('path'); const url = require('url'); diff --git a/lib/utils/assemble-tree.js b/lib/utils/assemble-tree.js deleted file mode 100644 index 85f369dd..00000000 --- a/lib/utils/assemble-tree.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict'; -const { existsSync } = require('fs'); -const Logger = require('./logger'); -const { UnwatchedDir } = require('broccoli-source'); -const replace = require('broccoli-string-replace'); - -function hasEmberWelcomePage(pkg) { - return pkg && pkg.devDependencies && pkg.devDependencies['ember-welcome-page']; -} - -// -// This is a helper to build a broccoli tree that will assemble an electron -// forge-compatible project from an Ember app. The Ember app is passed in via -// inputNode, which can either be the path to a directory containing the built -// Ember app, or a brocolli tree whose output is a built Ember app. -// -module.exports = function assembleTree({ ui, project, platform, inputNode }) { - // Copy our files to assemble our electron and ember apps. Our directory - // structure inside our build output dir (dist/ or temp directory) is - // going to end up looking like this: - // - // ├── package.json - // ├── ember - // │ ├── - // ├── ember-electron - // ├── .electron-forge - // ├── main.js - // ├── resources - // ├── > - // ├── > - // - const { clone } = require('lodash/lang'); - const Funnel = require('broccoli-funnel'); - const writeFile = require('broccoli-file-creator'); - const mergeTrees = require('broccoli-merge-trees'); - - let packageJson = clone(project.pkg); - - if (hasEmberWelcomePage(packageJson)) { - let logger = new Logger({ ui }); - - logger.message(` -"ember-welcome-page" was detected in your devDependencies! -Please note that this addon only works in development environment -and will not render in production mode. It is safe to uninstall -this addon once you removed the {{welcome-page}} template tag. -`); - } - - packageJson.main = 'ember-electron/main.js'; - if (!existsSync(packageJson.main)) { - throw new Error(`Your electron app's main module (${packageJson.main}) doesn't exist. Please re-run the ember-electron blueprint ('ember g ember-electron')`); - } - - let { - config: { - forge: forgeConfig, - } = {}, - } = packageJson; - - if (!forgeConfig) { - throw new Error("Your package.json doesn't contain 'config.forge'. Please re-run the ember-electron blueprint ('ember g ember-electron')."); - } - - // In tests/index.html we need to rewrite the testem.js script tag. The URL - // to testem.js is a relative URL, which means it will resolve to a serve:// - // URL. But we need to re-route the request to the testem http server, so we - // need to rewrite it to be an http: URL so our test-main.js can use Electron - // magic to redirect the request to the dynamically-generated testem server - // URL. - inputNode = replace(inputNode, { - files: ['tests/index.html'], - pattern: { - match: /src="[^"]*testem\.js"/, - replacement: 'src="http://testemserver/testem.js"', - }, - }); - - let trees = [ - writeFile('package.json', JSON.stringify(packageJson, null, ' ')), - - new Funnel(new UnwatchedDir('.'), { - include: [ - 'npm-shrinkwrap.json', - 'yarn.lock', - ], - }), - - new Funnel('ember-electron', { - destDir: 'ember-electron', - exclude: [ - 'resources*/**', - 'resources*/**/.*', - 'test-main.js', - ], - }), - - new Funnel('ember-electron', { - srcDir: 'resources', - destDir: 'ember-electron/resources', - allowEmpty: true, - }), - - new Funnel('ember-electron', { - srcDir: `resources-${platform}`, - destDir: 'ember-electron/resources', - allowEmpty: true, - }), - - new Funnel(inputNode, { - destDir: 'ember', - }), - ]; - - if (process.env.EMBER_ENV === 'test') { - // Overwrite main.js with test main.js - trees.push(new Funnel(new UnwatchedDir('.'), { - destDir: 'ember-electron', - include: [ - 'tests/ember-electron/main.js', - 'ember-electron/test-main.js', - ], - getDestinationPath() { - return 'main.js'; - }, - })); - } - - return mergeTrees(trees, { - overwrite: true, - }); -}; diff --git a/lib/utils/build-paths.js b/lib/utils/build-paths.js new file mode 100644 index 00000000..7c40a419 --- /dev/null +++ b/lib/utils/build-paths.js @@ -0,0 +1,11 @@ +const path = require('path'); + +const electronProjectPath = 'electron'; +const emberBuildDir = 'ember-dist'; +const emberBuildPath = path.join(electronProjectPath, emberBuildDir); + +module.exports = { + electronProjectPath, + emberBuildDir, + emberBuildPath +}; diff --git a/lib/utils/logger.js b/lib/utils/logger.js deleted file mode 100644 index 1fc2a789..00000000 --- a/lib/utils/logger.js +++ /dev/null @@ -1,31 +0,0 @@ -const chalkLib = require('chalk'); - -class Logger { - constructor({ ui }) { - this.ui = ui; - this.chalk = chalkLib; - } - - error(msg, chalk = chalkLib.red) { - this.message(msg, chalk); - } - - message(msg, chalk = chalkLib.green) { - this.ui.writeLine(chalk(msg)); - } - - section(msgs = [], chalk = chalkLib.green) { - this.message(msgs.shift(), chalk.bold); - msgs.forEach((msg) => this.message(msg, chalk)); - } - - line() { - this.ui.writeLine('--------------------------------------------------------------------'); - } - - startProgress(msg, chalk = chalkLib.green) { - this.ui.startProgress(chalk(msg), chalk('.')); - } -} - -module.exports = Logger; diff --git a/lib/utils/yarn-or-npm.js b/lib/utils/yarn-or-npm.js deleted file mode 100644 index 45d3256d..00000000 --- a/lib/utils/yarn-or-npm.js +++ /dev/null @@ -1,23 +0,0 @@ -const path = require('path'); -const { existsSync } = require('fs'); -const { hasYarn } = require('yarn-or-npm'); - -// -// This function mimics ember-cli's logic for deciding when to use yarn vs. npm -// -function shouldUseYarn(projectRoot) { - return existsSync(path.join(projectRoot, 'yarn.lock')) && hasYarn(); -} - -// -// This function sets an environment variable that forces electron-forge to use -// either yarn or npm, according to what shouldUseYarn() says. -// -function setupForgeEnv(projectRoot) { - process.env.NODE_INSTALLER = shouldUseYarn(projectRoot) ? 'yarn' : 'npm'; -} - -module.exports = { - shouldUseYarn, - setupForgeEnv, -}; diff --git a/node-tests/.eslintrc b/node-tests/.eslintrc deleted file mode 100644 index 9f3a6541..00000000 --- a/node-tests/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -env: - node: true - mocha: true diff --git a/node-tests/acceptance/end-to-end-test.js b/node-tests/acceptance/end-to-end-test.js index b4a020af..12f93fba 100644 --- a/node-tests/acceptance/end-to-end-test.js +++ b/node-tests/acceptance/end-to-end-test.js @@ -13,7 +13,7 @@ const { const execa = require('execa'); const tmp = require('tmp'); -const expect = require('../helpers/expect'); +const { expect } = chai; function run(cmd, args, opts = {}) { opts.stdio = opts.stdio || 'inherit'; @@ -133,12 +133,6 @@ describe('end-to-end', function() { }); }); - it('assembles', () => { - return ember('electron:assemble').then(() => { - expect(existsSync(path.join('electron-out', 'project'))).to.be.ok; - }); - }); - it('packages', () => { return ember('electron:package').then(() => { expect(existsSync(path.join('electron-out', `ee-test-app-${process.platform}-${process.arch}`))).to.be.ok; diff --git a/node-tests/helpers/expect.js b/node-tests/helpers/expect.js deleted file mode 100755 index 27ca0407..00000000 --- a/node-tests/helpers/expect.js +++ /dev/null @@ -1,8 +0,0 @@ -const chai = require('chai'); -const chaiAsPromised = require('chai-as-promised'); -const sinonChai = require('sinon-chai'); - -chai.use(chaiAsPromised); -chai.use(sinonChai); - -module.exports = chai.expect; diff --git a/node-tests/helpers/mock-electron-project.js b/node-tests/helpers/mock-electron-project.js new file mode 100644 index 00000000..4b4bf060 --- /dev/null +++ b/node-tests/helpers/mock-electron-project.js @@ -0,0 +1,23 @@ +const tmp = require('tmp'); +const { existsSync, mkdirSync } = require('fs'); +const { electronProjectPath } = require('../../lib/utils/build-paths'); + +module.exports = function() { + let cwd; + before(function() { + cwd = process.cwd(); + process.chdir(tmp.dirSync().name); + }); + + after(function() { + process.chdir(cwd); + }); + + beforeEach(function() { + // do this in beforeEach() so individual tests can delete it if they are + // testing error behavior or something + if (!existsSync(electronProjectPath)) { + mkdirSync(electronProjectPath); + } + }); +} diff --git a/node-tests/helpers/mocks/project.js b/node-tests/helpers/mocks/project.js deleted file mode 100755 index ec54fbd1..00000000 --- a/node-tests/helpers/mocks/project.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const EmberMockProject = require('ember-cli/tests/helpers/mock-project'); -const path = require('path'); - -class MockProject extends EmberMockProject { - constructor({ name = 'project-simple', pkg = {}, ui } = {}) { - super(); - - this.name = name; - this.pkg = pkg; - this.ui = ui; - this.root = path.resolve(__dirname, '..', '..', 'fixtures', name); - this.addons = []; - } - - isEmberCLIProject() { - return true; - } - - hasDependencies() { - return true; - } - - initializeAddons() { - return true; - } -} - -module.exports = MockProject; diff --git a/node-tests/helpers/test-setup.js b/node-tests/helpers/test-setup.js new file mode 100644 index 00000000..f0353208 --- /dev/null +++ b/node-tests/helpers/test-setup.js @@ -0,0 +1,13 @@ +const chai = require('chai'); +const chaiAsPromised = require('chai-as-promised'); +const sinonChai = require('sinon-chai'); +const sinon = require('sinon'); + +chai.use(chaiAsPromised); +chai.use(sinonChai); + +afterEach(function() { + sinon.restore(); + // Commands will set this when building, so clear it between tests + delete process.env.EMBER_CLI_ELECTRON; +}); diff --git a/node-tests/integration/commands/build-test.js b/node-tests/integration/commands/build-test.js new file mode 100644 index 00000000..da600dd2 --- /dev/null +++ b/node-tests/integration/commands/build-test.js @@ -0,0 +1,62 @@ +'use strict'; + +const MockUI = require('console-ui/mock'); +const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); +const MockProject = require('ember-cli/tests/helpers/mock-project'); +const { expect } = require('chai'); +const EmberBuildCommand = require('ember-cli/lib/commands/build'); +const BuildCommand = require('../../../lib/commands/build'); +const sinon = require('sinon'); + +describe('electron:build command', function() { + let baseRunStub; + let command; + + beforeEach(function() { + baseRunStub = sinon.stub(EmberBuildCommand.prototype, 'run').resolves(); + command = new BuildCommand({ + ui: new MockUI(), + analytics: new MockAnalytics(), + settings: {}, + project: new MockProject(), + tasks: {}, + }); + }); + + it('calls the build command with EMBER_CLI_ELECTRON set', async function() { + let envVal; + baseRunStub.resetBehavior(); + baseRunStub.callsFake(() => { + envVal = process.env.EMBER_CLI_ELECTRON; + return Promise.resolve(); + }); + + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(baseRunStub).to.be.calledOnce; + expect(envVal).to.be.ok; + }); + + it('sets the default for outputPath', async function() { + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(baseRunStub).to.be.calledOnce; + expect(baseRunStub.firstCall.args[0].outputPath).to.equal('electron/ember-dist'); + }); + + it('it forwards options', async function() { + await expect(command.validateAndRun([ + '--output-path', '/tmp/foo', + '--environment', 'testing', + '--watch', + '--watcher', 'polling', + '--suppress-sizes' + ])).to.be.fulfilled; + expect(baseRunStub).to.be.calledOnce; + expect(baseRunStub.firstCall.args[0]).to.deep.equal({ + outputPath: '/tmp/foo', + environment: 'testing', + watch: true, + watcher: 'polling', + suppressSizes: true + }); + }); +}); diff --git a/node-tests/integration/commands/electron-test.js b/node-tests/integration/commands/electron-test.js new file mode 100755 index 00000000..81145658 --- /dev/null +++ b/node-tests/integration/commands/electron-test.js @@ -0,0 +1,138 @@ +'use strict'; + +const ElectronCommand = require('../../../lib/commands/electron'); +const mockElectronProject = require('../../helpers/mock-electron-project'); +const MockUI = require('console-ui/mock'); +const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); +const MockProject = require('ember-cli/tests/helpers/mock-project'); +const MockProcess = require('ember-cli/tests/helpers/mock-process'); +const willInterruptProcess = require('ember-cli/lib/utilities/will-interrupt-process'); +const { api } = require('@electron-forge/core'); +const { expect } = require('chai'); +const Builder = require('ember-cli/lib/models/builder'); +const Watcher = require('ember-cli/lib/models/watcher'); +const EventEmitter = require('events'); +const path = require('path'); +const rimraf = require('rimraf'); +const sinon = require('sinon'); + +class MockWatcher extends EventEmitter { + then = sinon.stub().callsFake((resolve) => resolve()) +} + +describe('electron command', function() { + mockElectronProject(); + + let processArgv; + + let command; + + let mockBrocBuilder; + let mockBrocWatcher; + let mockProcess; + + let createBuilderStub; + let cleanupBuilderStub; + let createWatcherStub; + + let emitExitStub; + + beforeEach(function() { + processArgv = Array.from(process.argv); + + mockBrocBuilder = {}; + mockBrocWatcher = new MockWatcher(); + mockProcess = new MockProcess(); + + emitExitStub = sinon.stub(); + + createBuilderStub = sinon.stub(Builder.prototype, 'setupBroccoliBuilder').callsFake(function() { + this.builder = mockBrocBuilder; + }); + sinon.stub(Builder.prototype, 'build').resolves(); + cleanupBuilderStub = sinon.stub(Builder.prototype, 'cleanup').resolves(); + createWatcherStub = sinon.stub(Watcher.prototype, 'constructWatcher').returns(mockBrocWatcher); + sinon.stub(api, 'start').callsFake(() => { + // make electron process exit right after start promise resolves + setTimeout(() => { + // We call this so we can use sinon's calledAfter() to make sure the + // builder's cleanup call came after we emitted the exit event + emitExitStub(); + mockProcess.emit('exit') + }, 1); + return Promise.resolve(mockProcess); + }); + + command = new ElectronCommand({ + ui: new MockUI(), + analytics: new MockAnalytics(), + settings: {}, + project: new MockProject(), + tasks: {}, + }); + + // This needs to be initialized when we create Builder instances or it + // throws an error + willInterruptProcess.capture(mockProcess); + }); + + afterEach(function() { + process.argv = processArgv; + willInterruptProcess.release(); + }); + + it('works', async function() { + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(createBuilderStub).to.be.calledOnce; + expect(createWatcherStub).to.be.calledOnce; + expect(mockBrocWatcher.then).to.be.calledOnce; + expect(api.start).to.be.calledOnce; + expect(api.start.firstCall).be.calledAfter(mockBrocWatcher.then.firstCall); + expect(cleanupBuilderStub).be.calledOnce; + expect(cleanupBuilderStub.firstCall).be.calledAfter(emitExitStub.firstCall); + }); + + it('passes the correct path to electron-forge', async function() { + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(api.start).to.be.calledOnce; + expect(api.start.firstCall.args[0].dir).to.equal(path.resolve('electron')); + }) + + it('sets the build output path and environment', async function() { + let outputPath; + let environment; + createBuilderStub.resetBehavior(); + createBuilderStub.callsFake(function() { + // pull values off of builder + outputPath = this.outputPath; + environment = this.environment; + }); + + await expect(command.validateAndRun([ + '--environment', 'testing' + ])).to.be.fulfilled; + expect(outputPath).to.equal('electron/ember-dist'); + expect(environment).to.equal('testing'); + }); + + it('should pass an empty args through if no --- is found', async function() { + process.argv = [ 'node', 'ember', 'electron' ]; + + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(api.start).to.be.calledOnce; + expect(api.start.firstCall.args[0].args).to.deep.equal([]); + }); + + it('should pass an args through if --- is found', async function() { + process.argv = [ 'node', 'ember', 'electron', '---', 'arg1', '--arg2', '--arg3=value' ]; + + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(api.start).to.be.calledOnce; + expect(api.start.firstCall.args[0].args).to.deep.equal(['arg1', '--arg2', '--arg3=value']); + }); + + it('errors if the electron project directory is not present', async function() { + rimraf.sync('electron'); + await expect(command.validateAndRun([])).to.be.rejected; + }); +}); diff --git a/node-tests/integration/commands/make-test.js b/node-tests/integration/commands/make-test.js new file mode 100644 index 00000000..4f6131e0 --- /dev/null +++ b/node-tests/integration/commands/make-test.js @@ -0,0 +1,143 @@ +'use strict'; + +const mockElectronProject = require('../../helpers/mock-electron-project'); +const MockUI = require('console-ui/mock'); +const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); +const MockProject = require('ember-cli/tests/helpers/mock-project'); +const { expect } = require('chai'); +const BuildTask = require('ember-cli/lib/tasks/build'); +const MakeCommand = require('../../../lib/commands/make'); +const MakeTask = require('../../../lib/tasks/make'); +const { api } = require('@electron-forge/core'); +const rimraf = require('rimraf'); +const sinon = require('sinon'); + +describe('electron:make command', function() { + mockElectronProject(); + + let buildTaskStub; + let command; + + beforeEach(function() { + buildTaskStub = sinon.stub(BuildTask.prototype, 'run').resolves(); + sinon.stub(api, 'make').resolves(); + + command = new MakeCommand({ + ui: new MockUI(), + analytics: new MockAnalytics(), + settings: {}, + project: new MockProject(), + tasks: { + 'Build': BuildTask, + 'ElectronMake': MakeTask + }, + }); + }); + + it('works', async function() { + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(buildTaskStub).to.be.calledOnce; + expect(buildTaskStub.firstCall.args[0].outputPath).to.equal('electron/ember-dist'); + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out', + skipPackage: false + }); + expect(api.make.firstCall).to.be.calledAfter(buildTaskStub.firstCall); + }); + + it('builds with EMBER_CLI_ELECTRON set', async function() { + let envVal; + buildTaskStub.resetBehavior(); + buildTaskStub.callsFake(() => { + envVal = process.env.EMBER_CLI_ELECTRON; + return Promise.resolve(); + }); + + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(envVal).to.be.ok; + }); + + it('builds for the correct environment', async function() { + await expect(command.validateAndRun([ '--environment', 'testing' ])).to.be.fulfilled; + expect(buildTaskStub).to.be.calledOnce; + expect(buildTaskStub.firstCall.args[0].environment).to.equal('testing'); + }); + + it('can skip building', async function() { + await expect(command.validateAndRun([ '--skip-build' ])).to.be.fulfilled; + expect(buildTaskStub).to.not.be.called; + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out', + skipPackage: false + }); + }); + + it('can skip packaging (which also skips building)', async function() { + await expect(command.validateAndRun([ '--skip-package' ])).to.be.fulfilled; + expect(buildTaskStub).to.not.be.called; + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out', + skipPackage: true + }); + }); + + it('can skip building and packaging explicitly', async function() { + await expect(command.validateAndRun([ '--skip-package' ])).to.be.fulfilled; + expect(buildTaskStub).to.not.be.called; + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out', + skipPackage: true + }); + }); + + it('can set the platform, arch, and output path', async function() { + await expect(command.validateAndRun([ + '--platform', 'linux', + '--arch', 'ia32', + '--output-path', '/tmp/foo' + ])).to.be.fulfilled; + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: '/tmp/foo', + platform: 'linux', + arch: 'ia32', + skipPackage: false + }); + }); + + it('can set one override target', async function() { + await expect(command.validateAndRun([ '--targets', 'zip' ])).to.be.fulfilled; + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out', + skipPackage: false, + overrideTargets: [ 'zip' ] + }); + }); + + it('can set multiple override targets', async function() { + await expect(command.validateAndRun([ '--targets', 'zip,dmg,deb' ])).to.be.fulfilled; + expect(api.make).to.be.calledOnce; + expect(api.make.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out', + skipPackage: false, + overrideTargets: [ 'zip', 'dmg', 'deb' ] + }); + }); + + it('errors if the electron project directory is not present', async function() { + rimraf.sync('electron'); + await expect(command.validateAndRun([])).to.be.rejected; + }); +}); diff --git a/node-tests/integration/commands/package-test.js b/node-tests/integration/commands/package-test.js new file mode 100644 index 00000000..5f5e8e77 --- /dev/null +++ b/node-tests/integration/commands/package-test.js @@ -0,0 +1,86 @@ +'use strict'; + +const mockElectronProject = require('../../helpers/mock-electron-project'); +const MockUI = require('console-ui/mock'); +const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); +const MockProject = require('ember-cli/tests/helpers/mock-project'); +const { expect } = require('chai'); +const BuildTask = require('ember-cli/lib/tasks/build'); +const PackageCommand = require('../../../lib/commands/package'); +const PackageTask = require('../../../lib/tasks/package'); +const { api } = require('@electron-forge/core'); +const rimraf = require('rimraf'); +const sinon = require('sinon'); + +describe('electron:package command', function() { + mockElectronProject(); + + let buildTaskStub; + let command; + + beforeEach(function() { + buildTaskStub = sinon.stub(BuildTask.prototype, 'run').resolves(); + sinon.stub(api, 'package').resolves(); + + command = new PackageCommand({ + ui: new MockUI(), + analytics: new MockAnalytics(), + settings: {}, + project: new MockProject(), + tasks: { + 'Build': BuildTask, + 'ElectronPackage': PackageTask + }, + }); + }); + + it('works', async function() { + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(buildTaskStub).to.be.calledOnce; + expect(buildTaskStub.firstCall.args[0].outputPath).to.equal('electron/ember-dist'); + expect(api.package).to.be.calledOnce; + expect(api.package.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: 'electron-out' + }); + expect(api.package.firstCall).to.be.calledAfter(buildTaskStub.firstCall); + }); + + it('builds with EMBER_CLI_ELECTRON set', async function() { + let envVal; + buildTaskStub.resetBehavior(); + buildTaskStub.callsFake(() => { + envVal = process.env.EMBER_CLI_ELECTRON; + return Promise.resolve(); + }); + + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(envVal).to.be.ok; + }); + + it('builds for the correct environment', async function() { + await expect(command.validateAndRun([ '--environment', 'testing' ])).to.be.fulfilled; + expect(buildTaskStub).to.be.calledOnce; + expect(buildTaskStub.firstCall.args[0].environment).to.equal('testing'); + }); + + it('sets the platform, argch, and output path', async function() { + await expect(command.validateAndRun([ + '--platform', 'linux', + '--arch', 'ia32', + '--output-path', '/tmp/foo' + ])).to.be.fulfilled; + expect(api.package).to.be.calledOnce; + expect(api.package.firstCall.args[0]).to.deep.equal({ + dir: 'electron', + outDir: '/tmp/foo', + platform: 'linux', + arch: 'ia32' + }); + }); + + it('errors if the electron project directory is not present', async function() { + rimraf.sync('electron'); + await expect(command.validateAndRun([])).to.be.rejected; + }); +}); diff --git a/node-tests/integration/models/assembler-test.js b/node-tests/integration/models/assembler-test.js deleted file mode 100644 index fd3336f2..00000000 --- a/node-tests/integration/models/assembler-test.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict'; - -const path = require('path'); -const tmp = require('tmp'); -const { - copySync, - mkdirSync, - existsSync, - readFileSync, - writeFileSync, -} = require('fs-extra'); -const walkSync = require('walk-sync'); -const symlinkOrCopySync = require('symlink-or-copy').sync; -const MockUI = require('console-ui/mock'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); -const Assembler = require('../../../lib/models/assembler'); - -describe('Assembler model', () => { - let cwd; - let env; - let assembler; - - function fixturePath(name) { - return path.resolve(__dirname, '..', '..', 'fixtures', name); - } - - const emberBuildPath = fixturePath('ember-build'); - const pkg = { - config: { - forge: 'ember-electron/electron-forge-config.js', - }, - }; - - function assembleInto(outputPath, { platform } = {}) { - let ui = new MockUI(); - assembler = new Assembler({ - ui, - project: new MockProject({ ui, pkg }), - platform, - emberBuildPath, - outputPath, - }); - - return assembler.assemble(); - } - - function assemble(projectPath, options) { - let { name: tmpRoot } = tmp.dirSync(); - let tmpDir = path.join(tmpRoot, 'project'); - copySync(projectPath, tmpDir); - process.chdir(tmpDir); - - return assembleInto(path.join(tmpRoot, 'output'), options); - } - - beforeEach(() => { - cwd = process.cwd(); - env = process.env; - process.env = {}; - }); - - afterEach(() => { - if (assembler) { - return assembler.cleanup(); - } - process.env = env; - process.chdir(cwd); - }); - - it('assembles', () => { - return assemble(fixturePath('project-simple')).then(({ directory }) => { - let files = walkSync(directory, { directories: false }); - expect(files).to.deep.equal([ - 'ember-electron/electron-forge-config.js', - 'ember-electron/main.js', - 'ember/assets/app.css', - 'ember/assets/app.js', - 'ember/index.html', - 'package.json', - ]); - }); - }); - - it('defaults to the current platform', () => { - return assemble(fixturePath('project-resources')).then(({ directory }) => { - let filePath = path.join(directory, 'ember-electron', 'resources', 'platform.txt'); - expect(readFileSync(filePath).toString().trim()).to.equal(process.platform); - }); - }); - - it('respects the specified platform', () => { - let platform = process.platform === 'darwin' ? 'win32' : 'darwin'; - - return assemble(fixturePath('project-resources'), { platform }).then(({ directory }) => { - let filePath = path.join(directory, 'ember-electron', 'resources', 'platform.txt'); - expect(readFileSync(filePath).toString().trim()).to.equal(platform); - }); - }); - - it('removes node_modules directory from the output directory before syncing', () => { - return assemble(fixturePath('project-resources')).then(({ directory }) => { - let nodeModulesPath = path.join(directory, 'node_modules'); - mkdirSync(nodeModulesPath); - writeFileSync(path.join(nodeModulesPath, 'foo'), 'blah'); - - return assembleInto(directory); - }).then(({ directory }) => { - expect(existsSync(path.join(directory, 'node_modules'))).to.be.false; - }); - }); - - it('removes node_modules symlink from the output directory before syncing', () => { - // Create a directory that we can make the target of the node_modules - // symlink so we can make sure syncing doesn't follow the symlink and delete - // the contents. - let { name: tmpDir } = tmp.dirSync(); - let modulePath = path.join(tmpDir, 'some-module'); - let filePath = path.join(modulePath, 'package.json'); - mkdirSync(modulePath); - writeFileSync(filePath, '{}'); - - return assemble(fixturePath('project-resources')).then(({ directory }) => { - symlinkOrCopySync(tmpDir, path.join(directory, 'node_modules')); - - return assembleInto(directory); - }).then(({ directory }) => { - expect(existsSync(path.join(directory, 'node_modules'))).to.be.false; - expect(existsSync(filePath)).to.be.true; - }); - }); -}); diff --git a/node-tests/integration/utils/assemble-tree-test.js b/node-tests/integration/utils/assemble-tree-test.js deleted file mode 100644 index 2e28a0c1..00000000 --- a/node-tests/integration/utils/assemble-tree-test.js +++ /dev/null @@ -1,204 +0,0 @@ -'use strict'; - -const path = require('path'); -const tmp = require('tmp'); -const { copySync, readFileSync } = require('fs-extra'); -const walkSync = require('walk-sync'); -const MockUI = require('console-ui/mock'); -const expect = require('../../helpers/expect'); -const { Builder } = require('broccoli-builder'); -const Funnel = require('broccoli-funnel'); -const assembleTree = require('../../../lib/utils/assemble-tree'); - -describe('assembleTree', () => { - let cwd; - let env; - let ui; - let builder; - - function fixturePath(name) { - return path.resolve(__dirname, '..', '..', 'fixtures', name); - } - - function defaultPkg() { - return { - config: { - forge: 'ember-electron/electron-forge-config.js', - }, - }; - } - - const emberBuildPath = fixturePath('ember-build'); - - function buildTree(projectPath, { inputNode, platform, pkg = defaultPkg() }) { - let { name: tmpRoot } = tmp.dirSync(); - let tmpDir = path.join(tmpRoot, 'project'); - copySync(projectPath, tmpDir); - process.chdir(tmpDir); - - let tree = assembleTree({ ui, project: { pkg }, platform, inputNode }); - builder = new Builder(tree); - - return builder.build(); - } - - beforeEach(() => { - cwd = process.cwd(); - env = process.env; - process.env = {}; - ui = new MockUI(); - }); - - afterEach(() => { - if (builder) { - return builder.cleanup(); - } - process.env = env; - process.chdir(cwd); - }); - - it('builds from a directory', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - - return buildTree(projectPath, { inputNode }).then(({ directory }) => { - let files = walkSync(directory, { directories: false }); - expect(files).to.deep.equal([ - 'ember-electron/electron-forge-config.js', - 'ember-electron/main.js', - 'ember/assets/app.css', - 'ember/assets/app.js', - 'ember/index.html', - 'package.json', - ]); - }); - }); - - it('builds from a broccoli tree', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = new Funnel(emberBuildPath); - - return buildTree(projectPath, { inputNode }).then(({ directory }) => { - let files = walkSync(directory, { directories: false }); - expect(files).to.deep.equal([ - 'ember-electron/electron-forge-config.js', - 'ember-electron/main.js', - 'ember/assets/app.css', - 'ember/assets/app.js', - 'ember/index.html', - 'package.json', - ]); - }); - }); - - it('collates resources directories', () => { - let projectPath = fixturePath('project-resources'); - let inputNode = emberBuildPath; - - return buildTree(projectPath, { inputNode, platform: 'win32' }).then(({ directory }) => { - let files = walkSync(directory, { directories: false }); - expect(files).to.deep.equal([ - 'ember-electron/electron-forge-config.js', - 'ember-electron/main.js', - 'ember-electron/resources/platform.txt', - 'ember-electron/resources/resource.txt', - 'ember-electron/resources/win32.txt', - 'ember/assets/app.css', - 'ember/assets/app.js', - 'ember/index.html', - 'package.json', - ]); - - let filePath = path.join(directory, 'ember-electron', 'resources', 'platform.txt'); - expect(readFileSync(filePath).toString().trim()).to.equal('win32'); - }); - }); - - it('collates resources directories on darwin', () => { - let projectPath = fixturePath('project-resources'); - let inputNode = new Funnel(emberBuildPath); - - return buildTree(projectPath, { inputNode, platform: 'darwin' }).then(({ directory }) => { - let filePath = path.join(directory, 'ember-electron', 'resources', 'platform.txt'); - expect(readFileSync(filePath).toString().trim()).to.equal('darwin'); - }); - }); - - it('collates resources directories on linux', () => { - let projectPath = fixturePath('project-resources'); - let inputNode = new Funnel(emberBuildPath); - - return buildTree(projectPath, { inputNode, platform: 'linux' }).then(({ directory }) => { - let filePath = path.join(directory, 'ember-electron', 'resources', 'platform.txt'); - expect(readFileSync(filePath).toString().trim()).to.equal('linux'); - }); - }); - - it('uses the correct main.js when EMBER_ENV is not "test"', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - process.env.EMBER_ENV = 'production'; - - return buildTree(projectPath, { inputNode }).then(({ directory }) => { - let mainPath = path.join(directory, 'ember-electron', 'main.js'); - expect(readFileSync(mainPath).toString().trim()).to.be.equal('// main.js'); - }); - }); - - it('uses the correct main.js when EMBER_ENV is "test"', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - process.env.EMBER_ENV = 'test'; - - return buildTree(projectPath, { inputNode }).then(({ directory }) => { - let mainPath = path.join(directory, 'ember-electron', 'main.js'); - expect(readFileSync(mainPath).toString().trim()).to.be.equal('// tests/main.js'); - }); - }); - - it('warns when ember-welcome-page is installed', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - let pkg = defaultPkg(); - pkg.devDependencies = { 'ember-welcome-page': '^1.0.0' }; - - return buildTree(projectPath, { inputNode, pkg }).then(() => { - expect(ui.output).to.contain('ember-welcome-page'); - }); - }); - - it('doesn\'t warn when ember-welcome-page is not installed', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - - return buildTree(projectPath, { inputNode }).then(() => { - expect(ui.output).to.not.contain('ember-welcome-page'); - }); - }); - - it('fills in a default when package.json has no "main" entry', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - - return buildTree(projectPath, { inputNode }).then(({ directory }) => { - let packageJson = require(`${directory}/package.json`); - expect(packageJson.main).to.equal('ember-electron/main.js'); - }); - }); - - it('throws an error when ember-electron/main.js does not exist', () => { - let projectPath = fixturePath('project-missing-main'); - let inputNode = emberBuildPath; - - expect(() => buildTree(projectPath, { inputNode })).to.throw(/main module/); - }); - - it('throws an error when package.json has no forge config', () => { - let projectPath = fixturePath('project-simple'); - let inputNode = emberBuildPath; - - expect(() => buildTree(projectPath, { inputNode, pkg: {} })).to.throw(/config\.forge/); - expect(() => buildTree(projectPath, { inputNode, pkg: { config: {} } })).to.throw(/config\.forge/); - }); - -}); diff --git a/node-tests/mocha-standard.js b/node-tests/mocha-standard.js deleted file mode 100755 index f6a844db..00000000 --- a/node-tests/mocha-standard.js +++ /dev/null @@ -1,6 +0,0 @@ -const standard = require('mocha-standard'); -const files = ['tests/**/*.js', 'lib/**/*.js', 'app/**/*.js', 'blueprints/ember-electron/index.js']; - -describe('Standard JavaScript Style', () => { - it('all non-user facing files conform', standard.files(files)).timeout(20000); -}); diff --git a/node-tests/runner.js b/node-tests/runner.js deleted file mode 100755 index f6f76c2e..00000000 --- a/node-tests/runner.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -let glob = require('globby'); -let Mocha = require('mocha'); - -let mocha = new Mocha({ - reporter: 'spec', -}); - -let root = 'node-tests/'; - -function addFiles(mocha, files) { - glob.sync(root + files).forEach(mocha.addFile.bind(mocha)); -} - -addFiles(mocha, '/unit/**/*-test.js'); - -mocha.run(function(failures) { - process.on('exit', function() { - process.exit(failures); - }); -}); diff --git a/node-tests/unit/commands/assemble-test.js b/node-tests/unit/commands/assemble-test.js deleted file mode 100644 index eb26a093..00000000 --- a/node-tests/unit/commands/assemble-test.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve } = require('rsvp'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('electron:assemble command', () => { - let assembleTaskOptions; - let assembleRunOptions; - - let command; - - class MockAssembleTask extends CoreObject { - constructor(options) { - super(...arguments); - assembleTaskOptions = clone(options); - } - - run(options) { - assembleRunOptions = clone(options); - - return resolve(); - } - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - assembleTaskOptions = null; - assembleRunOptions = null; - - mockery.registerMock('../tasks/assemble', MockAssembleTask); - - const AssembleCommand = require('../../../lib/commands/assemble'); - command = new AssembleCommand({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject(), - tasks: {}, - }); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('should invoke the assemble command with the correct options', () => { - let options = { - outputPath: 'output', - }; - - return command.run(options).then(() => { - expect(assembleTaskOptions.ui).to.equal(command.ui); - expect(assembleTaskOptions.analytics).to.equal(command.analytics); - expect(assembleTaskOptions.project).to.equal(command.project); - - expect(assembleRunOptions.outputPath).to.equal('output'); - }); - }); -}); diff --git a/node-tests/unit/commands/build-test.js b/node-tests/unit/commands/build-test.js deleted file mode 100644 index bf11c6b5..00000000 --- a/node-tests/unit/commands/build-test.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); -const BuildCommand = require('../../../lib/commands/build'); - -describe('electron:build command', () => { - let command; - - beforeEach(() => { - command = new BuildCommand({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject('project-with-test-config'), - tasks: {}, - }); - }); - - it('uses the correct tasks', () => { - expect(command.tasks.Build).to.equal(require('../../../lib/tasks/build')); - }); -}); diff --git a/node-tests/unit/commands/electron-test.js b/node-tests/unit/commands/electron-test.js deleted file mode 100755 index 6e6afd89..00000000 --- a/node-tests/unit/commands/electron-test.js +++ /dev/null @@ -1,175 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const RSVP = require('rsvp'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); -const sinon = require('sinon'); - -class MockHandle { - constructor() { - this.handles = {}; - this.exitImmediately = true; - } - - trigger(method = '') { - if (this.handles[method]) { - this.handles[method](); - } - } - - on(handle, method) { - this.handles[handle] = method; - - if (this.exitImmediately && handle === 'exit') { - method(); - } - } -} - -describe('electron command', () => { - let CommandUnderTest, commandOptions, startStub, argv; - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - startStub = sinon.stub().callsFake(() => new MockHandle()); - mockery.registerMock('@electron-forge/core', { api: { start: startStub } }); - argv = ['./electron', './project']; - - const cmd = require('../../../lib/commands/electron'); - CommandUnderTest = cmd.extend({ - _getArgv() { - return argv; - }, - }); - - commandOptions = { - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject('project-empty'), - }; - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('should build the project before running Electron', () => { - const tasks = []; - - commandOptions._buildAndWatch = () => { - tasks.push('_buildAndWatch'); - - return RSVP.resolve(); - }; - - commandOptions._startElectron = () => { - tasks.push('_startElectron'); - - return RSVP.resolve(); - }; - - const command = new CommandUnderTest(commandOptions).validateAndRun(); - - return expect(command).to.be.fulfilled.then(() => { - expect(tasks).to.deep.equal(['_buildAndWatch', '_startElectron']); - }); - }); - - it('should not run Electron when the build fails', () => { - const tasks = []; - - commandOptions._buildAndWatch = () => { - tasks.push('_buildAndWatch'); - - return RSVP.reject(); - }; - - commandOptions._startElectron = () => { - tasks.push('_startElectron'); - - return RSVP.resolve(); - }; - - const command = new CommandUnderTest(commandOptions).validateAndRun(); - - return expect(command).to.be.rejected.then(() => { - expect(tasks).to.deep.equal(['_buildAndWatch']); - }); - }); - - it('should not keep watching if Electron fails to run', () => { - const tasks = []; - - commandOptions._buildAndWatch = () => { - tasks.push('_buildAndWatch'); - - return RSVP.resolve(); - }; - - commandOptions._startElectron = () => { - tasks.push('_startElectron'); - - return RSVP.reject(); - }; - - const command = new CommandUnderTest(commandOptions).validateAndRun(); - - return expect(command).to.be.rejected.then(() => { - expect(tasks).to.deep.equal(['_buildAndWatch', '_startElectron']); - }); - }); - - it('should try to start `electron-forge` process', () => { - commandOptions._buildAndWatch = () => { - return RSVP.resolve(); - }; - - const command = new CommandUnderTest(commandOptions).validateAndRun(); - - return expect(command).to.be.fulfilled.then(() => { - expect(startStub).to.have.been.calledOnce; - }); - }); - - it('should pass an empty args through if no --- is found', () => { - commandOptions._buildAndWatch = () => { - return RSVP.resolve(); - }; - - const command = new CommandUnderTest(commandOptions).validateAndRun(); - - return expect(command).to.be.fulfilled.then(() => { - expect(startStub).to.have.been.calledOnce; - expect(startStub.firstCall.args[0].args).to.deep.equal([]); - }); - }); - - it('should pass an args through if --- is found', () => { - commandOptions._buildAndWatch = () => { - return RSVP.resolve(); - }; - - argv.push(...['---', 'arg1', '--arg2', '--arg3=value']); - const command = new CommandUnderTest(commandOptions).validateAndRun(); - - return expect(command).to.be.fulfilled.then(() => { - expect(startStub).to.have.been.calledOnce; - expect(startStub.firstCall.args[0].args).to.deep.equal(['arg1', '--arg2', '--arg3=value']); - }); - }); -}); diff --git a/node-tests/unit/commands/make-test.js b/node-tests/unit/commands/make-test.js deleted file mode 100644 index 38bc2050..00000000 --- a/node-tests/unit/commands/make-test.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve } = require('rsvp'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('electron:make command', () => { - let makeTaskOptions; - let makeRunOptions; - - let command; - - class MockMakeTask extends CoreObject { - constructor(options) { - super(...arguments); - makeTaskOptions = clone(options); - } - - run(options) { - makeRunOptions = clone(options); - - return resolve(); - } - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - makeTaskOptions = null; - makeRunOptions = null; - - mockery.registerMock('../tasks/make', MockMakeTask); - - const MakeCommand = require('../../../lib/commands/make'); - command = new MakeCommand({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject(), - tasks: {}, - }); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('should invoke the make command with the correct options', () => { - let options = { - outputPath: 'output', - }; - - return command.run(options).then(() => { - expect(makeTaskOptions.ui).to.equal(command.ui); - expect(makeTaskOptions.analytics).to.equal(command.analytics); - expect(makeTaskOptions.project).to.equal(command.project); - - expect(makeRunOptions.outputPath).to.equal('output'); - }); - }); -}); diff --git a/node-tests/unit/commands/package-test.js b/node-tests/unit/commands/package-test.js deleted file mode 100644 index e61cf42f..00000000 --- a/node-tests/unit/commands/package-test.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve } = require('rsvp'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('electron:package command', () => { - let packageTaskOptions; - let packageRunOptions; - - let command; - - class MockPackageTask extends CoreObject { - constructor(options) { - super(...arguments); - packageTaskOptions = clone(options); - } - - run(options) { - packageRunOptions = clone(options); - - return resolve(); - } - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - packageTaskOptions = null; - packageRunOptions = null; - - mockery.registerMock('../tasks/package', MockPackageTask); - - const PackageCommand = require('../../../lib/commands/package'); - command = new PackageCommand({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject(), - tasks: {}, - }); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('should invoke the package command with the correct options', () => { - let options = { - outputPath: 'output', - }; - - return command.run(options).then(() => { - expect(packageTaskOptions.ui).to.equal(command.ui); - expect(packageTaskOptions.analytics).to.equal(command.analytics); - expect(packageTaskOptions.project).to.equal(command.project); - - expect(packageRunOptions.outputPath).to.equal('output'); - }); - }); -}); diff --git a/node-tests/unit/commands/test-test.js b/node-tests/unit/commands/test-test.js deleted file mode 100755 index acc56d7d..00000000 --- a/node-tests/unit/commands/test-test.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); -const TestCommand = require('../../../lib/commands/test'); - -describe('electron:test command', () => { - let command; - - beforeEach(() => { - command = new TestCommand({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject('project-with-test-config'), - tasks: {}, - }); - }); - - it('uses the correct models and tasks', () => { - expect(command.Builder).to.equal(require('../../../lib/models/builder')); - expect(command.tasks.Build).to.equal(require('../../../lib/tasks/build-for-test')); - expect(command.tasks.Test).to.equal(require('../../../lib/tasks/test')); - expect(command.tasks.TestServer).to.equal(require('../../../lib/tasks/test-server')); - }); -}); diff --git a/node-tests/unit/models/builder-test.js b/node-tests/unit/models/builder-test.js deleted file mode 100644 index eeed7c82..00000000 --- a/node-tests/unit/models/builder-test.js +++ /dev/null @@ -1,133 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const tmp = require('tmp'); -const mockery = require('mockery'); -const CoreObject = require('core-object'); -const expect = require('../../helpers/expect'); - -describe('Builder model', () => { - let env; - let Builder; - let outputPath; - let project; - - class MockBuilder extends CoreObject { - copyToOutputPath() { - // There must never be a node_modules symlink in the output path when we - // copy there, or the tree syncing will delete stuff it shouldn't - expect(fs.existsSync(path.join(this.outputPath, 'node_modules'))).to.be.false; - fs.writeFileSync(path.join(this.outputPath, 'build'), 'build'); - } - - cleanup() { - // There should never be a node_modules symlink in the output path by the - // time we are called or we screwed up our cleanup - expect(fs.existsSync(path.join(this.outputPath, 'node_modules'))).to.be.false; - fs.unlinkSync(path.join(this.outputPath, 'build')); - } - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - env = process.env; - process.env = {}; - - mockery.registerMock('ember-cli/lib/models/builder', MockBuilder); - - Builder = require('../../../lib/models/builder'); - - // Create output path - ({ name: outputPath } = tmp.dirSync()); - - // Create project root with node_modules lib - project = { root: tmp.dirSync().name }; - let nodeModules = path.join(project.root, 'node_modules'); - fs.mkdirSync(nodeModules); - fs.writeFileSync(path.join(nodeModules, 'lib'), 'lib'); - }); - - afterEach(() => { - // Nothing should ever delete our lib file - expect(fs.existsSync(path.join(project.root, 'node_modules', 'lib'))).to.be.ok; - - process.env = env; - - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('is a builder', () => { - let builder = new Builder({}); - expect(builder).to.be.an.instanceOf(MockBuilder); - }); - - it('sets the right environment variables when not assembling', () => { - new Builder({}); - expect(process.env.EMBER_CLI_ELECTRON).to.be.ok; - expect(process.env.EMBER_CLI_ELECTRON_ASSEMBLE).to.not.be.ok; - }); - - it('sets the right environment variables when assembling', () => { - new Builder({ assemble: true }); - expect(process.env.EMBER_CLI_ELECTRON).to.be.ok; - expect(process.env.EMBER_CLI_ELECTRON_ASSEMBLE).to.be.ok; - expect(process.env.EMBER_CLI_ELECTRON_PLATFORM).to.equal(process.platform); - }); - - it('respects the specified platform when assembling', () => { - let platform = process.platform === 'darwin' ? 'linux' : 'darwin'; - - new Builder({ assemble: true, platform }); - expect(process.env.EMBER_CLI_ELECTRON).to.be.ok; - expect(process.env.EMBER_CLI_ELECTRON_ASSEMBLE).to.be.ok; - expect(process.env.EMBER_CLI_ELECTRON_PLATFORM).to.equal(platform); - }); - - describe('copyToOutputPath', () => { - it('works', () => { - let builder = new Builder({ project, outputPath }); - builder.copyToOutputPath(); - expect(fs.existsSync(path.join(outputPath, 'build'))).to.be.ok; - }); - - it('doesn\'t symlink node_modules if the option is not set', () => { - let builder = new Builder({ project, outputPath }); - builder.copyToOutputPath(); - expect(fs.existsSync(path.join(outputPath, 'node_modules'))).to.not.be.ok; - }); - - it('symlinks node_modules if the option is set', () => { - let builder = new Builder({ project, outputPath, symlinkNodeModules: true }); - builder.copyToOutputPath(); - expect(fs.existsSync(path.join(outputPath, 'node_modules'))).to.be.ok; - }); - - it('manages the node_modules symlink across multiple calls', () => { - let builder = new Builder({ project, outputPath, symlinkNodeModules: true }); - builder.copyToOutputPath(); - builder.copyToOutputPath(); - expect(fs.existsSync(path.join(outputPath, 'node_modules'))).to.be.ok; - }); - - it('manages the node_modules symlink across multiple calls with symlinkNodeModules changing', () => { - let builder = new Builder({ project, outputPath, symlinkNodeModules: true }); - builder.copyToOutputPath(); - builder = new Builder({ project, outputPath }); - builder.copyToOutputPath(); - expect(fs.existsSync(path.join(outputPath, 'node_modules'))).to.not.be.ok; - expect(fs.existsSync(path.join(project.root, 'node_modules'))).to.be.ok; - }); - }); -}); diff --git a/node-tests/unit/tasks/assemble-test.js b/node-tests/unit/tasks/assemble-test.js deleted file mode 100644 index 7506bce4..00000000 --- a/node-tests/unit/tasks/assemble-test.js +++ /dev/null @@ -1,223 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve, reject } = require('rsvp'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('AssembleTask', () => { - let operations; - - let buildTaskOptions; - let buildRunOptions; - let buildTaskFail; - - let assemblerOptions; - let assemblerFail; - - let useYarn; - - let installCommand; - let installOptions; - - let task; - - class MockBuildTask extends CoreObject { - constructor(options) { - super(...arguments); - buildTaskOptions = clone(options); - } - - run(options) { - operations.push('build'); - buildRunOptions = clone(options); - - return buildTaskFail ? reject() : resolve(); - } - } - - class MockAssembler extends CoreObject { - constructor(options) { - super(...arguments); - assemblerOptions = clone(options); - } - - assemble() { - operations.push('assemble'); - - return assemblerFail ? reject() : resolve(); - } - - cleanup() { - operations.push('cleanup'); - } - } - - function mockInstall(command, args, opts) { - operations.push('install-dependencies'); - installCommand = command; - installOptions = opts; - - return resolve(); - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - operations = []; - buildTaskOptions = null; - buildRunOptions = null; - buildTaskFail = false; - assemblerOptions = null; - assemblerFail = false; - installOptions = null; - - mockery.registerMock('./build', MockBuildTask); - mockery.registerMock('../models/assembler', MockAssembler); - mockery.registerMock('../utils/yarn-or-npm', { shouldUseYarn: () => useYarn }); - mockery.registerMock('execa', mockInstall); - - const AssembleTask = require('../../../lib/tasks/assemble'); - task = new AssembleTask({ - ui: new MockUI(), - analytics: new MockAnalytics(), - project: new MockProject(), - }); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('should build when no build path is specified', () => { - let options = { - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['build', 'install-dependencies']); - - expect(buildTaskOptions.ui).to.equal(task.ui); - expect(buildTaskOptions.analytics).to.equal(task.analytics); - expect(buildTaskOptions.project).to.equal(task.project); - - expect(buildRunOptions.outputPath).to.equal('output'); - expect(buildRunOptions.environment).to.not.be.ok; - expect(buildRunOptions.assemble).to.be.ok; - expect(buildRunOptions.platform).to.not.be.ok; - - expect(installOptions).to.deep.equal({ - cwd: 'output', - }); - }); - }); - - it('should respect the environment and platform when building', () => { - let options = { - environment: 'test', - platform: 'linux', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['build', 'install-dependencies']); - - expect(buildRunOptions.environment).to.equal('test'); - expect(buildRunOptions.platform).to.equal('linux'); - }); - }); - - it('should fail on build failures', () => { - let options = { - outputPath: 'output', - }; - buildTaskFail = true; - - expect(task.run(options)).to.be.rejected.then(() => { - expect(operations).to.deep.equal(['build']); - }); - }); - - it('should assemble when a build path is specified', () => { - let options = { - buildPath: 'ember-build', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['assemble', 'cleanup', 'install-dependencies']); - - expect(assemblerOptions.ui).to.equal(task.ui); - expect(assemblerOptions.platform).to.not.be.ok; - expect(assemblerOptions.emberBuildPath).to.equal('ember-build'); - expect(assemblerOptions.outputPath).to.equal('output'); - expect(assemblerOptions.project).to.equal(task.project); - - expect(installOptions).to.deep.equal({ - cwd: 'output', - }); - }); - }); - - it('should respect the platform when assembling', () => { - let options = { - buildPath: 'ember-build', - platform: 'linux', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['assemble', 'cleanup', 'install-dependencies']); - - expect(assemblerOptions.platform).to.equal('linux'); - }); - }); - - it('should use yarn when appropriate', () => { - let options = { - outputPath: 'output', - }; - useYarn = true; - - expect(task.run(options)).to.be.rejected.then(() => { - expect(installCommand).to.equal('yarn'); - }); - }); - - it('should use npm when appropriate', () => { - let options = { - outputPath: 'output', - }; - useYarn = false; - - expect(task.run(options)).to.be.rejected.then(() => { - expect(installCommand).to.equal('npm'); - }); - }); - - it('should fail on assemble failures', () => { - let options = { - buildPath: 'ember-build', - outputPath: 'output', - }; - assemblerFail = true; - - expect(task.run(options)).to.be.rejected.then(() => { - expect(operations).to.deep.equal(['assemble', 'cleanup']); - }); - }); -}); diff --git a/node-tests/unit/tasks/build-for-test-test.js b/node-tests/unit/tasks/build-for-test-test.js deleted file mode 100644 index ec3875ac..00000000 --- a/node-tests/unit/tasks/build-for-test-test.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const expect = require('../../helpers/expect'); - -describe('BuildForTestTask', () => { - let BuildForTestTask; - let runOptions; - - class MockBuildTask extends CoreObject { - run(options) { - runOptions = clone(options); - } - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - mockery.registerMock('./build', MockBuildTask); - - BuildForTestTask = require('../../../lib/tasks/build-for-test'); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('builds, assembles and symlinks node_modules', () => { - let task = new BuildForTestTask(); - task.run({ platform: 'win32', outputPath: 'output' }); - expect(runOptions.platform).to.be.equal('win32'); - expect(runOptions.outputPath).to.be.equal('output'); - expect(runOptions.assemble).to.be.ok; - expect(runOptions.symlinkNodeModules).to.be.ok; - }); -}); diff --git a/node-tests/unit/tasks/build-test.js b/node-tests/unit/tasks/build-test.js deleted file mode 100644 index 9b5558f2..00000000 --- a/node-tests/unit/tasks/build-test.js +++ /dev/null @@ -1,115 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve, reject } = require('rsvp'); -const { clone } = require('lodash/lang'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('BuildTask', () => { - let operations; - let builderOptions; - let failBuild; - let BuildTask; - - class MockBuilder { - constructor(options) { - builderOptions = clone(options); - } - - build() { - operations.push('build'); - - return failBuild ? reject('build rejection') : resolve('build resolution'); - } - - cleanup() { - operations.push('cleanup'); - - return resolve('cleanup resolve'); - } - } - - function subject(props) { - return new BuildTask(Object.assign({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject('project-with-test-config'), - }, props)); - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - builderOptions = null; - operations = []; - failBuild = false; - - mockery.registerMock('../models/builder', MockBuilder); - BuildTask = require('../../../lib/tasks/build'); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('builds with default options', () => { - let task = subject(); - - return task.run({ outputPath: 'output' }).then(() => { - expect(builderOptions.ui).to.equal(task.ui); - expect(builderOptions.project).to.equal(task.project); - expect(builderOptions.outputPath).to.equal('output'); - expect(builderOptions.environment).to.be.undefined; - expect(builderOptions.assemble).to.be.undefined; - expect(builderOptions.symlinkNodeModules).to.be.undefined; - expect(builderOptions.platform).to.be.undefined; - - expect(operations).to.deep.equal(['build', 'cleanup']); - }); - }); - - it('builds with non-default options', () => { - let task = subject(); - - return task.run({ - outputPath: 'output', - environment: 'test', - assemble: true, - symlinkNodeModules: true, - platform: 'win32', - }).then(() => { - expect(builderOptions.ui).to.equal(task.ui); - expect(builderOptions.project).to.equal(task.project); - expect(builderOptions.outputPath).to.equal('output'); - expect(builderOptions.environment).to.equal('test'); - expect(builderOptions.assemble).to.be.true; - expect(builderOptions.symlinkNodeModules).to.be.true; - expect(builderOptions.platform).to.equal('win32'); - - expect(operations).to.deep.equal(['build', 'cleanup']); - }); - }); - - it('fails when the builder fails', () => { - failBuild = true; - let task = subject(); - - return expect(task.run({ outputPath: 'output' })).to.be.rejected.then(() => { - expect(operations).to.deep.equal(['build', 'cleanup']); - }); - }); -}); diff --git a/node-tests/unit/tasks/make-test.js b/node-tests/unit/tasks/make-test.js deleted file mode 100644 index e9de1af5..00000000 --- a/node-tests/unit/tasks/make-test.js +++ /dev/null @@ -1,225 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve, reject } = require('rsvp'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('MakeTask', () => { - let operations; - - let packageTaskOptions; - let packageRunOptions; - let packageFail; - - let forgeMakeOptions; - let forgeMakeFail; - - let task; - - class MockPackageTask extends CoreObject { - constructor(options) { - super(...arguments); - packageTaskOptions = clone(options); - } - - run(options) { - operations.push('package'); - packageRunOptions = clone(options); - - return packageFail ? reject() : resolve(); - } - } - - function mockForgeMake(options) { - operations.push('forgeMake'); - forgeMakeOptions = clone(options); - - return forgeMakeFail ? reject() : resolve(); - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - operations = []; - packageTaskOptions = null; - packageRunOptions = null; - packageFail = false; - forgeMakeOptions = null; - forgeMakeFail = false; - - mockery.registerMock('./package', MockPackageTask); - mockery.registerMock('@electron-forge/core', { api: { make: mockForgeMake } }); - - const MakeTask = require('../../../lib/tasks/make'); - task = new MakeTask({ - ui: new MockUI(), - analytics: new MockAnalytics(), - project: new MockProject(), - }); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - }); - - it('should package and make when no input path or skipPackage is specified', () => { - let options = { - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['package', 'forgeMake']); - - expect(packageTaskOptions.ui).to.equal(task.ui); - expect(packageTaskOptions.analytics).to.equal(task.analytics); - expect(packageTaskOptions.project).to.equal(task.project); - - expect(packageRunOptions.outputPath).to.equal('output'); - expect(packageRunOptions.projectPath).to.not.be.ok; - expect(packageRunOptions.buildPath).to.not.be.ok; - expect(packageRunOptions.environment).to.not.be.ok; - expect(packageRunOptions.platform).to.not.be.ok; - expect(packageRunOptions.arch).to.not.be.ok; - - expect(forgeMakeOptions.dir).to.equal(task.project.root); - expect(forgeMakeOptions.outDir).to.equal('output'); - expect(forgeMakeOptions.skipPackage).to.be.ok; - expect(forgeMakeOptions.overrideTargets).to.not.be.ok; - expect(forgeMakeOptions).to.not.have.property('platform'); - expect(forgeMakeOptions).to.not.have.property('arch'); - }); - }); - - it('should assemble, package and make when build path is specified', () => { - let options = { - buildPath: 'ember-build', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['package', 'forgeMake']); - - expect(packageRunOptions.buildPath).to.equal('ember-build'); - }); - }); - - it('should package and make when assemble path is specified', () => { - let options = { - projectPath: 'project', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['package', 'forgeMake']); - - expect(packageRunOptions.projectPath).to.equal('project'); - }); - }); - - it('should just make when skipPackage is specified', () => { - let options = { - projectPath: 'project', - outputPath: 'output', - skipPackage: true, - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['forgeMake']); - - expect(forgeMakeOptions.dir).to.equal(task.project.root); - expect(forgeMakeOptions.outDir).to.equal('output'); - expect(forgeMakeOptions.skipPackage).to.be.ok; - expect(forgeMakeOptions.overrideTargets).to.not.be.ok; - expect(forgeMakeOptions).to.not.have.property('platform'); - expect(forgeMakeOptions).to.not.have.property('arch'); - }); - }); - - it('should respect environment, platform, arch and targets when packaging and making', () => { - let options = { - environment: 'test', - platform: 'win32', - arch: 'ia32', - targets: 'zip', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['package', 'forgeMake']); - - expect(packageRunOptions.environment).to.equal('test'); - expect(packageRunOptions.platform).to.equal('win32'); - expect(packageRunOptions.arch).to.equal('ia32'); - - expect(forgeMakeOptions.platform).to.equal('win32'); - expect(forgeMakeOptions.arch).to.equal('ia32'); - expect(forgeMakeOptions.overrideTargets).to.deep.equal(['zip']); - }); - }); - - it('should respect platform, arch and targets when only making', () => { - let options = { - platform: 'win32', - arch: 'ia32', - targets: 'zip', - outputPath: 'output', - skipPackage: true, - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['forgeMake']); - - expect(forgeMakeOptions.platform).to.equal('win32'); - expect(forgeMakeOptions.arch).to.equal('ia32'); - expect(forgeMakeOptions.overrideTargets).to.deep.equal(['zip']); - }); - }); - - it('should handle multiple targets', () => { - let options = { - outputPath: 'output', - targets: 'zip,squirrel', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['package', 'forgeMake']); - - expect(forgeMakeOptions.overrideTargets).to.deep.equal(['zip', 'squirrel']); - }); - }); - - it('should propagate package failures', () => { - let options = { - outputPath: 'output', - }; - packageFail = true; - - expect(task.run(options)).to.be.rejected.then(() => { - expect(operations).to.deep.equal(['package']); - }); - }); - - it('should propagate forgeMake failures', () => { - let options = { - outputPath: 'output', - }; - forgeMakeFail = true; - - expect(task.run(options)).to.be.rejected; - }); -}); diff --git a/node-tests/unit/tasks/package-test.js b/node-tests/unit/tasks/package-test.js deleted file mode 100644 index 1e29ce09..00000000 --- a/node-tests/unit/tasks/package-test.js +++ /dev/null @@ -1,234 +0,0 @@ -'use strict'; - -const mockery = require('mockery'); -const { resolve, reject } = require('rsvp'); -const { clone } = require('lodash/lang'); -const CoreObject = require('core-object'); -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); - -describe('PackageTask', () => { - let oldEnv; - let useYarn; - - let operations; - - let assembleTaskOptions; - let assembleRunOptions; - let assembleFail; - - let forgePackageEnv; - let forgePackageOptions; - let forgePackageFail; - - let task; - - class MockAssembleTask extends CoreObject { - constructor(options) { - super(...arguments); - assembleTaskOptions = clone(options); - } - - run(options) { - operations.push('assemble'); - assembleRunOptions = clone(options); - - return assembleFail ? reject() : resolve(); - } - } - - function mockForgePackage(options) { - operations.push('forgePackage'); - forgePackageEnv = clone(process.env); - forgePackageOptions = clone(options); - - return forgePackageFail ? reject() : resolve(); - } - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - oldEnv = clone(process.env); - operations = []; - assembleTaskOptions = null; - assembleRunOptions = null; - assembleFail = false; - forgePackageEnv = null; - forgePackageOptions = null; - forgePackageFail = false; - - mockery.registerMock('./assemble', MockAssembleTask); - mockery.registerMock('../utils/yarn-or-npm', { - setupForgeEnv() { - process.env.NODE_INSTALLER = useYarn ? 'yarn' : 'npm'; - }, - }); - mockery.registerMock('@electron-forge/core', { api: { package: mockForgePackage } }); - - const PackageTask = require('../../../lib/tasks/package'); - task = new PackageTask({ - ui: new MockUI(), - analytics: new MockAnalytics(), - project: new MockProject(), - }); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - process.env = oldEnv; - }); - - it('should build, assemble and package when no input path is specified', () => { - let options = { - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['assemble', 'forgePackage']); - - expect(assembleTaskOptions.ui).to.equal(task.ui); - expect(assembleTaskOptions.analytics).to.equal(task.analytics); - expect(assembleTaskOptions.project).to.equal(task.project); - - expect(assembleRunOptions.outputPath).to.be.ok; - expect(assembleRunOptions.outputPath).to.not.equal('output'); // temp dir - expect(assembleRunOptions.buildPath).to.not.be.ok; - expect(assembleRunOptions.environment).to.not.be.ok; - expect(assembleRunOptions.platform).to.not.be.ok; - - expect(forgePackageOptions.dir).to.equal(assembleRunOptions.outputPath); - expect(forgePackageOptions.outDir).to.equal('output'); - expect(forgePackageOptions).to.not.have.property('platform'); - expect(forgePackageOptions).to.not.have.property('arch'); - }); - }); - - it('should assemble and package when build path is specified', () => { - let options = { - buildPath: 'ember-build', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['assemble', 'forgePackage']); - - expect(assembleRunOptions.buildPath).to.equal('ember-build'); - }); - }); - - it('should respect environment, platform and arch when assembling and packaging', () => { - let options = { - environment: 'test', - platform: 'win32', - arch: 'ia32', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['assemble', 'forgePackage']); - - expect(assembleRunOptions.environment).to.equal('test'); - expect(assembleRunOptions.platform).to.equal('win32'); - - expect(forgePackageOptions.platform).to.equal('win32'); - expect(forgePackageOptions.arch).to.equal('ia32'); - }); - }); - - it('should package already-assembled build when projectPath is specified', () => { - let options = { - projectPath: 'project', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['forgePackage']); - - expect(forgePackageOptions.dir).to.equal('project'); - expect(forgePackageOptions.outDir).to.equal('output'); - expect(forgePackageOptions).to.not.have.property('platform'); - expect(forgePackageOptions).to.not.have.property('arch'); - }); - }); - - it('should respect platform and arch when packaging', () => { - let options = { - projectPath: 'project', - platform: 'win32', - arch: 'ia32', - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(operations).to.deep.equal(['forgePackage']); - - expect(forgePackageOptions.platform).to.equal('win32'); - expect(forgePackageOptions.arch).to.equal('ia32'); - }); - }); - - it('should tell electron-forge to use yarn when appropriate', () => { - useYarn = true; - - let options = { - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(forgePackageEnv.NODE_INSTALLER).to.equal('yarn'); - }); - }); - - it('should tell electron-forge to use npm when appropriate', () => { - useYarn = false; - - let options = { - outputPath: 'output', - }; - - return task.run(options).then(() => { - expect(forgePackageEnv.NODE_INSTALLER).to.equal('npm'); - }); - }); - - it('should propagate assemble failures', () => { - let options = { - outputPath: 'output', - }; - assembleFail = true; - - expect(task.run(options)).to.be.rejected; - }); - - it('should propagate assemble failures', () => { - let options = { - outputPath: 'output', - }; - assembleFail = true; - - expect(task.run(options)).to.be.rejected.then(() => { - expect(operations).to.deep.equal(['assemble']); - }); - }); - - it('should propagate forgePackage failures', () => { - let options = { - outputPath: 'output', - }; - forgePackageFail = true; - - expect(task.run(options)).to.be.rejected; - }); -}); diff --git a/node-tests/unit/utils/test-task-mixin-test.js b/node-tests/unit/utils/test-task-mixin-test.js deleted file mode 100644 index 8bd7ed68..00000000 --- a/node-tests/unit/utils/test-task-mixin-test.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -const MockUI = require('console-ui/mock'); -const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); -const MockProject = require('../../helpers/mocks/project'); -const expect = require('../../helpers/expect'); -const Task = require('ember-cli/lib/models/task'); -const TestTaskMixin = require('../../../lib/utils/test-task-mixin'); - -class TestTask extends Task { - run(options) { - return options; - } -} - -const EETestTask = TestTask.extend(TestTaskMixin); - -describe('test task mixin', () => { - function subject(props) { - return new EETestTask(Object.assign({ - ui: new MockUI(), - analytics: new MockAnalytics(), - settings: {}, - project: new MockProject('project-with-test-config'), - }, props)); - } - - it('sets configFile in the run options (if not defined)', () => { - console.log(subject().run({})); - expect(subject().run({}).configFile).to.equal('testem-electron.js'); - }); -}); diff --git a/node-tests/unit/utils/yarn-or-npm-test.js b/node-tests/unit/utils/yarn-or-npm-test.js deleted file mode 100644 index f27e33b2..00000000 --- a/node-tests/unit/utils/yarn-or-npm-test.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; - -const tmp = require('tmp'); -const path = require('path'); -const { writeFileSync } = require('fs'); -const { clone } = require('lodash/lang'); -const mockery = require('mockery'); -const expect = require('../../helpers/expect'); - -describe('yarn-or-npm', () => { - let projectDir; - let oldEnv; - let useYarn; - - let shouldUseYarn; - let setupForgeEnv; - - before(() => { - mockery.enable({ - useCleanCache: true, - warnOnUnregistered: false, - }); - }); - - after(() => { - mockery.disable(); - }); - - beforeEach(() => { - ({ name: projectDir } = tmp.dirSync()); - oldEnv = clone(process.env); - mockery.registerMock('yarn-or-npm', { hasYarn: () => useYarn }); - ({ shouldUseYarn, setupForgeEnv } = require('../../../lib/utils/yarn-or-npm')); - }); - - afterEach(() => { - mockery.deregisterAll(); - mockery.resetCache(); - process.env = oldEnv; - }); - - function createFiles({ yarnLock, yarn } = {}) { - if (yarnLock) { - writeFileSync(path.join(projectDir, 'yarn.lock'), 'yarn!'); - } - - useYarn = Boolean(yarn); - } - - describe('shouldUseYarn', () => { - it('works when yarn.lock and yarn are both present', () => { - createFiles({ yarnLock: true, yarn: true }); - expect(shouldUseYarn(projectDir)).to.be.ok; - }); - - it('works when yarn.lock is present, but yarn is not', () => { - createFiles({ yarnLock: true }); - expect(shouldUseYarn(projectDir)).to.be.not.ok; - }); - - it('works when yarn is present, but yarn.lock is not', () => { - createFiles({ yarn: true }); - expect(shouldUseYarn(projectDir)).to.be.not.ok; - }); - }); - - describe('setupForgeEnv', () => { - it('works when yarn.lock and yarn are both present', () => { - createFiles({ yarnLock: true, yarn: true }); - setupForgeEnv(projectDir); - expect(process.env.NODE_INSTALLER).to.equal('yarn'); - }); - - it('works when yarn.lock is present, but yarn is not', () => { - createFiles({ yarnLock: true }); - setupForgeEnv(projectDir); - expect(process.env.NODE_INSTALLER).to.equal('npm'); - }); - - it('works when yarn is present, but yarn.lock is not', () => { - createFiles({ yarn: true }); - setupForgeEnv(projectDir); - expect(process.env.NODE_INSTALLER).to.equal('npm'); - }); - }); -}); diff --git a/package.json b/package.json index ec2ea77c..6c2a4107 100644 --- a/package.json +++ b/package.json @@ -42,36 +42,22 @@ "lint:hbs": "ember-template-lint .", "lint:js": "eslint .", "test": "yarn test-fast && yarn test-slow", - "test-fast": "mocha node-tests/unit/**/*.js ./node-tests/integration/**/*.js", + "test-fast": "mocha node-tests/integration/**/*.js", "test-slow": "mocha ./node-tests/acceptance/**/*.js" }, "dependencies": { - "@electron-forge/core": "^6.0.0-beta.45", - "broccoli-file-creator": "^2.1.1", - "broccoli-funnel": "^2.0.2", - "broccoli-merge-trees": "^3.0.2", - "broccoli-source": "^3.0.0", - "broccoli-string-replace": "^0.1.2", - "capture-exit": "^2.0.0", + "@electron-forge/cli": "^6.0.0-beta.45", "chalk": "^3.0.0", - "console-ui": "^2.2.3", - "core-object": "^3.1.0", + "debug": "^4.1.1", + "denodeify": "^1.2.1", "electron-protocol-serve": "^1.3.0", "ember-cli-babel": "^7.11.1", "ember-inspector": "^3.12.5", - "execa": "^3.3.0", "file-url": "^3.0.0", - "fs-extra": "^8.1.0", - "globby": "^10.0.1", - "lodash": "^4.15.0", - "quick-temp": "^0.1.5", + "ncp": "^2.0.0", "rimraf": "^3.0.0", - "rsvp": "^4.0.1", "silent-error": "^1.1.1", - "symlink-or-copy": "^1.2.0", - "tree-kill": "^1.1.0", - "tree-sync": "^2.0.0", - "yarn-or-npm": "^3.0.1" + "tree-kill": "^1.1.0" }, "devDependencies": { "@ember/optional-features": "^1.1.0", @@ -79,6 +65,7 @@ "broccoli-asset-rev": "^3.0.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", + "console-ui": "^2.2.3", "ember-auto-import": "^1.5.2", "ember-cli": "~3.14.0", "ember-cli-addon-docs": "^0.6.15", @@ -105,18 +92,19 @@ "ember-try": "^1.2.1", "eslint-plugin-ember": "^7.5.0", "eslint-plugin-node": "^10.0.0", + "execa": "^3.3.0", + "fs-extra": "^8.1.0", "loader.js": "^4.7.0", "mocha": "^6.2.2", - "mockery": "^2.1.0", "qunit-dom": "^0.9.0", "sass": "^1.23.3", "semantic-release": "^15.10.6", "sinon": "^7.5.0", "sinon-chai": "^3.3.0", - "tmp": "^0.1.0", - "walk-sync": "^2.0.2" + "tmp": "^0.1.0" }, "peerDependencies": { + "@electron-forge/core": "*", "ember-cli": "^3.0.0" }, "engines": { diff --git a/tests/unit/end-to-end-test.js b/tests/unit/end-to-end-test.js index d70c0df7..c2b839d0 100644 --- a/tests/unit/end-to-end-test.js +++ b/tests/unit/end-to-end-test.js @@ -10,8 +10,10 @@ module('ember-electron end-to-end test', function() { }); test('node modules are accessible', function(assert) { - let { fill } = requireNode('lodash/array'); - assert.deepEqual(fill([0, 0, 0], 1), [1, 1, 1]); + let sinon = requireNode('sinon'); + let stub = sinon.stub(); + stub(); + assert.ok(stub.calledOnce); }); test('local modules are accessible', function(assert) { diff --git a/yarn.lock b/yarn.lock index 2fc8020d..2fae3f00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -791,7 +791,21 @@ ora "^3.0.0" pretty-ms "^5.0.0" -"@electron-forge/core@^6.0.0-beta.45": +"@electron-forge/cli@^6.0.0-beta.45": + version "6.0.0-beta.45" + resolved "https://registry.yarnpkg.com/@electron-forge/cli/-/cli-6.0.0-beta.45.tgz#4492f2409eb403c8d30813add0663fa13f738c42" + integrity sha512-xsBvf9Dj61gsp491pwGUcU0rfSi8RiZCGPnrZUoA6USCjZLUR93guKjDX/YUd+jbGIBPfVACD92CaskPB1eSCg== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.45" + "@electron-forge/core" "6.0.0-beta.45" + colors "^1.2.0" + commander "^3.0.1" + debug "^4.1.0" + fs-extra "^8.1.0" + inquirer "^7.0.0" + semver "^6.3.0" + +"@electron-forge/core@6.0.0-beta.45": version "6.0.0-beta.45" resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-6.0.0-beta.45.tgz#bed28100464650c47aa07c94c7d4d250a70aff14" integrity sha512-wv1FnFjTTGWBLXnNkPEI9U6c8RVYXhIpOHDIn+s20L8xVaK+HxEOp3UeywT1Lb8A5Fv6kgT3LNjQCmjZHsSlMA== @@ -1967,6 +1981,13 @@ ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" + ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -1987,6 +2008,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -4550,6 +4576,13 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-spinners@^1.1.0: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" @@ -4748,6 +4781,11 @@ commander@^2.11.0, commander@^2.15.1, commander@^2.20.0, commander@^2.6.0, comma resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + comment-regex@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/comment-regex/-/comment-regex-1.0.1.tgz#e070d2c4db33231955d0979d27c918fcb6f93565" @@ -5482,6 +5520,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -6891,6 +6934,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -9032,6 +9080,25 @@ inquirer@^6, inquirer@^6.2.2, inquirer@^6.5.1: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" + integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" @@ -9210,6 +9277,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-git-url@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-git-url/-/is-git-url-1.0.0.tgz#53f684cd143285b52c3244b4e6f28253527af66b" @@ -11080,7 +11152,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@~0.0.4: +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -11112,6 +11184,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ncp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= + needle@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" @@ -13469,6 +13546,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -13588,7 +13673,7 @@ rsvp@^3.0.14, rsvp@^3.0.17, rsvp@^3.0.18, rsvp@^3.0.21, rsvp@^3.0.6, rsvp@^3.1.0 resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== -rsvp@^4.0.1, rsvp@^4.6.1, rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2, rsvp@^4.8.3, rsvp@^4.8.4, rsvp@^4.8.5: +rsvp@^4.6.1, rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2, rsvp@^4.8.3, rsvp@^4.8.4, rsvp@^4.8.5: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== @@ -14471,6 +14556,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.repeat@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" @@ -14542,6 +14636,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" From 0c13c7c3c1564d9cc578ce0f6f0396ccea476948 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Mon, 18 Nov 2019 22:52:36 -0800 Subject: [PATCH 06/24] test: Get tests working --- .../ember-electron/files/testem-electron.js | 3 +- blueprints/ember-electron/index.js | 35 +++++++++++- forge/template.js | 3 +- index.js | 14 +++++ lib/commands/base.js | 4 -- lib/commands/test.js | 42 +++++++++++--- lib/resources/shim-test-head.js | 15 +++-- lib/tasks/test-server.js | 6 -- lib/tasks/test.js | 6 -- lib/test-support/test-index.js | 2 +- lib/test-support/test-runner.js | 17 +++--- lib/utils/build-paths.js | 10 +++- lib/utils/test-task-mixin.js | 10 ---- node-tests/acceptance/end-to-end-test.js | 25 ++++----- .../fixtures/ember-build/assets/app.css | 0 node-tests/fixtures/ember-build/assets/app.js | 0 node-tests/fixtures/ember-build/index.html | 26 --------- .../fixtures/ember-test/resources/foo.txt | 1 - .../ember-test/{lib => src}/helper.js | 0 .../fixtures/ember-test/test-index-extra.js | 6 ++ .../fixtures/ember-test/test-main-extra.js | 14 ----- .../ember-electron/electron-forge-config.js | 25 --------- .../ember-electron/test-main.js | 1 - .../project-missing-main/package.json | 3 - .../ember-electron/electron-forge-config.js | 25 --------- .../project-resources/ember-electron/main.js | 1 - .../resources-darwin/platform.txt | 1 - .../resources-linux/platform.txt | 1 - .../resources-win32/platform.txt | 1 - .../ember-electron/resources-win32/win32.txt | 0 .../ember-electron/resources/platform.txt | 1 - .../ember-electron/resources/resource.txt | 0 .../fixtures/project-resources/package.json | 3 - .../ember-electron/electron-forge-config.js | 25 --------- .../project-simple/ember-electron/main.js | 1 - .../ember-electron/test-main.js | 1 - .../fixtures/project-simple/package.json | 3 - node-tests/integration/commands/build-test.js | 7 ++- .../integration/commands/electron-test.js | 11 ++-- node-tests/integration/commands/make-test.js | 23 ++++---- .../integration/commands/package-test.js | 13 +++-- node-tests/integration/commands/test-test.js | 56 +++++++++++++++++++ package.json | 1 + testem-electron.js | 2 +- tests/unit/end-to-end-test.js | 24 -------- yarn.lock | 11 +--- 46 files changed, 217 insertions(+), 262 deletions(-) delete mode 100644 lib/tasks/test-server.js delete mode 100644 lib/tasks/test.js delete mode 100644 lib/utils/test-task-mixin.js delete mode 100644 node-tests/fixtures/ember-build/assets/app.css delete mode 100644 node-tests/fixtures/ember-build/assets/app.js delete mode 100644 node-tests/fixtures/ember-build/index.html delete mode 100644 node-tests/fixtures/ember-test/resources/foo.txt rename node-tests/fixtures/ember-test/{lib => src}/helper.js (100%) create mode 100644 node-tests/fixtures/ember-test/test-index-extra.js delete mode 100644 node-tests/fixtures/ember-test/test-main-extra.js delete mode 100644 node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js delete mode 100644 node-tests/fixtures/project-missing-main/ember-electron/test-main.js delete mode 100644 node-tests/fixtures/project-missing-main/package.json delete mode 100644 node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js delete mode 100644 node-tests/fixtures/project-resources/ember-electron/main.js delete mode 100644 node-tests/fixtures/project-resources/ember-electron/resources-darwin/platform.txt delete mode 100644 node-tests/fixtures/project-resources/ember-electron/resources-linux/platform.txt delete mode 100644 node-tests/fixtures/project-resources/ember-electron/resources-win32/platform.txt delete mode 100644 node-tests/fixtures/project-resources/ember-electron/resources-win32/win32.txt delete mode 100644 node-tests/fixtures/project-resources/ember-electron/resources/platform.txt delete mode 100644 node-tests/fixtures/project-resources/ember-electron/resources/resource.txt delete mode 100644 node-tests/fixtures/project-resources/package.json delete mode 100644 node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js delete mode 100644 node-tests/fixtures/project-simple/ember-electron/main.js delete mode 100644 node-tests/fixtures/project-simple/ember-electron/test-main.js delete mode 100644 node-tests/fixtures/project-simple/package.json create mode 100644 node-tests/integration/commands/test-test.js delete mode 100644 tests/unit/end-to-end-test.js diff --git a/blueprints/ember-electron/files/testem-electron.js b/blueprints/ember-electron/files/testem-electron.js index 2bd0edce..1e3db12d 100644 --- a/blueprints/ember-electron/files/testem-electron.js +++ b/blueprints/ember-electron/files/testem-electron.js @@ -1,5 +1,6 @@ +/* eslint-env node */ module.exports = { - test_page: 'tests/index.html?hidepassed', + test_page: 'tests/index.html?hidepassed=1', disable_watching: true, launchers: { Electron: require('ember-electron/lib/test-support/test-runner'), diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index c3c3d145..9a74b593 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -1,6 +1,12 @@ const Blueprint = require('ember-cli/lib/models/blueprint'); const { api } = require('@electron-forge/core'); const chalk = require('chalk'); +const { electronProjectPath } = require('../../lib/utils/build-paths'); +const path = require('path'); +const denodeify = require('denodeify'); +const fs = require('fs'); +const readFile = denodeify(fs.readFile); +const writeFile = denodeify(fs.writeFile); module.exports = class EmberElectronBlueprint extends Blueprint { constructor(options) { @@ -13,13 +19,36 @@ module.exports = class EmberElectronBlueprint extends Blueprint { return entityName; } - async afterInstall(/* options */) { - this.ui.writeLine(chalk.green('Creating electron-forge project at `./electron`')); + async afterInstall() { + this.ui.writeLine(chalk.green(`Creating electron-forge project at './${electronProjectPath}'`)); await api.init({ - dir: 'electron', + dir: electronProjectPath, interactive: true, template: 'ember-electron/forge/template' }); + + this.ui.writeLine(chalk.green(`Updating './${electronProjectPath}/package.json'`)); + + const keysToCopy = [ + 'name', + 'version', + 'description', + 'author', + 'license' + ]; + + let packageJsonPath = path.join(electronProjectPath, 'package.json'); + let packageJson = JSON.parse(await readFile(packageJsonPath)); + + for (let key of keysToCopy) { + if (Object.keys(this.project.pkg).includes(key)) { + packageJson[key] = this.project.pkg[key]; + } + } + + // special-case productName since forge creates it, but a lot of apps don't + packageJson.productName = this.project.pkg.productName || packageJson.name; + await writeFile(packageJsonPath, JSON.stringify(packageJson, { spaces: 2 })); } }; diff --git a/forge/template.js b/forge/template.js index 0c4fce97..c3fac5c4 100644 --- a/forge/template.js +++ b/forge/template.js @@ -4,7 +4,7 @@ const readFile = denodeify(require('fs').readFile); const writeFile = denodeify(require('fs').writeFile); const rimraf = denodeify(require('rimraf')); const ncp = denodeify(require('ncp')); -const { emberBuildDir } = require('../lib/utils/build-paths'); +const { emberBuildDir, emberTestBuildDir } = require('../lib/utils/build-paths'); module.exports = { devDependencies: [ @@ -27,6 +27,7 @@ module.exports = { contents.toString(), '# Ember build', `${emberBuildDir}/`, + `${emberTestBuildDir}/`, '' ].join('\n')); } diff --git a/index.js b/index.js index d6a5f841..7feb4b81 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,6 @@ const fs = require('fs'); const path = require('path'); +const replace = require('broccoli-string-replace'); function injectScript(scriptName) { let dirname = __dirname || process.cwd(); @@ -49,4 +50,17 @@ module.exports = { } } }, + + postprocessTree(type, node) { + if (type === 'all' && process.env.EMBER_CLI_ELECTRON) { + node = replace(node, { + files: [ 'tests/index.html' ], + pattern: { + match: /src="[^"]*testem\.js"/, + replacement: 'src="http://testemserver/testem.js"', + }, + }); + } + return node; + } }; diff --git a/lib/commands/base.js b/lib/commands/base.js index e5058ab8..ca398437 100644 --- a/lib/commands/base.js +++ b/lib/commands/base.js @@ -4,8 +4,6 @@ const Command = require('ember-cli/lib/models/command'); const ElectronTask = require('../tasks/electron'); const ElectronMakeTask = require('../tasks/make'); const ElectronPackageTask = require('../tasks/package'); -const ElectronTestServerTask = require('../tasks/test-server'); -const ElectronTestTask = require('../tasks/test'); const YarnOrNpmTask = require('../tasks/yarn-or-npm'); const Win = require('ember-cli/lib/utilities/windows-admin'); const fs = require('fs'); @@ -21,8 +19,6 @@ module.exports = Command.extend({ 'Electron': ElectronTask, 'ElectronMake': ElectronMakeTask, 'ElectronPackage': ElectronPackageTask, - 'ElectronTestServer': ElectronTestServerTask, - 'ElectronTest': ElectronTestTask, 'YarnOrNpm': YarnOrNpmTask }); }, diff --git a/lib/commands/test.js b/lib/commands/test.js index b7ebd82a..63ed29c8 100644 --- a/lib/commands/test.js +++ b/lib/commands/test.js @@ -1,18 +1,41 @@ 'use strict'; -let TestCommand = require('ember-cli/lib/commands/test'); -let TestTask = require('../tasks/test'); -let TestServerTask = require('../tasks/test-server'); +const TestCommand = require('ember-cli/lib/commands/test'); +const { emberTestBuildPath } = require('../utils/build-paths'); module.exports = TestCommand.extend({ name: 'electron:test', description: 'Runs your app\'s test suite in Electron.', - init() { - this._super(...arguments); - this.tasks.TestServer = TestServerTask; - this.tasks.Test = TestTask; - }, +availableOptions: [ + { + name: 'environment', + type: String, + default: 'test', + aliases: ['e'], + description: 'Possible values are "development", "production", and "test".', + }, + { + name: 'config-file', + type: String, + default: 'testem-electron.js', + aliases: ['c', 'cf'] + }, + { name: 'server', type: Boolean, default: false, aliases: ['s'] }, + { name: 'filter', type: String, aliases: ['f'], description: 'A string to filter tests to run' }, + { name: 'module', type: String, aliases: ['m'], description: 'The name of a test module to run' }, + { name: 'watcher', type: String, default: 'events', aliases: ['w'] }, + { + name: 'reporter', + type: String, + aliases: ['r'], + description: 'Test reporter to use [tap|dot|xunit] (default: tap)', + }, + { name: 'silent', type: Boolean, default: false, description: 'Suppress any output except for the test report' }, + { name: 'testem-debug', type: String, description: 'File to write a debug log from testem' }, + { name: 'test-page', type: String, description: 'Test page to invoke' }, + { name: 'query', type: String, description: 'A query string to append to the test page URL.' }, + ], rmTmp() { if (process.platform === 'win32') { @@ -26,8 +49,9 @@ module.exports = TestCommand.extend({ return this._super(...arguments); }, - run() { + run(commandOptions) { process.env.EMBER_CLI_ELECTRON = true; + commandOptions.outputPath = emberTestBuildPath; return this._super(...arguments); }, }); diff --git a/lib/resources/shim-test-head.js b/lib/resources/shim-test-head.js index d591415a..dd7cb64e 100644 --- a/lib/resources/shim-test-head.js +++ b/lib/resources/shim-test-head.js @@ -1,12 +1,11 @@ // -// This allows testem to extract the ID of this run so it can communicate with -// the testem server (the query param is added to the test URL by -// test-runner.js) +// testem looks for a function called getTestemId, and if present, uses it to +// determine the ID of this test run so it can communicate back to the testem +// server -- see https://github.com/testem/testem/commit/4a51acc2fc0c3a23273fea838fd166b4691c2300. +// +// The testemId query param is added to the test URL by test-runner.js. // window.getTestemId = function() { - // FIXME: It should be safe to replace "\?" with "?" below due to context -- need to check though - // eslint-disable-next-line no-useless-escape - let match = window.location.search.match(/[\?&]testemId=([^\?&]+)/); - + let match = window.location.search.match(/[?&]testemId=([^?&]+)/); return match ? match[1] : null; -}; +}; \ No newline at end of file diff --git a/lib/tasks/test-server.js b/lib/tasks/test-server.js deleted file mode 100644 index 7bc9fa95..00000000 --- a/lib/tasks/test-server.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -const TestServerTask = require('ember-cli/lib/tasks/test-server'); -const TestTaskMixin = require('../utils/test-task-mixin'); - -module.exports = TestServerTask.extend(TestTaskMixin); diff --git a/lib/tasks/test.js b/lib/tasks/test.js deleted file mode 100644 index 9b44bc9f..00000000 --- a/lib/tasks/test.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -const TestTask = require('ember-cli/lib/tasks/test'); -const TestTaskMixin = require('../utils/test-task-mixin'); - -module.exports = TestTask.extend(TestTaskMixin); diff --git a/lib/test-support/test-index.js b/lib/test-support/test-index.js index a3e50fa4..2bfffddd 100644 --- a/lib/test-support/test-index.js +++ b/lib/test-support/test-index.js @@ -24,7 +24,7 @@ if (process.platform === 'win32') { let emberAppDir = resolve(dirname(indexPath), '..'); let relPath = relative(emberAppDir, indexPath); -const emberAppLocation = `serve://dist/${relPath}${indexQuery}`; +let emberAppLocation = `serve://dist/${relPath}${indexQuery}`; if (typeof protocol.registerSchemesAsPrivileged === 'function') { protocol.registerSchemesAsPrivileged([{ diff --git a/lib/test-support/test-runner.js b/lib/test-support/test-runner.js index 34024ce3..b2c3352c 100644 --- a/lib/test-support/test-runner.js +++ b/lib/test-support/test-runner.js @@ -26,17 +26,17 @@ module.exports = { }; async function main() { - let path = require('path'); - let url = require('url'); - let fileUrl = require('file-url'); - let treeKill = require('tree-kill'); + const path = require('path'); + const url = require('url'); + const fileUrl = require('file-url'); + const treeKill = require('tree-kill'); const { api } = require('@electron-forge/core'); + const { electronProjectPath } = require('ember-electron/lib/utils/build-paths'); - let [, , buildDir, testemUrl, testPageUrl, id] = process.argv; + let [, , emberAppDir, testemUrl, testPageUrl, id] = process.argv; // The testPageUrl points to the testem server, so we need to turn it into a // file URL and add the testem ID to the query params. - let emberAppDir = path.join(buildDir, 'ember'); let { pathname: testPagePath, query: testPageQuery, @@ -44,6 +44,7 @@ async function main() { let indexPath = path.resolve(emberAppDir, path.join.apply(null, testPagePath.split('/'))); let indexObj = url.parse(fileUrl(indexPath)); indexObj.query = testPageQuery; + // Set this so the script in shim-test-head.js can expose it to testem indexObj.query.testemId = id; let testUrl = url.format(indexObj); // On windows the testUrl argv is truncated before the first '&' by the time @@ -55,8 +56,8 @@ async function main() { // Start electron let { pid } = await api.start({ - appPath: buildDir, - dir: buildDir, + dir: path.join(process.cwd(), electronProjectPath), + appPath: './tests', args: [ '--', // needed because https://github.com/electron/electron/pull/13039 testUrl, diff --git a/lib/utils/build-paths.js b/lib/utils/build-paths.js index 7c40a419..caf2e7bb 100644 --- a/lib/utils/build-paths.js +++ b/lib/utils/build-paths.js @@ -1,11 +1,17 @@ const path = require('path'); -const electronProjectPath = 'electron'; +const electronProjectPath = 'electron-app'; + const emberBuildDir = 'ember-dist'; const emberBuildPath = path.join(electronProjectPath, emberBuildDir); +const emberTestBuildDir = 'ember-test'; +const emberTestBuildPath = path.join(electronProjectPath, emberTestBuildDir); + module.exports = { electronProjectPath, emberBuildDir, - emberBuildPath + emberBuildPath, + emberTestBuildDir, + emberTestBuildPath }; diff --git a/lib/utils/test-task-mixin.js b/lib/utils/test-task-mixin.js deleted file mode 100644 index f9ac1314..00000000 --- a/lib/utils/test-task-mixin.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -module.exports = { - run(options, ...unexpectedArgs) { - options = options || {}; - options.configFile = options.configFile || 'testem-electron.js'; - - return this._super(options, ...unexpectedArgs); - }, -}; diff --git a/node-tests/acceptance/end-to-end-test.js b/node-tests/acceptance/end-to-end-test.js index 12f93fba..93669654 100644 --- a/node-tests/acceptance/end-to-end-test.js +++ b/node-tests/acceptance/end-to-end-test.js @@ -1,8 +1,8 @@ 'use strict'; +const { electronProjectPath } = require('../../lib/utils/build-paths'); const path = require('path'); const { - copySync, existsSync, readFileSync, readJsonSync, @@ -10,10 +10,11 @@ const { writeFileSync, writeJsonSync, } = require('fs-extra'); +const denodeify = require('denodeify'); +const ncp = denodeify(require('ncp')); const execa = require('execa'); const tmp = require('tmp'); - -const { expect } = chai; +const { expect } = require('chai'); function run(cmd, args, opts = {}) { opts.stdio = opts.stdio || 'inherit'; @@ -129,7 +130,7 @@ describe('end-to-end', function() { it('builds', () => { return ember('electron:build').then(() => { - expect(existsSync(path.join('electron-out', 'ember'))).to.be.ok; + expect(existsSync(path.join('electron-app', 'ember-dist'))).to.be.ok; }); }); @@ -150,19 +151,17 @@ describe('end-to-end', function() { it('extra checks pass', () => { let fixturePath = path.resolve(__dirname, '..', 'fixtures', 'ember-test'); - // Append our extra test content to the end of test-main.js - let testMainPath = path.join('ember-electron', 'test-main.js'); - let extraContentPath = path.join(fixturePath, 'test-main-extra.js'); + // Append our extra test content to the end of test-index.js + let testIndexPath = path.join('electron-app', 'tests', 'index.js'); + let extraContentPath = path.join(fixturePath, 'test-index-extra.js'); let content = [ - readFileSync(testMainPath), + readFileSync(testIndexPath), readFileSync(extraContentPath), ].join('\n'); - writeFileSync(path.join('ember-electron', 'test-main.js'), content); + writeFileSync(testIndexPath, content); - // Copy the lib and resources directories over - ['lib', 'resources'].forEach((dir) => { - copySync(path.join(fixturePath, dir), path.join('ember-electron', dir)); - }); + // Copy the source files over + ncp(path.join(fixturePath, 'src'), path.join(electronProjectPath, 'src')); return expect(ember('electron:test')).to.eventually.be.fulfilled; }); diff --git a/node-tests/fixtures/ember-build/assets/app.css b/node-tests/fixtures/ember-build/assets/app.css deleted file mode 100644 index e69de29b..00000000 diff --git a/node-tests/fixtures/ember-build/assets/app.js b/node-tests/fixtures/ember-build/assets/app.js deleted file mode 100644 index e69de29b..00000000 diff --git a/node-tests/fixtures/ember-build/index.html b/node-tests/fixtures/ember-build/index.html deleted file mode 100644 index 5cfbbe08..00000000 --- a/node-tests/fixtures/ember-build/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - Empty - - - - - - - - - - - - - - - - - - - - diff --git a/node-tests/fixtures/ember-test/resources/foo.txt b/node-tests/fixtures/ember-test/resources/foo.txt deleted file mode 100644 index ce013625..00000000 --- a/node-tests/fixtures/ember-test/resources/foo.txt +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/node-tests/fixtures/ember-test/lib/helper.js b/node-tests/fixtures/ember-test/src/helper.js similarity index 100% rename from node-tests/fixtures/ember-test/lib/helper.js rename to node-tests/fixtures/ember-test/src/helper.js diff --git a/node-tests/fixtures/ember-test/test-index-extra.js b/node-tests/fixtures/ember-test/test-index-extra.js new file mode 100644 index 00000000..6aa9be37 --- /dev/null +++ b/node-tests/fixtures/ember-test/test-index-extra.js @@ -0,0 +1,6 @@ +// Make sure dependencies (node_modules) are loadable +const fileUrl = require('file-url'); +fileUrl('foo.html'); +// Make sure local libraries are loadable +const helper = require('../src/helper'); +helper(); diff --git a/node-tests/fixtures/ember-test/test-main-extra.js b/node-tests/fixtures/ember-test/test-main-extra.js deleted file mode 100644 index b56920fd..00000000 --- a/node-tests/fixtures/ember-test/test-main-extra.js +++ /dev/null @@ -1,14 +0,0 @@ -let cwd = __dirname || require('path').resolve(require('path').dirname()); -// Make sure dependencies (node_modules) are copied correctly and we can -// load them -const fileUrl = require('file-url'); -fileUrl('foo.html'); -// Make sure local libraries are copied correctly and we can load them -const helper = require('./lib/helper.js'); -helper(); -// Make sure local resources are copied correctly and we can read them -const { readFileSync } = require('fs'); -let content = readFileSync(`${cwd}/resources/foo.txt`).toString().trim(); -if (content !== 'hello') { - throw new Error(`${cwd}/resources/foo.txt should be contain 'hello': ${content}`); -} diff --git a/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js b/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js deleted file mode 100644 index d72a322c..00000000 --- a/node-tests/fixtures/project-missing-main/ember-electron/electron-forge-config.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - "packagerConfig": {}, - "makers": [ - { - "name": "@electron-forge/maker-squirrel", - "config": { - "name": "ee_app" - } - }, - { - "name": "@electron-forge/maker-zip", - "platforms": [ - "darwin" - ] - }, - { - "name": "@electron-forge/maker-deb", - "config": {} - }, - { - "name": "@electron-forge/maker-rpm", - "config": {} - } - ] -}; diff --git a/node-tests/fixtures/project-missing-main/ember-electron/test-main.js b/node-tests/fixtures/project-missing-main/ember-electron/test-main.js deleted file mode 100644 index b22f964e..00000000 --- a/node-tests/fixtures/project-missing-main/ember-electron/test-main.js +++ /dev/null @@ -1 +0,0 @@ -// tests/main.js diff --git a/node-tests/fixtures/project-missing-main/package.json b/node-tests/fixtures/project-missing-main/package.json deleted file mode 100644 index 8eed2868..00000000 --- a/node-tests/fixtures/project-missing-main/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "project-simple" -} diff --git a/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js b/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js deleted file mode 100644 index d72a322c..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/electron-forge-config.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - "packagerConfig": {}, - "makers": [ - { - "name": "@electron-forge/maker-squirrel", - "config": { - "name": "ee_app" - } - }, - { - "name": "@electron-forge/maker-zip", - "platforms": [ - "darwin" - ] - }, - { - "name": "@electron-forge/maker-deb", - "config": {} - }, - { - "name": "@electron-forge/maker-rpm", - "config": {} - } - ] -}; diff --git a/node-tests/fixtures/project-resources/ember-electron/main.js b/node-tests/fixtures/project-resources/ember-electron/main.js deleted file mode 100644 index e2a87670..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/main.js +++ /dev/null @@ -1 +0,0 @@ -// main.js diff --git a/node-tests/fixtures/project-resources/ember-electron/resources-darwin/platform.txt b/node-tests/fixtures/project-resources/ember-electron/resources-darwin/platform.txt deleted file mode 100644 index 1498f270..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/resources-darwin/platform.txt +++ /dev/null @@ -1 +0,0 @@ -darwin diff --git a/node-tests/fixtures/project-resources/ember-electron/resources-linux/platform.txt b/node-tests/fixtures/project-resources/ember-electron/resources-linux/platform.txt deleted file mode 100644 index a08e1f35..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/resources-linux/platform.txt +++ /dev/null @@ -1 +0,0 @@ -linux diff --git a/node-tests/fixtures/project-resources/ember-electron/resources-win32/platform.txt b/node-tests/fixtures/project-resources/ember-electron/resources-win32/platform.txt deleted file mode 100644 index 9ba231e0..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/resources-win32/platform.txt +++ /dev/null @@ -1 +0,0 @@ -win32 diff --git a/node-tests/fixtures/project-resources/ember-electron/resources-win32/win32.txt b/node-tests/fixtures/project-resources/ember-electron/resources-win32/win32.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node-tests/fixtures/project-resources/ember-electron/resources/platform.txt b/node-tests/fixtures/project-resources/ember-electron/resources/platform.txt deleted file mode 100644 index 30e1159c..00000000 --- a/node-tests/fixtures/project-resources/ember-electron/resources/platform.txt +++ /dev/null @@ -1 +0,0 @@ -common diff --git a/node-tests/fixtures/project-resources/ember-electron/resources/resource.txt b/node-tests/fixtures/project-resources/ember-electron/resources/resource.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node-tests/fixtures/project-resources/package.json b/node-tests/fixtures/project-resources/package.json deleted file mode 100644 index 8eed2868..00000000 --- a/node-tests/fixtures/project-resources/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "project-simple" -} diff --git a/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js b/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js deleted file mode 100644 index d72a322c..00000000 --- a/node-tests/fixtures/project-simple/ember-electron/electron-forge-config.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - "packagerConfig": {}, - "makers": [ - { - "name": "@electron-forge/maker-squirrel", - "config": { - "name": "ee_app" - } - }, - { - "name": "@electron-forge/maker-zip", - "platforms": [ - "darwin" - ] - }, - { - "name": "@electron-forge/maker-deb", - "config": {} - }, - { - "name": "@electron-forge/maker-rpm", - "config": {} - } - ] -}; diff --git a/node-tests/fixtures/project-simple/ember-electron/main.js b/node-tests/fixtures/project-simple/ember-electron/main.js deleted file mode 100644 index e2a87670..00000000 --- a/node-tests/fixtures/project-simple/ember-electron/main.js +++ /dev/null @@ -1 +0,0 @@ -// main.js diff --git a/node-tests/fixtures/project-simple/ember-electron/test-main.js b/node-tests/fixtures/project-simple/ember-electron/test-main.js deleted file mode 100644 index b22f964e..00000000 --- a/node-tests/fixtures/project-simple/ember-electron/test-main.js +++ /dev/null @@ -1 +0,0 @@ -// tests/main.js diff --git a/node-tests/fixtures/project-simple/package.json b/node-tests/fixtures/project-simple/package.json deleted file mode 100644 index 8eed2868..00000000 --- a/node-tests/fixtures/project-simple/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "project-simple" -} diff --git a/node-tests/integration/commands/build-test.js b/node-tests/integration/commands/build-test.js index da600dd2..80a12903 100644 --- a/node-tests/integration/commands/build-test.js +++ b/node-tests/integration/commands/build-test.js @@ -6,6 +6,7 @@ const MockProject = require('ember-cli/tests/helpers/mock-project'); const { expect } = require('chai'); const EmberBuildCommand = require('ember-cli/lib/commands/build'); const BuildCommand = require('../../../lib/commands/build'); +const path = require('path'); const sinon = require('sinon'); describe('electron:build command', function() { @@ -39,12 +40,12 @@ describe('electron:build command', function() { it('sets the default for outputPath', async function() { await expect(command.validateAndRun([])).to.be.fulfilled; expect(baseRunStub).to.be.calledOnce; - expect(baseRunStub.firstCall.args[0].outputPath).to.equal('electron/ember-dist'); + expect(baseRunStub.firstCall.args[0].outputPath).to.equal(path.join('electron-app', 'ember-dist')); }); it('it forwards options', async function() { await expect(command.validateAndRun([ - '--output-path', '/tmp/foo', + '--output-path', 'some-dir', '--environment', 'testing', '--watch', '--watcher', 'polling', @@ -52,7 +53,7 @@ describe('electron:build command', function() { ])).to.be.fulfilled; expect(baseRunStub).to.be.calledOnce; expect(baseRunStub.firstCall.args[0]).to.deep.equal({ - outputPath: '/tmp/foo', + outputPath: path.resolve('some-dir'), environment: 'testing', watch: true, watcher: 'polling', diff --git a/node-tests/integration/commands/electron-test.js b/node-tests/integration/commands/electron-test.js index 81145658..5337d124 100755 --- a/node-tests/integration/commands/electron-test.js +++ b/node-tests/integration/commands/electron-test.js @@ -17,7 +17,10 @@ const rimraf = require('rimraf'); const sinon = require('sinon'); class MockWatcher extends EventEmitter { - then = sinon.stub().callsFake((resolve) => resolve()) + constructor() { + super(...arguments); + this.then = sinon.stub().callsFake((resolve) => resolve()); + } } describe('electron command', function() { @@ -95,7 +98,7 @@ describe('electron command', function() { it('passes the correct path to electron-forge', async function() { await expect(command.validateAndRun([])).to.be.fulfilled; expect(api.start).to.be.calledOnce; - expect(api.start.firstCall.args[0].dir).to.equal(path.resolve('electron')); + expect(api.start.firstCall.args[0].dir).to.equal(path.resolve('electron-app')); }) it('sets the build output path and environment', async function() { @@ -111,7 +114,7 @@ describe('electron command', function() { await expect(command.validateAndRun([ '--environment', 'testing' ])).to.be.fulfilled; - expect(outputPath).to.equal('electron/ember-dist'); + expect(outputPath).to.equal(path.join('electron-app', 'ember-dist')); expect(environment).to.equal('testing'); }); @@ -132,7 +135,7 @@ describe('electron command', function() { }); it('errors if the electron project directory is not present', async function() { - rimraf.sync('electron'); + rimraf.sync('electron-app'); await expect(command.validateAndRun([])).to.be.rejected; }); }); diff --git a/node-tests/integration/commands/make-test.js b/node-tests/integration/commands/make-test.js index 4f6131e0..3e9a1ffb 100644 --- a/node-tests/integration/commands/make-test.js +++ b/node-tests/integration/commands/make-test.js @@ -10,6 +10,7 @@ const MakeCommand = require('../../../lib/commands/make'); const MakeTask = require('../../../lib/tasks/make'); const { api } = require('@electron-forge/core'); const rimraf = require('rimraf'); +const path = require('path'); const sinon = require('sinon'); describe('electron:make command', function() { @@ -37,10 +38,10 @@ describe('electron:make command', function() { it('works', async function() { await expect(command.validateAndRun([])).to.be.fulfilled; expect(buildTaskStub).to.be.calledOnce; - expect(buildTaskStub.firstCall.args[0].outputPath).to.equal('electron/ember-dist'); + expect(buildTaskStub.firstCall.args[0].outputPath).to.equal(path.join('electron-app', 'ember-dist')); expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out', skipPackage: false }); @@ -70,7 +71,7 @@ describe('electron:make command', function() { expect(buildTaskStub).to.not.be.called; expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out', skipPackage: false }); @@ -81,7 +82,7 @@ describe('electron:make command', function() { expect(buildTaskStub).to.not.be.called; expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out', skipPackage: true }); @@ -92,7 +93,7 @@ describe('electron:make command', function() { expect(buildTaskStub).to.not.be.called; expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out', skipPackage: true }); @@ -102,12 +103,12 @@ describe('electron:make command', function() { await expect(command.validateAndRun([ '--platform', 'linux', '--arch', 'ia32', - '--output-path', '/tmp/foo' + '--output-path', 'some-dir' ])).to.be.fulfilled; expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', - outDir: '/tmp/foo', + dir: 'electron-app', + outDir: path.resolve('some-dir'), platform: 'linux', arch: 'ia32', skipPackage: false @@ -118,7 +119,7 @@ describe('electron:make command', function() { await expect(command.validateAndRun([ '--targets', 'zip' ])).to.be.fulfilled; expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out', skipPackage: false, overrideTargets: [ 'zip' ] @@ -129,7 +130,7 @@ describe('electron:make command', function() { await expect(command.validateAndRun([ '--targets', 'zip,dmg,deb' ])).to.be.fulfilled; expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out', skipPackage: false, overrideTargets: [ 'zip', 'dmg', 'deb' ] @@ -137,7 +138,7 @@ describe('electron:make command', function() { }); it('errors if the electron project directory is not present', async function() { - rimraf.sync('electron'); + rimraf.sync('electron-app'); await expect(command.validateAndRun([])).to.be.rejected; }); }); diff --git a/node-tests/integration/commands/package-test.js b/node-tests/integration/commands/package-test.js index 5f5e8e77..30ee91fa 100644 --- a/node-tests/integration/commands/package-test.js +++ b/node-tests/integration/commands/package-test.js @@ -9,6 +9,7 @@ const BuildTask = require('ember-cli/lib/tasks/build'); const PackageCommand = require('../../../lib/commands/package'); const PackageTask = require('../../../lib/tasks/package'); const { api } = require('@electron-forge/core'); +const path = require('path'); const rimraf = require('rimraf'); const sinon = require('sinon'); @@ -37,10 +38,10 @@ describe('electron:package command', function() { it('works', async function() { await expect(command.validateAndRun([])).to.be.fulfilled; expect(buildTaskStub).to.be.calledOnce; - expect(buildTaskStub.firstCall.args[0].outputPath).to.equal('electron/ember-dist'); + expect(buildTaskStub.firstCall.args[0].outputPath).to.equal(path.join('electron-app', 'ember-dist')); expect(api.package).to.be.calledOnce; expect(api.package.firstCall.args[0]).to.deep.equal({ - dir: 'electron', + dir: 'electron-app', outDir: 'electron-out' }); expect(api.package.firstCall).to.be.calledAfter(buildTaskStub.firstCall); @@ -68,19 +69,19 @@ describe('electron:package command', function() { await expect(command.validateAndRun([ '--platform', 'linux', '--arch', 'ia32', - '--output-path', '/tmp/foo' + '--output-path', 'some-dir' ])).to.be.fulfilled; expect(api.package).to.be.calledOnce; expect(api.package.firstCall.args[0]).to.deep.equal({ - dir: 'electron', - outDir: '/tmp/foo', + dir: 'electron-app', + outDir: path.resolve('some-dir'), platform: 'linux', arch: 'ia32' }); }); it('errors if the electron project directory is not present', async function() { - rimraf.sync('electron'); + rimraf.sync('electron-app'); await expect(command.validateAndRun([])).to.be.rejected; }); }); diff --git a/node-tests/integration/commands/test-test.js b/node-tests/integration/commands/test-test.js new file mode 100644 index 00000000..055dfd04 --- /dev/null +++ b/node-tests/integration/commands/test-test.js @@ -0,0 +1,56 @@ +'use strict'; + +const MockUI = require('console-ui/mock'); +const MockAnalytics = require('ember-cli/tests/helpers/mock-analytics'); +const MockProject = require('ember-cli/tests/helpers/mock-project'); +const { expect } = require('chai'); +const EmberTestCommand = require('ember-cli/lib/commands/test'); +const TestCommand = require('../../../lib/commands/test'); +const path = require('path'); +const sinon = require('sinon'); + +describe('electron:test command', function() { + let baseRunStub; + let command; + + beforeEach(function() { + baseRunStub = sinon.stub(EmberTestCommand.prototype, 'run').resolves(); + command = new TestCommand({ + ui: new MockUI(), + analytics: new MockAnalytics(), + settings: {}, + project: new MockProject(), + tasks: {}, + }); + }); + + it('calls the test command with EMBER_CLI_ELECTRON set', async function() { + let envVal; + baseRunStub.resetBehavior(); + baseRunStub.callsFake(() => { + envVal = process.env.EMBER_CLI_ELECTRON; + return Promise.resolve(); + }); + + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(baseRunStub).to.be.calledOnce; + expect(envVal).to.be.ok; + }); + + it('sets the default for outputPath and configFile', async function() { + await expect(command.validateAndRun([])).to.be.fulfilled; + expect(baseRunStub).to.be.calledOnce; + expect(baseRunStub.firstCall.args[0].outputPath).to.equal(path.join('electron-app', 'ember-test')); + expect(baseRunStub.firstCall.args[0].configFile).to.equal('testem-electron.js'); + }); + + it('it forwards options', async function() { + await expect(command.validateAndRun([ + '--environment', 'testing', + '-s' + ])).to.be.fulfilled; + expect(baseRunStub).to.be.calledOnce; + expect(baseRunStub.firstCall.args[0].environment).to.equal('testing'); + expect(baseRunStub.firstCall.args[0].server).to.be.true; + }); +}); diff --git a/package.json b/package.json index 6c2a4107..4a4df9ae 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ }, "dependencies": { "@electron-forge/cli": "^6.0.0-beta.45", + "broccoli-string-replace": "^0.1.2", "chalk": "^3.0.0", "debug": "^4.1.1", "denodeify": "^1.2.1", diff --git a/testem-electron.js b/testem-electron.js index c8a339d4..2c43f313 100644 --- a/testem-electron.js +++ b/testem-electron.js @@ -1,6 +1,6 @@ /* eslint-env node */ module.exports = { - test_page: 'tests/index.html?hidepassed', + test_page: 'tests/index.html?hidepassed=1', disable_watching: true, launchers: { Electron: require('./lib/test-support/test-runner'), diff --git a/tests/unit/end-to-end-test.js b/tests/unit/end-to-end-test.js deleted file mode 100644 index c2b839d0..00000000 --- a/tests/unit/end-to-end-test.js +++ /dev/null @@ -1,24 +0,0 @@ -import Ember from 'ember'; -import { module, test } from 'qunit'; - -const { ENV } = Ember; - -module('ember-electron end-to-end test', function() { - test('ember is available', function(assert) { - assert.ok(Ember); - assert.ok(ENV); - }); - - test('node modules are accessible', function(assert) { - let sinon = requireNode('sinon'); - let stub = sinon.stub(); - stub(); - assert.ok(stub.calledOnce); - }); - - test('local modules are accessible', function(assert) { - // ../../ because we are running out of ember/tests/index.html - let helper = requireNode('../../ember-electron/lib/helper.js'); - assert.equal(helper(), 'helper'); - }); -}); diff --git a/yarn.lock b/yarn.lock index 2fae3f00..eeac4184 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5099,7 +5099,7 @@ core-object@^2.0.0: dependencies: chalk "^1.1.3" -core-object@^3.1.0, core-object@^3.1.5: +core-object@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9" integrity sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg== @@ -8346,7 +8346,7 @@ globalthis@^1.0.0: function-bind "^1.1.1" object-keys "^1.0.12" -globby@^10.0.0, globby@^10.0.1: +globby@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== @@ -10441,7 +10441,7 @@ lodash@^3.10.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: +lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -11084,11 +11084,6 @@ mock-require@^2.0.1: dependencies: caller-id "^0.1.0" -mockery@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mockery/-/mockery-2.1.0.tgz#5b0aef1ff564f0f8139445e165536c7909713470" - integrity sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA== - modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" From d40a30a02bc8ed4c46e6ccf631bd74359a2e5bf3 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Tue, 19 Nov 2019 13:44:55 -0800 Subject: [PATCH 07/24] feat: Enable live reload server Switch for the home-grown reload logic to using Ember's live reload server, which works more reliably and also supports hot reload of CSS --- index.js | 12 -- lib/commands/electron.js | 75 ++++++++++- lib/tasks/electron.js | 14 +- .../integration/commands/electron-test.js | 58 +++++++++ package.json | 3 +- vendor/electron/reload.js | 120 ------------------ vendor/install-extensions.js | 63 +++++++++ yarn.lock | 2 +- 8 files changed, 211 insertions(+), 136 deletions(-) delete mode 100644 vendor/electron/reload.js create mode 100644 vendor/install-extensions.js diff --git a/index.js b/index.js index 7feb4b81..c8ccf526 100644 --- a/index.js +++ b/index.js @@ -13,18 +13,6 @@ function injectScript(scriptName) { module.exports = { name: require('./package').name, - included(app) { - this._super.included.apply(this, arguments); - - if (!process.env.EMBER_CLI_ELECTRON) { - return; - } - - if (app.env === 'development') { - app.import('vendor/electron/reload.js'); - } - }, - includedCommands() { return { 'electron': require('./lib/commands/electron'), diff --git a/lib/commands/electron.js b/lib/commands/electron.js index ab1e3493..8b5d9db3 100644 --- a/lib/commands/electron.js +++ b/lib/commands/electron.js @@ -1,6 +1,7 @@ 'use strict'; const BaseCommand = require('./base'); +const { getPortPromise } = require('portfinder'); module.exports = BaseCommand.extend({ name: 'electron', @@ -14,17 +15,89 @@ module.exports = BaseCommand.extend({ default: 'development', aliases: ['e', { dev: 'development' }, { prod: 'production' }], description: 'Possible values are "development", "production", and "test".', - } + }, + { name: 'live-reload', type: Boolean, default: true, aliases: ['lr'] }, + { name: 'live-reload-host', type: String, default: 'localhost', aliases: ['lrh'] }, + { name: 'live-reload-port', type: Number, aliases: ['lrp'], description: 'Defaults to random available port' }, + { name: 'live-reload-prefix', type: String, default: '_lr', aliases: ['lrprefix'], description: 'Default to _lr' }, ], async run(commandOptions) { await this.prepareRun(); + await this.setupLiveReload(commandOptions); + + // Parse out the extra arguments to be passed as command-line args directly + // to the electron app let separatorIndex = process.argv.indexOf('---'); if (separatorIndex !== -1) { commandOptions.electronArgs = process.argv.slice(separatorIndex + 1); } return await this.runTask('Electron', commandOptions); + }, + + async setupLiveReload(commandOptions) { + // + // The live reload server is tied closely enough to the app server that it's + // much easier to run them both rather than try to run the live reload + // server on its own. So we set them up to run on the same port, ignoring + // the app's default port, since the user never has to know/see the port as + // it's only used for live reload. + // + // Unfortunately we can't set the ports to 0 and let the underlying server + // find an open port because of how the live reloading works. + // ember-cli-inject-live-reload uses a contentFor() hook during the build to + // insert a script tag into index.html that loads a bootstrap script from + // the app server that, when run, determines the actual live reload script + // URL and loads it via a script tag (and it starts listening on the + // websocket for reload messages). + // + // ember-cli-inject-live-reload uses a relative URL for the bootstrap script + // which only works if index.html was loaded from the app server. Since we + // load it from the filesystem, we have to use an absolute URL, which means + // we need to know the port of the app server. Because of how the various + // builder/watcher/server pieces work, we have to start the build before the + // app server is up and running, so if we let the app server determine its + // own port and then read it back, it would be too late to inject into the + // build. So we have to generate the port ourselves, and then use it to tell + // ember-cli-inject-live-reload where to load the bootstrap script from. + // + // The bootstrap script also assumes it's loaded over HTTP, and uses + // window.location and various other pieces of info to generate the URL to + // the live reload script. So we also need to tell ember-cli-inject-live-reload + // the URL for the live reload script. + // + let { + liveReload, + liveReloadHost: host, + liveReloadPort: port, + liveReloadPrefix: prefix + } = commandOptions; + + if (liveReload) { + // generate a port if we weren't given one + port = port || await getPortPromise(); + + Object.assign(commandOptions, { + // Set the app server port to the same as the live reload port. This + // simplifies things, and the user will never see the app port, so it's + // arbitrary anyway + port, + liveReloadPort: port, + // This tells ember-cli-inject-live-reload to base URL pointing to the + // app server so it can generate a URL to the bootstrap script + liveReloadBaseUrl: `http://${host}:${port}/`, + // This causes ember-cli-inject-live-reload to generate the bootstrap + // script such that it points to the live reload script with the various + // params needed for it to work properly + liveReloadJsUrl: `http://${host}:${port}/${prefix}/livereload.js?port=${port}&host=${host}&path=${prefix}/livereload` + }); + } else { + // If live reload is disabled, set the app server port to 0 so it will use + // a random available port, and we don't risk the command failing because + // whatever default port is configured is already in use + commandOptions.port = 0; + } } }); diff --git a/lib/tasks/electron.js b/lib/tasks/electron.js index a8f21d4b..54182293 100644 --- a/lib/tasks/electron.js +++ b/lib/tasks/electron.js @@ -4,6 +4,7 @@ const chalk = require('chalk'); const Task = require('ember-cli/lib/models/task'); const Watcher = require('ember-cli/lib/models/watcher'); const Builder = require('ember-cli/lib/models/builder'); +const ExpressServer = require('ember-cli/lib/tasks/server/express-server'); const path = require('path'); const { electronProjectPath, emberBuildPath } = require('../utils/build-paths'); const debug = require('debug')('ember-electron:electron-task'); @@ -31,7 +32,18 @@ class ElectronTask extends Task { options, }); - await watcher; + let expressServer = new ExpressServer({ + ui: this.ui, + project: this.project, + analytics: this.analytics, + watcher, + serverRoot: './server' + }); + + await Promise.all([ + expressServer.start(options), + watcher + ]); await this._runElectron(builder, options); } diff --git a/node-tests/integration/commands/electron-test.js b/node-tests/integration/commands/electron-test.js index 5337d124..ceaf14be 100755 --- a/node-tests/integration/commands/electron-test.js +++ b/node-tests/integration/commands/electron-test.js @@ -11,6 +11,7 @@ const { api } = require('@electron-forge/core'); const { expect } = require('chai'); const Builder = require('ember-cli/lib/models/builder'); const Watcher = require('ember-cli/lib/models/watcher'); +const ExpressServer = require('ember-cli/lib/tasks/server/express-server'); const EventEmitter = require('events'); const path = require('path'); const rimraf = require('rimraf'); @@ -37,6 +38,7 @@ describe('electron command', function() { let createBuilderStub; let cleanupBuilderStub; let createWatcherStub; + let startServerStub; let emitExitStub; @@ -55,6 +57,7 @@ describe('electron command', function() { sinon.stub(Builder.prototype, 'build').resolves(); cleanupBuilderStub = sinon.stub(Builder.prototype, 'cleanup').resolves(); createWatcherStub = sinon.stub(Watcher.prototype, 'constructWatcher').returns(mockBrocWatcher); + startServerStub = sinon.stub(ExpressServer.prototype, 'start').resolves(); sinon.stub(api, 'start').callsFake(() => { // make electron process exit right after start promise resolves setTimeout(() => { @@ -89,8 +92,10 @@ describe('electron command', function() { expect(createBuilderStub).to.be.calledOnce; expect(createWatcherStub).to.be.calledOnce; expect(mockBrocWatcher.then).to.be.calledOnce; + expect(startServerStub).to.be.calledOnce; expect(api.start).to.be.calledOnce; expect(api.start.firstCall).be.calledAfter(mockBrocWatcher.then.firstCall); + expect(api.start.firstCall).be.calledAfter(startServerStub.firstCall); expect(cleanupBuilderStub).be.calledOnce; expect(cleanupBuilderStub.firstCall).be.calledAfter(emitExitStub.firstCall); }); @@ -118,6 +123,59 @@ describe('electron command', function() { expect(environment).to.equal('testing'); }); + it('sets up the live reload server with defaults', async function() { + // default watcher varies from system to system depending on if watchman is + // installed, so we'll set it so it's deterministic in the test + await expect(command.validateAndRun([ '--watcher', 'node' ])).to.be.fulfilled; + expect(startServerStub).to.be.calledOnce; + + let port = startServerStub.firstCall.args[0].liveReloadPort; + expect(port).to.be.ok; + + expect(startServerStub.firstCall.args[0]).to.deep.equal({ + watcher: 'node', + environment: 'development', + liveReload: true, + liveReloadHost: 'localhost', + liveReloadPort: port, + liveReloadPrefix: '_lr', + port, + liveReloadBaseUrl: `http://localhost:${port}/`, + liveReloadJsUrl: `http://localhost:${port}/_lr/livereload.js?port=${port}&host=localhost&path=_lr/livereload` + }); + }); + + it('sets up the live reload server with custom options', async function() { + // default watcher varies from system to system depending on if watchman is + // installed, so we'll set it so it's deterministic in the test + await expect(command.validateAndRun([ + '--watcher', 'node', + '--live-reload-host', '127.0.0.1', + '--live-reload-port', '12345', + '--live-reload-prefix', 'lrlrlr' + ])).to.be.fulfilled; + expect(startServerStub).to.be.calledOnce; + expect(startServerStub.firstCall.args[0]).to.deep.equal({ + watcher: 'node', + environment: 'development', + liveReload: true, + liveReloadHost: '127.0.0.1', + liveReloadPort: 12345, + liveReloadPrefix: 'lrlrlr', + port: 12345, + liveReloadBaseUrl: `http://127.0.0.1:12345/`, + liveReloadJsUrl: `http://127.0.0.1:12345/lrlrlr/livereload.js?port=12345&host=127.0.0.1&path=lrlrlr/livereload` + }); + }); + + it('can disable live reload', async function() { + await expect(command.validateAndRun(['--live-reload', 'false' ])).to.be.fulfilled; + expect(startServerStub).to.be.calledOnce; + + expect(startServerStub.firstCall.args[0].liveReload).to.not.be.ok; + expect(startServerStub.firstCall.args[0].port).to.equal(0); + }); + it('should pass an empty args through if no --- is found', async function() { process.argv = [ 'node', 'ember', 'electron' ]; diff --git a/package.json b/package.json index 4a4df9ae..decffdd5 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "ember-inspector": "^3.12.5", "file-url": "^3.0.0", "ncp": "^2.0.0", + "portfinder": "^1.0.25", "rimraf": "^3.0.0", "silent-error": "^1.1.1", "tree-kill": "^1.1.0" @@ -106,7 +107,7 @@ }, "peerDependencies": { "@electron-forge/core": "*", - "ember-cli": "^3.0.0" + "ember-cli": "^3.4.0" }, "engines": { "node": "8.* || >= 10.*" diff --git a/vendor/electron/reload.js b/vendor/electron/reload.js deleted file mode 100644 index 04ae3d05..00000000 --- a/vendor/electron/reload.js +++ /dev/null @@ -1,120 +0,0 @@ -function setupLivereload() { - const process = window ? window.processNode : null; - - // Exit immediately if we're not running in Electron - if (!window.ELECTRON || (process && process.env && process.env.DO_NOT_SETUP_LIVERELOAD)) { - return; - } - - // Reload the page when anything in `dist` changes - let fs; - let path; - let devtron; - - try { - fs = window.requireNode('fs'); - path = window.requireNode('path'); - } catch(e) { - console.warn('ember-electron tried to require fs and path to enable live-reload features, but failed.'); - console.warn('Automatic reloading is therefore disabled.'); - console.warn(e); - - return; - } - - /** - * @private - * Watch a given directory for changes and reload - * on change - * - * @param sub directory - */ - function watch(...sub) { - const dirname = path.join(__dirname, ...sub); - - fs.watch(dirname, { recursive: true }, () => window.location.reload()); - } - - /** - * @private - * Install Devtron in the current window. - */ - function installDevtron() { - try { - devtron = window.requireNode('devtron'); - - if (devtron) { - devtron.install(); - } - } catch(e) { - // no-op - } - } - - /** - * @private - * Install Ember-Inspector in the current window. - */ - function installEmberInspector() { - let location; - - try { - const eiLocation = window.requireNode.resolve('ember-inspector'); - location = path.join(eiLocation, 'dist', 'chrome'); - } catch(error) { - location = path.join(__dirname, '..', 'node_modules', 'ember-inspector', 'dist', 'chrome'); - } - - fs.lstat(location, (err, results) => { - if (err) { - console.warn('Error loading Ember Inspector', err); - - return; - } - - if (results && results.isDirectory && results.isDirectory()) { - const { BrowserWindow } = window.requireNode('electron').remote; - const added = BrowserWindow.getDevToolsExtensions - && BrowserWindow.getDevToolsExtensions().hasOwnProperty('Ember Inspector'); - - try { - if (!added) { - BrowserWindow.addDevToolsExtension(location); - } - } catch(err) { - // no-op - } - } - }); - } - - document.addEventListener('DOMContentLoaded', (/* e */) => { - const dirname = __dirname || ((process && (process || {}).cwd) ? process.cwd() : null); - - if (!dirname) { - return; - } - - fs.stat(dirname, (err/* , stat */) => { - if (!err) { - watch(); - - // On linux, the recursive `watch` command is not fully supported: - // https://nodejs.org/docs/latest/api/fs.html#fs_fs_watch_filename_options_listener - // - // However, the recursive option WILL watch direct children of the - // given directory. So, this hack just manually sets up watches on - // the expected subdirs -- that is, `assets` and `tests`. - if (process && process.platform === 'linux') { - watch('assets'); - watch('tests'); - } - } - }); - - installDevtron(); - installEmberInspector(); - }); -} - -setupLivereload(); diff --git a/vendor/install-extensions.js b/vendor/install-extensions.js new file mode 100644 index 00000000..71c3d3a3 --- /dev/null +++ b/vendor/install-extensions.js @@ -0,0 +1,63 @@ +function installExtensions() { + try { + window.requireNode('fs'); + } catch (e) { + console.warn('ember-electron is unable to require node modules, possibly because nodeIntegration is not enabled.'); + console.warn('This prevents the installation of the Ember Inspector and Devtron extensions. Error:'); + console.warn(e); + return; + } + + /** + * Install Devtron in the current window. + */ + function installDevtron() { + try { + let devtron = window.requireNode('devtron'); + + if (devtron) { + devtron.install(); + } + } catch(e) { + console.error('Error installing devtron', e); + } + } + + /** + * Install Ember-Inspector in the current window. + */ + function installEmberInspector() { + let path = window.requireNode('path'); + let fs = window.requireNode('fs'); + + let eiLocation = window.requireNode.resolve('ember-inspector'); + let location = path.join(eiLocation, 'dist', 'chrome'); + + fs.lstat(location, function(err, results) { + if (err) { + console.warn('Error loading Ember Inspector', err); + return; + } + + if (results && results.isDirectory && results.isDirectory()) { + let { BrowserWindow } = window.requireNode('electron').remote; + let added = BrowserWindow.getDevToolsExtensions + && BrowserWindow.getDevToolsExtensions().hasOwnProperty('Ember Inspector'); + + if (!added) { + try { + BrowserWindow.addDevToolsExtension(location); + } catch(err) { + console.warn('Error enabling Ember Inspector', err) + return; + } + } + } + }); + } + + installDevtron(); + installEmberInspector(); +} + +document.addEventListener('DOMContentLoaded', installExtension); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index eeac4184..18cfc445 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12477,7 +12477,7 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -portfinder@^1.0.23: +portfinder@^1.0.23, portfinder@^1.0.25: version "1.0.25" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== From a58c6802df848bf01c70c25f6d545ee27898702c Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Tue, 19 Nov 2019 17:49:45 -0800 Subject: [PATCH 08/24] chore: Improve blueprint messaging If a file/directory exists at the same path where we want to create the electron forge project when running the blueprint, error gracefully. If we see that the `ember-electron directory exists, print out a message about upgrading from v2. --- blueprints/ember-electron/index.js | 26 ++++++++++++++++++++++++-- lib/commands/base.js | 5 ++--- lib/utils/documentation-urls.js | 7 +++++++ 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 lib/utils/documentation-urls.js diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index 9a74b593..737d3dd9 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -7,6 +7,8 @@ const denodeify = require('denodeify'); const fs = require('fs'); const readFile = denodeify(fs.readFile); const writeFile = denodeify(fs.writeFile); +const SilentError = require('silent-error'); +const { upgradeUrl } = require('../../lib/utils/documentation-urls'); module.exports = class EmberElectronBlueprint extends Blueprint { constructor(options) { @@ -19,7 +21,27 @@ module.exports = class EmberElectronBlueprint extends Blueprint { return entityName; } - async afterInstall() { + beforeInstall() { + if (fs.existsSync(electronProjectPath)) { + return Promise.reject( + new SilentError([ + `Cannot create electron-forge project at './${electronProjectPath}'`, + `because a file or directory already exists there. Please remove/rename`, + `it and run the blueprint again: 'ember generate ember-electron'.` + ].join(' ')) + ); + } + + if (fs.existsSync('ember-electron')) { + this.ui.writeLine(chalk.yellow([ + `\n'ember-electron' directory detected -- this looks like an ember-electron`, + `v2 project. Setting up an updated project will not be destructive, but you`, + `should read the upgrade documentation at ${upgradeUrl}.\n` + ].join(' '))); + } + } + + async afterInstall() { this.ui.writeLine(chalk.green(`Creating electron-forge project at './${electronProjectPath}'`)); await api.init({ @@ -49,6 +71,6 @@ module.exports = class EmberElectronBlueprint extends Blueprint { // special-case productName since forge creates it, but a lot of apps don't packageJson.productName = this.project.pkg.productName || packageJson.name; - await writeFile(packageJsonPath, JSON.stringify(packageJson, { spaces: 2 })); + await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2)); } }; diff --git a/lib/commands/base.js b/lib/commands/base.js index ca398437..3b1744cf 100644 --- a/lib/commands/base.js +++ b/lib/commands/base.js @@ -8,10 +8,9 @@ const YarnOrNpmTask = require('../tasks/yarn-or-npm'); const Win = require('ember-cli/lib/utilities/windows-admin'); const fs = require('fs'); const { electronProjectPath } = require('../utils/build-paths'); +const { upgradeUrl } = require('../utils/documentation-urls'); const SilentError = require('silent-error'); -const upgradeDocumentationUrl = 'https://adopted-ember-addons.github.io/ember-electron/docs/guides/upgrade'; - module.exports = Command.extend({ init() { this._super(...arguments); @@ -31,7 +30,7 @@ module.exports = Command.extend({ `contain an electron-forge project. It should have been generated by`, `ember-electron's blueprint when you first ran 'ember install`, `ember-electron'. If you are upgrading from ember-electron v2, you`, - `should read the upgrade documentation at ${upgradeDocumentationUrl}.`, + `should read the upgrade documentation at ${upgradeUrl}.`, ].join(' ')) ); } diff --git a/lib/utils/documentation-urls.js b/lib/utils/documentation-urls.js new file mode 100644 index 00000000..b8b3b4f5 --- /dev/null +++ b/lib/utils/documentation-urls.js @@ -0,0 +1,7 @@ +const baseUrl = 'https://adopted-ember-addons.github.io/ember-electron/docs/'; +const guidesUrl = `${baseUrl}guides/`; +const upgradeUrl = `${guidesUrl}upgrade`; + +module.exports = { + upgradeUrl +}; \ No newline at end of file From 70e3dda2bcc34dd23df2fc2a88676806afd3281a Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Tue, 19 Nov 2019 18:29:47 -0800 Subject: [PATCH 09/24] chore: Update .travis.yml from blueprint Instead of overwriting .travis.yml with a blueprint file (which whacks any customizations the user has made, and requires us to keep our blueprint .travis.yml in sync with the default version as well as worrying about yarn vs npm), use js-yaml to inject the xvfb bits. --- blueprints/ember-electron/files/.travis.yml | 31 ---------- blueprints/ember-electron/index.js | 65 ++++++++++++++++++++- lib/utils/documentation-urls.js | 4 +- package.json | 3 +- yarn.lock | 16 ++++- 5 files changed, 83 insertions(+), 36 deletions(-) delete mode 100644 blueprints/ember-electron/files/.travis.yml diff --git a/blueprints/ember-electron/files/.travis.yml b/blueprints/ember-electron/files/.travis.yml deleted file mode 100644 index 5d781404..00000000 --- a/blueprints/ember-electron/files/.travis.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -language: node_js -node_js: - - "6" - -sudo: false - -addons: - apt: - packages: - - xvfb - -cache: - directories: - - $HOME/.npm - - $HOME/.cache # includes bowers cache - - node_modules - -before_install: - - "npm config set spin false" - - "npm install -g grunt-cli" - -install: - - npm install -g bower - - npm install - - bower install - - export DISPLAY=':99.0' - - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & - -script: - - npm test diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index 737d3dd9..032a25ec 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -7,8 +7,12 @@ const denodeify = require('denodeify'); const fs = require('fs'); const readFile = denodeify(fs.readFile); const writeFile = denodeify(fs.writeFile); +const YAWN = require('yawn-yaml/cjs'); const SilentError = require('silent-error'); -const { upgradeUrl } = require('../../lib/utils/documentation-urls'); +const { + upgradeUrl, + ciUrl +} = require('../../lib/utils/documentation-urls'); module.exports = class EmberElectronBlueprint extends Blueprint { constructor(options) { @@ -41,7 +45,64 @@ module.exports = class EmberElectronBlueprint extends Blueprint { } } - async afterInstall() { + async afterInstall() { + await this.updateTravisYml(); + await this.createElectronProject(); + } + + async updateTravisYml() { + if (!fs.existsSync('.travis.yml')) { + this.ui.writeLine(chalk.yellow([ + `\nNo .travis.yml found to update. For info on manually updating your CI'`, + `'config read ${ciUrl}'\n` + ].join(' '))); + return; + } + + this.ui.writeLine(chalk.green('Updating .travis.yml')); + + try { + let contents = await readFile('.travis.yml'); + let yawn = new YAWN(contents.toString()); + + let doc = yawn.json; + doc.addons = doc.addons || {}; + doc.addons.apt = doc.addons.apt || {}; + doc.addons.apt.packages = doc.addons.apt.packages || []; + if (!doc.addons.apt.packages.includes('xvfb')) { + doc.addons.apt.packages.push('xvfb'); + } + + // yawn doesn't do well with modifying multiple parts of the document at + // once, so let's push the first change so it can resolve it against its AST + // and then read the data back and perform the second operation. + yawn.json = doc; + doc = yawn.json; + + doc.install = doc.install || []; + if (!doc.install.find(entry => entry.toLowerCase().includes('xvfb'))) { + // also, yawn quotes strings with certain characters in them even though + // it isn't necessary, and it makes it harder to read. So we add + // placeholders that won't be quoted and replace them in the output + // string + doc.install.push('__export_display__'); + doc.install.push('__xvfb__'); + } + + yawn.json = doc; + let output = yawn.yaml; + output = output.replace('__export_display__', `export DISPLAY=':99.0'`); + output = output.replace('__xvfb__', 'Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &'); + await writeFile('.travis.yml', output); + } catch (e) { + this.ui.writeLine(chalk.red([ + `Failed to update .travis.yml. For info on manually updating your CI`, + `config read ${ciUrl}'.\nError:\n${e}` + ].join(' '))); + } + } + + async createElectronProject() { this.ui.writeLine(chalk.green(`Creating electron-forge project at './${electronProjectPath}'`)); await api.init({ diff --git a/lib/utils/documentation-urls.js b/lib/utils/documentation-urls.js index b8b3b4f5..35ec60a8 100644 --- a/lib/utils/documentation-urls.js +++ b/lib/utils/documentation-urls.js @@ -1,7 +1,9 @@ const baseUrl = 'https://adopted-ember-addons.github.io/ember-electron/docs/'; const guidesUrl = `${baseUrl}guides/`; const upgradeUrl = `${guidesUrl}upgrade`; +const ciUrl = `${guidesUrl}ci`; module.exports = { - upgradeUrl + upgradeUrl, + ciUrl }; \ No newline at end of file diff --git a/package.json b/package.json index decffdd5..58fa5c3d 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "portfinder": "^1.0.25", "rimraf": "^3.0.0", "silent-error": "^1.1.1", - "tree-kill": "^1.1.0" + "tree-kill": "^1.1.0", + "yawn-yaml": "^1.4.0" }, "devDependencies": { "@ember/optional-features": "^1.1.0", diff --git a/yarn.lock b/yarn.lock index 18cfc445..b34946db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9585,7 +9585,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.13.1, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.0: +js-yaml@3.13.1, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.0, js-yaml@^3.4.2: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -16101,6 +16101,11 @@ yam@^1.0.0: fs-extra "^4.0.2" lodash.merge "^4.6.0" +yaml-js@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/yaml-js/-/yaml-js-0.1.5.tgz#a01369010b3558d8aaed2394615dfd0780fd8fac" + integrity sha1-oBNpAQs1WNiq7SOUYV39B4D9j6w= + yaml@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" @@ -16207,6 +16212,15 @@ yarn-or-npm@^3.0.1: cross-spawn "^6.0.5" pkg-dir "^4.2.0" +yawn-yaml@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/yawn-yaml/-/yawn-yaml-1.4.0.tgz#46513da9d017f411680731968d48322004974a91" + integrity sha512-aSnPQaFrr+YsHqD+D5PAAdDIQcCtbYOJ7xFDIJDlNCxw3dEgE0wltLJgdHhe4QSLoTVhwRBe6ZJIt1x0oDsRqg== + dependencies: + js-yaml "^3.4.2" + lodash "^4.17.11" + yaml-js "^0.1.3" + yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 2c4f18ecedcda94caaf001a0d63cf61502ca5efe Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Tue, 19 Nov 2019 23:50:42 -0800 Subject: [PATCH 10/24] fix: Fix linting Use the blueprint to update .eslintignore to exclude the electron project's node_modules and our various built output directories --- blueprints/ember-electron/index.js | 20 +++++++++++++++++++- node-tests/acceptance/end-to-end-test.js | 4 ++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index 032a25ec..f2cef28b 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -1,7 +1,11 @@ const Blueprint = require('ember-cli/lib/models/blueprint'); const { api } = require('@electron-forge/core'); const chalk = require('chalk'); -const { electronProjectPath } = require('../../lib/utils/build-paths'); +const { + electronProjectPath, + emberBuildDir, + emberTestBuildDir +} = require('../../lib/utils/build-paths'); const path = require('path'); const denodeify = require('denodeify'); const fs = require('fs'); @@ -47,6 +51,7 @@ module.exports = class EmberElectronBlueprint extends Blueprint { async afterInstall() { await this.updateTravisYml(); + await this.updateEslintIgnore(); await this.createElectronProject(); } @@ -102,6 +107,19 @@ module.exports = class EmberElectronBlueprint extends Blueprint { } } + async updateEslintIgnore() { + const toAppend = [ + '', + '# ember-electron', + `/${electronProjectPath}/node_modules/`, + `/${electronProjectPath}/out/`, + `/${electronProjectPath}/${emberBuildDir}/`, + `/${electronProjectPath}/${emberTestBuildDir}/` + ].join('\n'); + + await this.insertIntoFile('.eslintignore', toAppend); + } + async createElectronProject() { this.ui.writeLine(chalk.green(`Creating electron-forge project at './${electronProjectPath}'`)); diff --git a/node-tests/acceptance/end-to-end-test.js b/node-tests/acceptance/end-to-end-test.js index 93669654..082c6f01 100644 --- a/node-tests/acceptance/end-to-end-test.js +++ b/node-tests/acceptance/end-to-end-test.js @@ -148,6 +148,10 @@ describe('end-to-end', function() { }); }); + it('lints', async function() { + await expect(run('./node_modules/.bin/eslint', [ '.' ])).to.be.fulfilled; + }); + it('extra checks pass', () => { let fixturePath = path.resolve(__dirname, '..', 'fixtures', 'ember-test'); From 69e7511a9445485d3df7885e502488a3fa0ddc5d Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Wed, 20 Nov 2019 19:12:34 -0800 Subject: [PATCH 11/24] feat: Build for production by default when making/packaging `ember electron:make` and `ember electron:package` are much more similar to `ember electron:deploy` (which defaults to building for production) than they are to `ember electron:build` (which defaults to building for development). So this switches the default environment for those commands to `production`. Making or packaging is much more similar to --- lib/commands/make.js | 2 +- lib/commands/package.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/commands/make.js b/lib/commands/make.js index b15282dd..ef84f5a2 100644 --- a/lib/commands/make.js +++ b/lib/commands/make.js @@ -8,7 +8,7 @@ module.exports = BaseCommand.extend({ description: 'Packages your Ember + Electron app into shippable installers', availableOptions: [ - { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, + { name: 'environment', type: String, default: 'production', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, { name: 'platform', type: String, aliases: ['p'] }, { name: 'arch', type: String, aliases: ['a'] }, { name: 'targets', type: String, aliases: ['t'], description: 'Override the build targets specified in your electron-forge config.' }, diff --git a/lib/commands/package.js b/lib/commands/package.js index a03436c3..49589db5 100644 --- a/lib/commands/package.js +++ b/lib/commands/package.js @@ -8,7 +8,7 @@ module.exports = BaseCommand.extend({ description: 'Builds & packages your Electron app', availableOptions: [ - { name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, + { name: 'environment', type: String, default: 'production', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }], description: 'Possible values are "development", "production", and "test".' }, { name: 'platform', type: String, aliases: ['p'] }, { name: 'arch', type: String, aliases: ['a'] }, { name: 'skip-build', type: Boolean, aliases: ['s'], description: 'Skip the Ember build step and use an already-build from the output path.' }, From ec8983d89df957ee0365248579573e4a41cc7c54 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Wed, 20 Nov 2019 19:26:33 -0800 Subject: [PATCH 12/24] docs: Documentation! --- blueprints/ember-electron/index.js | 4 +- lib/commands/base.js | 4 +- lib/utils/documentation-urls.js | 4 +- tests/dummy/app/router.js | 12 +- tests/dummy/app/templates/docs.hbs | 10 +- .../app/templates/docs/faq/common-issues.md | 9 -- .../dummy/app/templates/docs/faq/security.md | 17 +++ .../dummy/app/templates/docs/faq/structure.md | 42 ------ .../docs/faq/test-runner-deprecation.md | 39 ------ .../templates/docs/guides/build-pipeline.md | 54 -------- tests/dummy/app/templates/docs/guides/ci.md | 16 +-- .../templates/docs/guides/configuration.md | 76 ----------- .../docs/guides/development-and-debugging.md | 68 ++++++++++ .../app/templates/docs/guides/installation.md | 13 +- .../app/templates/docs/guides/packaging.md | 11 -- .../app/templates/docs/guides/structure.md | 65 +++++++++ .../app/templates/docs/guides/testing.md | 12 -- .../app/templates/docs/guides/upgrade.md | 35 ----- .../app/templates/docs/guides/upgrading.md | 126 ++++++++++++++++++ .../dummy/app/templates/docs/guides/usage.md | 62 ++++++--- tests/dummy/app/templates/docs/index.md | 25 ++-- 21 files changed, 348 insertions(+), 356 deletions(-) delete mode 100644 tests/dummy/app/templates/docs/faq/structure.md delete mode 100644 tests/dummy/app/templates/docs/faq/test-runner-deprecation.md delete mode 100644 tests/dummy/app/templates/docs/guides/build-pipeline.md delete mode 100644 tests/dummy/app/templates/docs/guides/configuration.md create mode 100644 tests/dummy/app/templates/docs/guides/development-and-debugging.md delete mode 100644 tests/dummy/app/templates/docs/guides/packaging.md create mode 100644 tests/dummy/app/templates/docs/guides/structure.md delete mode 100644 tests/dummy/app/templates/docs/guides/testing.md delete mode 100644 tests/dummy/app/templates/docs/guides/upgrade.md create mode 100644 tests/dummy/app/templates/docs/guides/upgrading.md diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index f2cef28b..a6e8078f 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -14,7 +14,7 @@ const writeFile = denodeify(fs.writeFile); const YAWN = require('yawn-yaml/cjs'); const SilentError = require('silent-error'); const { - upgradeUrl, + upgradingUrl, ciUrl } = require('../../lib/utils/documentation-urls'); @@ -44,7 +44,7 @@ module.exports = class EmberElectronBlueprint extends Blueprint { this.ui.writeLine(chalk.yellow([ `\n'ember-electron' directory detected -- this looks like an ember-electron`, `v2 project. Setting up an updated project will not be destructive, but you`, - `should read the upgrade documentation at ${upgradeUrl}.\n` + `should read the upgrading documentation at ${upgradingUrl}.\n` ].join(' '))); } } diff --git a/lib/commands/base.js b/lib/commands/base.js index 3b1744cf..75663b27 100644 --- a/lib/commands/base.js +++ b/lib/commands/base.js @@ -8,7 +8,7 @@ const YarnOrNpmTask = require('../tasks/yarn-or-npm'); const Win = require('ember-cli/lib/utilities/windows-admin'); const fs = require('fs'); const { electronProjectPath } = require('../utils/build-paths'); -const { upgradeUrl } = require('../utils/documentation-urls'); +const { upgradingUrl } = require('../utils/documentation-urls'); const SilentError = require('silent-error'); module.exports = Command.extend({ @@ -30,7 +30,7 @@ module.exports = Command.extend({ `contain an electron-forge project. It should have been generated by`, `ember-electron's blueprint when you first ran 'ember install`, `ember-electron'. If you are upgrading from ember-electron v2, you`, - `should read the upgrade documentation at ${upgradeUrl}.`, + `should read the upgrading documentation at ${upgradingUrl}.`, ].join(' ')) ); } diff --git a/lib/utils/documentation-urls.js b/lib/utils/documentation-urls.js index 35ec60a8..5163c93b 100644 --- a/lib/utils/documentation-urls.js +++ b/lib/utils/documentation-urls.js @@ -1,9 +1,9 @@ const baseUrl = 'https://adopted-ember-addons.github.io/ember-electron/docs/'; const guidesUrl = `${baseUrl}guides/`; -const upgradeUrl = `${guidesUrl}upgrade`; +const upgradingUrl = `${guidesUrl}upgrading`; const ciUrl = `${guidesUrl}ci`; module.exports = { - upgradeUrl, + upgradingUrl, ciUrl }; \ No newline at end of file diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index 10a78562..78a7f5d8 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -11,18 +11,16 @@ Router.map(function() { this.route('faq', function() { this.route('common-issues'); this.route('security'); - this.route('structure'); - this.route('test-runner-deprecation'); }); this.route('guides', function() { - this.route('build-pipeline'); this.route('ci'); - this.route('configuration'); + this.route('common-issues'); + this.route('development-and-debugging'); this.route('installation'); - this.route('packaging'); - this.route('testing'); - this.route('upgrade'); + this.route('security'); + this.route('structure'); + this.route('upgrading'); this.route('usage'); }); }); diff --git a/tests/dummy/app/templates/docs.hbs b/tests/dummy/app/templates/docs.hbs index f5e4bfdd..20c441f4 100644 --- a/tests/dummy/app/templates/docs.hbs +++ b/tests/dummy/app/templates/docs.hbs @@ -5,18 +5,14 @@ {{nav.section "Guides"}} {{nav.item "Installation" "docs.guides.installation"}} {{nav.item "Usage" "docs.guides.usage"}} - {{nav.item "Configuration" "docs.guides.configuration"}} - {{nav.item "Packaging" "docs.guides.packaging"}} - {{nav.item "Testing" "docs.guides.testing"}} - {{nav.item "Upgrade" "docs.guides.upgrade"}} + {{nav.item "Structure" "docs.guides.structure"}} + {{nav.item "Upgrading" "docs.guides.upgrading"}} + {{nav.item "Development and Debugging" "docs.guides.development-and-debugging"}} {{nav.item "CI" "docs.guides.ci"}} - {{nav.item "Build Pipeline" "docs.guides.build-pipeline"}} {{nav.section "FAQ"}} {{nav.item "Common Issues" "docs.faq.common-issues"}} {{nav.item "Security" "docs.faq.security"}} - {{nav.item "Structure" "docs.faq.structure"}} - {{nav.item "Test Runner Deprecation" "docs.faq.test-runner-deprecation"}} {{/viewer.nav}} {{#viewer.main}} diff --git a/tests/dummy/app/templates/docs/faq/common-issues.md b/tests/dummy/app/templates/docs/faq/common-issues.md index 6ce9120d..229ea822 100644 --- a/tests/dummy/app/templates/docs/faq/common-issues.md +++ b/tests/dummy/app/templates/docs/faq/common-issues.md @@ -44,12 +44,3 @@ In your ember-electron/main.js file, find the `BrowserWindow` that is being used const myWindow = new BrowserWindow({}); myWindow.webContents.openDevTools(); ``` - - -## `ember-welcome-page` does not show in production mode - -If you try out Ember-Electron for the first time on a brand new Ember project generated with `ember init`, you may find that the welcome page you see when running `ember electron` does no longer show up when you run an application packaged with `ember electron:package`. - -While this might be a little confusing, it is the default behavior of the `ember-welcome-page` addon, which simply removes itself when run with the environment flag `--env=production`, which is our default while packaging applications. - -Since you probably don't need that page anyway, you can safely follow it's own instructions and remove it from your `package.json` as well as the template tag `{{welcome-page}}` from your `app/templates/application.hbs`. diff --git a/tests/dummy/app/templates/docs/faq/security.md b/tests/dummy/app/templates/docs/faq/security.md index 9b1bc8a6..7db70684 100644 --- a/tests/dummy/app/templates/docs/faq/security.md +++ b/tests/dummy/app/templates/docs/faq/security.md @@ -43,3 +43,20 @@ and the MDN [Web security landing page](https://developer.mozilla.org/en-US/docs e.g. `Refused to load...because it violates the following Content Security Policy directive:...` * If there are no problems then you are done. Otherwise, you'll need to examine the code in violation and either make it compliant or adjust the policy to allow it. + +## Why do I see "Electron Security Warning (Insecure Resources)" when running tests? + +To aid users in keeping their applications secure, Electron warns about any scripts +or other resources loaded out of `index.html` without encryption (using `http:` +rather than `https:`). When running tests, the renderer process has to load some +resources from the local express server to allow it to communicate with testem, which +manages the test run, and this cannot easily be done over `https:`. The expected list +of URLs is: + +``` +- http://testemserver/testem.js +- http://testemserver/testem/connection.html +``` + +We leave the security warnings enabled when running tests so you can see if it's warning +about any other insecure content, besides the URLs listed about, loaded during tests. \ No newline at end of file diff --git a/tests/dummy/app/templates/docs/faq/structure.md b/tests/dummy/app/templates/docs/faq/structure.md deleted file mode 100644 index e265cf17..00000000 --- a/tests/dummy/app/templates/docs/faq/structure.md +++ /dev/null @@ -1,42 +0,0 @@ -# File structure used and created by Ember-Electron - -The `ember-electron` folder created at the root of your project by `ember-electron`'s blueprint looks like this: - -``` - ember-electron - ├── .electron-forge - ├── main.js - ├── resources - ├── resources-darwin - ├── resources-linux - └── resources-win32 -``` - -The `resources` directories are meant for non-code resources, such as images, json files, etc. The `resources-` directories exist so you can supply resources that will only be included on certain platforms, augmenting or replacing your platform-independent resources in `resources`. When the `ember electron` assembles your Electron project, it will look like this: - -``` - ember-electron - ├── package.json - ├── ember - │ ├── - ├── ember-electron - │ ├── electron-forge-config.js - │ ├── main.js - │ ├── resources - │ ├── > - │ ├── > - ├── node_modules - ├── -``` - -- `package.json` is copied from the root of your project; -- `ember` contains the built Ember app; and -- `ember-electron` contains - - `resources`, assembled as described; and - - everything else in your ember-electron dir - -If you want to see your assembled project to poke around or debug, you can run `ember electron:assemble` to generate it. Once generated, you can run it using electron forge: - -``` -$ ./node_modules/.bin/forge -p electron-out/project start -``` diff --git a/tests/dummy/app/templates/docs/faq/test-runner-deprecation.md b/tests/dummy/app/templates/docs/faq/test-runner-deprecation.md deleted file mode 100644 index 0a1adad2..00000000 --- a/tests/dummy/app/templates/docs/faq/test-runner-deprecation.md +++ /dev/null @@ -1,39 +0,0 @@ -# This test-runner.js is deprecated... - -## TL;DR - -This deprecation is related to a change to the `ember electron:test` support -scripts to make them less brittle. TL;DR is you should rerun the blueprint to -regenerate `ember-electron/test-main.js` and `testem-electron.js`. If you have -made any custom changes to `ember-electron/test-main.js`, or if you just want to -know more about that change, keep reading... - -## Details - -`ember-electron/test-main.js` is generated by `ember-electron`'s blueprint, and -previously contained all of the test-mode main process code. `test-runner.js` -lives in the `ember-electron` and is run via `testem-electron.js`. It has to -pass a very specific set of command-line options when launching Electron that -`test-main.js` parses to be able to set up communication with `testem`. - -These two scripts are pretty tightly coupled together, but previously one lived -in `ember-electron` and one was generated in the consuming app via the -blueprint. So anytime we want to make an update affecting how those scripts -communicate, it would require apps to rerun the blueprint after updating -`ember-electron`, which is not a smooth upgrade experience. - -So we moved all the code that was in `ember-electron/test-main.js` into -`ember-electron` and modified the `ember-electron/test-main.js` in the blueprint -to do nothing but `require()` the script out of `ember-electron`. That puts all -of the tightly-coupled code in the `ember-electron` addon and frees us up to -make updates without requiring apps to rerun the blueprint. - -If you need to change the contents of `test-main.js` for some reason, there are -two options. Ideally you could just put your code in `test-main.js` before or -after the `require()` statement. If you need to modify some of the code that now -lives in the `require()`'d script in `ember-electron`, you'll need to copy the -code out of it back into your `ember-electron/test-main.js`, replacing the -`require()` statement, and then monitoring releases of `ember-electron` for -changes to `test-main.js`. We realize this is cumbersome, but we hope nobody -really has to do it, so if you find yourself doing so, please find is in the -\#electron channel in Ember Community Slack and tell us about your use case. diff --git a/tests/dummy/app/templates/docs/guides/build-pipeline.md b/tests/dummy/app/templates/docs/guides/build-pipeline.md deleted file mode 100644 index 45eb0b13..00000000 --- a/tests/dummy/app/templates/docs/guides/build-pipeline.md +++ /dev/null @@ -1,54 +0,0 @@ -# Build pipeline -Ember-Electron's build pipeline consists of the following steps: - -* Build Ember app (with Electron shimming/instrumentation) -* Assemble Electron project (compatible with [electron-forge](https://github.com/electron-userland/electron-forge)) -* Package application binaries -* Make application installers - -Each of these steps is broken into an Ember command and through its command-line -options can be configured to run all preceding pipeline steps, or to skip some -of the first steps, and use the output of a previous (partial) build. For -example the following would produce equivalent output: - -```bash -$ ember electron:build --output-path electron-out/ember -$ ember electron:assemble --build-path electron-out/ember --output-path electron-out/project -``` - -and - -```bash -$ ember electron:assemble --output-path electron-out/project -``` - -The only difference is that the latter command will build the Ember app into a -temp directory and delete it when it's done. - -A similar example of equivalent commands that illustrates the entire pipeline -is: - -```bash -$ ember electron:build --output-path electron-out/ember -$ ember electron:assemble --build-path electron-out/ember --output-path electron-out/project -$ ember electron:package --project-path electron-out/project -$ ember electron:make --skip-package -``` - -The `electron:make` command doesn't match the rest of them because -`electron-forge` handles reusing packaged output itself, so the semantics are a -little different. - -Each build step will also accept an input path valid for any of the previous -steps. For example, the following are equivalent: - -```bash -$ ember electron:build --output-path electron-out/ember -$ ember electron:make --build-path electron-out/ember -``` - -and - -```bash -$ ember electron:make -``` diff --git a/tests/dummy/app/templates/docs/guides/ci.md b/tests/dummy/app/templates/docs/guides/ci.md index 18f5924a..1a9cae33 100644 --- a/tests/dummy/app/templates/docs/guides/ci.md +++ b/tests/dummy/app/templates/docs/guides/ci.md @@ -4,28 +4,18 @@ You can test your application using Electron with the `ember electron:test` comm * Install [`xvfb`](https://en.wikipedia.org/wiki/Xvfb). It's a virtual framebuffer, implementing the X11 display server protocol - it performs all graphical operations in memory without showing any screen output, which is exactly what we need. A [Jenkins addon is available](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin). * Create a virtual `xvfb` screen and export an environment variable called `DISPLAY` that points to it. Electron will automatically pick it up. - * Install a recent C++ compiler (e.g. gcc). This is to enable the CI server to build native modules for Node.js. - * Finally, ensure that `npm test` actually calls `ember electron:test`. You can configure what command `npm test executes` by changing it in your `package.json`. + * Finally, ensure that `npm test` or `yarn test` actually calls `ember electron:test`. You can configure what command `npm test executes` by changing it in your `package.json`. -On Travis, the configuration should look like this: +When you first install `ember-electron`, the blueprint will update your .travis.yml, but if it fails or you need to do it manually for some reason, your configuration should include the following: ```yaml -env: - - CXX=g++-4.8 - addons: apt: - sources: - - ubuntu-toolchain-r-test packages: - xvfb - - g++-4.8 - -before_install: - - "npm config set spin false" install: - - npm install + - - export DISPLAY=':99.0' - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & ``` diff --git a/tests/dummy/app/templates/docs/guides/configuration.md b/tests/dummy/app/templates/docs/guides/configuration.md deleted file mode 100644 index e006f46e..00000000 --- a/tests/dummy/app/templates/docs/guides/configuration.md +++ /dev/null @@ -1,76 +0,0 @@ -# Configuration - -## electron-forge / electron-packager - -You can pass options to the packager by either putting configuration into `ember-electron/electron-forge-config.js`, or by passing a command line parameter to the `ember electron:package` command. In the case that an option is defined both on the command line and in the `electron-forge-config.js`, the command line option will be used. - -> :warning: The `electron-forge-config.js` file will be copied to a temporary folder during compilation, meaning that relative paths will be different. If you require resources from other folders (for intsance using a `require('../myscript')`, please do keep in mind that `electron-forge-config.js`. - -* `--app-copyright` - *String* The human-readable copyright line for the app. Maps to the LegalCopyright metadata property on Windows, and NSHumanReadableCopyright on OS X. -* `--app-version` - *String* The release version of the application. Maps to the `ProductVersion` metadata property on Windows, and `CFBundleShortVersionString` on OS X. -* `--arch` - *String* Allowed values: *ia32, x64, all* - -* `--asar` - *Boolean* Whether to package the application's source code into an archive, using [Electron's archive format](https://github.com/atom/asar). Reasons why you may want to enable this feature are described in [an application packaging tutorial in Electron's documentation](http://electron.atom.io/docs/v0.36.0/tutorial/application-packaging/). Defaults to `false`. - - - `ordering` - *String*: A path to an ordering file for packing files. An explanation can be found on the [Atom issue tracker](https://github.com/atom/atom/issues/10163). - - `unpack` - *String*: A [glob expression](https://github.com/isaacs/minimatch#features), when specified, unpacks the file with matching names to the `app.asar.unpacked` directory. - - `unpackDir` - *String*: Unpacks the dir to the `app.asar.unpacked` directory whose names exactly or pattern match this string. The `asar.unpackDir` is relative to `dir`. - - For example, `asar-unpack-dir=sub_dir` will unpack the directory `//sub_dir`. - -* `--build-version` - *String* The build version of the application. Maps to the `FileVersion` metadata property on Windows, and `CFBundleVersion` on OS X. -* `--copy-dev-modules` - *Boolean* Copy dependency node modules from local dev node_modules instead of installing them. - -* `--defer-symlinks` - *Boolean* Whether symlinks should be dereferenced during copying (defaults to true) -* `--download` - *Object* If present, passes custom options to [`electron-download`](https://www.npmjs.com/package/electron-download) -(see the link for more detailed option descriptions and the defaults). - - - `cache` *String*: The directory where prebuilt, pre-packaged Electron downloads are cached. - - `mirror` *String*: The URL to override the default Electron download location. - - `strictSSL` *Boolean*: Whether SSL certificates are required to be valid when downloading Electron. - -* `--dir` - *String* The source directory - -* `--icon` - *String* Currently you must look for conversion tools in order to supply an icon in the format required by the platform. If the file extension is omitted, it is auto-completed to the correct extension based on the platform. - - - OS X: `.icns` - - Windows: `.ico` ([See below](#building-windows-apps-from-non-windows-platforms) for details on non-Windows platforms) - - Linux: this option is not required, as the dock/window list icon is set via [the icon option in the BrowserWindow contructor](http://electron.atom.io/docs/v0.30.0/api/browser-window/#new-browserwindow-options). Setting the icon in the file manager is not currently supported. - -* `--ignore` - *RegExp* A pattern which specifies which files to ignore when copying files to create the package(s). Take note that Ember Electron creates a temp folder containing `electron.js`, `package.json`, and Ember Cli's `dist` output folder. Glob patterns will not work. -* `--name` - *String* The application name. -* `--out` - *String* The directory where electron builds are saved. Defaults to `electron-builds/`. -* `--overwrite` - *Boolean* Whether to replace an already existing output directory for a given platform (`true`) or skip recreating it (`false`). Defaults to `false`. -* `--platform` - *String* Target platform for build outputs. Allowed values: *linux, win32, darwin, mas, all* -* `--prune` - *Boolean* Runs [`npm prune --production`](https://docs.npmjs.com/cli/prune) before starting to package the app. -* `--version` - *String* Electron version (without the 'v') - for example, [`0.33.9`](https://github.com/atom/electron/releases/tag/v0.33.9), see [Electron releases](https://github.com/atom/electron/releases) for valid versions - - -### Used for macOS builds only - -* `--app-bundle-id` - *String* The bundle identifier to use in the application's plist -* `--app-category-type` - *String* The application category type, as shown in the Finder via *View -> Arrange by Application Category* when viewing the Applications directory. For example, `app-category-type=public.app-category.developer-tools` will set the application category to *Developer Tools*. Valid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8). -* `--extend-info` - *String* Filename of a plist file; the contents are added to the app's plist. Entries in `extend-info` override entries in the base plist file supplied by electron-prebuilt, but are overridden by other explicit arguments such as `app-version` or `app-bundle-id`. -* `--extra-resource` - *String* Filename of a file to be copied directly into the app's Contents/Resources directory. -* `--helper-bundle-id` - *String* The bundle identifier to use in the application helper's plist. -* `--osx-sign` - *Object* If present, signs OS X target apps when the host platform is OS X and XCode is installed. When the value is true, pass default configuration to the signing module. The configuration values listed below can be customized when the value is an Object. See [electron-osx-sign](https://www.npmjs.com/package/electron-osx-sign#opts) for more detailed option descriptions and the defaults. - - - `identity` - *String*: The identity used when signing the package via codesign. - - `entitlements` - *String*: The path to the 'parent' entitlements. - - `entitlements-inherit` - *String*: The path to the 'child' entitlements. -* `--protocol` - *Array of strings* The URL protocol scheme(s) to associate the app with. For example, specifying `myapp` would cause URLs such as `myapp://path` to be opened with the app. Maps to the `CFBundleURLSchemes` metadata property. This option requires a corresponding `protocol-name` option to be specified. -* `--protocol-name` - *Strings* The descriptive name of the URL protocol scheme(s) specified via the `protocol` option. Maps to the `CFBundleURLName` metadata property. - - -### Used for Windows builds only - -**Note:** Windows builds on non-Windows platforms require [Wine](https://www.winehq.org/) to be available on your PATH before the build/package step is executed. - -* `--win32metadata` - *Object* Object hash of application metadata to embed into the executable (Windows only): - - - `CompanyName` - *String* - - `LegalCopyright` - *String* - - `FileDescription` - *String* - - `OriginalFilename` - *String* - - `ProductName` - *String* - - `InternalName` - *String* diff --git a/tests/dummy/app/templates/docs/guides/development-and-debugging.md b/tests/dummy/app/templates/docs/guides/development-and-debugging.md new file mode 100644 index 00000000..6f6fd7d6 --- /dev/null +++ b/tests/dummy/app/templates/docs/guides/development-and-debugging.md @@ -0,0 +1,68 @@ +# Development and Debugging + +## require() and requireNode() + +TL;DR is to use `requireNode()` instead of `require()` when requiring node modules from your Ember application. + +Ember defines its own global `require` function for requiring transpiled Ember modules from the application bundle, which overwrites Electron's `require` function that is used to require Node.js modules out of `node_modules` or by relative path. + +`ember-electron` attempts to patch this up by implementing a `require()` function that tries both Ember's and Node.js's `require()` functions, but it's not perfect, so we recommend you use `requireNode()` when requiring Node.js modules. + +## Command-line arguments + +If your Electron app accepts command-line arguments that the main process handles via `process.argv`, then when running `ember electron` you need to precede them with `---`. This allows the `ember electron` to distinguish between its own arguments and arguments it should pass through when launching Electron: + +```sh +$ ember electron --- +``` + +e.g. + +```sh +$ ember electron --- --some-flags --that-my-app --handles-as="process.argv" +``` + +or + +```sh +$ ember electron --environment=production --- --some-flags --that-my-app --handles-as="process.argv" +``` + +## Ember Inspector and Devtron + +`ember electron` installs the Electron Inspector and Devtron directly into Electron, so they should be available if you open the dev tools. Note that if you're in a browser window without `nodeIntegration` enabled, they will not be installed. + +## Developing main process code + +`ember-electron` does not restart your Electron app when main process code changes, so after making a code change you need to quit and re-launch your application. If you just run `ember electron` each time and you aren't changing any Ember code, you'll have to unnecessarily wait through the Ember build process that `ember electron` automatically runs. To avoid this, you can + +```sh +ember build +``` + +which will build the Ember app and put the results inside the Electron app, making it a fully-built like `electron forge` expects. Then you can + +```sh +cd electron-app +yarn start # or npm run start +``` + +which will run Electron forge's start script (`electron-forge start`). When you need to quit and relaunch, you can just re-run the start script and skip the Ember build entirely. + +Note that once you've `ember build`ed, you can also run the `package`, `make`, or `start` scripts, or any [electron-forge commands](https://www.electronforge.io/cli#commands) you like, as you're in a fully set up `electron-forge` project. + +## Debugging the Main Process + +Unless you're on really old Electron (`<2`), you can [debug the main process](https://electron.atom.io/docs/tutorial/debugging-main-process/) using the `--inspect`/`inspect-brk` flags. The above syntax (`---`) can also be used to pass arguments to electron itself: + +```sh +$ ember electron --- --inspect-brk +``` + +or: + +```sh +$ ember electron --- --inspect-brk --some-flags --that-my-app --handles-as="process.argv" +``` + +Then, like when inspecting any Node.js process, open Chrome and navigate to `chrome://inspect`. \ No newline at end of file diff --git a/tests/dummy/app/templates/docs/guides/installation.md b/tests/dummy/app/templates/docs/guides/installation.md index a14afdc4..a8ede276 100644 --- a/tests/dummy/app/templates/docs/guides/installation.md +++ b/tests/dummy/app/templates/docs/guides/installation.md @@ -1,18 +1,15 @@ # Installation & Setup -> :warning: This addon needs at least Node 6. +> This addon requires at least Node 8 and `ember-cli` 3.4.0 -To install the addon, run: +## Installation ```sh ember install ember-electron ``` -Or, to install with npm - but please ensure (:warning:) that the blueprint generation runs - it creates necessary files and configuration for this addon to work. Please ensure that you have a populated `ember-electron` folder at the root of your project, and another one (only containing `lib/index.js`) in your `tests` directory. +This will install `ember-electron` and create and initialize an [electron-forge](https://www.electronforge.io/) project in the `electron-app` directory inside your Ember app. Then you can run `ember electron` to launch your app in Electron. -```sh -npm install ember-electron -ember g ember-electron -``` +## Upgrading -See [FAQ: Structure](../faq/structure.md) for more information on the layout of the `ember-electron` directory. +See [Guides: Upgrading](./upgrading) for information on how to upgrade from `ember-electron` 2.x. diff --git a/tests/dummy/app/templates/docs/guides/packaging.md b/tests/dummy/app/templates/docs/guides/packaging.md deleted file mode 100644 index 98c8e6eb..00000000 --- a/tests/dummy/app/templates/docs/guides/packaging.md +++ /dev/null @@ -1,11 +0,0 @@ -# Packaging - -Ember-Electron comes with an integrated packager to create binaries (.app, .exe etc), which can be run with `ember electron:package`. By default, the packager creates binaries for all platforms and architectures using your app's name and version as defined in `package.json`. Under the hood, it uses [electron-forge](https://github.com/electron-userland/electron-forge)). - -To create standalone binaries of your Ember App, simply run the following command: - -```sh -ember electron:package -``` - -and they will be created in a `electron-out` directory at the root of your project. diff --git a/tests/dummy/app/templates/docs/guides/structure.md b/tests/dummy/app/templates/docs/guides/structure.md new file mode 100644 index 00000000..70d13ae6 --- /dev/null +++ b/tests/dummy/app/templates/docs/guides/structure.md @@ -0,0 +1,65 @@ +# Structure of an ember-electron app + +## Electron apps + +Electron apps consist of a main Node.js process that can spawn Chromium windows, called rendered processes, and load content into them. Those windows can load remote web pages, or local ones bundled with the Electron application, and they can be granted access to Node.js APIs so the code running in the browser windows can, for example, access the filesystem directly. + +## Electron forge + +[electron-forge](https://www.electronforge.io/) is a command-line interface for creating and managing Electron projects, analagous to `ember-cli` in the Ember ecosystem. You will not need to run `electron-forge` commands directly (although you can -- see below), but since most of the `ember electron:*` commands are wrappers for `electron-forge` commands, and `electron-forge` supports a very large set of configuration objects, it may be valuable to familiarize yourself with the basics of how `electron-forge` works. + +## ember-electron apps + +A vanilla `electron-forge` project contains some main process code and some static web content -- html, css, and js files. `ember-electron` integrates Ember with Electron by creating an `electron-forge` project inside your Ember project with some boilerplate main process code, and dynamically generated web content. + +The boilerplate code is set up to load web content from a directory called `ember-dist` that doesn't (initially) exist. When you run the various `ember electron:*` commands, they build your Ember app, put the result inside the `ember-dist` directory, and then use the `electron-forge` API to launch your app with the now-populated web content. + +### Project layout + +When you first install `ember-electron`, the blueprint creates an `electron-forge` project in an `electron-app` folder. Here is layout of that project: + +``` + my-app + ├── app + ├── tests + ├── public + ├── etc. + └── electron-app + ├── package.json + ├── node_modules + ├── src + │ └── index.js + ├── tests + │ └── index.js + ├── ember-dist + │ └── + ├── ember-test + │ └── + └── out + └── +``` + +When you run your app, the working directory (`process.cwd()`) is `electron-app/`, and the Ember app's Node.js require location is `ember-dist`, meaning that if you add `src/some-lib.js` and want to require it from your Ember code, you would `requireNode('../src/some-lib.js')`. + +### Dependencies: a tale of two package.jsons + +Unlike `ember-electron` 2.x, the Electron app is a self-contained package, rather than being mixed in with the Ember app. + +`my-app/package.json` should contain the dependencies needed for the Ember build -- all the standard Ember libraries and addons plus any that you want bundled into your application bundle. The packages specified in `my-app/package.json` will not be Node.js-requireable when you run your Electron application, but can only be accessed if they were injected into your Ember build using `ember-auto-import` or `app.import()` or the like. + +`my-app/electron-app/package.json` should contain the dependencies needed for the Electron/`electron-forge` build plus any packages needed at runtime that you want to Node.js-require from the main process, or from your Ember app via `requireNode`. + +Generally speaking: + +* `my-app/package.json#devDependencies`: +** packages needed to perform the Ember build +** packages that contribute non-Node.js code used from the Ember app at runtime +** packages used for testing the Ember app +* `my-app/package.json#dependencies`: +** generally empty +* `my-app/electron-app/package.json#devDependencies`: +** `electron-forge` and related packages needed to perform the Electron build +** packages needed for testing the main process +* `my-app/electron-app/package.json#dependencies`: +** packages `require`ed by the main process at runtime +** packages `requireNode`ed by the Ember app (with `nodeIntegration: true`) at runtime diff --git a/tests/dummy/app/templates/docs/guides/testing.md b/tests/dummy/app/templates/docs/guides/testing.md deleted file mode 100644 index dd278ad4..00000000 --- a/tests/dummy/app/templates/docs/guides/testing.md +++ /dev/null @@ -1,12 +0,0 @@ -# Testing - -To test your app, run `ember electron:test`. If you prefer the live-reload mode, run `ember electron:test --server`. The usual parameters are supported: - -- `--server` - Run tests in interactive mode (default: false) -- `--protocol` - 'The protocol to use when running with --server (default: 'http') -- `--host` - The host to use when running with --server (default: 'localhost') -- `--port` - The port to use when running with --server (default: 7357) -- `--module` - The name of a test module to run -- `--filter` - A string to filter tests to run - -When running `ember electron:test`, testem is configured to use `/testem-electron.js` instead of `/testem.js` (to allow projects to run as traditional ember apps as well as electron apps). The blueprint will install this file, but if you want to modify it to change any testem configuration, make sure to modify the right file. diff --git a/tests/dummy/app/templates/docs/guides/upgrade.md b/tests/dummy/app/templates/docs/guides/upgrade.md deleted file mode 100644 index 6fe03eb5..00000000 --- a/tests/dummy/app/templates/docs/guides/upgrade.md +++ /dev/null @@ -1,35 +0,0 @@ -# Upgrades - -Ember-Electron grew larger over time, and while we try to make updating this dependency as easy as possible given the complex structure behind it there are still a few manual steps required. - - - -## Upgrading from 1.x to 2.x - -First of all: Thank you so much for giving ember-electron a try. As the Electron community grew bigger, more and more modules emerged that cover parts of the same operations done by ember-electron - and over time it became clear that this module should depend on other, more -popular utility modules than to take care of all possible operations itself. - -ember-electron v2 is almost a complete rewrite, utilizing electron-forge to build and package your desktop applications. It allows ember-electron to focus on the Ember parts of this module, while the whole Electron community can work together to polish the creation of installers, the compilation of small packages, and the developer experience around native modules. - -If you are upgrading to version 2.x from 1.x, you will need to make some updates to your application. The best way to do this is to re-run the blueprint after upgrading `ember-electron`: - -```sh -ember generate ember-electron -``` - - - -## Configuration Upgrade - -The biggest change is where your configuration lives - in the past, `ember-electron` managed your configuration, passing it on to internal tools that would take care of the actual creation of binaries. - -Now, `ember electron:package` and `ember electron:make` use `electron-forge` to join forces with the greater Electron community. All configuration is now done using an `electron-forge-config.js` file inside your `ember-electron` folder. For details, [check out the documentation][forge-config]. - - - -## Example Upgrade - -To see an upgrade in action, check out how Ghost Desktop [moved from ember-electron v1 to v2][ghost-pr]. - -[forge-config]: https://github.com/electron-userland/electron-forge#config -[ghost-pr]: https://github.com/TryGhost/Ghost-Desktop/pull/263 diff --git a/tests/dummy/app/templates/docs/guides/upgrading.md b/tests/dummy/app/templates/docs/guides/upgrading.md new file mode 100644 index 00000000..8b2455b7 --- /dev/null +++ b/tests/dummy/app/templates/docs/guides/upgrading.md @@ -0,0 +1,126 @@ +# Upgrading from ember-electron 2.x + +While upgrading from 2.x to 3.x should not be very time-consuming in most cases, quite a bit has changed, so you should follow these steps in order to be successful. Starting from a clean tree (so you can run a clean `git diff` afterwards to see what changed), the recommended steps are: + +## Upgrade ember electron + +```sh +yarn-or-npm remove ember-electron +ember install ember-electron +``` + +When prompted to overwrite `testem-electron.js`, choose `yes`. + +## Fix electron version + +Your `electron-app` project will initially have the most recent release of Electron installed. You were probably running an older version since it was very difficult to run newer than Electron 4.x with `ember-electron` 2.x. So if you don't want to deal with upgrading Electron in the middle of upgrading `ember-electron`, you should change your `electron-app/package.json`'s `electron` version to match the version of `electron-prebuilt-compile` (which would determine the Electron version you were running) that is in your root `package.json`. + +The good news is that now upgrading Electron just involves updating the version installed in the `electron-app` package -- no more waiting for `electron-prebuilt-compile` to release an update matching the latest Electron version! + +## Clean up package.json + +When installing `ember-electron` 2.x, a number of entries were added to your `package.json` that can now be safely removed: + +`devDependencies`: +* `babel-plugin-transform-async-to-generator` +* `babel-preset-env` +* `babel-preset-react` +* `devtron` +* `electron-forge` +* `electron-prebuilt-compile` + +`dependencies`: +* `electron-compile` +* `electron-protocol-serve` +* `electron-squirrel-startup` + +and also the old `electron-forge` configuration: + +``` +"config": { + "forge": "./ember-electron/electron-forge-config.js" +} +``` + +## Migrate Node.js packages + +As described in [Guides: Structure](./structure), `ember-electron` 3.x differs from 2.x in that it doesn't mix the Electron app's `package.json` with the Ember app's `package.json`. So you'll need to identify any packages in your root `package.json` that are either `require()`ed by your Electron main process code, or `requireNode`ed by your Ember app and move or copy them into `electron-app/package.json`. + +## Migrate main process/Node.js files + +You will now have an `electron-app` folder with default vanilla content side-by-side with your `ember-electron` folder that stored your main process/Node.js files. So your next step is to migrate the contents of `ember-electron` over to `electron-app`. + +### electron-forge-config.js + +By default `electron-forge` puts the configuration inline in `package.json`, but still supports the external configuration. So you can either migrate the content of your `electron-forge-config.js` into `package.json`: + +``` +"config": { + "forge": { + "config goes": "here" + } +} +``` + +or move your `electron-forge-config.js` from `ember-electron` to `electron-app` and then replace the `config` key in `electron-app/package.json` with + +``` +"config": { + "forge": "./electron-forge-config.js" +} +``` + +Either way, you will need to update the configuration since the format has changed somewhat since the version of `electron-forge` that `ember-electron` 2.x used. Comparing your old configuration with the vanilla generated configuration in `electron-app/package.json` should help, and `electron-forge`'s [configuration documentation](https://www.electronforge.io/configuration) will help you through the process. Note also that the version of `electron-packager` uses changed from v11 to v14, and various maker packages were also updated, so there may be other configuration changes needed to be able to package/make with `ember-electron` 3.x. + +### main.js + +The equivalent of `ember-electron/main.js` is `electron-app/src/index.js`, so you'll want to put the contents of your `main.js` there (note that `src/index.js` is specified by the `main` entry in `electron-app/package.json`, so you can name it whatever/put it wherever you want as long as you update the `main` entry accordingy). Because the Electron project structure differs a little from `ember-electron` 2.x's, you'll need to replace anywhere you reference the path to the Ember application directory (`../ember`) with the new path (`../ember-dist`). For example, `ember-electron` 2.x's default `main.js` contains: + +```javascript +protocolServe({ + cwd: join(__dirname || resolve(dirname('')), '..', 'ember'), + app, + protocol, +}); +``` + +while `ember-electron` 3.x's contains: + +``` +protocolServe({ + cwd: join(__dirname || resolve(dirname('')), '..', 'ember-dist'), + app, + protocol, +}); +``` + +### test-main.js + +Generally you should not need to migrate `test-main.js` at all. It's default content in 2.x was: + +```javascript +/* eslint-env node */ +require('ember-electron/lib/test-support/test-main'); +``` + +If yours still looks like that, then you don't need to do anything. If you've customized it, then you'll need to migrate the content to `electron-app/tests/index.js` + +### resources-* folders + +If you don't have any files in any of the `ember-electron/resources` or `ember-electron/resources-*` folders, you can skip this section. + +`ember-electron` 2.x managed the `resources-*` folders to allow you to specify platform-specific resources. `electron-forge` does not support this functionality, and it was one of the main factors contributing to the complexity and slowness of `ember-electron` 2.x's build pipeline, so it's been removed in 3.x. + +So if you only have content in `ember-electron/resources/`, you can just copy the folder into `electron-app`. Note that `src/index.js` is now in a subfolder, unlike `main.js` was in 2.x, so if you are accessing resources from your main process using, e.g., `path.join(__dirname, 'resources')`, you'll have to update it to `path.join(__dirname, '..', 'resources')` (or you could put the `resources` folder in the `src/` directory if you're some kind of monster). + +If you do have content in the platform-specific `resources-*` folders, you can between them at runtime, e.g. put your platform-specific resources in `resources/win32`, `resources/darwin`, and `resources-linux` and: + +```javascript +let resourcePath = path.join('..', 'resources', process.platform, 'thing.json.txt'); +``` + +If you need to exclude files for other platforms from your packaged build, you can use `electron-forge`'s hooks, such as [packageAfterCopy](https://www.electronforge.io/configuration#packageaftercopy) (but note that these will only run when running `ember electron:package` or `ember electron:make`, not `ember electron` which runs directly out of your source tree). + +### code/files/etc + +Anything else that was in the `ember-electron` in 2.x should be "just files" -- `.js` files `require`d from the main process or `requireNode`d from the Ember app, or other files accessed via the filesystem APIs. So these can be migrated into `electron-app` however seems best, updating the references to their paths in other source files as needed. \ No newline at end of file diff --git a/tests/dummy/app/templates/docs/guides/usage.md b/tests/dummy/app/templates/docs/guides/usage.md index 93a1d1b0..893777ca 100644 --- a/tests/dummy/app/templates/docs/guides/usage.md +++ b/tests/dummy/app/templates/docs/guides/usage.md @@ -2,45 +2,65 @@ ## Running Your App -To run your app together with a file watcher in development mode (similar to `ember serve`), you can run `ember electron`, which will use Electron to start `ember-electron/main.js`. Electron's main process runs roughly like a Node process, meaning that it does not immediately open a browser window. This addon's blueprint adds a default `main.js` file to your project, which will automatically open up a new browser window with your Ember application. +To run your app in development mode, run +```sh +ember electron +``` +This is the equivalent of `ember serve` -- it defaults to building for the development environment, and live reloads when you make changes to your Ember app (but not your `electron-forge` project files -- see [Common Issues](../faq/common-issues#why-doesnt-my-application-reload-when-i-change-electron-forge-project-files-)). It supports many of the same parameters as `ember serve` does -- run `ember help electron` to see them all. -## Ember Inspector +## Running Tests -If you're running a later version of Electron, you will notice that ember-electron installs ember-inspector directly into Electron. Simply open up the developer tools and choose the Ember-tab, just like you would in Chrome. +To test your app, run +```sh +ember electron:test +``` +or -## Debugging the Main Process +```sh +ember electron:test --server +``` -There are a variety of methods of debugging the main process. If you're on Electron 1.7.2 or newer, using the `--inspect`/`inspect-brk` flags is by far the best. You can read up on other methods [here](https://electron.atom.io/docs/tutorial/debugging-main-process/). Regardless of which method you use, you'll need to pass extra command-line options to Electron when launching. This can be done via the following syntax: +to run in live-reload mode. It supports many of the same parameters as `ember test` does -- run `ember help electron:test` to see them all. -``` -$ ember electron --- -``` +## Packaging Your App for Distribution -for example: +### Configuration + +The process of packaging an application for distribution involves quite a bit of configuration. `ember-electron`'s installation blueprint will set you up with some defaults to get you started, but you will likely want to customize the configuration at some point. In `electron-app/package.json` you'll see ``` -$ ember electron --- --inspect-brk +"config": { + "forge": { + "packagerConfig": {}, + "makers": [ + ... + ] + } +} ``` -or: +This configuration is read directly by `electron-forge`, so you should use its [documentation](https://www.electronforge.io/configuration) as reference. -``` -$ ember electron --environment=production --- --debug-brk=5858 +### Making + +To make installers for your application that you can distribute, run + +```sh +ember electron:make ``` -## Conflict between Ember and Electron: require() +This is a thin wrapper around [electron-forge make](https://www.electronforge.io/cli#make). It will build out the installers specified by the `makers` array in your forge config and place them in `electron-app/out`. Various command-line arguments can customize the platform you are building for, the make targets to build, and allow you to reuse already-built content to speed things up, e.g., in CI -- run `ember help electron:make` to see them all. -Both Ember Cli and Node.js use `require()`. Without ember-electron, Ember will start and overwrite Node's `require()` method, meaning that you're stuck without crucial tools such as `require('electron')`. +### Packaging -When using ember-electron, this conflict is automatically managed for you. We provide save alternatives for -the methods and objects provided by Electron. +To package your application into a platform specific executable format, run -- `require()` is wrapped to resolve both Ember and Node modules, but we recommend you to use `requireNode()` for your Node dependencies. -- `window.module` becomes `window.moduleNode` -- `window.process` becomes `window.processNode` +```sh +ember electron:package +``` -While this should make it okay to continue using the default names, we recommend using our alternative ones for code clarity. +This is a thin wrapper around [electron-forge package](https://www.electronforge.io/cli#package). It will produce the same result you would get by running `ember electron:make` and then installing one of the installers, so is a good way to run your application under the same conditions that end-users will run it, rather than in a development environment. It will place the result in `electron-app/out`. Various command-line arguments can customize the platform you are building for, and allow you to reuse an already-built Ember app to speed things up, e.g., in CI -- run `ember help electron:package` to see them all. diff --git a/tests/dummy/app/templates/docs/index.md b/tests/dummy/app/templates/docs/index.md index e67fa9e1..e2796595 100644 --- a/tests/dummy/app/templates/docs/index.md +++ b/tests/dummy/app/templates/docs/index.md @@ -14,31 +14,24 @@ An Ember addon to turn Ember apps into cross-platform desktop applications, taki * `ember electron:package` - Create binaries (.app, .exe, etc) * `ember electron:make` - Generate platform specific distributables (installers, distribution packages, etc) * `ember electron:build` - Build out Ember app with Electron instrumentation (useful for optimizing multi-platform builds) -* `ember electron:assemble` - Assemble Electron application project (useful for debugging builds) To see a real world example, check out [Ghost Desktop](https://github.com/tryghost/Ghost-Desktop). - - ## Documentation ### Basics -- [Installation](docs/guides/installation.md) -- [Usage](docs/guides/usage.md) -- [Configuration](docs/guides/configuration.md) -- [Testing](docs/guides/testing.md) -- [Packaging](docs/guides/packaging.md) +- [Installation](docs/guides/installation) +- [Usage](docs/guides/usage) +- [Structure](docs/guides/structure) ### Advanced Guides -- [Upgrading from ember-electron 1.x to 2.x](docs/guides/upgrade.md) -- [Testing on CI (Travis, AppVeyor, CircleCI, etc)](docs/guides/ci.md) -- [Build pipeline](docs/guides/build-pipeline.md) +- [Upgrading from ember-electron 2.x to 3.x](docs/guides/upgrading) +- [Development and Debugging](docs/guides/development-and-debugging) +- [Testing on CI (Travis, AppVeyor, CircleCI, etc)](docs/guides/ci) ### FAQ - -- [Common issues](docs/faq/common-issues.md) -- [File structure](docs/faq/structure.md) -- [Security concerns](docs/faq/security.md) +- [Common issues](docs/faq/common-issues) +- [Security concerns](docs/faq/security) Somethings missing? Contributions to our docs are welcome! @@ -47,7 +40,7 @@ Somethings missing? Contributions to our docs are welcome! Ember-Electron is a small open source project. Use [GitHub Issues](https://github.com/adopted-ember-addons/ember-electron/issues) to report bugs and errors within the addon. -If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can the [various places to get help here](https://www.emberjs.com/community/). If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. +If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can the [various places to get help here](https://www.emberjs.com/community/). In particular, the [Ember community Discord](https://discordapp.com/invite/emberjs) has a `#topic-desktop` channel which is a great place to ask questions about `ember-electron`. If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. ## Development From 47fe0bfb27d9d805877150d8156e622b93a0a16b Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Wed, 20 Nov 2019 19:58:47 -0800 Subject: [PATCH 13/24] chore: Remove semantic release We want better manual control of releases, especially while updating from 2.x to 3.x --- .travis.yml | 10 - README.md | 8 - package.json | 1 - release.config.js | 9 - tests/dummy/app/templates/docs/index.md | 8 - yarn.lock | 2289 +---------------------- 6 files changed, 79 insertions(+), 2246 deletions(-) delete mode 100644 release.config.js diff --git a/.travis.yml b/.travis.yml index d9506497..c3adca07 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,16 +51,6 @@ jobs: env: END_TO_END_TESTS=yarn - env: END_TO_END_TESTS=npm - # Define the release stage that runs semantic-release - - stage: "Release" - node_js: lts/* - script: skip - deploy: - provider: script - skip_cleanup: true - script: - - npx semantic-release - before_install: - yarn config set no-progress diff --git a/README.md b/README.md index cf87bcb1..b6b21520 100644 --- a/README.md +++ b/README.md @@ -21,14 +21,6 @@ Ember-Electron is a small open source project. Use [GitHub Issues](https://githu If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can the [various places to get help here](https://www.emberjs.com/community/). If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. -## Development - -`ember-electron` uses [Semantic Release](https://github.com/semantic-release/semantic-release) to -automate the whole release process. In order to have a PR merged, please ensure that your PR -follows the commit guidelines so that our robots can understand your change. This repository uses -the [`conventional-changelog` rules from the `eslint` repository](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-eslint). - - ## Authors Ember-Electron builds on prior work done by @brzpegasus (author of [`ember-cli-nwjs`](https://github.com/brzpegasus/ember-cli-nwjs)) and @joostdevries (author of [`ember-cli-remote-inspector`](https://github.com/joostdevries/ember-cli-remote-inspector)). Our gratitude to both of them for their amazing work. diff --git a/package.json b/package.json index 58fa5c3d..9fadeffa 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,6 @@ "mocha": "^6.2.2", "qunit-dom": "^0.9.0", "sass": "^1.23.3", - "semantic-release": "^15.10.6", "sinon": "^7.5.0", "sinon-chai": "^3.3.0", "tmp": "^0.1.0" diff --git a/release.config.js b/release.config.js deleted file mode 100644 index d91650a6..00000000 --- a/release.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - branch: 'master', - plugins: [ - '@semantic-release/commit-analyzer', - '@semantic-release/release-notes-generator', - '@semantic-release/npm', - '@semantic-release/github', - ], -} diff --git a/tests/dummy/app/templates/docs/index.md b/tests/dummy/app/templates/docs/index.md index e2796595..050476b1 100644 --- a/tests/dummy/app/templates/docs/index.md +++ b/tests/dummy/app/templates/docs/index.md @@ -43,14 +43,6 @@ Ember-Electron is a small open source project. Use [GitHub Issues](https://githu If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can the [various places to get help here](https://www.emberjs.com/community/). In particular, the [Ember community Discord](https://discordapp.com/invite/emberjs) has a `#topic-desktop` channel which is a great place to ask questions about `ember-electron`. If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. -## Development - -`ember-electron` uses [Semantic Release](https://github.com/semantic-release/semantic-release) to -automate the whole release process. In order to have a PR merged, please ensure that your PR -follows the commit guidelines so that our robots can understand your change. This repository uses -`semantic-release`'s default [Angular commit message conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). - - ## Authors Ember-Electron builds on prior work done by @brzpegasus (author of [`ember-cli-nwjs`](https://github.com/brzpegasus/ember-cli-nwjs)) and @joostdevries (author of [`ember-cli-remote-inspector`](https://github.com/joostdevries/ember-cli-remote-inspector)). Our gratitude to both of them for their amazing work. diff --git a/yarn.lock b/yarn.lock index b34946db..67fb841a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -732,7 +732,7 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/runtime@^7.2.0", "@babel/runtime@^7.6.3": +"@babel/runtime@^7.2.0": version "7.7.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.2.tgz#111a78002a5c25fc8e3361bedc9529c696b85a6a" integrity sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw== @@ -1208,162 +1208,11 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== - "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== - dependencies: - "@nodelib/fs.scandir" "2.1.3" - fastq "^1.6.0" - -"@octokit/endpoint@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.5.1.tgz#2eea81e110ca754ff2de11c79154ccab4ae16b3f" - integrity sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg== - dependencies: - "@octokit/types" "^2.0.0" - is-plain-object "^3.0.0" - universal-user-agent "^4.0.0" - -"@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.0.tgz#a64d2a9d7a13555570cd79722de4a4d76371baaa" - integrity sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg== - dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.2.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.1.tgz#3a1ace45e6f88b1be4749c5da963b3a3b4a2f120" - integrity sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg== - dependencies: - "@octokit/endpoint" "^5.5.0" - "@octokit/request-error" "^1.0.1" - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^4.0.0" - -"@octokit/rest@^16.27.0": - version "16.35.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.35.0.tgz#7ccc1f802f407d5b8eb21768c6deca44e7b4c0d8" - integrity sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w== - dependencies: - "@octokit/request" "^5.2.0" - "@octokit/request-error" "^1.0.2" - atob-lite "^2.0.0" - before-after-hook "^2.0.0" - btoa-lite "^1.0.0" - deprecation "^2.0.0" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^4.0.0" - -"@octokit/types@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.0.1.tgz#0caf0364e010296265621593ac9a37f40ef75dad" - integrity sha512-YDYgV6nCzdGdOm7wy43Ce8SQ3M5DMKegB8E5sTB/1xrxOdo2yS/KgUgML2N2ZGD621mkbdrAglwTyA4NDOlFFA== - dependencies: - "@types/node" ">= 8" - -"@semantic-release/commit-analyzer@^6.1.0": - version "6.3.3" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.3.tgz#885f7e46e2f0aef23a23be0904dbf18d6ece45ca" - integrity sha512-Pyv1ZL2u5AIOY4YbxFCAB5J1PEh5yON8ylbfiPiriDGGW6Uu1U3Y8lysMtWu+FUD5x7tSnyIzhqx0+fxPxqbgw== - dependencies: - conventional-changelog-angular "^5.0.0" - conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.7" - debug "^4.0.0" - import-from "^3.0.0" - lodash "^4.17.4" - -"@semantic-release/error@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" - integrity sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg== - -"@semantic-release/github@^5.1.0": - version "5.5.5" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.5.5.tgz#4666367f16d8ad91fd1d3c71a7238498de14ec38" - integrity sha512-Wo9OIULMRydbq+HpFh9yiLvra1XyEULPro9Tp4T5MQJ0WZyAQ3YQm74IdT8Pe/UmVDq2nfpT1oHrWkwOc4loHg== - dependencies: - "@octokit/rest" "^16.27.0" - "@semantic-release/error" "^2.2.0" - aggregate-error "^3.0.0" - bottleneck "^2.18.1" - debug "^4.0.0" - dir-glob "^3.0.0" - fs-extra "^8.0.0" - globby "^10.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^3.0.0" - issue-parser "^5.0.0" - lodash "^4.17.4" - mime "^2.4.3" - p-filter "^2.0.0" - p-retry "^4.0.0" - url-join "^4.0.0" - -"@semantic-release/npm@^5.0.5": - version "5.3.4" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.3.4.tgz#2998cd9455aaedf278334d4a5b56f8e0b715919d" - integrity sha512-XjITNRA/oOpJ7BfHk/WaOHs1WniYBszTde/bwADjjk1Luacpxg87jbDQVVt/oA3Zlx+MelxACRIEuRiPC5gu8g== - dependencies: - "@semantic-release/error" "^2.2.0" - aggregate-error "^3.0.0" - execa "^3.2.0" - fs-extra "^8.0.0" - lodash "^4.17.15" - nerf-dart "^1.0.0" - normalize-url "^4.0.0" - npm "^6.10.3" - rc "^1.2.8" - read-pkg "^5.0.0" - registry-auth-token "^4.0.0" - tempy "^0.3.0" - -"@semantic-release/release-notes-generator@^7.1.2": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.3.3.tgz#1827de68a80facd74a62cb6e7b0bd6dab22ce088" - integrity sha512-uF7f9+epsxGNE39i0Ssu56V4w/xd3L4/yWw7FeAFp+SNLXPWTkTErdF2wwkVpxpRpCdgXsoj6T01tMN8tPfciQ== - dependencies: - conventional-changelog-angular "^5.0.0" - conventional-changelog-writer "^4.0.0" - conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.0" - debug "^4.0.0" - get-stream "^5.0.0" - import-from "^3.0.0" - into-stream "^5.0.0" - lodash "^4.17.4" - read-pkg-up "^7.0.0" - "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -1616,7 +1465,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*", "@types/node@>= 8": +"@types/node@*": version "12.12.8" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.8.tgz#dab418655af39ce2fa99286a0bed21ef8072ac9d" integrity sha512-XLla8N+iyfjvsa0KKV+BP/iGSoTmwxsu5Ci5sM33z9TjohF72DEz95iNvD6pPmemvbQgxAv/909G73gUn8QR7w== @@ -1626,26 +1475,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.55.tgz#7cc1358c9c18e71f6c020e410962971863232cf5" integrity sha512-e/5tg8Ok0gSrN6pvHphnwTK0/CD9VPZrtZqpvvpEFAtfs+ZntusgGaWkf2lSEq1OFe2EDPeUMiMVpy4nZpJ4AQ== -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - "@types/rsvp@*", "@types/rsvp@^4.0.2": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.3.tgz#4a1223158453257bce09d42b9eef7cfa6d257482" @@ -1814,20 +1648,12 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== -JSONStream@^1.0.4, JSONStream@^1.3.4, JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1, abbrev@~1.1.1: +abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -1890,35 +1716,6 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -1959,13 +1756,6 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= - dependencies: - string-width "^2.0.0" - ansi-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" @@ -1976,7 +1766,7 @@ ansi-escapes@^1.1.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= -ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -2045,16 +1835,6 @@ ansicolors@~0.2.1: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -ansistyles@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" - integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= - any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -2092,21 +1872,11 @@ applause@1.2.2: js-yaml "^3.3.0" lodash "^3.10.0" -aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2: +aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -"aproba@^1.1.2 || 2", aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -archy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -2122,11 +1892,6 @@ argparse@^1.0.7, argparse@~1.0.2: dependencies: sprintf-js "~1.0.2" -argv-formatter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9" - integrity sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk= - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -2162,11 +1927,6 @@ array-from@^2.1.1: resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - array-to-error@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/array-to-error/-/array-to-error-1.1.1.tgz#d68812926d14097a205579a667eeaf1856a44c07" @@ -2186,21 +1946,11 @@ array-union@^1.0.1, array-union@^1.0.2: dependencies: array-uniq "^1.0.1" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-uniq@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.1.0.tgz#46603d5e28e79bfd02b046fcc1d77c6820bd8e98" - integrity sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -2211,16 +1961,6 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - asar@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/asar/-/asar-2.0.1.tgz#8518a1c62c238109c15a5f742213e83a09b9fd38" @@ -2351,11 +2091,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -3091,11 +2826,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== - better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -3108,17 +2838,6 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bin-links@^1.1.2, bin-links@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.3.tgz#702fd59552703727313bc624bdbc4c0d3431c2ca" - integrity sha512-TEwmH4PHU/D009stP+fkkazMJgkBNCv60z01lQ/Mn8E6+ThHoD03svMnBVuCowwXo2nP2qKyKZxKxp58OHRzxw== - dependencies: - bluebird "^3.5.3" - cmd-shim "^3.0.0" - gentle-fs "^2.0.1" - graceful-fs "^4.1.15" - write-file-atomic "^2.3.0" - binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -3144,7 +2863,7 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.1.1, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@^3.1.1, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.5: version "3.7.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== @@ -3205,11 +2924,6 @@ bops@0.0.3: base64-js "0.0.2" to-utf8 "0.0.1" -bottleneck@^2.18.1: - version "2.19.5" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" - integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== - bower-config@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.1.tgz#85fd9df367c2b8dbbd0caa4c5f2bad40cd84c2cc" @@ -3226,19 +2940,6 @@ bower-endpoint-parser@0.2.2: resolved "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz#00b565adbfab6f2d35addde977e97962acbcb3f6" integrity sha1-ALVlrb+rby01rd3pd+l5Yqy8s/Y= -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3263,7 +2964,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -4070,11 +3771,6 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= - 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" @@ -4127,16 +3823,6 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" - integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== - bytes@1: version "1.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" @@ -4152,7 +3838,7 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: +cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -4221,11 +3907,6 @@ calculate-cache-key-for-tree@^2.0.0: dependencies: json-stable-stringify "^1.0.1" -call-limit@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4" - integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ== - call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -4261,25 +3942,11 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -4327,14 +3994,6 @@ cardinal@^1.0.0: ansicolors "~0.2.1" redeyed "~1.0.0" -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" - integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -4370,7 +4029,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4465,7 +4124,7 @@ chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3: +chownr@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== @@ -4482,23 +4141,11 @@ chromium-pickle-js@^0.2.0: resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU= -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cidr-regex@^2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" - integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== - dependencies: - ip-regex "^2.1.0" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -4539,29 +4186,11 @@ clean-css@^3.4.5: commander "2.8.x" source-map "0.4.x" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - clean-up-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clean-up-path/-/clean-up-path-1.0.0.tgz#de9e8196519912e749c9eaf67c13d64fac72a3e5" integrity sha512-PHGlEF0Z6976qQyN6gM7kKH6EH0RdfZcc8V+QhFe36eRxV0SMH5OUBZG7Bxa9YcreNzyNbK63cGiZxdSZgosRw== -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= - -cli-columns@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" - integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= - dependencies: - string-width "^2.0.0" - strip-ansi "^3.0.1" - cli-cursor@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -4593,7 +4222,7 @@ cli-spinners@^2.0.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== -cli-table3@^0.5.0, cli-table3@^0.5.1: +cli-table3@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== @@ -4633,15 +4262,6 @@ clipboard@^2.0.0: select "^1.1.2" tiny-emitter "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4668,14 +4288,6 @@ clone@^2.0.0, clone@^2.1.2: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -cmd-shim@^3.0.0, cmd-shim@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" - integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA== - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -4742,14 +4354,6 @@ colors@^1.1.2, colors@^1.2.0, colors@^1.3.3: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -columnify@~1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -4801,14 +4405,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-func@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" - integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= - dependencies: - array-ify "^1.0.0" - dot-prop "^3.0.0" - compare-version@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" @@ -4869,7 +4465,7 @@ concat-stream@^1.4.7, concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@^1.1.11, config-chain@^1.1.12: +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== @@ -4877,18 +4473,6 @@ config-chain@^1.1.11, config-chain@^1.1.12: ini "^1.3.4" proto-list "~1.2.1" -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - configstore@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.0.tgz#37de662c7a49b5fe8dbcf8f6f5818d2d81ed852b" @@ -4916,7 +4500,7 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -4973,51 +4557,6 @@ continuable-cache@^0.3.1: resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= -conventional-changelog-angular@^5.0.0: - version "5.0.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" - integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-writer@^4.0.0: - version "4.0.10" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.10.tgz#39f6458cca62a8151b3ce582a57ff71fd2b0ff7a" - integrity sha512-vtO9vBAVh7XnSpGLTB1BOGgsGTz1MdvFjzbSXLrtapWCHWwuVOZFgwdLhlS0MaXwlF1dksWdEb6tnr42Ie2INw== - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^2.0.2" - dateformat "^3.0.0" - handlebars "^4.4.0" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^4.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^3.0.0" - -conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" - integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.7.tgz#55b6cde6a2d0b4a7ab399392777d527134a8d05c" - integrity sha512-4mx/FRC92z0yIiXGyRVYQFhn0jWDwvxnj2UuLaUi3hJSG4Thall6GXA8YOPHQK2qvotciJandJIVmuSvLgDLbQ== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^3.0.0" - trim-off-newlines "^1.0.0" - convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -5111,17 +4650,6 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -5232,11 +4760,6 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -5374,11 +4897,6 @@ date-time@^2.1.0: dependencies: time-zone "^1.0.0" -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.5.1, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5386,13 +4904,6 @@ debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3. dependencies: ms "2.0.0" -debug@3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@3.2.6, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -5407,20 +4918,14 @@ debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize-keys@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" + ms "2.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -5530,11 +5035,6 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -deprecation@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -5565,34 +5065,16 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== -detect-indent@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - 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== -dezalgo@^1.0.0, dezalgo@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - diff@3.5.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -5619,13 +5101,6 @@ dir-glob@^2.2.2: dependencies: path-type "^3.0.0" -dir-glob@^3.0.0, dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -5694,14 +5169,7 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= - dependencies: - is-obj "^1.0.0" - -dot-prop@^4.1.0, dot-prop@^4.1.1: +dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== @@ -5720,23 +5188,11 @@ dotenv@^1.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-1.2.0.tgz#7cd73e16e07f057c8072147a5bc3a8677f0ab5c6" integrity sha1-fNc+FuB/BXyAchR6W8OoZ38KtcY= -dotenv@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== - duplex@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/duplex/-/duplex-1.0.0.tgz#6abc5c16ec17e4c578578727126700590d3a2dda" integrity sha1-arxcFuwX5MV4V4cnEmcAWQ06Ldo= -duplexer2@~0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -5765,11 +5221,6 @@ editions@^1.1.1: resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== -editor@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" - integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I= - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -6949,13 +6400,6 @@ encodeurl@^1.0.2, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - end-of-stream@^1.0.0, 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" @@ -7027,14 +6471,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== -env-ci@^4.0.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.5.1.tgz#2ef014dcb974728b46d1244e491e9e6ccc1923ef" - integrity sha512-Xtmr+ordf8POu3NcNzx3eOa2zHyfD4h3fPHX5fLklkWa86ck35n1c9oZmyUnVPUl9zHnpZWdWtCUBPSWEagjCQ== - dependencies: - execa "^3.2.0" - java-properties "^1.0.0" - env-paths@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" @@ -7045,11 +6481,6 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -7057,7 +6488,7 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +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== @@ -7106,18 +6537,6 @@ es6-promise@^1.0.0: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-1.0.0.tgz#f90d3629faa7c26166ae4df77c89bacdeb8dca7f" integrity sha1-+Q02KfqnwmFmrk33fIm6zeuNyn8= -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -7367,7 +6786,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.0.0, execa@^3.2.0, execa@^3.3.0: +execa@^3.0.0, execa@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/execa/-/execa-3.3.0.tgz#7e348eef129a1937f21ecbbd53390942653522c1" integrity sha512-j5Vit5WZR/cbHlqU97+qcnw9WHRCIL4V1SVe75VcHcD1JRBdt8fv0zw89b7CQHQdUHTt2VjuhcF5ibAgVOxqpg== @@ -7533,17 +6952,6 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" - integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -7582,13 +6990,6 @@ fastboot-transform@0.1.1: dependencies: broccoli-stew "^1.5.0" -fastq@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" - integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== - dependencies: - reusify "^1.0.0" - faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -7603,7 +7004,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: +figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== @@ -7691,11 +7092,6 @@ find-index@^1.1.0: resolved "https://registry.yarnpkg.com/find-index/-/find-index-1.1.1.tgz#4b221f8d46b7f8bea33d8faed953f3ca7a081cbc" integrity sha512-XYKutXMrIK99YMUPf91KX5QVJoG31/OsgftD6YoTPAObfQIxM4ziA9f0J1AsqKhJmo+IeaIPP0CFopTD4bdUBw== -find-npm-prefix@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" - integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== - find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -7726,14 +7122,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-versions@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.1.0.tgz#10161f29cf3eb4350dec10a29bdde75bff0df32d" - integrity sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q== - dependencies: - array-uniq "^2.1.0" - semver-regex "^2.0.0" - find-yarn-workspace-root@^1.1.0, find-yarn-workspace-root@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" @@ -7857,15 +7245,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" - integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0= - dependencies: - inherits "~2.0.1" - readable-stream "~1.1.10" - -from2@^2.1.0, from2@^2.1.1, from2@^2.3.0: +from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= @@ -7987,16 +7367,7 @@ fs-updater@^1.0.4: heimdalljs-logger "^0.1.9" rimraf "^2.6.2" -fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: - version "1.2.10" - resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" - integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= - dependencies: - graceful-fs "^4.1.2" - path-is-inside "^1.0.1" - rimraf "^2.5.2" - -fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: +fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= @@ -8062,32 +7433,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - -gentle-fs@^2.0.1, gentle-fs@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.2.1.tgz#1f38df4b4ead685566257201fd526de401ebb215" - integrity sha512-e7dRgUM5fsS+7wm2oggZpgcRx6sEvJHXujPH5RzgQ1ziQY4+HuVBYsnUzJwJ+C7mjOJN27DjiFy1TaL+TNltow== - dependencies: - aproba "^1.1.2" - chownr "^1.1.2" - fs-vacuum "^1.2.10" - graceful-fs "^4.1.11" - iferr "^0.1.5" - infer-owner "^1.0.4" - mkdirp "^0.5.1" - path-is-inside "^1.0.2" - read-cmd-shim "^1.0.1" - slide "^1.1.6" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -8170,18 +7515,6 @@ git-fetch-pack@^0.1.1: git-packed-ref-parse "0.0.0" through "~2.2.7" -git-log-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/git-log-parser/-/git-log-parser-1.2.0.tgz#2e6a4c1b13fc00028207ba795a7ac31667b9fd4a" - integrity sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo= - dependencies: - argv-formatter "~1.0.0" - spawn-error-forwarder "~1.0.0" - split2 "~1.0.0" - stream-combiner2 "~1.1.1" - through2 "~2.0.0" - traverse "~0.6.6" - git-packed-ref-parse@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/git-packed-ref-parse/-/git-packed-ref-parse-0.0.0.tgz#b85046931f3e4a65679b5de54af3a5d3df372646" @@ -8230,7 +7563,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -8290,13 +7623,6 @@ global-agent@^2.0.2: semver "^6.3.0" serialize-error "^5.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -8346,20 +7672,6 @@ globalthis@^1.0.0: function-bind "^1.1.1" object-keys "^1.0.12" -globby@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" - integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -8449,7 +7761,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, 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== @@ -8469,7 +7781,7 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.0: +handlebars@^4.0.11, handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1: version "4.5.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.2.tgz#5a4eb92ab5962ca3415ac188c86dc7f784f76a0f" integrity sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg== @@ -8524,11 +7836,6 @@ has-flag@^1.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -8556,7 +7863,7 @@ has-to-string-tag-x@^1.2.0: dependencies: has-symbol-support-x "^1.4.1" -has-unicode@^2.0.0, has-unicode@~2.0.1: +has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -8716,23 +8023,11 @@ homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hook-std@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" - integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== - -hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.5: +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== -hosted-git-info@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz#8b7e3bd114b59b51786f8bade0f39ddc80275a97" - integrity sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw== - dependencies: - lru-cache "^5.1.1" - html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -8757,7 +8052,7 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" -http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1: +http-cache-semantics@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== @@ -8804,14 +8099,6 @@ http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy@^1.13.1, http-proxy@^1.18.0: version "1.18.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" @@ -8844,22 +8131,6 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -https-proxy-agent@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" - integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https/-/https-1.0.0.tgz#3c37c7ae1a8eeb966904a2ad1e975a194b7ed3a4" @@ -8870,14 +8141,7 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -8894,11 +8158,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -iferr@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" - integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== - ignore-walk@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" @@ -8916,7 +8175,7 @@ ignore@^5.1.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== -import-fresh@^3.0.0, import-fresh@^3.1.0: +import-fresh@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -8924,18 +8183,6 @@ import-fresh@^3.0.0, import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -8953,16 +8200,6 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -8973,7 +8210,7 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -8988,7 +8225,7 @@ inflection@1.12.0, inflection@^1.12.0: resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= -inflight@^1.0.4, inflight@~1.0.6: +inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= @@ -8996,7 +8233,7 @@ inflight@^1.0.4, inflight@~1.0.6: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, 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== @@ -9016,20 +8253,6 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -init-package-json@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" - integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== - dependencies: - glob "^7.1.1" - npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "1 || 2" - semver "2.x || 3.x || 4 || 5" - validate-npm-package-license "^3.0.1" - validate-npm-package-name "^3.0.0" - inline-source-map-comment@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/inline-source-map-comment/-/inline-source-map-comment-1.0.5.tgz#50a8a44c2a790dfac441b5c94eccd5462635faf6" @@ -9107,14 +8330,6 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -into-stream@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8" - integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA== - dependencies: - from2 "^2.3.0" - p-is-promise "^3.0.0" - invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -9122,21 +8337,11 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" @@ -9190,20 +8395,6 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-cidr@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f" - integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g== - dependencies: - cidr-regex "^2.0.10" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -9301,24 +8492,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -9346,14 +8524,7 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -9365,13 +8536,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" - is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -9418,13 +8582,6 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= - dependencies: - text-extensions "^1.0.0" - is-type@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/is-type/-/is-type-0.0.1.tgz#f651d85c365d44955d14a51d8d7061f3f6b4779c" @@ -9498,27 +8655,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -issue-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-5.0.0.tgz#0e22a40bc275b6c7da6ddf4a9b979e8ca9faf0d4" - integrity sha512-q/16W7EPHRL0FKVz9NU++TUsoygXGj6JOi88oulyAcQG+IEZ0T6teVdE+VLbe19OfL/tbV8Wi3Dfo0HedeHW0Q== - dependencies: - lodash.capitalize "^4.2.1" - lodash.escaperegexp "^4.1.2" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.uniqby "^4.7.0" - istextorbinary@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.1.0.tgz#dbed2a6f51be2f7475b68f89465811141b758874" @@ -9536,11 +8677,6 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -java-properties@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" - integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== - joi@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/joi/-/joi-12.0.0.tgz#46f55e68f4d9628f01bbb695902c8b307ad8d33a" @@ -9698,7 +8834,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -9768,11 +8904,6 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -9831,25 +8962,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= - dependencies: - package-json "^4.0.0" - -lazy-property@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" - integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - leek@0.0.24: version "0.0.24" resolved "https://registry.yarnpkg.com/leek/-/leek-0.0.24.tgz#e400e57f0e60d8ef2bd4d068dc428a54345dbcda" @@ -9872,140 +8984,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libcipm@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz#76cd675c98bdaae64db88b782b01b804b6d02c8a" - integrity sha512-fTq33otU3PNXxxCTCYCYe7V96o59v/o7bvtspmbORXpgFk+wcWrGf5x6tBgui5gCed/45/wtPomBsZBYm5KbIw== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.1" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - graceful-fs "^4.1.11" - ini "^1.3.5" - lock-verify "^2.0.2" - mkdirp "^0.5.1" - npm-lifecycle "^3.0.0" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - pacote "^9.1.0" - read-package-json "^2.0.13" - rimraf "^2.6.2" - worker-farm "^1.6.0" - -libnpm@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2" - integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.3" - find-npm-prefix "^1.0.2" - libnpmaccess "^3.0.2" - libnpmconfig "^1.2.1" - libnpmhook "^5.0.3" - libnpmorg "^1.0.1" - libnpmpublish "^1.1.2" - libnpmsearch "^2.0.2" - libnpmteam "^1.0.2" - lock-verify "^2.0.2" - npm-lifecycle "^3.0.0" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - npm-profile "^4.0.2" - npm-registry-fetch "^4.0.0" - npmlog "^4.1.2" - pacote "^9.5.3" - read-package-json "^2.0.13" - stringify-package "^1.0.0" - -libnpmaccess@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" - integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== - dependencies: - aproba "^2.0.0" - get-stream "^4.0.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^4.0.0" - -libnpmconfig@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== - dependencies: - figgy-pudding "^3.5.1" - find-up "^3.0.0" - ini "^1.3.5" - -libnpmhook@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7" - integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpmorg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087" - integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpmpublish@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" - integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - lodash.clonedeep "^4.5.0" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^4.0.0" - semver "^5.5.1" - ssri "^6.0.1" - -libnpmsearch@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf" - integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg== - dependencies: - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpmteam@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820" - integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpx@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.0.tgz#1bf4a1c9f36081f64935eb014041da10855e3102" - integrity sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ== - dependencies: - dotenv "^5.0.1" - npm-package-arg "^6.0.0" - rimraf "^2.6.2" - safe-buffer "^5.1.0" - update-notifier "^2.3.0" - which "^1.3.0" - y18n "^4.0.0" - yargs "^11.0.0" - line-stream@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/line-stream/-/line-stream-0.0.0.tgz#888b7cc7951c6a05ce4d696dd1e6b8262371bb45" @@ -10013,11 +8991,6 @@ line-stream@0.0.0: dependencies: through "~2.2.0" -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - linkify-it@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" @@ -10073,16 +9046,6 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -10130,21 +9093,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lock-verify@^2.0.2, lock-verify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.1.0.tgz#fff4c918b8db9497af0c5fa7f6d71555de3ceb47" - integrity sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg== - dependencies: - npm-package-arg "^6.1.0" - semver "^5.4.1" - -lockfile@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" - integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== - dependencies: - signal-exit "^3.0.2" - lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" @@ -10166,14 +9114,6 @@ lodash._baseflatten@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash._baseuniq@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" - integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg= - dependencies: - lodash._createset "~4.0.0" - lodash._root "~3.0.0" - lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" @@ -10188,11 +9128,6 @@ lodash._createassigner@^3.0.0: lodash._isiterateecall "^3.0.0" lodash.restparam "^3.0.0" -lodash._createset@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" - integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= - lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" @@ -10208,11 +9143,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash._root@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= - lodash.assign@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" @@ -10237,17 +9167,12 @@ lodash.bind@^4.1.4: resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= -lodash.capitalize@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" - integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk= - lodash.castarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= -lodash.clonedeep@^4.4.1, lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: +lodash.clonedeep@^4.4.1, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= @@ -10269,11 +9194,6 @@ lodash.defaultsdeep@^4.6.0, lodash.defaultsdeep@^4.6.1: resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= - lodash.filter@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" @@ -10302,7 +9222,7 @@ lodash.foreach@^4.3.0, lodash.foreach@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= -lodash.get@^4.0.0, lodash.get@^4.4.2: +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= @@ -10317,21 +9237,6 @@ lodash.isarray@^3.0.0: resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -10381,11 +9286,6 @@ lodash.restparam@^3.0.0: resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= - lodash.some@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" @@ -10411,17 +9311,7 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - -lodash.union@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash.uniq@^4.2.0, lodash.uniq@^4.5.0, lodash.uniq@~4.5.0: +lodash.uniq@^4.2.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= @@ -10431,11 +9321,6 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash.without@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - lodash@^3.10.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -10520,11 +9405,6 @@ lunr@^2.3.6: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072" integrity sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg== -macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== - magic-string@^0.22.4: version "0.22.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" @@ -10539,13 +9419,6 @@ magic-string@^0.24.0: dependencies: sourcemap-codec "^1.4.1" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -10561,23 +9434,6 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-fetch-happen@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" - integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== - dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -10602,11 +9458,6 @@ map-obj@^1.0.0, map-obj@^1.0.1: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -10658,28 +9509,11 @@ markdown-it@^9.1.0: mdurl "^1.0.1" uc.micro "^1.0.5" -marked-terminal@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" - integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== - dependencies: - ansi-escapes "^3.1.0" - cardinal "^2.1.1" - chalk "^2.4.1" - cli-table "^0.3.1" - node-emoji "^1.4.1" - supports-hyperlinks "^1.0.1" - marked@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/marked/-/marked-0.5.2.tgz#3efdb27b1fd0ecec4f5aba362bddcd18120e5ba9" integrity sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA== -marked@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" - integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== - match-media@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/match-media/-/match-media-0.2.0.tgz#ea4e09742e7253cc7d7e1599ba627e0fa29fbc50" @@ -10757,17 +9591,12 @@ mdurl@^1.0.1, mdurl@~1.0.0: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -meant@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" - integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0, mem@^4.3.0: +mem@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== @@ -10815,21 +9644,6 @@ meow@^3.1.0, meow@^3.4.0: redent "^1.0.0" trim-newlines "^1.0.0" -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -10860,7 +9674,7 @@ merge-trees@^2.0.0: fs-updater "^1.0.4" heimdalljs "^0.2.5" -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.2.3: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== @@ -10889,14 +9703,6 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -10927,11 +9733,6 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - mime@~1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" @@ -10969,14 +9770,6 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -10992,7 +9785,7 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.0, minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: +minipass@^2.2.0, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -11084,11 +9877,6 @@ mock-require@^2.0.1: dependencies: caller-id "^0.1.0" -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - morgan@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" @@ -11127,7 +9915,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.0.0, ms@^2.1.1: +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== @@ -11147,7 +9935,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -11203,11 +9991,6 @@ neo-async@^2.5.0, neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -nerf-dart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" - integrity sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -11238,13 +10021,6 @@ node-abi@^2.9.0: dependencies: semver "^5.4.1" -node-emoji@^1.4.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - node-environment-flags@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" @@ -11253,21 +10029,12 @@ node-environment-flags@1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch-npm@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" - integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-fetch@^2.3.0, node-fetch@^2.6.0: +node-fetch@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-gyp@^5.0.1, node-gyp@^5.0.2, node-gyp@^5.0.5: +node-gyp@^5.0.1: version "5.0.5" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.5.tgz#f6cf1da246eb8c42b097d7cd4d6c3ce23a4163af" integrity sha512-WABl9s4/mqQdZneZHVWVG4TVr6QQJZUC6PAx47ITSk9lreZ1n+7Z9mMAIbA3vnO4J9W20P7LhCxtzfWsAD/KDw== @@ -11374,7 +10141,7 @@ node-watch@0.6.1: dependencies: abbrev "1" -nopt@^4.0.1, nopt@~4.0.1: +nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= @@ -11382,7 +10149,7 @@ nopt@^4.0.1, nopt@~4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 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== @@ -11418,29 +10185,16 @@ normalize-url@2.0.1: query-string "^5.0.1" sort-keys "^2.0.0" -normalize-url@^4.0.0, normalize-url@^4.1.0: +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-audit-report@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018" - integrity sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw== - dependencies: - cli-table3 "^0.5.0" - console-control-strings "^1.1.0" - npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== -npm-cache-filename@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" - integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= - npm-conf@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" @@ -11454,33 +10208,7 @@ npm-git-info@^1.0.3: resolved "https://registry.yarnpkg.com/npm-git-info/-/npm-git-info-1.0.3.tgz#a933c42ec321e80d3646e0d6e844afe94630e1d5" integrity sha1-qTPELsMh6A02RuDW6ESv6UYw4dU= -npm-install-checks@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9" - integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg== - dependencies: - semver "^2.3.0 || 3.x || 4 || 5" - -npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c" - integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-logical-tree@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" - integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== - -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: +npm-package-arg@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== @@ -11490,7 +10218,7 @@ npm-logical-tree@^1.2.1: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.6: +npm-packlist@^1.1.6: version "1.4.6" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== @@ -11498,37 +10226,6 @@ npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-profile@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.2.tgz#8272a71c19634d0dce9c35a5daf8ee589cbb0f52" - integrity sha512-VRsC04pvRH+9cF+PoVh2nTmJjiG21yu59IHpsBpkxk+jaGAV8lxx96G4SDc0jOHAkfWLXbc6kIph3dGAuRnotQ== - dependencies: - aproba "^1.1.2 || 2" - figgy-pudding "^3.4.1" - npm-registry-fetch "^4.0.0" - -npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" - integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - npm-package-arg "^6.1.0" - safe-buffer "^5.2.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -11543,133 +10240,7 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npm-user-validate@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" - integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= - -npm@^6.10.3: - version "6.13.0" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.13.0.tgz#2e90fa5b2f759017d906aa7583f0e9ed6e80e2e2" - integrity sha512-zjSJ8zjk0cDBZXqTWbQ6+qOdm1m2k489YDFP60RQRUhOxT5LOBhl+cDtFlEXEIblcNjofmsZ/qQ/wzmn5frimQ== - dependencies: - JSONStream "^1.3.5" - abbrev "~1.1.1" - ansicolors "~0.3.2" - ansistyles "~0.1.3" - aproba "^2.0.0" - archy "~1.0.0" - bin-links "^1.1.3" - bluebird "^3.5.5" - byte-size "^5.0.1" - cacache "^12.0.3" - call-limit "^1.1.1" - chownr "^1.1.3" - ci-info "^2.0.0" - cli-columns "^3.1.2" - cli-table3 "^0.5.1" - cmd-shim "^3.0.3" - columnify "~1.5.4" - config-chain "^1.1.12" - detect-indent "~5.0.0" - detect-newline "^2.1.0" - dezalgo "~1.0.3" - editor "~1.0.0" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - fs-vacuum "~1.2.10" - fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.2.1" - glob "^7.1.4" - graceful-fs "^4.2.3" - has-unicode "~2.0.1" - hosted-git-info "^2.8.5" - iferr "^1.0.2" - infer-owner "^1.0.4" - inflight "~1.0.6" - inherits "^2.0.4" - ini "^1.3.5" - init-package-json "^1.10.3" - is-cidr "^3.0.0" - json-parse-better-errors "^1.0.2" - lazy-property "~1.0.0" - libcipm "^4.0.7" - libnpm "^3.0.1" - libnpmaccess "^3.0.2" - libnpmhook "^5.0.3" - libnpmorg "^1.0.1" - libnpmsearch "^2.0.2" - libnpmteam "^1.0.2" - libnpx "^10.2.0" - lock-verify "^2.1.0" - lockfile "^1.0.4" - lodash._baseuniq "~4.6.0" - lodash.clonedeep "~4.5.0" - lodash.union "~4.6.0" - lodash.uniq "~4.5.0" - lodash.without "~4.4.0" - lru-cache "^5.1.1" - meant "~1.0.1" - mississippi "^3.0.0" - mkdirp "~0.5.1" - move-concurrently "^1.0.1" - node-gyp "^5.0.5" - nopt "~4.0.1" - normalize-package-data "^2.5.0" - npm-audit-report "^1.3.2" - npm-cache-filename "~1.0.2" - npm-install-checks "^3.0.2" - npm-lifecycle "^3.1.4" - npm-package-arg "^6.1.1" - npm-packlist "^1.4.6" - npm-pick-manifest "^3.0.2" - npm-profile "^4.0.2" - npm-registry-fetch "^4.0.2" - npm-user-validate "~1.0.0" - npmlog "~4.1.2" - once "~1.4.0" - opener "^1.5.1" - osenv "^0.1.5" - pacote "^9.5.9" - path-is-inside "~1.0.2" - promise-inflight "~1.0.1" - qrcode-terminal "^0.12.0" - query-string "^6.8.2" - qw "~1.0.1" - read "~1.0.7" - read-cmd-shim "^1.0.5" - read-installed "~4.0.3" - read-package-json "^2.1.0" - read-package-tree "^5.3.1" - readable-stream "^3.4.0" - readdir-scoped-modules "^1.1.0" - request "^2.88.0" - retry "^0.12.0" - rimraf "^2.6.3" - safe-buffer "^5.1.2" - semver "^5.7.1" - sha "^3.0.0" - slide "~1.1.6" - sorted-object "~2.0.1" - sorted-union-stream "~2.1.3" - ssri "^6.0.1" - stringify-package "^1.0.1" - tar "^4.4.13" - text-table "~0.2.0" - tiny-relative-date "^1.3.0" - uid-number "0.0.6" - umask "~1.1.0" - unique-filename "^1.1.1" - unpipe "~1.0.0" - update-notifier "^2.5.0" - uuid "^3.3.3" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "~3.0.0" - which "^1.3.1" - worker-farm "^1.7.0" - write-file-atomic "^2.4.3" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -11810,11 +10381,6 @@ object.values@^1.1.0: function-bind "^1.1.1" has "^1.0.3" -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -11827,7 +10393,7 @@ on-headers@~1.0.1, on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: +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= @@ -11860,11 +10426,6 @@ open@^6.4.0: dependencies: is-wsl "^1.1.0" -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== - optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -11919,23 +10480,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" @@ -11974,13 +10518,6 @@ p-defer@^3.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== -p-filter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" - integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== - dependencies: - p-map "^2.0.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -12001,11 +10538,6 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -p-is-promise@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" - integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -12034,31 +10566,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.0.0, p-locate@^4.1.0: +p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-reduce@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-retry@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.2.0.tgz#ea9066c6b44f23cab4cd42f6147cdbbc6604da5d" - integrity sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA== - dependencies: - "@types/retry" "^0.12.0" - retry "^0.12.0" - p-timeout@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" @@ -12076,7 +10590,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^4.0.0, package-json@^4.0.1: +package-json@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= @@ -12086,41 +10600,6 @@ package-json@^4.0.0, package-json@^4.0.1: registry-url "^3.0.3" semver "^5.1.0" -pacote@^9.1.0, pacote@^9.5.3, pacote@^9.5.9: - version "9.5.9" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.9.tgz#fa3a08629c9390b2b99769c55b2cc137e1a24df3" - integrity sha512-S1nYW9ly+3btn3VmwRAk2LG3TEh8mkrFdY+psbnHSk8oPODbZ28uG0Z0d3yI0EpqcpLR6BukoVRf3H4IbGCkPQ== - dependencies: - bluebird "^3.5.3" - cacache "^12.0.2" - chownr "^1.1.2" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^3.0.0" - npm-registry-fetch "^4.0.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.10" - unique-filename "^1.1.1" - which "^1.3.1" - pad-start@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pad-start/-/pad-start-1.0.2.tgz#23e5bab3e96446b62816cff6f150975f040d1b14" @@ -12180,25 +10659,7 @@ parse-json@^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" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" + error-ex "^1.2.0" parse-ms@^1.0.0: version "1.0.1" @@ -12288,7 +10749,7 @@ path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -12360,11 +10821,6 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - pathval@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -12402,7 +10858,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5: +picomatch@^2.0.4: version "2.1.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== @@ -12434,14 +10890,6 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pkg-conf@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" - integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= - dependencies: - find-up "^2.0.0" - load-json-file "^4.0.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -12689,7 +11137,7 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1, promise-inflight@~1.0.1: +promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= @@ -12701,14 +11149,6 @@ promise-map-series@^0.2.1, promise-map-series@^0.2.3: dependencies: rsvp "^3.0.14" -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - promise.prototype.finally@^3.1.0, promise.prototype.finally@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.1.tgz#cb279d3a5020ca6403b3d92357f8e22d50ed92aa" @@ -12718,25 +11158,11 @@ promise.prototype.finally@^3.1.0, promise.prototype.finally@^3.1.1: es-abstract "^1.13.0" function-bind "^1.1.1" -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= - dependencies: - read "1" - 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= -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -12812,16 +11238,11 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -q@^1.1.2, q@^1.5.1: +q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -12851,15 +11272,6 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.8.2: - version "6.9.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd" - integrity sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -12870,11 +11282,6 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= - quick-temp@^0.1.0, quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/quick-temp/-/quick-temp-0.1.8.tgz#bab02a242ab8fb0dd758a3c9776b32f9a5d94408" @@ -12903,11 +11310,6 @@ qunit@^2.9.3: node-watch "0.6.1" resolve "1.9.0" -qw@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" - integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -12946,7 +11348,7 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -12968,13 +11370,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" - integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== - dependencies: - graceful-fs "^4.1.2" - read-file-stdin@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" @@ -12982,41 +11377,6 @@ read-file-stdin@^0.2.0: dependencies: gather-stream "^1.0.0" -read-installed@~4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= - dependencies: - debuglog "^1.0.1" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - semver "2 || 3 || 4 || 5" - slide "~1.1.3" - util-extend "^1.0.1" - optionalDependencies: - graceful-fs "^4.1.2" - -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.0.tgz#e3d42e6c35ea5ae820d9a03ab0c7291217fc51d5" - integrity sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - slash "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -13033,23 +11393,6 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.0.tgz#3f3e53858ec5ae5e6fe14bc479da0a7c98f85ff3" - integrity sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -13068,32 +11411,6 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.0.0, read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@1, read@~1.0.1, read@~1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -13107,7 +11424,7 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0: +"readable-stream@2 || 3", readable-stream@^3.1.1: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== @@ -13126,7 +11443,7 @@ readable-stream@~1.0.2: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~1.1.10, readable-stream@~1.1.9: +readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= @@ -13136,16 +11453,6 @@ readable-stream@~1.1.10, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -13180,14 +11487,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - redeyed@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a" @@ -13195,13 +11494,6 @@ redeyed@~1.0.0: dependencies: esprima "~3.0.0" -redeyed@~2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" - integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= - dependencies: - esprima "~4.0.0" - regenerate-unicode-properties@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" @@ -13297,14 +11589,6 @@ registry-auth-token@^3.0.1: rc "^1.1.6" safe-buffer "^5.0.1" -registry-auth-token@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" - integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== - dependencies: - rc "^1.2.8" - safe-buffer "^5.0.1" - registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" @@ -13433,11 +11717,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -13471,11 +11750,6 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-package-path@^1.0.11, resolve-package-path@^1.2.2, resolve-package-path@^1.2.6, resolve-package-path@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-1.2.7.tgz#2a7bc37ad96865e239330e3102c31322847e652e" @@ -13554,22 +11828,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.4, rimraf@^2.4.1, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.4, rimraf@^2.4.1, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -13685,11 +11944,6 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -13714,7 +11968,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -13799,56 +12053,12 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -semantic-release@^15.10.6: - version "15.13.30" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.13.30.tgz#89a67d1c53fb1f3caee3ce9958a9017333747119" - integrity sha512-QetSFNr2hO6dZ/NDBh49neESF6OGinJfh4NcVhzMRg+rZpeqXq9sCbpZr0uDu+5HSkJYnX25MpMTF0QyyFhpxg== - dependencies: - "@semantic-release/commit-analyzer" "^6.1.0" - "@semantic-release/error" "^2.2.0" - "@semantic-release/github" "^5.1.0" - "@semantic-release/npm" "^5.0.5" - "@semantic-release/release-notes-generator" "^7.1.2" - aggregate-error "^3.0.0" - cosmiconfig "^6.0.0" - debug "^4.0.0" - env-ci "^4.0.0" - execa "^3.2.0" - figures "^3.0.0" - find-versions "^3.0.0" - get-stream "^5.0.0" - git-log-parser "^1.2.0" - hook-std "^2.0.0" - hosted-git-info "^3.0.0" - lodash "^4.17.15" - marked "^0.7.0" - marked-terminal "^3.2.0" - p-locate "^4.0.0" - p-reduce "^2.0.0" - read-pkg-up "^7.0.0" - resolve-from "^5.0.0" - semver "^6.0.0" - signale "^1.2.1" - yargs "^14.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-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" - -semver-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== - -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -13942,13 +12152,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae" - integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw== - dependencies: - graceful-fs "^4.1.2" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -13983,15 +12186,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -signale@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" - integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w== - dependencies: - chalk "^2.3.2" - figures "^2.0.0" - pkg-conf "^2.1.0" - silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0, silent-error@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.1.tgz#f72af5b0d73682a2ba1778b7e32cd8aa7c2d8662" @@ -14039,11 +12233,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -14053,16 +12242,6 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== - snake-case@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" @@ -14162,22 +12341,6 @@ socket.io@^2.1.0: socket.io-client "2.3.0" socket.io-parser "~3.4.0" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== - dependencies: - ip "1.1.5" - smart-buffer "^4.1.0" - sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -14199,19 +12362,6 @@ sort-package-json@^1.22.1: glob "^7.1.6" sort-object-keys "^1.1.2" -sorted-object@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" - integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw= - -sorted-union-stream@~2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" - integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc= - dependencies: - from2 "^1.3.0" - stream-iterate "^1.1.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -14297,11 +12447,6 @@ spawn-args@^0.2.0: resolved "https://registry.yarnpkg.com/spawn-args/-/spawn-args-0.2.0.tgz#fb7d0bd1d70fd4316bd9e3dec389e65f9d6361bb" integrity sha1-+30L0dcP1DFr2ePew4nmX51jYbs= -spawn-error-forwarder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029" - integrity sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk= - spawn-rx@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spawn-rx/-/spawn-rx-3.0.0.tgz#1d33511e13ec26337da51d78630e08beb57a6767" @@ -14350,11 +12495,6 @@ speedometer@~0.1.2: resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0= -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -14362,27 +12502,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== - dependencies: - through2 "^2.0.2" - -split2@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-1.0.0.tgz#52e2e221d88c75f9a73f90556e263ff96772b314" - integrity sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ= - dependencies: - through2 "~2.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@^1.0.3, sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -14413,7 +12532,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.0, ssri@^6.0.1: +ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -14463,14 +12582,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-combiner2@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -14490,14 +12601,6 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-iterate@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" - integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE= - dependencies: - readable-stream "^2.1.5" - stream-shift "^1.0.0" - stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" @@ -14515,11 +12618,6 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - string-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" @@ -14600,11 +12698,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-package@^1.0.0, stringify-package@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" - integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== - stringstream@~0.0.4: version "0.0.6" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" @@ -14672,11 +12765,6 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -14730,7 +12818,7 @@ supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: +supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -14751,14 +12839,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" - integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== - dependencies: - has-flag "^2.0.0" - supports-color "^5.0.0" - svgo@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313" @@ -14839,7 +12919,7 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: +tar@^4, tar@^4.4.12: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -14852,11 +12932,6 @@ tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: safe-buffer "^5.1.2" yallist "^3.0.3" -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - temp@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.0.tgz#61391795a11bd9738d4c4d7f55f012cb8f55edaa" @@ -14864,22 +12939,6 @@ temp@0.9.0: dependencies: rimraf "~2.6.2" -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - terser-webpack-plugin@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" @@ -14944,12 +13003,7 @@ tether@^1.4.0: resolved "https://registry.yarnpkg.com/tether/-/tether-1.4.7.tgz#d56a818590d8fe72e387f77a67f93ab96d8e1fb2" integrity sha512-Z0J1aExjoFU8pybVkQAo/vD2wfSO63r+XOPfWQMC5qtf1bI7IWqNk4MiyBcgvvnY8kqnY06dVdvwTK2S3PU/Fw== -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -text-table@^0.2.0, text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -14972,7 +13026,7 @@ through2-filter@^3.0.0: through2 "~2.0.0" xtend "~4.0.0" -through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -14980,7 +13034,7 @@ through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0, through2@^3.0.1: +through2@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== @@ -14995,7 +13049,7 @@ through2@~0.2.3: readable-stream "~1.1.9" xtend "~2.1.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -15039,11 +13093,6 @@ tiny-lr@^1.1.1: object-assign "^4.1.0" qs "^6.4.0" -tiny-relative-date@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" - integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== - tmp-promise@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.1.0.tgz#bb924d239029157b9bc1d506a6aa341f8b13e64c" @@ -15191,11 +13240,6 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -traverse@~0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= - tree-kill@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" @@ -15228,16 +13272,6 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -15294,16 +13328,6 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -15349,16 +13373,6 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -umask@^1.1.0, umask@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - underscore.string@^3.2.2, underscore.string@~3.3.4: version "3.3.5" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" @@ -15432,13 +13446,6 @@ unique-stream@^2.2.1: json-stable-stringify-without-jsonify "^1.0.1" through2-filter "^3.0.0" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -15446,13 +13453,6 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universal-user-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16" - integrity sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA== - dependencies: - os-name "^3.1.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -15493,22 +13493,6 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@^2.3.0, update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -15521,11 +13505,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -15597,18 +13576,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= - -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -15641,7 +13608,7 @@ uuid@^3.3.2, uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +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== @@ -15649,7 +13616,7 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: +validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= @@ -15768,7 +13735,7 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -wcwidth@^1.0.0, wcwidth@^1.0.1: +wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= @@ -15893,20 +13860,6 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== - dependencies: - execa "^1.0.0" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -15917,7 +13870,7 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -worker-farm@^1.6.0, worker-farm@^1.7.0: +worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== @@ -15945,14 +13898,6 @@ workerpool@^5.0.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-5.0.2.tgz#8fd8f6c7250710b9c3143d5f7494db3b6633ce6e" integrity sha512-RsXfHGFzbqrfrExTN1TyZobWXCN6+vbn9B1CsZ5zQ2ASA2kQaYONCGOAT88Ew+kNSaRq/XmApRC/HRSv9Z98Ng== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -15967,15 +13912,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" @@ -16026,11 +13962,6 @@ ws@~6.1.0: dependencies: async-limiter "~1.0.0" -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" @@ -16073,11 +14004,6 @@ xtend@~2.1.1: dependencies: object-keys "~0.4.0" -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -16106,13 +14032,6 @@ yaml-js@^0.1.3: resolved "https://registry.yarnpkg.com/yaml-js/-/yaml-js-0.1.5.tgz#a01369010b3558d8aaed2394615dfd0780fd8fac" integrity sha1-oBNpAQs1WNiq7SOUYV39B4D9j6w= -yaml@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" - integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== - dependencies: - "@babel/runtime" "^7.6.3" - yargs-parser@13.1.1, yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" @@ -16121,14 +14040,6 @@ yargs-parser@13.1.1, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" - integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^16.0.0: version "16.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" @@ -16137,13 +14048,6 @@ yargs-parser@^16.0.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - yargs-unparser@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" @@ -16169,41 +14073,6 @@ yargs@13.3.0, yargs@^13.2.4, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" - integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^14.0.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" - integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.0" - yarn-or-npm@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666" From f87227a02fd8a1964a99101804f3006c0dd7266f Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Wed, 20 Nov 2019 23:30:41 -0800 Subject: [PATCH 14/24] Update appveyor config Get us on the same node version (10) as Travis, and improve the npm caching slightly --- .appveyor.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 1450de46..e5820f62 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -3,12 +3,11 @@ platform: environment: matrix: - - nodejs_version: "8" + - nodejs_version: "10" cache: - - '%APPDATA%\npm-cache -> package.json' # Only load this from cache if package.json is unchanged + - '%APPDATA%\npm-cache -> yarn.lock' # Only load this from cache if yarn.lock is unchanged - '%LOCALAPPDATA%\Yarn' - - '%USERPROFILE%\.electron' install: - ps: Install-Product node $env:nodejs_version $env:platform From e10f43bdfc0b40bcb0b359f8ebf141e872326ada Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Thu, 21 Nov 2019 10:50:04 -0800 Subject: [PATCH 15/24] fix: better solution for hidepassed https://github.com/nodejs/node/issues/9500 was causing the hidepassed query param to not work because of the URL parsing we do in the test runner. So rather than working around it by changing to hidepassed=1 in testem-electron.js, let's fix it directly in test-runner.js. --- blueprints/ember-electron/files/testem-electron.js | 2 +- lib/test-support/test-runner.js | 9 +++++++++ testem-electron.js | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/blueprints/ember-electron/files/testem-electron.js b/blueprints/ember-electron/files/testem-electron.js index 1e3db12d..84e8a947 100644 --- a/blueprints/ember-electron/files/testem-electron.js +++ b/blueprints/ember-electron/files/testem-electron.js @@ -1,6 +1,6 @@ /* eslint-env node */ module.exports = { - test_page: 'tests/index.html?hidepassed=1', + test_page: 'tests/index.html?hidepassed', disable_watching: true, launchers: { Electron: require('ember-electron/lib/test-support/test-runner'), diff --git a/lib/test-support/test-runner.js b/lib/test-support/test-runner.js index b2c3352c..b64def63 100644 --- a/lib/test-support/test-runner.js +++ b/lib/test-support/test-runner.js @@ -44,8 +44,17 @@ async function main() { let indexPath = path.resolve(emberAppDir, path.join.apply(null, testPagePath.split('/'))); let indexObj = url.parse(fileUrl(indexPath)); indexObj.query = testPageQuery; + + // https://github.com/nodejs/node/issues/9500 + for (let [ key, value ] of Object.entries(indexObj.query)) { + if ([ null, undefined, '' ].includes(value)) { + indexObj.query[key] = 'true'; + } + } + // Set this so the script in shim-test-head.js can expose it to testem indexObj.query.testemId = id; + let testUrl = url.format(indexObj); // On windows the testUrl argv is truncated before the first '&' by the time // it reaches our main.js. This appears to have something to do with how diff --git a/testem-electron.js b/testem-electron.js index 2c43f313..c8a339d4 100644 --- a/testem-electron.js +++ b/testem-electron.js @@ -1,6 +1,6 @@ /* eslint-env node */ module.exports = { - test_page: 'tests/index.html?hidepassed=1', + test_page: 'tests/index.html?hidepassed', disable_watching: true, launchers: { Electron: require('./lib/test-support/test-runner'), From 2e0735f4431cb3de508d4a399bbd58c223d556cf Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Thu, 21 Nov 2019 11:18:46 -0800 Subject: [PATCH 16/24] chore: Remove windows query string workaround It's apparently not needed anymore since we aren't going though all the hacky Electron wrapper scripts and stuff with electron-forge v6 --- lib/test-support/test-index.js | 2 -- lib/test-support/test-runner.js | 6 ------ 2 files changed, 8 deletions(-) diff --git a/lib/test-support/test-index.js b/lib/test-support/test-index.js index 2bfffddd..fb404fb2 100644 --- a/lib/test-support/test-index.js +++ b/lib/test-support/test-index.js @@ -9,8 +9,6 @@ let mainWindow = null; // params we need to preserve for testem. So we need to register our ember // protocol accordingly. let [, , , indexUrl, testemUrl] = process.argv; -// Undo workaround for windows (see test-runner.js for explanation) -indexUrl = indexUrl.replace(/__amp__/g, '&'); let { pathname: indexPath, search: indexQuery, diff --git a/lib/test-support/test-runner.js b/lib/test-support/test-runner.js index b64def63..b23bf189 100644 --- a/lib/test-support/test-runner.js +++ b/lib/test-support/test-runner.js @@ -56,12 +56,6 @@ async function main() { indexObj.query.testemId = id; let testUrl = url.format(indexObj); - // On windows the testUrl argv is truncated before the first '&' by the time - // it reaches our main.js. This appears to have something to do with how - // electron-compile (I think) uses a batch script to invoke its cli.js, and - // the fact that '&' is a special shell character. So we do our own cheesy - // workaround. - testUrl = testUrl.replace(/&/g, '__amp__'); // Start electron let { pid } = await api.start({ From 8e2bc67286b15e0bd8c784b9efa82c91806e068c Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Thu, 21 Nov 2019 11:40:35 -0800 Subject: [PATCH 17/24] chore: Prevent redundant appveyor build --- .appveyor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.appveyor.yml b/.appveyor.yml index e5820f62..9f107377 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -17,3 +17,7 @@ test_script: - yarn test build: off + +# we don't do anything different between branch and PR builds, so let's not +# redundantly run both when a PR is open +skip_branch_with_pr: true From 992fcda8c02e030aa894bb03d80f7378bb9e222b Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Fri, 22 Nov 2019 09:19:22 -0800 Subject: [PATCH 18/24] Remove denodeify Replace it with Node's built in promisify --- blueprints/ember-electron/index.js | 6 +++--- forge/template.js | 10 +++++----- node-tests/acceptance/end-to-end-test.js | 4 ++-- package.json | 1 - tests/dummy/app/templates/docs/guides/upgrading.md | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index a6e8078f..e8b32498 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -7,10 +7,10 @@ const { emberTestBuildDir } = require('../../lib/utils/build-paths'); const path = require('path'); -const denodeify = require('denodeify'); +const { promisify } = require('util'); const fs = require('fs'); -const readFile = denodeify(fs.readFile); -const writeFile = denodeify(fs.writeFile); +const readFile = promisify(fs.readFile); +const writeFile = promisify(fs.writeFile); const YAWN = require('yawn-yaml/cjs'); const SilentError = require('silent-error'); const { diff --git a/forge/template.js b/forge/template.js index c3fac5c4..80621113 100644 --- a/forge/template.js +++ b/forge/template.js @@ -1,9 +1,9 @@ -const denodeify = require('denodeify'); +const { promisify } = require('util'); const path = require('path'); -const readFile = denodeify(require('fs').readFile); -const writeFile = denodeify(require('fs').writeFile); -const rimraf = denodeify(require('rimraf')); -const ncp = denodeify(require('ncp')); +const readFile = promisify(require('fs').readFile); +const writeFile = promisify(require('fs').writeFile); +const rimraf = promisify(require('rimraf')); +const ncp = promisify(require('ncp')); const { emberBuildDir, emberTestBuildDir } = require('../lib/utils/build-paths'); module.exports = { diff --git a/node-tests/acceptance/end-to-end-test.js b/node-tests/acceptance/end-to-end-test.js index 082c6f01..1ab021d2 100644 --- a/node-tests/acceptance/end-to-end-test.js +++ b/node-tests/acceptance/end-to-end-test.js @@ -10,8 +10,8 @@ const { writeFileSync, writeJsonSync, } = require('fs-extra'); -const denodeify = require('denodeify'); -const ncp = denodeify(require('ncp')); +const { promisify } = require('util'); +const ncp = promisify(require('ncp')); const execa = require('execa'); const tmp = require('tmp'); const { expect } = require('chai'); diff --git a/package.json b/package.json index 9fadeffa..a7ed0c83 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,6 @@ "broccoli-string-replace": "^0.1.2", "chalk": "^3.0.0", "debug": "^4.1.1", - "denodeify": "^1.2.1", "electron-protocol-serve": "^1.3.0", "ember-cli-babel": "^7.11.1", "ember-inspector": "^3.12.5", diff --git a/tests/dummy/app/templates/docs/guides/upgrading.md b/tests/dummy/app/templates/docs/guides/upgrading.md index 8b2455b7..a7fb4862 100644 --- a/tests/dummy/app/templates/docs/guides/upgrading.md +++ b/tests/dummy/app/templates/docs/guides/upgrading.md @@ -13,7 +13,7 @@ When prompted to overwrite `testem-electron.js`, choose `yes`. ## Fix electron version -Your `electron-app` project will initially have the most recent release of Electron installed. You were probably running an older version since it was very difficult to run newer than Electron 4.x with `ember-electron` 2.x. So if you don't want to deal with upgrading Electron in the middle of upgrading `ember-electron`, you should change your `electron-app/package.json`'s `electron` version to match the version of `electron-prebuilt-compile` (which would determine the Electron version you were running) that is in your root `package.json`. +Your `electron-app` project will initially have the most recent release of Electron installed. You were probably running an older version since it was very difficult to run newer than Electron 4.x with `ember-electron` 2.x. So if you don't want to deal with upgrading Electron in the middle of upgrading `ember-electron`, you should change your `electron-app/package.json`'s `electron` version to match the version of `electron-prebuilt-compile` (which would determine the Electron version you were running) that is in your root `package.json`. Don't forget to run `yarn`/`npm install` from `electron-app` afterwards! The good news is that now upgrading Electron just involves updating the version installed in the `electron-app` package -- no more waiting for `electron-prebuilt-compile` to release an update matching the latest Electron version! From f97f80ea530b9fb4c95b52ae7cde40930fd25378 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Fri, 22 Nov 2019 09:20:41 -0800 Subject: [PATCH 19/24] Run CI on Node 8 I realized that since we support down to Node 8 and there are a number of relevant differences between it and Node 10 (e.g. promise-based filesystem APIs), we should test against Node 8 so we don't accidentally break compatibility. --- .appveyor.yml | 2 +- .travis.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 9f107377..d83f2000 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -3,7 +3,7 @@ platform: environment: matrix: - - nodejs_version: "10" + - nodejs_version: "8" cache: - '%APPDATA%\npm-cache -> yarn.lock' # Only load this from cache if yarn.lock is unchanged diff --git a/.travis.yml b/.travis.yml index c3adca07..ed21a78c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "10" + - "8" sudo: false dist: trusty From 1445f5952605fb87ca70061aaa67448b340e69a5 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Fri, 22 Nov 2019 09:39:23 -0800 Subject: [PATCH 20/24] Build available options based on base command for inherited commands The electron:test and electron:build commands are sub-classes of the built-in test and build commands, so let's build our options off of their options rather than just duplicating them all. --- lib/commands/build.js | 31 ++++++++++++--------- lib/commands/test.js | 64 +++++++++++++++++++++++-------------------- 2 files changed, 53 insertions(+), 42 deletions(-) diff --git a/lib/commands/build.js b/lib/commands/build.js index d625aa62..3346d322 100644 --- a/lib/commands/build.js +++ b/lib/commands/build.js @@ -7,19 +7,7 @@ module.exports = BuildCommand.extend({ name: 'electron:build', description: `Builds your ember app for Electron and installs it in the Electron app.`, - availableOptions: [ - { - name: 'environment', - type: String, - default: 'development', - aliases: ['e', { dev: 'development' }, { prod: 'production' }], - description: 'Possible values are "development", "production", and "test".', - }, - { name: 'output-path', type: 'Path', default: emberBuildPath, aliases: ['o'] }, - { name: 'watch', type: Boolean, default: false, aliases: ['w'] }, - { name: 'watcher', type: String }, - { name: 'suppress-sizes', type: Boolean, default: false }, - ], + availableOptions: buildAvailableOptions(), run() { // Tell our addon that we're building for electron, so it should inject @@ -29,3 +17,20 @@ module.exports = BuildCommand.extend({ return this._super(...arguments); } }); + +function buildAvailableOptions() { + // We don't whitelist options here since this command maps so directly to the + // base command (just with an extra env variable and different default output + // path) + + return BuildCommand.prototype.availableOptions.map((option) => { + // probably doesn't hurt to share un-modified options objects between + // prototypes, but let's do this just to be safe + option = Object.assign({}, option); + + if (option.name === 'output-path') { + option.default = emberBuildPath; + } + return option; + }); +} diff --git a/lib/commands/test.js b/lib/commands/test.js index 63ed29c8..7590ad27 100644 --- a/lib/commands/test.js +++ b/lib/commands/test.js @@ -7,35 +7,7 @@ module.exports = TestCommand.extend({ name: 'electron:test', description: 'Runs your app\'s test suite in Electron.', -availableOptions: [ - { - name: 'environment', - type: String, - default: 'test', - aliases: ['e'], - description: 'Possible values are "development", "production", and "test".', - }, - { - name: 'config-file', - type: String, - default: 'testem-electron.js', - aliases: ['c', 'cf'] - }, - { name: 'server', type: Boolean, default: false, aliases: ['s'] }, - { name: 'filter', type: String, aliases: ['f'], description: 'A string to filter tests to run' }, - { name: 'module', type: String, aliases: ['m'], description: 'The name of a test module to run' }, - { name: 'watcher', type: String, default: 'events', aliases: ['w'] }, - { - name: 'reporter', - type: String, - aliases: ['r'], - description: 'Test reporter to use [tap|dot|xunit] (default: tap)', - }, - { name: 'silent', type: Boolean, default: false, description: 'Suppress any output except for the test report' }, - { name: 'testem-debug', type: String, description: 'File to write a debug log from testem' }, - { name: 'test-page', type: String, description: 'Test page to invoke' }, - { name: 'query', type: String, description: 'A query string to append to the test page URL.' }, - ], + availableOptions: buildAvailableOptions(), rmTmp() { if (process.platform === 'win32') { @@ -55,3 +27,37 @@ availableOptions: [ return this._super(...arguments); }, }); + +function buildAvailableOptions() { + // Whitelist options from the base class we support so we don't turn on newly + // added ones until developers have had a chance to review + const supportedNames = [ + 'environment', + 'config-file', + 'server', + 'filter', + 'module', + 'watcher', + 'reporter', + 'silent', + 'testem-debug', + 'test-page', + 'query' + ]; + const baseOptions = TestCommand.prototype.availableOptions; + + // Pick just the ones we support + let availableOptions = baseOptions.filter(option => supportedNames.includes(option.name)); + // Make our customizations + availableOptions = availableOptions.map((option) => { + // probably doesn't hurt to share un-modified options objects between + // prototypes, but let's do this just to be safe + option = Object.assign({}, option); + + if (option.name === 'config-file') { + option.default = 'testem-electron.js'; + } + return option; + }); + return availableOptions; +} From 5bcea88076ecc9a9637c0e079712e6ca806ff3b8 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Fri, 22 Nov 2019 12:32:40 -0800 Subject: [PATCH 21/24] Update documentation language --- README.md | 2 +- tests/dummy/app/templates/docs/guides/upgrading.md | 6 +++--- tests/dummy/app/templates/docs/index.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b6b21520..1c65ec8a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Documentation Ember-Electron is a small open source project. Use [GitHub Issues](https://github.com/adopted-ember-addons/ember-electron/issues) to report bugs and errors within the addon. -If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can the [various places to get help here](https://www.emberjs.com/community/). If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. +If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can check out the [various places to get help here](https://www.emberjs.com/community/). In particular, the [Ember community Discord](https://discordapp.com/invite/emberjs) has a `#topic-desktop` channel which is a great place to ask questions about `ember-electron`. If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. ## Authors diff --git a/tests/dummy/app/templates/docs/guides/upgrading.md b/tests/dummy/app/templates/docs/guides/upgrading.md index a7fb4862..781680af 100644 --- a/tests/dummy/app/templates/docs/guides/upgrading.md +++ b/tests/dummy/app/templates/docs/guides/upgrading.md @@ -96,7 +96,7 @@ protocolServe({ ### test-main.js -Generally you should not need to migrate `test-main.js` at all. It's default content in 2.x was: +Generally you should not need to migrate `test-main.js` at all. Its default content in 2.x was: ```javascript /* eslint-env node */ @@ -111,9 +111,9 @@ If you don't have any files in any of the `ember-electron/resources` or `ember-e `ember-electron` 2.x managed the `resources-*` folders to allow you to specify platform-specific resources. `electron-forge` does not support this functionality, and it was one of the main factors contributing to the complexity and slowness of `ember-electron` 2.x's build pipeline, so it's been removed in 3.x. -So if you only have content in `ember-electron/resources/`, you can just copy the folder into `electron-app`. Note that `src/index.js` is now in a subfolder, unlike `main.js` was in 2.x, so if you are accessing resources from your main process using, e.g., `path.join(__dirname, 'resources')`, you'll have to update it to `path.join(__dirname, '..', 'resources')` (or you could put the `resources` folder in the `src/` directory if you're some kind of monster). +So if you only have content in ember-electron/resources/, you can copy the folder into electron-app and ignore the other ember-electron/resources-* folders. Note that `src/index.js` is now in a subfolder, unlike `main.js` was in 2.x, so if you are accessing resources from your main process using, e.g., `path.join(__dirname, 'resources')`, you'll have to update it to `path.join(__dirname, '..', 'resources')` (or you could put the `resources` folder in the `src/` directory if you like, although many folks prefer to not mix their code with non-code resources.) -If you do have content in the platform-specific `resources-*` folders, you can between them at runtime, e.g. put your platform-specific resources in `resources/win32`, `resources/darwin`, and `resources-linux` and: +If you do have content in the platform-specific `resources-*` folders, you can choose between them at runtime, e.g. put your platform-specific resources in `resources/win32`, `resources/darwin`, and `resources-linux` and: ```javascript let resourcePath = path.join('..', 'resources', process.platform, 'thing.json.txt'); diff --git a/tests/dummy/app/templates/docs/index.md b/tests/dummy/app/templates/docs/index.md index 050476b1..45521937 100644 --- a/tests/dummy/app/templates/docs/index.md +++ b/tests/dummy/app/templates/docs/index.md @@ -40,7 +40,7 @@ Somethings missing? Contributions to our docs are welcome! Ember-Electron is a small open source project. Use [GitHub Issues](https://github.com/adopted-ember-addons/ember-electron/issues) to report bugs and errors within the addon. -If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can the [various places to get help here](https://www.emberjs.com/community/). In particular, the [Ember community Discord](https://discordapp.com/invite/emberjs) has a `#topic-desktop` channel which is a great place to ask questions about `ember-electron`. If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. +If you need help *using* the addon with your application, may we recommend the excellent Ember community? You can check out the [various places to get help here](https://www.emberjs.com/community/). In particular, the [Ember community Discord](https://discordapp.com/invite/emberjs) has a `#topic-desktop` channel which is a great place to ask questions about `ember-electron`. If you have questions regarding Electron, their [Slack and forum](https://electron.atom.io/contact/) will be helpful as well. ## Authors From ca8165501cc07cbd9e242a6f56a548c3d7990dc6 Mon Sep 17 00:00:00 2001 From: Ben Demboski Date: Sat, 23 Nov 2019 23:25:24 -0800 Subject: [PATCH 22/24] Linting, dependencies, and output dirs/files Rather than trying to cobble together a decent story for linting an Electron project inside an Ember project, when the Electron tooling doesn't even really have a linting story, let's just disable it in the Electron project. electron-forge by default doesn't configure the project to lint, so let's leave it to users to do their selves and/or for some future time when we have more real-world feedback and/or electron-forge has a linting story. Make the blueprint also update .travis.yml to install dependencies in the Electron project along with Ember dependencies. Stop customizing the output directory, and let it stay where electron-forge wants to put it by default. This leaves us more in line with the default tooling, which may make things easier down the road. Also, configure the Electron app's defualt package.json to tell electron-packager to ignore our test and test build directories, so packaged apps don't end up bloated with extra stuff. --- .gitignore | 1 - .npmignore | 1 - .../ember-electron/files/testem-electron.js | 1 - blueprints/ember-electron/index.js | 84 ++++++++++--------- forge/files/.eslintrc.js | 5 -- forge/template.js | 60 ++++++++++--- lib/commands/make.js | 4 +- lib/commands/package.js | 4 +- lib/utils/build-paths.js | 7 +- node-tests/acceptance/end-to-end-test.js | 80 +++++++++++------- node-tests/integration/commands/make-test.js | 12 +-- .../integration/commands/package-test.js | 2 +- testem-electron.js | 31 ------- tests/dummy/app/templates/docs/guides/ci.md | 26 +++++- yarn.lock | 5 -- 15 files changed, 185 insertions(+), 138 deletions(-) delete mode 100644 forge/files/.eslintrc.js delete mode 100644 testem-electron.js diff --git a/.gitignore b/.gitignore index c04ba833..5bc864f3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ # compiled output /dist/ /tmp/ -/electron-out/ # dependencies /bower_components/ diff --git a/.npmignore b/.npmignore index cd8df28e..b3b82477 100644 --- a/.npmignore +++ b/.npmignore @@ -21,7 +21,6 @@ /bower.json /config/ember-try.js /dist -/electron-out /CONTRIBUTING.md /ember-cli-build.js /tmp diff --git a/blueprints/ember-electron/files/testem-electron.js b/blueprints/ember-electron/files/testem-electron.js index 84e8a947..2bd0edce 100644 --- a/blueprints/ember-electron/files/testem-electron.js +++ b/blueprints/ember-electron/files/testem-electron.js @@ -1,4 +1,3 @@ -/* eslint-env node */ module.exports = { test_page: 'tests/index.html?hidepassed', disable_watching: true, diff --git a/blueprints/ember-electron/index.js b/blueprints/ember-electron/index.js index e8b32498..6b6326c7 100644 --- a/blueprints/ember-electron/index.js +++ b/blueprints/ember-electron/index.js @@ -1,12 +1,7 @@ const Blueprint = require('ember-cli/lib/models/blueprint'); const { api } = require('@electron-forge/core'); const chalk = require('chalk'); -const { - electronProjectPath, - emberBuildDir, - emberTestBuildDir -} = require('../../lib/utils/build-paths'); -const path = require('path'); +const { electronProjectPath } = require('../../lib/utils/build-paths'); const { promisify } = require('util'); const fs = require('fs'); const readFile = promisify(fs.readFile); @@ -52,14 +47,15 @@ module.exports = class EmberElectronBlueprint extends Blueprint { async afterInstall() { await this.updateTravisYml(); await this.updateEslintIgnore(); + await this.updateEslintRc(); await this.createElectronProject(); } async updateTravisYml() { if (!fs.existsSync('.travis.yml')) { this.ui.writeLine(chalk.yellow([ - `\nNo .travis.yml found to update. For info on manually updating your CI'`, - `'config read ${ciUrl}'\n` + `\nNo .travis.yml found to update. For info on manually updating your CI`, + `config read ${ciUrl}\n` ].join(' '))); return; } @@ -70,6 +66,7 @@ module.exports = class EmberElectronBlueprint extends Blueprint { let contents = await readFile('.travis.yml'); let yawn = new YAWN(contents.toString()); + // Add xvfb to the packages let doc = yawn.json; doc.addons = doc.addons || {}; doc.addons.apt = doc.addons.apt || {}; @@ -84,42 +81,72 @@ module.exports = class EmberElectronBlueprint extends Blueprint { yawn.json = doc; doc = yawn.json; + // add install commands -- install dependencies in electron-app project, + // and export display and launch xvfb doc.install = doc.install || []; + let entry = doc.install.find(entry => entry.includes('yarn ') || entry.includes('npm ')); + if (entry.includes('yarn')) { + doc.install.push('__yarn_install__'); + } else { + doc.install.push('__npm_install__'); + } + if (!doc.install.find(entry => entry.toLowerCase().includes('xvfb'))) { - // also, yawn quotes strings with certain characters in them even though - // it isn't necessary, and it makes it harder to read. So we add - // placeholders that won't be quoted and replace them in the output - // string doc.install.push('__export_display__'); doc.install.push('__xvfb__'); } + if (!doc.install.find(entry => entry.toLowerCase().includes('xvfb'))) { + doc.install.push('__export_display__'); + doc.install.push('__xvfb__'); + } + + // also, yawn quotes strings with certain characters in them even though + // it isn't necessary, and it makes it harder to read. So we add + // placeholders that won't be quoted and replace them in the output string yawn.json = doc; let output = yawn.yaml; + output = output.replace('__yarn__install__', `cd electron-app && yarn`); + output = output.replace('__npm__install__', `cd electron-app && npm install`); output = output.replace('__export_display__', `export DISPLAY=':99.0'`); output = output.replace('__xvfb__', 'Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &'); + await writeFile('.travis.yml', output); } catch (e) { this.ui.writeLine(chalk.red([ `Failed to update .travis.yml. For info on manually updating your CI`, - `config read ${ciUrl}'.\nError:\n${e}` + `config read ${ciUrl}.\nError:\n${e}` ].join(' '))); } } + // + // Add the Electron project directory to .eslintignore. Perhaps at some point + // we can put together a good pattern for linting the Electron app, but + // currently Electron forge has no out-of-box linting, so until there's some + // better tooling elsewhere that we can integrate with, ember-electron is + // going to say "not my job" + // async updateEslintIgnore() { const toAppend = [ '', '# ember-electron', - `/${electronProjectPath}/node_modules/`, - `/${electronProjectPath}/out/`, - `/${electronProjectPath}/${emberBuildDir}/`, - `/${electronProjectPath}/${emberTestBuildDir}/` + `/${electronProjectPath}/`, ].join('\n'); await this.insertIntoFile('.eslintignore', toAppend); } + // + // Add testem-electron.js to the list of files in the rule that includes + // testem.js + // + async updateEslintRc() { + const after = /['"`]testem\.js['"`],/; + const content = '\n \'testem-electron.js\','; + await this.insertIntoFile('.eslintrc.js', content, { after }); + } + async createElectronProject() { this.ui.writeLine(chalk.green(`Creating electron-forge project at './${electronProjectPath}'`)); @@ -128,28 +155,5 @@ module.exports = class EmberElectronBlueprint extends Blueprint { interactive: true, template: 'ember-electron/forge/template' }); - - this.ui.writeLine(chalk.green(`Updating './${electronProjectPath}/package.json'`)); - - const keysToCopy = [ - 'name', - 'version', - 'description', - 'author', - 'license' - ]; - - let packageJsonPath = path.join(electronProjectPath, 'package.json'); - let packageJson = JSON.parse(await readFile(packageJsonPath)); - - for (let key of keysToCopy) { - if (Object.keys(this.project.pkg).includes(key)) { - packageJson[key] = this.project.pkg[key]; - } - } - - // special-case productName since forge creates it, but a lot of apps don't - packageJson.productName = this.project.pkg.productName || packageJson.name; - await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2)); } }; diff --git a/forge/files/.eslintrc.js b/forge/files/.eslintrc.js deleted file mode 100644 index 1147d299..00000000 --- a/forge/files/.eslintrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - env: { - node: true - } -}; diff --git a/forge/template.js b/forge/template.js index 80621113..ac769926 100644 --- a/forge/template.js +++ b/forge/template.js @@ -4,7 +4,53 @@ const readFile = promisify(require('fs').readFile); const writeFile = promisify(require('fs').writeFile); const rimraf = promisify(require('rimraf')); const ncp = promisify(require('ncp')); -const { emberBuildDir, emberTestBuildDir } = require('../lib/utils/build-paths'); +const { + emberBuildDir, + emberTestBuildDir +} = require('../lib/utils/build-paths'); + +async function updateGitIgnore(dir) { + // add our ember build directories to .gitignore + let gitIgnorePath = path.join(dir, '.gitignore'); + let contents = await readFile(gitIgnorePath); + await writeFile(gitIgnorePath, [ + contents.toString(), + '# Ember build', + `${emberBuildDir}/`, + `${emberTestBuildDir}/`, + '' + ].join('\n')); +} + +async function updatePackageJson(dir) { + // add our test and test build directories and the test directory to + // electron-packager's ignores + let packageJsonPath = path.join(dir, 'package.json'); + let packageJson = JSON.parse(await readFile(packageJsonPath)); + packageJson.config.forge.packagerConfig.ignore = [ + emberTestBuildDir, + 'tests' + ].map((dir) => `/${dir}(/|$)`); // these are regexes, not globs + + // copy some fields from the Ember project's package.json + let parentPackageJson = JSON.parse(await readFile(path.join(dir, '../package.json'))); + const keysToCopy = [ + 'name', + 'version', + 'description', + 'author', + 'license' + ]; + for (let key of keysToCopy) { + if (Object.keys(parentPackageJson).includes(key)) { + packageJson[key] = parentPackageJson[key]; + } + } + + // special-case productName since forge creates it, but a lot of apps don't + packageJson.productName = parentPackageJson.productName || packageJson.name; + await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2)); +} module.exports = { devDependencies: [ @@ -20,15 +66,7 @@ module.exports = { // copy our initial content await ncp(path.join(__dirname, 'files'), dir); - // add our ember build directory to .gitignore - let gitIgnorePath = path.join(dir, '.gitignore'); - let contents = await readFile(gitIgnorePath); - await writeFile(gitIgnorePath, [ - contents.toString(), - '# Ember build', - `${emberBuildDir}/`, - `${emberTestBuildDir}/`, - '' - ].join('\n')); + await updateGitIgnore(dir); + await updatePackageJson(dir); } }; diff --git a/lib/commands/make.js b/lib/commands/make.js index ef84f5a2..1d5bf0cf 100644 --- a/lib/commands/make.js +++ b/lib/commands/make.js @@ -1,7 +1,7 @@ 'use strict'; const BaseCommand = require('./base'); -const { emberBuildPath } = require('../utils/build-paths'); +const { emberBuildPath, packageOutPath } = require('../utils/build-paths'); module.exports = BaseCommand.extend({ name: 'electron:make', @@ -14,7 +14,7 @@ module.exports = BaseCommand.extend({ { name: 'targets', type: String, aliases: ['t'], description: 'Override the build targets specified in your electron-forge config.' }, { name: 'skip-package', type: Boolean, default: false, aliases: ['sp'], description: 'Skip the packaging step and use an already-packaged build from the output path.' }, { name: 'skip-build', type: Boolean, aliases: ['sb'], description: 'If not skipping packing step, skip the Ember build step and use an already-build from the output path.' }, - { name: 'output-path', type: 'Path', default: 'electron-out', aliases: ['o'] }, + { name: 'output-path', type: 'Path', default: packageOutPath, aliases: ['o'] }, ], async run(commandOptions) { diff --git a/lib/commands/package.js b/lib/commands/package.js index 49589db5..5ecf89e5 100644 --- a/lib/commands/package.js +++ b/lib/commands/package.js @@ -1,7 +1,7 @@ 'use strict'; const BaseCommand = require('./base'); -const { emberBuildPath } = require('../utils/build-paths'); +const { emberBuildPath, packageOutPath } = require('../utils/build-paths'); module.exports = BaseCommand.extend({ name: 'electron:package', @@ -12,7 +12,7 @@ module.exports = BaseCommand.extend({ { name: 'platform', type: String, aliases: ['p'] }, { name: 'arch', type: String, aliases: ['a'] }, { name: 'skip-build', type: Boolean, aliases: ['s'], description: 'Skip the Ember build step and use an already-build from the output path.' }, - { name: 'output-path', type: 'Path', default: 'electron-out', aliases: ['o'] }, + { name: 'output-path', type: 'Path', default: packageOutPath, aliases: ['o'] }, ], async run(commandOptions) { diff --git a/lib/utils/build-paths.js b/lib/utils/build-paths.js index caf2e7bb..ec757596 100644 --- a/lib/utils/build-paths.js +++ b/lib/utils/build-paths.js @@ -8,10 +8,15 @@ const emberBuildPath = path.join(electronProjectPath, emberBuildDir); const emberTestBuildDir = 'ember-test'; const emberTestBuildPath = path.join(electronProjectPath, emberTestBuildDir); +const packageOutDir = 'out'; +const packageOutPath = path.join(electronProjectPath, packageOutDir); + module.exports = { electronProjectPath, emberBuildDir, emberBuildPath, emberTestBuildDir, - emberTestBuildPath + emberTestBuildPath, + packageOutDir, + packageOutPath }; diff --git a/node-tests/acceptance/end-to-end-test.js b/node-tests/acceptance/end-to-end-test.js index 1ab021d2..b92c0a8c 100644 --- a/node-tests/acceptance/end-to-end-test.js +++ b/node-tests/acceptance/end-to-end-test.js @@ -1,9 +1,16 @@ 'use strict'; -const { electronProjectPath } = require('../../lib/utils/build-paths'); +const { + electronProjectPath, + packageOutPath, + emberBuildDir, + emberTestBuildDir, + emberTestBuildPath +} = require('../../lib/utils/build-paths'); const path = require('path'); const { existsSync, + readdirSync, readFileSync, readJsonSync, removeSync, @@ -68,7 +75,7 @@ describe('end-to-end', function() { }); afterEach(() => { - removeSync('electron-out'); + removeSync(packageOutPath); }); if (!process.env.END_TO_END_TESTS || process.env.END_TO_END_TESTS === 'yarn') { @@ -124,8 +131,23 @@ describe('end-to-end', function() { } function runTests() { - it('tests', () => { - return expect(ember('electron:test')).to.eventually.be.fulfilled; + before(function() { + // + // Install fixture + // + let fixturePath = path.resolve(__dirname, '..', 'fixtures', 'ember-test'); + + // Append our extra test content to the end of test-index.js + let testIndexPath = path.join('electron-app', 'tests', 'index.js'); + let extraContentPath = path.join(fixturePath, 'test-index-extra.js'); + let content = [ + readFileSync(testIndexPath), + readFileSync(extraContentPath), + ].join('\n'); + writeFileSync(testIndexPath, content); + + // Copy the source files over + ncp(path.join(fixturePath, 'src'), path.join(electronProjectPath, 'src')); }); it('builds', () => { @@ -134,41 +156,43 @@ describe('end-to-end', function() { }); }); - it('packages', () => { - return ember('electron:package').then(() => { - expect(existsSync(path.join('electron-out', `ee-test-app-${process.platform}-${process.arch}`))).to.be.ok; - }); + it('tests', () => { + return expect(ember('electron:test')).to.eventually.be.fulfilled; + }); + + it('packages', async function() { + expect(existsSync(emberTestBuildPath)).to.be.ok; + expect(existsSync(path.join(electronProjectPath, 'tests'))).to.be.ok; + + await expect(ember('electron:package')).to.be.fulfilled; + + let packageDir = path.join(packageOutPath, `ee-test-app-${process.platform}-${process.arch}`); + expect(existsSync(packageDir)).to.be.ok; + + let appPath; + if (process.platform === 'darwin') { + appPath = 'ee-test-app.app/Contents/Resources/app/'; + } else { + appPath = 'resources/app'; + } + + let entries = readdirSync(path.join(packageDir, appPath)); + expect(entries).to.include(emberBuildDir); + expect(entries).not.to.include(emberTestBuildDir); + expect(entries).not.to.include('tests'); }); it('makes', () => { // Only build zip target so we don't fail from missing platform dependencies // (e.g. rpmbuild) return ember('electron:make', '--targets', '@electron-forge/maker-zip').then(() => { - expect(existsSync(path.join('electron-out', 'make'))).to.be.ok; + expect(existsSync(path.join(packageOutPath, 'make'))).to.be.ok; }); }); - it('lints', async function() { + it('lints after other commands have run', async function() { await expect(run('./node_modules/.bin/eslint', [ '.' ])).to.be.fulfilled; }); - - it('extra checks pass', () => { - let fixturePath = path.resolve(__dirname, '..', 'fixtures', 'ember-test'); - - // Append our extra test content to the end of test-index.js - let testIndexPath = path.join('electron-app', 'tests', 'index.js'); - let extraContentPath = path.join(fixturePath, 'test-index-extra.js'); - let content = [ - readFileSync(testIndexPath), - readFileSync(extraContentPath), - ].join('\n'); - writeFileSync(testIndexPath, content); - - // Copy the source files over - ncp(path.join(fixturePath, 'src'), path.join(electronProjectPath, 'src')); - - return expect(ember('electron:test')).to.eventually.be.fulfilled; - }); } }); diff --git a/node-tests/integration/commands/make-test.js b/node-tests/integration/commands/make-test.js index 3e9a1ffb..020e8a96 100644 --- a/node-tests/integration/commands/make-test.js +++ b/node-tests/integration/commands/make-test.js @@ -42,7 +42,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out', + outDir: 'electron-app/out', skipPackage: false }); expect(api.make.firstCall).to.be.calledAfter(buildTaskStub.firstCall); @@ -72,7 +72,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out', + outDir: 'electron-app/out', skipPackage: false }); }); @@ -83,7 +83,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out', + outDir: 'electron-app/out', skipPackage: true }); }); @@ -94,7 +94,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out', + outDir: 'electron-app/out', skipPackage: true }); }); @@ -120,7 +120,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out', + outDir: 'electron-app/out', skipPackage: false, overrideTargets: [ 'zip' ] }); @@ -131,7 +131,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out', + outDir: 'electron-app/out', skipPackage: false, overrideTargets: [ 'zip', 'dmg', 'deb' ] }); diff --git a/node-tests/integration/commands/package-test.js b/node-tests/integration/commands/package-test.js index 30ee91fa..8bfecac5 100644 --- a/node-tests/integration/commands/package-test.js +++ b/node-tests/integration/commands/package-test.js @@ -42,7 +42,7 @@ describe('electron:package command', function() { expect(api.package).to.be.calledOnce; expect(api.package.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-out' + outDir: 'electron-app/out' }); expect(api.package.firstCall).to.be.calledAfter(buildTaskStub.firstCall); }); diff --git a/testem-electron.js b/testem-electron.js deleted file mode 100644 index c8a339d4..00000000 --- a/testem-electron.js +++ /dev/null @@ -1,31 +0,0 @@ -/* eslint-env node */ -module.exports = { - test_page: 'tests/index.html?hidepassed', - disable_watching: true, - launchers: { - Electron: require('./lib/test-support/test-runner'), - }, - launch_in_ci: [ - 'Electron', - ], - launch_in_dev: [ - 'Electron', - ], - browser_args: { - Electron: { - // Note: Some these Chrome options may not be supported in Electron - // See https://electronjs.org/docs/api/chrome-command-line-switches - ci: [ - // --no-sandbox may be needed when running inside a container - process.env.CI ? '--no-sandbox' : null, - '--headless', - '--disable-gpu', - '--disable-dev-shm-usage', - '--disable-software-rasterizer', - '--mute-audio', - '--remote-debugging-port=0', - '--window-size=1440,900', - ].filter(Boolean), - }, - }, -}; diff --git a/tests/dummy/app/templates/docs/guides/ci.md b/tests/dummy/app/templates/docs/guides/ci.md index 1a9cae33..0ca5fd15 100644 --- a/tests/dummy/app/templates/docs/guides/ci.md +++ b/tests/dummy/app/templates/docs/guides/ci.md @@ -1,12 +1,31 @@ # Running CI Tests on Travis CI, Circle CI, Jenkins and other headless systems -You can test your application using Electron with the `ember electron:test` command. However, because Chromium requires a display to work, you will need to create a fake display during your test in a headless environment like Travis CI or Circle CI. This addon automatically configures `.travis.yml`, but if you'd like to configure it manually, ensure that you take the following steps: +To run Electron tests in CI, you need to run the `ember electron:test` command. But some additional setup is usually required. + +## Installing Electron dependencies + +In CI you'll need to make sure that you've installed your Electron app dependencies as well as your Ember dependencies, which means running `yarn` or `npm install` in `electron-app/`. `ember-electron`'s blueprint sets this up for you in `.travis.yml`, but if it fails, or you use a different CI provider, or you want to configure it manually, you'll need to add something like + +```sh +cd electron-app && yarn +``` + +or + +```sh +cd electron-app && npm install +``` + +## Setting up a virtual display + +Because Chromium requires a display to work, you will need to create a fake display during your test in a headless environment like Travis CI or Circle CI. `ember-electron`'s blueprint sets this up for you in `.travis.yml`, but if it fails, or you use a different CI provider, or you want to configure it manually, ensure that you take the following steps: * Install [`xvfb`](https://en.wikipedia.org/wiki/Xvfb). It's a virtual framebuffer, implementing the X11 display server protocol - it performs all graphical operations in memory without showing any screen output, which is exactly what we need. A [Jenkins addon is available](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin). * Create a virtual `xvfb` screen and export an environment variable called `DISPLAY` that points to it. Electron will automatically pick it up. - * Finally, ensure that `npm test` or `yarn test` actually calls `ember electron:test`. You can configure what command `npm test executes` by changing it in your `package.json`. -When you first install `ember-electron`, the blueprint will update your .travis.yml, but if it fails or you need to do it manually for some reason, your configuration should include the following: +## .travis.yml + +The result of both of the above steps will look something like this in `.travis.yml`: ```yaml addons: @@ -16,6 +35,7 @@ addons: install: - + - cd electron-app && - export DISPLAY=':99.0' - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & ``` diff --git a/yarn.lock b/yarn.lock index 67fb841a..ee9f1f89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5025,11 +5025,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" From e83276d2c03b830e9095f69930a42cc28142f851 Mon Sep 17 00:00:00 2001 From: Jacob Date: Sun, 24 Nov 2019 09:50:31 -0600 Subject: [PATCH 23/24] fix: don't assume POSIX path separator --- node-tests/integration/commands/make-test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/node-tests/integration/commands/make-test.js b/node-tests/integration/commands/make-test.js index 020e8a96..eff46121 100644 --- a/node-tests/integration/commands/make-test.js +++ b/node-tests/integration/commands/make-test.js @@ -42,7 +42,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out', + outDir: path.join('electron-app', 'out'), skipPackage: false }); expect(api.make.firstCall).to.be.calledAfter(buildTaskStub.firstCall); @@ -72,7 +72,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out', + outDir: path.join('electron-app', 'out'), skipPackage: false }); }); @@ -83,7 +83,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out', + outDir: path.join('electron-app', 'out'), skipPackage: true }); }); @@ -94,7 +94,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out', + outDir: path.join('electron-app', 'out'), skipPackage: true }); }); @@ -120,7 +120,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out', + outDir: path.join('electron-app', 'out'), skipPackage: false, overrideTargets: [ 'zip' ] }); @@ -131,7 +131,7 @@ describe('electron:make command', function() { expect(api.make).to.be.calledOnce; expect(api.make.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out', + outDir: path.join('electron-app', 'out'), skipPackage: false, overrideTargets: [ 'zip', 'dmg', 'deb' ] }); From 09b5fc5b75189709af4d6b289ca7a45284e43ed0 Mon Sep 17 00:00:00 2001 From: Jacob Date: Sun, 24 Nov 2019 10:07:53 -0600 Subject: [PATCH 24/24] fixup! fix: don't assume POSIX path separator Oops, I missed one in the previous commit. If rebasing, please squash this :) --- node-tests/integration/commands/package-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-tests/integration/commands/package-test.js b/node-tests/integration/commands/package-test.js index 8bfecac5..298ad017 100644 --- a/node-tests/integration/commands/package-test.js +++ b/node-tests/integration/commands/package-test.js @@ -42,7 +42,7 @@ describe('electron:package command', function() { expect(api.package).to.be.calledOnce; expect(api.package.firstCall.args[0]).to.deep.equal({ dir: 'electron-app', - outDir: 'electron-app/out' + outDir: path.join('electron-app', 'out') }); expect(api.package.firstCall).to.be.calledAfter(buildTaskStub.firstCall); });