From ff2ed0a70a26833b61ac19f733af22939af7a720 Mon Sep 17 00:00:00 2001 From: Darangi Date: Thu, 26 Mar 2020 19:34:13 +0100 Subject: [PATCH 01/49] :arrow_up: language-php@0.44.5 --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47ecc3f5a..b44e30045 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4393,8 +4393,8 @@ "integrity": "sha512-XXHULyFvbxAiRoj+MxIXoeO//in3bQctHZbaD72p3vFxm3klxe2ebx7b3cFmFYqf/g0eajmLrR3tR5m1Rmz1XQ==" }, "language-php": { - "version": "https://www.atom.io/api/packages/language-php/versions/0.44.4/tarball", - "integrity": "sha512-DmXEgSt32uqyrd9Fj9rDqqsmRzX7pDdYZAxO+COXVvTWvgbQPTf1Id3fwg2KxVYhXCUwVfdGVez5Xe/1OvYcCQ==" + "version": "https://www.atom.io/api/packages/language-php/versions/0.44.5/tarball", + "integrity": "sha512-MYs1c5EFZjpAJttQOD2YM+bHbeBFQXZkoeTumegMP4fa5U3mNHYraLjXZKXKggoF5Ba0DKFRV3izhf22pYAJ7A==" }, "language-property-list": { "version": "https://www.atom.io/api/packages/language-property-list/versions/0.9.1/tarball", diff --git a/package.json b/package.json index 6ef90e0fa..613f844eb 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "language-mustache": "https://www.atom.io/api/packages/language-mustache/versions/0.14.5/tarball", "language-objective-c": "https://www.atom.io/api/packages/language-objective-c/versions/0.16.0/tarball", "language-perl": "https://www.atom.io/api/packages/language-perl/versions/0.38.1/tarball", - "language-php": "https://www.atom.io/api/packages/language-php/versions/0.44.4/tarball", + "language-php": "https://www.atom.io/api/packages/language-php/versions/0.44.5/tarball", "language-property-list": "https://www.atom.io/api/packages/language-property-list/versions/0.9.1/tarball", "language-python": "https://www.atom.io/api/packages/language-python/versions/0.53.4/tarball", "language-ruby": "https://www.atom.io/api/packages/language-ruby/versions/0.72.23/tarball", @@ -249,7 +249,7 @@ "language-mustache": "0.14.5", "language-objective-c": "0.16.0", "language-perl": "0.38.1", - "language-php": "0.44.4", + "language-php": "0.44.5", "language-property-list": "0.9.1", "language-python": "0.53.4", "language-ruby": "0.72.23", From b43b0d5d291776999be9ec27c2e1f88221be701c Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 13 May 2020 15:20:02 -0400 Subject: [PATCH 02/49] :memo: README.md: Update python for manual Linux installs We support Python 3 now. Use that in the default instructions, but explain that `python2` or `python` will work in its place. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 23a37611b..b8b9ff9da 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,8 @@ An archive is available for people who don't want to install `atom` as root. This version enables you to install multiple Atom versions in parallel. It has been built on Ubuntu 64-bit, but should be compatible with other Linux distributions. -1. Install dependencies (on Ubuntu): `sudo apt install git gconf2 gconf-service libgtk2.0-0 libudev1 libgcrypt20 libnotify4 libxtst6 libnss3 python gvfs-bin xdg-utils libcap2` +1. Install dependencies (on Ubuntu): `sudo apt install git gconf2 gconf-service libgtk2.0-0 libudev1 libgcrypt20 libnotify4 libxtst6 libnss3 python3 gvfs-bin xdg-utils libcap2` + 1. (If the `python3` package isn't available, or is too old (Python 3 should be >= 3.5), either `python2` or `python` will work in its place.) 2. Download `atom-amd64.tar.gz` from the [Atom releases page](https://github.com/atom/atom/releases/latest). 3. Run `tar xf atom-amd64.tar.gz` in the directory where you want to extract the Atom folder. 4. Launch Atom using the installed `atom` command from the newly extracted directory. From 10811f1158d7956fafb78aeff490f3a65de0f137 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 13 May 2020 15:28:11 -0400 Subject: [PATCH 03/49] :fire: Lintian overrides These overrides are very outdated. (Haven't been updated since the day they were added, back in 2014.) Even with these applied, Lintian still prints many warns/errors. I think no-one has been running Lintian against the .deb package for a while now. --- resources/linux/debian/lintian-overrides | 7 ------- script/lib/create-debian-package.js | 20 -------------------- 2 files changed, 27 deletions(-) delete mode 100644 resources/linux/debian/lintian-overrides diff --git a/resources/linux/debian/lintian-overrides b/resources/linux/debian/lintian-overrides deleted file mode 100644 index 8a33af0a7..000000000 --- a/resources/linux/debian/lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -atom: arch-dependent-file-in-usr-share -atom: changelog-file-missing-in-native-package -atom: copyright-file-contains-full-apache-2-license -atom: copyright-should-refer-to-common-license-file-for-apache-2 -atom: embedded-library -atom: package-installs-python-bytecode -atom: unstripped-binary-or-object diff --git a/script/lib/create-debian-package.js b/script/lib/create-debian-package.js index e79d256e8..af94058aa 100644 --- a/script/lib/create-debian-package.js +++ b/script/lib/create-debian-package.js @@ -54,11 +54,6 @@ module.exports = function(packagedAppPath) { debianPackageShareDirPath, 'pixmaps' ); - const debianPackageLintianOverridesDirPath = path.join( - debianPackageShareDirPath, - 'lintian', - 'overrides' - ); const debianPackageDocsDirPath = path.join( debianPackageShareDirPath, 'doc', @@ -93,7 +88,6 @@ module.exports = function(packagedAppPath) { fs.mkdirpSync(debianPackageShareDirPath); fs.mkdirpSync(debianPackageApplicationsDirPath); fs.mkdirpSync(debianPackageIconsDirPath); - fs.mkdirpSync(debianPackageLintianOverridesDirPath); fs.mkdirpSync(debianPackageDocsDirPath); fs.mkdirpSync(debianPackageBinDirPath); @@ -190,20 +184,6 @@ module.exports = function(packagedAppPath) { path.join(debianPackageDocsDirPath, 'copyright') ); - console.log( - `Copying lintian overrides into "${debianPackageLintianOverridesDirPath}"` - ); - fs.copySync( - path.join( - CONFIG.repositoryRootPath, - 'resources', - 'linux', - 'debian', - 'lintian-overrides' - ), - path.join(debianPackageLintianOverridesDirPath, atomExecutableName) - ); - console.log( `Copying polkit configuration into "${debianPackageShareDirPath}"` ); From b86afa5854c84bfa223a5e4d7ed3866f06b35ca5 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Fri, 29 May 2020 00:34:00 -0400 Subject: [PATCH 04/49] script: Reimplement node-gyp's find-python library Use this to find python for the verify-machine-requirements.js script. --- script/lib/verify-machine-requirements.js | 114 +++++++++++++++++----- 1 file changed, 87 insertions(+), 27 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 51ca5a6cd..d3f0009ce 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -9,9 +9,7 @@ const CONFIG = require('../config'); module.exports = function(ci) { verifyNode(); verifyNpm(ci); - if (process.platform === 'win32') { - verifyPython(); - } + verifyPython(); }; function verifyNode() { @@ -50,36 +48,98 @@ function verifyNpm(ci) { } function verifyPython() { - const systemDrive = process.env.SystemDrive || 'C:\\'; - let pythonExecutable; - if (process.env.PYTHON) { - pythonExecutable = process.env.PYTHON; - } else { - const pythonBinPath = path.join(systemDrive, 'Python27', 'python.exe'); - if (fs.existsSync(pythonBinPath)) { - pythonExecutable = pythonBinPath; - } else { - pythonExecutable = 'python'; + // This function essentially re-implements node-gyp's "find-python.js" library, + // but in a synchronous, bootstrap-script-friendly way. + // It is based off of the logic of the file from node-gyp v5.x: + // https://github.com/nodejs/node-gyp/blob/v5.1.1/lib/find-python.js + // This node-gyp is the version in use by current npm (in mid 2020). + // + // TODO: If apm ships a newer version of node-gyp (v6.x or later), please update this script. + // Particularly, node-gyp v6.x looks for python3 first, then python, then python2. + // (In contrast: node-gyp v5.x looks for python first, then python2, then python3.) + // Also, node-gyp v7.x or later will probably drop the "-2" flag from "py.exe", + // so as to allow finding Python 3 as well, not just Python 2. + // https://github.com/nodejs/node-gyp/pull/2124#issuecomment-633812957 + + var stdout; + var fullVersion; + var usablePythonWasFound; + + function verifyBinary(binary, prependFlag) { + if (binary && !usablePythonWasFound) { + let allFlags = ['-c', 'import platform\nprint(platform.python_version())']; + if (prependFlag) { + // prependFlag is an optional argument, + // used to prepend "-2" for the "py.exe" launcher. + // TODO: Refactor by eliminating prependFlag + // once apm updates to node-gyp v7.x+, when it is anticipated + // that the "-2" flag will be dropped for invoking the py launcher. + allFlags.unshift(prependFlag); + } + + try { + stdout = childProcess.execFileSync( + binary, + allFlags, + { env: process.env, stdio: ['ignore', 'pipe', 'ignore'] } + ); + } catch { + } + + if (stdout) { + if (stdout.indexOf('+') !== -1) stdout = stdout.toString().replace(/\+/g, ''); + if (stdout.indexOf('rc') !== -1) stdout = stdout.toString().replace(/rc(.*)$/gi, ''); + fullVersion = stdout.toString().trim(); + } + + if (fullVersion) { + var versionComponents = fullVersion.split('.'); + var majorVersion = Number(versionComponents[0]); + var minorVersion = Number(versionComponents[1]); + if (majorVersion === 2 && minorVersion === 7 || majorVersion === 3 && minorVersion >= 5) { + usablePythonWasFound = true; + } else { + stdout = ''; + } + } } } - let stdout = childProcess.execFileSync( - pythonExecutable, - ['-c', 'import platform\nprint(platform.python_version())'], - { env: process.env } - ); - if (stdout.indexOf('+') !== -1) stdout = stdout.replace(/\+/g, ''); - if (stdout.indexOf('rc') !== -1) stdout = stdout.replace(/rc(.*)$/gi, ''); - const fullVersion = stdout.toString().trim(); - const versionComponents = fullVersion.split('.'); - const majorVersion = Number(versionComponents[0]); - const minorVersion = Number(versionComponents[1]); - if (majorVersion === 2 && minorVersion === 7) { + function verifyForcedBinary(binary) { + if (typeof binary !== 'undefined' && binary.length > 0) { + verifyBinary(binary); + if (!usablePythonWasFound){ + throw new Error( + `NODE_GYP_FORCE_PYTHON is set to: "${binary}", but this is not a valid Python.\n` + + 'Please set NODE_GYP_FORCE_PYTHON to something valid, or unset it entirely.\n' + + '(Python 2.7 or 3.5+ is required to build Atom.)\n' + ); + } + } + } + + // These first two checks do nothing if the relevant + // environment variables aren't set. + verifyForcedBinary(process.env.NODE_GYP_FORCE_PYTHON); + // All the following checks will no-op if a previous check has succeeded. + verifyBinary(process.env.PYTHON); + verifyBinary('python'); + verifyBinary('python2'); + verifyBinary('python3'); + if (process.platform === 'win32') { + verifyBinary('py.exe', '-2'); + verifyBinary(path.join(process.env.SystemDrive || 'C:', 'Python27', 'python.exe')); + verifyBinary(path.join(process.env.SystemDrive || 'C:', 'Python37', 'python.exe')); + } + + if (usablePythonWasFound) { console.log(`Python:\tv${fullVersion}`); } else { throw new Error( - `Python 2.7 is required to build Atom. ${pythonExecutable} returns version ${fullVersion}.\n` + - `Set the PYTHON env var to '/path/to/Python27/python.exe' if your python is installed in a non-default location.` + 'Python 2.7 or 3.5+ is required to build Atom.\n' + + 'verify-machine-requirements.js was unable to find such a version of Python.\n' + + "Set the PYTHON env var to e.g. 'C:/path/to/Python27/python.exe'\n" + + 'if your Python is installed in a non-default location.\n' ); } } From b383e0a0db889d94f7d3c5f3172b278ca134037c Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Fri, 29 May 2020 23:40:09 -0400 Subject: [PATCH 05/49] :fire: .python-version .python-version specifies which version(s) of Python are in the PATH, and which version runs when you run the python, python2, or python3 commands. That said, it is overly specific for this repository's needs. In order to specify any version, you must enter it down to the patch level, e.g. 3.8.2; Major-minor versions aren't allowed, e.g. 2.7 If users want to add such a file on their own machines, they may... But it's unneccesary for this repository to ship this file as if there were specific "correct" versions of Python to use. Any Python 2.7.x or 3.5.0+ will work at the moment. There are other checks elsewhere in the project, such as in script/bootstrap. These should be sufficient to inform users which Python versions they can use. node-gyp will also tell you. --- .gitignore | 1 + .python-version | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 .python-version diff --git a/.gitignore b/.gitignore index 5457617c5..cd95b89a0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ Thumbs.db .svn .nvm-version .vscode +.python-version node_modules npm-debug.log debug.log diff --git a/.python-version b/.python-version deleted file mode 100644 index ecc17b8e9..000000000 --- a/.python-version +++ /dev/null @@ -1 +0,0 @@ -2.7.13 From 2c6c14d1977b9f92dbeb702e3b89a652f9fadbe6 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Sat, 30 May 2020 15:30:05 -0400 Subject: [PATCH 06/49] script: Add attempt logging for verifyPython() Log which Python commands were tried, and the results, if no usable Python was found. Useful for debugging failures. --- script/lib/verify-machine-requirements.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index d3f0009ce..27eb73bf4 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -64,6 +64,7 @@ function verifyPython() { var stdout; var fullVersion; var usablePythonWasFound; + var triedLog = ''; function verifyBinary(binary, prependFlag) { if (binary && !usablePythonWasFound) { @@ -102,6 +103,14 @@ function verifyPython() { stdout = ''; } } + + // Prepare to log which commands were tried, and the results, in case no usable Python can be found. + if (prependFlag) { + var binaryPlusFlag = binary.concat(' ' + prependFlag); + } else { + var binaryPlusFlag = binary; + } + triedLog = triedLog.concat('log message: tried to check version of "' + binaryPlusFlag + '", got: ' + fullVersion + '\n'); } } @@ -136,10 +145,11 @@ function verifyPython() { console.log(`Python:\tv${fullVersion}`); } else { throw new Error( - 'Python 2.7 or 3.5+ is required to build Atom.\n' + - 'verify-machine-requirements.js was unable to find such a version of Python.\n' + - "Set the PYTHON env var to e.g. 'C:/path/to/Python27/python.exe'\n" + - 'if your Python is installed in a non-default location.\n' + `\n${triedLog}\n` + + 'Python 2.7 or 3.5+ is required to build Atom.\n' + + 'verify-machine-requirements.js was unable to find such a version of Python.\n' + + "Set the PYTHON env var to e.g. 'C:/path/to/Python27/python.exe'\n" + + 'if your Python is installed in a non-default location.\n' ); } } From 2656d197144fc6be3b7c1869e4c6a04074800004 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Sat, 30 May 2020 17:41:59 -0400 Subject: [PATCH 07/49] ci: Update Windows build from Python 2.7 to 3.8 Python 2 is officially end-of-life. We can use Python 3 now. --- script/vsts/platforms/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index 23782335a..d1035135d 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -22,7 +22,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '2.7' + versionSpec: '3.8' - task: NodeTool@0 inputs: From 4d9d6fa1714ba08d26efd3c5b7522047c76d7e91 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Sat, 30 May 2020 18:40:27 -0400 Subject: [PATCH 08/49] :shirt: Fix lints (verify-machine-requirements.js) --- script/lib/verify-machine-requirements.js | 60 ++++++++++++++--------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 27eb73bf4..24b0ccf9f 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -1,7 +1,6 @@ 'use strict'; const childProcess = require('child_process'); -const fs = require('fs'); const path = require('path'); const CONFIG = require('../config'); @@ -65,10 +64,14 @@ function verifyPython() { var fullVersion; var usablePythonWasFound; var triedLog = ''; + var binaryPlusFlag; function verifyBinary(binary, prependFlag) { if (binary && !usablePythonWasFound) { - let allFlags = ['-c', 'import platform\nprint(platform.python_version())']; + let allFlags = [ + '-c', + 'import platform\nprint(platform.python_version())' + ]; if (prependFlag) { // prependFlag is an optional argument, // used to prepend "-2" for the "py.exe" launcher. @@ -79,17 +82,17 @@ function verifyPython() { } try { - stdout = childProcess.execFileSync( - binary, - allFlags, - { env: process.env, stdio: ['ignore', 'pipe', 'ignore'] } - ); - } catch { - } + stdout = childProcess.execFileSync(binary, allFlags, { + env: process.env, + stdio: ['ignore', 'pipe', 'ignore'] + }); + } catch {} if (stdout) { - if (stdout.indexOf('+') !== -1) stdout = stdout.toString().replace(/\+/g, ''); - if (stdout.indexOf('rc') !== -1) stdout = stdout.toString().replace(/rc(.*)$/gi, ''); + if (stdout.indexOf('+') !== -1) + stdout = stdout.toString().replace(/\+/g, ''); + if (stdout.indexOf('rc') !== -1) + stdout = stdout.toString().replace(/rc(.*)$/gi, ''); fullVersion = stdout.toString().trim(); } @@ -97,7 +100,10 @@ function verifyPython() { var versionComponents = fullVersion.split('.'); var majorVersion = Number(versionComponents[0]); var minorVersion = Number(versionComponents[1]); - if (majorVersion === 2 && minorVersion === 7 || majorVersion === 3 && minorVersion >= 5) { + if ( + (majorVersion === 2 && minorVersion === 7) || + (majorVersion === 3 && minorVersion >= 5) + ) { usablePythonWasFound = true; } else { stdout = ''; @@ -106,22 +112,28 @@ function verifyPython() { // Prepare to log which commands were tried, and the results, in case no usable Python can be found. if (prependFlag) { - var binaryPlusFlag = binary.concat(' ' + prependFlag); + binaryPlusFlag = binary.concat(' ' + prependFlag); } else { - var binaryPlusFlag = binary; + binaryPlusFlag = binary; } - triedLog = triedLog.concat('log message: tried to check version of "' + binaryPlusFlag + '", got: ' + fullVersion + '\n'); + triedLog = triedLog.concat( + 'log message: tried to check version of "' + + binaryPlusFlag + + '", got: ' + + fullVersion + + '\n' + ); } } function verifyForcedBinary(binary) { if (typeof binary !== 'undefined' && binary.length > 0) { verifyBinary(binary); - if (!usablePythonWasFound){ + if (!usablePythonWasFound) { throw new Error( `NODE_GYP_FORCE_PYTHON is set to: "${binary}", but this is not a valid Python.\n` + 'Please set NODE_GYP_FORCE_PYTHON to something valid, or unset it entirely.\n' + - '(Python 2.7 or 3.5+ is required to build Atom.)\n' + '(Python 2.7 or 3.5+ is required to build Atom.)\n' ); } } @@ -137,8 +149,12 @@ function verifyPython() { verifyBinary('python3'); if (process.platform === 'win32') { verifyBinary('py.exe', '-2'); - verifyBinary(path.join(process.env.SystemDrive || 'C:', 'Python27', 'python.exe')); - verifyBinary(path.join(process.env.SystemDrive || 'C:', 'Python37', 'python.exe')); + verifyBinary( + path.join(process.env.SystemDrive || 'C:', 'Python27', 'python.exe') + ); + verifyBinary( + path.join(process.env.SystemDrive || 'C:', 'Python37', 'python.exe') + ); } if (usablePythonWasFound) { @@ -147,9 +163,9 @@ function verifyPython() { throw new Error( `\n${triedLog}\n` + 'Python 2.7 or 3.5+ is required to build Atom.\n' + - 'verify-machine-requirements.js was unable to find such a version of Python.\n' + - "Set the PYTHON env var to e.g. 'C:/path/to/Python27/python.exe'\n" + - 'if your Python is installed in a non-default location.\n' + 'verify-machine-requirements.js was unable to find such a version of Python.\n' + + "Set the PYTHON env var to e.g. 'C:/path/to/Python27/python.exe'\n" + + 'if your Python is installed in a non-default location.\n' ); } } From 893f84cb5a4ac217fe616e497f3a3d2536deeb6d Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Sat, 30 May 2020 21:50:03 -0400 Subject: [PATCH 09/49] script: Refactor log strings for readability in script/lib/verify-machine-requirements.js --- script/lib/verify-machine-requirements.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 24b0ccf9f..26975ee7a 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -112,16 +112,12 @@ function verifyPython() { // Prepare to log which commands were tried, and the results, in case no usable Python can be found. if (prependFlag) { - binaryPlusFlag = binary.concat(' ' + prependFlag); + binaryPlusFlag = binary + ' ' + prependFlag; } else { binaryPlusFlag = binary; } triedLog = triedLog.concat( - 'log message: tried to check version of "' + - binaryPlusFlag + - '", got: ' + - fullVersion + - '\n' + `log message: tried to check version of "${binaryPlusFlag}", got: ${fullVersion}\n` ); } } From b1288ca7bb37a08952a35e37deaa2475c75d047c Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 3 Jun 2020 16:14:35 -0400 Subject: [PATCH 10/49] script: correct failure logging in verifyPython() Make sure a previously found version isn't erroneously logged, by clearing the "fullVersion" variable before each new check. --- script/lib/verify-machine-requirements.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 26975ee7a..376a0cc85 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -68,6 +68,8 @@ function verifyPython() { function verifyBinary(binary, prependFlag) { if (binary && !usablePythonWasFound) { + fullVersion = ''; + let allFlags = [ '-c', 'import platform\nprint(platform.python_version())' @@ -117,7 +119,7 @@ function verifyPython() { binaryPlusFlag = binary; } triedLog = triedLog.concat( - `log message: tried to check version of "${binaryPlusFlag}", got: ${fullVersion}\n` + `log message: tried to check version of "${binaryPlusFlag}", got: "${fullVersion}"\n` ); } } From 8965d32bcbdd65128c013fe83ff9a533ac3c1393 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 3 Jun 2020 17:03:40 -0400 Subject: [PATCH 11/49] script: Use "let" not "var" in verifyPython() --- script/lib/verify-machine-requirements.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 376a0cc85..1829f6ca4 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -60,11 +60,11 @@ function verifyPython() { // so as to allow finding Python 3 as well, not just Python 2. // https://github.com/nodejs/node-gyp/pull/2124#issuecomment-633812957 - var stdout; - var fullVersion; - var usablePythonWasFound; - var triedLog = ''; - var binaryPlusFlag; + let stdout; + let fullVersion; + let usablePythonWasFound; + let triedLog = ''; + let binaryPlusFlag; function verifyBinary(binary, prependFlag) { if (binary && !usablePythonWasFound) { @@ -99,9 +99,9 @@ function verifyPython() { } if (fullVersion) { - var versionComponents = fullVersion.split('.'); - var majorVersion = Number(versionComponents[0]); - var minorVersion = Number(versionComponents[1]); + let versionComponents = fullVersion.split('.'); + let majorVersion = Number(versionComponents[0]); + let minorVersion = Number(versionComponents[1]); if ( (majorVersion === 2 && minorVersion === 7) || (majorVersion === 3 && minorVersion >= 5) From bb2cfa95553d312d1d094a862bffd290e22964b6 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 3 Jun 2020 20:54:50 -0400 Subject: [PATCH 12/49] script: Update comments for node-gyp 7.0 release --- script/lib/verify-machine-requirements.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 1829f6ca4..00c22ee66 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -56,9 +56,9 @@ function verifyPython() { // TODO: If apm ships a newer version of node-gyp (v6.x or later), please update this script. // Particularly, node-gyp v6.x looks for python3 first, then python, then python2. // (In contrast: node-gyp v5.x looks for python first, then python2, then python3.) - // Also, node-gyp v7.x or later will probably drop the "-2" flag from "py.exe", + // Also, node-gyp v7.x stopped using the "-2" flag for "py.exe", // so as to allow finding Python 3 as well, not just Python 2. - // https://github.com/nodejs/node-gyp/pull/2124#issuecomment-633812957 + // https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v700-2020-06-03 let stdout; let fullVersion; @@ -78,8 +78,8 @@ function verifyPython() { // prependFlag is an optional argument, // used to prepend "-2" for the "py.exe" launcher. // TODO: Refactor by eliminating prependFlag - // once apm updates to node-gyp v7.x+, when it is anticipated - // that the "-2" flag will be dropped for invoking the py launcher. + // once apm updates to node-gyp v7.x or newer, in which + // the "-2" flag has been dropped for invoking the py launcher. allFlags.unshift(prependFlag); } From fa4201a0a8d57a9ed91402a6b737d0c9abac8d78 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Sun, 7 Jun 2020 06:19:58 +0000 Subject: [PATCH 13/49] unnecessary directory check --- src/package-manager.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/package-manager.js b/src/package-manager.js index eabfbdf7b..a330cf87b 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -424,8 +424,7 @@ module.exports = class PackageManager { const packageName = path.basename(packagePath); if ( !packageName.startsWith('.') && - !packagesByName.has(packageName) && - fs.isDirectorySync(packagePath) + !packagesByName.has(packageName) ) { packages.push({ name: packageName, From 35f18fd99d11dd8bd48961745514ecf6ad10f490 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Mon, 8 Jun 2020 01:38:15 +0000 Subject: [PATCH 14/49] using withFileTypes to filter out non-folders no need to use path.basename --- src/package-manager.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/package-manager.js b/src/package-manager.js index a330cf87b..243f57da7 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -419,13 +419,17 @@ module.exports = class PackageManager { for (const packageDirPath of this.packageDirPaths) { if (fs.isDirectorySync(packageDirPath)) { - for (let packagePath of fs.readdirSync(packageDirPath)) { - packagePath = path.join(packageDirPath, packagePath); - const packageName = path.basename(packagePath); + + const packagePaths = fs.readdirSync(packageDirPath, { withFileTypes: true }) + .filter(dirent => dirent.isDirectory()) + .map(dirent => dirent.name); + + for (const packageName of packagePaths) { if ( !packageName.startsWith('.') && !packagesByName.has(packageName) ) { + const packagePath = path.join(packageDirPath, packageName); packages.push({ name: packageName, path: packagePath, From 6b807f7b29264e6f39a577890cece0f4a5c788cd Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Mon, 8 Jun 2020 05:58:05 +0000 Subject: [PATCH 15/49] run prettier --- src/package-manager.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/package-manager.js b/src/package-manager.js index 243f57da7..6668d7262 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -419,10 +419,11 @@ module.exports = class PackageManager { for (const packageDirPath of this.packageDirPaths) { if (fs.isDirectorySync(packageDirPath)) { - - const packagePaths = fs.readdirSync(packageDirPath, { withFileTypes: true }) - .filter(dirent => dirent.isDirectory()) - .map(dirent => dirent.name); + + const packagePaths = fs + .readdirSync(packageDirPath, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); for (const packageName of packagePaths) { if ( @@ -433,7 +434,7 @@ module.exports = class PackageManager { packages.push({ name: packageName, path: packagePath, - isBundled: false + isBundled: false, }); packagesByName.add(packageName); } From f78af03d08a5173cf32ccead3c326bec750eebd6 Mon Sep 17 00:00:00 2001 From: Isaac Clayton Date: Wed, 10 Jun 2020 09:04:13 -0600 Subject: [PATCH 16/49] Add async and await keywords to Rust highlighter This commit adds support for Rust's `async` and `await` keywords to `language-rust-bundled`. See #20905 for more information. --- packages/language-rust-bundled/grammars/tree-sitter-rust.cson | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/language-rust-bundled/grammars/tree-sitter-rust.cson b/packages/language-rust-bundled/grammars/tree-sitter-rust.cson index 651e2e247..ef011c924 100644 --- a/packages/language-rust-bundled/grammars/tree-sitter-rust.cson +++ b/packages/language-rust-bundled/grammars/tree-sitter-rust.cson @@ -131,6 +131,8 @@ scopes: '"where"': 'keyword.control' '"ref"': 'keyword.control' '"macro_rules!"': 'keyword.control' + '"async"': 'keyword.control' + '"await"': 'keyword.control' '"as"': 'keyword.operator' From 21580aa170a9d722d9bf020c23b5fac13567dde9 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sun, 24 May 2020 15:35:24 -0500 Subject: [PATCH 17/49] fix multi cursor correct setting --- spec/text-editor-component-spec.js | 14 +++++++------- src/text-editor-component.js | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/text-editor-component-spec.js b/spec/text-editor-component-spec.js index cee4eda1e..d6769dd59 100644 --- a/spec/text-editor-component-spec.js +++ b/spec/text-editor-component-spec.js @@ -4221,7 +4221,7 @@ describe('TextEditorComponent', () => { }); it('adds or removes cursors when holding cmd or ctrl when single-clicking', () => { - atom.config.set('core.editor.multiCursorOnClick', true); + atom.config.set('editor.multiCursorOnClick', true); const { component, editor } = buildComponent({ platform: 'darwin' }); expect(editor.getCursorScreenPositions()).toEqual([[0, 0]]); @@ -4302,7 +4302,7 @@ describe('TextEditorComponent', () => { }); it('adds word selections when holding cmd or ctrl when double-clicking', () => { - atom.config.set('core.editor.multiCursorOnClick', true); + atom.config.set('editor.multiCursorOnClick', true); const { component, editor } = buildComponent(); editor.addCursorAtScreenPosition([1, 16], { autoscroll: false }); expect(editor.getCursorScreenPositions()).toEqual([[0, 0], [1, 16]]); @@ -4329,7 +4329,7 @@ describe('TextEditorComponent', () => { }); it('adds line selections when holding cmd or ctrl when triple-clicking', () => { - atom.config.set('core.editor.multiCursorOnClick', true); + atom.config.set('editor.multiCursorOnClick', true); const { component, editor } = buildComponent(); editor.addCursorAtScreenPosition([1, 16], { autoscroll: false }); expect(editor.getCursorScreenPositions()).toEqual([[0, 0], [1, 16]]); @@ -4369,7 +4369,7 @@ describe('TextEditorComponent', () => { }); it('does not add cursors when holding cmd or ctrl when single-clicking', () => { - atom.config.set('core.editor.multiCursorOnClick', false); + atom.config.set('editor.multiCursorOnClick', false); const { component, editor } = buildComponent({ platform: 'darwin' }); expect(editor.getCursorScreenPositions()).toEqual([[0, 0]]); @@ -4411,7 +4411,7 @@ describe('TextEditorComponent', () => { }); it('does not add word selections when holding cmd or ctrl when double-clicking', () => { - atom.config.set('core.editor.multiCursorOnClick', false); + atom.config.set('editor.multiCursorOnClick', false); const { component, editor } = buildComponent(); component.didMouseDownOnContent( @@ -4435,7 +4435,7 @@ describe('TextEditorComponent', () => { }); it('does not add line selections when holding cmd or ctrl when triple-clicking', () => { - atom.config.set('core.editor.multiCursorOnClick', false); + atom.config.set('editor.multiCursorOnClick', false); const { component, editor } = buildComponent(); const { clientX, clientY } = clientPositionForCharacter( @@ -4557,7 +4557,7 @@ describe('TextEditorComponent', () => { }); it('expands the last selection on drag', () => { - atom.config.set('core.editor.multiCursorOnClick', true); + atom.config.set('editor.multiCursorOnClick', true); const { component, editor } = buildComponent(); spyOn(component, 'handleMouseDragUntilMouseUp'); diff --git a/src/text-editor-component.js b/src/text-editor-component.js index fff4fd224..6e92ace24 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -1994,7 +1994,7 @@ module.exports = class TextEditorComponent { return; } - const allowMultiCursor = atom.config.get('core.editor.multiCursorOnClick'); + const allowMultiCursor = atom.config.get('editor.multiCursorOnClick'); const addOrRemoveSelection = allowMultiCursor && (metaKey || (ctrlKey && platform !== 'darwin')); From c40cfd633e78721f9ecc9f8bb89ad4e64e748425 Mon Sep 17 00:00:00 2001 From: Mazen El-Kashef Date: Fri, 12 Jun 2020 13:44:05 -0500 Subject: [PATCH 18/49] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20language-gfm@0.90.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 26 ++++++++++++++------------ package.json | 4 ++-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index efd1ffcfe..b3ee3115f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "atom", - "version": "1.49.0-dev", + "version": "1.50.0-dev", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1273,11 +1273,11 @@ "dependencies": { "etch": { "version": "0.9.0", - "bundled": true + "resolved": false }, "semver": { "version": "5.7.1", - "bundled": true + "resolved": false } } }, @@ -1842,6 +1842,7 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "optional": true, "requires": { "hoek": "2.x.x" } @@ -2418,7 +2419,7 @@ "dependencies": { "grim": { "version": "2.0.2", - "bundled": true, + "resolved": false, "requires": { "event-kit": "^2.0.0" } @@ -2584,11 +2585,11 @@ "dependencies": { "etch": { "version": "0.9.0", - "bundled": true + "resolved": false }, "grim": { "version": "2.0.2", - "bundled": true, + "resolved": false, "requires": { "event-kit": "^2.0.0" } @@ -3532,14 +3533,14 @@ "dependencies": { "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": false, "requires": { "glob": "^7.1.3" } }, "temp": { "version": "0.8.4", - "bundled": true, + "resolved": false, "requires": { "rimraf": "~2.6.2" } @@ -3761,7 +3762,8 @@ "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "optional": true }, "home-or-tmp": { "version": "1.0.0", @@ -4325,8 +4327,8 @@ } }, "language-gfm": { - "version": "https://www.atom.io/api/packages/language-gfm/versions/0.90.7/tarball", - "integrity": "sha512-4be6dv7Nm0mzSdL9LUioMNZ4V+EQ7z9xUq+kAO+nWHjfUvTW3wOEdWAHLjRGDHDLkIa+M4YJaw20nsYC2YFhkg==" + "version": "https://www.atom.io/api/packages/language-gfm/versions/0.90.8/tarball", + "integrity": "sha512-YQ13ypnfPvQTcZ/8j6cUuLsYBoU88qqPlFTRXNXa72L1HVaahFDgG0d0a/QOdOnxrYBtmEWR/5Q3FNPwPpSehw==" }, "language-git": { "version": "https://www.atom.io/api/packages/language-git/versions/0.19.1/tarball", @@ -7476,7 +7478,7 @@ "dependencies": { "etch": { "version": "0.9.0", - "bundled": true + "resolved": false } } }, diff --git a/package.json b/package.json index cd1664882..3de76ecb8 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "language-coffee-script": "https://www.atom.io/api/packages/language-coffee-script/versions/0.50.0/tarball", "language-csharp": "https://www.atom.io/api/packages/language-csharp/versions/1.1.0/tarball", "language-css": "https://www.atom.io/api/packages/language-css/versions/0.44.4/tarball", - "language-gfm": "https://www.atom.io/api/packages/language-gfm/versions/0.90.7/tarball", + "language-gfm": "https://www.atom.io/api/packages/language-gfm/versions/0.90.8/tarball", "language-git": "https://www.atom.io/api/packages/language-git/versions/0.19.1/tarball", "language-go": "https://www.atom.io/api/packages/language-go/versions/0.47.2/tarball", "language-html": "https://www.atom.io/api/packages/language-html/versions/0.53.1/tarball", @@ -236,7 +236,7 @@ "language-coffee-script": "0.50.0", "language-csharp": "1.1.0", "language-css": "0.44.4", - "language-gfm": "0.90.7", + "language-gfm": "0.90.8", "language-git": "0.19.1", "language-go": "0.47.2", "language-html": "0.53.1", From 57809071aa2676697b7f43b1821614e6527094cc Mon Sep 17 00:00:00 2001 From: Mazen El-Kashef Date: Fri, 12 Jun 2020 14:58:44 -0500 Subject: [PATCH 19/49] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20language-typescript@?= =?UTF-8?q?0.6.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 28 ++++++++++++++++++---------- package.json | 4 ++-- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3ee3115f..f486b8833 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1273,11 +1273,13 @@ "dependencies": { "etch": { "version": "0.9.0", - "resolved": false + "resolved": "https://registry.npmjs.org/etch/-/etch-0.9.0.tgz", + "integrity": "sha1-CSJpiPLO4GkL3yCMyyXkFNXfrV8=" }, "semver": { "version": "5.7.1", - "resolved": false + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -2419,7 +2421,8 @@ "dependencies": { "grim": { "version": "2.0.2", - "resolved": false, + "resolved": "https://registry.npmjs.org/grim/-/grim-2.0.2.tgz", + "integrity": "sha512-Qj7hTJRfd87E/gUgfvM0YIH/g2UA2SV6niv6BYXk1o6w4mhgv+QyYM1EjOJQljvzgEj4SqSsRWldXIeKHz3e3Q==", "requires": { "event-kit": "^2.0.0" } @@ -2585,11 +2588,13 @@ "dependencies": { "etch": { "version": "0.9.0", - "resolved": false + "resolved": "https://registry.npmjs.org/etch/-/etch-0.9.0.tgz", + "integrity": "sha1-CSJpiPLO4GkL3yCMyyXkFNXfrV8=" }, "grim": { "version": "2.0.2", - "resolved": false, + "resolved": "https://registry.npmjs.org/grim/-/grim-2.0.2.tgz", + "integrity": "sha512-Qj7hTJRfd87E/gUgfvM0YIH/g2UA2SV6niv6BYXk1o6w4mhgv+QyYM1EjOJQljvzgEj4SqSsRWldXIeKHz3e3Q==", "requires": { "event-kit": "^2.0.0" } @@ -3533,14 +3538,16 @@ "dependencies": { "rimraf": { "version": "2.6.3", - "resolved": false, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { "glob": "^7.1.3" } }, "temp": { "version": "0.8.4", - "resolved": false, + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", "requires": { "rimraf": "~2.6.2" } @@ -4459,8 +4466,8 @@ "integrity": "sha512-6xFDqM6nZpynmxGKUS85iUWY0yeub7GYvLyzSOqDejMuOL5UXAITnSNcb7jhr+hQA8KTj5dCmRjphkAQER4Ucg==" }, "language-typescript": { - "version": "https://www.atom.io/api/packages/language-typescript/versions/0.6.2/tarball", - "integrity": "sha512-aSqO4xj5plYfgDcYVZBxC431h1RRkR8U4tSEgw9dFehYnxh5WHLELhsQXoLC6uwGnEen5PD7dTtKy4Qs6ZSTQw==", + "version": "https://www.atom.io/api/packages/language-typescript/versions/0.6.3/tarball", + "integrity": "sha512-F/ZnFXEF7C14/8JQ3T1kiCKVff+AB043LE5i0k3m86YsVl6IrjK6ElBNu5TsmUd7Se3STmqPfjn0Pf3280AZmg==", "requires": { "tree-sitter-typescript": "^0.16.1" } @@ -7478,7 +7485,8 @@ "dependencies": { "etch": { "version": "0.9.0", - "resolved": false + "resolved": "https://registry.npmjs.org/etch/-/etch-0.9.0.tgz", + "integrity": "sha1-CSJpiPLO4GkL3yCMyyXkFNXfrV8=" } } }, diff --git a/package.json b/package.json index 3de76ecb8..51edcb17e 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "language-text": "https://www.atom.io/api/packages/language-text/versions/0.7.4/tarball", "language-todo": "https://www.atom.io/api/packages/language-todo/versions/0.29.4/tarball", "language-toml": "https://www.atom.io/api/packages/language-toml/versions/0.20.0/tarball", - "language-typescript": "https://www.atom.io/api/packages/language-typescript/versions/0.6.2/tarball", + "language-typescript": "https://www.atom.io/api/packages/language-typescript/versions/0.6.3/tarball", "language-xml": "https://www.atom.io/api/packages/language-xml/versions/0.35.3/tarball", "language-yaml": "https://www.atom.io/api/packages/language-yaml/versions/0.32.0/tarball", "less-cache": "1.1.0", @@ -262,7 +262,7 @@ "language-text": "0.7.4", "language-todo": "0.29.4", "language-toml": "0.20.0", - "language-typescript": "0.6.2", + "language-typescript": "0.6.3", "language-xml": "0.35.3", "language-yaml": "0.32.0" }, From dc44ad2d1692b042c809d3fb4ac0718069866251 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 17 Jun 2020 16:33:58 -0400 Subject: [PATCH 20/49] script: Update comment in verifyPython() --- script/lib/verify-machine-requirements.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 00c22ee66..6b6a2e962 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -53,9 +53,10 @@ function verifyPython() { // https://github.com/nodejs/node-gyp/blob/v5.1.1/lib/find-python.js // This node-gyp is the version in use by current npm (in mid 2020). // - // TODO: If apm ships a newer version of node-gyp (v6.x or later), please update this script. - // Particularly, node-gyp v6.x looks for python3 first, then python, then python2. - // (In contrast: node-gyp v5.x looks for python first, then python2, then python3.) + // TODO: If this repo ships a newer version of node-gyp (v6.x or later), please update this script. + // (Currently, the build scripts and apm each depend on npm v6.14, which depends on node-gyp v5.) + // node-gyp v5.x looks for python first, then python2, then python3. + // node-gyp v6.x looks for python3 first, then python, then python2.) // Also, node-gyp v7.x stopped using the "-2" flag for "py.exe", // so as to allow finding Python 3 as well, not just Python 2. // https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v700-2020-06-03 From f8fecadcbb45d92a6d4fd56c7c9b2e7cbcc4ed9f Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Wed, 17 Jun 2020 16:43:38 -0400 Subject: [PATCH 21/49] script: Refactor variable use in verifyPython() --- script/lib/verify-machine-requirements.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 6b6a2e962..5181c4039 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -69,6 +69,8 @@ function verifyPython() { function verifyBinary(binary, prependFlag) { if (binary && !usablePythonWasFound) { + // clear re-used "result" variables now that we're checking another python binary. + stdout = ''; fullVersion = ''; let allFlags = [ @@ -108,8 +110,6 @@ function verifyPython() { (majorVersion === 3 && minorVersion >= 5) ) { usablePythonWasFound = true; - } else { - stdout = ''; } } From 20d5d217757978130d71f1a51a12b2d9c8f7ab73 Mon Sep 17 00:00:00 2001 From: Musa Ibrahim Date: Thu, 18 Jun 2020 01:07:51 +0100 Subject: [PATCH 22/49] init fixed search regex removed NPM check handle pr installed dependencies publish branch and create PR catch apm error pr deactivated token and used env variable instead some fixes --- script/lib/update-dependency/check-apm.js | 41 + script/lib/update-dependency/check-npm.js | 24 + script/lib/update-dependency/git.js | 55 + script/lib/update-dependency/index.js | 3 + script/lib/update-dependency/main.js | 69 + script/lib/update-dependency/pull-request.js | 34 + script/lib/update-dependency/util.js | 73 + script/package-lock.json | 1523 +++++++++++++++++- script/package.json | 6 +- 9 files changed, 1816 insertions(+), 12 deletions(-) create mode 100644 script/lib/update-dependency/check-apm.js create mode 100644 script/lib/update-dependency/check-npm.js create mode 100644 script/lib/update-dependency/git.js create mode 100644 script/lib/update-dependency/index.js create mode 100644 script/lib/update-dependency/main.js create mode 100644 script/lib/update-dependency/pull-request.js create mode 100644 script/lib/update-dependency/util.js diff --git a/script/lib/update-dependency/check-apm.js b/script/lib/update-dependency/check-apm.js new file mode 100644 index 000000000..ed5a9ccdf --- /dev/null +++ b/script/lib/update-dependency/check-apm.js @@ -0,0 +1,41 @@ +const fetch = require('node-fetch'); +// this may be updated to use github releases instead +module.exports = async function({ dependencies, packageDependencies }) { + try { + console.log('Checking apm registry...'); + const coreDependencies = Object.keys(dependencies).filter(dependency => { + // all core packages point to a remote url + return dependencies[dependency].match(new RegExp('^https?://')); + }); + + const promises = coreDependencies.map(async dependency => { + return fetch(`https://atom.io/api/packages/${dependency}`) + .then(res => res.json()) + .then(res => res) + .catch(ex => console.log(ex.message)); + }); + + const packages = await Promise.all(promises); + const outdatedPackages = []; + packages.map(dependency => { + if (dependency.name) { + const latestVersion = dependency.releases.latest; + const installed = packageDependencies[dependency.name]; + if (latestVersion > installed) { + outdatedPackages.push({ + moduleName: dependency.name, + latest: dependency.releases.latest, + isCorePackage: true, + installed + }); + } + } + }); + + console.log(`${outdatedPackages.length} outdated package(s) found`); + + return outdatedPackages; + } catch (ex) { + console.error(`An error occured: ${ex.message}`); + } +}; diff --git a/script/lib/update-dependency/check-npm.js b/script/lib/update-dependency/check-npm.js new file mode 100644 index 000000000..a36ca958f --- /dev/null +++ b/script/lib/update-dependency/check-npm.js @@ -0,0 +1,24 @@ +const npmCheck = require('npm-check'); + +module.exports = async function(cwd) { + try { + console.log('Checking npm registry...'); + + const currentState = await npmCheck({ + cwd, + ignoreDev: true, + skipUnused: true + }); + const outdatedPackages = currentState.get('packages').filter(p => { + if (p.packageJson && p.latest) { + return p.latest > p.installed; + } + }); + + console.log(`${outdatedPackages.length} outdated package(s) found`); + + return outdatedPackages; + } catch (ex) { + console.error(`An error occured: ${ex.message}`); + } +}; diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js new file mode 100644 index 000000000..632cb8186 --- /dev/null +++ b/script/lib/update-dependency/git.js @@ -0,0 +1,55 @@ +const path = require('path'); +const simpleGit = require('simple-git'); +const { repositoryRootPath } = require('../../config'); +const git = simpleGit(repositoryRootPath); +const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); +const packageLockFilePath = path.join(repositoryRootPath, 'package-lock.json'); + +// TODO config git.credentials() +module.exports = { + switchToMaster: async function() { + const { current } = await git.branch(); + if (current !== 'master') { + await git.checkout('master'); + } + await git.pull('origin', 'master'); + }, + makeBranch: async function(dependency) { + const newBranch = `${dependency.moduleName}-${dependency.latest}`; + const { branches } = await git.branch(); + const { files } = await git.status(); + if (files.length > 0) { + await git.reset('hard'); + } + const found = Object.keys(branches).find( + branch => branch.indexOf(newBranch) > -1 + ); + found + ? await git.checkout(found) + : await git.checkoutLocalBranch(newBranch); + return { found, newBranch }; + }, + createCommit: async function({ moduleName, latest }) { + try { + const commitMessage = `:arrow_up:${moduleName}@${latest}`; + await git.add([packageJsonFilePath, packageLockFilePath]); + await git.commit(commitMessage); + } catch (ex) { + throw Error(ex.message); + } + }, + publishBranch: async function(branch) { + try { + return git.push('origin', branch); + } catch (ex) { + throw Error(ex.message); + } + }, + deleteBranch: async function(branch) { + try { + await git.deleteLocalBranch(branch, true); + } catch (ex) { + throw Error(ex.message); + } + } +}; diff --git a/script/lib/update-dependency/index.js b/script/lib/update-dependency/index.js new file mode 100644 index 000000000..3348f0c41 --- /dev/null +++ b/script/lib/update-dependency/index.js @@ -0,0 +1,3 @@ +const run = require('./main'); + +run(); diff --git a/script/lib/update-dependency/main.js b/script/lib/update-dependency/main.js new file mode 100644 index 000000000..4dcee7ad7 --- /dev/null +++ b/script/lib/update-dependency/main.js @@ -0,0 +1,69 @@ +/* eslint-disable camelcase */ +const { + makeBranch, + createCommit, + switchToMaster, + publishBranch +} = require('./git'); +const { + updatePackageJson, + fetchOutdatedDependencies, + runApmInstall, + sleep +} = require('./util'); +const { createPR, findPR } = require('./pull-request'); +module.exports = async function() { + try { + // ensure we are on master + await switchToMaster(); + const failedBumps = []; + const successfullBumps = []; + const outdateDependencies = await fetchOutdatedDependencies(); + const totalDependencies = outdateDependencies.length; + const pendingPRs = []; + for (const dependency of outdateDependencies) { + const { found, newBranch } = await makeBranch(dependency); + if (found) { + console.log(`Branch was found ${found}`); + console.log('checking if a PR already exists'); + const { + data: { total_count } + } = await findPR(dependency, newBranch); + if (total_count > 0) { + console.log(`pull request found!`); + } else { + console.log(`pull request not found!`); + pendingPRs.push({ dependency, branch: newBranch }); + } + } else { + await updatePackageJson(dependency); + await runApmInstall(); + await createCommit(dependency); + await publishBranch(newBranch); + pendingPRs.push({ dependency, branch: newBranch }); + } + + await switchToMaster(); + } + // create PRs here + for (const { dependency, branch } of pendingPRs) { + const { status } = await createPR(dependency, branch); + status === 201 + ? successfullBumps.push(dependency) + : failedBumps.push({ + module: dependency.moduleName, + reason: `couldn't create pull request` + }); + // https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits + await sleep(2000); + } + console.log( + `Total dependencies: ${totalDependencies} Sucessfull: ${ + successfullBumps.length + } Failed: ${failedBumps.length}` + ); + // TODO: log other useful information + } catch (ex) { + // TODO: handle errors + } +}; diff --git a/script/lib/update-dependency/pull-request.js b/script/lib/update-dependency/pull-request.js new file mode 100644 index 000000000..f1a72bc95 --- /dev/null +++ b/script/lib/update-dependency/pull-request.js @@ -0,0 +1,34 @@ +const { request } = require('@octokit/request'); + +const requestWithAuth = request.defaults({ + baseUrl: 'https://api.github.com', + headers: { + 'user-agent': 'atom', + authorization: `token ${process.env.AUTH_TOKEN}` + }, + owner: 'atom', + repo: 'atom' +}); + +module.exports = { + createPR: async ( + { moduleName, isCorePackage, latest, installed }, + branch + ) => { + let description = `Bumps ${moduleName} from ${installed} to ${latest}`; + if (isCorePackage) { + description = `*List of changes between ${moduleName}@${installed} and ${moduleName}@${latest}: https://github.com/atom/${moduleName}/compare/v${installed}...v${latest}*`; + } + return requestWithAuth('POST /repos/:owner/:repo/pulls', { + title: `:arrow_up: ${moduleName}@${latest}`, + body: description, + base: 'master', + head: branch + }); + }, + findPR: async ({ moduleName, latest }, branch) => { + return requestWithAuth('GET /search/issues', { + q: `${moduleName} type:pr ${moduleName}@${latest} in:title repo:atom/atom head:${branch} state:open` + }); + } +}; diff --git a/script/lib/update-dependency/util.js b/script/lib/update-dependency/util.js new file mode 100644 index 000000000..9c03531c6 --- /dev/null +++ b/script/lib/update-dependency/util.js @@ -0,0 +1,73 @@ +const fs = require('fs'); +const path = require('path'); +const execa = require('execa'); +const { repositoryRootPath } = require('../../config'); +const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); +const packageJSON = require(packageJsonFilePath); + +const checkNPM = require('./check-npm'); +const checkAPM = require('./check-apm'); + +module.exports = { + fetchOutdatedDependencies: async function() { + return [ + ...(await checkAPM(packageJSON)), + // ...(await checkNPM(repositoryRootPath)) + ]; + }, + updatePackageJson: async function({ + moduleName, + installed, + latest, + isCorePackage = false, + packageJson = '' + }) { + console.log(`Bumping ${moduleName} from ${installed} to ${latest}`); + const updatePackageJson = JSON.parse(JSON.stringify(packageJSON)); + if (updatePackageJson.dependencies[moduleName]) { + // gets the exact version installed in package json for native packages + const searchString = isCorePackage + ? installed + : new RegExp(`\\${packageJson}`); + updatePackageJson.dependencies[ + moduleName + ] = updatePackageJson.dependencies[moduleName].replace( + searchString, + latest + ); + } + if (updatePackageJson.packageDependencies[moduleName]) { + updatePackageJson.packageDependencies[ + moduleName + ] = updatePackageJson.packageDependencies[moduleName].replace( + new RegExp(`${installed}`), + latest + ); + } + return new Promise((resolve, reject) => { + fs.writeFile( + packageJsonFilePath, + JSON.stringify(updatePackageJson, null, 2), + function(err) { + if (err) { + return reject(err); + } + + console.log(`Bumped ${moduleName} from ${installed} to ${latest}`); + return resolve(); + } + ); + }); + }, + runApmInstall: async function() { + console.log('apm install'); + + return execa('apm', ['install'], { cwd: repositoryRootPath }) + .then(result => result.failed) + .catch(ex => { + console.log(`failed to install module`); + return false; + }); + }, + sleep: ms => new Promise(resolve => setTimeout(resolve, ms)) +}; diff --git a/script/package-lock.json b/script/package-lock.json index 77bfc0248..76f397b21 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -322,6 +322,29 @@ } } }, + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "requires": { + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -336,6 +359,79 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" }, + "@octokit/endpoint": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz", + "integrity": "sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg==", + "requires": { + "@octokit/types": "^5.0.0", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" + } + } + }, + "@octokit/request": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.5.tgz", + "integrity": "sha512-atAs5GAGbZedvJXXdjtKljin+e2SltEs48B3naJjqWupYl2IUBbB/CJisyjbNHcKpHzb3E+OYEZ46G8eakXgQg==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^5.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" + } + } + }, + "@octokit/request-error": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", + "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", + "requires": { + "@octokit/types": "^5.0.1", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.0.1.tgz", + "integrity": "sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA==", + "requires": { + "@types/node": ">= 8" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -525,6 +621,43 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -978,6 +1111,27 @@ "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=" }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, "babylon": { "version": "5.8.38", "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", @@ -1125,6 +1279,85 @@ "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", "optional": true }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1259,6 +1492,24 @@ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "callsite-record": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz", + "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=", + "requires": { + "callsite": "^1.0.0", + "chalk": "^1.1.1", + "error-stack-parser": "^1.3.3", + "highlight-es": "^1.0.0", + "lodash": "4.6.1 || ^4.16.1", + "pinkie-promise": "^2.0.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1290,6 +1541,11 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz", "integrity": "sha512-vs79o1mOSKRGv/1pSkp4EXgl4ZviWeYReXw60XfacPU64uQWZwJT6vZNmxRF9O+6zu71sJwMxLK5JXxbzuVrLw==" }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1377,6 +1633,11 @@ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -1408,6 +1669,11 @@ } } }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -1416,6 +1682,11 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1652,6 +1923,19 @@ "proto-list": "~1.2.1" } }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "requires": { + "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" + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -1703,6 +1987,14 @@ } } }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -1736,6 +2028,11 @@ "which": "^1.2.8" } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, "cson-parser": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.0.9.tgz", @@ -1804,6 +2101,11 @@ "assert-plus": "^1.0.0" } }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2010,6 +2312,231 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, + "depcheck": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz", + "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==", + "requires": { + "@babel/parser": "^7.3.1", + "@babel/traverse": "^7.2.3", + "builtin-modules": "^3.0.0", + "deprecate": "^1.0.0", + "deps-regex": "^0.1.4", + "js-yaml": "^3.4.2", + "lodash": "^4.17.11", + "minimatch": "^3.0.2", + "node-sass-tilde-importer": "^1.0.2", + "please-upgrade-node": "^3.1.1", + "require-package-name": "^2.0.1", + "resolve": "^1.10.0", + "vue-template-compiler": "^2.6.10", + "walkdir": "^0.3.2", + "yargs": "^13.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "walkdir": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz", + "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.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": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "deprecate": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz", + "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==" + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "deps-regex": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", + "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=" + }, "detect-indent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", @@ -2631,6 +3158,14 @@ "is-arrayish": "^0.2.1" } }, + "error-stack-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", + "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", + "requires": { + "stackframe": "^0.3.1" + } + }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", @@ -3169,16 +3704,91 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "execa": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", - "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.2.tgz", + "integrity": "sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q==", "requires": { - "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" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } } }, "execall": { @@ -3189,6 +3799,11 @@ "clone-regexp": "^1.0.0" } }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -3210,6 +3825,14 @@ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -3667,6 +4290,11 @@ "repeat-string": "^1.5.2" } }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -4017,6 +4645,11 @@ "resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz", "integrity": "sha1-fdeTMNKr5pwQws73lxTJchV5Hfo=" }, + "giturl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.1.tgz", + "integrity": "sha512-wQourBdI13n8tbjcZTDl6k+ZrCRMU6p9vfp9jknZq+zfWc8xXNztpZFM4XkPHVzHcMSUZxEMYYKZjIGkPlei6Q==" + }, "glob": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz", @@ -4089,6 +4722,36 @@ } } }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -4290,6 +4953,59 @@ } } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "highlight-es": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", + "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", + "requires": { + "chalk": "^2.4.0", + "is-es2016-keyword": "^1.0.0", + "js-tokens": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "home-or-tmp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", @@ -4299,6 +5015,14 @@ "user-home": "^1.1.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -4383,6 +5107,11 @@ "sshpk": "^1.7.0" } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -4614,6 +5343,14 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -4667,6 +5404,11 @@ "is-primitive": "^2.0.0" } }, + "is-es2016-keyword": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", + "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=" + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -4706,6 +5448,15 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, "is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", @@ -4714,6 +5465,11 @@ "is-finite": "^1.0.0" } }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -4783,6 +5539,11 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -4796,6 +5557,11 @@ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5014,6 +5780,14 @@ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.6.1.tgz", "integrity": "sha512-nQRpMcHm1cQ6gmztdvLcIvxocznSMqH/y6XtERrWrHaymOYdDGroRqetJvJycxGEr1aakXiigDgn7JnzuXlk6A==" }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "^4.0.0" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -5186,6 +5960,24 @@ "strip-bom": "^2.0.0" } }, + "load-yaml-file": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz", + "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==", + "requires": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^2.3.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -5259,6 +6051,11 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -5348,6 +6145,26 @@ "yallist": "^2.1.2" } }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -5434,6 +6251,11 @@ "trim-newlines": "^1.0.0" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, "merge2": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", @@ -5639,11 +6461,32 @@ } } }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, "node-gyp-build": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==" }, + "node-sass-tilde-importer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", + "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", + "requires": { + "find-parent-dir": "^0.3.0" + } + }, "nodeify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", @@ -8821,6 +9664,176 @@ } } }, + "npm-check": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz", + "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==", + "requires": { + "babel-runtime": "^6.6.1", + "callsite-record": "^3.0.0", + "chalk": "^1.1.3", + "co": "^4.6.0", + "depcheck": "0.8.3", + "execa": "^0.2.2", + "giturl": "^1.0.0", + "global-modules": "^1.0.0", + "globby": "^4.0.0", + "inquirer": "^0.12.0", + "is-ci": "^1.0.8", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "minimatch": "^3.0.2", + "node-emoji": "^1.0.3", + "ora": "^0.2.1", + "package-json": "^4.0.1", + "path-exists": "^2.1.0", + "pkg-dir": "^1.0.0", + "preferred-pm": "^1.0.1", + "semver": "^5.0.1", + "semver-diff": "^2.0.0", + "text-table": "^0.2.0", + "throat": "^2.0.2", + "update-notifier": "^2.1.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "execa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz", + "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=", + "requires": { + "cross-spawn-async": "^2.1.1", + "npm-run-path": "^1.0.0", + "object-assign": "^4.0.1", + "path-key": "^1.0.0", + "strip-eof": "^1.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^6.0.1", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "requires": { + "once": "^1.3.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + } + }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", @@ -9016,6 +10029,41 @@ } } }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -9024,6 +10072,15 @@ "lcid": "^1.0.0" } }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -9044,6 +10101,11 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -9065,6 +10127,55 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9113,6 +10224,11 @@ "error-ex": "^1.2.0" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, "parse5": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", @@ -9133,6 +10249,21 @@ "requires": { "execa": "^0.4.0", "pify": "^2.3.0" + }, + "dependencies": { + "execa": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", + "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", + "requires": { + "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" + } + } } }, "path-dirname": { @@ -9226,6 +10357,14 @@ } } }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "requires": { + "semver-compare": "^1.0.0" + } + }, "plist": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", @@ -9516,6 +10655,22 @@ "which-pm-runs": "^1.0.0" } }, + "preferred-pm": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz", + "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==", + "requires": { + "path-exists": "^3.0.0", + "which-pm": "^1.0.1" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -9805,6 +10960,23 @@ "once": "^1.3.0" } }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" + } + } + }, "recast": { "version": "0.10.33", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", @@ -9896,6 +11068,23 @@ } } }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" + } + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -10041,6 +11230,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=" + }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -10049,6 +11243,15 @@ "path-parse": "^1.0.5" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -10170,6 +11373,11 @@ "is-promise": "^2.1.0" } }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" + }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", @@ -10232,8 +11440,15 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "optional": true + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "^5.0.3" + } }, "serialize-error": { "version": "3.0.0", @@ -10304,6 +11519,30 @@ "simple-concat": "^1.0.0" } }, + "simple-git": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.7.0.tgz", + "integrity": "sha512-NpNNe0hOz3DMRWB9ewK83p/nMAkGrNO/VlWhMDaI3OdUO3UNoMv5+XlMOzO52jCyl+RZbVrIuNMpxtR4C1TQXw==", + "requires": { + "@kwsites/file-exists": "^1.1.1", + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "simple-is": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", @@ -10561,6 +11800,11 @@ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, + "stackframe": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", + "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=" + }, "state-toggle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", @@ -10642,6 +11886,11 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -11199,6 +12448,58 @@ "rimraf": "~2.6.2" } }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, "terser": { "version": "3.10.8", "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.8.tgz", @@ -11255,6 +12556,11 @@ } } }, + "throat": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz", + "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=" + }, "throttleit": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", @@ -11274,6 +12580,11 @@ "xtend": "~2.1.1" } }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11603,6 +12914,14 @@ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "unist-util-find-all-after": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.2.tgz", @@ -11645,6 +12964,14 @@ "unist-util-is": "^2.1.1" } }, + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "requires": { + "os-name": "^3.1.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -11691,6 +13018,66 @@ } } }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "requires": { + "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" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -11792,6 +13179,15 @@ "unist-util-stringify-position": "^1.1.1" } }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, "walkdir": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.12.tgz", @@ -11842,6 +13238,22 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, + "which-pm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz", + "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==", + "requires": { + "load-yaml-file": "^0.1.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", @@ -11855,11 +13267,85 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, + "windows-release": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.1.tgz", + "integrity": "sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A==", + "requires": { + "execa": "^1.0.0" + }, + "dependencies": { + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -11887,11 +13373,26 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", diff --git a/script/package.json b/script/package.json index 9c0b36bca..19e94f218 100644 --- a/script/package.json +++ b/script/package.json @@ -3,6 +3,8 @@ "description": "Atom build scripts", "dependencies": { "7zip-bin": "^4.0.2", + "@atom/electron-winstaller": "0.0.1", + "@octokit/request": "^5.4.5", "async": "2.0.1", "babel-core": "5.8.38", "babel-eslint": "^10.0.1", @@ -14,7 +16,6 @@ "electron-link": "0.4.1", "electron-mksnapshot": "^9.0.2", "electron-packager": "12.2.0", - "@atom/electron-winstaller": "0.0.1", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-config-standard": "^12.0.0", @@ -23,6 +24,7 @@ "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-promise": "^4.1.1", "eslint-plugin-standard": "^4.0.0", + "execa": "^4.0.2", "fs-admin": "^0.12.0", "fs-extra": "0.30.0", "glob": "7.0.3", @@ -35,12 +37,14 @@ "mkdirp": "0.5.1", "normalize-package-data": "2.3.5", "npm": "6.14.4", + "npm-check": "^5.9.2", "passwd-user": "2.1.0", "pegjs": "0.9.0", "prettier": "^1.17.0", "random-seed": "^0.3.0", "season": "5.3.0", "semver": "5.3.0", + "simple-git": "^2.7.0", "stylelint": "^9.0.0", "stylelint-config-standard": "^18.1.0", "sync-request": "3.0.1", From 4049c635abd2b6364b739c188f537511c99ccdef Mon Sep 17 00:00:00 2001 From: musa ibrahim Date: Thu, 18 Jun 2020 11:20:40 +0100 Subject: [PATCH 23/49] publish local branch and delete --- script/lib/update-dependency/check-apm.js | 2 +- script/lib/update-dependency/git.js | 4 ++-- script/lib/update-dependency/main.js | 25 ++++++++++++++++---- script/lib/update-dependency/pull-request.js | 2 +- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/script/lib/update-dependency/check-apm.js b/script/lib/update-dependency/check-apm.js index ed5a9ccdf..43d91b430 100644 --- a/script/lib/update-dependency/check-apm.js +++ b/script/lib/update-dependency/check-apm.js @@ -18,7 +18,7 @@ module.exports = async function({ dependencies, packageDependencies }) { const packages = await Promise.all(promises); const outdatedPackages = []; packages.map(dependency => { - if (dependency.name) { + if (dependency.hasOwnProperty('name')) { const latestVersion = dependency.releases.latest; const installed = packageDependencies[dependency.name]; if (latestVersion > installed) { diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js index 632cb8186..6ed244a83 100644 --- a/script/lib/update-dependency/git.js +++ b/script/lib/update-dependency/git.js @@ -31,7 +31,7 @@ module.exports = { }, createCommit: async function({ moduleName, latest }) { try { - const commitMessage = `:arrow_up:${moduleName}@${latest}`; + const commitMessage = `:arrow_up: ${moduleName}@${latest}`; await git.add([packageJsonFilePath, packageLockFilePath]); await git.commit(commitMessage); } catch (ex) { @@ -40,7 +40,7 @@ module.exports = { }, publishBranch: async function(branch) { try { - return git.push('origin', branch); + await git.push('origin', branch); } catch (ex) { throw Error(ex.message); } diff --git a/script/lib/update-dependency/main.js b/script/lib/update-dependency/main.js index 4dcee7ad7..62bcfcbd7 100644 --- a/script/lib/update-dependency/main.js +++ b/script/lib/update-dependency/main.js @@ -3,7 +3,8 @@ const { makeBranch, createCommit, switchToMaster, - publishBranch + publishBranch, + deleteBranch } = require('./git'); const { updatePackageJson, @@ -33,20 +34,31 @@ module.exports = async function() { console.log(`pull request found!`); } else { console.log(`pull request not found!`); - pendingPRs.push({ dependency, branch: newBranch }); + const pr = { dependency, branch: newBranch, branchIsRemote: false }; + // confirm if branch found is a local branch + if (found.indexOf('remotes') === -1) { + await publishBranch(found); + } else { + pr.branchIsRemote = true; + } + pendingPRs.push(pr); } } else { await updatePackageJson(dependency); await runApmInstall(); await createCommit(dependency); await publishBranch(newBranch); - pendingPRs.push({ dependency, branch: newBranch }); + pendingPRs.push({ + dependency, + branch: newBranch, + branchIsRemote: false + }); } await switchToMaster(); } // create PRs here - for (const { dependency, branch } of pendingPRs) { + for (const { dependency, branch, branchIsRemote } of pendingPRs) { const { status } = await createPR(dependency, branch); status === 201 ? successfullBumps.push(dependency) @@ -54,6 +66,10 @@ module.exports = async function() { module: dependency.moduleName, reason: `couldn't create pull request` }); + + if (!branchIsRemote) { + await deleteBranch(branch); + } // https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits await sleep(2000); } @@ -65,5 +81,6 @@ module.exports = async function() { // TODO: log other useful information } catch (ex) { // TODO: handle errors + console.log(ex.message); } }; diff --git a/script/lib/update-dependency/pull-request.js b/script/lib/update-dependency/pull-request.js index f1a72bc95..fc08b6f49 100644 --- a/script/lib/update-dependency/pull-request.js +++ b/script/lib/update-dependency/pull-request.js @@ -20,7 +20,7 @@ module.exports = { description = `*List of changes between ${moduleName}@${installed} and ${moduleName}@${latest}: https://github.com/atom/${moduleName}/compare/v${installed}...v${latest}*`; } return requestWithAuth('POST /repos/:owner/:repo/pulls', { - title: `:arrow_up: ${moduleName}@${latest}`, + title: `⬆️ ${moduleName}@${latest}`, body: description, base: 'master', head: branch From c14f6df47cee14f00539a692803f1d7e3d7a6bb9 Mon Sep 17 00:00:00 2001 From: darangi Date: Thu, 18 Jun 2020 23:26:46 +0100 Subject: [PATCH 24/49] add label to PR and log summary --- script/lib/update-dependency/main.js | 34 +++++++++++--------- script/lib/update-dependency/pull-request.js | 6 ++++ 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/script/lib/update-dependency/main.js b/script/lib/update-dependency/main.js index 62bcfcbd7..73bbbb6b4 100644 --- a/script/lib/update-dependency/main.js +++ b/script/lib/update-dependency/main.js @@ -12,7 +12,7 @@ const { runApmInstall, sleep } = require('./util'); -const { createPR, findPR } = require('./pull-request'); +const { createPR, findPR, addLabel } = require('./pull-request'); module.exports = async function() { try { // ensure we are on master @@ -59,13 +59,13 @@ module.exports = async function() { } // create PRs here for (const { dependency, branch, branchIsRemote } of pendingPRs) { - const { status } = await createPR(dependency, branch); - status === 201 - ? successfullBumps.push(dependency) - : failedBumps.push({ - module: dependency.moduleName, - reason: `couldn't create pull request` - }); + const { status, data = {} } = await createPR(dependency, branch); + if (status === 201) { + successfullBumps.push(dependency); + await addLabel(data.number); + } else { + failedBumps.push(dependency); + } if (!branchIsRemote) { await deleteBranch(branch); @@ -73,14 +73,18 @@ module.exports = async function() { // https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits await sleep(2000); } - console.log( - `Total dependencies: ${totalDependencies} Sucessfull: ${ - successfullBumps.length - } Failed: ${failedBumps.length}` - ); - // TODO: log other useful information + console.table([ + { + totalDependencies, + totalSuccessfullBumps: successfullBumps.length, + totalFailedBumps: failedBumps.length + } + ]); + console.log('Successfull bumps'); + console.table(successfullBumps); + console.log('Failed bumps'); + console.table(failedBumps); } catch (ex) { - // TODO: handle errors console.log(ex.message); } }; diff --git a/script/lib/update-dependency/pull-request.js b/script/lib/update-dependency/pull-request.js index fc08b6f49..f10a3540d 100644 --- a/script/lib/update-dependency/pull-request.js +++ b/script/lib/update-dependency/pull-request.js @@ -30,5 +30,11 @@ module.exports = { return requestWithAuth('GET /search/issues', { q: `${moduleName} type:pr ${moduleName}@${latest} in:title repo:atom/atom head:${branch} state:open` }); + }, + addLabel: async pullRequestNumber => { + return requestWithAuth('PATCH /repos/:owner/:repo/issues/:issue_number', { + labels: ['depency ⬆️'], + issue_number: pullRequestNumber + }); } }; From 0880b20b1e963a451a59facd4f583acab7d8b78b Mon Sep 17 00:00:00 2001 From: darangi Date: Fri, 19 Jun 2020 12:54:25 +0100 Subject: [PATCH 25/49] improved module search in package.json --- script/lib/update-dependency/util.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/script/lib/update-dependency/util.js b/script/lib/update-dependency/util.js index 9c03531c6..d570ce166 100644 --- a/script/lib/update-dependency/util.js +++ b/script/lib/update-dependency/util.js @@ -12,7 +12,7 @@ module.exports = { fetchOutdatedDependencies: async function() { return [ ...(await checkAPM(packageJSON)), - // ...(await checkNPM(repositoryRootPath)) + ...(await checkNPM(repositoryRootPath)) ]; }, updatePackageJson: async function({ @@ -25,10 +25,15 @@ module.exports = { console.log(`Bumping ${moduleName} from ${installed} to ${latest}`); const updatePackageJson = JSON.parse(JSON.stringify(packageJSON)); if (updatePackageJson.dependencies[moduleName]) { + let searchString = installed; // gets the exact version installed in package json for native packages - const searchString = isCorePackage - ? installed - : new RegExp(`\\${packageJson}`); + if (!isCorePackage) { + if (/\^|~/.test(packageJson)) { + searchString = new RegExp(`\\${packageJson}`); + } else { + searchString = packageJson; + } + } updatePackageJson.dependencies[ moduleName ] = updatePackageJson.dependencies[moduleName].replace( @@ -40,7 +45,7 @@ module.exports = { updatePackageJson.packageDependencies[ moduleName ] = updatePackageJson.packageDependencies[moduleName].replace( - new RegExp(`${installed}`), + new RegExp(installed), latest ); } From 6ef38f381037a11ccc4da0e0d0e1e31be6718a2f Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Sun, 21 Jun 2020 19:03:04 +0000 Subject: [PATCH 26/49] lint --- src/package-manager.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/package-manager.js b/src/package-manager.js index 6668d7262..d42acc9a0 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -419,11 +419,10 @@ module.exports = class PackageManager { for (const packageDirPath of this.packageDirPaths) { if (fs.isDirectorySync(packageDirPath)) { - const packagePaths = fs .readdirSync(packageDirPath, { withFileTypes: true }) - .filter((dirent) => dirent.isDirectory()) - .map((dirent) => dirent.name); + .filter(dirent => dirent.isDirectory()) + .map(dirent => dirent.name); for (const packageName of packagePaths) { if ( @@ -434,7 +433,7 @@ module.exports = class PackageManager { packages.push({ name: packageName, path: packagePath, - isBundled: false, + isBundled: false }); packagesByName.add(packageName); } From 706fac34a0d7c96a5e51ff453a9885ef631a31b9 Mon Sep 17 00:00:00 2001 From: darangi Date: Mon, 22 Jun 2020 21:25:28 +0100 Subject: [PATCH 27/49] return needed objects --- script/lib/update-dependency/check-npm.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/script/lib/update-dependency/check-npm.js b/script/lib/update-dependency/check-npm.js index a36ca958f..e926736e7 100644 --- a/script/lib/update-dependency/check-npm.js +++ b/script/lib/update-dependency/check-npm.js @@ -9,11 +9,20 @@ module.exports = async function(cwd) { ignoreDev: true, skipUnused: true }); - const outdatedPackages = currentState.get('packages').filter(p => { - if (p.packageJson && p.latest) { - return p.latest > p.installed; - } - }); + const outdatedPackages = currentState + .get('packages') + .filter(p => { + if (p.packageJson && p.latest && p.installed) { + return p.latest > p.installed; + } + }) + .map(({ packageJson, installed, moduleName, latest }) => ({ + packageJson, + installed, + moduleName, + latest, + isCorePackage: false + })); console.log(`${outdatedPackages.length} outdated package(s) found`); From 72a0b81d5085fe0fe46c669a05d33fd275846259 Mon Sep 17 00:00:00 2001 From: darangi Date: Mon, 22 Jun 2020 21:25:46 +0100 Subject: [PATCH 28/49] added job to nightly --- script/vsts/nightly-release.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 6b180b62c..3acb7b412 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -58,3 +58,30 @@ jobs: ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) displayName: Create Nightly Release + - job: bump_dependencies + displayName: Bump Dependencies + timeoutInMinutes: 180 + + pool: + vmImage: macos-10.14 + + steps: + - task: NodeTool@0 + inputs: + versionSpec: 12.13.1 + displayName: Install Node.js 12.13.1 + + - script: npm install --global npm@6.12.1 + displayName: Update npm + + - script: | + cd script/lib + npm install + displayName: npm install + + - script: | + cd script/lib/update-dependency + node index.js + displayName: Bump depedencies + env: + AUTH_TOKEN: $(GITHUB_TOKEN) From f3eb4afcfe09af76d0575a0c55b49704e676f6b4 Mon Sep 17 00:00:00 2001 From: darangi Date: Tue, 23 Jun 2020 09:15:49 +0100 Subject: [PATCH 29/49] fixed yaml error --- script/vsts/nightly-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 3acb7b412..a767b7d97 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -79,7 +79,7 @@ jobs: npm install displayName: npm install - - script: | + - script: | cd script/lib/update-dependency node index.js displayName: Bump depedencies From 2c1935c07aa6b3e7bdbe68bd0d814a30b6aa1fef Mon Sep 17 00:00:00 2001 From: darangi Date: Tue, 23 Jun 2020 09:28:52 +0100 Subject: [PATCH 30/49] added bootstrap script --- script/vsts/nightly-release.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index a767b7d97..d47b7d4f0 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -74,6 +74,10 @@ jobs: - script: npm install --global npm@6.12.1 displayName: Update npm + - script: | + script/bootstrap + displayName: Bootstrap + - script: | cd script/lib npm install From 1e2178e46c7148e5e34d15145957e94377071c84 Mon Sep 17 00:00:00 2001 From: darangi Date: Tue, 23 Jun 2020 09:47:21 +0100 Subject: [PATCH 31/49] used current branch --- script/lib/update-dependency/git.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js index 6ed244a83..f9c4dfcc1 100644 --- a/script/lib/update-dependency/git.js +++ b/script/lib/update-dependency/git.js @@ -9,10 +9,10 @@ const packageLockFilePath = path.join(repositoryRootPath, 'package-lock.json'); module.exports = { switchToMaster: async function() { const { current } = await git.branch(); - if (current !== 'master') { - await git.checkout('master'); + if (current !== 'dependency-automation') { + await git.checkout('dependency-automation'); } - await git.pull('origin', 'master'); + // await git.pull('origin', 'dependency-automation'); }, makeBranch: async function(dependency) { const newBranch = `${dependency.moduleName}-${dependency.latest}`; From 49145f1cafc124e3c0f7acc8d2bcc69cff2d98bd Mon Sep 17 00:00:00 2001 From: darangi Date: Wed, 24 Jun 2020 00:36:19 +0100 Subject: [PATCH 32/49] apm install --- script/lib/update-dependency/main.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/script/lib/update-dependency/main.js b/script/lib/update-dependency/main.js index 73bbbb6b4..92b89fc0c 100644 --- a/script/lib/update-dependency/main.js +++ b/script/lib/update-dependency/main.js @@ -9,10 +9,11 @@ const { const { updatePackageJson, fetchOutdatedDependencies, - runApmInstall, sleep } = require('./util'); const { createPR, findPR, addLabel } = require('./pull-request'); +const runApmInstall = require('../run-apm-install'); +const { repositoryRootPath } = require('../../config'); module.exports = async function() { try { // ensure we are on master @@ -45,7 +46,7 @@ module.exports = async function() { } } else { await updatePackageJson(dependency); - await runApmInstall(); + runApmInstall(repositoryRootPath, false); await createCommit(dependency); await publishBranch(newBranch); pendingPRs.push({ From 230df78ac3e9c89df9093c9339dc07a5271c26f8 Mon Sep 17 00:00:00 2001 From: darangi Date: Wed, 24 Jun 2020 01:00:52 +0100 Subject: [PATCH 33/49] added git config --- script/lib/update-dependency/git.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js index f9c4dfcc1..6cf9fd6b9 100644 --- a/script/lib/update-dependency/git.js +++ b/script/lib/update-dependency/git.js @@ -5,7 +5,10 @@ const git = simpleGit(repositoryRootPath); const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); const packageLockFilePath = path.join(repositoryRootPath, 'package-lock.json'); -// TODO config git.credentials() +git.addRemote( + 'origin', + `https://atom:${process.env.AUTH_TOKEN}@github.com/atom/atom.git/` +); module.exports = { switchToMaster: async function() { const { current } = await git.branch(); From c3d16f02c54c97f4cac2f226f9ca68007c7b3b05 Mon Sep 17 00:00:00 2001 From: darangi Date: Wed, 24 Jun 2020 01:31:12 +0100 Subject: [PATCH 34/49] changed remote --- script/lib/update-dependency/git.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js index 6cf9fd6b9..8cf134230 100644 --- a/script/lib/update-dependency/git.js +++ b/script/lib/update-dependency/git.js @@ -5,10 +5,14 @@ const git = simpleGit(repositoryRootPath); const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); const packageLockFilePath = path.join(repositoryRootPath, 'package-lock.json'); -git.addRemote( - 'origin', - `https://atom:${process.env.AUTH_TOKEN}@github.com/atom/atom.git/` -); +try { + git.addRemote( + 'ATOM', + `https://atom:${process.env.AUTH_TOKEN}@github.com/atom/atom.git/` + ); +} catch (ex) { + console.log(ex.message); +} module.exports = { switchToMaster: async function() { const { current } = await git.branch(); @@ -43,7 +47,7 @@ module.exports = { }, publishBranch: async function(branch) { try { - await git.push('origin', branch); + await git.push('ATOM', branch); } catch (ex) { throw Error(ex.message); } From 9550950d299a1cb00146f4f9613a88ef0aab5c2e Mon Sep 17 00:00:00 2001 From: runner Date: Wed, 24 Jun 2020 00:45:12 +0000 Subject: [PATCH 35/49] :arrow_up: resolve@1.17.0 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index f486b8833..3e95b5649 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6031,9 +6031,9 @@ "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==" }, "resolve": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", - "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } diff --git a/package.json b/package.json index 51edcb17e..ff1b0aa5c 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "prebuild-install": "^5.3.3", "property-accessors": "^1.1.3", "random-words": "0.0.1", - "resolve": "^1.1.6", + "resolve": "1.17.0", "scandal": "^3.2.0", "scoped-property-store": "^0.17.0", "scrollbar-style": "^3.2", From 2b652eeaffbab98b6daf5815327d4f872c4996a5 Mon Sep 17 00:00:00 2001 From: runner Date: Wed, 24 Jun 2020 00:45:44 +0000 Subject: [PATCH 36/49] :arrow_up: semver@7.3.2 --- package-lock.json | 18 +++++++++++++++--- package.json | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index f486b8833..16c6b6c5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5200,6 +5200,13 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "normalize-url": { @@ -5228,6 +5235,11 @@ "glob": "^7.1.3" } }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + }, "temp": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", @@ -6301,9 +6313,9 @@ } }, "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" }, "serializable": { "version": "1.0.3", diff --git a/package.json b/package.json index 51edcb17e..46a4809af 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "scoped-property-store": "^0.17.0", "scrollbar-style": "^3.2", "season": "^6.0.2", - "semver": "^4.3.3", + "semver": "7.3.2", "service-hub": "^0.7.4", "settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.4/tarball", "sinon": "1.17.4", From e79a71c6dce8c9caf8f35f83f952dfb9804b3f7f Mon Sep 17 00:00:00 2001 From: darangi Date: Wed, 24 Jun 2020 16:28:08 +0100 Subject: [PATCH 37/49] removed unused code --- script/lib/update-dependency/git.js | 6 +++--- script/lib/update-dependency/util.js | 11 ----------- script/package.json | 1 - 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js index 8cf134230..415bea505 100644 --- a/script/lib/update-dependency/git.js +++ b/script/lib/update-dependency/git.js @@ -16,10 +16,10 @@ try { module.exports = { switchToMaster: async function() { const { current } = await git.branch(); - if (current !== 'dependency-automation') { - await git.checkout('dependency-automation'); + if (current !== 'master') { + await git.checkout('master'); } - // await git.pull('origin', 'dependency-automation'); + await git.pull('origin', 'master'); }, makeBranch: async function(dependency) { const newBranch = `${dependency.moduleName}-${dependency.latest}`; diff --git a/script/lib/update-dependency/util.js b/script/lib/update-dependency/util.js index d570ce166..79762908c 100644 --- a/script/lib/update-dependency/util.js +++ b/script/lib/update-dependency/util.js @@ -1,6 +1,5 @@ const fs = require('fs'); const path = require('path'); -const execa = require('execa'); const { repositoryRootPath } = require('../../config'); const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); const packageJSON = require(packageJsonFilePath); @@ -64,15 +63,5 @@ module.exports = { ); }); }, - runApmInstall: async function() { - console.log('apm install'); - - return execa('apm', ['install'], { cwd: repositoryRootPath }) - .then(result => result.failed) - .catch(ex => { - console.log(`failed to install module`); - return false; - }); - }, sleep: ms => new Promise(resolve => setTimeout(resolve, ms)) }; diff --git a/script/package.json b/script/package.json index 19e94f218..0e2d5042a 100644 --- a/script/package.json +++ b/script/package.json @@ -24,7 +24,6 @@ "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-promise": "^4.1.1", "eslint-plugin-standard": "^4.0.0", - "execa": "^4.0.2", "fs-admin": "^0.12.0", "fs-extra": "0.30.0", "glob": "7.0.3", From 32bd100cff55c7d8155b8154cc27388325f64591 Mon Sep 17 00:00:00 2001 From: Moni Date: Thu, 25 Jun 2020 21:32:30 -0400 Subject: [PATCH 38/49] fix typos Signed-off-by: Moni --- docs/rfcs/001-updatable-bundled-packages.md | 2 +- src/grammar-registry.js | 6 +++--- src/ripgrep-directory-searcher.js | 2 +- src/text-editor-component.js | 2 +- src/text-editor.js | 2 +- src/uri-handler-registry.js | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/rfcs/001-updatable-bundled-packages.md b/docs/rfcs/001-updatable-bundled-packages.md index dbf23b678..96b328e3d 100644 --- a/docs/rfcs/001-updatable-bundled-packages.md +++ b/docs/rfcs/001-updatable-bundled-packages.md @@ -60,7 +60,7 @@ The primary drawback of this approach is that Updatable bundled packages might e ### Increased Atom startup time -Another major drawback is that the snapshotted code for the bundled package will no longer be used since a newer version has been installed. This updated version of the package cannot be easily added back into Atom's snapshot so it could cause a noticable drag on Atom's startup time. Some quick measurements with Timecop show a 10x increase in GitHub package load time for bundled (snapshot) vs updated (non-snapshot) package code: +Another major drawback is that the snapshotted code for the bundled package will no longer be used since a newer version has been installed. This updated version of the package cannot be easily added back into Atom's snapshot so it could cause a noticeable drag on Atom's startup time. Some quick measurements with Timecop show a 10x increase in GitHub package load time for bundled (snapshot) vs updated (non-snapshot) package code: | GitHub Package Code | Load Time | |----------------------------------|-----------| diff --git a/src/grammar-registry.js b/src/grammar-registry.js index 5deda75e1..c5973e1aa 100644 --- a/src/grammar-registry.js +++ b/src/grammar-registry.js @@ -154,7 +154,7 @@ module.exports = class GrammarRegistry { // * `buffer` The {TextBuffer} whose grammar will be set. // * `grammar` The desired {Grammar}. // - // Returns a {Boolean} that indicates whether the assignment was sucessful + // Returns a {Boolean} that indicates whether the assignment was successful assignGrammar(buffer, grammar) { if (!grammar) return false; if (buffer.getBuffer) buffer = buffer.getBuffer(); @@ -547,7 +547,7 @@ module.exports = class GrammarRegistry { // * `grammarPath` A {String} absolute file path to a grammar file. // * `callback` A {Function} to call when loaded with the following arguments: // * `error` An {Error}, may be null. - // * `grammar` A {Grammar} or null if an error occured. + // * `grammar` A {Grammar} or null if an error occurred. loadGrammar(grammarPath, callback) { this.readGrammar(grammarPath, (error, grammar) => { if (error) return callback(error); @@ -572,7 +572,7 @@ module.exports = class GrammarRegistry { // * `grammarPath` A {String} absolute file path to a grammar file. // * `callback` A {Function} to call when read with the following arguments: // * `error` An {Error}, may be null. - // * `grammar` A {Grammar} or null if an error occured. + // * `grammar` A {Grammar} or null if an error occurred. // // Returns undefined. readGrammar(grammarPath, callback) { diff --git a/src/ripgrep-directory-searcher.js b/src/ripgrep-directory-searcher.js index 9d46e9cd2..55bfe4e1d 100644 --- a/src/ripgrep-directory-searcher.js +++ b/src/ripgrep-directory-searcher.js @@ -129,7 +129,7 @@ function processUnicodeMatch(match) { // This function processes a ripgrep submatch to create the correct // range. This is mostly needed for multi-line results, since the range -// will have differnt start and end rows and we need to calculate these +// will have different start and end rows and we need to calculate these // based on the lines that ripgrep returns. function processSubmatch(submatch, lineText, offsetRow) { const lineParts = lineText.split('\n'); diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 6e92ace24..c83235266 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -1868,7 +1868,7 @@ module.exports = class TextEditorComponent { // keydown(code: X), keypress, keydown(code: X) // // The code X must be the same in the keydown events that bracket the - // keypress, meaning we're *holding* the _same_ key we intially pressed. + // keypress, meaning we're *holding* the _same_ key we initially pressed. // Got that? didKeydown(event) { // Stop dragging when user interacts with the keyboard. This prevents diff --git a/src/text-editor.js b/src/text-editor.js index 48fe8c72f..e70d9b75c 100644 --- a/src/text-editor.js +++ b/src/text-editor.js @@ -2597,7 +2597,7 @@ module.exports = class TextEditor { // * __cursor__: Render a cursor at the head of the {DisplayMarker}. If multiple cursor decorations // are created for the same marker, their class strings and style objects are combined // into a single cursor. This decoration type may be used to style existing cursors - // by passing in their markers or to render artificial cursors that don't actaully + // by passing in their markers or to render artificial cursors that don't actually // exist in the model by passing a marker that isn't associated with a real cursor. // // ## Arguments diff --git a/src/uri-handler-registry.js b/src/uri-handler-registry.js index 73dbd946f..7b232ccc6 100644 --- a/src/uri-handler-registry.js +++ b/src/uri-handler-registry.js @@ -27,7 +27,7 @@ const { Emitter, Disposable } = require('event-kit'); // is triggered. If you need your package to activate right away, you can add // `"deferActivation": false` to your "uriHandler" configuration object. When activation // is deferred, once Atom receives a request for a URI in your package's namespace, it will -// activate your pacakge and then call `methodName` on it as before. +// activate your package and then call `methodName` on it as before. // // If your package specifies a deprecated `urlMain` property, you cannot register URI handlers // via the `uriHandler` key. From fb2654eaac45127f6d0c28f7748c84f98dfaa58e Mon Sep 17 00:00:00 2001 From: darangi Date: Fri, 26 Jun 2020 15:48:26 +0100 Subject: [PATCH 39/49] Revert "removed unused code" This reverts commit e79a71c6dce8c9caf8f35f83f952dfb9804b3f7f. --- script/lib/update-dependency/git.js | 6 +++--- script/lib/update-dependency/util.js | 11 +++++++++++ script/package.json | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js index 415bea505..8cf134230 100644 --- a/script/lib/update-dependency/git.js +++ b/script/lib/update-dependency/git.js @@ -16,10 +16,10 @@ try { module.exports = { switchToMaster: async function() { const { current } = await git.branch(); - if (current !== 'master') { - await git.checkout('master'); + if (current !== 'dependency-automation') { + await git.checkout('dependency-automation'); } - await git.pull('origin', 'master'); + // await git.pull('origin', 'dependency-automation'); }, makeBranch: async function(dependency) { const newBranch = `${dependency.moduleName}-${dependency.latest}`; diff --git a/script/lib/update-dependency/util.js b/script/lib/update-dependency/util.js index 79762908c..d570ce166 100644 --- a/script/lib/update-dependency/util.js +++ b/script/lib/update-dependency/util.js @@ -1,5 +1,6 @@ const fs = require('fs'); const path = require('path'); +const execa = require('execa'); const { repositoryRootPath } = require('../../config'); const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); const packageJSON = require(packageJsonFilePath); @@ -63,5 +64,15 @@ module.exports = { ); }); }, + runApmInstall: async function() { + console.log('apm install'); + + return execa('apm', ['install'], { cwd: repositoryRootPath }) + .then(result => result.failed) + .catch(ex => { + console.log(`failed to install module`); + return false; + }); + }, sleep: ms => new Promise(resolve => setTimeout(resolve, ms)) }; diff --git a/script/package.json b/script/package.json index 0e2d5042a..19e94f218 100644 --- a/script/package.json +++ b/script/package.json @@ -24,6 +24,7 @@ "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-promise": "^4.1.1", "eslint-plugin-standard": "^4.0.0", + "execa": "^4.0.2", "fs-admin": "^0.12.0", "fs-extra": "0.30.0", "glob": "7.0.3", From f9a9e57d3a5d48d31752579ab99b1067c59ece3e Mon Sep 17 00:00:00 2001 From: darangi Date: Fri, 26 Jun 2020 15:59:54 +0100 Subject: [PATCH 40/49] Revert "init" This reverts commit 20d5d217757978130d71f1a51a12b2d9c8f7ab73. --- script/lib/update-dependency/check-apm.js | 41 - script/lib/update-dependency/check-npm.js | 33 - script/lib/update-dependency/git.js | 62 - script/lib/update-dependency/index.js | 3 - script/lib/update-dependency/main.js | 91 -- script/lib/update-dependency/pull-request.js | 40 - script/lib/update-dependency/util.js | 78 - script/package-lock.json | 1523 +----------------- script/package.json | 6 +- script/vsts/nightly-release.yml | 31 - 10 files changed, 12 insertions(+), 1896 deletions(-) delete mode 100644 script/lib/update-dependency/check-apm.js delete mode 100644 script/lib/update-dependency/check-npm.js delete mode 100644 script/lib/update-dependency/git.js delete mode 100644 script/lib/update-dependency/index.js delete mode 100644 script/lib/update-dependency/main.js delete mode 100644 script/lib/update-dependency/pull-request.js delete mode 100644 script/lib/update-dependency/util.js diff --git a/script/lib/update-dependency/check-apm.js b/script/lib/update-dependency/check-apm.js deleted file mode 100644 index 43d91b430..000000000 --- a/script/lib/update-dependency/check-apm.js +++ /dev/null @@ -1,41 +0,0 @@ -const fetch = require('node-fetch'); -// this may be updated to use github releases instead -module.exports = async function({ dependencies, packageDependencies }) { - try { - console.log('Checking apm registry...'); - const coreDependencies = Object.keys(dependencies).filter(dependency => { - // all core packages point to a remote url - return dependencies[dependency].match(new RegExp('^https?://')); - }); - - const promises = coreDependencies.map(async dependency => { - return fetch(`https://atom.io/api/packages/${dependency}`) - .then(res => res.json()) - .then(res => res) - .catch(ex => console.log(ex.message)); - }); - - const packages = await Promise.all(promises); - const outdatedPackages = []; - packages.map(dependency => { - if (dependency.hasOwnProperty('name')) { - const latestVersion = dependency.releases.latest; - const installed = packageDependencies[dependency.name]; - if (latestVersion > installed) { - outdatedPackages.push({ - moduleName: dependency.name, - latest: dependency.releases.latest, - isCorePackage: true, - installed - }); - } - } - }); - - console.log(`${outdatedPackages.length} outdated package(s) found`); - - return outdatedPackages; - } catch (ex) { - console.error(`An error occured: ${ex.message}`); - } -}; diff --git a/script/lib/update-dependency/check-npm.js b/script/lib/update-dependency/check-npm.js deleted file mode 100644 index e926736e7..000000000 --- a/script/lib/update-dependency/check-npm.js +++ /dev/null @@ -1,33 +0,0 @@ -const npmCheck = require('npm-check'); - -module.exports = async function(cwd) { - try { - console.log('Checking npm registry...'); - - const currentState = await npmCheck({ - cwd, - ignoreDev: true, - skipUnused: true - }); - const outdatedPackages = currentState - .get('packages') - .filter(p => { - if (p.packageJson && p.latest && p.installed) { - return p.latest > p.installed; - } - }) - .map(({ packageJson, installed, moduleName, latest }) => ({ - packageJson, - installed, - moduleName, - latest, - isCorePackage: false - })); - - console.log(`${outdatedPackages.length} outdated package(s) found`); - - return outdatedPackages; - } catch (ex) { - console.error(`An error occured: ${ex.message}`); - } -}; diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js deleted file mode 100644 index 8cf134230..000000000 --- a/script/lib/update-dependency/git.js +++ /dev/null @@ -1,62 +0,0 @@ -const path = require('path'); -const simpleGit = require('simple-git'); -const { repositoryRootPath } = require('../../config'); -const git = simpleGit(repositoryRootPath); -const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); -const packageLockFilePath = path.join(repositoryRootPath, 'package-lock.json'); - -try { - git.addRemote( - 'ATOM', - `https://atom:${process.env.AUTH_TOKEN}@github.com/atom/atom.git/` - ); -} catch (ex) { - console.log(ex.message); -} -module.exports = { - switchToMaster: async function() { - const { current } = await git.branch(); - if (current !== 'dependency-automation') { - await git.checkout('dependency-automation'); - } - // await git.pull('origin', 'dependency-automation'); - }, - makeBranch: async function(dependency) { - const newBranch = `${dependency.moduleName}-${dependency.latest}`; - const { branches } = await git.branch(); - const { files } = await git.status(); - if (files.length > 0) { - await git.reset('hard'); - } - const found = Object.keys(branches).find( - branch => branch.indexOf(newBranch) > -1 - ); - found - ? await git.checkout(found) - : await git.checkoutLocalBranch(newBranch); - return { found, newBranch }; - }, - createCommit: async function({ moduleName, latest }) { - try { - const commitMessage = `:arrow_up: ${moduleName}@${latest}`; - await git.add([packageJsonFilePath, packageLockFilePath]); - await git.commit(commitMessage); - } catch (ex) { - throw Error(ex.message); - } - }, - publishBranch: async function(branch) { - try { - await git.push('ATOM', branch); - } catch (ex) { - throw Error(ex.message); - } - }, - deleteBranch: async function(branch) { - try { - await git.deleteLocalBranch(branch, true); - } catch (ex) { - throw Error(ex.message); - } - } -}; diff --git a/script/lib/update-dependency/index.js b/script/lib/update-dependency/index.js deleted file mode 100644 index 3348f0c41..000000000 --- a/script/lib/update-dependency/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const run = require('./main'); - -run(); diff --git a/script/lib/update-dependency/main.js b/script/lib/update-dependency/main.js deleted file mode 100644 index 92b89fc0c..000000000 --- a/script/lib/update-dependency/main.js +++ /dev/null @@ -1,91 +0,0 @@ -/* eslint-disable camelcase */ -const { - makeBranch, - createCommit, - switchToMaster, - publishBranch, - deleteBranch -} = require('./git'); -const { - updatePackageJson, - fetchOutdatedDependencies, - sleep -} = require('./util'); -const { createPR, findPR, addLabel } = require('./pull-request'); -const runApmInstall = require('../run-apm-install'); -const { repositoryRootPath } = require('../../config'); -module.exports = async function() { - try { - // ensure we are on master - await switchToMaster(); - const failedBumps = []; - const successfullBumps = []; - const outdateDependencies = await fetchOutdatedDependencies(); - const totalDependencies = outdateDependencies.length; - const pendingPRs = []; - for (const dependency of outdateDependencies) { - const { found, newBranch } = await makeBranch(dependency); - if (found) { - console.log(`Branch was found ${found}`); - console.log('checking if a PR already exists'); - const { - data: { total_count } - } = await findPR(dependency, newBranch); - if (total_count > 0) { - console.log(`pull request found!`); - } else { - console.log(`pull request not found!`); - const pr = { dependency, branch: newBranch, branchIsRemote: false }; - // confirm if branch found is a local branch - if (found.indexOf('remotes') === -1) { - await publishBranch(found); - } else { - pr.branchIsRemote = true; - } - pendingPRs.push(pr); - } - } else { - await updatePackageJson(dependency); - runApmInstall(repositoryRootPath, false); - await createCommit(dependency); - await publishBranch(newBranch); - pendingPRs.push({ - dependency, - branch: newBranch, - branchIsRemote: false - }); - } - - await switchToMaster(); - } - // create PRs here - for (const { dependency, branch, branchIsRemote } of pendingPRs) { - const { status, data = {} } = await createPR(dependency, branch); - if (status === 201) { - successfullBumps.push(dependency); - await addLabel(data.number); - } else { - failedBumps.push(dependency); - } - - if (!branchIsRemote) { - await deleteBranch(branch); - } - // https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits - await sleep(2000); - } - console.table([ - { - totalDependencies, - totalSuccessfullBumps: successfullBumps.length, - totalFailedBumps: failedBumps.length - } - ]); - console.log('Successfull bumps'); - console.table(successfullBumps); - console.log('Failed bumps'); - console.table(failedBumps); - } catch (ex) { - console.log(ex.message); - } -}; diff --git a/script/lib/update-dependency/pull-request.js b/script/lib/update-dependency/pull-request.js deleted file mode 100644 index f10a3540d..000000000 --- a/script/lib/update-dependency/pull-request.js +++ /dev/null @@ -1,40 +0,0 @@ -const { request } = require('@octokit/request'); - -const requestWithAuth = request.defaults({ - baseUrl: 'https://api.github.com', - headers: { - 'user-agent': 'atom', - authorization: `token ${process.env.AUTH_TOKEN}` - }, - owner: 'atom', - repo: 'atom' -}); - -module.exports = { - createPR: async ( - { moduleName, isCorePackage, latest, installed }, - branch - ) => { - let description = `Bumps ${moduleName} from ${installed} to ${latest}`; - if (isCorePackage) { - description = `*List of changes between ${moduleName}@${installed} and ${moduleName}@${latest}: https://github.com/atom/${moduleName}/compare/v${installed}...v${latest}*`; - } - return requestWithAuth('POST /repos/:owner/:repo/pulls', { - title: `⬆️ ${moduleName}@${latest}`, - body: description, - base: 'master', - head: branch - }); - }, - findPR: async ({ moduleName, latest }, branch) => { - return requestWithAuth('GET /search/issues', { - q: `${moduleName} type:pr ${moduleName}@${latest} in:title repo:atom/atom head:${branch} state:open` - }); - }, - addLabel: async pullRequestNumber => { - return requestWithAuth('PATCH /repos/:owner/:repo/issues/:issue_number', { - labels: ['depency ⬆️'], - issue_number: pullRequestNumber - }); - } -}; diff --git a/script/lib/update-dependency/util.js b/script/lib/update-dependency/util.js deleted file mode 100644 index d570ce166..000000000 --- a/script/lib/update-dependency/util.js +++ /dev/null @@ -1,78 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const execa = require('execa'); -const { repositoryRootPath } = require('../../config'); -const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); -const packageJSON = require(packageJsonFilePath); - -const checkNPM = require('./check-npm'); -const checkAPM = require('./check-apm'); - -module.exports = { - fetchOutdatedDependencies: async function() { - return [ - ...(await checkAPM(packageJSON)), - ...(await checkNPM(repositoryRootPath)) - ]; - }, - updatePackageJson: async function({ - moduleName, - installed, - latest, - isCorePackage = false, - packageJson = '' - }) { - console.log(`Bumping ${moduleName} from ${installed} to ${latest}`); - const updatePackageJson = JSON.parse(JSON.stringify(packageJSON)); - if (updatePackageJson.dependencies[moduleName]) { - let searchString = installed; - // gets the exact version installed in package json for native packages - if (!isCorePackage) { - if (/\^|~/.test(packageJson)) { - searchString = new RegExp(`\\${packageJson}`); - } else { - searchString = packageJson; - } - } - updatePackageJson.dependencies[ - moduleName - ] = updatePackageJson.dependencies[moduleName].replace( - searchString, - latest - ); - } - if (updatePackageJson.packageDependencies[moduleName]) { - updatePackageJson.packageDependencies[ - moduleName - ] = updatePackageJson.packageDependencies[moduleName].replace( - new RegExp(installed), - latest - ); - } - return new Promise((resolve, reject) => { - fs.writeFile( - packageJsonFilePath, - JSON.stringify(updatePackageJson, null, 2), - function(err) { - if (err) { - return reject(err); - } - - console.log(`Bumped ${moduleName} from ${installed} to ${latest}`); - return resolve(); - } - ); - }); - }, - runApmInstall: async function() { - console.log('apm install'); - - return execa('apm', ['install'], { cwd: repositoryRootPath }) - .then(result => result.failed) - .catch(ex => { - console.log(`failed to install module`); - return false; - }); - }, - sleep: ms => new Promise(resolve => setTimeout(resolve, ms)) -}; diff --git a/script/package-lock.json b/script/package-lock.json index 76f397b21..77bfc0248 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -322,29 +322,6 @@ } } }, - "@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "requires": { - "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -359,79 +336,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" }, - "@octokit/endpoint": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz", - "integrity": "sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg==", - "requires": { - "@octokit/types": "^5.0.0", - "is-plain-object": "^3.0.0", - "universal-user-agent": "^5.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "requires": { - "isobject": "^4.0.0" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - } - } - }, - "@octokit/request": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.5.tgz", - "integrity": "sha512-atAs5GAGbZedvJXXdjtKljin+e2SltEs48B3naJjqWupYl2IUBbB/CJisyjbNHcKpHzb3E+OYEZ46G8eakXgQg==", - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^5.0.0", - "deprecation": "^2.0.0", - "is-plain-object": "^3.0.0", - "node-fetch": "^2.3.0", - "once": "^1.4.0", - "universal-user-agent": "^5.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "requires": { - "isobject": "^4.0.0" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - } - } - }, - "@octokit/request-error": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", - "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", - "requires": { - "@octokit/types": "^5.0.1", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.0.1.tgz", - "integrity": "sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA==", - "requires": { - "@types/node": ">= 8" - } - }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -621,43 +525,6 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -1111,27 +978,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=" }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, "babylon": { "version": "5.8.38", "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", @@ -1279,85 +1125,6 @@ "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", "optional": true }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "requires": { - "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" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1492,24 +1259,6 @@ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, - "callsite-record": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz", - "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=", - "requires": { - "callsite": "^1.0.0", - "chalk": "^1.1.1", - "error-stack-parser": "^1.3.3", - "highlight-es": "^1.0.0", - "lodash": "4.6.1 || ^4.16.1", - "pinkie-promise": "^2.0.0" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1541,11 +1290,6 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz", "integrity": "sha512-vs79o1mOSKRGv/1pSkp4EXgl4ZviWeYReXw60XfacPU64uQWZwJT6vZNmxRF9O+6zu71sJwMxLK5JXxbzuVrLw==" }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1633,11 +1377,6 @@ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" - }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -1669,11 +1408,6 @@ } } }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" - }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -1682,11 +1416,6 @@ "restore-cursor": "^2.0.0" } }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" - }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1923,19 +1652,6 @@ "proto-list": "~1.2.1" } }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "requires": { - "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" - } - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -1987,14 +1703,6 @@ } } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -2028,11 +1736,6 @@ "which": "^1.2.8" } }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" - }, "cson-parser": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.0.9.tgz", @@ -2101,11 +1804,6 @@ "assert-plus": "^1.0.0" } }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2312,231 +2010,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, - "depcheck": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz", - "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==", - "requires": { - "@babel/parser": "^7.3.1", - "@babel/traverse": "^7.2.3", - "builtin-modules": "^3.0.0", - "deprecate": "^1.0.0", - "deps-regex": "^0.1.4", - "js-yaml": "^3.4.2", - "lodash": "^4.17.11", - "minimatch": "^3.0.2", - "node-sass-tilde-importer": "^1.0.2", - "please-upgrade-node": "^3.1.1", - "require-package-name": "^2.0.1", - "resolve": "^1.10.0", - "vue-template-compiler": "^2.6.10", - "walkdir": "^0.3.2", - "yargs": "^13.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "walkdir": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz", - "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==" - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.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": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "deprecate": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz", - "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==" - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "deps-regex": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", - "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=" - }, "detect-indent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", @@ -3158,14 +2631,6 @@ "is-arrayish": "^0.2.1" } }, - "error-stack-parser": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", - "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", - "requires": { - "stackframe": "^0.3.1" - } - }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", @@ -3704,91 +3169,16 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "execa": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.2.tgz", - "integrity": "sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", + "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } + "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" } }, "execall": { @@ -3799,11 +3189,6 @@ "clone-regexp": "^1.0.0" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" - }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -3825,14 +3210,6 @@ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -4290,11 +3667,6 @@ "repeat-string": "^1.5.2" } }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" - }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -4645,11 +4017,6 @@ "resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz", "integrity": "sha1-fdeTMNKr5pwQws73lxTJchV5Hfo=" }, - "giturl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.1.tgz", - "integrity": "sha512-wQourBdI13n8tbjcZTDl6k+ZrCRMU6p9vfp9jknZq+zfWc8xXNztpZFM4XkPHVzHcMSUZxEMYYKZjIGkPlei6Q==" - }, "glob": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz", @@ -4722,36 +4089,6 @@ } } }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "requires": { - "ini": "^1.3.4" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -4953,59 +4290,6 @@ } } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "highlight-es": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", - "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", - "requires": { - "chalk": "^2.4.0", - "is-es2016-keyword": "^1.0.0", - "js-tokens": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "home-or-tmp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", @@ -5015,14 +4299,6 @@ "user-home": "^1.1.1" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "requires": { - "parse-passwd": "^1.0.0" - } - }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -5107,11 +4383,6 @@ "sshpk": "^1.7.0" } }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -5343,14 +4614,6 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "requires": { - "ci-info": "^1.5.0" - } - }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -5404,11 +4667,6 @@ "is-primitive": "^2.0.0" } }, - "is-es2016-keyword": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", - "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=" - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5448,15 +4706,6 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, "is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", @@ -5465,11 +4714,6 @@ "is-finite": "^1.0.0" } }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" - }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -5539,11 +4783,6 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -5557,11 +4796,6 @@ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5780,14 +5014,6 @@ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.6.1.tgz", "integrity": "sha512-nQRpMcHm1cQ6gmztdvLcIvxocznSMqH/y6XtERrWrHaymOYdDGroRqetJvJycxGEr1aakXiigDgn7JnzuXlk6A==" }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "requires": { - "package-json": "^4.0.0" - } - }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -5960,24 +5186,6 @@ "strip-bom": "^2.0.0" } }, - "load-yaml-file": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz", - "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==", - "requires": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^2.3.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - } - } - }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -6051,11 +5259,6 @@ "lodash._reinterpolate": "^3.0.0" } }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" - }, "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -6145,26 +5348,6 @@ "yallist": "^2.1.2" } }, - "macos-release": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", - "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6251,11 +5434,6 @@ "trim-newlines": "^1.0.0" } }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, "merge2": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", @@ -6461,32 +5639,11 @@ } } }, - "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", - "requires": { - "lodash.toarray": "^4.4.0" - } - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - }, "node-gyp-build": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==" }, - "node-sass-tilde-importer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", - "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", - "requires": { - "find-parent-dir": "^0.3.0" - } - }, "nodeify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", @@ -9664,176 +8821,6 @@ } } }, - "npm-check": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz", - "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==", - "requires": { - "babel-runtime": "^6.6.1", - "callsite-record": "^3.0.0", - "chalk": "^1.1.3", - "co": "^4.6.0", - "depcheck": "0.8.3", - "execa": "^0.2.2", - "giturl": "^1.0.0", - "global-modules": "^1.0.0", - "globby": "^4.0.0", - "inquirer": "^0.12.0", - "is-ci": "^1.0.8", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "minimatch": "^3.0.2", - "node-emoji": "^1.0.3", - "ora": "^0.2.1", - "package-json": "^4.0.1", - "path-exists": "^2.1.0", - "pkg-dir": "^1.0.0", - "preferred-pm": "^1.0.1", - "semver": "^5.0.1", - "semver-diff": "^2.0.0", - "text-table": "^0.2.0", - "throat": "^2.0.2", - "update-notifier": "^2.1.0", - "xtend": "^4.0.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "execa": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz", - "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=", - "requires": { - "cross-spawn-async": "^2.1.1", - "npm-run-path": "^1.0.0", - "object-assign": "^4.0.1", - "path-key": "^1.0.0", - "strip-eof": "^1.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globby": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", - "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^6.0.1", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "^1.0.0" - } - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "requires": { - "once": "^1.3.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } - } - }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", @@ -10029,41 +9016,6 @@ } } }, - "ora": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", - "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", - "requires": { - "chalk": "^1.1.1", - "cli-cursor": "^1.0.2", - "cli-spinners": "^0.1.2", - "object-assign": "^4.0.1" - }, - "dependencies": { - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - } - } - }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -10072,15 +9024,6 @@ "lcid": "^1.0.0" } }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -10101,11 +9044,6 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -10127,55 +9065,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10224,11 +9113,6 @@ "error-ex": "^1.2.0" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, "parse5": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", @@ -10249,21 +9133,6 @@ "requires": { "execa": "^0.4.0", "pify": "^2.3.0" - }, - "dependencies": { - "execa": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", - "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", - "requires": { - "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" - } - } } }, "path-dirname": { @@ -10357,14 +9226,6 @@ } } }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "requires": { - "semver-compare": "^1.0.0" - } - }, "plist": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", @@ -10655,22 +9516,6 @@ "which-pm-runs": "^1.0.0" } }, - "preferred-pm": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz", - "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==", - "requires": { - "path-exists": "^3.0.0", - "which-pm": "^1.0.1" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -10960,23 +9805,6 @@ "once": "^1.3.0" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" - }, - "dependencies": { - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" - } - } - }, "recast": { "version": "0.10.33", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", @@ -11068,23 +9896,6 @@ } } }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "^1.0.1" - } - }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -11230,11 +10041,6 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, - "require-package-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", - "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=" - }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -11243,15 +10049,6 @@ "path-parse": "^1.0.5" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -11373,11 +10170,6 @@ "is-promise": "^2.1.0" } }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" - }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", @@ -11440,15 +10232,8 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "^5.0.3" - } + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true }, "serialize-error": { "version": "3.0.0", @@ -11519,30 +10304,6 @@ "simple-concat": "^1.0.0" } }, - "simple-git": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.7.0.tgz", - "integrity": "sha512-NpNNe0hOz3DMRWB9ewK83p/nMAkGrNO/VlWhMDaI3OdUO3UNoMv5+XlMOzO52jCyl+RZbVrIuNMpxtR4C1TQXw==", - "requires": { - "@kwsites/file-exists": "^1.1.1", - "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, "simple-is": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", @@ -11800,11 +10561,6 @@ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, - "stackframe": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", - "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=" - }, "state-toggle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", @@ -11886,11 +10642,6 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -12448,58 +11199,6 @@ "rimraf": "~2.6.2" } }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - } - } - }, "terser": { "version": "3.10.8", "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.8.tgz", @@ -12556,11 +11255,6 @@ } } }, - "throat": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz", - "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=" - }, "throttleit": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", @@ -12580,11 +11274,6 @@ "xtend": "~2.1.1" } }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12914,14 +11603,6 @@ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "requires": { - "crypto-random-string": "^1.0.0" - } - }, "unist-util-find-all-after": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.2.tgz", @@ -12964,14 +11645,6 @@ "unist-util-is": "^2.1.1" } }, - "universal-user-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", - "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", - "requires": { - "os-name": "^3.1.0" - } - }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -13018,66 +11691,6 @@ } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "requires": { - "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" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -13179,15 +11792,6 @@ "unist-util-stringify-position": "^1.1.1" } }, - "vue-template-compiler": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", - "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, "walkdir": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.12.tgz", @@ -13238,22 +11842,6 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, - "which-pm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz", - "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==", - "requires": { - "load-yaml-file": "^0.1.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", @@ -13267,85 +11855,11 @@ "string-width": "^1.0.2 || 2" } }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, - "windows-release": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.1.tgz", - "integrity": "sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A==", - "requires": { - "execa": "^1.0.0" - }, - "dependencies": { - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - } - } - }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -13373,26 +11887,11 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" - }, "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", diff --git a/script/package.json b/script/package.json index 19e94f218..9c0b36bca 100644 --- a/script/package.json +++ b/script/package.json @@ -3,8 +3,6 @@ "description": "Atom build scripts", "dependencies": { "7zip-bin": "^4.0.2", - "@atom/electron-winstaller": "0.0.1", - "@octokit/request": "^5.4.5", "async": "2.0.1", "babel-core": "5.8.38", "babel-eslint": "^10.0.1", @@ -16,6 +14,7 @@ "electron-link": "0.4.1", "electron-mksnapshot": "^9.0.2", "electron-packager": "12.2.0", + "@atom/electron-winstaller": "0.0.1", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-config-standard": "^12.0.0", @@ -24,7 +23,6 @@ "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-promise": "^4.1.1", "eslint-plugin-standard": "^4.0.0", - "execa": "^4.0.2", "fs-admin": "^0.12.0", "fs-extra": "0.30.0", "glob": "7.0.3", @@ -37,14 +35,12 @@ "mkdirp": "0.5.1", "normalize-package-data": "2.3.5", "npm": "6.14.4", - "npm-check": "^5.9.2", "passwd-user": "2.1.0", "pegjs": "0.9.0", "prettier": "^1.17.0", "random-seed": "^0.3.0", "season": "5.3.0", "semver": "5.3.0", - "simple-git": "^2.7.0", "stylelint": "^9.0.0", "stylelint-config-standard": "^18.1.0", "sync-request": "3.0.1", diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index d47b7d4f0..6b180b62c 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -58,34 +58,3 @@ jobs: ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) displayName: Create Nightly Release - - job: bump_dependencies - displayName: Bump Dependencies - timeoutInMinutes: 180 - - pool: - vmImage: macos-10.14 - - steps: - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 - - - script: npm install --global npm@6.12.1 - displayName: Update npm - - - script: | - script/bootstrap - displayName: Bootstrap - - - script: | - cd script/lib - npm install - displayName: npm install - - - script: | - cd script/lib/update-dependency - node index.js - displayName: Bump depedencies - env: - AUTH_TOKEN: $(GITHUB_TOKEN) From bbf874fff94f781749e83c588090957e823691e4 Mon Sep 17 00:00:00 2001 From: darangi Date: Mon, 29 Jun 2020 13:12:17 +0100 Subject: [PATCH 41/49] added tests --- .../fetch-outdated-dependencies.js | 80 +++++++++++++++ script/lib/update-dependency/git.js | 67 +++++++++++++ script/lib/update-dependency/main.js | 97 +++++++++++++++++++ .../spec/fetch-outdated-dependencies-spec.js | 27 ++++++ .../lib/update-dependency/spec/fixtures/dummy | 1 + .../spec/fixtures/latest-package.json | 28 ++++++ script/lib/update-dependency/spec/git-spec.js | 94 ++++++++++++++++++ script/lib/update-dependency/spec/helpers.js | 28 ++++++ .../lib/update-dependency/spec/util-spec.js | 38 ++++++++ script/lib/update-dependency/util.js | 61 ++++++++++++ 10 files changed, 521 insertions(+) create mode 100644 script/lib/update-dependency/fetch-outdated-dependencies.js create mode 100644 script/lib/update-dependency/git.js create mode 100644 script/lib/update-dependency/main.js create mode 100644 script/lib/update-dependency/spec/fetch-outdated-dependencies-spec.js create mode 160000 script/lib/update-dependency/spec/fixtures/dummy create mode 100644 script/lib/update-dependency/spec/fixtures/latest-package.json create mode 100644 script/lib/update-dependency/spec/git-spec.js create mode 100644 script/lib/update-dependency/spec/helpers.js create mode 100644 script/lib/update-dependency/spec/util-spec.js create mode 100644 script/lib/update-dependency/util.js diff --git a/script/lib/update-dependency/fetch-outdated-dependencies.js b/script/lib/update-dependency/fetch-outdated-dependencies.js new file mode 100644 index 000000000..7678784f7 --- /dev/null +++ b/script/lib/update-dependency/fetch-outdated-dependencies.js @@ -0,0 +1,80 @@ +const fetch = require('node-fetch'); +const npmCheck = require('npm-check'); + +// this may be updated to use github releases instead +const apm = async function({ dependencies, packageDependencies }) { + try { + console.log('Checking apm registry...'); + const coreDependencies = Object.keys(dependencies).filter(dependency => { + // all core packages point to a remote url + return dependencies[dependency].match(new RegExp('^https?://')); + }); + + const promises = coreDependencies.map(async dependency => { + return fetch(`https://atom.io/api/packages/${dependency}`) + .then(res => res.json()) + .then(res => res) + .catch(ex => console.log(ex.message)); + }); + + const packages = await Promise.all(promises); + const outdatedPackages = []; + packages.map(dependency => { + if (dependency.hasOwnProperty('name')) { + const latestVersion = dependency.releases.latest; + const installed = packageDependencies[dependency.name]; + if (latestVersion > installed) { + outdatedPackages.push({ + moduleName: dependency.name, + latest: dependency.releases.latest, + isCorePackage: true, + installed + }); + } + } + }); + + console.log(`${outdatedPackages.length} outdated package(s) found`); + + return outdatedPackages; + } catch (ex) { + console.error(`An error occured: ${ex.message}`); + } +}; + +const npm = async function(cwd) { + try { + console.log('Checking npm registry...'); + + const currentState = await npmCheck({ + cwd, + ignoreDev: true, + skipUnused: true + }); + const outdatedPackages = currentState + .get('packages') + .filter(p => { + if (p.packageJson && p.latest && p.installed) { + return p.latest > p.installed; + } + }) + .map(({ packageJson, installed, moduleName, latest }) => ({ + packageJson, + installed, + moduleName, + latest, + isCorePackage: false + })); + + console.log(`${outdatedPackages.length} outdated package(s) found`); + + return outdatedPackages; + } catch (ex) { + console.error(`An error occured: ${ex.message}`); + } +}; + +module.exports = { + apm, + npm +}; diff --git a/script/lib/update-dependency/git.js b/script/lib/update-dependency/git.js new file mode 100644 index 000000000..a9f8843fe --- /dev/null +++ b/script/lib/update-dependency/git.js @@ -0,0 +1,67 @@ +const git = (git, repositoryRootPath) => { + const path = require('path'); + const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); + const packageLockFilePath = path.join( + repositoryRootPath, + 'package-lock.json' + ); + try { + git.getRemotes((err, remotes) => { + if (!err && !remotes.map(({ name }) => name).includes('ATOM')) { + git.addRemote( + 'ATOM', + `https://atom:${process.env.AUTH_TOKEN}@github.com/atom/atom.git/` + ); + } + }); + } catch (ex) { + console.log(ex.message); + } + return { + switchToMaster: async function() { + const { current } = await git.branch(); + if (current !== 'master') { + await git.checkout('master'); + } + }, + makeBranch: async function(dependency) { + const newBranch = `${dependency.moduleName}-${dependency.latest}`; + const { branches } = await git.branch(); + const { files } = await git.status(); + if (files.length > 0) { + await git.reset('hard'); + } + const found = Object.keys(branches).find( + branch => branch.indexOf(newBranch) > -1 + ); + found + ? await git.checkout(found) + : await git.checkoutLocalBranch(newBranch); + return { found, newBranch }; + }, + createCommit: async function({ moduleName, latest }) { + try { + const commitMessage = `:arrow_up: ${moduleName}@${latest}`; + await git.add([packageJsonFilePath, packageLockFilePath]); + await git.commit(commitMessage); + } catch (ex) { + throw Error(ex.message); + } + }, + publishBranch: async function(branch) { + try { + await git.push('ATOM', branch); + } catch (ex) { + throw Error(ex.message); + } + }, + deleteBranch: async function(branch) { + try { + await git.deleteLocalBranch(branch, true); + } catch (ex) { + throw Error(ex.message); + } + } + }; +}; +module.exports = git; diff --git a/script/lib/update-dependency/main.js b/script/lib/update-dependency/main.js new file mode 100644 index 000000000..9cfeb099e --- /dev/null +++ b/script/lib/update-dependency/main.js @@ -0,0 +1,97 @@ +/* eslint-disable camelcase */ +const simpleGit = require('simple-git'); +const path = require('path'); + +const { repositoryRootPath } = require('../../config'); +const packageJSON = require(path.join(repositoryRootPath, 'package.json')); +const git = simpleGit(repositoryRootPath); +const { createPR, findPR, addLabel } = require('./pull-request'); +const runApmInstall = require('../run-apm-install'); +const { + makeBranch, + createCommit, + switchToMaster, + publishBranch, + deleteBranch +} = require('./git')(git, repositoryRootPath); +const { updatePackageJson, sleep } = require('./util')(repositoryRootPath); +const fetchOutdatedDependencies = require('./fetch-outdated-dependencies'); + +module.exports = async function() { + try { + // ensure we are on master + await switchToMaster(); + const failedBumps = []; + const successfullBumps = []; + const outdateDependencies = [ + ...(await fetchOutdatedDependencies.npm(repositoryRootPath)), + ...(await fetchOutdatedDependencies.apm(packageJSON)) + ]; + const totalDependencies = outdateDependencies.length; + const pendingPRs = []; + for (const dependency of outdateDependencies) { + const { found, newBranch } = await makeBranch(dependency); + if (found) { + console.log(`Branch was found ${found}`); + console.log('checking if a PR already exists'); + const { + data: { total_count } + } = await findPR(dependency, newBranch); + if (total_count > 0) { + console.log(`pull request found!`); + } else { + console.log(`pull request not found!`); + const pr = { dependency, branch: newBranch, branchIsRemote: false }; + // confirm if branch found is a local branch + if (found.indexOf('remotes') === -1) { + await publishBranch(found); + } else { + pr.branchIsRemote = true; + } + pendingPRs.push(pr); + } + } else { + await updatePackageJson(dependency); + runApmInstall(repositoryRootPath, false); + await createCommit(dependency); + await publishBranch(newBranch); + pendingPRs.push({ + dependency, + branch: newBranch, + branchIsRemote: false + }); + } + + await switchToMaster(); + } + // create PRs here + for (const { dependency, branch, branchIsRemote } of pendingPRs) { + const { status, data = {} } = await createPR(dependency, branch); + if (status === 201) { + successfullBumps.push(dependency); + await addLabel(data.number); + } else { + failedBumps.push(dependency); + } + + if (!branchIsRemote) { + await deleteBranch(branch); + } + // https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits + await sleep(2000); + } + console.table([ + { + totalDependencies, + totalSuccessfullBumps: successfullBumps.length, + totalFailedBumps: failedBumps.length + } + ]); + console.log('Successfull bumps'); + console.table(successfullBumps); + console.log('Failed bumps'); + console.table(failedBumps); + } catch (ex) { + console.log(ex.message); + } +}; diff --git a/script/lib/update-dependency/spec/fetch-outdated-dependencies-spec.js b/script/lib/update-dependency/spec/fetch-outdated-dependencies-spec.js new file mode 100644 index 000000000..2660d4e70 --- /dev/null +++ b/script/lib/update-dependency/spec/fetch-outdated-dependencies-spec.js @@ -0,0 +1,27 @@ +const path = require('path'); +const fetchOutdatedDependencies = require('../fetch-outdated-dependencies'); +const { nativeDependencies } = require('./helpers'); +const repositoryRootPath = path.resolve('.', 'fixtures', 'dummy'); +const packageJSON = require(path.join(repositoryRootPath, 'package.json')); + +describe('Fetch outdated dependencies', function() { + it('should fetch outdated native dependencies', async () => { + spyOn(fetchOutdatedDependencies, 'npm').andReturn( + Promise.resolve(nativeDependencies) + ); + + expect(await fetchOutdatedDependencies.npm(repositoryRootPath)).toEqual( + nativeDependencies + ); + }); + + it('should fetch outdated core dependencies', async () => { + spyOn(fetchOutdatedDependencies, 'apm').andReturn( + Promise.resolve(nativeDependencies) + ); + + expect(await fetchOutdatedDependencies.apm(packageJSON)).toEqual( + nativeDependencies + ); + }); +}); diff --git a/script/lib/update-dependency/spec/fixtures/dummy b/script/lib/update-dependency/spec/fixtures/dummy new file mode 160000 index 000000000..526c50836 --- /dev/null +++ b/script/lib/update-dependency/spec/fixtures/dummy @@ -0,0 +1 @@ +Subproject commit 526c50836158b43d38cbaf11ad305fa8a6f43d1f diff --git a/script/lib/update-dependency/spec/fixtures/latest-package.json b/script/lib/update-dependency/spec/fixtures/latest-package.json new file mode 100644 index 000000000..dc291966f --- /dev/null +++ b/script/lib/update-dependency/spec/fixtures/latest-package.json @@ -0,0 +1,28 @@ +{ + "name": "test", + "version": "1.0.0", + "description": "just test", + "main": "index.js", + "dependencies": { + "spell-check": "https://www.atom.io/api/packages/spell-check/versions/0.79.1/tarball", + "status-bar": "https://www.atom.io/api/packages/status-bar/versions/2.8.17/tarball", + "styleguide": "https://www.atom.io/api/packages/styleguide/versions/1.49.12/tarball", + "symbols-view": "https://www.atom.io/api/packages/symbols-view/versions/0.118.5/tarball", + "@atom/watcher": "1.3.1", + "clear-cut": "^2.0.3", + "dedent": "^1.0.0", + "devtron": "1.2.6" + }, + "packageDependencies": { + "spell-check": "0.79.1", + "status-bar": "2.8.17", + "styleguide": "1.49.12", + "symbols-view": "0.118.5" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "darangi", + "license": "ISC" + } + \ No newline at end of file diff --git a/script/lib/update-dependency/spec/git-spec.js b/script/lib/update-dependency/spec/git-spec.js new file mode 100644 index 000000000..fca2ca765 --- /dev/null +++ b/script/lib/update-dependency/spec/git-spec.js @@ -0,0 +1,94 @@ +const path = require('path'); +const simpleGit = require('simple-git'); +const repositoryRootPath = path.resolve('.', 'fixtures', 'dummy'); +const git = simpleGit(repositoryRootPath); + +const { + switchToMaster, + makeBranch, + publishBranch, + createCommit, + deleteBranch +} = require('../git')(git, repositoryRootPath); + +describe('GIT', () => { + async function findBranch(branch) { + const { branches } = await git.branch(); + return Object.keys(branches).find(_branch => _branch.indexOf(branch) > -1); + } + const dependency = { + moduleName: 'atom', + latest: '2.0.0' + }; + const branch = `${dependency.moduleName}-${dependency.latest}`; + + beforeEach(async () => { + await git.checkout('master'); + }); + + it('remotes should include ATOM', async () => { + const remotes = await git.getRemotes(); + expect(remotes.map(({ name }) => name).includes('ATOM')).toBeTruthy(); + }); + + it('current branch should be master', async () => { + const testBranchExists = await findBranch('test'); + testBranchExists + ? await git.checkout('test') + : await git.checkoutLocalBranch('test'); + expect((await git.branch()).current).toBe('test'); + await switchToMaster(); + expect((await git.branch()).current).toBe('master'); + await git.deleteLocalBranch('test', true); + }); + + it('should make new branch and checkout to the new branch', async () => { + const { found, newBranch } = await makeBranch(dependency); + expect(found).toBe(undefined); + expect(newBranch).toBe(branch); + expect((await git.branch()).current).toBe(branch); + await git.checkout('master'); + await git.deleteLocalBranch(branch, true); + }); + + it('should find an existing branch and checkout to the branch', async () => { + await git.checkoutLocalBranch(branch); + const { found } = await makeBranch(dependency); + expect(found).not.toBe(undefined); + expect((await git.branch()).current).toBe(found); + await git.checkout('master'); + await git.deleteLocalBranch(branch, true); + }); + + it('should create a commit', async () => { + const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); + const packageLockFilePath = path.join( + repositoryRootPath, + 'package-lock.json' + ); + spyOn(git, 'commit'); + spyOn(git, 'add'); + await createCommit(dependency); + expect(git.add).toHaveBeenCalledWith([ + packageJsonFilePath, + packageLockFilePath + ]); + expect(git.commit).toHaveBeenCalledWith( + `${`:arrow_up: ${dependency.moduleName}@${dependency.latest}`}` + ); + }); + + it('should publish branch', async () => { + spyOn(git, 'push'); + await publishBranch(branch); + expect(git.push).toHaveBeenCalledWith('ATOM', branch); + }); + + it('should delete an existing branch', async () => { + await git.checkoutLocalBranch(branch); + await git.checkout('master'); + expect(await findBranch(branch)).not.toBe(undefined); + await deleteBranch(branch); + expect(await findBranch(branch)).toBe(undefined); + }); +}); diff --git a/script/lib/update-dependency/spec/helpers.js b/script/lib/update-dependency/spec/helpers.js new file mode 100644 index 000000000..09affa105 --- /dev/null +++ b/script/lib/update-dependency/spec/helpers.js @@ -0,0 +1,28 @@ +const latestPackageJSON = require('./fixtures/latest-package.json'); +const packageJSON = require('./fixtures/dummy/package.json'); +module.exports = { + coreDependencies: Object.keys(packageJSON.packageDependencies).map( + dependency => { + return { + latest: latestPackageJSON.packageDependencies[dependency], + installed: packageJSON.packageDependencies[dependency], + moduleName: dependency, + isCorePackage: true + }; + } + ), + nativeDependencies: Object.keys(packageJSON.dependencies) + .filter( + dependency => + !packageJSON.dependencies[dependency].match(new RegExp('^https?://')) + ) + .map(dependency => { + return { + latest: latestPackageJSON.dependencies[dependency], + packageJson: packageJSON.dependencies[dependency], + installed: packageJSON.dependencies[dependency], + moduleName: dependency, + isCorePackage: false + }; + }) +}; diff --git a/script/lib/update-dependency/spec/util-spec.js b/script/lib/update-dependency/spec/util-spec.js new file mode 100644 index 000000000..d4b8742e8 --- /dev/null +++ b/script/lib/update-dependency/spec/util-spec.js @@ -0,0 +1,38 @@ +const path = require('path'); +const fs = require('fs'); +const repositoryRootPath = path.resolve('.', 'fixtures', 'dummy'); +const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); +const { updatePackageJson } = require('../util')(repositoryRootPath); +const { coreDependencies, nativeDependencies } = require('./helpers'); + +describe('Update-dependency', function() { + const oldPackageJson = JSON.parse( + JSON.stringify(require(packageJsonFilePath)) + ); + var packageJson; + + it('bumps package.json properly', async function() { + const dependencies = [...coreDependencies, ...nativeDependencies]; + for (const dependency of dependencies) { + await updatePackageJson(dependency); + packageJson = JSON.parse(fs.readFileSync(packageJsonFilePath, 'utf-8')); + if (dependency.isCorePackage) { + expect(packageJson.packageDependencies[dependency.moduleName]).toBe( + dependency.latest + ); + expect(packageJson.dependencies[dependency.moduleName]).toContain( + dependency.latest + ); + } else { + expect(packageJson.dependencies[dependency.moduleName]).toBe( + dependency.latest + ); + } + } + + fs.writeFileSync( + packageJsonFilePath, + JSON.stringify(oldPackageJson, null, 2) + ); + }); +}); diff --git a/script/lib/update-dependency/util.js b/script/lib/update-dependency/util.js new file mode 100644 index 000000000..8031e0e98 --- /dev/null +++ b/script/lib/update-dependency/util.js @@ -0,0 +1,61 @@ +const fs = require('fs'); +const path = require('path'); + +const util = repositoryRootPath => { + const packageJsonFilePath = path.join(repositoryRootPath, 'package.json'); + const packageJSON = require(packageJsonFilePath); + return { + updatePackageJson: async function({ + moduleName, + installed, + latest, + isCorePackage = false, + packageJson = '' + }) { + console.log(`Bumping ${moduleName} from ${installed} to ${latest}`); + const updatePackageJson = JSON.parse(JSON.stringify(packageJSON)); + if (updatePackageJson.dependencies[moduleName]) { + let searchString = installed; + // gets the exact version installed in package json for native packages + if (!isCorePackage) { + if (/\^|~/.test(packageJson)) { + searchString = new RegExp(`\\${packageJson}`); + } else { + searchString = packageJson; + } + } + updatePackageJson.dependencies[ + moduleName + ] = updatePackageJson.dependencies[moduleName].replace( + searchString, + latest + ); + } + if (updatePackageJson.packageDependencies[moduleName]) { + updatePackageJson.packageDependencies[ + moduleName + ] = updatePackageJson.packageDependencies[moduleName].replace( + new RegExp(installed), + latest + ); + } + return new Promise((resolve, reject) => { + fs.writeFile( + packageJsonFilePath, + JSON.stringify(updatePackageJson, null, 2), + function(err) { + if (err) { + return reject(err); + } + + console.log(`Bumped ${moduleName} from ${installed} to ${latest}`); + return resolve(); + } + ); + }); + }, + sleep: ms => new Promise(resolve => setTimeout(resolve, ms)) + }; +}; + +module.exports = util; From b922fba627b87253c664538d52b630ec030279bd Mon Sep 17 00:00:00 2001 From: darangi Date: Mon, 29 Jun 2020 13:42:52 +0100 Subject: [PATCH 42/49] missing files --- script/lib/update-dependency/index.js | 3 ++ script/lib/update-dependency/pull-request.js | 40 ++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 script/lib/update-dependency/index.js create mode 100644 script/lib/update-dependency/pull-request.js diff --git a/script/lib/update-dependency/index.js b/script/lib/update-dependency/index.js new file mode 100644 index 000000000..3348f0c41 --- /dev/null +++ b/script/lib/update-dependency/index.js @@ -0,0 +1,3 @@ +const run = require('./main'); + +run(); diff --git a/script/lib/update-dependency/pull-request.js b/script/lib/update-dependency/pull-request.js new file mode 100644 index 000000000..f10a3540d --- /dev/null +++ b/script/lib/update-dependency/pull-request.js @@ -0,0 +1,40 @@ +const { request } = require('@octokit/request'); + +const requestWithAuth = request.defaults({ + baseUrl: 'https://api.github.com', + headers: { + 'user-agent': 'atom', + authorization: `token ${process.env.AUTH_TOKEN}` + }, + owner: 'atom', + repo: 'atom' +}); + +module.exports = { + createPR: async ( + { moduleName, isCorePackage, latest, installed }, + branch + ) => { + let description = `Bumps ${moduleName} from ${installed} to ${latest}`; + if (isCorePackage) { + description = `*List of changes between ${moduleName}@${installed} and ${moduleName}@${latest}: https://github.com/atom/${moduleName}/compare/v${installed}...v${latest}*`; + } + return requestWithAuth('POST /repos/:owner/:repo/pulls', { + title: `⬆️ ${moduleName}@${latest}`, + body: description, + base: 'master', + head: branch + }); + }, + findPR: async ({ moduleName, latest }, branch) => { + return requestWithAuth('GET /search/issues', { + q: `${moduleName} type:pr ${moduleName}@${latest} in:title repo:atom/atom head:${branch} state:open` + }); + }, + addLabel: async pullRequestNumber => { + return requestWithAuth('PATCH /repos/:owner/:repo/issues/:issue_number', { + labels: ['depency ⬆️'], + issue_number: pullRequestNumber + }); + } +}; From f936328a7348e562a784abef092c15576a6d6cab Mon Sep 17 00:00:00 2001 From: darangi Date: Wed, 1 Jul 2020 07:49:30 +0100 Subject: [PATCH 43/49] update nightly job --- script/vsts/nightly-release.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 6b180b62c..9e26a05ae 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -58,3 +58,33 @@ jobs: ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) displayName: Create Nightly Release + - job: bump_dependencies + displayName: Bump Dependencies + timeoutInMinutes: 180 + + pool: + vmImage: macos-10.14 + + steps: + - task: NodeTool@0 + inputs: + versionSpec: 12.13.1 + displayName: Install Node.js 12.13.1 + + - script: npm install --global npm@6.12.1 + displayName: Update npm + + - script: | + script/bootstrap + displayName: Bootstrap + + - script: | + cd script/lib + npm install + displayName: npm install + - script: | + cd script/lib/update-dependency + node index.js + displayName: Bump depedencies + env: + AUTH_TOKEN: $(GITHUB_TOKEN) From 9140f6501b92467146eb871c1a78868f5dfa3ab8 Mon Sep 17 00:00:00 2001 From: darangi Date: Fri, 3 Jul 2020 14:40:40 +0100 Subject: [PATCH 44/49] tests --- .../spec/fixtures/create-pr-response.json | 524 ++++++ .../spec/fixtures/search-response.json | 41 + .../spec/pull-request-spec.js | 53 + script/package-lock.json | 1426 ++++++++++++++++- script/package.json | 7 +- 5 files changed, 2048 insertions(+), 3 deletions(-) create mode 100644 script/lib/update-dependency/spec/fixtures/create-pr-response.json create mode 100644 script/lib/update-dependency/spec/fixtures/search-response.json create mode 100644 script/lib/update-dependency/spec/pull-request-spec.js diff --git a/script/lib/update-dependency/spec/fixtures/create-pr-response.json b/script/lib/update-dependency/spec/fixtures/create-pr-response.json new file mode 100644 index 000000000..351e48998 --- /dev/null +++ b/script/lib/update-dependency/spec/fixtures/create-pr-response.json @@ -0,0 +1,524 @@ +{ + "url": "https://api.github.com/repos/atom/octocat/pulls/1347", + "id": 1, + "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==", + "html_url": "https://github.com/atom/octocat/pull/1347", + "diff_url": "https://github.com/atom/octocat/pull/1347.diff", + "patch_url": "https://github.com/atom/octocat/pull/1347.patch", + "issue_url": "https://api.github.com/repos/atom/octocat/issues/1347", + "commits_url": "https://api.github.com/repos/atom/octocat/pulls/1347/commits", + "review_comments_url": "https://api.github.com/repos/atom/octocat/pulls/1347/comments", + "review_comment_url": "https://api.github.com/repos/atom/octocat/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/atom/octocat/issues/1347/comments", + "statuses_url": "https://api.github.com/repos/atom/octocat/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", + "number": 1347, + "state": "open", + "locked": true, + "title": "⬆️ octocat@2.0.0", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "body": "Bumps octocat from 1.0.0 to 2.0.0", + "labels": [ + { + "id": 208045946, + "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=", + "url": "https://api.github.com/repos/atom/octocat/labels/bug", + "name": "bug", + "description": "Something isn't working", + "color": "f29513", + "default": true + } + ], + "milestone": { + "url": "https://api.github.com/repos/atom/octocat/milestones/1", + "html_url": "https://github.com/atom/octocat/milestones/v1.0", + "labels_url": "https://api.github.com/repos/atom/octocat/milestones/1/labels", + "id": 1002604, + "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", + "number": 1, + "state": "open", + "title": "v1.0", + "description": "Tracking milestone for version 1.0", + "creator": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 4, + "closed_issues": 8, + "created_at": "2011-04-10T20:09:31Z", + "updated_at": "2014-03-03T18:58:10Z", + "closed_at": "2013-02-12T13:22:01Z", + "due_on": "2012-10-09T23:39:01Z" + }, + "active_lock_reason": "too heated", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:01:12Z", + "closed_at": "2011-01-26T19:01:12Z", + "merged_at": "2011-01-26T19:01:12Z", + "merge_commit_sha": "e5bd3914e2e596debea16f433f57875b5b90bcd6", + "assignee": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + { + "login": "hubot", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/hubot_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/hubot", + "html_url": "https://github.com/hubot", + "followers_url": "https://api.github.com/users/hubot/followers", + "following_url": "https://api.github.com/users/hubot/following{/other_user}", + "gists_url": "https://api.github.com/users/hubot/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hubot/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hubot/subscriptions", + "organizations_url": "https://api.github.com/users/hubot/orgs", + "repos_url": "https://api.github.com/users/hubot/repos", + "events_url": "https://api.github.com/users/hubot/events{/privacy}", + "received_events_url": "https://api.github.com/users/hubot/received_events", + "type": "User", + "site_admin": true + } + ], + "requested_reviewers": [ + { + "login": "other_user", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/other_user_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/other_user", + "html_url": "https://github.com/other_user", + "followers_url": "https://api.github.com/users/other_user/followers", + "following_url": "https://api.github.com/users/other_user/following{/other_user}", + "gists_url": "https://api.github.com/users/other_user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/other_user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/other_user/subscriptions", + "organizations_url": "https://api.github.com/users/other_user/orgs", + "repos_url": "https://api.github.com/users/other_user/repos", + "events_url": "https://api.github.com/users/other_user/events{/privacy}", + "received_events_url": "https://api.github.com/users/other_user/received_events", + "type": "User", + "site_admin": false + } + ], + "requested_teams": [ + { + "id": 1, + "node_id": "MDQ6VGVhbTE=", + "url": "https://api.github.com/teams/1", + "html_url": "https://api.github.com/teams/justice-league", + "name": "Justice League", + "slug": "justice-league", + "description": "A great team.", + "privacy": "closed", + "permission": "admin", + "members_url": "https://api.github.com/teams/1/members{/member}", + "repositories_url": "https://api.github.com/teams/1/repos", + "parent": null + } + ], + "head": { + "label": "atom:octocat-2.0.0", + "ref": "octocat-2.0.0", + "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 1296269, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "name": "Hello-World", + "full_name": "atom/octocat", + "owner": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/atom/octocat", + "description": "This your first repo!", + "fork": false, + "url": "https://api.github.com/repos/atom/octocat", + "archive_url": "http://api.github.com/repos/atom/octocat/{archive_format}{/ref}", + "assignees_url": "http://api.github.com/repos/atom/octocat/assignees{/user}", + "blobs_url": "http://api.github.com/repos/atom/octocat/git/blobs{/sha}", + "branches_url": "http://api.github.com/repos/atom/octocat/branches{/branch}", + "collaborators_url": "http://api.github.com/repos/atom/octocat/collaborators{/collaborator}", + "comments_url": "http://api.github.com/repos/atom/octocat/comments{/number}", + "commits_url": "http://api.github.com/repos/atom/octocat/commits{/sha}", + "compare_url": "http://api.github.com/repos/atom/octocat/compare/{base}...{head}", + "contents_url": "http://api.github.com/repos/atom/octocat/contents/{+path}", + "contributors_url": "http://api.github.com/repos/atom/octocat/contributors", + "deployments_url": "http://api.github.com/repos/atom/octocat/deployments", + "downloads_url": "http://api.github.com/repos/atom/octocat/downloads", + "events_url": "http://api.github.com/repos/atom/octocat/events", + "forks_url": "http://api.github.com/repos/atom/octocat/forks", + "git_commits_url": "http://api.github.com/repos/atom/octocat/git/commits{/sha}", + "git_refs_url": "http://api.github.com/repos/atom/octocat/git/refs{/sha}", + "git_tags_url": "http://api.github.com/repos/atom/octocat/git/tags{/sha}", + "git_url": "git:github.com/atom/octocat.git", + "issue_comment_url": "http://api.github.com/repos/atom/octocat/issues/comments{/number}", + "issue_events_url": "http://api.github.com/repos/atom/octocat/issues/events{/number}", + "issues_url": "http://api.github.com/repos/atom/octocat/issues{/number}", + "keys_url": "http://api.github.com/repos/atom/octocat/keys{/key_id}", + "labels_url": "http://api.github.com/repos/atom/octocat/labels{/name}", + "languages_url": "http://api.github.com/repos/atom/octocat/languages", + "merges_url": "http://api.github.com/repos/atom/octocat/merges", + "milestones_url": "http://api.github.com/repos/atom/octocat/milestones{/number}", + "notifications_url": "http://api.github.com/repos/atom/octocat/notifications{?since,all,participating}", + "pulls_url": "http://api.github.com/repos/atom/octocat/pulls{/number}", + "releases_url": "http://api.github.com/repos/atom/octocat/releases{/id}", + "ssh_url": "git@github.com:atom/octocat.git", + "stargazers_url": "http://api.github.com/repos/atom/octocat/stargazers", + "statuses_url": "http://api.github.com/repos/atom/octocat/statuses/{sha}", + "subscribers_url": "http://api.github.com/repos/atom/octocat/subscribers", + "subscription_url": "http://api.github.com/repos/atom/octocat/subscription", + "tags_url": "http://api.github.com/repos/atom/octocat/tags", + "teams_url": "http://api.github.com/repos/atom/octocat/teams", + "trees_url": "http://api.github.com/repos/atom/octocat/git/trees{/sha}", + "clone_url": "https://github.com/atom/octocat.git", + "mirror_url": "git:git.example.com/atom/octocat", + "hooks_url": "http://api.github.com/repos/atom/octocat/hooks", + "svn_url": "https://svn.github.com/atom/octocat", + "homepage": "https://github.com", + "language": null, + "forks_count": 9, + "stargazers_count": 80, + "watchers_count": 80, + "size": 108, + "default_branch": "master", + "open_issues_count": 0, + "is_template": true, + "topics": [ + "octocat", + "atom", + "electron", + "api" + ], + "has_issues": true, + "has_projects": true, + "has_wiki": true, + "has_pages": false, + "has_downloads": true, + "archived": false, + "disabled": false, + "visibility": "public", + "pushed_at": "2011-01-26T19:06:43Z", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:14:43Z", + "permissions": { + "admin": false, + "push": false, + "pull": true + }, + "allow_rebase_merge": true, + "template_repository": null, + "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", + "allow_squash_merge": true, + "delete_branch_on_merge": true, + "allow_merge_commit": true, + "subscribers_count": 42, + "network_count": 0 + } + }, + "base": { + "label": "octocat:master", + "ref": "master", + "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", + "user": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 1296269, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", + "name": "Hello-World", + "full_name": "atom/octocat", + "owner": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/atom/octocat", + "description": "This your first repo!", + "fork": false, + "url": "https://api.github.com/repos/atom/octocat", + "archive_url": "http://api.github.com/repos/atom/octocat/{archive_format}{/ref}", + "assignees_url": "http://api.github.com/repos/atom/octocat/assignees{/user}", + "blobs_url": "http://api.github.com/repos/atom/octocat/git/blobs{/sha}", + "branches_url": "http://api.github.com/repos/atom/octocat/branches{/branch}", + "collaborators_url": "http://api.github.com/repos/atom/octocat/collaborators{/collaborator}", + "comments_url": "http://api.github.com/repos/atom/octocat/comments{/number}", + "commits_url": "http://api.github.com/repos/atom/octocat/commits{/sha}", + "compare_url": "http://api.github.com/repos/atom/octocat/compare/{base}...{head}", + "contents_url": "http://api.github.com/repos/atom/octocat/contents/{+path}", + "contributors_url": "http://api.github.com/repos/atom/octocat/contributors", + "deployments_url": "http://api.github.com/repos/atom/octocat/deployments", + "downloads_url": "http://api.github.com/repos/atom/octocat/downloads", + "events_url": "http://api.github.com/repos/atom/octocat/events", + "forks_url": "http://api.github.com/repos/atom/octocat/forks", + "git_commits_url": "http://api.github.com/repos/atom/octocat/git/commits{/sha}", + "git_refs_url": "http://api.github.com/repos/atom/octocat/git/refs{/sha}", + "git_tags_url": "http://api.github.com/repos/atom/octocat/git/tags{/sha}", + "git_url": "git:github.com/atom/octocat.git", + "issue_comment_url": "http://api.github.com/repos/atom/octocat/issues/comments{/number}", + "issue_events_url": "http://api.github.com/repos/atom/octocat/issues/events{/number}", + "issues_url": "http://api.github.com/repos/atom/octocat/issues{/number}", + "keys_url": "http://api.github.com/repos/atom/octocat/keys{/key_id}", + "labels_url": "http://api.github.com/repos/atom/octocat/labels{/name}", + "languages_url": "http://api.github.com/repos/atom/octocat/languages", + "merges_url": "http://api.github.com/repos/atom/octocat/merges", + "milestones_url": "http://api.github.com/repos/atom/octocat/milestones{/number}", + "notifications_url": "http://api.github.com/repos/atom/octocat/notifications{?since,all,participating}", + "pulls_url": "http://api.github.com/repos/atom/octocat/pulls{/number}", + "releases_url": "http://api.github.com/repos/atom/octocat/releases{/id}", + "ssh_url": "git@github.com:atom/octocat.git", + "stargazers_url": "http://api.github.com/repos/atom/octocat/stargazers", + "statuses_url": "http://api.github.com/repos/atom/octocat/statuses/{sha}", + "subscribers_url": "http://api.github.com/repos/atom/octocat/subscribers", + "subscription_url": "http://api.github.com/repos/atom/octocat/subscription", + "tags_url": "http://api.github.com/repos/atom/octocat/tags", + "teams_url": "http://api.github.com/repos/atom/octocat/teams", + "trees_url": "http://api.github.com/repos/atom/octocat/git/trees{/sha}", + "clone_url": "https://github.com/atom/octocat.git", + "mirror_url": "git:git.example.com/atom/octocat", + "hooks_url": "http://api.github.com/repos/atom/octocat/hooks", + "svn_url": "https://svn.github.com/atom/octocat", + "homepage": "https://github.com", + "language": null, + "forks_count": 9, + "stargazers_count": 80, + "watchers_count": 80, + "size": 108, + "default_branch": "master", + "open_issues_count": 0, + "is_template": true, + "topics": [ + "octocat", + "atom", + "electron", + "api" + ], + "has_issues": true, + "has_projects": true, + "has_wiki": true, + "has_pages": false, + "has_downloads": true, + "archived": false, + "disabled": false, + "visibility": "public", + "pushed_at": "2011-01-26T19:06:43Z", + "created_at": "2011-01-26T19:01:12Z", + "updated_at": "2011-01-26T19:14:43Z", + "permissions": { + "admin": false, + "push": false, + "pull": true + }, + "allow_rebase_merge": true, + "template_repository": null, + "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", + "allow_squash_merge": true, + "delete_branch_on_merge": true, + "allow_merge_commit": true, + "subscribers_count": 42, + "network_count": 0 + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/atom/octocat/pulls/1347" + }, + "html": { + "href": "https://github.com/atom/octocat/pull/1347" + }, + "issue": { + "href": "https://api.github.com/repos/atom/octocat/issues/1347" + }, + "comments": { + "href": "https://api.github.com/repos/atom/octocat/issues/1347/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/atom/octocat/pulls/1347/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/atom/octocat/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/atom/octocat/pulls/1347/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/atom/octocat/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e" + } + }, + "author_association": "OWNER", + "draft": false, + "merged": false, + "mergeable": true, + "rebaseable": true, + "mergeable_state": "clean", + "merged_by": { + "login": "octocat", + "id": 1, + "node_id": "MDQ6VXNlcjE=", + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "gravatar_id": "", + "url": "https://api.github.com/users/octocat", + "html_url": "https://github.com/octocat", + "followers_url": "https://api.github.com/users/octocat/followers", + "following_url": "https://api.github.com/users/octocat/following{/other_user}", + "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", + "organizations_url": "https://api.github.com/users/octocat/orgs", + "repos_url": "https://api.github.com/users/octocat/repos", + "events_url": "https://api.github.com/users/octocat/events{/privacy}", + "received_events_url": "https://api.github.com/users/octocat/received_events", + "type": "User", + "site_admin": false + }, + "comments": 10, + "review_comments": 0, + "maintainer_can_modify": true, + "commits": 3, + "additions": 100, + "deletions": 3, + "changed_files": 5 + } diff --git a/script/lib/update-dependency/spec/fixtures/search-response.json b/script/lib/update-dependency/spec/fixtures/search-response.json new file mode 100644 index 000000000..a38108116 --- /dev/null +++ b/script/lib/update-dependency/spec/fixtures/search-response.json @@ -0,0 +1,41 @@ +{ + "total_count": 40, + "incomplete_results": false, + "items": [ + { + "id": 3081286, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDgxMjg2", + "name": "Tetris", + "full_name": "dtrupenn/Tetris", + "owner": { + "login": "dtrupenn", + "id": 872147, + "node_id": "MDQ6VXNlcjg3MjE0Nw==", + "avatar_url": "https://secure.gravatar.com/avatar/e7956084e75f239de85d3a31bc172ace?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", + "gravatar_id": "", + "url": "https://api.github.com/users/dtrupenn", + "received_events_url": "https://api.github.com/users/dtrupenn/received_events", + "type": "User" + }, + "private": false, + "html_url": "https://github.com/dtrupenn/Tetris", + "description": "A C implementation of Tetris using Pennsim through LC4", + "fork": false, + "url": "https://api.github.com/repos/dtrupenn/Tetris", + "created_at": "2012-01-01T00:31:50Z", + "updated_at": "2013-01-05T17:58:47Z", + "pushed_at": "2012-01-01T00:37:02Z", + "homepage": "", + "size": 524, + "stargazers_count": 1, + "watchers_count": 1, + "language": "Assembly", + "forks_count": 0, + "open_issues_count": 0, + "master_branch": "master", + "default_branch": "master", + "score": 1.0 + } + ] + } + \ No newline at end of file diff --git a/script/lib/update-dependency/spec/pull-request-spec.js b/script/lib/update-dependency/spec/pull-request-spec.js new file mode 100644 index 000000000..0d3cd38be --- /dev/null +++ b/script/lib/update-dependency/spec/pull-request-spec.js @@ -0,0 +1,53 @@ +const nock = require('nock'); +const { createPR, findPR } = require('../pull-request'); +const createPrResponse = require('./fixtures/create-pr-response.json'); +const searchResponse = require('./fixtures/search-response.json'); + +describe('Pull Request', () => { + it('Should create a pull request', async () => { + const scope = nock('https://api.github.com') + .post('/repos/atom/atom/pulls', { + title: '⬆️ octocat@2.0.0', + body: 'Bumps octocat from 1.0.0 to 2.0.0', + head: 'octocat-2.0.0', + base: 'master' + }) + .reply(200, createPrResponse); + const response = await createPR( + { + moduleName: 'octocat', + installed: '1.0.0', + latest: '2.0.0', + isCorePackage: false + }, + 'octocat-2.0.0' + ); + scope.done(); + + expect(response.data).toEqual(createPrResponse); + }); + + it('Should search for a pull request', async () => { + const scope = nock('https://api.github.com') + .get('/search/issues') + .query({ + q: + 'octocat type:pr octocat@2.0.0 in:title repo:atom/atom head:octocat-2.0.0 state:open', + owner: 'atom', + repo: 'atom' + }) + .reply(200, searchResponse); + + const response = await findPR( + { + moduleName: 'octocat', + installed: '1.0.0', + latest: '2.0.0' + }, + 'octocat-2.0.0' + ); + scope.done(); + + expect(response.data).toEqual(searchResponse); + }); +}); diff --git a/script/package-lock.json b/script/package-lock.json index 77bfc0248..bbe79c760 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -322,6 +322,34 @@ } } }, + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "requires": { + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -336,6 +364,63 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" }, + "@octokit/endpoint": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz", + "integrity": "sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg==", + "requires": { + "@octokit/types": "^5.0.0", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==" + } + } + }, + "@octokit/request": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.5.tgz", + "integrity": "sha512-atAs5GAGbZedvJXXdjtKljin+e2SltEs48B3naJjqWupYl2IUBbB/CJisyjbNHcKpHzb3E+OYEZ46G8eakXgQg==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^5.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==" + } + } + }, + "@octokit/request-error": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", + "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", + "requires": { + "@octokit/types": "^5.0.1", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.0.1.tgz", + "integrity": "sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA==", + "requires": { + "@types/node": ">= 8" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -525,6 +610,43 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -978,6 +1100,27 @@ "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=" }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, "babylon": { "version": "5.8.38", "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", @@ -1125,6 +1268,85 @@ "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", "optional": true }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1259,6 +1481,24 @@ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "callsite-record": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz", + "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=", + "requires": { + "callsite": "^1.0.0", + "chalk": "^1.1.1", + "error-stack-parser": "^1.3.3", + "highlight-es": "^1.0.0", + "lodash": "4.6.1 || ^4.16.1", + "pinkie-promise": "^2.0.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1290,6 +1530,11 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz", "integrity": "sha512-vs79o1mOSKRGv/1pSkp4EXgl4ZviWeYReXw60XfacPU64uQWZwJT6vZNmxRF9O+6zu71sJwMxLK5JXxbzuVrLw==" }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1377,6 +1622,11 @@ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -1408,6 +1658,11 @@ } } }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -1416,6 +1671,11 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1652,6 +1912,19 @@ "proto-list": "~1.2.1" } }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "requires": { + "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" + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -1703,6 +1976,14 @@ } } }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -1736,6 +2017,11 @@ "which": "^1.2.8" } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, "cson-parser": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.0.9.tgz", @@ -1804,6 +2090,11 @@ "assert-plus": "^1.0.0" } }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2010,6 +2301,231 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, + "depcheck": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz", + "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==", + "requires": { + "@babel/parser": "^7.3.1", + "@babel/traverse": "^7.2.3", + "builtin-modules": "^3.0.0", + "deprecate": "^1.0.0", + "deps-regex": "^0.1.4", + "js-yaml": "^3.4.2", + "lodash": "^4.17.11", + "minimatch": "^3.0.2", + "node-sass-tilde-importer": "^1.0.2", + "please-upgrade-node": "^3.1.1", + "require-package-name": "^2.0.1", + "resolve": "^1.10.0", + "vue-template-compiler": "^2.6.10", + "walkdir": "^0.3.2", + "yargs": "^13.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "walkdir": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz", + "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.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": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "deprecate": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz", + "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==" + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "deps-regex": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", + "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=" + }, "detect-indent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", @@ -2631,6 +3147,14 @@ "is-arrayish": "^0.2.1" } }, + "error-stack-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", + "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", + "requires": { + "stackframe": "^0.3.1" + } + }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", @@ -3189,6 +3713,11 @@ "clone-regexp": "^1.0.0" } }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -3210,6 +3739,14 @@ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", @@ -3667,6 +4204,11 @@ "repeat-string": "^1.5.2" } }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -4017,6 +4559,11 @@ "resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz", "integrity": "sha1-fdeTMNKr5pwQws73lxTJchV5Hfo=" }, + "giturl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.1.tgz", + "integrity": "sha512-wQourBdI13n8tbjcZTDl6k+ZrCRMU6p9vfp9jknZq+zfWc8xXNztpZFM4XkPHVzHcMSUZxEMYYKZjIGkPlei6Q==" + }, "glob": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz", @@ -4089,6 +4636,36 @@ } } }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -4290,6 +4867,59 @@ } } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "highlight-es": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", + "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", + "requires": { + "chalk": "^2.4.0", + "is-es2016-keyword": "^1.0.0", + "js-tokens": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "home-or-tmp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", @@ -4299,6 +4929,14 @@ "user-home": "^1.1.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -4614,6 +5252,14 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -4667,6 +5313,11 @@ "is-primitive": "^2.0.0" } }, + "is-es2016-keyword": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", + "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=" + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -4706,6 +5357,15 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, "is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", @@ -4714,6 +5374,11 @@ "is-finite": "^1.0.0" } }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -4783,6 +5448,11 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -4796,6 +5466,11 @@ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5014,6 +5689,14 @@ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.6.1.tgz", "integrity": "sha512-nQRpMcHm1cQ6gmztdvLcIvxocznSMqH/y6XtERrWrHaymOYdDGroRqetJvJycxGEr1aakXiigDgn7JnzuXlk6A==" }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "^4.0.0" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -5186,6 +5869,24 @@ "strip-bom": "^2.0.0" } }, + "load-yaml-file": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz", + "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==", + "requires": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^2.3.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -5237,6 +5938,11 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, "lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", @@ -5259,6 +5965,11 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -5348,6 +6059,26 @@ "yallist": "^2.1.2" } }, + "macos-release": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.0.tgz", + "integrity": "sha512-ko6deozZYiAkqa/0gmcsz+p4jSy3gY7/ZsCEokPaYd8k+6/aXGkiTgr61+Owup7Sf+xjqW8u2ElhoM9SEcEfuA==" + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -5624,6 +6355,32 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, + "nock": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.2.tgz", + "integrity": "sha512-Wm8H22iT3UKPDf138tmgJ0NRfCLd9f2LByki9T2mGHnB66pEqvJh3gV/up1ZufZF24n7/pDYyLGybdqOzF3JIw==", + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "node-abi": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.13.0.tgz", @@ -5639,11 +6396,32 @@ } } }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, "node-gyp-build": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==" }, + "node-sass-tilde-importer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", + "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", + "requires": { + "find-parent-dir": "^0.3.0" + } + }, "nodeify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", @@ -8821,6 +9599,176 @@ } } }, + "npm-check": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz", + "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==", + "requires": { + "babel-runtime": "^6.6.1", + "callsite-record": "^3.0.0", + "chalk": "^1.1.3", + "co": "^4.6.0", + "depcheck": "0.8.3", + "execa": "^0.2.2", + "giturl": "^1.0.0", + "global-modules": "^1.0.0", + "globby": "^4.0.0", + "inquirer": "^0.12.0", + "is-ci": "^1.0.8", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "minimatch": "^3.0.2", + "node-emoji": "^1.0.3", + "ora": "^0.2.1", + "package-json": "^4.0.1", + "path-exists": "^2.1.0", + "pkg-dir": "^1.0.0", + "preferred-pm": "^1.0.1", + "semver": "^5.0.1", + "semver-diff": "^2.0.0", + "text-table": "^0.2.0", + "throat": "^2.0.2", + "update-notifier": "^2.1.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "execa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz", + "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=", + "requires": { + "cross-spawn-async": "^2.1.1", + "npm-run-path": "^1.0.0", + "object-assign": "^4.0.1", + "path-key": "^1.0.0", + "strip-eof": "^1.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^6.0.1", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "requires": { + "once": "^1.3.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + } + }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", @@ -9016,6 +9964,41 @@ } } }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -9024,6 +10007,15 @@ "lcid": "^1.0.0" } }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -9044,6 +10036,11 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -9065,6 +10062,55 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9113,6 +10159,11 @@ "error-ex": "^1.2.0" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, "parse5": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", @@ -9226,6 +10277,14 @@ } } }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "requires": { + "semver-compare": "^1.0.0" + } + }, "plist": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", @@ -9516,6 +10575,22 @@ "which-pm-runs": "^1.0.0" } }, + "preferred-pm": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz", + "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==", + "requires": { + "path-exists": "^3.0.0", + "which-pm": "^1.0.1" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -9585,6 +10660,11 @@ "asap": "~2.0.3" } }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -9805,6 +10885,23 @@ "once": "^1.3.0" } }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" + } + } + }, "recast": { "version": "0.10.33", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", @@ -9896,6 +10993,23 @@ } } }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" + } + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -10041,6 +11155,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=" + }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -10049,6 +11168,15 @@ "path-parse": "^1.0.5" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -10170,6 +11298,11 @@ "is-promise": "^2.1.0" } }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" + }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", @@ -10232,8 +11365,15 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "optional": true + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "^5.0.3" + } }, "serialize-error": { "version": "3.0.0", @@ -10304,6 +11444,31 @@ "simple-concat": "^1.0.0" } }, + "simple-git": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.11.0.tgz", + "integrity": "sha512-wFePCEQYY6BzVOg/BuUVEhr3jZPF/cPG/BN2UXgax6NHc3bJ9UrDc5AME281gs2C7J1UZ6BGRJYT64khx9T+ng==", + "requires": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.0.1", + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "simple-is": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", @@ -10561,6 +11726,11 @@ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, + "stackframe": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", + "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=" + }, "state-toggle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", @@ -11199,6 +12369,58 @@ "rimraf": "~2.6.2" } }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, "terser": { "version": "3.10.8", "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.8.tgz", @@ -11255,6 +12477,11 @@ } } }, + "throat": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz", + "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=" + }, "throttleit": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", @@ -11274,6 +12501,11 @@ "xtend": "~2.1.1" } }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11603,6 +12835,14 @@ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "unist-util-find-all-after": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.2.tgz", @@ -11645,6 +12885,14 @@ "unist-util-is": "^2.1.1" } }, + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "requires": { + "os-name": "^3.1.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -11691,6 +12939,66 @@ } } }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "requires": { + "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" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -11792,6 +13100,15 @@ "unist-util-stringify-position": "^1.1.1" } }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, "walkdir": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.12.tgz", @@ -11842,6 +13159,22 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, + "which-pm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz", + "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==", + "requires": { + "load-yaml-file": "^0.1.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", @@ -11855,11 +13188,85 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, + "windows-release": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.1.tgz", + "integrity": "sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A==", + "requires": { + "execa": "^1.0.0" + }, + "dependencies": { + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -11887,11 +13294,26 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", diff --git a/script/package.json b/script/package.json index 9c0b36bca..337007f27 100644 --- a/script/package.json +++ b/script/package.json @@ -3,6 +3,8 @@ "description": "Atom build scripts", "dependencies": { "7zip-bin": "^4.0.2", + "@atom/electron-winstaller": "0.0.1", + "@octokit/request": "^5.4.5", "async": "2.0.1", "babel-core": "5.8.38", "babel-eslint": "^10.0.1", @@ -14,7 +16,6 @@ "electron-link": "0.4.1", "electron-mksnapshot": "^9.0.2", "electron-packager": "12.2.0", - "@atom/electron-winstaller": "0.0.1", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-config-standard": "^12.0.0", @@ -33,14 +34,18 @@ "lodash.template": "4.5.0", "minidump": "0.9.0", "mkdirp": "0.5.1", + "nock": "^13.0.2", + "node-fetch": "^2.6.0", "normalize-package-data": "2.3.5", "npm": "6.14.4", + "npm-check": "^5.9.2", "passwd-user": "2.1.0", "pegjs": "0.9.0", "prettier": "^1.17.0", "random-seed": "^0.3.0", "season": "5.3.0", "semver": "5.3.0", + "simple-git": "^2.7.0", "stylelint": "^9.0.0", "stylelint-config-standard": "^18.1.0", "sync-request": "3.0.1", From 581b46cfdd77ae1cb652f4338f3911e53089c69d Mon Sep 17 00:00:00 2001 From: runner Date: Tue, 7 Jul 2020 03:11:10 +0000 Subject: [PATCH 45/49] :arrow_up: prebuild-install@5.3.5 --- package-lock.json | 70 ++++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4ab8efdc4..d33fa61f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1881,6 +1881,15 @@ "node-releases": "^1.1.50" } }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, "buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -3844,6 +3853,11 @@ "resolved": "https://registry.npmjs.org/idb/-/idb-4.0.5.tgz", "integrity": "sha512-P+Fk9HT2h1DhXoE1YNK183SY+CRh2GHNh28de94sGwhe0bUA75JJeVJWt3SenE5p0BXK7maflIq29dl6UZHrFw==" }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -4964,6 +4978,11 @@ } } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "mocha": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.1.tgz", @@ -5569,14 +5588,14 @@ } }, "prebuild-install": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", - "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.5.tgz", + "integrity": "sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw==", "requires": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", "github-from-package": "0.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.3", "mkdirp": "^0.5.1", "napi-build-utils": "^1.0.1", "node-abi": "^2.7.0", @@ -5591,11 +5610,13 @@ }, "dependencies": { "bl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", - "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", "requires": { - "readable-stream": "^3.0.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, "decompress-response": { @@ -5607,9 +5628,14 @@ } }, "mimic-response": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", - "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "pump": { "version": "3.0.0", @@ -5621,9 +5647,9 @@ } }, "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -5641,22 +5667,22 @@ } }, "tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", + "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", "requires": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.0.0" } }, "tar-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", - "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", + "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", "requires": { - "bl": "^3.0.0", + "bl": "^4.0.1", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", diff --git a/package.json b/package.json index 18840836c..8202fd556 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "pathwatcher": "8.1.0", "postcss": "5.2.4", "postcss-selector-parser": "2.2.1", - "prebuild-install": "^5.3.3", + "prebuild-install": "5.3.5", "property-accessors": "^1.1.3", "random-words": "0.0.1", "resolve": "^1.1.6", From d6cc11af897fc236bf0b43a13d71149650fa28f8 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Wed, 8 Jul 2020 08:55:02 -0500 Subject: [PATCH 46/49] Rename packagePaths to packageNames Co-authored-by: Sadick --- src/package-manager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/package-manager.js b/src/package-manager.js index d42acc9a0..14f1c9377 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -419,12 +419,12 @@ module.exports = class PackageManager { for (const packageDirPath of this.packageDirPaths) { if (fs.isDirectorySync(packageDirPath)) { - const packagePaths = fs + const packageNames = fs .readdirSync(packageDirPath, { withFileTypes: true }) .filter(dirent => dirent.isDirectory()) .map(dirent => dirent.name); - for (const packageName of packagePaths) { + for (const packageName of packageNames) { if ( !packageName.startsWith('.') && !packagesByName.has(packageName) From f79dd596cedab70d1365bfbee19301988e1c222d Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Thu, 9 Jul 2020 23:14:12 -0500 Subject: [PATCH 47/49] no PR triggers on release builds --- script/vsts/release-branch-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/script/vsts/release-branch-build.yml b/script/vsts/release-branch-build.yml index 58c132f7d..24635821d 100644 --- a/script/vsts/release-branch-build.yml +++ b/script/vsts/release-branch-build.yml @@ -2,6 +2,7 @@ trigger: - master - 1.* # VSTS only supports wildcards at the end - electron-* +pr: none # no PR triggers jobs: - job: GetReleaseVersion From bb2cedbff3f860d689a58b0ea046e4e6c188c250 Mon Sep 17 00:00:00 2001 From: Hubot Date: Fri, 10 Jul 2020 10:25:56 -0500 Subject: [PATCH 48/49] 1.51.0-dev --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c4f6497de..faac01c2e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "1.50.0-dev", + "version": "1.51.0-dev", "description": "A hackable text editor for the 21st Century.", "main": "./src/main-process/main.js", "repository": { From fef2de59a48438fd0a24e52c9f2c51fa45ef3949 Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Fri, 10 Jul 2020 11:58:17 -0400 Subject: [PATCH 49/49] node-gyp 5.x still accepts Python 2.6 --- README.md | 2 +- script/lib/verify-machine-requirements.js | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b8b9ff9da..6d2ae4f8c 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ This version enables you to install multiple Atom versions in parallel. It has b but should be compatible with other Linux distributions. 1. Install dependencies (on Ubuntu): `sudo apt install git gconf2 gconf-service libgtk2.0-0 libudev1 libgcrypt20 libnotify4 libxtst6 libnss3 python3 gvfs-bin xdg-utils libcap2` - 1. (If the `python3` package isn't available, or is too old (Python 3 should be >= 3.5), either `python2` or `python` will work in its place.) + 1. (If the `python3` package isn't available, or is too old (Python 3 should be >= 3.5), either `python2` or `python` (2.6 or 2.7) will work in its place.) 2. Download `atom-amd64.tar.gz` from the [Atom releases page](https://github.com/atom/atom/releases/latest). 3. Run `tar xf atom-amd64.tar.gz` in the directory where you want to extract the Atom folder. 4. Launch Atom using the installed `atom` command from the newly extracted directory. diff --git a/script/lib/verify-machine-requirements.js b/script/lib/verify-machine-requirements.js index 5181c4039..ccc4a6841 100644 --- a/script/lib/verify-machine-requirements.js +++ b/script/lib/verify-machine-requirements.js @@ -55,9 +55,11 @@ function verifyPython() { // // TODO: If this repo ships a newer version of node-gyp (v6.x or later), please update this script. // (Currently, the build scripts and apm each depend on npm v6.14, which depends on node-gyp v5.) - // node-gyp v5.x looks for python first, then python2, then python3. - // node-gyp v6.x looks for python3 first, then python, then python2.) - // Also, node-gyp v7.x stopped using the "-2" flag for "py.exe", + // Differences between major versions of node-gyp: + // node-gyp 5.x looks for python, then python2, then python3. + // node-gyp 6.x looks for python3, then python, then python2.) + // node-gyp 5.x accepts Python ^2.6 || >= 3.5, node-gyp 6+ only accepts Python == 2.7 || >= 3.5. + // node-gyp 7.x stopped using the "-2" flag for "py.exe", // so as to allow finding Python 3 as well, not just Python 2. // https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md#v700-2020-06-03 @@ -80,9 +82,10 @@ function verifyPython() { if (prependFlag) { // prependFlag is an optional argument, // used to prepend "-2" for the "py.exe" launcher. - // TODO: Refactor by eliminating prependFlag - // once apm updates to node-gyp v7.x or newer, in which - // the "-2" flag has been dropped for invoking the py launcher. + // + // TODO: Refactor this script by eliminating "prependFlag" + // once we update to node-gyp v7.x or newer; + // the "-2" flag is not used in node-gyp v7.x. allFlags.unshift(prependFlag); } @@ -106,7 +109,7 @@ function verifyPython() { let majorVersion = Number(versionComponents[0]); let minorVersion = Number(versionComponents[1]); if ( - (majorVersion === 2 && minorVersion === 7) || + (majorVersion === 2 && minorVersion >= 6) || (majorVersion === 3 && minorVersion >= 5) ) { usablePythonWasFound = true; @@ -132,7 +135,7 @@ function verifyPython() { throw new Error( `NODE_GYP_FORCE_PYTHON is set to: "${binary}", but this is not a valid Python.\n` + 'Please set NODE_GYP_FORCE_PYTHON to something valid, or unset it entirely.\n' + - '(Python 2.7 or 3.5+ is required to build Atom.)\n' + '(Python 2.6, 2.7 or 3.5+ is required to build Atom.)\n' ); } } @@ -161,7 +164,7 @@ function verifyPython() { } else { throw new Error( `\n${triedLog}\n` + - 'Python 2.7 or 3.5+ is required to build Atom.\n' + + 'Python 2.6, 2.7 or 3.5+ is required to build Atom.\n' + 'verify-machine-requirements.js was unable to find such a version of Python.\n' + "Set the PYTHON env var to e.g. 'C:/path/to/Python27/python.exe'\n" + 'if your Python is installed in a non-default location.\n'