From 0fb9e84990f4c63a7271204fb715321a2aee8c3f Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 19:20:03 -0500 Subject: [PATCH 01/39] adding license file and removing image from published --- .npmignore | 1 + LICENSE | 8 ++++++++ README.md | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 LICENSE diff --git a/.npmignore b/.npmignore index 3874581..a7c754d 100644 --- a/.npmignore +++ b/.npmignore @@ -7,6 +7,7 @@ testables/ .npmignore .travis.yml +chest-temp.png mocha.opts tsconfig.json tslint.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9fc972a --- /dev/null +++ b/LICENSE @@ -0,0 +1,8 @@ +# License +© 2017 NativeCode Development + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index afd9d74..78b31e9 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ # @beard/chest

- +

# WTF From 065a4237d2b58859483cf793f61765ed496fbb0c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 19:27:38 -0500 Subject: [PATCH 02/39] fixing test --- package.json | 2 +- src/Chest.spec.ts | 8 ++++---- src/Core/Actions/Packages.ts | 6 +++--- src/Core/Actions/Typings.ts | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 019af49..63a868a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-3", + "version": "2.0.0-alpha-4", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index 150ad6f..d9545c8 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -45,14 +45,14 @@ describe('when using RootProject to load a project', () => { Chest.project(directory).then(project => Chest.projects(project).should.eventually.throw()) }) - it('should run scripts for single project', () => { + it('should run scripts for single project', (done) => { const directory = Files.join(process.cwd(), 'testables', 'single') - Chest.run(directory, ...Object.keys(Registry.all())) + Chest.run(directory, ...Object.keys(Registry.all())).then(() => done()) }) - it('should run scripts for workspace project', () => { + it('should run scripts for workspace project', (done) => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') - Chest.run(directory, ...Object.keys(Registry.all())) + Chest.run(directory, ...Object.keys(Registry.all())).then(() => done()) }) }) diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index 3e47a53..84173ce 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -24,8 +24,8 @@ class Script extends UpdateScript { } public async workspace(project: Project): Promise { - const source = await project.package - const target = await project.owner.package + const source = await project.owner.package + const target = await project.package target.author = source.author target.bugs = source.bugs @@ -37,7 +37,7 @@ class Script extends UpdateScript { const filename = path.join(project.path, 'package.json') if (this.testing) { - this.log.task('updated package info', filename, target) + this.log.task('updated package info', filename, JSON.stringify(target, null, 2)) } else { await Files.save(filename, target) this.log.task('updated package info', filename) diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 0b566fb..ddaeb8d 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -36,7 +36,7 @@ class Script extends UpdateScript { tsconfig.compilerOptions.types = typings.map(typing => typing.npmname).sort() if (this.testing) { - this.log.task('updated types', tsconfigfile, tsconfig) + this.log.task('updated types', tsconfigfile, JSON.stringify(tsconfig, null, 2)) } else { await Files.save(tsconfigfile, tsconfig) this.log.task('updated types', tsconfigfile) From 28ab1f92a2d4a45aeafe906f2e0acb292fa32db8 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 21:06:13 -0500 Subject: [PATCH 03/39] adding tests --- .gitignore | 1 + .npmignore | 1 + package.json | 2 +- src/Chest.spec.ts | 12 ++++++---- src/Chest.ts | 7 ++++-- src/Core/Files.spec.ts | 27 +++++++++++++++++++++ src/Core/Files.ts | 13 ++++++++++ src/Core/Project.ts | 2 ++ src/Core/Registry.spec.ts | 50 +++++++++++++++++++++++++++++++++++++++ src/Core/Registry.ts | 9 +++++++ 10 files changed, 116 insertions(+), 8 deletions(-) create mode 100644 src/Core/Files.spec.ts create mode 100644 src/Core/Registry.spec.ts diff --git a/.gitignore b/.gitignore index 7ff4843..5631318 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .nyc_output/ +artifacts/ lib/ node_modules/ diff --git a/.npmignore b/.npmignore index a7c754d..1335f3d 100644 --- a/.npmignore +++ b/.npmignore @@ -1,4 +1,5 @@ .nyc_output/ +artifacts/ node_modules/ src/ testables/ diff --git a/package.json b/package.json index 63a868a..caf6ac5 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "scripts": { "build": "tsc --project tsconfig.json", "lint": "tslint src/**/*.ts", - "prebuild": "rimraf lib", + "prebuild": "rimraf lib && rimraf artifacts", "postbuild": "bin-shebang && yarn run lint", "test": "cross-env NODE_ENV=test nyc mocha --opts mocha.opts", "pretest": "yarn run build", diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index d9545c8..0583953 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -4,7 +4,7 @@ import * as chai from 'chai' import * as chaiAsPromised from 'chai-as-promised' import { Chest } from './Chest' -import { Files, Registry } from './Core' +import { Files, Project, Registry } from './Core' const expect = chai.expect @@ -35,9 +35,9 @@ describe('when using RootProject to load a project', () => { expect(projects[0].owner).to.not.equal(undefined) }) - it('should throw error when single project does not exist', async () => { + it('should return static InvalidProject when single project does not exist', async () => { const directory = Files.join(process.cwd(), 'testables', 'nonexistant') - Chest.project(directory).then(project => Chest.projects(project).should.eventually.throw()) + Chest.project(directory).then(project => Chest.projects(project).should.eventually.equal(Project.InvalidProject)) }) it('should throw error when workspace project has no child projects', async () => { @@ -47,12 +47,14 @@ describe('when using RootProject to load a project', () => { it('should run scripts for single project', (done) => { const directory = Files.join(process.cwd(), 'testables', 'single') - Chest.run(directory, ...Object.keys(Registry.all())).then(() => done()) + const args = Object.keys(Registry.all()) + Chest.run(directory, ...args).then(() => done()) }) it('should run scripts for workspace project', (done) => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') - Chest.run(directory, ...Object.keys(Registry.all())).then(() => done()) + const args = Object.keys(Registry.all()) + Chest.run(directory, ...args).then(() => done()) }) }) diff --git a/src/Chest.ts b/src/Chest.ts index cece83b..bb8de3d 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -1,8 +1,10 @@ import * as path from 'path' -import { Files, NPM, Project, Registry, UpdaterType } from './Core' +import { Files, Log, Logger, NPM, Project, Registry, UpdaterType } from './Core' export class Chest { + private static readonly Log: Log = Logger('chest') + public static async run(root: string, ...args: string[]): Promise { const project = await Chest.project(root) const projects = await Chest.projects(project) @@ -23,7 +25,8 @@ export class Chest { const npmfile = path.join(root, 'package.json') if (await Files.exists(npmfile) === false) { - throw new Error(`failed to find ${npmfile} in ${root}`) + Chest.Log.error(new Error(`failed to find ${npmfile} in ${root}`)) + return Project.InvalidProject } const npm = await Files.json(npmfile) diff --git a/src/Core/Files.spec.ts b/src/Core/Files.spec.ts new file mode 100644 index 0000000..e652c53 --- /dev/null +++ b/src/Core/Files.spec.ts @@ -0,0 +1,27 @@ +import 'mocha' + +import * as chai from 'chai' +import * as chaiAsPromise from 'chai-as-promised' + +import { Files } from './Files' + +const expect = chai.expect + +describe('', () => { + + before(async () => { + const artifacts = Files.join(process.cwd(), 'artifacts') + await Files.mkdir(artifacts) + }) + + beforeEach(() => { + chai.should() + chai.use(chaiAsPromise) + }) + + it('should write file', () => { + const filename = Files.join(process.cwd(), 'artifacts', 'test.json') + Files.writefile(filename, {}).should.eventually.not.throw() + }) + +}) diff --git a/src/Core/Files.ts b/src/Core/Files.ts index cce268c..dcc43d3 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -55,6 +55,18 @@ class InternalFiles { return stats.filter(stat => stat.file).map(stat => stat.filename) } + public mkdir(filepath: string): Promise { + return new Promise(async (resolve, reject) => { + fs.mkdir(filepath, (error: NodeJS.ErrnoException) => { + if (error) { + reject(error) + } else { + resolve() + } + }) + }) + } + public async save(filepath: string, data: T): Promise { await this.writefile(filepath, JSON.stringify(data, null, 2)) } @@ -116,6 +128,7 @@ export interface Files { readfile(filepath: string): Promise listdirs(filepath: string): Promise listfiles(filepath: string): Promise + mkdir(filepath: string): Promise save(filepath: string, data: T): Promise statfile(filepath: string): Promise statfiles(filepath: string): Promise diff --git a/src/Core/Project.ts b/src/Core/Project.ts index 32b0137..5d0a521 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -2,6 +2,8 @@ import { Files } from './Files' import { NPM } from './Interfaces' export class Project { + public static InvalidProject: Project = new Project('invalid', 'invalid') + private readonly _name: string private readonly _owner: Project private readonly _path: string diff --git a/src/Core/Registry.spec.ts b/src/Core/Registry.spec.ts new file mode 100644 index 0000000..b6bd4ad --- /dev/null +++ b/src/Core/Registry.spec.ts @@ -0,0 +1,50 @@ +import 'mocha' + +import * as chai from 'chai' +import * as chaiAsPromised from 'chai-as-promised' + +import { Files } from './Files' +import { UpdaterType } from './Interfaces' +import { Registry } from './Registry' +import { UpdateScript } from './UpdateScript' + +const expect = chai.expect +const ScriptName = Files.extensionless(__filename) +const RootScriptName = `${ScriptName}-root` +const ProjectsScriptName = `${ScriptName}-projects` + +class DoesNothingGoesNowhereRoot extends UpdateScript { + constructor() { + super(RootScriptName, UpdaterType.Root) + } +} + +class DoesNothingGoesNowhereProjects extends UpdateScript { + constructor() { + super(ProjectsScriptName, UpdaterType.Projects) + } +} + +describe('', () => { + + beforeEach(() => { + chai.should() + chai.use(chaiAsPromised) + }) + + it('should return registered script names', () => { + expect(Registry.names().length).to.be.gt(0) + }) + + it('should register new script object', () => { + expect(Registry.contains(RootScriptName)).to.equal(false) + Registry.add(RootScriptName, new DoesNothingGoesNowhereRoot()) + expect(Registry.contains(RootScriptName)).to.equal(true) + expect(Registry.get(RootScriptName).name).to.equal(RootScriptName) + }) + + it('should throw error when calling "get" and script does not exist', () => { + expect(() => Registry.get('invalid')).to.throw(Error) + }) + +}) diff --git a/src/Core/Registry.ts b/src/Core/Registry.ts index a4606c6..cf4fcf3 100644 --- a/src/Core/Registry.ts +++ b/src/Core/Registry.ts @@ -11,6 +11,10 @@ export class Registry { return Object.assign({}, this.registrations) } + public static contains(name: string): boolean { + return this.registrations[name.toLowerCase()] !== undefined + } + public static execute(root: string, ...args: string[]): Promise { return Promise.all( args.map(arg => arg.toLowerCase()) @@ -20,10 +24,15 @@ export class Registry { public static get(name: string): Updater { const key = name.toLowerCase() + if (this.registrations[key]) { return this.registrations[key] } throw new Error(`no registered updaters named ${name}`) } + + public static names(): string[] { + return Object.keys(this.registrations) + } } From 51b1f6ace44cee5e9999dacc31a6c85fb48f7816 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 22:37:16 -0500 Subject: [PATCH 04/39] fixing async tests --- src/Chest.spec.ts | 21 ++++++++++++--------- src/Chest.ts | 14 +++++++++----- src/Core/Actions/Typings.ts | 6 +++++- src/Core/Files.spec.ts | 4 ++-- src/Core/Registry.spec.ts | 14 +++----------- src/Core/UpdateScript.ts | 3 +++ testables/workspaces-invalid/package.json | 1 + 7 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index 0583953..9444af7 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -35,26 +35,29 @@ describe('when using RootProject to load a project', () => { expect(projects[0].owner).to.not.equal(undefined) }) - it('should return static InvalidProject when single project does not exist', async () => { + it('should return static InvalidProject when single project does not exist', () => { const directory = Files.join(process.cwd(), 'testables', 'nonexistant') - Chest.project(directory).then(project => Chest.projects(project).should.eventually.equal(Project.InvalidProject)) + + return Chest.project(directory).then(project => expect(project).to.equal(Project.InvalidProject)) }) - it('should throw error when workspace project has no child projects', async () => { + it('should throw error when workspace project has no child projects', () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces-invalid') - Chest.project(directory).then(project => Chest.projects(project).should.eventually.throw()) + return Chest.project(directory).then(async project => { + const projects = await Chest.projects(project) + expect(projects).to.deep.equal([Project.InvalidProject]) + }) }) - it('should run scripts for single project', (done) => { + it('should run scripts for single project', () => { const directory = Files.join(process.cwd(), 'testables', 'single') const args = Object.keys(Registry.all()) - Chest.run(directory, ...args).then(() => done()) + return Chest.run(directory, ...args) }) - it('should run scripts for workspace project', (done) => { + it('should run scripts for workspace project', () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') const args = Object.keys(Registry.all()) - Chest.run(directory, ...args).then(() => done()) + return Chest.run(directory, ...args) }) - }) diff --git a/src/Chest.ts b/src/Chest.ts index bb8de3d..9ab572e 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -25,7 +25,7 @@ export class Chest { const npmfile = path.join(root, 'package.json') if (await Files.exists(npmfile) === false) { - Chest.Log.error(new Error(`failed to find ${npmfile} in ${root}`)) + Chest.Log.error(new Error(`failed to find ${npmfile} in [${root}]`)) return Project.InvalidProject } @@ -36,6 +36,7 @@ export class Chest { public static async projects(owner: Project): Promise { const project = await Chest.project(owner.path) const npm = await project.package + this.Log.debug('project', project.name) if (npm.private && npm.workspace) { return npm.workspace.map(workspaceRoot => Chest.workspaces(project, workspaceRoot)) @@ -49,15 +50,18 @@ export class Chest { workspaceRoot = Files.join(owner.path, workspaceRoot.substring(0, workspaceRoot.indexOf('/*'))) if (await Files.exists(workspaceRoot) === false) { - throw new Error(`failed to find workspace ${workspaceRoot} in ${owner.name}`) + Chest.Log.error(new Error(`[workspace] failed to find ${workspaceRoot} in [${owner.name}]`)) + return [Project.InvalidProject] } const projects = await Files.listdirs(workspaceRoot) - return Promise.all(projects.map(async project => { - const npmfile = path.join(project, 'package.json') + return Promise.all(projects.map(async projectPath => { + const npmfile = path.join(projectPath, 'package.json') const npm = await Files.json(npmfile) - return new Project(npm.name, project, owner) + const project = new Project(npm.name, projectPath, owner) + this.Log.debug('project.workspace', owner.name, '->', project.name) + return project })) } } diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index ddaeb8d..cd29ea3 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -30,7 +30,11 @@ class Script extends UpdateScript { const packagedirs = await Files.listdirs(packagedir) const tsconfig = await Files.json(tsconfigfile) - const dependencies = await Promise.all(packagedirs.map(async packagedir => await this.map(packagedir))) + const dependencies = await Promise.all(packagedirs.map(packagedir => { + this.log.debug('dependency', packagedir) + return this.map(packagedir) + })) + const typings = dependencies.reduce((previous, current) => previous.concat(current.filter(c => !!c.typings)), []) tsconfig.compilerOptions.types = typings.map(typing => typing.npmname).sort() diff --git a/src/Core/Files.spec.ts b/src/Core/Files.spec.ts index e652c53..259227c 100644 --- a/src/Core/Files.spec.ts +++ b/src/Core/Files.spec.ts @@ -7,7 +7,7 @@ import { Files } from './Files' const expect = chai.expect -describe('', () => { +describe('when working with files', () => { before(async () => { const artifacts = Files.join(process.cwd(), 'artifacts') @@ -21,7 +21,7 @@ describe('', () => { it('should write file', () => { const filename = Files.join(process.cwd(), 'artifacts', 'test.json') - Files.writefile(filename, {}).should.eventually.not.throw() + return Files.writefile(filename, {}) }) }) diff --git a/src/Core/Registry.spec.ts b/src/Core/Registry.spec.ts index b6bd4ad..ff4cc79 100644 --- a/src/Core/Registry.spec.ts +++ b/src/Core/Registry.spec.ts @@ -1,14 +1,12 @@ import 'mocha' -import * as chai from 'chai' -import * as chaiAsPromised from 'chai-as-promised' +import { expect } from 'chai' import { Files } from './Files' import { UpdaterType } from './Interfaces' import { Registry } from './Registry' import { UpdateScript } from './UpdateScript' -const expect = chai.expect const ScriptName = Files.extensionless(__filename) const RootScriptName = `${ScriptName}-root` const ProjectsScriptName = `${ScriptName}-projects` @@ -25,12 +23,7 @@ class DoesNothingGoesNowhereProjects extends UpdateScript { } } -describe('', () => { - - beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) - }) +describe('when using the script registry', () => { it('should return registered script names', () => { expect(Registry.names().length).to.be.gt(0) @@ -44,7 +37,6 @@ describe('', () => { }) it('should throw error when calling "get" and script does not exist', () => { - expect(() => Registry.get('invalid')).to.throw(Error) + expect(() => Registry.get('invalid')).to.throw() }) - }) diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index 46d8150..d5b53cf 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -48,11 +48,14 @@ export abstract class UpdateScript implements Updater { protected run(project: Project, command: string, ...args: string[]): Promise { return new Promise((resolve, reject) => { this.log.debug('run', project.name, command, ...args) + const child = cp.exec(`${command} ${args.join(' ')}`, { cwd: project.path }, error => { if (error) this.log.error(error) }) + child.stderr.on('data', data => this.args(project, process.stderr, data).map(lines => lines).forEach(args => this.log.error(...args))) child.stdout.on('data', data => this.args(project, process.stdout, data).map(lines => lines).forEach(args => this.log.task(...args))) + child.addListener('exit', (code: number, signal: string) => { if (code === 0) { resolve() diff --git a/testables/workspaces-invalid/package.json b/testables/workspaces-invalid/package.json index 9d1a800..097624d 100644 --- a/testables/workspaces-invalid/package.json +++ b/testables/workspaces-invalid/package.json @@ -7,6 +7,7 @@ "@types/chalk": "*" }, "name": "project-single", + "private": true, "version": "1.0.0", "workspace": [ "packages/*" From 6fb1e3ce07ea0683e5924c61956ae3329fdab774 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 22:47:52 -0500 Subject: [PATCH 05/39] fixing output and adding tsconfig --- src/Core/Actions/Typings.ts | 9 +++++---- testables/single/tsconfig.json | 3 +++ testables/workspaces-invalid/tsconfig.json | 3 +++ .../workspaces/packages/simple-package/tsconfig.json | 3 +++ .../workspaces/projects/simple-project/tsconfig.json | 3 +++ testables/workspaces/tsconfig.json | 3 +++ 6 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 testables/single/tsconfig.json create mode 100644 testables/workspaces-invalid/tsconfig.json create mode 100644 testables/workspaces/packages/simple-package/tsconfig.json create mode 100644 testables/workspaces/projects/simple-project/tsconfig.json create mode 100644 testables/workspaces/tsconfig.json diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index cd29ea3..f9cb509 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -25,14 +25,15 @@ class Script extends UpdateScript { public async exec(rootpath: string): Promise { const tsconfigfile = path.join(rootpath, 'tsconfig.json') const packagedir = path.join(rootpath, 'node_modules') + this.log.debug('exec', this.name, rootpath, packagedir) if (await Files.exists(tsconfigfile) && await Files.exists(packagedir)) { const packagedirs = await Files.listdirs(packagedir) const tsconfig = await Files.json(tsconfigfile) const dependencies = await Promise.all(packagedirs.map(packagedir => { - this.log.debug('dependency', packagedir) - return this.map(packagedir) + this.log.debug('dependencies', packagedir) + return this.dependencies(packagedir) })) const typings = dependencies.reduce((previous, current) => previous.concat(current.filter(c => !!c.typings)), []) @@ -48,13 +49,13 @@ class Script extends UpdateScript { } } - private async map(packagedir: string): Promise { + private async dependencies(packagedir: string): Promise { const dirname = path.basename(packagedir) if (dirname[0] === '@') { const scopedirs = await Files.listdirs(packagedir) - return await Promise.all(scopedirs + return Promise.all(scopedirs .map(scope => [scope, path.join(scope, 'package.json')]) .map(async ([scope, scopepath]): Promise => { const npm = await Files.json(path.join(scope, 'package.json')) diff --git a/testables/single/tsconfig.json b/testables/single/tsconfig.json new file mode 100644 index 0000000..875cb60 --- /dev/null +++ b/testables/single/tsconfig.json @@ -0,0 +1,3 @@ +{ + "compilerOptions": {} +} diff --git a/testables/workspaces-invalid/tsconfig.json b/testables/workspaces-invalid/tsconfig.json new file mode 100644 index 0000000..875cb60 --- /dev/null +++ b/testables/workspaces-invalid/tsconfig.json @@ -0,0 +1,3 @@ +{ + "compilerOptions": {} +} diff --git a/testables/workspaces/packages/simple-package/tsconfig.json b/testables/workspaces/packages/simple-package/tsconfig.json new file mode 100644 index 0000000..875cb60 --- /dev/null +++ b/testables/workspaces/packages/simple-package/tsconfig.json @@ -0,0 +1,3 @@ +{ + "compilerOptions": {} +} diff --git a/testables/workspaces/projects/simple-project/tsconfig.json b/testables/workspaces/projects/simple-project/tsconfig.json new file mode 100644 index 0000000..875cb60 --- /dev/null +++ b/testables/workspaces/projects/simple-project/tsconfig.json @@ -0,0 +1,3 @@ +{ + "compilerOptions": {} +} diff --git a/testables/workspaces/tsconfig.json b/testables/workspaces/tsconfig.json new file mode 100644 index 0000000..875cb60 --- /dev/null +++ b/testables/workspaces/tsconfig.json @@ -0,0 +1,3 @@ +{ + "compilerOptions": {} +} From b0df3f508d6dbd96bae88acf588de028a24cb168 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 22:52:17 -0500 Subject: [PATCH 06/39] 2.0.0-alpha-5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index caf6ac5..2c70cc1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-4", + "version": "2.0.0-alpha-5", "dependencies": { "chalk": "^2.3.0" }, From 47b9e81ca91db14fd960564a2a4cb068c4428438 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 22:59:27 -0500 Subject: [PATCH 07/39] fixing test --- src/Chest.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index d9381da..9444af7 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -49,13 +49,13 @@ describe('when using RootProject to load a project', () => { }) }) - it('should run scripts for single project', (done) => { + it('should run scripts for single project', () => { const directory = Files.join(process.cwd(), 'testables', 'single') const args = Object.keys(Registry.all()) return Chest.run(directory, ...args) }) - it('should run scripts for workspace project', (done) => { + it('should run scripts for workspace project', () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') const args = Object.keys(Registry.all()) return Chest.run(directory, ...args) From 9b4907b646486cf0a4742a476f4fdde570189dd7 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 23:16:44 -0500 Subject: [PATCH 08/39] adding templates --- .npmignore | 1 + docs/contributing.md | 1 + docs/issue_template.md | 3 +++ docs/pull_request_template.md | 3 +++ 4 files changed, 8 insertions(+) create mode 100644 docs/contributing.md create mode 100644 docs/issue_template.md create mode 100644 docs/pull_request_template.md diff --git a/.npmignore b/.npmignore index 1335f3d..2e7c7c0 100644 --- a/.npmignore +++ b/.npmignore @@ -1,5 +1,6 @@ .nyc_output/ artifacts/ +docs/ node_modules/ src/ testables/ diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 0000000..49f69dc --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1 @@ +# How to contribute diff --git a/docs/issue_template.md b/docs/issue_template.md new file mode 100644 index 0000000..f4e0438 --- /dev/null +++ b/docs/issue_template.md @@ -0,0 +1,3 @@ +# ISSUE + +# FIX SUGGESTION diff --git a/docs/pull_request_template.md b/docs/pull_request_template.md new file mode 100644 index 0000000..08481ab --- /dev/null +++ b/docs/pull_request_template.md @@ -0,0 +1,3 @@ +# What issue does this fix/feature? + +# What tests cover the fix/feature? From b7317ed5e0d38cfa9b826f15e0a8984fe51e561b Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 00:22:48 -0500 Subject: [PATCH 09/39] closed #1 refactored Project class to do most of the heavy lifting --- src/Chest.spec.ts | 36 +------------- src/Chest.ts | 49 +----------------- src/Core/Actions/Packages.ts | 36 +++++++------- src/Core/Actions/Typings.ts | 72 ++++++--------------------- src/Core/Files.ts | 5 ++ src/Core/Logger.ts | 20 +++++--- src/Core/Project.spec.ts | 38 ++++++++++++++ src/Core/Project.ts | 96 ++++++++++++++++++++++++++++++++++-- 8 files changed, 184 insertions(+), 168 deletions(-) create mode 100644 src/Core/Project.spec.ts diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index 9444af7..d3835d7 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -8,47 +8,13 @@ import { Files, Project, Registry } from './Core' const expect = chai.expect -describe('when using RootProject to load a project', () => { +describe('when loading projects', () => { beforeEach(() => { chai.should() chai.use(chaiAsPromised) }) - it('should load single npm project', async () => { - const directory = Files.join(process.cwd(), 'testables', 'single') - const project = await Chest.project(directory) - const projects = await Chest.projects(project) - expect(projects.length).to.equal(1) - expect(projects[0].name).to.equal('project-single') - expect(projects[0].path).to.equal(directory) - }) - - it('should load yarn workspace project', async () => { - const directory = Files.join(process.cwd(), 'testables', 'workspaces') - const project = await Chest.project(directory) - const projects = await Chest.projects(project) - expect(projects.length).to.equal(2) - expect(projects[0].name).to.equal('simple-package') - expect(projects[1].name).to.equal('simple-project') - expect(projects[0].owner).to.not.equal(undefined) - expect(projects[0].owner).to.not.equal(undefined) - }) - - it('should return static InvalidProject when single project does not exist', () => { - const directory = Files.join(process.cwd(), 'testables', 'nonexistant') - - return Chest.project(directory).then(project => expect(project).to.equal(Project.InvalidProject)) - }) - - it('should throw error when workspace project has no child projects', () => { - const directory = Files.join(process.cwd(), 'testables', 'workspaces-invalid') - return Chest.project(directory).then(async project => { - const projects = await Chest.projects(project) - expect(projects).to.deep.equal([Project.InvalidProject]) - }) - }) - it('should run scripts for single project', () => { const directory = Files.join(process.cwd(), 'testables', 'single') const args = Object.keys(Registry.all()) diff --git a/src/Chest.ts b/src/Chest.ts index 9ab572e..4ee432a 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -6,8 +6,7 @@ export class Chest { private static readonly Log: Log = Logger('chest') public static async run(root: string, ...args: string[]): Promise { - const project = await Chest.project(root) - const projects = await Chest.projects(project) + const project = await Project.load(root) const updaters = Registry.all() Object.keys(updaters).forEach(async name => { @@ -16,52 +15,8 @@ export class Chest { if (updater.type === UpdaterType.Root) { await updater.exec(root) } else { - await Promise.all(projects.map(child => updater.workspace(child))) + await Promise.all(project.children.map(child => updater.workspace(child))) } }) } - - public static async project(root: string): Promise { - const npmfile = path.join(root, 'package.json') - - if (await Files.exists(npmfile) === false) { - Chest.Log.error(new Error(`failed to find ${npmfile} in [${root}]`)) - return Project.InvalidProject - } - - const npm = await Files.json(npmfile) - return new Project(npm.name, root) - } - - public static async projects(owner: Project): Promise { - const project = await Chest.project(owner.path) - const npm = await project.package - this.Log.debug('project', project.name) - - if (npm.private && npm.workspace) { - return npm.workspace.map(workspaceRoot => Chest.workspaces(project, workspaceRoot)) - .reduce(async (previous, current) => (await previous).concat(await current), Promise.resolve([])) - } - - return [project] - } - - private static async workspaces(owner: Project, workspaceRoot: string): Promise { - workspaceRoot = Files.join(owner.path, workspaceRoot.substring(0, workspaceRoot.indexOf('/*'))) - - if (await Files.exists(workspaceRoot) === false) { - Chest.Log.error(new Error(`[workspace] failed to find ${workspaceRoot} in [${owner.name}]`)) - return [Project.InvalidProject] - } - - const projects = await Files.listdirs(workspaceRoot) - - return Promise.all(projects.map(async projectPath => { - const npmfile = path.join(projectPath, 'package.json') - const npm = await Files.json(npmfile) - const project = new Project(npm.name, projectPath, owner) - this.Log.debug('project.workspace', owner.name, '->', project.name) - return project - })) - } } diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index 84173ce..eb997f7 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -24,23 +24,25 @@ class Script extends UpdateScript { } public async workspace(project: Project): Promise { - const source = await project.owner.package - const target = await project.package - - target.author = source.author - target.bugs = source.bugs - target.description = source.description - target.homepage = source.homepage - target.license = source.license - target.repository = source.repository - - const filename = path.join(project.path, 'package.json') - - if (this.testing) { - this.log.task('updated package info', filename, JSON.stringify(target, null, 2)) - } else { - await Files.save(filename, target) - this.log.task('updated package info', filename) + if (project.owner) { + const source = await project.owner.package + const target = await project.package + + target.author = source.author + target.bugs = source.bugs + target.description = source.description + target.homepage = source.homepage + target.license = source.license + target.repository = source.repository + + const filename = path.join(project.path, 'package.json') + + if (this.testing) { + this.log.task('workspace', filename, JSON.stringify(target, null, 2)) + } else { + await Files.save(filename, target) + this.log.task('workspace', filename) + } } } } diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index f9cb509..94a43b5 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -1,4 +1,5 @@ import * as path from 'path' +import { CompilerOptions } from 'typescript' import { Files, Logger, NPM, Project, Registry, Updater, UpdateScript, UpdaterType } from '../index' const ScriptName = Files.extensionless(__filename) @@ -13,6 +14,10 @@ interface Dependency { typings?: string } +interface TsConfig { + compilerOptions: CompilerOptions +} + /* * Updates the "types" property of "tsconfig.json" files by * looking for types from @types. @@ -23,67 +28,20 @@ class Script extends UpdateScript { } public async exec(rootpath: string): Promise { - const tsconfigfile = path.join(rootpath, 'tsconfig.json') - const packagedir = path.join(rootpath, 'node_modules') - this.log.debug('exec', this.name, rootpath, packagedir) - - if (await Files.exists(tsconfigfile) && await Files.exists(packagedir)) { - const packagedirs = await Files.listdirs(packagedir) - const tsconfig = await Files.json(tsconfigfile) - - const dependencies = await Promise.all(packagedirs.map(packagedir => { - this.log.debug('dependencies', packagedir) - return this.dependencies(packagedir) - })) - - const typings = dependencies.reduce((previous, current) => previous.concat(current.filter(c => !!c.typings)), []) - - tsconfig.compilerOptions.types = typings.map(typing => typing.npmname).sort() - - if (this.testing) { - this.log.task('updated types', tsconfigfile, JSON.stringify(tsconfig, null, 2)) - } else { - await Files.save(tsconfigfile, tsconfig) - this.log.task('updated types', tsconfigfile) - } - } - } - - private async dependencies(packagedir: string): Promise { - const dirname = path.basename(packagedir) - - if (dirname[0] === '@') { - const scopedirs = await Files.listdirs(packagedir) - - return Promise.all(scopedirs - .map(scope => [scope, path.join(scope, 'package.json')]) - .map(async ([scope, scopepath]): Promise => { - const npm = await Files.json(path.join(scope, 'package.json')) + this.log.task('exec', rootpath) + const project = await Project.load(rootpath) - return { - filename: 'package.json', - filepath: scope, - npmname: npm.name, - scope: dirname, - typings: npm.types || npm.typings || npm.typeScriptVersion ? 'index.d.ts' : undefined, - } - })) + if (project === Project.InvalidProject) { + this.log.error(`failed to load any projects at ${rootpath}`) + return } - const packagefile = path.join(packagedir, 'package.json') - - if (await Files.exists(packagefile)) { - const npm = await Files.json(packagefile) - - return [{ - filename: 'package.json', - filepath: packagedir, - npmname: npm.name, - typings: npm.types || npm.typings || npm.typeScriptVersion ? 'index.d.ts' : undefined, - }] - } + const tsconfig = await project.json('tsconfig.json') + tsconfig.compilerOptions.types = await this.gatherTypeDefinitions(project) + } - return [] + private gatherTypeDefinitions(project: Project): Promise { + return Promise.resolve([]) } } diff --git a/src/Core/Files.ts b/src/Core/Files.ts index dcc43d3..6201dca 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -8,6 +8,10 @@ export interface Stat { } class InternalFiles { + public basename(filepath: string): string { + return path.basename(filepath) + } + public exists(filepath: string): Promise { return new Promise((resolve, reject) => { fs.exists(filepath, (exists: boolean) => resolve(exists)) @@ -121,6 +125,7 @@ class InternalFiles { } export interface Files { + basename(filepath: string): string exists(filepath: string): Promise extensionless(filename: string): string join(...args: string[]): string diff --git a/src/Core/Logger.ts b/src/Core/Logger.ts index 50d9f0f..69e1026 100644 --- a/src/Core/Logger.ts +++ b/src/Core/Logger.ts @@ -13,26 +13,30 @@ export function Logger(name: string, category?: string): Log { const cat = category ? `:${category}` : '' const bold = (name: string) => chalk.default.bold(`[${name}${cat}]`) + const log = (...args: any[]) => { + if (['production', 'test', 'testing'].every(env => env !== process.env.NODE_ENV)) { + console.log(...args) + } + } + return { debug: (...args: any[]): void => { - if (process.env.NODE_ENV !== 'production') { - console.log(chalk.default.yellow.inverse(bold(name), ...args)) - } + log(chalk.default.yellow.inverse(bold(name), ...args)) }, error: (...args: any[]): void => { - console.log(chalk.default.red.inverse(bold(name), ...args)) + log(chalk.default.red.inverse(bold(name), ...args)) }, info: (...args: any[]): void => { - console.log(chalk.default.grey.italic(bold(name), ...args)) + log(chalk.default.grey.italic(bold(name), ...args)) }, start: (...args: any[]): void => { - console.log(chalk.default.grey.dim(bold(name), ...args)) + log(chalk.default.grey.dim(bold(name), ...args)) }, done: (...args: any[]): void => { - console.log(chalk.default.grey.dim(bold(name), ...args)) + log(chalk.default.grey.dim(bold(name), ...args)) }, task: (...args: any[]): void => { - console.log(chalk.default.blue(bold(name), ...args)) + log(chalk.default.blue(bold(name), ...args)) } } } diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts new file mode 100644 index 0000000..4354e93 --- /dev/null +++ b/src/Core/Project.spec.ts @@ -0,0 +1,38 @@ +import 'mocha' + +import * as chai from 'chai' +import * as chaiAsPromised from 'chai-as-promised' + +import { Files } from './Files' +import { Project } from './Project' +import { Registry } from './Registry' + +const expect = chai.expect + +describe('when loading projects', () => { + + beforeEach(() => { + chai.should() + chai.use(chaiAsPromised) + }) + + it('should load single npm project', async () => { + const directory = Files.join(process.cwd(), 'testables', 'single') + const project = await Project.load(directory) + expect(project.children.length).to.equal(0) + expect(project.name).to.equal('project-single') + expect(project.path).to.equal(directory) + }) + + it('should load yarn workspace project', async () => { + const directory = Files.join(process.cwd(), 'testables', 'workspaces') + const project = await Project.load(directory) + expect(project.children.length).to.equal(2) + + expect(project.children[0].name).to.equal('simple-package') + expect(project.children[0].owner).to.not.equal(undefined) + + expect(project.children[1].name).to.equal('simple-project') + expect(project.children[1].owner).to.not.equal(undefined) + }) +}) diff --git a/src/Core/Project.ts b/src/Core/Project.ts index 5d0a521..c4ac6a8 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -1,24 +1,40 @@ import { Files } from './Files' import { NPM } from './Interfaces' +import { Log, Logger } from './Logger' + +interface LernaConfig { + packages?: string[] + useWorkspaces?: boolean + version: string +} export class Project { public static InvalidProject: Project = new Project('invalid', 'invalid') + private readonly _children: Project[] private readonly _name: string - private readonly _owner: Project + private readonly _owner: Project | undefined private readonly _path: string + private readonly log: Log - constructor(name: string, path: string, owner?: Project) { + private constructor(name: string, path: string, owner?: Project) { + this._children = [] this._name = name - this._owner = owner || this + this._owner = owner this._path = path + + this.log = Logger(`project:${this.name}`) + } + + public get children(): Project[] { + return this._children } public get name(): string { return this._name } - public get owner(): Project { + public get owner(): Project | undefined { return this._owner } @@ -29,4 +45,76 @@ export class Project { public get path(): string { return this._path } + + public static async load(rootpath: string): Promise { + const npmfile = Files.join(rootpath, 'package.json') + + if (await Files.exists(npmfile) === false) { + return Project.InvalidProject + } + + const npm = await Files.json(npmfile) + const project = new Project(npm.name, rootpath) + + if (npm.private && npm.workspace) { + const result = await project.loadChildProjects(npm) + return result + } + + return project + } + + public json(filename: string): Promise { + return Files.json(Files.join(this.path, filename)) + } + + private async loadChildProjects(npm: NPM): Promise { + const lernafile = Files.join(this.path, 'lerna.json') + if (await Files.exists(lernafile)) { + this.log.debug('lerna-packages', this.path) + return this.loadLernaPackages(lernafile, this) + } + this.log.debug('yarn-workspaces', this.path) + return this.loadYarnWorkspaces(this) + } + + private async loadLernaPackages(filepath: string, project: Project): Promise { + const lerna = await Files.json(filepath) + if (lerna.packages && lerna.useWorkspaces) { + lerna.packages.forEach(async workspace => { + const workspaceName = workspace.substring(0, workspace.indexOf('/*')) + const workspacePath = Files.join(project.path, workspaceName) + const children = await this.loadProjects(workspacePath) + children.forEach(child => this.children.push(child)) + this.log.debug('lerna-package', workspaceName) + }) + } + return this + } + + private async loadYarnWorkspaces(project: Project): Promise { + const npm = await this.package + if (npm.workspace) { + return Promise.all(npm.workspace.map(async workspace => { + const workspaceName = workspace.substring(0, workspace.indexOf('/*')) + const workspacePath = Files.join(project.path, workspaceName) + const children = await this.loadProjects(workspacePath) + children.forEach(child => this.children.push(child)) + this.log.debug('yarn-workspace', workspaceName) + })).then(() => this) + } + return this + } + + private async loadProjects(workspacePath: string): Promise { + const projects = await Files.listdirs(workspacePath) + return Promise.all(projects.map(async projectPath => { + const projectName = Files.basename(projectPath) + const npmfile = Files.join(projectPath, 'package.json') + const npm = await Files.json(npmfile) + const child = new Project(npm.name, projectPath, this) + this.log.debug('added-project', npm.name) + return child + })) + } } From 01ec10fb19332409a945604b8a793ecd4240f895 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 00:29:51 -0500 Subject: [PATCH 10/39] fixing non-deterministic test --- src/Core/Project.spec.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index 4354e93..33cf2d6 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -28,11 +28,7 @@ describe('when loading projects', () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') const project = await Project.load(directory) expect(project.children.length).to.equal(2) - - expect(project.children[0].name).to.equal('simple-package') expect(project.children[0].owner).to.not.equal(undefined) - - expect(project.children[1].name).to.equal('simple-project') expect(project.children[1].owner).to.not.equal(undefined) }) }) From 20666facf32594bd6320d26093ab40383f14872b Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 01:02:22 -0500 Subject: [PATCH 11/39] adding more tests --- src/Core/Files.spec.ts | 23 +++++++++++++++++++++++ src/Core/Project.spec.ts | 1 + 2 files changed, 24 insertions(+) diff --git a/src/Core/Files.spec.ts b/src/Core/Files.spec.ts index 259227c..9d17dff 100644 --- a/src/Core/Files.spec.ts +++ b/src/Core/Files.spec.ts @@ -19,6 +19,29 @@ describe('when working with files', () => { chai.use(chaiAsPromise) }) + it('should list directories', async () => { + const directories = await Files.listdirs(Files.join(process.cwd(), 'testables')) + expect(directories.length).to.equal(3) + expect(directories).to.contain(Files.join(process.cwd(), 'testables/single')) + expect(directories).to.contain(Files.join(process.cwd(), 'testables/workspaces')) + expect(directories).to.contain(Files.join(process.cwd(), 'testables/workspaces-invalid')) + }) + + it('should throw error when listing directories', (done) => { + Files.listdirs(Files.join(process.cwd(), 'nonexistant')).catch(() => done()) + }) + + it('should list files', async () => { + const filepaths = await Files.listfiles(Files.join(process.cwd(), 'testables/single')) + expect(filepaths.length).to.equal(2) + expect(filepaths).to.contain(Files.join(process.cwd(), 'testables/single/package.json')) + expect(filepaths).to.contain(Files.join(process.cwd(), 'testables/single/tsconfig.json')) + }) + + it('should throw error when listing files', (done) => { + Files.listfiles(Files.join(process.cwd(), 'nonexistant')).catch(() => done()) + }) + it('should write file', () => { const filename = Files.join(process.cwd(), 'artifacts', 'test.json') return Files.writefile(filename, {}) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index 33cf2d6..c12f9ca 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -31,4 +31,5 @@ describe('when loading projects', () => { expect(project.children[0].owner).to.not.equal(undefined) expect(project.children[1].owner).to.not.equal(undefined) }) + }) From 0a1a0b1f18f37e90ae968297e137014f168730e6 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 11:16:09 -0500 Subject: [PATCH 12/39] typings refactor --- src/Core/Actions/Typings.ts | 33 +++++++++++++++++++++++++++++++-- src/Core/Project.ts | 4 ++++ src/Core/UpdateScript.ts | 13 +++++++++++-- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 94a43b5..124a43e 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -38,10 +38,39 @@ class Script extends UpdateScript { const tsconfig = await project.json('tsconfig.json') tsconfig.compilerOptions.types = await this.gatherTypeDefinitions(project) + + if (this.testing) { + this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) + } else { + await project.save('tsconfig.json', tsconfig) + this.log.task('tsconfig') + } } - private gatherTypeDefinitions(project: Project): Promise { - return Promise.resolve([]) + private async gatherTypeDefinitions(project: Project): Promise { + const npm = await project.package + let dependencies: string[] = [] + + if (npm.dependencies) { + dependencies = dependencies.concat(Object.keys(npm.dependencies)) + } + + if (npm.devDependencies) { + dependencies = dependencies.concat(Object.keys(npm.devDependencies)) + } + + const modulesPath = Files.join(project.path, 'node_modules') + + return Promise.all(dependencies.map(async dependency => { + const dependencyPath = Files.join(modulesPath, dependency) + if (await Files.exists(dependencyPath)) { + const npm = await Files.json(dependencyPath) + if (npm.types || npm.typings) { + return dependency + } + } + return '' + })).then(values => values.filter(value => value)) } } diff --git a/src/Core/Project.ts b/src/Core/Project.ts index c4ac6a8..4e6a316 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -68,6 +68,10 @@ export class Project { return Files.json(Files.join(this.path, filename)) } + public save(filename: string, data: T): Promise { + return Files.save(Files.join(this.path, filename), data) + } + private async loadChildProjects(npm: NPM): Promise { const lernafile = Files.join(this.path, 'lerna.json') if (await Files.exists(lernafile)) { diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index d5b53cf..693798b 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -53,8 +53,17 @@ export abstract class UpdateScript implements Updater { if (error) this.log.error(error) }) - child.stderr.on('data', data => this.args(project, process.stderr, data).map(lines => lines).forEach(args => this.log.error(...args))) - child.stdout.on('data', data => this.args(project, process.stdout, data).map(lines => lines).forEach(args => this.log.task(...args))) + child.stderr.on('data', data => + this.args(project, process.stderr, data) + .map(lines => lines) + .forEach(args => this.log.error(...args)) + ) + + child.stdout.on('data', data => + this.args(project, process.stdout, data) + .map(lines => lines) + .forEach(args => this.log.task(...args)) + ) child.addListener('exit', (code: number, signal: string) => { if (code === 0) { From b3a3bb3cffa2452cd8d4e17e5dd26f3deb13886c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 11:20:32 -0500 Subject: [PATCH 13/39] bumping version for publish --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2c70cc1..5804ab0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-5", + "version": "2.0.0-alpha-6", "dependencies": { "chalk": "^2.3.0" }, From abfcb05fbbbde3b0087f40bf7e943308a2f27261 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 11:36:33 -0500 Subject: [PATCH 14/39] adding error handling to typings --- package.json | 2 +- src/Core/Actions/Typings.ts | 30 +++++++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 5804ab0..fcdd9d4 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-6", + "version": "2.0.0-alpha-7", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 124a43e..4dbb275 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -28,22 +28,26 @@ class Script extends UpdateScript { } public async exec(rootpath: string): Promise { - this.log.task('exec', rootpath) - const project = await Project.load(rootpath) + try { + this.log.task('exec', rootpath) + const project = await Project.load(rootpath) - if (project === Project.InvalidProject) { - this.log.error(`failed to load any projects at ${rootpath}`) - return - } + if (project === Project.InvalidProject) { + this.log.error(`failed to load any projects at ${rootpath}`) + return + } - const tsconfig = await project.json('tsconfig.json') - tsconfig.compilerOptions.types = await this.gatherTypeDefinitions(project) + const tsconfig = await project.json('tsconfig.json') + tsconfig.compilerOptions.types = await this.gatherTypeDefinitions(project) - if (this.testing) { - this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) - } else { - await project.save('tsconfig.json', tsconfig) - this.log.task('tsconfig') + if (this.testing) { + this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) + } else { + await project.save('tsconfig.json', tsconfig) + this.log.task('tsconfig') + } + } catch (error) { + this.log.error(error) } } From 121c7d2131a5ebf024f39f1dbb2e72c637206dc5 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 11:46:01 -0500 Subject: [PATCH 15/39] fixing dependency checks for typings --- package.json | 2 +- src/Core/Actions/Typings.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fcdd9d4..e87b246 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-7", + "version": "2.0.0-alpha-8", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 4dbb275..5bab593 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -66,7 +66,7 @@ class Script extends UpdateScript { const modulesPath = Files.join(project.path, 'node_modules') return Promise.all(dependencies.map(async dependency => { - const dependencyPath = Files.join(modulesPath, dependency) + const dependencyPath = Files.join(modulesPath, dependency, 'package.json') if (await Files.exists(dependencyPath)) { const npm = await Files.json(dependencyPath) if (npm.types || npm.typings) { From c7e665d9160d13f727e9fc9c4a6598d21278ae96 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 12:14:02 -0500 Subject: [PATCH 16/39] fixing typings to loop through children --- package.json | 2 +- src/Core/Actions/Typings.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e87b246..d3fc92b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-8", + "version": "2.0.0-alpha-9", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 5bab593..db07445 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -38,7 +38,14 @@ class Script extends UpdateScript { } const tsconfig = await project.json('tsconfig.json') - tsconfig.compilerOptions.types = await this.gatherTypeDefinitions(project) + const declarations: string[] = [] + + await Promise.all(project.children.map(async child => { + const dependencies = await this.gatherTypeDefinitions(project) + dependencies.forEach(dependency => declarations.push(dependency)) + })) + + tsconfig.compilerOptions.types = declarations.sort() if (this.testing) { this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) From cfee5525ce82149a78664369acc4e1c0546af14b Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 12:39:06 -0500 Subject: [PATCH 17/39] 2.0.0-alpha-10 --- package.json | 2 +- src/Core/Actions/Typings.ts | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index d3fc92b..b3d82a1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-9", + "version": "2.0.0-alpha-10", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index db07445..78d705c 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -43,16 +43,16 @@ class Script extends UpdateScript { await Promise.all(project.children.map(async child => { const dependencies = await this.gatherTypeDefinitions(project) dependencies.forEach(dependency => declarations.push(dependency)) - })) - - tsconfig.compilerOptions.types = declarations.sort() - - if (this.testing) { - this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) - } else { - await project.save('tsconfig.json', tsconfig) - this.log.task('tsconfig') - } + })).then(async () => { + tsconfig.compilerOptions.types = declarations.sort() + + if (this.testing) { + this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) + } else { + await project.save('tsconfig.json', tsconfig) + this.log.task('tsconfig') + } + }) } catch (error) { this.log.error(error) } @@ -74,9 +74,11 @@ class Script extends UpdateScript { return Promise.all(dependencies.map(async dependency => { const dependencyPath = Files.join(modulesPath, dependency, 'package.json') + this.log.debug('dependencies', dependencyPath) if (await Files.exists(dependencyPath)) { const npm = await Files.json(dependencyPath) if (npm.types || npm.typings) { + this.log.debug('found dependency', dependency) return dependency } } From c97dc0cbce8afc3b32601fef844db16e259cdf11 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 17 Nov 2017 14:08:28 -0500 Subject: [PATCH 18/39] fixing child typings --- docs/issue_template.md | 4 ++-- docs/pull_request_template.md | 4 ++-- package.json | 2 +- src/Core/Actions/Typings.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/issue_template.md b/docs/issue_template.md index f4e0438..b07919e 100644 --- a/docs/issue_template.md +++ b/docs/issue_template.md @@ -1,3 +1,3 @@ -# ISSUE +## ISSUE -# FIX SUGGESTION +## FIX SUGGESTION diff --git a/docs/pull_request_template.md b/docs/pull_request_template.md index 08481ab..7e7a656 100644 --- a/docs/pull_request_template.md +++ b/docs/pull_request_template.md @@ -1,3 +1,3 @@ -# What issue does this fix/feature? +## What issue does this fix/feature? -# What tests cover the fix/feature? +## What tests cover the fix/feature? diff --git a/package.json b/package.json index b3d82a1..b0be1d3 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-10", + "version": "2.0.0-alpha-11", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 78d705c..9055c93 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -41,7 +41,7 @@ class Script extends UpdateScript { const declarations: string[] = [] await Promise.all(project.children.map(async child => { - const dependencies = await this.gatherTypeDefinitions(project) + const dependencies = await this.gatherTypeDefinitions(child) dependencies.forEach(dependency => declarations.push(dependency)) })).then(async () => { tsconfig.compilerOptions.types = declarations.sort() From d1820f0e8092dd1ac3cd3603ac321880d9378855 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 18 Nov 2017 14:59:07 -0500 Subject: [PATCH 19/39] stuff --- package.json | 2 +- src/Core/Actions/Typings.ts | 13 ++++++---- src/Core/Logger.ts | 4 +--- testables/single/yarn.lock | 47 +++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 testables/single/yarn.lock diff --git a/package.json b/package.json index b0be1d3..4af94cd 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-11", + "version": "2.0.0-alpha-12", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 9055c93..2a98d9b 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -40,17 +40,18 @@ class Script extends UpdateScript { const tsconfig = await project.json('tsconfig.json') const declarations: string[] = [] - await Promise.all(project.children.map(async child => { + return Promise.all(project.children.map(async child => { + this.log.debug('child project', child.name) const dependencies = await this.gatherTypeDefinitions(child) dependencies.forEach(dependency => declarations.push(dependency)) })).then(async () => { tsconfig.compilerOptions.types = declarations.sort() if (this.testing) { - this.log.task('tsconfig', JSON.stringify(tsconfig, null, 2)) + this.log.task('tsconfig', project.path, JSON.stringify(tsconfig, null, 2)) } else { await project.save('tsconfig.json', tsconfig) - this.log.task('tsconfig') + this.log.task('tsconfig', project.path) } }) } catch (error) { @@ -70,17 +71,21 @@ class Script extends UpdateScript { dependencies = dependencies.concat(Object.keys(npm.devDependencies)) } - const modulesPath = Files.join(project.path, 'node_modules') + const owner = project.owner || project + const modulesPath = Files.join(owner.path, 'node_modules') return Promise.all(dependencies.map(async dependency => { const dependencyPath = Files.join(modulesPath, dependency, 'package.json') this.log.debug('dependencies', dependencyPath) + if (await Files.exists(dependencyPath)) { const npm = await Files.json(dependencyPath) if (npm.types || npm.typings) { this.log.debug('found dependency', dependency) return dependency } + } else { + this.log.debug('failed to find', dependencyPath) } return '' })).then(values => values.filter(value => value)) diff --git a/src/Core/Logger.ts b/src/Core/Logger.ts index 69e1026..ba58c8c 100644 --- a/src/Core/Logger.ts +++ b/src/Core/Logger.ts @@ -14,9 +14,7 @@ export function Logger(name: string, category?: string): Log { const bold = (name: string) => chalk.default.bold(`[${name}${cat}]`) const log = (...args: any[]) => { - if (['production', 'test', 'testing'].every(env => env !== process.env.NODE_ENV)) { - console.log(...args) - } + console.log(...args) } return { diff --git a/testables/single/yarn.lock b/testables/single/yarn.lock new file mode 100644 index 0000000..d23afa2 --- /dev/null +++ b/testables/single/yarn.lock @@ -0,0 +1,47 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/chalk@*": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" + dependencies: + chalk "*" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +chalk@*: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" From 5cea59d7d9b8779de6a4fed520b7ae2bbd198cf1 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 19 Nov 2017 17:07:23 -0500 Subject: [PATCH 20/39] fixing typings --- package.json | 2 +- src/Core/Actions/Typings.ts | 42 ++++++++++++++------------- src/Core/Files.spec.ts | 1 - src/Core/Interfaces/NPM.ts | 2 +- src/Core/Project.ts | 6 ++-- testables/single/package.json | 3 -- testables/workspaces/package.json | 2 +- testables/workspaces/yarn.lock | 47 +++++++++++++++++++++++++++++++ 8 files changed, 75 insertions(+), 30 deletions(-) create mode 100644 testables/workspaces/yarn.lock diff --git a/package.json b/package.json index 4af94cd..4e3d395 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-12", + "version": "2.0.0-alpha-14", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 2a98d9b..69a7abd 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -28,24 +28,25 @@ class Script extends UpdateScript { } public async exec(rootpath: string): Promise { - try { - this.log.task('exec', rootpath) - const project = await Project.load(rootpath) + this.log.task('exec', rootpath) + const project = await Project.load(rootpath) - if (project === Project.InvalidProject) { - this.log.error(`failed to load any projects at ${rootpath}`) - return - } + if (project === Project.InvalidProject) { + this.log.error(`failed to load any projects at ${rootpath}`) + return + } - const tsconfig = await project.json('tsconfig.json') - const declarations: string[] = [] + const tsconfig = await project.json('tsconfig.json') + const definitions: string[] = [] + const deps = project.children.map(async child => { + this.log.debug('child project', child.name) + const dependencies = await this.gatherTypeDefinitions(child) + dependencies.forEach(dependency => definitions.push(dependency)) + }) - return Promise.all(project.children.map(async child => { - this.log.debug('child project', child.name) - const dependencies = await this.gatherTypeDefinitions(child) - dependencies.forEach(dependency => declarations.push(dependency)) - })).then(async () => { - tsconfig.compilerOptions.types = declarations.sort() + return Promise.all(deps) + .then(async () => { + tsconfig.compilerOptions.types = Array.from(new Set(definitions)).sort() if (this.testing) { this.log.task('tsconfig', project.path, JSON.stringify(tsconfig, null, 2)) @@ -54,9 +55,6 @@ class Script extends UpdateScript { this.log.task('tsconfig', project.path) } }) - } catch (error) { - this.log.error(error) - } } private async gatherTypeDefinitions(project: Project): Promise { @@ -74,7 +72,7 @@ class Script extends UpdateScript { const owner = project.owner || project const modulesPath = Files.join(owner.path, 'node_modules') - return Promise.all(dependencies.map(async dependency => { + const deps = dependencies.map(async dependency => { const dependencyPath = Files.join(modulesPath, dependency, 'package.json') this.log.debug('dependencies', dependencyPath) @@ -88,7 +86,11 @@ class Script extends UpdateScript { this.log.debug('failed to find', dependencyPath) } return '' - })).then(values => values.filter(value => value)) + }) + + return Promise.all(deps) + .then(values => values.filter(value => value)) + .then(values => Array.from(new Set(values))) } } diff --git a/src/Core/Files.spec.ts b/src/Core/Files.spec.ts index 9d17dff..0025f9d 100644 --- a/src/Core/Files.spec.ts +++ b/src/Core/Files.spec.ts @@ -33,7 +33,6 @@ describe('when working with files', () => { it('should list files', async () => { const filepaths = await Files.listfiles(Files.join(process.cwd(), 'testables/single')) - expect(filepaths.length).to.equal(2) expect(filepaths).to.contain(Files.join(process.cwd(), 'testables/single/package.json')) expect(filepaths).to.contain(Files.join(process.cwd(), 'testables/single/tsconfig.json')) }) diff --git a/src/Core/Interfaces/NPM.ts b/src/Core/Interfaces/NPM.ts index c4db253..6f56998 100644 --- a/src/Core/Interfaces/NPM.ts +++ b/src/Core/Interfaces/NPM.ts @@ -16,5 +16,5 @@ export interface NPM { typeScriptVersion: string, typings?: string version: string - workspace?: string[] + workspaces?: string[] } diff --git a/src/Core/Project.ts b/src/Core/Project.ts index 4e6a316..7ffd632 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -56,7 +56,7 @@ export class Project { const npm = await Files.json(npmfile) const project = new Project(npm.name, rootpath) - if (npm.private && npm.workspace) { + if (npm.private && npm.workspaces) { const result = await project.loadChildProjects(npm) return result } @@ -98,8 +98,8 @@ export class Project { private async loadYarnWorkspaces(project: Project): Promise { const npm = await this.package - if (npm.workspace) { - return Promise.all(npm.workspace.map(async workspace => { + if (npm.workspaces) { + return Promise.all(npm.workspaces.map(async workspace => { const workspaceName = workspace.substring(0, workspace.indexOf('/*')) const workspacePath = Files.join(project.path, workspaceName) const children = await this.loadProjects(workspacePath) diff --git a/testables/single/package.json b/testables/single/package.json index a6cd6e0..9d2f952 100644 --- a/testables/single/package.json +++ b/testables/single/package.json @@ -3,9 +3,6 @@ "chalk": "*" }, "description": "single project", - "devDependencies": { - "@types/chalk": "*" - }, "name": "project-single", "version": "1.0.0" } diff --git a/testables/workspaces/package.json b/testables/workspaces/package.json index fc4e478..53315b2 100644 --- a/testables/workspaces/package.json +++ b/testables/workspaces/package.json @@ -2,7 +2,7 @@ "description": "project with workspaces", "name": "project-workspaces", "private": true, - "workspace": [ + "workspaces": [ "packages/*", "projects/*" ], diff --git a/testables/workspaces/yarn.lock b/testables/workspaces/yarn.lock new file mode 100644 index 0000000..d23afa2 --- /dev/null +++ b/testables/workspaces/yarn.lock @@ -0,0 +1,47 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/chalk@*": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" + dependencies: + chalk "*" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +chalk@*: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" From 6aabe08f3f2337a155a2fd554474742ca2ee23b9 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 24 Nov 2017 10:50:50 -0500 Subject: [PATCH 21/39] checkpoint --- package.json | 8 ++++++-- src/Chest.spec.ts | 1 + src/Core/Actions/Packages.ts | 4 ++-- src/Core/Actions/Typings.ts | 2 +- src/Core/Files.spec.ts | 23 +++++++++++++++-------- src/Core/Files.ts | 17 +++++++++++++++++ src/Core/Project.ts | 4 ++-- src/Core/ProjectNavigator.ts | 27 +++++++++++++++++++++++++++ tsconfig.json | 2 +- 9 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 src/Core/ProjectNavigator.ts diff --git a/package.json b/package.json index 4e3d395..f145d70 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,11 @@ "include": [ "src/**/*.ts" ], - "instrument": true, - "sourceMap": true + "instrument": true, + "report-dir": ".cache/coverage", + "reporter": "text", + "sourceMap": true, + "temp-directory": ".cache/nyc" }, "publishConfig": { "access": "public" @@ -58,6 +61,7 @@ "postbuild": "bin-shebang && yarn run lint", "test": "cross-env NODE_ENV=test nyc mocha --opts mocha.opts", "pretest": "yarn run build", + "testonly": "cross-env NODE_ENV=test nyc mocha --opts mocha.opts", "coveralls": "nyc report --reporter=text-lcov | coveralls" } } diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index d3835d7..babcbaa 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -26,4 +26,5 @@ describe('when loading projects', () => { const args = Object.keys(Registry.all()) return Chest.run(directory, ...args) }) + }) diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index eb997f7..ad60dc6 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -25,8 +25,8 @@ class Script extends UpdateScript { public async workspace(project: Project): Promise { if (project.owner) { - const source = await project.owner.package - const target = await project.package + const source = await project.owner.npm + const target = await project.npm target.author = source.author target.bugs = source.bugs diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 69a7abd..aec71a1 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -58,7 +58,7 @@ class Script extends UpdateScript { } private async gatherTypeDefinitions(project: Project): Promise { - const npm = await project.package + const npm = await project.npm let dependencies: string[] = [] if (npm.dependencies) { diff --git a/src/Core/Files.spec.ts b/src/Core/Files.spec.ts index 0025f9d..541a66a 100644 --- a/src/Core/Files.spec.ts +++ b/src/Core/Files.spec.ts @@ -9,8 +9,11 @@ const expect = chai.expect describe('when working with files', () => { + const artifacts = Files.join(process.cwd(), 'artifacts') + const nonexistant = Files.join(process.cwd(), 'nonexistant') + const testables = Files.join(process.cwd(), 'testables') + before(async () => { - const artifacts = Files.join(process.cwd(), 'artifacts') await Files.mkdir(artifacts) }) @@ -20,7 +23,7 @@ describe('when working with files', () => { }) it('should list directories', async () => { - const directories = await Files.listdirs(Files.join(process.cwd(), 'testables')) + const directories = await Files.listdirs(testables) expect(directories.length).to.equal(3) expect(directories).to.contain(Files.join(process.cwd(), 'testables/single')) expect(directories).to.contain(Files.join(process.cwd(), 'testables/workspaces')) @@ -28,21 +31,25 @@ describe('when working with files', () => { }) it('should throw error when listing directories', (done) => { - Files.listdirs(Files.join(process.cwd(), 'nonexistant')).catch(() => done()) + Files.listdirs(nonexistant).catch(() => done()) + }) + + it('should get deep listing of directories', () => { + return Files.deepdirs(testables).then(dirs => console.log(dirs)) }) it('should list files', async () => { - const filepaths = await Files.listfiles(Files.join(process.cwd(), 'testables/single')) - expect(filepaths).to.contain(Files.join(process.cwd(), 'testables/single/package.json')) - expect(filepaths).to.contain(Files.join(process.cwd(), 'testables/single/tsconfig.json')) + const filepaths = await Files.listfiles(Files.join(testables, 'single')) + expect(filepaths).to.contain(Files.join(testables, 'single/package.json')) + expect(filepaths).to.contain(Files.join(testables, 'single/tsconfig.json')) }) it('should throw error when listing files', (done) => { - Files.listfiles(Files.join(process.cwd(), 'nonexistant')).catch(() => done()) + Files.listfiles(nonexistant).catch(() => done()) }) it('should write file', () => { - const filename = Files.join(process.cwd(), 'artifacts', 'test.json') + const filename = Files.join(artifacts, 'test.json') return Files.writefile(filename, {}) }) diff --git a/src/Core/Files.ts b/src/Core/Files.ts index 6201dca..565e364 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -12,12 +12,27 @@ class InternalFiles { return path.basename(filepath) } + public deepdirs(filepath: string): Promise { + return Files.listdirs(filepath) + .then(dirs => dirs.map(dir => this.deepdirs(dir))) + .then(promises => promises.reduce((previous, current) => + new Promise((resolve, reject) => + previous.then(values => current.then(inner => + resolve(values.concat(inner)))) + ), Promise.resolve([])) + ) + } + public exists(filepath: string): Promise { return new Promise((resolve, reject) => { fs.exists(filepath, (exists: boolean) => resolve(exists)) }) } + public ext(filepath: string): string { + return path.extname(filepath) + } + public extensionless(filename: string): string { const basename = path.basename(filename) const extname = path.extname(basename) @@ -126,7 +141,9 @@ class InternalFiles { export interface Files { basename(filepath: string): string + deepdirs(rootpath: string): Promise exists(filepath: string): Promise + ext(filepath: string): string extensionless(filename: string): string join(...args: string[]): string json(filepath: string): Promise diff --git a/src/Core/Project.ts b/src/Core/Project.ts index 7ffd632..a6b135c 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -38,7 +38,7 @@ export class Project { return this._owner } - public get package(): Promise { + public get npm(): Promise { return Files.json(Files.join(this.path, 'package.json')) } @@ -97,7 +97,7 @@ export class Project { } private async loadYarnWorkspaces(project: Project): Promise { - const npm = await this.package + const npm = await this.npm if (npm.workspaces) { return Promise.all(npm.workspaces.map(async workspace => { const workspaceName = workspace.substring(0, workspace.indexOf('/*')) diff --git a/src/Core/ProjectNavigator.ts b/src/Core/ProjectNavigator.ts new file mode 100644 index 0000000..08942ee --- /dev/null +++ b/src/Core/ProjectNavigator.ts @@ -0,0 +1,27 @@ +import { Files } from './Files' +import { Project } from './Project' + +export class ProjectNavigator { + private readonly project: Project + + constructor(project: Project) { + this.project = project + } + + public get json(): Promise { + return this.filterByExtension(this.project.path, '.json') + } + + public get ts(): Promise { + return this.filterByExtension(this.project.path, '.ts') + } + + public get tsx(): Promise { + return this.filterByExtension(this.project.path, '.tsx') + } + + public filterByExtension(filepath: string, ext: string): Promise { + return Files.listdirs(this.project.path) + .then(dirs => dirs.filter(dir => Files.ext(dir.toLowerCase()) === ext)) + } +} diff --git a/tsconfig.json b/tsconfig.json index d634d0c..0237e63 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "allowSyntheticDefaultImports": true, "baseUrl": ".", "declaration": true, - "diagnostics": true, + "diagnostics": false, "emitDecoratorMetadata": true, "experimentalDecorators": true, "forceConsistentCasingInFileNames": true, From ef61da6b0cf441a9cfa3f1060b4ba215f67a0f92 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Fri, 24 Nov 2017 12:13:04 -0500 Subject: [PATCH 22/39] fixing lint issues --- .gitignore | 2 +- .npmignore | 2 +- package.json | 9 ++++----- src/CLI.ts | 2 +- src/Chest.ts | 8 ++++---- src/Core/Actions/Packages.ts | 20 +++++-------------- src/Core/Actions/Typings.ts | 20 ++++--------------- src/Core/Files.ts | 2 +- src/Core/Logger.ts | 4 +++- src/Core/Project.ts | 1 - src/Core/Registry.ts | 2 +- src/Core/UpdateScript.ts | 2 +- testables/single/tsconfig.json | 6 ++++-- .../packages/simple-package/package.json | 4 ++-- .../projects/simple-project/package.json | 4 ++-- testables/workspaces/tsconfig.json | 6 ++++-- tsconfig.json | 3 ++- 17 files changed, 40 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index 5631318..a616121 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.nyc_output/ +.cache/ artifacts/ lib/ node_modules/ diff --git a/.npmignore b/.npmignore index 2e7c7c0..a3109cd 100644 --- a/.npmignore +++ b/.npmignore @@ -1,4 +1,4 @@ -.nyc_output/ +.cache/ artifacts/ docs/ node_modules/ diff --git a/package.json b/package.json index f145d70..5a30cb6 100644 --- a/package.json +++ b/package.json @@ -56,12 +56,11 @@ }, "scripts": { "build": "tsc --project tsconfig.json", - "lint": "tslint src/**/*.ts", - "prebuild": "rimraf lib && rimraf artifacts", - "postbuild": "bin-shebang && yarn run lint", - "test": "cross-env NODE_ENV=test nyc mocha --opts mocha.opts", + "prebuild": "rimraf lib && rimraf artifacts && tslint --project tsconfig.json --config tslint.json", + "postbuild": "bin-shebang", + "test": "cross-env DEBUG= nyc mocha --opts mocha.opts", "pretest": "yarn run build", - "testonly": "cross-env NODE_ENV=test nyc mocha --opts mocha.opts", + "testonly": "cross-env DEBUG= nyc mocha --opts mocha.opts", "coveralls": "nyc report --reporter=text-lcov | coveralls" } } diff --git a/src/CLI.ts b/src/CLI.ts index 6424024..9e88db9 100644 --- a/src/CLI.ts +++ b/src/CLI.ts @@ -1,3 +1,3 @@ import { Chest } from './index' -Chest.run(process.cwd(), ...process.argv.slice(2)) +Chest.run(process.cwd(), ...process.argv.slice(2)).catch(() => process.exit(1)) diff --git a/src/Chest.ts b/src/Chest.ts index 4ee432a..9e006c0 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -1,11 +1,11 @@ -import * as path from 'path' - -import { Files, Log, Logger, NPM, Project, Registry, UpdaterType } from './Core' +import { Log, Logger, Project, Registry, UpdaterType } from './Core' export class Chest { - private static readonly Log: Log = Logger('chest') + private static readonly log: Log = Logger('chest') public static async run(root: string, ...args: string[]): Promise { + Chest.log.debug('run', root, ...args) + const project = await Project.load(root) const updaters = Registry.all() diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index ad60dc6..f1ca49c 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -1,26 +1,16 @@ import * as path from 'path' -import { Files, Logger, NPM, Project, Registry, Updater, UpdateScript, UpdaterType } from '../index' - -const ScriptName = Files.extensionless(__filename) -const log = Logger(ScriptName) -const prefix = '@types' - -interface Dependency { - filename: string - filepath: string - npmname: string - scope?: string - typings?: string -} +import { Files, NPM, Project, Registry, UpdateScript, UpdaterType } from '../index' /* * Propogates changes from the root package.json to child * packages. **/ class Script extends UpdateScript { + public static readonly Name: string = Files.extensionless(__filename) + constructor() { - super(ScriptName, UpdaterType.Projects) + super(Script.Name, UpdaterType.Projects) } public async workspace(project: Project): Promise { @@ -47,4 +37,4 @@ class Script extends UpdateScript { } } -Registry.add(ScriptName, new Script()) +Registry.add(Script.Name, new Script()) diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index aec71a1..162966d 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -1,18 +1,5 @@ -import * as path from 'path' import { CompilerOptions } from 'typescript' -import { Files, Logger, NPM, Project, Registry, Updater, UpdateScript, UpdaterType } from '../index' - -const ScriptName = Files.extensionless(__filename) -const log = Logger(ScriptName) -const prefix = '@types' - -interface Dependency { - filename: string - filepath: string - npmname: string - scope?: string - typings?: string -} +import { Files, NPM, Project, Registry, UpdateScript, UpdaterType } from '../index' interface TsConfig { compilerOptions: CompilerOptions @@ -23,8 +10,9 @@ interface TsConfig { * looking for types from @types. **/ class Script extends UpdateScript { + public static Name = Files.extensionless(__filename) constructor() { - super(ScriptName, UpdaterType.Root) + super(Script.Name, UpdaterType.Root) } public async exec(rootpath: string): Promise { @@ -94,4 +82,4 @@ class Script extends UpdateScript { } } -Registry.add(ScriptName, new Script()) +Registry.add(Script.Name, new Script()) diff --git a/src/Core/Files.ts b/src/Core/Files.ts index 565e364..3bad1b4 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -13,7 +13,7 @@ class InternalFiles { } public deepdirs(filepath: string): Promise { - return Files.listdirs(filepath) + return this.listdirs(filepath) .then(dirs => dirs.map(dir => this.deepdirs(dir))) .then(promises => promises.reduce((previous, current) => new Promise((resolve, reject) => diff --git a/src/Core/Logger.ts b/src/Core/Logger.ts index ba58c8c..4a39c36 100644 --- a/src/Core/Logger.ts +++ b/src/Core/Logger.ts @@ -14,7 +14,9 @@ export function Logger(name: string, category?: string): Log { const bold = (name: string) => chalk.default.bold(`[${name}${cat}]`) const log = (...args: any[]) => { - console.log(...args) + if (process.env.DEBUG) { + console.log(...args) + } } return { diff --git a/src/Core/Project.ts b/src/Core/Project.ts index a6b135c..0859f4e 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -113,7 +113,6 @@ export class Project { private async loadProjects(workspacePath: string): Promise { const projects = await Files.listdirs(workspacePath) return Promise.all(projects.map(async projectPath => { - const projectName = Files.basename(projectPath) const npmfile = Files.join(projectPath, 'package.json') const npm = await Files.json(npmfile) const child = new Project(npm.name, projectPath, this) diff --git a/src/Core/Registry.ts b/src/Core/Registry.ts index cf4fcf3..2b670c2 100644 --- a/src/Core/Registry.ts +++ b/src/Core/Registry.ts @@ -12,7 +12,7 @@ export class Registry { } public static contains(name: string): boolean { - return this.registrations[name.toLowerCase()] !== undefined + return !!this.registrations[name.toLowerCase()] } public static execute(root: string, ...args: string[]): Promise { diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index 693798b..7dd190d 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -1,7 +1,7 @@ import * as cp from 'child_process' import * as path from 'path' -import { Files, Log, Logger, NPM, Project, Updater, UpdaterType } from './index' +import { Files, Log, Logger, Project, Updater, UpdaterType } from './index' export abstract class UpdateScript implements Updater { protected readonly log: Log diff --git a/testables/single/tsconfig.json b/testables/single/tsconfig.json index 875cb60..b798bc0 100644 --- a/testables/single/tsconfig.json +++ b/testables/single/tsconfig.json @@ -1,3 +1,5 @@ { - "compilerOptions": {} -} + "compilerOptions": { + "types": [] + } +} \ No newline at end of file diff --git a/testables/workspaces/packages/simple-package/package.json b/testables/workspaces/packages/simple-package/package.json index 133973c..9e426a8 100644 --- a/testables/workspaces/packages/simple-package/package.json +++ b/testables/workspaces/packages/simple-package/package.json @@ -2,10 +2,10 @@ "dependencies": { "chalk": "*" }, - "description": "simple package", + "description": "project with workspaces", "devDependencies": { "@types/chalk": "*" }, "name": "simple-package", "version": "1.0.0" -} +} \ No newline at end of file diff --git a/testables/workspaces/projects/simple-project/package.json b/testables/workspaces/projects/simple-project/package.json index 15fd88e..8900adb 100644 --- a/testables/workspaces/projects/simple-project/package.json +++ b/testables/workspaces/projects/simple-project/package.json @@ -2,10 +2,10 @@ "dependencies": { "chalk": "*" }, - "description": "simple project", + "description": "project with workspaces", "devDependencies": { "@types/chalk": "*" }, "name": "simple-project", "version": "1.0.0" -} +} \ No newline at end of file diff --git a/testables/workspaces/tsconfig.json b/testables/workspaces/tsconfig.json index 875cb60..b798bc0 100644 --- a/testables/workspaces/tsconfig.json +++ b/testables/workspaces/tsconfig.json @@ -1,3 +1,5 @@ { - "compilerOptions": {} -} + "compilerOptions": { + "types": [] + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 0237e63..3c931d0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,7 +29,8 @@ ] }, "exclude": [ - "node_modules" + "node_modules", + "src/**/*.spec.ts" ], "include": [ "src/**/*.ts" From 4bfeb2ccd61e2199bbb0dcda05502262c7916e33 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 15:44:20 -0500 Subject: [PATCH 23/39] improving tests --- src/Core/Actions/Packages.ts | 1 + src/Core/Actions/Yarn.ts | 18 ++++++++++++++ src/Core/Actions/index.ts | 1 + src/Core/Files.spec.ts | 31 ++++++++++++++++++------ src/Core/Files.ts | 27 ++++++++++++++------- src/Core/Interfaces/Updater.ts | 6 +---- src/Core/Interfaces/UpdaterType.ts | 4 +++ src/Core/Interfaces/index.ts | 1 + src/Core/Project.spec.ts | 9 +++++++ src/Core/Registry.spec.ts | 5 ++++ src/Core/Registry.ts | 5 +--- src/Core/UpdateScript.spec.ts | 39 ++++++++++++++++++++++++++++++ src/Core/UpdateScript.ts | 10 +++----- testables/single/yarn.lock | 6 ----- testables/workspaces/.yarnrc | 2 ++ testables/workspaces/tsconfig.json | 4 ++- 16 files changed, 129 insertions(+), 40 deletions(-) create mode 100644 src/Core/Actions/Yarn.ts create mode 100644 src/Core/Interfaces/UpdaterType.ts create mode 100644 src/Core/UpdateScript.spec.ts create mode 100644 testables/workspaces/.yarnrc diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index f1ca49c..b53ed44 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -28,6 +28,7 @@ class Script extends UpdateScript { const filename = path.join(project.path, 'package.json') if (this.testing) { + /* istanbul ignore next */ this.log.task('workspace', filename, JSON.stringify(target, null, 2)) } else { await Files.save(filename, target) diff --git a/src/Core/Actions/Yarn.ts b/src/Core/Actions/Yarn.ts new file mode 100644 index 0000000..15f0838 --- /dev/null +++ b/src/Core/Actions/Yarn.ts @@ -0,0 +1,18 @@ +import { UpdaterType } from '../Interfaces' +import { Project } from '../Project' +import { Registry } from '../Registry' +import { UpdateScript } from '../UpdateScript' + +export class Yarn extends UpdateScript { + public static readonly Name: string = 'yarn' + + constructor() { + super(Yarn.Name, UpdaterType.Root) + } + + public exec(rootpath: string): Promise { + return Project.load(rootpath).then(project => this.run(project, 'yarn')) + } +} + +Registry.add(Yarn.Name, new Yarn()) diff --git a/src/Core/Actions/index.ts b/src/Core/Actions/index.ts index 194367d..aa38968 100644 --- a/src/Core/Actions/index.ts +++ b/src/Core/Actions/index.ts @@ -1,2 +1,3 @@ import './Packages' import './Typings' +import './Yarn' diff --git a/src/Core/Files.spec.ts b/src/Core/Files.spec.ts index 541a66a..3801f85 100644 --- a/src/Core/Files.spec.ts +++ b/src/Core/Files.spec.ts @@ -10,8 +10,11 @@ const expect = chai.expect describe('when working with files', () => { const artifacts = Files.join(process.cwd(), 'artifacts') + const invalidDir = Files.join(artifacts, 'double', 'invalid') + const invalidFile = Files.join(artifacts, 'invalid', 'invalid.json') const nonexistant = Files.join(process.cwd(), 'nonexistant') const testables = Files.join(process.cwd(), 'testables') + const workspaces = Files.join(testables, 'workspaces') before(async () => { await Files.mkdir(artifacts) @@ -35,7 +38,17 @@ describe('when working with files', () => { }) it('should get deep listing of directories', () => { - return Files.deepdirs(testables).then(dirs => console.log(dirs)) + return Files.deepdirs(testables).then(dirs => { + expect(dirs.length).to.not.equal(0) + expect(dirs).contains(testables) + }) + }) + + it('should get deep listing of files', () => { + return Files.deepfiles(workspaces).then(files => { + expect(files.length).to.not.equal(0) + expect(files).contains(Files.join(workspaces, 'package.json')) + }) }) it('should list files', async () => { @@ -44,13 +57,15 @@ describe('when working with files', () => { expect(filepaths).to.contain(Files.join(testables, 'single/tsconfig.json')) }) - it('should throw error when listing files', (done) => { - Files.listfiles(nonexistant).catch(() => done()) - }) + it('should throw error when listing files', (done) => { Files.listfiles(nonexistant).catch(() => done()) }) + it('should throw error when creating directory fails', (done) => { Files.mkdir(invalidDir).catch(() => done()) }) + it('should throw error when reading file fails', (done) => { Files.readfile(invalidFile).catch(() => done()) }) + it('should throw error when reading json fails', (done) => { Files.json(invalidFile).catch(() => done()) }) + it('should throw error when stat file fails', (done) => { Files.statfile(invalidFile).catch(() => done()) }) + it('should throw error when write file fails', (done) => { Files.writefile(invalidFile, {}).catch(() => done()) }) - it('should write file', () => { - const filename = Files.join(artifacts, 'test.json') - return Files.writefile(filename, {}) - }) + it('should get file basename', () => expect(Files.basename(invalidFile)).to.equal('invalid.json')) + it('should get file extension', () => expect(Files.ext(invalidFile)).to.equal('.json')) + it('should write file', () => Files.writefile(Files.join(artifacts, 'test.json'), {})) }) diff --git a/src/Core/Files.ts b/src/Core/Files.ts index 3bad1b4..8f27c41 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -1,6 +1,8 @@ import * as fs from 'fs' import * as path from 'path' +import { Log, Logger } from './Logger' + export interface Stat { dir: boolean file: boolean @@ -8,6 +10,8 @@ export interface Stat { } class InternalFiles { + private readonly log: Log = Logger('files') + public basename(filepath: string): string { return path.basename(filepath) } @@ -15,18 +19,21 @@ class InternalFiles { public deepdirs(filepath: string): Promise { return this.listdirs(filepath) .then(dirs => dirs.map(dir => this.deepdirs(dir))) - .then(promises => promises.reduce((previous, current) => - new Promise((resolve, reject) => - previous.then(values => current.then(inner => - resolve(values.concat(inner)))) - ), Promise.resolve([])) - ) + .then(dirs => dirs.reduce((previous, current) => { + return previous.then(outer => current.then(inner => outer.concat(inner))) + }, Promise.all([filepath]))) + } + + public deepfiles(filepath: string): Promise { + return this.listdirs(filepath) + .then(dirs => dirs.map(dir => this.deepfiles(dir))) + .then(dirs => dirs.reduce((previous, current) => { + return previous.then(outer => current.then(inner => outer.concat(inner))) + }, this.listfiles(filepath))) } public exists(filepath: string): Promise { - return new Promise((resolve, reject) => { - fs.exists(filepath, (exists: boolean) => resolve(exists)) - }) + return new Promise((resolve, reject) => fs.exists(filepath, (exists: boolean) => resolve(exists))) } public ext(filepath: string): string { @@ -45,6 +52,7 @@ class InternalFiles { public async json(filepath: string): Promise { if (await this.exists(filepath)) { + this.log.debug('json', filepath) const buffer = await this.readfile(filepath) return JSON.parse(buffer.toString()) } @@ -142,6 +150,7 @@ class InternalFiles { export interface Files { basename(filepath: string): string deepdirs(rootpath: string): Promise + deepfiles(rootpath: string): Promise exists(filepath: string): Promise ext(filepath: string): string extensionless(filename: string): string diff --git a/src/Core/Interfaces/Updater.ts b/src/Core/Interfaces/Updater.ts index 771c48b..e689a44 100644 --- a/src/Core/Interfaces/Updater.ts +++ b/src/Core/Interfaces/Updater.ts @@ -1,10 +1,6 @@ +import { UpdaterType } from './UpdaterType' import { Project } from '../Project' -export enum UpdaterType { - Root = 'root', - Projects = 'projects', -} - export interface Updater { name: string type: UpdaterType diff --git a/src/Core/Interfaces/UpdaterType.ts b/src/Core/Interfaces/UpdaterType.ts new file mode 100644 index 0000000..524670b --- /dev/null +++ b/src/Core/Interfaces/UpdaterType.ts @@ -0,0 +1,4 @@ +export enum UpdaterType { + Root = 'root', + Projects = 'projects', +} diff --git a/src/Core/Interfaces/index.ts b/src/Core/Interfaces/index.ts index a2063c5..69a9bba 100644 --- a/src/Core/Interfaces/index.ts +++ b/src/Core/Interfaces/index.ts @@ -1,3 +1,4 @@ export * from './Dictionary' export * from './NPM' export * from './Updater' +export * from './UpdaterType' diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index c12f9ca..695eaad 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -9,8 +9,17 @@ import { Registry } from './Registry' const expect = chai.expect +const testables = Files.join(process.cwd(), 'testables') +const single = Files.join(testables, 'single') +const workspaces = Files.join(testables, 'workspaces') + describe('when loading projects', () => { + before(() => { + const script = Registry.get('yarn') + return script.exec(single).then(() => script.exec(workspaces)) + }) + beforeEach(() => { chai.should() chai.use(chaiAsPromised) diff --git a/src/Core/Registry.spec.ts b/src/Core/Registry.spec.ts index ff4cc79..6353616 100644 --- a/src/Core/Registry.spec.ts +++ b/src/Core/Registry.spec.ts @@ -39,4 +39,9 @@ describe('when using the script registry', () => { it('should throw error when calling "get" and script does not exist', () => { expect(() => Registry.get('invalid')).to.throw() }) + + it('should throw error when given unregistered scripts', () => { + expect(() => Registry.execute(process.cwd(), 'invalid')).to.throw() + }) + }) diff --git a/src/Core/Registry.ts b/src/Core/Registry.ts index 2b670c2..90ca84b 100644 --- a/src/Core/Registry.ts +++ b/src/Core/Registry.ts @@ -16,10 +16,7 @@ export class Registry { } public static execute(root: string, ...args: string[]): Promise { - return Promise.all( - args.map(arg => arg.toLowerCase()) - .map(name => this.registrations[name].exec(root)) - ) + return Promise.all(args.map(arg => arg.toLowerCase()).map(name => this.registrations[name].exec(root))) } public static get(name: string): Updater { diff --git a/src/Core/UpdateScript.spec.ts b/src/Core/UpdateScript.spec.ts new file mode 100644 index 0000000..66cdb14 --- /dev/null +++ b/src/Core/UpdateScript.spec.ts @@ -0,0 +1,39 @@ +import 'mocha' + +import { expect } from 'chai' + +import { Files, Project, Registry, UpdateScript, UpdaterType } from './index' + +const NullScriptName = 'null-update' +const NullScriptsName = 'null-updates' + +const testables = Files.join(process.cwd(), 'testables', 'single') +const workspaces = Files.join(process.cwd(), 'testables', 'workspaces') + +class NullUpdateScript extends UpdateScript { + constructor() { + super(NullScriptName, UpdaterType.Root) + } +} + +class NullUpdateScripts extends UpdateScript { + constructor() { + super(NullScriptsName, UpdaterType.Projects) + } +} + +Registry.add(NullScriptName, new NullUpdateScript()) +Registry.add(NullScriptsName, new NullUpdateScripts()) + +describe('when extending update scripts', () => { + + it('should execute in root project', (done) => { + Registry.get(NullScriptName).exec(testables).then(() => done()) + }) + + it('should execute in workspaces project', (done) => { + const script = Registry.get(NullScriptsName) + Project.load(workspaces).then(project => script.workspace(project).then(() => done())) + }) + +}) diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index 7dd190d..10861e1 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -35,14 +35,9 @@ export abstract class UpdateScript implements Updater { return Promise.resolve() } - protected async npm(basepath: string): Promise { + protected npm(basepath: string): Promise { const filename = path.join(basepath, 'package.json') - - if (await Files.exists(filename)) { - return Files.json(filename) - } - - throw Error(`could not find 'package.json' in ${basepath}`) + return Files.exists(filename).then(() => Files.json(filename)) } protected run(project: Project, command: string, ...args: string[]): Promise { @@ -83,6 +78,7 @@ export abstract class UpdateScript implements Updater { if (data instanceof Buffer) { return format(data.toString().replace('\r', '').split('\n')) } + return format(data.replace('\r', '').split('\n')) } } diff --git a/testables/single/yarn.lock b/testables/single/yarn.lock index d23afa2..ba294e5 100644 --- a/testables/single/yarn.lock +++ b/testables/single/yarn.lock @@ -2,12 +2,6 @@ # yarn lockfile v1 -"@types/chalk@*": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" - dependencies: - chalk "*" - ansi-styles@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" diff --git a/testables/workspaces/.yarnrc b/testables/workspaces/.yarnrc new file mode 100644 index 0000000..ea74ab2 --- /dev/null +++ b/testables/workspaces/.yarnrc @@ -0,0 +1,2 @@ +workspaces-experimental true + diff --git a/testables/workspaces/tsconfig.json b/testables/workspaces/tsconfig.json index b798bc0..ba970d3 100644 --- a/testables/workspaces/tsconfig.json +++ b/testables/workspaces/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { - "types": [] + "types": [ + "chalk" + ] } } \ No newline at end of file From 9c9c390c40f94b361c8b3da6b45bff4b75b59880 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 15:48:38 -0500 Subject: [PATCH 24/39] increasing timeout --- src/Core/Project.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index 695eaad..8cb379c 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -31,7 +31,7 @@ describe('when loading projects', () => { expect(project.children.length).to.equal(0) expect(project.name).to.equal('project-single') expect(project.path).to.equal(directory) - }) + }).timeout(5000) it('should load yarn workspace project', async () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') @@ -39,6 +39,6 @@ describe('when loading projects', () => { expect(project.children.length).to.equal(2) expect(project.children[0].owner).to.not.equal(undefined) expect(project.children[1].owner).to.not.equal(undefined) - }) + }).timeout(5000) }) From 1148b154b986ca7c6b570ca49efeaf9597085c04 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 16:09:29 -0500 Subject: [PATCH 25/39] fix: changing travis --- .npmrc | 1 + .travis.yml | 24 +- package.json | 135 +-- yarn.lock | 3015 ++++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 3027 insertions(+), 148 deletions(-) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..3a13a16 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +//registry.yarnpkg.com/:_authToken=${NPM_TOKEN} diff --git a/.travis.yml b/.travis.yml index 083e691..0a62a55 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,11 @@ -cache: yarn language: node_js +cache: + directories: + - ~/.npm node_js: - node - - '8' - - '6' -os: - - linux -deploy: - provider: npm - email: support@nativecode.com - api_key: - secure: >- - OhNMsrMIkJlReUcs0Zu/0bnnQ0faivy32E2GBhIQt6wM+BaPmPHhvlr2v3846EBGafBQYWlj3IdpKYI1F+/kCgdJnAiY41mNuWUnxjMoNxSUI3rjaTYUsMkPgte7OMGfv1Vlc+qVzRlgaff/NeDjrC3TjDlpSRXzlLDw2zhQPWbqSsTLNhfZqxbanXsUt0cIV6hZsC0Jyo+VAuJ+6OxN8Jo0vehCNY5yvceX/k2J4OgZ4NP/o0m4DH8g6ltUbCmGwtzM1oYsu4KYOHnvPcILRvsJsw2Y72edREjJvpgwU1fHRvniQC+al3UAeW5EPZdaAUvOtb/ZLZAjnXhX1lKzfBO72vBUI1mPKAc/prV1pwokJeFiuLeJomfxAKSFObu1g8HHQhsbg86IT63KQlIdm+FTDRnVdrMV4tGuYudbRrAU38JWes5XRJ6Rx//poMcp5MLdAq9ZzapMjQ9LOEYnxw1oFBxwn7rCP9QcFp60c2GWn6Ury86ZGI2OwrPIq4Uef/X28PS985lePS/+YugiXaeAwmtwgBYZapEPSg08CSBhsj2ORNFUDN/7GkuGryDcMMoP1+BwdgWuUCwzicFh4XiutUw5g9MhNINT5JF3Q84FNgrK+U/Wkw10ARud38q3aSo3U6+WdhqXEZTpU4t5eAGUXmwcQgmF3E0l1Pny6Ls= - on: - branch: master - tag: next - repo: nativecode-dev/chest - skip_cleanup: true after_success: - - npm run coveralls + - npm run semantic-release +branches: + except: + - /^v\d+\.\d+\.\d+$/ diff --git a/package.json b/package.json index 5a30cb6..612e84f 100644 --- a/package.json +++ b/package.json @@ -1,66 +1,69 @@ -{ - "name": "@beard/chest", - "description": "CHEST of me best tools, matey!", - "bin": "./lib/CLI.js", - "license": "MIT", - "main": "./lib/CLI.js", - "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-14", - "dependencies": { - "chalk": "^2.3.0" - }, - "devDependencies": { - "@types/chai": "^4.0.4", - "@types/chai-as-promised": "^7.1.0", - "@types/chalk": "^2.2.0", - "@types/mocha": "^2.2.44", - "@types/node": "^8.0.52", - "bin-shebang": "^1.0.11", - "chai": "^4.1.2", - "chai-as-promised": "^7.1.1", - "coveralls": "^3.0.0", - "cross-env": "^5.1.1", - "mocha": "^4.0.1", - "nyc": "^11.3.0", - "rimraf": "^2.6.2", - "ts-node": "^3.3.0", - "tsconfig-paths": "^2.3.0", - "tslint": "^5.8.0", - "tslint-config-standard": "^7.0.0", - "typescript": "^2.6.1" - }, - "nyc": { - "all": true, - "exclude": [ - "src/**/*.spec.ts", - "src/CLI.ts" - ], - "extension": [ - ".ts" - ], - "include": [ - "src/**/*.ts" - ], - "instrument": true, - "report-dir": ".cache/coverage", - "reporter": "text", - "sourceMap": true, - "temp-directory": ".cache/nyc" - }, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "https://github.com/nativecode-dev/chest" - }, - "scripts": { - "build": "tsc --project tsconfig.json", - "prebuild": "rimraf lib && rimraf artifacts && tslint --project tsconfig.json --config tslint.json", - "postbuild": "bin-shebang", - "test": "cross-env DEBUG= nyc mocha --opts mocha.opts", - "pretest": "yarn run build", - "testonly": "cross-env DEBUG= nyc mocha --opts mocha.opts", - "coveralls": "nyc report --reporter=text-lcov | coveralls" - } -} +{ + "name": "@beard/chest", + "description": "CHEST of me best tools, matey!", + "bin": "./lib/CLI.js", + "license": "MIT", + "main": "./lib/CLI.js", + "typings": "./lib/index.d.ts", + "version": "2.0.0-development", + "dependencies": { + "chalk": "^2.3.0" + }, + "devDependencies": { + "@types/chai": "^4.0.4", + "@types/chai-as-promised": "^7.1.0", + "@types/chalk": "^2.2.0", + "@types/mocha": "^2.2.44", + "@types/node": "^8.0.52", + "bin-shebang": "^1.0.11", + "chai": "^4.1.2", + "chai-as-promised": "^7.1.1", + "coveralls": "^3.0.0", + "cross-env": "^5.1.1", + "mocha": "^4.0.1", + "nyc": "^11.3.0", + "rimraf": "^2.6.2", + "semantic-release-cli": "^3.2.6", + "ts-node": "^3.3.0", + "tsconfig-paths": "^2.3.0", + "tslint": "^5.8.0", + "tslint-config-standard": "^7.0.0", + "typescript": "^2.6.1", + "semantic-release": "^8.2.0" + }, + "nyc": { + "all": true, + "exclude": [ + "src/**/*.spec.ts", + "src/CLI.ts" + ], + "extension": [ + ".ts" + ], + "include": [ + "src/**/*.ts" + ], + "instrument": true, + "report-dir": ".cache/coverage", + "reporter": "text", + "sourceMap": true, + "temp-directory": ".cache/nyc" + }, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/nativecode-dev/chest" + }, + "scripts": { + "build": "tsc --project tsconfig.json", + "prebuild": "rimraf lib && rimraf artifacts && tslint --project tsconfig.json --config tslint.json", + "postbuild": "bin-shebang", + "test": "cross-env DEBUG= nyc mocha --opts mocha.opts", + "pretest": "yarn run build", + "testonly": "cross-env DEBUG= nyc mocha --opts mocha.opts", + "coveralls": "nyc report --reporter=text-lcov | coveralls", + "semantic-release": "semantic-release pre && npm publish && semantic-release post" + } +} diff --git a/yarn.lock b/yarn.lock index fc2d35d..fe14b5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,51 @@ # yarn lockfile v1 +"@semantic-release/commit-analyzer@^3.0.1": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.7.tgz#dc955444a6d3d2ae9b8e21f90c2c80c4e9142b2f" + dependencies: + "@semantic-release/error" "^2.0.0" + conventional-changelog-angular "^1.4.0" + conventional-commits-parser "^2.0.0" + import-from "^2.1.0" + lodash "^4.17.4" + pify "^3.0.0" + +"@semantic-release/condition-travis@^6.0.0": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-6.2.1.tgz#e3421e5bce47f27057d66abad79e432382427982" + dependencies: + "@semantic-release/error" "^2.0.0" + github "^12.0.0" + parse-github-repo-url "^1.4.1" + semver "^5.0.3" + travis-deploy-once "^3.0.0" + +"@semantic-release/error@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.1.0.tgz#44771f676f5b148da309111285a97901aa95a6e0" + +"@semantic-release/last-release-npm@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@semantic-release/last-release-npm/-/last-release-npm-2.0.2.tgz#c91b1ccb48b0d7095b107be6ebc2c0c08bd88c27" + dependencies: + "@semantic-release/error" "^2.0.0" + npm-registry-client "^8.4.0" + npmlog "^4.0.0" + +"@semantic-release/release-notes-generator@^4.0.0": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-4.0.5.tgz#46cc2f16bdb60fe9674bbcd616bfe0f8bb35347c" + dependencies: + "@semantic-release/error" "^2.0.0" + conventional-changelog-angular "^1.4.0" + conventional-changelog-core "^1.9.0" + get-stream "^3.0.0" + import-from "^2.1.0" + lodash "^4.17.4" + pify "^3.0.0" + "@types/chai-as-promised@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9" @@ -26,6 +71,36 @@ version "8.0.52" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.52.tgz#8e7f47747868e7687f2cd4922966e2d6af78d22d" +JSONStream@^1.0.4, JSONStream@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1, abbrev@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +agent-base@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" + dependencies: + extend "~3.0.0" + semver "~5.0.1" + +agent-base@4, agent-base@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.1.2.tgz#80fa6cde440f4dcf9af2617cf246099b5d99f0c8" + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.3.0.tgz#6d5de5829afd3be2712201a39275fd11c651857c" + dependencies: + humanize-ms "^1.2.1" + ajv@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" @@ -47,11 +122,21 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-regex@^3.0.0: +ansi-regex@^3.0.0, ansi-regex@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" @@ -65,6 +150,14 @@ ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + +ansistyles@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" + any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -75,10 +168,21 @@ append-transform@^0.4.0: dependencies: default-require-extensions "^1.0.0" -archy@^1.0.0: +aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +archy@^1.0.0, archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" @@ -95,6 +199,14 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -103,6 +215,10 @@ arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -111,6 +227,10 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + assertion-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" @@ -119,15 +239,25 @@ async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@^2.0.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.6.0: +aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" @@ -139,7 +269,31 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-generator@^6.18.0: +babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" dependencies: @@ -152,20 +306,391 @@ babel-generator@^6.18.0: source-map "^0.5.6" trim-right "^1.0.1" +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: babel-runtime "^6.22.0" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-env@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0: +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -175,7 +700,7 @@ babel-template@^6.16.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.26.0: +babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -189,7 +714,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.26.0: +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -206,6 +731,12 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base32@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/base32/-/base32-0.0.6.tgz#79038bcb5aec2d8f22bcc1c28402924f50a6d2ac" + dependencies: + optimist ">=0.1.0" + bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -216,6 +747,28 @@ bin-shebang@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/bin-shebang/-/bin-shebang-1.0.11.tgz#296dd2b8229518f35db1a0aeaf663b0454b350c6" +bl@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + dependencies: + readable-stream "~2.0.5" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.6, bluebird@^3.5.0, bluebird@~3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -228,6 +781,18 @@ boom@5.x.x: dependencies: hoek "4.x.x" +boxen@^1.0.0, boxen@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.2.tgz#3f1d4032c30ffea9d4b02c322eaf2ea741dcbce5" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^1.0.0" + brace-expansion@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" @@ -247,10 +812,75 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" +browserslist@^2.1.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.1.tgz#b72d3982ab01b5cd24da62ff6d45573886aff275" + dependencies: + caniuse-lite "^1.0.30000770" + electron-to-chromium "^1.3.27" + builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + +cacache@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.1.tgz#3e05f6e616117d9b54665b1b20c8aeb93ea5d36f" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^5.0.0" + unique-filename "^1.1.0" + y18n "^3.2.1" + +cacache@^9.2.9: + version "9.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.3.0.tgz#9cd58f2dd0b8c8cacf685b7067b416d6d3cf9db1" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^4.1.6" + unique-filename "^1.1.0" + y18n "^3.2.1" + +cacache@~9.2.9: + version "9.2.9" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.2.9.tgz#f9d7ffe039851ec94c28290662afa4dd4bb9e8dd" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^4.1.6" + unique-filename "^1.1.0" + y18n "^3.2.1" + caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -259,14 +889,41 @@ caching-transform@^1.0.0: mkdirp "^0.5.1" write-file-atomic "^1.1.4" +call-limit@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^4.1.0: +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +caniuse-lite@^1.0.30000770: + version "1.0.30000770" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000770.tgz#bc8e7f50b073273390db6ab357378909a14e9bdb" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -295,7 +952,7 @@ chai@^4.1.2: pathval "^1.0.0" type-detect "^4.0.0" -chalk@*, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: +chalk@*, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -303,7 +960,7 @@ chalk@*, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -313,10 +970,45 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chardet@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.0.tgz#0bbe1355ac44d7a3ed4a925707c4ef70f8190f6c" + check-error@^1.0.1, check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" +chownr@^1.0.1, chownr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +cidr-regex@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-1.0.6.tgz#74abfd619df370b9d54ab14475568e97dd64c0c1" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-table2@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/cli-table2/-/cli-table2-0.2.0.tgz#2d1ef7f218a0e786e214540562d4bd177fe32d97" + dependencies: + lodash "^3.10.1" + string-width "^1.0.1" + optionalDependencies: + colors "^1.1.2" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -333,6 +1025,17 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + +cmd-shim@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -351,6 +1054,17 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +colors@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +columnify@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -365,19 +1079,130 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +compare-func@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@~1.1.11, config-chain@~1.1.8: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +conventional-changelog-angular@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.2.tgz#2b38f665fe9c5920af1a2f82f547f4babe6de57c" + dependencies: + compare-func "^1.3.1" + q "^1.4.1" + +conventional-changelog-core@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.3.tgz#2899fe779389a329f0ec4b2746c36ddefb98da2d" + dependencies: + conventional-changelog-writer "^2.0.2" + conventional-commits-parser "^2.0.1" + dateformat "^1.0.12" + get-pkg-repo "^1.0.0" + git-raw-commits "^1.3.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^1.2.3" + lodash "^4.0.0" + normalize-package-data "^2.3.5" + q "^1.4.1" + read-pkg "^1.1.0" + read-pkg-up "^1.0.1" + through2 "^2.0.0" + +conventional-changelog-writer@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-2.0.2.tgz#b5857ded1b001daf9a78b9cd40926f45c134949b" + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^1.1.0" + dateformat "^1.0.11" + handlebars "^4.0.2" + json-stringify-safe "^5.0.1" + lodash "^4.0.0" + meow "^3.3.0" + semver "^5.0.1" + split "^1.0.0" + through2 "^2.0.0" + +conventional-commits-filter@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.0.tgz#1fc29af30b5edab76f54e229c411b0c663d0f9eb" + dependencies: + is-subset "^0.1.1" + modify-values "^1.0.0" + +conventional-commits-parser@^2.0.0, conventional-commits-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.0.1.tgz#1f15ce6b844f7ca41495c8190c0833c30b8b1693" + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.0" + lodash "^4.2.1" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + trim-off-newlines "^1.0.0" + convert-source-map@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" -core-js@^2.4.0: +convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +core-js@^2.4.0, core-js@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" -core-util-is@1.0.2: +core-util-is@1.0.2, core-util-is@^1.0.1, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -391,6 +1216,12 @@ coveralls@^3.0.0: minimist "^1.2.0" request "^2.79.0" +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + cross-env@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74" @@ -413,60 +1244,126 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" dependencies: boom "5.x.x" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + dependencies: + number-is-nan "^1.0.0" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" +dateformat@^1.0.11, dateformat@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" +debug@2, debug@^2.2.0, debug@^2.4.1, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" -decamelize@^1.0.0, decamelize@^1.1.1: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + deep-eql@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" dependencies: type-detect "^4.0.0" +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" dependencies: strip-bom "^2.0.0" +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" dependencies: repeating "^2.0.0" +detect-indent@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + +dezalgo@^1.0.0, dezalgo@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + dependencies: + asap "^2.0.0" + wrappy "1" + diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -482,18 +1379,87 @@ doctrine@^0.7.2: esutils "^1.1.6" isarray "0.0.1" +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexify@^3.1.2, duplexify@^3.4.2: + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" dependencies: jsbn "~0.1.0" +editor@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + +electron-to-chromium@^1.3.27: + version "1.3.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + +errno@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" +es6-promise@^4.0.3: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -522,6 +1488,18 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + dependencies: + 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" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -534,10 +1512,24 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -extend@~3.0.1: +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend@3, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -556,6 +1548,12 @@ fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -585,12 +1583,32 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: locate-path "^2.0.0" +flush-write-stream@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +follow-redirects@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-0.0.7.tgz#34b90bab2a911aa347571da90f22bd36ecd8a919" + dependencies: + debug "^2.2.0" + stream-consume "^0.1.0" + +follow-redirects@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf" + dependencies: + debug "^3.1.0" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -601,6 +1619,10 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreachasync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" + foreground-child@^1.5.3, foreground-child@^1.5.6: version "1.5.6" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" @@ -612,6 +1634,14 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +form-data@~1.0.0-rc4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + form-data@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" @@ -620,10 +1650,89 @@ form-data@~2.3.1: combined-stream "^1.0.5" mime-types "^2.1.12" +from2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.10" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + +fs-extra@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-vacuum@~1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + dependencies: + graceful-fs "^4.1.2" + path-is-inside "^1.0.1" + rimraf "^2.5.2" + +fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +fstream@^1.0.0, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +genfun@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" + get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -632,6 +1741,20 @@ get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -642,6 +1765,86 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-config-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" + dependencies: + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + homedir-polyfill "^1.0.0" + +git-head@^1.2.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/git-head/-/git-head-1.20.1.tgz#036d16a4b374949e4e3daf15827903686d3ccd52" + dependencies: + git-refs "^1.1.3" + +git-raw-commits@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.0.tgz#0bc8596e90d5ffe736f7f5546bd2d12f73abaac6" + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-refs@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/git-refs/-/git-refs-1.1.3.tgz#83097cb3a92585c4a4926ec54e2182df9e20e89d" + dependencies: + path-object "^2.3.0" + slash "^1.0.0" + walk "^2.3.9" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.3.tgz#188b453882bf9d7a23afd31baba537dab7388d5d" + dependencies: + meow "^3.3.0" + semver "^5.0.1" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + dependencies: + ini "^1.3.2" + +github-url-from-git@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" + +github@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/github/-/github-11.0.0.tgz#edb32df5efb33cad004ebf0bdd2a4b30bb63a854" + dependencies: + follow-redirects "0.0.7" + https-proxy-agent "^1.0.0" + mime "^1.2.11" + netrc "^0.1.4" + +github@^12.0.0: + version "12.0.5" + resolved "https://registry.yarnpkg.com/github/-/github-12.0.5.tgz#edf37e522546510ae31a58761b93d37b4b397430" + dependencies: + dotenv "^4.0.0" + follow-redirects "1.2.6" + https-proxy-agent "^2.1.0" + lodash "^4.17.4" + mime "^2.0.3" + netrc "^0.1.4" + +github@~0.1.10: + version "0.1.16" + resolved "https://registry.yarnpkg.com/github/-/github-0.1.16.tgz#895d2a85b0feb7980d89ac0ce4f44dcaa03f17b5" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -655,7 +1858,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@7.1.2, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: +glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -666,11 +1869,33 @@ glob@7.1.2, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + 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" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@~4.1.11: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -678,7 +1903,7 @@ growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" -handlebars@^4.0.3: +handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -692,6 +1917,15 @@ har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -713,6 +1947,19 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-unicode@^2.0.0, has-unicode@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -726,20 +1973,50 @@ he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" -homedir-polyfill@^1.0.1: +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: +hosted-git-info@^2.1.4, hosted-git-info@^2.4.2, hosted-git-info@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" +http-cache-semantics@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.0.tgz#1e3ce248730e189ac692a6697b9e3fdea2ff8da3" + +http-proxy-agent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.0.0.tgz#46482a2f0523a4d6082551709f469cb3e4a85ff4" + dependencies: + agent-base "4" + debug "2" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -748,21 +2025,108 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-proxy-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" + dependencies: + agent-base "2" + debug "2" + extend "3" + +https-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz#1391bee7fd66aeabc0df2a1fa90f58954f43e443" + dependencies: + agent-base "^4.1.0" + debug "^2.4.1" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + dependencies: + ms "^2.0.0" + +iconv-lite@^0.4.17, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +iferr@^0.1.5, iferr@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -inflight@^1.0.4: +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" dependencies: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +ini@^1.2.0, ini@^1.3.2, ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +init-package-json@~1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.1.tgz#cd873a167796befb99612b28762a0b6393fd8f6a" + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + +inquirer@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" @@ -773,6 +2137,10 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ip@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -787,6 +2155,12 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-cidr@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-1.0.0.tgz#fb5aacf659255310359da32cae03e40c6a1c2afc" + dependencies: + cidr-regex "1.0.6" + is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -797,7 +2171,7 @@ is-equal-shallow@^0.1.3: dependencies: is-primitive "^2.0.0" -is-extendable@^0.1.1: +is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -827,6 +2201,26 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-my-json-valid@^2.12.4: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -839,6 +2233,16 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -847,10 +2251,36 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" -is-stream@^1.1.0: +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + +is-text-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + dependencies: + text-extensions "^1.0.0" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -867,7 +2297,7 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -936,7 +2366,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.6.1: +js-yaml@^3.3.1, js-yaml@^3.6.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -951,6 +2381,14 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-parse-better-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -959,10 +2397,28 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -972,6 +2428,12 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keytar@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/keytar/-/keytar-4.0.5.tgz#cc1255ef06eeea1a12440b773f7d4a375b048729" + dependencies: + nan "2.5.1" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -984,10 +2446,20 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lazy-property@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -998,6 +2470,19 @@ lcov-parse@^0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" +libnpx@~9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-9.6.0.tgz#c441ddd698b043bd8e8dc78384fa8eb7d77991e5" + dependencies: + dotenv "^4.0.0" + npm-package-arg "^5.1.2" + rimraf "^2.6.1" + safe-buffer "^5.1.0" + update-notifier "^2.2.0" + which "^1.2.14" + y18n "^3.2.1" + yargs "^8.0.2" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -1008,6 +2493,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -1015,10 +2509,129 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash@^4.17.4: +lockfile@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._baseuniq@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + dependencies: + lodash._createset "~4.0.0" + lodash._root "~3.0.0" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._createassigner@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" + dependencies: + lodash._bindcallback "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.restparam "^3.0.0" + +lodash._createset@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.assign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" + dependencies: + lodash._baseassign "^3.0.0" + lodash._createassigner "^3.0.0" + lodash.keys "^3.0.0" + +lodash.clonedeep@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^4.0.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash.union@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + +lodash.uniq@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash.without@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + +lodash@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.16.4, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.3.1.tgz#a4663b53686b895ff074e2ba504dfb76a8e2b770" + log-driver@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" @@ -1033,17 +2646,54 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0" -lru-cache@^4.0.1: +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@~4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" +make-dir@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + dependencies: + pify "^3.0.0" + make-error@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" +make-fetch-happen@^2.4.13, make-fetch-happen@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-2.6.0.tgz#8474aa52198f6b1ae4f3094c04e8370d35ea8a38" + dependencies: + agentkeepalive "^3.3.0" + cacache "^10.0.0" + http-cache-semantics "^3.8.0" + http-proxy-agent "^2.0.0" + https-proxy-agent "^2.1.0" + lru-cache "^4.1.1" + mississippi "^1.2.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^3.0.1" + ssri "^5.0.0" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + md5-hex@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" @@ -1054,12 +2704,31 @@ md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" +meant@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" + mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" dependencies: mimic-fn "^1.0.0" +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + merge-source-map@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" @@ -1088,17 +2757,25 @@ mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" -mime-types@^2.1.12, mime-types@~2.1.17: +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: mime-db "~1.30.0" +mime@^1.2.11: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mime@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" -minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -1108,7 +2785,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.2.0: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -1116,7 +2793,34 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: +minipass@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.1.tgz#5ada97538b1027b4cf7213432428578cb564011f" + dependencies: + yallist "^3.0.0" + +minizlib@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.0.4.tgz#8ebb51dd8bbe40b0126b5633dbb36b284a2f523c" + dependencies: + minipass "^2.2.1" + +mississippi@^1.2.0, mississippi@^1.3.0, mississippi@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^1.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1137,11 +2841,85 @@ mocha@^4.0.1: mkdirp "0.5.1" supports-color "4.4.0" -ms@2.0.0: +modify-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" + +move-concurrently@^1.0.1, move-concurrently@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0, ms@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -normalize-package-data@^2.3.2: +mute-stream@0.0.7, mute-stream@~0.0.4: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" + +nerf-dart@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" + +netrc@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" + +node-fetch-npm@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-gyp@~3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +"nopt@2 || 3", nopt@~3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.0, nopt@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: @@ -1156,12 +2934,209 @@ normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-cache-filename@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + +npm-install-checks@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" + dependencies: + semver "^2.3.0 || 3.x || 4 || 5" + +npm-lifecycle@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-1.0.3.tgz#4cd60543247dbba631281e48ce665ffd52380cce" + dependencies: + graceful-fs "^4.1.11" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.0" + +"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0", "npm-package-arg@^4.0.0 || ^5.0.0", npm-package-arg@^5.1.2, npm-package-arg@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" + dependencies: + hosted-git-info "^2.4.2" + osenv "^0.1.4" + semver "^5.1.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.6, npm-packlist@~1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-pick-manifest@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-1.0.4.tgz#a5ee6510c1fe7221c0bc0414e70924c14045f7e8" + dependencies: + npm-package-arg "^5.1.2" + semver "^5.3.0" + +npm-profile@~2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-2.0.5.tgz#0e61b8f1611bd19d1eeff5e3d5c82e557da3b9d7" + dependencies: + aproba "^1.1.2" + make-fetch-happen "^2.5.0" + +npm-registry-client@^8.4.0, npm-registry-client@^8.5.0, npm-registry-client@~8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.5.0.tgz#4878fb6fa1f18a5dc08ae83acf94d0d0112d7ed0" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + ssri "^4.1.2" + optionalDependencies: + npmlog "2 || ^3.1.0 || ^4.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" dependencies: path-key "^2.0.0" +npm-user-validate@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" + +npm@^5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/npm/-/npm-5.5.1.tgz#5bef2b01c51c8144412d5873caf83e22f1ec6b84" + dependencies: + JSONStream "~1.3.1" + abbrev "~1.1.1" + ansi-regex "~3.0.0" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + aproba "~1.2.0" + archy "~1.0.0" + bluebird "~3.5.0" + cacache "~9.2.9" + call-limit "~1.1.0" + chownr "~1.0.1" + cli-table2 "~0.2.0" + cmd-shim "~2.0.2" + columnify "~1.5.4" + config-chain "~1.1.11" + detect-indent "~5.0.0" + dezalgo "~1.0.3" + editor "~1.0.0" + fs-vacuum "~1.2.10" + fs-write-stream-atomic "~1.0.10" + glob "~7.1.2" + graceful-fs "~4.1.11" + has-unicode "~2.0.1" + hosted-git-info "~2.5.0" + iferr "~0.1.5" + inflight "~1.0.6" + inherits "~2.0.3" + ini "~1.3.4" + init-package-json "~1.10.1" + is-cidr "~1.0.0" + lazy-property "~1.0.0" + libnpx "~9.6.0" + lockfile "~1.0.3" + lodash._baseuniq "~4.6.0" + lodash.clonedeep "~4.5.0" + lodash.union "~4.6.0" + lodash.uniq "~4.5.0" + lodash.without "~4.4.0" + lru-cache "~4.1.1" + meant "~1.0.1" + mississippi "~1.3.0" + mkdirp "~0.5.1" + move-concurrently "~1.0.1" + node-gyp "~3.6.2" + nopt "~4.0.1" + normalize-package-data "~2.4.0" + npm-cache-filename "~1.0.2" + npm-install-checks "~3.0.0" + npm-lifecycle "~1.0.3" + npm-package-arg "~5.1.2" + npm-packlist "~1.1.9" + npm-profile "~2.0.4" + npm-registry-client "~8.5.0" + npm-user-validate "~1.0.0" + npmlog "~4.1.2" + once "~1.4.0" + opener "~1.4.3" + osenv "~0.1.4" + pacote "~6.0.2" + path-is-inside "~1.0.2" + promise-inflight "~1.0.1" + qrcode-terminal "~0.11.0" + query-string "~5.0.0" + qw "~1.0.1" + read "~1.0.7" + read-cmd-shim "~1.0.1" + read-installed "~4.0.3" + read-package-json "~2.0.12" + read-package-tree "~5.1.6" + readable-stream "~2.3.3" + request "~2.83.0" + retry "~0.10.1" + rimraf "~2.6.2" + safe-buffer "~5.1.1" + semver "~5.4.1" + sha "~2.0.1" + slide "~1.1.6" + sorted-object "~2.0.1" + sorted-union-stream "~2.1.3" + ssri "~4.1.6" + strip-ansi "~4.0.0" + tar "~4.0.1" + text-table "~0.2.0" + uid-number "0.0.6" + umask "~1.1.0" + unique-filename "~1.1.0" + unpipe "~1.0.0" + update-notifier "~2.2.0" + uuid "~3.1.0" + validate-npm-package-name "~3.0.0" + which "~1.3.0" + worker-farm "~1.5.0" + wrappy "~1.0.2" + write-file-atomic "~2.1.0" + +npmconf@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/npmconf/-/npmconf-2.1.2.tgz#66606a4a736f1e77a059aa071a79c94ab781853a" + dependencies: + config-chain "~1.1.8" + inherits "~2.0.0" + ini "^1.2.0" + mkdirp "^0.5.0" + nopt "~3.0.1" + once "~1.3.0" + osenv "^0.1.0" + semver "2 || 3 || 4" + uid-number "0.0.5" + +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@~4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -1198,11 +3173,11 @@ nyc@^11.3.0: yargs "^10.0.3" yargs-parser "^8.0.0" -oauth-sign@~0.8.2: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1213,20 +3188,36 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -optimist@^0.6.1: +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +opener@~1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + +optimist@>=0.1.0, optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: minimist "~0.0.1" wordwrap "~0.0.2" -os-homedir@^1.0.1: +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -1238,6 +3229,17 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.0, osenv@^0.1.4, osenv@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -1252,6 +3254,78 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + +p-retry@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-1.0.0.tgz#3927332a4b7d70269b535515117fc547da1a6968" + dependencies: + retry "^0.10.0" + +p-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-series/-/p-series-1.0.0.tgz#7ec9e7b4406cc32066298a6f9860e55e91b36e07" + dependencies: + p-reduce "^1.0.0" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pacote@~6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-6.0.4.tgz#9384c4ca9a9dbbaa625bfbe653e0330eeaa1427b" + dependencies: + bluebird "^3.5.0" + cacache "^9.2.9" + glob "^7.1.2" + lru-cache "^4.1.1" + make-fetch-happen "^2.4.13" + minimatch "^3.0.4" + mississippi "^1.2.0" + normalize-package-data "^2.4.0" + npm-package-arg "^5.1.2" + npm-packlist "^1.1.6" + npm-pick-manifest "^1.0.4" + osenv "^0.1.4" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^4.0.0" + safe-buffer "^5.1.1" + semver "^5.4.1" + ssri "^4.1.6" + tar "^4.0.0" + unique-filename "^1.1.0" + which "^1.3.0" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-git-config@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-1.1.1.tgz#d3a9984317132f57398712bba438e129590ddf8c" + dependencies: + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + git-config-path "^1.0.1" + ini "^1.3.4" + +parse-github-repo-url@^1.0.0, parse-github-repo-url@^1.3.0, parse-github-repo-url@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -1281,14 +3355,25 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-is-inside@^1.0.1, path-is-inside@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +path-object@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/path-object/-/path-object-2.3.0.tgz#03e46653e5c375c60af1cabdd94bc6448a5d9110" + dependencies: + core-util-is "^1.0.1" + lodash.assign "^3.0.0" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" @@ -1301,6 +3386,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -1309,10 +3400,14 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -1329,22 +3424,104 @@ pkg-dir@^1.0.0: dependencies: find-up "^1.0.0" +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +private@^0.1.6, private@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +promise-inflight@^1.0.1, promise-inflight@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + dependencies: + read "1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +protoduck@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-4.0.0.tgz#fe4874d8c7913366cfd9ead12453a22cd3657f8e" + dependencies: + genfun "^4.0.1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b" + dependencies: + duplexify "^3.1.2" + inherits "^2.0.1" + pump "^1.0.0" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qrcode-terminal@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz#ffc6c28a2fc0bfb47052b47e23f4f446a5fbdb9e" + +qs@~6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" +query-string@~5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.0.1.tgz#6e2b86fe0e08aef682ecbe86e85834765402bd88" + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +qw@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -1352,6 +3529,55 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" +rc@^1.0.1, rc@^1.1.6: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-cmd-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + dependencies: + graceful-fs "^4.1.2" + +read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@~2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.12.tgz#68ea45f98b3741cb6e10ae3bbd42a605026a6951" + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.0" + normalize-package-data "^2.0.0" + slash "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@~5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.1.6.tgz#4f03e83d0486856fb60d97c94882841c2a7b1b7a" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + once "^1.3.0" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -1359,7 +3585,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg@^1.0.0: +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0, read-pkg@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" dependencies: @@ -1367,16 +3600,125 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read@1, read@~1.0.1, read@~1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@~1.1.10: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdir-scoped-modules@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: is-equal-shallow "^0.1.3" +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -1395,7 +3737,22 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.79.0: +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + dependencies: + lodash "^4.13.1" + +request-promise@^4.1.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.2.tgz#d1ea46d654a6ee4f8ee6a4fea1018c22911904b4" + dependencies: + bluebird "^3.5.0" + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.3" + +request@2, request@^2.58.0, request@^2.74.0, request@^2.79.0, request@~2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -1422,6 +3779,32 @@ request@^2.79.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +request@~2.74.0: + version "2.74.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc4" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -1430,40 +3813,160 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + resolve@^1.3.2: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: path-parse "^1.0.5" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +retry@^0.10.0, retry@~0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" dependencies: align-text "^0.1.1" -rimraf@^2.3.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@^2.3.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.1: +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -"semver@2 || 3 || 4 || 5", semver@^5.3.0: +semantic-release-cli@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/semantic-release-cli/-/semantic-release-cli-3.2.6.tgz#f7e550aca974dda217a4de53af3a6fb373c0c4d3" + dependencies: + babel-polyfill "^6.26.0" + babel-preset-env "^1.6.1" + babel-register "^6.26.0" + base32 "0.0.6" + bluebird "^3.4.6" + git-config-path "^1.0.1" + github-url-from-git "^1.4.0" + ini "^1.3.4" + inquirer "^3.3.0" + js-yaml "^3.3.1" + lodash "^4.16.4" + nopt "^4.0.0" + npm "^5.5.1" + npm-registry-client "^8.5.0" + npmlog "^4.0.0" + parse-git-config "^1.1.1" + parse-github-repo-url "^1.0.0" + request "^2.58.0" + request-promise "^4.1.1" + travis-ci "^2.1.1" + update-notifier "^2.3.0" + user-home "^2.0.0" + validator "^9.0.0" + optionalDependencies: + keytar "^4.0.4" + +semantic-release@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-8.2.0.tgz#972aa3a7246065d8a405991005a210e46995d4b6" + dependencies: + "@semantic-release/commit-analyzer" "^3.0.1" + "@semantic-release/condition-travis" "^6.0.0" + "@semantic-release/error" "^2.0.0" + "@semantic-release/last-release-npm" "^2.0.0" + "@semantic-release/release-notes-generator" "^4.0.0" + execa "^0.8.0" + fs-extra "^4.0.2" + git-head "^1.2.1" + github "^11.0.0" + lodash "^4.0.0" + nerf-dart "^1.0.0" + nopt "^4.0.0" + normalize-package-data "^2.3.4" + npmconf "^2.1.2" + npmlog "^4.0.0" + p-series "^1.0.0" + parse-github-repo-url "^1.3.0" + require-relative "^0.8.7" + semver "^5.4.1" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -set-blocking@^2.0.0: +"semver@2 || 3 || 4": + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@~5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +sha@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" + dependencies: + graceful-fs "^4.1.2" + readable-stream "^2.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -1478,17 +3981,56 @@ signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -slide@^1.1.5: +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +smart-buffer@^1.0.13: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" dependencies: hoek "4.x.x" -source-map-support@^0.4.0: +socks-proxy-agent@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + +sorted-object@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + +sorted-union-stream@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" + dependencies: + from2 "^1.3.0" + stream-iterate "^1.1.0" + +source-map-support@^0.4.0, source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: @@ -1529,6 +4071,18 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + dependencies: + through2 "^2.0.2" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -1547,7 +4101,49 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -string-width@^1.0.1: +ssri@^4.1.2, ssri@^4.1.6, ssri@~4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-4.1.6.tgz#0cb49b6ac84457e7bdd466cb730c3cb623e9a25b" + dependencies: + safe-buffer "^5.1.0" + +ssri@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.0.0.tgz#13c19390b606c821f2a10d02b351c1729b94d8cf" + dependencies: + safe-buffer "^5.1.0" + +stealthy-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + +stream-consume@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + +stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-iterate@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" + dependencies: + readable-stream "^2.1.5" + stream-shift "^1.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -1555,14 +4151,24 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.0.0, string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -stringstream@~0.0.5: +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -1572,7 +4178,7 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: +strip-ansi@^4.0.0, strip-ansi@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" dependencies: @@ -1592,7 +4198,13 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" -strip-json-comments@^2.0.0: +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -1618,6 +4230,30 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" +tar@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +tar@^4.0.0, tar@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.0.2.tgz#e8e22bf3eec330e5c616d415a698395e294e8fad" + dependencies: + chownr "^1.0.1" + minipass "^2.2.1" + minizlib "^1.0.4" + mkdirp "^0.5.0" + yallist "^3.0.2" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + test-exclude@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" @@ -1628,16 +4264,71 @@ test-exclude@^4.1.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" +text-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through2@^2.0.0, through2@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2, "through@>=2.2.7 <3", through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +travis-ci@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e" + dependencies: + github "~0.1.10" + lodash "~1.3.1" + request "~2.74.0" + underscore.string "~2.2.0rc" + +travis-deploy-once@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/travis-deploy-once/-/travis-deploy-once-3.0.0.tgz#079f7c2d56472ef8e87d540c9b108bed9d9e1fdd" + dependencies: + chalk "^2.1.0" + p-retry "^1.0.0" + semver "^5.4.1" + travis-ci "^2.1.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -1729,6 +4420,10 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -1737,6 +4432,10 @@ type-detect@^4.0.0: version "4.0.5" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + typescript@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" @@ -1754,7 +4453,100 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uuid@^3.1.0: +uid-number@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.5.tgz#5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e" + +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +umask@^1.1.0, umask@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + +underscore.string@~2.2.0rc: + version "2.2.1" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" + +unique-filename@^1.1.0, unique-filename@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +update-notifier@^2.2.0, update-notifier@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + 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" + +update-notifier@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" + dependencies: + boxen "^1.0.0" + chalk "^1.0.0" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + +uuid@^3.1.0, uuid@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" @@ -1771,6 +4563,16 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" +validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + +validator@^9.0.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/validator/-/validator-9.1.2.tgz#5711b6413f78bd9d56003130c81b47c39e86546c" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -1779,16 +4581,40 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +walk@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.9.tgz#31b4db6678f2ae01c39ea9fb8725a9031e558a7b" + dependencies: + foreachasync "^3.0.0" + +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.4, which@^1.2.9: +which@1, which@^1.2.14, which@^1.2.4, which@^1.2.9, which@^1.3.0, which@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -1801,6 +4627,13 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +worker-farm@~1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" + dependencies: + errno "^0.1.4" + xtend "^4.0.1" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -1808,7 +4641,7 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrappy@1: +wrappy@1, wrappy@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -1820,6 +4653,30 @@ write-file-atomic@^1.1.4: imurmurhash "^0.1.4" slide "^1.1.5" +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.1.0.tgz#1769f4b551eedce419f0505deae2e26763542d37" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -1828,6 +4685,16 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + yargs-parser@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.0.0.tgz#21d476330e5a82279a4b881345bf066102e219c6" @@ -1851,6 +4718,24 @@ yargs@^10.0.3: y18n "^3.2.1" yargs-parser "^8.0.0" +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From 124973b730bb61eda90f899ed88b94946689aa4c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 16:19:45 -0500 Subject: [PATCH 26/39] travis --- .travis.yml | 7 ++++++- testables/workspaces/tsconfig.json | 4 +--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0a62a55..9fd7101 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,13 @@ cache: - ~/.npm node_js: - node + - '8' + - '6' after_success: - - npm run semantic-release + - yarn run semantic-release +before_install: + - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s' + - 'export PATH="$HOME/.yarn/bin:$PATH"' branches: except: - /^v\d+\.\d+\.\d+$/ diff --git a/testables/workspaces/tsconfig.json b/testables/workspaces/tsconfig.json index ba970d3..b798bc0 100644 --- a/testables/workspaces/tsconfig.json +++ b/testables/workspaces/tsconfig.json @@ -1,7 +1,5 @@ { "compilerOptions": { - "types": [ - "chalk" - ] + "types": [] } } \ No newline at end of file From 27d6bdaa978daa79542d56dc915f35a20bd2ccf3 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 16:22:27 -0500 Subject: [PATCH 27/39] travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 9fd7101..ea267a5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ node_js: - '8' - '6' after_success: + - yarn run coveralls - yarn run semantic-release before_install: - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s' From 5069f1f426e669c637f940bcf8172c42caf2fa93 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 16:36:35 -0500 Subject: [PATCH 28/39] fixing tests --- src/Core/Project.spec.ts | 32 ++++++++++++++++-------------- testables/workspaces/tsconfig.json | 4 +++- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index 8cb379c..ce3a054 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -13,6 +13,8 @@ const testables = Files.join(process.cwd(), 'testables') const single = Files.join(testables, 'single') const workspaces = Files.join(testables, 'workspaces') +const TIMEOUT = 10000 + describe('when loading projects', () => { before(() => { @@ -25,20 +27,20 @@ describe('when loading projects', () => { chai.use(chaiAsPromised) }) - it('should load single npm project', async () => { - const directory = Files.join(process.cwd(), 'testables', 'single') - const project = await Project.load(directory) - expect(project.children.length).to.equal(0) - expect(project.name).to.equal('project-single') - expect(project.path).to.equal(directory) - }).timeout(5000) - - it('should load yarn workspace project', async () => { - const directory = Files.join(process.cwd(), 'testables', 'workspaces') - const project = await Project.load(directory) - expect(project.children.length).to.equal(2) - expect(project.children[0].owner).to.not.equal(undefined) - expect(project.children[1].owner).to.not.equal(undefined) - }).timeout(5000) + it('should load single npm project', () => { + return Project.load(single).then(project => { + expect(project.children.length).to.equal(0) + expect(project.name).to.equal('project-single') + expect(project.path).to.equal(single) + }) + }).timeout(TIMEOUT) + + it('should load yarn workspace project', () => { + return Project.load(workspaces).then(project => { + expect(project.children.length).to.equal(2) + expect(project.children[0].owner).to.not.equal(undefined) + expect(project.children[1].owner).to.not.equal(undefined) + }) + }).timeout(TIMEOUT) }) diff --git a/testables/workspaces/tsconfig.json b/testables/workspaces/tsconfig.json index b798bc0..ba970d3 100644 --- a/testables/workspaces/tsconfig.json +++ b/testables/workspaces/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { - "types": [] + "types": [ + "chalk" + ] } } \ No newline at end of file From 7fc0637905613f676cded537c53155154c894402 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 16:40:00 -0500 Subject: [PATCH 29/39] fixing tests --- src/Core/Project.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index ce3a054..6a26fda 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -16,6 +16,7 @@ const workspaces = Files.join(testables, 'workspaces') const TIMEOUT = 10000 describe('when loading projects', () => { + this.timeout(TIMEOUT) before(() => { const script = Registry.get('yarn') From d24e615d0b601d9171559d817e3e26a9422eb10c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 16:54:02 -0500 Subject: [PATCH 30/39] travis --- src/Core/Project.spec.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index 6a26fda..4aa37a5 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -1,5 +1,4 @@ -import 'mocha' - +import * as mocha from 'mocha' import * as chai from 'chai' import * as chaiAsPromised from 'chai-as-promised' @@ -16,9 +15,9 @@ const workspaces = Files.join(testables, 'workspaces') const TIMEOUT = 10000 describe('when loading projects', () => { - this.timeout(TIMEOUT) - before(() => { + before(function (this: mocha.IHookCallbackContext) { + this.timeout(TIMEOUT) const script = Registry.get('yarn') return script.exec(single).then(() => script.exec(workspaces)) }) From 61b16c10d20944a7f20eea53b8a4b5dd19f8b663 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sat, 25 Nov 2017 19:17:28 -0500 Subject: [PATCH 31/39] cleanup --- testables/workspaces/.yarnrc | 1 - testables/workspaces/packages/simple-package/package.json | 4 ++-- testables/workspaces/projects/simple-project/package.json | 4 ++-- testables/workspaces/yarn.lock | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/testables/workspaces/.yarnrc b/testables/workspaces/.yarnrc index ea74ab2..19daaca 100644 --- a/testables/workspaces/.yarnrc +++ b/testables/workspaces/.yarnrc @@ -1,2 +1 @@ workspaces-experimental true - diff --git a/testables/workspaces/packages/simple-package/package.json b/testables/workspaces/packages/simple-package/package.json index 9e426a8..cf97eb8 100644 --- a/testables/workspaces/packages/simple-package/package.json +++ b/testables/workspaces/packages/simple-package/package.json @@ -1,10 +1,10 @@ { "dependencies": { - "chalk": "*" + "chalk": "^2.3.0" }, "description": "project with workspaces", "devDependencies": { - "@types/chalk": "*" + "@types/chalk": "^2.2.0" }, "name": "simple-package", "version": "1.0.0" diff --git a/testables/workspaces/projects/simple-project/package.json b/testables/workspaces/projects/simple-project/package.json index 8900adb..033e8b7 100644 --- a/testables/workspaces/projects/simple-project/package.json +++ b/testables/workspaces/projects/simple-project/package.json @@ -1,10 +1,10 @@ { "dependencies": { - "chalk": "*" + "chalk": "^2.3.0" }, "description": "project with workspaces", "devDependencies": { - "@types/chalk": "*" + "@types/chalk": "^2.2.0" }, "name": "simple-project", "version": "1.0.0" diff --git a/testables/workspaces/yarn.lock b/testables/workspaces/yarn.lock index d23afa2..4ab6260 100644 --- a/testables/workspaces/yarn.lock +++ b/testables/workspaces/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@types/chalk@*": +"@types/chalk@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" dependencies: @@ -14,7 +14,7 @@ ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" -chalk@*: +chalk@*, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: From 4c3ad800ee0167dfcfc4a7b6d2fd2c8d20ea902c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 15:47:57 -0500 Subject: [PATCH 32/39] fixig typings --- package.json | 3 +- src/Core/Actions/Typings.spec.ts | 22 ++++++++ src/Core/Actions/Typings.ts | 88 ++++++++++---------------------- src/Core/ProjectNavigator.ts | 8 +++ testables/single/package.json | 5 +- testables/single/yarn.lock | 8 ++- 6 files changed, 71 insertions(+), 63 deletions(-) create mode 100644 src/Core/Actions/Typings.spec.ts diff --git a/package.json b/package.json index 612e84f..ff63669 100644 --- a/package.json +++ b/package.json @@ -58,11 +58,12 @@ }, "scripts": { "build": "tsc --project tsconfig.json", - "prebuild": "rimraf lib && rimraf artifacts && tslint --project tsconfig.json --config tslint.json", + "prebuild": "rimraf .cache && rimraf lib && rimraf artifacts && tslint --project tsconfig.json --config tslint.json", "postbuild": "bin-shebang", "test": "cross-env DEBUG= nyc mocha --opts mocha.opts", "pretest": "yarn run build", "testonly": "cross-env DEBUG= nyc mocha --opts mocha.opts", + "pretestonly": "yarn run prebuild", "coveralls": "nyc report --reporter=text-lcov | coveralls", "semantic-release": "semantic-release pre && npm publish && semantic-release post" } diff --git a/src/Core/Actions/Typings.spec.ts b/src/Core/Actions/Typings.spec.ts new file mode 100644 index 0000000..08ea121 --- /dev/null +++ b/src/Core/Actions/Typings.spec.ts @@ -0,0 +1,22 @@ +import 'mocha' + +import { expect } from 'chai' +import { Files, Registry } from '../index' + +const testables = Files.join(process.cwd(), 'testables') +const single = Files.join(testables, 'single') +const workspaces = Files.join(testables, 'workspaces') + +describe('when collecting type declarations', () => { + + it('should execute single', () => { + const script = Registry.get('typings') + return script.exec(single) + }) + + it('should execute workspaces', () => { + const script = Registry.get('typings') + return script.exec(workspaces) + }) + +}) diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 162966d..52df3a8 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -11,74 +11,42 @@ interface TsConfig { **/ class Script extends UpdateScript { public static Name = Files.extensionless(__filename) + constructor() { super(Script.Name, UpdaterType.Root) } - public async exec(rootpath: string): Promise { - this.log.task('exec', rootpath) - const project = await Project.load(rootpath) - - if (project === Project.InvalidProject) { - this.log.error(`failed to load any projects at ${rootpath}`) - return - } - - const tsconfig = await project.json('tsconfig.json') - const definitions: string[] = [] - const deps = project.children.map(async child => { - this.log.debug('child project', child.name) - const dependencies = await this.gatherTypeDefinitions(child) - dependencies.forEach(dependency => definitions.push(dependency)) - }) - - return Promise.all(deps) - .then(async () => { - tsconfig.compilerOptions.types = Array.from(new Set(definitions)).sort() - - if (this.testing) { - this.log.task('tsconfig', project.path, JSON.stringify(tsconfig, null, 2)) - } else { - await project.save('tsconfig.json', tsconfig) - this.log.task('tsconfig', project.path) - } - }) + public exec(rootpath: string): Promise { + return Project.load(rootpath) + .then(project => + this.declarations([project, ...project.children]) + .then(typings => this.typings(project, typings)) + ) + .then(() => void (0)) } - private async gatherTypeDefinitions(project: Project): Promise { - const npm = await project.npm - let dependencies: string[] = [] - - if (npm.dependencies) { - dependencies = dependencies.concat(Object.keys(npm.dependencies)) - } - - if (npm.devDependencies) { - dependencies = dependencies.concat(Object.keys(npm.devDependencies)) - } - - const owner = project.owner || project - const modulesPath = Files.join(owner.path, 'node_modules') - - const deps = dependencies.map(async dependency => { - const dependencyPath = Files.join(modulesPath, dependency, 'package.json') - this.log.debug('dependencies', dependencyPath) + private declarations(projects: Project[]): Promise { + return Promise.all(projects.map(project => project.npm)) + .then(npms => npms.map(npm => this.dependencies(npm))) + .then(deps => deps.reduce((previous, current) => previous.concat(current), [])) + .then(deps => Array.from(new Set(deps))) + } - if (await Files.exists(dependencyPath)) { - const npm = await Files.json(dependencyPath) - if (npm.types || npm.typings) { - this.log.debug('found dependency', dependency) - return dependency - } - } else { - this.log.debug('failed to find', dependencyPath) - } - return '' - }) + private dependencies(npm: NPM): string[] { + const deps = Object.keys(npm.dependencies || {}) + const devs = Object.keys(npm.devDependencies || {}) + return Array.from(new Set([...deps, ...devs])) + } - return Promise.all(deps) - .then(values => values.filter(value => value)) - .then(values => Array.from(new Set(values))) + private typings(project: Project, typings: string[]): Promise { + return Promise.all(typings.map(typing => Files.join(project.path, 'node_modules', typing, 'package.json'))) + .then(typings => Promise.all(typings.map(typing => Files.json(typing)))) + .then(npms => npms.filter(npm => npm.types || npm.typings).map(npm => npm.name)) + .then(typings => project.json('tsconfig.json').then(tsconfig => { + tsconfig.compilerOptions.types = typings + return tsconfig + })) + .then(tsconfig => this.testing ? Files.save('tsconfig.json', tsconfig) : Promise.resolve()) } } diff --git a/src/Core/ProjectNavigator.ts b/src/Core/ProjectNavigator.ts index 08942ee..0ce0561 100644 --- a/src/Core/ProjectNavigator.ts +++ b/src/Core/ProjectNavigator.ts @@ -8,10 +8,18 @@ export class ProjectNavigator { this.project = project } + public get js(): Promise { + return this.filterByExtension(this.project.path, '.js') + } + public get json(): Promise { return this.filterByExtension(this.project.path, '.json') } + public get jsx(): Promise { + return this.filterByExtension(this.project.path, '.jsx') + } + public get ts(): Promise { return this.filterByExtension(this.project.path, '.ts') } diff --git a/testables/single/package.json b/testables/single/package.json index 9d2f952..50abe9e 100644 --- a/testables/single/package.json +++ b/testables/single/package.json @@ -1,8 +1,11 @@ { "dependencies": { - "chalk": "*" + "chalk": "^2.3.0" }, "description": "single project", + "devDependencies": { + "@types/chalk": "^2.2.0" + }, "name": "project-single", "version": "1.0.0" } diff --git a/testables/single/yarn.lock b/testables/single/yarn.lock index ba294e5..4ab6260 100644 --- a/testables/single/yarn.lock +++ b/testables/single/yarn.lock @@ -2,13 +2,19 @@ # yarn lockfile v1 +"@types/chalk@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" + dependencies: + chalk "*" + ansi-styles@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: color-convert "^1.9.0" -chalk@*: +chalk@*, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: From 431b29d83402d82b9319b09ff4ad794bc58cdfc8 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 15:51:43 -0500 Subject: [PATCH 33/39] fixing tests --- src/Core/Actions/Typings.spec.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Core/Actions/Typings.spec.ts b/src/Core/Actions/Typings.spec.ts index 08ea121..35e6b68 100644 --- a/src/Core/Actions/Typings.spec.ts +++ b/src/Core/Actions/Typings.spec.ts @@ -1,14 +1,22 @@ -import 'mocha' +import * as mocha from 'mocha' import { expect } from 'chai' import { Files, Registry } from '../index' +const TIMEOUT = 10000 + const testables = Files.join(process.cwd(), 'testables') const single = Files.join(testables, 'single') const workspaces = Files.join(testables, 'workspaces') describe('when collecting type declarations', () => { + before(function (this: mocha.IHookCallbackContext) { + this.timeout(TIMEOUT) + const script = Registry.get('yarn') + return script.exec(single).then(() => script.exec(workspaces)) + }) + it('should execute single', () => { const script = Registry.get('typings') return script.exec(single) From e7770a22b9cf9dc3ade8993fd685483a882359a4 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 15:55:30 -0500 Subject: [PATCH 34/39] fixing tests --- package.json | 2 +- setup-tests.sh | 9 +++++++++ src/Core/Actions/Typings.spec.ts | 10 +--------- src/Core/Project.spec.ts | 8 +------- 4 files changed, 12 insertions(+), 17 deletions(-) create mode 100644 setup-tests.sh diff --git a/package.json b/package.json index ff63669..bd66f1d 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "build": "tsc --project tsconfig.json", "prebuild": "rimraf .cache && rimraf lib && rimraf artifacts && tslint --project tsconfig.json --config tslint.json", "postbuild": "bin-shebang", - "test": "cross-env DEBUG= nyc mocha --opts mocha.opts", + "test": "sh setup-tests.sh && cross-env DEBUG= nyc mocha --opts mocha.opts", "pretest": "yarn run build", "testonly": "cross-env DEBUG= nyc mocha --opts mocha.opts", "pretestonly": "yarn run prebuild", diff --git a/setup-tests.sh b/setup-tests.sh new file mode 100644 index 0000000..60f2f18 --- /dev/null +++ b/setup-tests.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +cd testables + +cd single +yarn + +cd ..\workspaces +yarn diff --git a/src/Core/Actions/Typings.spec.ts b/src/Core/Actions/Typings.spec.ts index 35e6b68..08ea121 100644 --- a/src/Core/Actions/Typings.spec.ts +++ b/src/Core/Actions/Typings.spec.ts @@ -1,22 +1,14 @@ -import * as mocha from 'mocha' +import 'mocha' import { expect } from 'chai' import { Files, Registry } from '../index' -const TIMEOUT = 10000 - const testables = Files.join(process.cwd(), 'testables') const single = Files.join(testables, 'single') const workspaces = Files.join(testables, 'workspaces') describe('when collecting type declarations', () => { - before(function (this: mocha.IHookCallbackContext) { - this.timeout(TIMEOUT) - const script = Registry.get('yarn') - return script.exec(single).then(() => script.exec(workspaces)) - }) - it('should execute single', () => { const script = Registry.get('typings') return script.exec(single) diff --git a/src/Core/Project.spec.ts b/src/Core/Project.spec.ts index 4aa37a5..27a0bd6 100644 --- a/src/Core/Project.spec.ts +++ b/src/Core/Project.spec.ts @@ -1,4 +1,4 @@ -import * as mocha from 'mocha' +import 'mocha' import * as chai from 'chai' import * as chaiAsPromised from 'chai-as-promised' @@ -16,12 +16,6 @@ const TIMEOUT = 10000 describe('when loading projects', () => { - before(function (this: mocha.IHookCallbackContext) { - this.timeout(TIMEOUT) - const script = Registry.get('yarn') - return script.exec(single).then(() => script.exec(workspaces)) - }) - beforeEach(() => { chai.should() chai.use(chaiAsPromised) From be62d78c1e121211b3cae6002c0b4358826ab401 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 16:00:59 -0500 Subject: [PATCH 35/39] fixing script --- setup-tests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup-tests.sh b/setup-tests.sh index 60f2f18..652437d 100644 --- a/setup-tests.sh +++ b/setup-tests.sh @@ -5,5 +5,6 @@ cd testables cd single yarn -cd ..\workspaces +cd .. +cd workspaces yarn From 2e0ce4b4d1ea61c44363599a285fb45ef0b9c853 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 16:09:06 -0500 Subject: [PATCH 36/39] fixing script --- setup-tests.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/setup-tests.sh b/setup-tests.sh index 652437d..44db0ca 100644 --- a/setup-tests.sh +++ b/setup-tests.sh @@ -1,10 +1,11 @@ #!/bin/bash -cd testables +YARN=`which yarn` -cd single -yarn +cd testables/single +$YARN -cd .. -cd workspaces -yarn +cd ../workspaces +$YARN + +cd.. From 17125cddb4165aa65bfae6e7051510aa46f368a8 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 16:21:20 -0500 Subject: [PATCH 37/39] fixing script --- setup-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup-tests.sh b/setup-tests.sh index 44db0ca..708f971 100644 --- a/setup-tests.sh +++ b/setup-tests.sh @@ -8,4 +8,4 @@ $YARN cd ../workspaces $YARN -cd.. +cd .. From 33b894a942bca1c250f68c420036dbe9e9cd0c27 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Sun, 26 Nov 2017 18:15:07 -0500 Subject: [PATCH 38/39] changing how builds work --- .travis.yml | 26 ++++++++++++++++++-------- deploy.enc | Bin 0 -> 3248 bytes package.json | 9 ++++++--- yarn.lock | 4 ++++ 4 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 deploy.enc diff --git a/.travis.yml b/.travis.yml index ea267a5..5257e9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,27 @@ +cache: yarn language: node_js -cache: - directories: - - ~/.npm node_js: - node - '8' - '6' +os: linux +stages: + - test + - name: deploy + if: (branch = "master" OR branch = "master-lts") AND type != pull_request AND tag IS blank +jobs: + include: + - stage: deploy + script: + - yarn run travis-ssh + - 'git remote set-url origin git@github.com:nativecode-dev/chest.git' + - git checkout $TRAVIS_BRANCH + - 'npm set //registry.npmjs.org/:_authToken "$NPM_TOKEN"' + - yarn run travis-release +after_failure: + - ls -lah --color=auto after_success: - - yarn run coveralls - - yarn run semantic-release + - yarn run travis-coveralls before_install: - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s' - 'export PATH="$HOME/.yarn/bin:$PATH"' -branches: - except: - - /^v\d+\.\d+\.\d+$/ diff --git a/deploy.enc b/deploy.enc new file mode 100644 index 0000000000000000000000000000000000000000..39f9eec180306653ca2244a11a302dbd461094fa GIT binary patch literal 3248 zcmV;h3{Ufr>$`(FtySfRaGA$=a2VuA6@nJh!Pwe3_5YsJe(|P|{!4%L%rlS*Az9@6 zo-Tkzc(wK4&Aa{(p){Gw7Me?KQ}YTJkk&CaWPqXsF&G#87i zWbI^i@f7m)9Paw#bfv+g8T+qUPHkaZXbM#r&-p*K2AXn1x276DjNowt1LV1k5{&%C z40*`rtRZ|?G0Hk+hiwA0$3P4`iB!EGW(I#j6`>=mxP9VMAo9xMD=!yX z;O9_)!VU9P47;rkU(OHgAirZ5NB8qyU~bFyI;UEWr|t%sBso*qmUP|}KDOmn@nuGA zp*qbQ>>65{*?>iTBWqB3sZ>3u`n5D9M8d1Ip){S4-eqKvY4htTA0Uyw^!_xjprmXr zK#13$!#_G$e*zv>!gxD;i%JNQGfHqg<=Jg##{cQLCG2>}uw$YU-L#8h^_*Qf`vTi=%1&EZ{DNdU)_*jF^Tcxi=wyuL6!0b68 z*9e+As_dvOe=(A5s1OgcFuFI*lAcNE-BMjL1vRqhL)Xh`FEQ=e)&6NFoJwJ-@0jKD z#yW%72uvNlM7UYljG-@S8&68cumXH&ga=cJGb=p7{1A!vCP#W86aK2qET2IBK#MG-|Lei=LQO0a< z#H-SPYefxZ`#XMWvMTRwvSQmVtJBQvHB~=*#%~C);ho++Ps!cjN&2npml-x%4(|YB z2m!byE2ZSF3PhFD!gmVW3TFGvcqbZ3BNqh($C1)4PD)A!jh%5Y}yC9l3))M0VAIm^8TWfnwCM%&g|g@=D*uZ=0wg zGyN0-sS+bAhP8SuuXO5>9uFA)&W;IYdZosejd{*1Nw}-=G22J1=^Ze76mL+40WU*W z8rVgrN>_CDY`T9)j826CW?1g*;?oXOw{U#wFlo{d4@@9Zk&q6=Ch!ZWi?xUFGM*J& z-ye!y#ReZiDTO)!O?&mK6%y9|E5#B5%R)GiqaNk1rA9oz+Ij@k4y0#uMo zuzxIJN&?b!*z=0Y*?#=R8m!}fu}cl=po#PO3DU3PH{SgOR}&`aMFzwE_M}8R0`i2Q zL<+M057rwCH^OoSN*mP^VwDE&Ci+pc4>`CjqdOkUa&NzD9B+KA{#Hw$MFd{cNe!lW z@wUIcZF&EGpOhvf&AHh-_rE>g*}?BW{ZbS0WFDqCkaC7+w@Op>=Lf zZJFKEX1!a^oF%QGBK$RMD)1et1t$u^(m&AWDWRe$=G|8Ek~lq%l1U4=M-=iSC7F)sxEfw5+S~fm$GVQ){>pa zh{YnbNZF2CekCN`<*)Q_v!bvn_y}Q@4Gr(5nsbK*VT~7j8pI>Rew5;#NuXBi?U+N? zoMUq3CFYfR+M;#1K#1~Raz>yTbyHfe;9{Y!V9r{_oU+2o8{`-4OC2^po;o%qk8eJ+ zdcI4t9VgI@q5CzvYhr3$irXj;4E?}$42lm%Yw{JHpx=_cc#)lGxwc;N-BDDrxo!%l?~2j-v3tAR$)4R-}>*Xcw21;vAE5jq2N~!6_NIrdzElDyHD1O2 z&wOWO;p4iBoTko`cMeKYD=vtWEYewe30o3+rTQO{L2C_+cH9eQY|^0@@$b@y-Y7+c zdQ?F&=l!rppLn`Nd;|)F)J!@_!<{(ihIB%^HL`GUw?rcvk`dUYEjHQqynLdgQLFiO zUqt_j%UX0lX)JHEHG!o(u|N;WmoV_-vY+K2*vdrm^S>*y#(U93ppe|tkt>S%{8L|9 zy@Ps9Cu&2Z*yCJx6Wraau3#XVU!lpE*{C{U$8xZN^k?9ug>vY7yz#3!{|n`6wKRbs z*qp2n!2z=3jA}w;pQRSO){ z&WcM0W`eVc_Rio<7#yl_@V0@)ktcEfE!~rQlz6&|5hrR`6BfJcobgrW|NrC`dr0O- zwVVxGYlH*|IdQHM9mk2?BHal2&E`Ye1na`BIQmRMGOx8GKFs!c@)v~G~)irUjLdI zx(@UM+u#o$Pt*Ctr(d4xkGV={rh$2aVo@SPhsJ9Z&UIp@cC7|Yk&U)J?!SB4bpr{9 z2!|&ZP5J7Fibl=grM%V>Yh_c~Xw3Vi{^Npiy&Rc1X&h>?zw32nEX#kCGi@-4d7b=m zP!?eBys%ZCXTRkh`w-kxD(70{1!O6jX8_6yiz8rxj>8)|BN|o_lb;;4WRC%;YNc%XB&6prfq^y`;vfisaeYqC%n@7$W(v zC~K;uUVyw`@fyd~ws4nID(3z-2c*@3{-?px9{U!+Kbd3Mx%RcCbZ9c=7BLc12`R?G z8SN6mQY@ocM;rVZ4673VZBC;W`U~flO~3i-aceR;61t~&?upQ3%Fb-|qf^+&*mIdS zpt-r(b4Y_}&_a(y*) ztOj!tOhAaH)@7ksNd*~ASI9OE^!!FI)xKMzR_)7qp3um#bLoF%RdO14#H;>d_HK1u-tMUL#@?SY`C5P6svlqKVe&P(;mQUvwh<9>d zg(ZFB4a)wc*_G6(;mf3xSIS{B6kV;``>q`K)ZlR-tZskq1JnJ3 z#myD;RoxZOYX}UpC^-62Oz~vqjLd>lICo^Icv(fMjfcFe@T-UB`68ILn>fQ+wNf4m zXTv{8g#Q+-ozvJWfn&Otg4o!2=Jo6iXEOaUhav-|1&6mG23{nWEwY{KDNmE`6}?>6 i_!)fFL!Gi_e67_to`ED42PKeC6Y`q{M>aB Date: Sun, 26 Nov 2017 18:19:36 -0500 Subject: [PATCH 39/39] first new release --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5257e9f..a06a2c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ os: linux stages: - test - name: deploy - if: (branch = "master" OR branch = "master-lts") AND type != pull_request AND tag IS blank + if: (branch = "master") AND type != pull_request AND tag IS blank jobs: include: - stage: deploy