From c4a6eb4bf4346e5a696ec274840818e56e5240c9 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Fri, 3 Jul 2020 00:04:46 -0500 Subject: [PATCH 1/8] Using windows-latest for vmImage --- script/vsts/nightly-release.yml | 2 ++ script/vsts/pull-requests.yml | 2 ++ script/vsts/release-branch-build.yml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 6b180b62c03..2d9822dd947 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -1,5 +1,7 @@ jobs: - job: GetReleaseVersion + pool: + vmImage: 'windows-latest' steps: # This has to be done separately because VSTS inexplicably # exits the script block after `npm install` completes. diff --git a/script/vsts/pull-requests.yml b/script/vsts/pull-requests.yml index a21f7d75a3c..c23df709573 100644 --- a/script/vsts/pull-requests.yml +++ b/script/vsts/pull-requests.yml @@ -2,6 +2,8 @@ trigger: none # No CI builds, only PR builds jobs: - job: GetReleaseVersion + pool: + vmImage: 'windows-latest' steps: # This has to be done separately because VSTS inexplicably # exits the script block after `npm install` completes. diff --git a/script/vsts/release-branch-build.yml b/script/vsts/release-branch-build.yml index 58c132f7d9e..10d76ca20b2 100644 --- a/script/vsts/release-branch-build.yml +++ b/script/vsts/release-branch-build.yml @@ -5,6 +5,8 @@ trigger: jobs: - job: GetReleaseVersion + pool: + vmImage: 'windows-latest' steps: # This has to be done separately because VSTS inexplicably # exits the script block after `npm install` completes. From 65a9fd3db596858b0a6b1b5fa0743daf07119520 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Sat, 4 Jul 2020 01:36:39 -0500 Subject: [PATCH 2/8] add pull bot configuration --- .github/pull.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 00000000000..1d7cb91cd01 --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,7 @@ +version: "1" +rules: # Array of rules + - base: master # Required. Target branch + upstream: atom:master # Required. Must be in the same fork network. + mergeMethod: rebase # Optional, one of [none, merge, squash, rebase, hardreset], Default: none. + mergeUnstable: false # Optional, merge pull request even when the mergeable_state is not clean. Default: false +label: ":arrow_heading_down: pull upstream" # Optional \ No newline at end of file From 67d55e45f4b5b89b95bdcc778f6aab65ba51d291 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Sun, 5 Jul 2020 10:19:06 -0500 Subject: [PATCH 3/8] make code-signing conditional --- script/vsts/get-release-version.js | 4 ++++ script/vsts/platforms/macos.yml | 2 +- script/vsts/platforms/windows.yml | 10 +++++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/script/vsts/get-release-version.js b/script/vsts/get-release-version.js index 159128eeddf..4e8999d7265 100644 --- a/script/vsts/get-release-version.js +++ b/script/vsts/get-release-version.js @@ -78,6 +78,7 @@ async function getReleaseVersion() { buildBranch.startsWith('electron-') || (buildBranch === 'master' && !process.env.SYSTEM_PULLREQUEST_PULLREQUESTNUMBER)); + const SHOULD_SIGN = process.env.SHOULD_SIGN; console.log( `##vso[task.setvariable variable=AppName;isOutput=true]${getAppName( @@ -90,6 +91,9 @@ async function getReleaseVersion() { console.log( `##vso[task.setvariable variable=IsSignedZipBranch;isOutput=true]${isSignedZipBranch}` ); + console.log( + `##vso[task.setvariable variable=SHOULD_SIGN;isOutput=true]${SHOULD_SIGN}` + ); } getReleaseVersion(); diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index a63faa77029..fe03dce7d2a 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -47,7 +47,7 @@ jobs: displayName: Run linter - script: | - if [ $IS_RELEASE_BRANCH == "true" ] || [ $IS_SIGNED_ZIP_BRANCH == "true" ]; then + if [ $SHOULD_SIGN == "true" ] && ([ $IS_RELEASE_BRANCH == "true" ] || [ $IS_SIGNED_ZIP_BRANCH == "true" ]); then script/build --no-bootstrap --code-sign --compress-artifacts else script/build --no-bootstrap --compress-artifacts diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index 23782335a34..99075180afd 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -101,11 +101,19 @@ jobs: SET SQUIRREL_TEMP=C:\tmp IF [%IS_RELEASE_BRANCH%]==[true] ( ECHO Creating production artifacts for release branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts --create-windows-installer + IF [%SHOULD_SIGN%]==[true] ( + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts --create-windows-installer + ) ELSE ( + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts --create-windows-installer + ) ) ELSE ( IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( ECHO Creating signed CI artifacts for branch %BUILD_SOURCEBRANCHNAME% + IF [%SHOULD_SIGN%]==[true] ( node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts + ) ELSE ( + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts + ) ) ELSE ( ECHO Pull request build, no code signing will be performed node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts From 0dd3fc5697463832c219d25146fcea8f9d4098a1 Mon Sep 17 00:00:00 2001 From: darangi Date: Mon, 29 Jun 2020 13:12:17 +0100 Subject: [PATCH 4/8] 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 00000000000..7678784f712 --- /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 00000000000..a9f8843fea5 --- /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 00000000000..9cfeb099e7c --- /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 00000000000..2660d4e70a5 --- /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 00000000000..526c5083615 --- /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 00000000000..dc291966fc4 --- /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 00000000000..fca2ca76508 --- /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 00000000000..09affa105f8 --- /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 00000000000..d4b8742e859 --- /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 00000000000..8031e0e981f --- /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 0acd9403e6740348a272e852840cab0e97a644d0 Mon Sep 17 00:00:00 2001 From: darangi Date: Mon, 29 Jun 2020 13:42:52 +0100 Subject: [PATCH 5/8] 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 00000000000..3348f0c4186 --- /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 00000000000..f10a3540d4c --- /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 b389ddaa0856408ea4cbf1469f2fba874b462ecb Mon Sep 17 00:00:00 2001 From: darangi Date: Wed, 1 Jul 2020 07:49:30 +0100 Subject: [PATCH 6/8] 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 2d9822dd947..632238e9e0b 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -60,3 +60,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 314b6a309a4bd8662339fcd823f445e5c1af4c08 Mon Sep 17 00:00:00 2001 From: darangi Date: Fri, 3 Jul 2020 14:40:40 +0100 Subject: [PATCH 7/8] tests --- .../spec/fixtures/create-pr-response.json | 524 ++++++ .../spec/fixtures/search-response.json | 41 + .../spec/pull-request-spec.js | 53 + script/package-lock.json | 1446 ++++++++++++++++- script/package.json | 7 +- 5 files changed, 2058 insertions(+), 13 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 00000000000..351e4899850 --- /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 00000000000..a3810811681 --- /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 00000000000..0d3cd38be2e --- /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 77bfc024887..bbe79c76078 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", @@ -4280,12 +4857,65 @@ } } }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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": { - "is-buffer": "^1.1.5" + "has-flag": "^3.0.0" } } } @@ -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", @@ -9060,11 +10057,60 @@ "p-limit": "^1.1.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, + "p-try": { + "version": "1.0.0", + "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 9c0b36bca61..337007f2766 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 6f64df61c958f25998f6ac0d1503b2e6ec043d9a Mon Sep 17 00:00:00 2001 From: DeeDeeG Date: Sun, 5 Jul 2020 10:58:26 -0400 Subject: [PATCH 8/8] CI: Set vstsFeed with an environment variable Visit "https://feeds.dev.azure.com/${YOUR_ORGANIZATION_HERE}/_apis/packaging/feeds" to find the "fullyQualifiedId" of your organization's default artifact feed. That value is what you should set the "ARTIFACT_FEED" environment variable to in Azure DevOps UI. (IDs are formatted like this: "af6c77da-ef34-bcde-daaf-e2b489a23b2c") The "description" for the feed should say "Default feed for ${organization}", e.g. "Default feed for atomcommunity". If the description says something else, or "null", then it's the wrong feed. --- script/vsts/platforms/linux.yml | 4 ++-- script/vsts/platforms/macos.yml | 6 +++--- script/vsts/platforms/windows.yml | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index 7342e3eee97..74c0687fe1b 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -35,7 +35,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) - script: script/bootstrap displayName: Bootstrap build environment @@ -52,7 +52,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) - script: script/lint displayName: Run linter diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index fe03dce7d2a..e3ace46834e 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -25,7 +25,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) - script: script/bootstrap displayName: Bootstrap build environment @@ -41,7 +41,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) - script: script/lint displayName: Run linter @@ -126,7 +126,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) # The artifact caching task does not work on forks, so we need to # bootstrap again for pull requests coming from forked repositories. diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index 99075180afd..8d066eee34e 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -53,7 +53,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) condition: eq(variables['buildArch'], 'x64') - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 @@ -61,7 +61,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) condition: eq(variables['buildArch'], 'x86') - script: | @@ -80,7 +80,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) condition: eq(variables['buildArch'], 'x64') - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 @@ -88,7 +88,7 @@ jobs: inputs: keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + vstsFeed: $(ARTIFACT_FEED) condition: eq(variables['buildArch'], 'x86') - script: node script\vsts\windows-run.js script\lint.cmd