diff --git a/docs/project-scaffolds/sls-service.md b/docs/project-scaffolds/sls-service.md new file mode 100644 index 0000000..98aeb8f --- /dev/null +++ b/docs/project-scaffolds/sls-service.md @@ -0,0 +1,33 @@ +# Project Scaffold: "luke:sls-service" ([source](../../generators/sls-service/index.js)) + +A [project scaffold](../project-scaffolds.md) that can be used to create or +recreate a basic Serverless service project (C2C Style). + +This scaffold includes everything that the [module scaffold](module.md) includes +as well as many additional [partials](../partials.md) for Serverless development. + +## Usage Example + +``` +$ yo luke:sls-service +``` + +## Included Partials + +The following [partials](../partials.md) are included when this +[project scaffold](../project-scaffolds.md) is used/specified: + +* .. todo .. +* [luke:readme](../partials/readme.md) + +_Note: Additional, unlisted, [partials](../partials.md) may be automatically +included as [partial dependencies](../partials.md#partial-dependency)._ + +# Further Reading + +* [Source](../../generators/sls-service/index.js) - The source code for this [project scaffold](../project-scaffolds.md) +* [Project Scaffold Listing](./) - Individual docs for each [project scaffold](../project-scaffolds.md) +* [About Project Scaffolds](../project-scaffolds.md) - Basic information about project scaffolds +* [About Partials](../partials.md) - Information about partials +* [About Sub-Generators](../generators.md) - General information about generators and sub-generators +* [Project README](../README.md) - Basic project information \ No newline at end of file diff --git a/generators/_BaseGenerator.js b/generators/_BaseGenerator.js index e477c1a..8b49b88 100644 --- a/generators/_BaseGenerator.js +++ b/generators/_BaseGenerator.js @@ -74,6 +74,13 @@ module.exports = yeoman.Base.extend( default : "", cacheMode : "prefer-cache", askAgain : false + }, { + type : "input", + name : "projectVersion", + message : "What is the starting version for this project?", + default : "0.1.0", + cacheMode : "prefer-cache", + askAgain : false }, { type : "input", name : "fullName", @@ -102,6 +109,13 @@ module.exports = yeoman.Base.extend( default : me.appname, cacheMode : "prefer-cache", askAgain : false + }, { + type : "input", + name : "copyrightHolder", + message : "Who is the intellectual property rights holder for this project?", + default : "", + cacheMode : "prefer-cache", + askAgain : false } ]; diff --git a/generators/js/index.js b/generators/js/index.js index d4cd274..a9da7e3 100644 --- a/generators/js/index.js +++ b/generators/js/index.js @@ -23,6 +23,32 @@ module.exports = baseGenerator.extend( }, + default : { + + createSharedMetaObjects: function() { + + var me = this; + + // You can't trust a man that doesn't lodash.. + me._createSharedObject( + "npm-dependency", "lodash", { + module : "lodash", + version : "^4.17.4" + } + ); + + // .. and everyone needs a BlueBird. + me._createSharedObject( + "npm-dependency", "bluebird", { + module : "bluebird", + version : "^3.3.5" + } + ); + + } + + }, + writing : { createPartialFiles : function() { @@ -33,7 +59,12 @@ module.exports = baseGenerator.extend( me.fs.copy( me.templatePath( "core/_eslintrc" ), me.destinationPath( ".eslintrc" ) ); - + + // typedefs.js + me.fs.copy( + me.templatePath( "core/_typedefs.js" ), me.destinationPath( "typedefs.js" ) + ); + } } diff --git a/generators/mocha/index.js b/generators/mocha/index.js index 78be8e0..cad0308 100644 --- a/generators/mocha/index.js +++ b/generators/mocha/index.js @@ -46,8 +46,32 @@ module.exports = baseGenerator.extend( me._createSharedObject( "script", "test.sh", { name : "test", - src : "core/scripts/_mocha-exec-tests.sh", - dest : "scripts/test.sh" + src : "core/scripts/test/_run-unit-tests.sh", + dest : "scripts/test/run-unit-tests.sh" + } + ); + + // Add Mocha as a devDependency + me._createSharedObject( + "npm-dev-dependency", "mocha", { + module : "mocha", + version : "^2.4.5" + } + ); + + // Chai is also a given .. + me._createSharedObject( + "npm-dev-dependency", "chai", { + module : "chai", + version : "^3.5.0" + } + ); + + // Tipe is also useful in unit tests .. + me._createSharedObject( + "npm-dev-dependency", "tipe", { + module : "tipe", + version : "^0.1.12" } ); @@ -61,6 +85,16 @@ module.exports = baseGenerator.extend( var me = this; + // scripts/test/_test-and-wait.sh + me.fs.copy( + me.templatePath( "core/scripts/test/_test-and-wait.sh" ), me.destinationPath( "scripts/test/_test-and-wait.sh" ) + ); + + // Since the unit testing setup for various projects + // can be radically different, I am disabling the testing + // scaffold, below, in favor of project-type-specific scaffolds. + + /* // test/index.js me.fs.copy( me.templatePath( "core/test/_mocha-index.js" ), me.destinationPath( "test/index.js" ) @@ -70,6 +104,7 @@ module.exports = baseGenerator.extend( me.fs.copy( me.templatePath( "core/test/lib/_util.js" ), me.destinationPath( "test/lib/util.js" ) ); + */ } diff --git a/generators/package/index.js b/generators/package/index.js index 0793d61..e0d190a 100644 --- a/generators/package/index.js +++ b/generators/package/index.js @@ -27,7 +27,7 @@ module.exports = baseGenerator.extend( me._showPrompts( // Prompts from the base generator - [ "projectName", "projectDesc", "fullName", "emailAddress", "githubOwner", "gitRepoName" ], + [ "projectName", "projectDesc", "projectVersion", "fullName", "emailAddress", "githubOwner", "gitRepoName" ], // Additional, custom, prompts [], @@ -70,12 +70,17 @@ module.exports = baseGenerator.extend( // Build package.json var pkg = { name : me.props.parsedProject, - version : "0.1.0", + version : me.props.projectVersion, description : me.props.projectDesc, main : "lib/index.js", license : licenseString, repository : "https://github.com/" + me.props.parsedGitHubOwner + "/" + me.props.parsedRepoName, - author : [ + author : { + name : me.props.fullName, + email : me.props.emailAddress, + url : "" + }, + contributors : [ { name : me.props.fullName, email : me.props.emailAddress, @@ -85,8 +90,7 @@ module.exports = baseGenerator.extend( publishConfig : { registry : "https://registry.npmjs.org/" }, - keywords : [ - ] + keywords : [] }; // Check to see if this composition includes "scripts" diff --git a/generators/proprietary-license/index.js b/generators/proprietary-license/index.js new file mode 100644 index 0000000..6e8fea6 --- /dev/null +++ b/generators/proprietary-license/index.js @@ -0,0 +1,59 @@ +/** + * This is a "partial" sub-generator that attaches a proprietary license. + * + * @example + * shell> yo luke:proprietary-license + * + * @author Luke Chavers + * @created 2017-08-31 + */ + +var yeoman = require( "yeoman-generator" ); +var baseGenerator = require("../_BaseGenerator"); + +module.exports = baseGenerator.extend( + { + + prompting : function() { + + // Locals + var me = this; + + // Initialize the base generator + me._initBase(); + + // Show user prompts + me._showPrompts( + + // Prompts from the base generator + ["copyrightHolder"], + + // Additional, custom, prompts + [], + + // Callback function + me.async() + + ); + + }, + + writing : { + + createPartialFiles : function() { + + var me = this; + + // LICENSE.MD + me.fs.copyTpl( + me.templatePath( "core/_PROPRIETARY-LICENSE.md" ), me.destinationPath( "LICENSE.md" ), { + year : new Date().getFullYear(), + owner : me.props.copyrightHolder + } + ); + + } + } + + } +); diff --git a/generators/readme/index.js b/generators/readme/index.js index 918d5da..183728b 100644 --- a/generators/readme/index.js +++ b/generators/readme/index.js @@ -26,7 +26,7 @@ module.exports = baseGenerator.extend( me._showPrompts( // Prompts from the base generator - [ "projectName" ], + [ "projectName", "projectDesc" ], // Additional, custom, prompts [], @@ -46,7 +46,8 @@ module.exports = baseGenerator.extend( // README.md me.fs.copyTpl( me.templatePath( "core/_README.md" ), me.destinationPath( "README.md" ), { - name : me.props.projectName + name : me.props.projectName, + desc : me.props.projectDesc } ); diff --git a/generators/sls-config/index.js b/generators/sls-config/index.js new file mode 100644 index 0000000..5ffb0d7 --- /dev/null +++ b/generators/sls-config/index.js @@ -0,0 +1,165 @@ +/** + * This is a "partial" sub-generator that generates the basic Serverless + * Framework configuration files. + * + * @example + * shell> yo luke:sls-config + * + * @author Luke Chavers + * @created 2016-08-31 + */ + +var yeoman = require( "yeoman-generator" ); +var baseGenerator = require("../_BaseGenerator"); + +module.exports = baseGenerator.extend( + { + prompting : function() { + + // Locals + var me = this; + + // Initialize the base generator + me._initBase(); + + // Show user prompts + me._showPrompts( + + // Prompts from the base generator + ["copyrightHolder", "projectDesc", "fullName", "emailAddress", "gitRepoName", "projectVersion"], + + // Additional, custom, prompts + [{ + type : "input", + name : "awsCustomerId", + message : "What is your AWS customer id?", + default : "0123456789", + cacheMode : "prefer-cache", + askAgain : false + },{ + type : "input", + name : "awsSecurityGroupId", + message : "What AWS security group should this service use?", + default : "sg-0123456", + cacheMode : "prefer-cache", + askAgain : false + },{ + type : "input", + name : "awsSubnetId", + message : "What AWS subnet should this service run on?", + default : "subnet-0123456", + cacheMode : "prefer-cache", + askAgain : false + },{ + type : "input", + name : "awsRegion", + message : "What AWS region should this service run in?", + default : "us-east-1", + cacheMode : "prefer-cache", + askAgain : false + },{ + type : "input", + name : "lambdaRuntime", + message : "Which AWS Lambda run-time should be used?", + default : "nodejs4.3", + cacheMode : "prefer-cache", + askAgain : false + }], + + // Callback function + me.async() + + ); + + /* + "projectName": "sls-service-awards", + "vagrantPortStart": "3090", + "vagrantPortCount": "6", + "projectDesc": "Part of the C2C Microservice Architecture; this services specializes in Models, Resources, and Logic related to awards.", + "fullName": "Luke Chavers", + "emailAddress": "luke@c2cschools.com", + "githubOwner": "c2cs", + "gitRepoName": "sls-service-awards", + "copyrightHolder": "C2C Schools, LLC" + */ + + }, + + writing : { + + createPartialFiles : function() { + + var me = this; + + // serverless.env.yml + me.fs.copyTpl( + me.templatePath( "serverless/_serverless.env.yml" ), me.destinationPath( "serverless.env.yml" ), { + "gitRepoName": me.props.gitRepoName + } + ); + + // serverless.yml + me.fs.copyTpl( + me.templatePath( "serverless/_serverless.yml" ), me.destinationPath( "serverless.yml" ), { + "gitRepoName": me.props.gitRepoName, + "awsCustomerId": me.props.awsCustomerId, + "awsRegion": me.props.awsRegion, + "lambdaRuntime": me.props.lambdaRuntime + } + ); + + // .sls/README.md + me.fs.copy( + me.templatePath( "serverless/_sls/_README.md" ), me.destinationPath( ".sls/README.md" ) + ); + + // .sls/projectConfig.json + me.fs.copyTpl( + me.templatePath( "serverless/_sls/_projectConfig.json" ), me.destinationPath( ".sls/projectConfig.json" ), { + "projectVersion": me.props.projectVersion, + "projectDesc": me.props.projectDesc, + "fullName": me.props.fullName, + "emailAddress": me.props.emailAddress, + "gitRepoName": me.props.gitRepoName + } + ); + + // .sls/projectConfig.yml + me.fs.copyTpl( + me.templatePath( "serverless/_sls/_projectConfig.yml" ), me.destinationPath( ".sls/projectConfig.yml" ), { + "projectVersion": me.props.projectVersion, + "projectDesc": me.props.projectDesc, + "fullName": me.props.fullName, + "emailAddress": me.props.emailAddress, + "gitRepoName": me.props.gitRepoName + } + ); + + // .sls/projectConfig.yml + me.fs.copyTpl( + me.templatePath( "serverless/_sls/_serverless.common.yml" ), me.destinationPath( ".sls/serverless.common.yml" ), { + "awsCustomerId": me.props.awsCustomerId, + "awsSecurityGroupId": me.props.awsSecurityGroupId, + "awsSubnetId": me.props.awsSubnetId + } + ); + + /* + // .gitignore + me.fs.copy( + me.templatePath( "core/_gitignore" ), me.destinationPath( ".gitignore" ) + ); + + // .gitattributes + me.fs.copy( + me.templatePath( "core/_gitattributes" ), me.destinationPath( ".gitattributes" ) + ); + */ + + + } + + } + + } +); diff --git a/generators/sls-deps/index.js b/generators/sls-deps/index.js new file mode 100644 index 0000000..a8c0935 --- /dev/null +++ b/generators/sls-deps/index.js @@ -0,0 +1,73 @@ +/** + * This is a "partial" sub-generator that adds the basic dependencies needed + * to create basic Serverless services. + * + * @example + * shell> yo luke:sls-deps + * + * @author Luke Chavers + * @created 2017-08-31 + */ + +var yeoman = require( "yeoman-generator" ); +var baseGenerator = require("../_BaseGenerator"); + +module.exports = baseGenerator.extend( + { + prompting : function() { + + // Locals + var me = this; + + // Initialize the base generator + me._initBase(); + + }, + + default : { + + createSharedMetaObjects: function() { + + var me = this; + + // Add sls-tools as a dependency + me._createSharedObject( + "npm-dependency", "sls-tools", { + module : "@c2cs/sls-tools", + version : "^0.2.1" + } + ); + + // Also add a number of dev dependencies + me._createSharedObject( + "npm-dev-dependency", "serverless-offline", { + module : "serverless-offline", + version : "^3.14.2" + } + ); + me._createSharedObject( + "npm-dev-dependency", "serverless-apigateway-plugin", { + module : "@c2cs/serverless-apigateway-plugin", + version : "^0.2.9" + } + ); + me._createSharedObject( + "npm-dev-dependency", "serverless-subscription-plugin", { + module : "@c2cs/serverless-subscription-plugin", + version : "latest" + } + ); + me._createSharedObject( + "npm-dev-dependency", "test-helper", { + module : "@c2cs/test-helper", + version : "^0.2.1" + } + ); + + + } + + } + + } +); diff --git a/generators/sls-endpoints-dir/index.js b/generators/sls-endpoints-dir/index.js new file mode 100644 index 0000000..484af47 --- /dev/null +++ b/generators/sls-endpoints-dir/index.js @@ -0,0 +1,54 @@ +/** + * This is a "partial" sub-generator that generates a [basically] empty + * `/endpoints` directory. For the most part, this generator is used by other + * generators (such as the sls-service generator), to ensure that the + * `/endpoints` directory exists. + * + * @example + * shell> yo luke:sls-endpoints-dir + * + * @author Luke Chavers + * @created 2016-08-31 + */ + +var yeoman = require( "yeoman-generator" ); +var baseGenerator = require("../_BaseGenerator"); + +module.exports = baseGenerator.extend( + { + prompting : function() { + + // Locals + var me = this; + + // Initialize the base generator + me._initBase(); + + }, + + // Note: This generator intentionally uses the "default" priority, + // instead of the typical "writing" priority, so that it is executed + // and its files are created before others that depend on them. + // - See: http://yeoman.io/authoring/running-context.html + default : { + + createPartialFiles: function() { + + var me = this; + + // We only need to create these files once.. + if( me._hasRunBefore() ) { + return; + } + + // endpoints/README.md + me.fs.copy( + me.templatePath( "serverless/endpoints/_README.md" ), me.destinationPath( "endpoints/README.md" ) + ); + + } + + } + + } +); diff --git a/generators/sls-service/index.js b/generators/sls-service/index.js new file mode 100644 index 0000000..5576632 --- /dev/null +++ b/generators/sls-service/index.js @@ -0,0 +1,122 @@ +/** + * This is a "project scaffold" sub-generator that generates a project scaffold + * for a Serverless service (c2c style). + * + * @example + * shell> yo luke:sls-service + * + * @author Luke Chavers + * @created 2017-08-31 + */ + +var yeoman = require( "yeoman-generator" ); + +module.exports = yeoman.generators.Base.extend({ + + initializing : function() { + + // Locals + var me = this; + + // Compose + me.composeWith("luke:package"); + me.composeWith("luke:sls-config"); + me.composeWith("luke:sls-endpoints-dir"); + me.composeWith("luke:sls-deps"); + me.composeWith("luke:proprietary-license"); + me.composeWith("luke:readme"); + me.composeWith("luke:js"); + me.composeWith("luke:editor"); + //me.composeWith("luke:npm"); + me.composeWith("luke:git"); + //me.composeWith("luke:vagrant"); + me.composeWith("luke:sls-tests"); + me.composeWith("luke:scripts"); + //me.composeWith("luke:bower"); + //me.composeWith("luke:travis-grits"); + + //README.md + + }, + + configuring: function() { + this.log(" "); + } + +}); + + +/* + +IMMEDIATE: +[X] /.sls (dir) +[X] /.sls/projectConfig.json +[X] /.sls/projectConfig.yml +[X] /.sls/serverless.common.yml +[X] /.sls/README.md +[X] /endpoints (dir) +[X] /endpoints/README.md +[X] /scripts (dir) +[X] /scripts/test (dir) +[X] /scripts/test/_test-and-wait.sh +[X] /scripts/test/run-unit-tests.sh +[X] /scripts/README.md +[X] /tests (dir) +[X] /tests/lib (dir) +[X] /tests/lib/util.js +[X] /tests/README.md +[X] /LICENSE.md +[ ] /package.json +[X] /serverless.env.yml +[X] /serverless.yml +[X] /typedefs.js + + + +DEFERRED: +[ ] /README.md +[ ] /.travis.yml +[ ] /auth (dir) +[ ] /auth/README.md +[ ] /env (dir) +[ ] /env/README.md +[ ] /env/vagrant/project (dir) +[ ] /env/vagrant/project/README.md +[ ] /env/vagrant/README.md +[ ] /env/vagrant (dir) +[ ] /env/vagrant/project/pm2-gui (dir) +[ ] /env/vagrant/project/pm2-gui/pm2-gui-config.ini +[ ] /env/vagrant/project/pm2-gui/pm2-run-config.json +[ ] /env/vagrant/project/source-watchers/pm2-run-config.json +[?] /env/vagrant/project/load-credentials.sh +[ ] /env/vagrant/project/sls-devutils.sh +[ ] /env/vagrant/always.sh +[ ] /env/vagrant/github-exec.sh +[ ] /env/vagrant/provision.sh +[ ] /env/vagrant/tmp.sh +[ ] /scripts/deploy-to-dev-stage.sh +[ ] /scripts/pm2-gui-delete.sh +[ ] /scripts/pm2-gui-reload.sh +[ ] /scripts/pm2-gui-restart.sh +[ ] /scripts/pm2-gui-start.sh +[ ] /scripts/pm2-gui-status.sh +[ ] /scripts/pm2-gui-stop.sh +[ ] /scripts/update-devutils.sh +[ ] /scripts/view-logs.sh +[ ] /scripts/watchers-delete.sh +[ ] /scripts/watchers-monitor-logs.sh +[ ] /scripts/watchers-reload.sh +[ ] /scripts/watchers-restart.sh +[ ] /scripts/watchers-start.sh +[ ] /scripts/watchers-status.sh +[ ] /scripts/watchers-stop.sh +[X] /.editorconfig +[X] /.eslintrc +[X] /.gitattributes +[X] /.gitignore +[ ] /Vagrantfile +[ ] /yarn.lock + + + + */ \ No newline at end of file diff --git a/generators/sls-tests/index.js b/generators/sls-tests/index.js new file mode 100644 index 0000000..9c847fd --- /dev/null +++ b/generators/sls-tests/index.js @@ -0,0 +1,65 @@ +/** + * This is a "partial" sub-generator that provides some basic testing + * presets and libraries for unit testing Serverless endpoints. + * + * @example + * shell> yo luke:sls-tests + * + * @author Luke Chavers + * @created 2017-08-31 + */ + +var yeoman = require( "yeoman-generator" ); +var baseGenerator = require( "../_BaseGenerator" ); +var _ = require( "lodash" ); + +module.exports = baseGenerator.extend( + { + + initializing : function() { + + // Locals + var me = this; + + // Compose + me.composeWith("luke:mocha"); + + }, + + prompting : function() { + + // Locals + var me = this; + + // Initialize the base generator + me._initBase(); + + }, + + default : { + + createSharedMetaObjects: function() { + + var me = this; + + } + + }, + + writing : { + + createPartialFiles : function() { + + var me = this; + + // test/lib/util.js + me.fs.copy( + me.templatePath( "serverless/test/lib/_util.js" ), me.destinationPath( "test/lib/util.js" ) + ); + + } + + } + + } +); diff --git a/generators/test-dir/index.js b/generators/test-dir/index.js index bfe65d7..99f7e17 100644 --- a/generators/test-dir/index.js +++ b/generators/test-dir/index.js @@ -45,11 +45,16 @@ module.exports = baseGenerator.extend( me.templatePath( "core/test/_README.md" ), me.destinationPath( "test/README.md" ) ); - // test/fixtures/README.md + // test/lib/README.md me.fs.copy( - me.templatePath( "core/test/fixtures/_README.md" ), me.destinationPath( "test/fixtures/README.md" ) + me.templatePath( "core/test/lib/_README.md" ), me.destinationPath( "test/lib/README.md" ) ); + // test/fixtures/README.md + /*me.fs.copy( + me.templatePath( "core/test/fixtures/_README.md" ), me.destinationPath( "test/fixtures/README.md" ) + );*/ + } } diff --git a/package.json b/package.json index 52a49e3..41ee4cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "generator-luke", - "version": "0.2.4", + "version": "0.3.0", "description": "Luke's Yeoman Generator", "license": "MIT", "repository": "https://github.com/vmadman/generator-luke-common", diff --git a/templates/core/_PROPRIETARY-LICENSE.md b/templates/core/_PROPRIETARY-LICENSE.md new file mode 100644 index 0000000..6aae045 --- /dev/null +++ b/templates/core/_PROPRIETARY-LICENSE.md @@ -0,0 +1,15 @@ +License +--------- + +Copyright (c) <%= year %> <%= owner %>. All Rights Reserved. + +The software herein is NOT open source software. It should not be +distributed, or even viewed, except by parties who have been granted +permission to do so by <%= owner %>, explicitly, in writing, and +who have personally signed a non-disclosure agreement and confidential +information agreement with <%= owner %>. + +This included source code and related resources are owned by +<%= owner %>, who retains any and all intellectual property +rights associated with this work and/or any derivative works to the +fullest extent permitted by law. \ No newline at end of file diff --git a/templates/core/_README.md b/templates/core/_README.md index 165b99e..8147fbd 100644 --- a/templates/core/_README.md +++ b/templates/core/_README.md @@ -1,4 +1,4 @@ <%= name %> ========================================== -Documentation and additional information is on the to-do list... \ No newline at end of file +<%= desc %> \ No newline at end of file diff --git a/templates/core/_editorconfig b/templates/core/_editorconfig index bae8e10..2c0d176 100644 --- a/templates/core/_editorconfig +++ b/templates/core/_editorconfig @@ -1,3 +1,18 @@ +# --------------------------------------- # +# Luke's Universal Editor Config # +# - - - - - - - - - - - - - - - - - - - - # +# Version : 1.1 # +# Author : Luke Chavers # +# Created : Thursday, Aug 31st, 2017 # +# Based On : https://editorconfig.org # +# - - - - - - - - - - - - - - - - - - - - # +# http://git.c2c.local/snippets/4 # +# - - - - - - - - - - - - - - - - - - - - # +# EditorConfig helps developers define # +# and maintain consistent coding styles # +# between different editors and IDEs # +# --------------------------------------- # + # -- General Settings ------------------- # root = true @@ -13,7 +28,19 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true +# -- YAML files ------------------------- # + +[*.yml] +indent_style = space +indent_size = 2 + # -- Markdown Files --------------------- # [*.md] trim_trailing_whitespace = false + +# -- Jade files ------------------------ # + +[*.jade] +indent_style = space +indent_size = 2 diff --git a/templates/core/_eslintrc b/templates/core/_eslintrc index 3481fc0..5cf5230 100644 --- a/templates/core/_eslintrc +++ b/templates/core/_eslintrc @@ -1,40 +1,172 @@ { "env": { "browser": false, - "node": true + "node": true, + "es6": true }, "global-strict": [2, "always"], "rules": { - "no-multi-spaces": 0, - "no-underscore-dangle": 0, + "comma-dangle": 2, + "no-cond-assign": 2, + "no-console": 2, + "no-constant-condition": 2, + "no-control-regex": 2, + "no-debugger": 2, + "no-dupe-args": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-empty-character-class": 2, + "no-empty": 0, + "no-ex-assign": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 2, + "no-extra-semi": 2, + "no-func-assign": 2, + "no-inner-declarations": 2, + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-negated-in-lhs": 2, + "no-obj-calls": 2, + "no-regex-spaces": 2, + "no-sparse-arrays": 2, + "no-unreachable": 2, + "use-isnan": 2, + "valid-jsdoc": 2, + "valid-typeof": 2, + "accessor-pairs": 2, + "block-scoped-var": 2, + "complexity": 2, + "consistent-return": 2, + "curly": 2, + "default-case": 2, + "dot-notation": 2, + "dot-location": 2, "eqeqeq": [2, "smart"], - "no-unused-vars": 0, - "no-mixed-spaces-and-tabs": 2, - "key-spacing": 0, - "one-var": 2, - "comma-style": [2, "last"], + "guard-for-in": 2, + "no-alert": 2, + "no-caller": 2, + "no-div-regex": 2, + "no-else-return": 2, + "no-eq-null": 2, + "no-eval": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-implicit-coercion": 2, + "no-implied-eval": 2, + "no-invalid-this": 2, + "no-iterator": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-loop-func": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-native-reassign": 2, + "no-new-func": 2, + "no-new-wrappers": 2, + "no-new": 2, + "no-octal-escape": 2, + "no-octal": 2, + "no-param-reassign": 0, + "no-process-env": 2, + "no-proto": 2, + "no-redeclare": 2, + "no-return-assign": 2, + "no-script-url": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-throw-literal": 2, + "no-unused-expressions": 2, + "no-useless-call": 2, + "no-useless-concat": 2, + "no-void": 2, + "no-warning-comments": 0, + "no-with": 2, + "radix": 2, + "vars-on-top": 2, + "wrap-iife": 2, + "yoda": 2, + "no-unexpected-multiline": 2, + "no-unused-vars": 2, "no-use-before-define": [2, "nofunc"], - "no-spaced-func": 2, - "func-names": 1, + "no-undef": 2, + "no-delete-var": 2, + "array-bracket-spacing": [2, "always"], + "block-spacing": 2, + "brace-style": 2, + "camelcase": 2, + "comma-spacing": 2, + "comma-style": 2, + "computed-property-spacing": 2, + "consistent-this": [2, "me"], + "eol-last": 2, + "func-names": 2, "func-style": [2, "declaration"], + "id-match": 2, + "indent": [2, "tab"], + "jsx-quotes": 2, + "key-spacing": [ + 2, + { + "beforeColon": true, + "afterColon": true, + "mode": "minimum", + "align": "colon" + } + ], + "lines-around-comment": [2, { + "beforeBlockComment": true, + "beforeLineComment": true + }], + "linebreak-style": 2, + "max-nested-callbacks": 2, + "new-cap": 2, + "new-parens": 2, + "newline-after-var": [2, "always"], + "no-array-constructor": 2, + "no-continue": 2, + "no-inline-comments": 0, "no-lonely-if": 2, - "no-ternary": 2, + "no-mixed-spaces-and-tabs": 2, + "no-multiple-empty-lines": [2, {"max": 1}], "no-nested-ternary": 2, - "space-in-parens": 0, - "dot-notation": 0, - "radix": 2, - "no-fallthrough": 0, - "no-mixed-requires": 0, - "no-process-exit" : 0, - "new-cap" : 0 + "no-new-object": 2, + "no-restricted-syntax": 2, + "no-spaced-func": 2, + "no-trailing-spaces": 2, + "no-underscore-dangle": 0, + "no-unneeded-ternary": 2, + "object-curly-spacing": 2, + "one-var": [2, "never"], + "operator-assignment": 2, + "operator-linebreak": 2, + "padded-blocks": [2, "always"], + "quotes": [2, "double"], + "require-jsdoc": 2, + "semi-spacing": 2, + "semi": 2, + "sort-vars": 2, + "keyword-spacing": 2, + "space-before-blocks": 2, + "space-before-function-paren": 2, + "space-in-parens": [2, "always"], + "space-infix-ops": 2, + "space-unary-ops": 2, + "spaced-comment": 2, + "wrap-regex": 2, + + "max-len": [2, 120, 4, {"ignoreComments": true}] }, "globals": { "tipe" : false, "promise" : false, - "describe" : false, - "it" : false, "expect" : false, - "before" : false, - "g" : true + "g" : true, + "describe": false, + "beforeEach": false, + "before": false, + "afterEach": false, + "it": false } -} +} \ No newline at end of file diff --git a/templates/core/_gitattributes b/templates/core/_gitattributes index 9512caf..f9fccb6 100644 --- a/templates/core/_gitattributes +++ b/templates/core/_gitattributes @@ -1,3 +1,17 @@ +# ------------------------------------------------------------------------- # +# C2C's Universal Git Attributes # +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # +# Version : 1.3 # +# Author : Luke Chavers # +# Created : Monday, Jan 26th, 2015 # +# Updated : Thursday, Aug 31st, 2017 # +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # +# https://gist.github.com/vmadman/07ec686ab53a1378729275a0b42f6ee5 # +# ------------------------------------------------------------------------- # + * text=auto *.sh text eol=lf +*.js text eol=lf +*.css text eol=lf +*.map text eol=lf *.conf text eol=lf diff --git a/templates/core/_gitignore b/templates/core/_gitignore index cff737b..1afd267 100644 --- a/templates/core/_gitignore +++ b/templates/core/_gitignore @@ -1,3 +1,12 @@ +# --------------------------------------- # +# C2C's Universal GIT Ignore File # +# - - - - - - - - - - - - - - - - - - - - # +# Version : 1.2 # +# Author : Luke Chavers # +# Created : Thursday, Aug 31st, 2017 # +# Based On : https://www.gitignore.io # +# - - - - - - - - - - - - - - - - - - - - # + # -- Generic / Misc ----------------------# .tmp @@ -23,6 +32,7 @@ bower_components # -- NPM -------------------------------- # npm-debug.log +npm-debug.log.* # -- Common Editors --------------------- # @@ -35,6 +45,7 @@ nbproject # -- IntelliJ / phpStorm / webStorm ----- # *.iml +.idea .idea/workspace.xml .idea/tasks.xml .idea/dictionaries @@ -51,6 +62,11 @@ dist/bower_components # -- Vagrant ---------------------------- # .vagrant +vagrant-credentials.yml + +# -- Serverless Framework --------------- # + +.serverless # -- Authentication --------------------- # @@ -58,10 +74,12 @@ auth/*.tar.gz # -- Common Patterns -------------------- # +/docs/api *.depr.* */backup/* tmp/ -depr*/ +archive/ # -- Project Specific ------------------- # + diff --git a/templates/core/_typedefs.js b/templates/core/_typedefs.js new file mode 100644 index 0000000..d9868dd --- /dev/null +++ b/templates/core/_typedefs.js @@ -0,0 +1,5 @@ +/** + * This is a place for JsDoc type definitions, which assist IDEs + * and linters by allowing custom type information (that does not fit + * anywhere else) to be defined. + */ \ No newline at end of file diff --git a/templates/core/scripts/_README.md b/templates/core/scripts/_README.md index dc58928..29087d5 100644 --- a/templates/core/scripts/_README.md +++ b/templates/core/scripts/_README.md @@ -1,11 +1,19 @@ -NPM Scripts -========================================== +Project Scripts +=============== -The scripts found in this directory are executed by NPM using the "run-script" -command. For example, a file named `do-something.sh` would be executed in Vagrant SSH, -like so: +This directory contains the "project scripts" for this repository. +Collectively, the project scripts represent just about anything that you +can do to the project and its files at the project level. + +Most (or all) of the project scripts within this directory will have +links in the `package.json` file, allowing you to run them using the +`npm run` command, like so: ``` -> cd /project -> npm run-script do-something +$ cd /project +$ npm run do-something ``` + +You should always try to use the `npm run` command to execute scripts, +instead of executing them directly, because some scripts depend on +the environment variables that are injected by `npm` at run-time. \ No newline at end of file diff --git a/templates/core/scripts/_mocha-exec-tests.sh b/templates/core/scripts/_mocha-exec-tests.sh deleted file mode 100644 index 12c78e7..0000000 --- a/templates/core/scripts/_mocha-exec-tests.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# This script will execute the unit tests for this project. - -echo "" -echo "Running project tests" -echo "---------------------------" -echo "" - -# Ensure proper directory -cd /project - -# Run the tests with the console renderer -mocha - -# Run the tests with the html renderer -#mkdir -p ./doc/tests -#mocha --reporter doc > doc/tests/index.html - diff --git a/templates/core/scripts/test/_run-unit-tests.sh b/templates/core/scripts/test/_run-unit-tests.sh new file mode 100644 index 0000000..476c293 --- /dev/null +++ b/templates/core/scripts/test/_run-unit-tests.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# This script will execute the Mocha unit tests for this project. + +# Resolve a few paths .. +MY_SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +MOCHA_PATH="$MY_SCRIPT_PATH/../../node_modules/mocha/bin" + +# Tell the user what's up.. +echo " " +echo "Running Unit Tests" +echo "------------------" +echo " " + +# Execute Mocha +"/bin/node" "$MOCHA_PATH/mocha" --recursive --timeout 5000 test/*Test.js + +# Add a bit of spacing at the end of the output +echo " " \ No newline at end of file diff --git a/templates/core/scripts/test/_test-and-wait.sh b/templates/core/scripts/test/_test-and-wait.sh new file mode 100644 index 0000000..e1800a5 --- /dev/null +++ b/templates/core/scripts/test/_test-and-wait.sh @@ -0,0 +1,19 @@ +#!/bin/bash + + +# - +# This script is a simple extension of 'run-unit-tests.sh'; all it does is add +# an infinite, blocking, sleep/wait after the tests have run so that the script +# never terminates. The point is to allow execution and source watching via +# PM2 for continuous testing during development. +# +# You should never need to run this script directly. +# - + +# Include (source) local.sh .. +MY_SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source "$MY_SCRIPT_PATH/run-unit-tests.sh" + +# Now we wait .. +echo "-> Tests complete, waiting for source updates .." +sleep infinity diff --git a/templates/core/test/_README.md b/templates/core/test/_README.md index 0f49c28..4174be4 100644 --- a/templates/core/test/_README.md +++ b/templates/core/test/_README.md @@ -1,5 +1,5 @@ Project Testing Files -========================================== +===================== -This directory houses all of the project's testing files (especially unit tests) -and their support example structures and content (fixtures). +This directory houses all of the project's testing files (especially +unit tests) and their support libraries. diff --git a/templates/core/test/lib/_README.md b/templates/core/test/lib/_README.md new file mode 100644 index 0000000..8d733e0 --- /dev/null +++ b/templates/core/test/lib/_README.md @@ -0,0 +1,5 @@ +Project Test Libs +================= + +Libraries and other support files that are shared by multiple test +files should be placed here. \ No newline at end of file diff --git a/templates/serverless/_serverless.env.yml b/templates/serverless/_serverless.env.yml new file mode 100644 index 0000000..b006c9f --- /dev/null +++ b/templates/serverless/_serverless.env.yml @@ -0,0 +1,19 @@ +default_env: &default_env + SLS_DEFAULT_PROJECT: "<%= gitRepoName %>" + MYSQL_HOST: ${env:MYSQL_HOST} + MYSQL_USERNAME: ${env:MYSQL_USERNAME} + MYSQL_PASSWORD: ${env:MYSQL_PASSWORD} + REDIS_HOST: ${env:REDIS_HOST} + REDIS_PORT: ${env:REDIS_PORT} + +dev: + <<: *default_env + SLS_DEFAULT_STAGE: "dev" + +v3: + <<: *default_env + SLS_DEFAULT_STAGE: "v3" + +v4: + <<: *default_env + SLS_DEFAULT_STAGE: "v4" diff --git a/templates/serverless/_serverless.yml b/templates/serverless/_serverless.yml new file mode 100644 index 0000000..3f91533 --- /dev/null +++ b/templates/serverless/_serverless.yml @@ -0,0 +1,20 @@ +service: <%= gitRepoName %> +provider: + name: aws + runtime: <%= lambdaRuntime %> + stage: dev + region: <%= awsRegion %> + environment: '${file(serverless.env.yml):${self:custom.stage}}' + iamRoleStatements: '${file(./.sls/serverless.common.yml):iamRoleStatements}' +plugins: + - serverless-offline + - '@c2cs/serverless-apigateway-plugin' + - '@c2cs/serverless-subscription-plugin' +custom: + stage: '${opt:stage, self:provider.stage}' + subscription-pattern-default: '*' + subscription-target-default: 'arn:aws:kinesis:us-east-1:<%= awsCustomerId %>:stream/CloudWatchLogsToSqs01' + subscription-target-type: direct + subscription-source-default: all + subscription-default-role: 'arn:aws:iam::<%= awsCustomerId %>:role/CWLtoKinesisRole' +functions: diff --git a/templates/serverless/_sls/_README.md b/templates/serverless/_sls/_README.md new file mode 100644 index 0000000..b69c4f7 --- /dev/null +++ b/templates/serverless/_sls/_README.md @@ -0,0 +1,7 @@ +Extended Configs for Serverless +------------------------------- + +This directory contains a number of configuration files for the +[Serverless Framework](http://serverless.com/) that build upon the +configuration data in the `serverless.yml` and `serverless.env.yml` +files in the project root directory. \ No newline at end of file diff --git a/templates/serverless/_sls/_projectConfig.json b/templates/serverless/_sls/_projectConfig.json new file mode 100644 index 0000000..21b95c3 --- /dev/null +++ b/templates/serverless/_sls/_projectConfig.json @@ -0,0 +1,115 @@ +{ + "swagger": "2.0", + "info": { + "version": "<%= projectVersion %>", + "title": "<%= gitRepoName %>", + "description": "<%= projectDesc %>", + "termsOfService": "", + "contact": { + "name": "<%= fullName %>", + "email": "<%= emailAddress %>", + "url": "" + }, + "license": { + "name": "EULA" + } + }, + "host": "", + "basePath": "/", + "schemes": [ + "http" + ], + "consumes": [ + "application/vnd.api+json" + ], + "produces": [ + "application/vnd.api+json" + ], + "paths": { + + }, + "definitions": { + "CommonResponse": { + "type": "object", + "required": [ + "meta", + "jsonapi" + ], + "properties": { + "jsonapi": { + "type": "object", + "title": "JSONAPIVersion", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + } + }, + "meta": { + "type": "object", + "title": "MetaData", + "required": [ + "requestId", + "seriesId" + ], + "properties": { + "requestId": { + "type": "string", + "description": "unique UUID of current request" + }, + "seriesId": { + "type": "string", + "description": "persistend UUID of initial request for all calls chain" + } + } + } + } + }, + "ErrorModel": { + "allOf": [ + { + "$ref": "#/definitions/CommonResponse" + }, + { + "required": [ + "errors" + ], + "properties": { + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code", + "title", + "detail", + "url" + ], + "properties": { + "code": { + "type": "string", + "description": "HTTP status code applicable to this problem" + }, + "title": { + "type": "string", + "description": "short, human-readable summary of the problem" + }, + "detail": { + "type": "string", + "description": "human-readable explanation specific to this occurrence of the problem" + }, + "url": { + "type": "string" + } + } + } + } + } + } + ] + } + } +} \ No newline at end of file diff --git a/templates/serverless/_sls/_projectConfig.yml b/templates/serverless/_sls/_projectConfig.yml new file mode 100644 index 0000000..b496891 --- /dev/null +++ b/templates/serverless/_sls/_projectConfig.yml @@ -0,0 +1,76 @@ +swagger: '2.0' +info: + version: '<%= projectVersion %>' + title: '<%= gitRepoName %>' + description: '<%= projectDesc %>' + termsOfService: '' + contact: + name: '<%= fullName %>' + email: '<%= emailAddress %>' + url: '' + license: + name: EULA +host: +basePath: / +schemes: + - http +consumes: + - application/vnd.api+json +produces: + - application/vnd.api+json + +paths: +definitions: + CommonResponse: + type: object + required: + - meta + - jsonapi + properties: + jsonapi: + type: object + title: JSONAPIVersion + required: + - version + properties: + version: + type: string + meta: + type: object + title: MetaData + required: + - requestId + - seriesId + properties: + requestId: + type: string + description: unique UUID of current request + seriesId: + type: string + description: persistend UUID of initial request for all calls chain + ErrorModel: + allOf: + - $ref: '#/definitions/CommonResponse' + - required: ["errors"] + properties: + errors: + type: array + items: + type: object + required: + - code + - title + - detail + - url + properties: + code: + type: string + description: HTTP status code applicable to this problem + title: + type: string + description: short, human-readable summary of the problem + detail: + type: string + description: human-readable explanation specific to this occurrence of the problem + url: + type: string diff --git a/templates/serverless/_sls/_serverless.common.yml b/templates/serverless/_sls/_serverless.common.yml new file mode 100644 index 0000000..42d1ca6 --- /dev/null +++ b/templates/serverless/_sls/_serverless.common.yml @@ -0,0 +1,64 @@ + +iamRoleStatements: + - + Effect: Allow + Action: 'lambda:InvokeFunction' + Resource: 'arn:aws:lambda:us-east-1:<%= awsCustomerId %>:function:*' + - + Effect: Allow + Resource: '*' + Action: + - 'ec2:DescribeInstances' + - 'ec2:CreateNetworkInterface' + - 'ec2:DeleteNetworkInterface' + - 'ec2:AttachNetworkInterface' + - 'ec2:DescribeNetworkInterfaces' + - 'autoscaling:CompleteLifecycleAction' + +vpc: + securityGroupIds: + - <%= awsSecurityGroupId %> + subnetIds: + - <%= awsSubnetId %> + +request: + template: + application/vnd.api+json: | + { + "body": "$util.escapeJavaScript( $input.body )", + "gatewayContext": { + "resource": "$context.resourceId", + "path": "$context.resourcePath", + "httpMethod": "$context.httpMethod", + "sourceIp": "$context.identity.sourceIp", + "user": "$context.identity.user" + }, + #set($allParams = $input.params()) + #foreach($type in $allParams.keySet()) + #set($params = $allParams.get($type)) + "$type" : { + #foreach($paramName in $params.keySet()) + "$paramName" : "$util.escapeJavaScript($params.get($paramName))" + #if($foreach.hasNext),#end + #end + } + #if($foreach.hasNext),#end + #end + } +response: + headers: + X-Series-Id: integration.response.body.meta.seriesUUID + template: "$input.path('$.errorMessage')" + statusCodes: + 200: + template: "$input.body" + 400: + pattern: '.*\"code\":\"400\".*' + 401: + pattern: '.*\"code\":\"401\".*' + 403: + pattern: '.*\"code\":\"403\".*' + 404: + pattern: '.*\"code\":\"404\".*' + 500: + pattern: '.*\"code\":\"500\".*' diff --git a/templates/serverless/endpoints/_README.md b/templates/serverless/endpoints/_README.md new file mode 100644 index 0000000..2ede3c0 --- /dev/null +++ b/templates/serverless/endpoints/_README.md @@ -0,0 +1,5 @@ +Serverless Endpoints +-------------------- + +Herein lies the endpoints for this service, which are Lambda functions, +arranged by resource and HTTP method. \ No newline at end of file diff --git a/templates/serverless/test/lib/_util.js b/templates/serverless/test/lib/_util.js new file mode 100644 index 0000000..0547ca1 --- /dev/null +++ b/templates/serverless/test/lib/_util.js @@ -0,0 +1,121 @@ +/** + * Helper functions/etc for unit tests. + * + * @author Luke Chavers + * @created 2017-07-14 + */ +"use strict"; + + +// Dependencies +let path = require( "path" ); +let Promise = require( "bluebird" ); +let chai = require( "chai" ); +let expect = chai.expect; +let _ = require( "lodash" ); + +// Initialize static utils class +let u = module.exports = { + lodash : _, + chai : chai, + expect : expect, + path : path, + Promise: Promise +}; + + +// + +/** + * A debugging function for outputting a string (usually a multi-line string) + * to STDOUT with line numbers. + * + * @param {string} name A name for the content, for reference.. + * @param {string} content The content to dump + * @returns {void} + */ +u.dbg = function( name, content ) { + + var me = this; + var title = _.padEnd( "---- " + name + " ", 80, "-" ); + + me.bl(2); + me.lg( title ); + me.bl(2); + + var spl = content.split("\n"); + _.each( spl, function( line, index ) { + + var lineNo = (index+1); + var strLineNo = _.padStart( lineNo + "", 5, "0" ); + me.lg(" " + strLineNo + ": " + line); + + }); + + me.bl(2); + +}; + +/** + * A utility function that outputs one or more blank lines to STDOUT. + * + * @param {number} [count=1] The number of blank lines to output + * @returns {void} + */ +u.bl = function( count ) { + + var me = this; + + if( count === undefined || count === null ) { + count = 1; + } else { + count = parseInt( count, 10 ); + } + + if( count < 1 ) { + return; + } + if( count > 100 ) { + count = 100; + } + + _.times( count, function() { + me.lg(" "); + }); + +}; + +/** + * An alias for console.log; this exists in case we wanted + * to insert something special at the lowest possible level. + * + * @param {string} str The string to output to STDOUT + * @returns {void} + */ +u.lg = function( str ) { + console.log(str); +}; + +/** + * Outputs a dividing line to STDOUT. + * + * @returns {void} + */ +u.div = function() { + + var me = this; + me.bl(2); + me.lg("-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~"); + me.bl(2); + +}; + + +// + +u.isISO8601 = function( str ) { + + let regx = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; + return !!str.match( regx ); + +}; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..a84723d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1805 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +acorn-jsx@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-escapes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" + +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: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.0.0, ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +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" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +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-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +ast-query@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ast-query/-/ast-query-2.0.0.tgz#3588e79ad8de07ce50df1e781cc2bda1fd69a453" + dependencies: + acorn-jsx "^3.0.1" + class-extend "^0.1.1" + escodegen-wallaby "^1.6.7" + lodash "^4.6.1" + traverse "^0.6.6" + +async@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + dependencies: + lodash "^4.14.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +"binaryextensions@1 || 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.0.0.tgz#e597d1a7a6a3558a2d1c7241a16c99965e6aa40f" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +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@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +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" + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +cheerio@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.19.0.tgz#772e7015f2ee29965096d71ea4175b75ab354925" + dependencies: + css-select "~1.0.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "^3.2.0" + +class-extend@^0.1.0, class-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/class-extend/-/class-extend-0.1.2.tgz#8057a82b00f53f82a5d62c50ef8cffdec6fabc34" + dependencies: + object-assign "^2.0.0" + +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@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +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-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + 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" + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +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.4.7: + 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" + +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" + +create-error-class@^3.0.0, create-error-class@^3.0.1: + 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-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +css-select@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.0.0.tgz#b1121ca51848dd264e2244d058cee254deeb44b0" + dependencies: + boolbase "~1.0.0" + css-what "1.0" + domutils "1.4" + nth-check "~1.0.0" + +css-what@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-1.0.0.tgz#d7cc2df45180666f99d2b14462639469e00f736c" + +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" + +dargs@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + dependencies: + number-is-nan "^1.0.0" + +dargs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" + +dateformat@^1.0.11: + 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" + +dateformat@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" + +debug@^2.0.0, debug@^2.1.0: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +detect-conflict@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" + +detect-newline@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-1.0.3.tgz#e97b1003877d70c09af1af35bfadff168de4920d" + dependencies: + get-stdin "^4.0.1" + minimist "^1.1.0" + +diff@^2.1.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + +diff@^3.1.0, diff@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" + +dom-serializer@0, dom-serializer@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + +domutils@1.4: + version "1.4.3" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.4.3.tgz#0865513796c6b306031850e175516baf80b72a6f" + dependencies: + domelementtype "1" + +domutils@1.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +editions@^1.1.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.3.tgz#0907101bdda20fac3cbe334c27cbd0688dc99a5b" + +ejs@^2.3.1: + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" + +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +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" + +error@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +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" + +escodegen-wallaby@^1.6.7: + version "1.6.12" + resolved "https://registry.yarnpkg.com/escodegen-wallaby/-/escodegen-wallaby-1.6.12.tgz#dac2ed380daca6c7a2c9e8496d50c091239fe26f" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +extend@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" + dependencies: + extend "^3.0.0" + spawn-sync "^1.0.15" + tmp "^0.0.29" + +external-editor@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.31" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.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" + +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + dependencies: + readable-stream "^2.0.2" + +formatio@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" + dependencies: + samsam "1.x" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +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" + +gh-got@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-2.4.0.tgz#aa51418911ca5e4f92437114cd1209383a4aa019" + dependencies: + got "^5.2.0" + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +gh-got@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-5.0.0.tgz#ee95be37106fd8748a96f8d1db4baea89e1bfa8a" + dependencies: + got "^6.2.0" + is-plain-obj "^1.1.0" + +github-username@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-2.1.0.tgz#200e5a104af42ba08a54096c708d4b6ec2fa256b" + dependencies: + gh-got "^2.2.0" + meow "^3.5.0" + +github-username@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-3.0.0.tgz#0a772219b3130743429f2456d0bdd3db55dce7b1" + dependencies: + gh-got "^5.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globby@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^6.0.1" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^5.2.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +got@^6.2.0: + 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.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +grouped-queue@^0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" + dependencies: + lodash "^4.17.2" + +gruntfile-editor@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/gruntfile-editor/-/gruntfile-editor-1.2.1.tgz#366fc1f93cbf045813e1448aef1da9f18289d5eb" + dependencies: + ast-query "^2.0.0" + lodash "^4.6.1" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +html-wiring@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-wiring/-/html-wiring-1.2.0.tgz#c5f90a776e0a27241dc6df9022c37186d0270f9e" + dependencies: + cheerio "^0.19.0" + detect-newline "^1.0.3" + +htmlparser2@~3.8.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +iconv-lite@^0.4.17: + version "0.4.18" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" + +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: + 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.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inquirer@^1.0.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + external-editor "^1.1.0" + figures "^1.3.5" + lodash "^4.3.0" + mute-stream "0.0.6" + pinkie-promise "^2.0.0" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +inquirer@^3.0.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" + dependencies: + ansi-escapes "^2.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" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +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-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + dependencies: + scoped-regex "^1.0.0" + +is-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +istextorbinary@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.1.0.tgz#dbed2a6f51be2f7475b68f89465811141b758874" + dependencies: + binaryextensions "1 || 2" + editions "^1.1.1" + textextensions "1 || 2" + +jschardet@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.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" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.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" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash@^3.2.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.3.0, lodash@^4.6.1: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +log-symbols@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +lolex@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" + +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: + 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" + +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" + +mem-fs-editor@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-2.3.0.tgz#42a0ae1f55e76fd03f09e7c7b15b6307bdf5cb13" + dependencies: + commondir "^1.0.1" + deep-extend "^0.4.0" + ejs "^2.3.1" + glob "^7.0.3" + globby "^4.0.0" + mkdirp "^0.5.0" + multimatch "^2.0.0" + rimraf "^2.2.8" + through2 "^2.0.0" + vinyl "^1.1.0" + +mem-fs-editor@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" + dependencies: + commondir "^1.0.1" + deep-extend "^0.4.0" + ejs "^2.3.1" + glob "^7.0.3" + globby "^6.1.0" + mkdirp "^0.5.0" + multimatch "^2.0.0" + rimraf "^2.2.8" + through2 "^2.0.0" + vinyl "^2.0.1" + +mem-fs@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" + dependencies: + through2 "^2.0.0" + vinyl "^1.1.0" + vinyl-file "^2.0.0" + +meow@^3.3.0, meow@^3.5.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" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.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" + +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: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +mute-stream@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +nopt@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +nth-check@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.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" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +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" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +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" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-shim@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + +os-tmpdir@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +pad-component@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pad-component/-/pad-component-0.0.1.tgz#ad1f22ce1bf0fdc0d6ddd908af17f351a404b8ac" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +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: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + 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" + +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, pinkie-promise@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +pretty-bytes@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + dependencies: + number-is-nan "^1.0.0" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +process-nextick-args@^1.0.6, 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" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-chunk@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194" + +read-chunk@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" + dependencies: + pify "^3.0.0" + safe-buffer "^5.1.1" + +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" + dependencies: + find-up "^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: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^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" + +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2: + 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" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +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" + +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" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +resolve@^1.1.6: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +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" + +rimraf@^2.2.0, rimraf@^2.2.8, rimraf@^2.4.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +run-async@^2.0.0, 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" + +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" + +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +safe-buffer@^5.0.1, 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" + +samsam@1.x, samsam@^1.1.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" + +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + +"semver@2 || 3 || 4 || 5": + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@^0.7.0: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sinon@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.4.1.tgz#021fd64b54cb77d9d2fb0d43cdedfae7629c3a36" + dependencies: + diff "^3.1.0" + formatio "1.2.0" + lolex "^1.6.0" + native-promise-only "^0.8.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +spawn-sync@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" + dependencies: + concat-stream "^1.4.7" + os-shim "^0.1.2" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +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" + +sprintf-js@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + +string-width@^1.0.0, string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.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" + +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" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.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: + ansi-regex "^3.0.0" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +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" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" + dependencies: + has-flag "^2.0.0" + +taketalk@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/taketalk/-/taketalk-1.0.0.tgz#b4d4f0deed206ae7df775b129ea2ca6de52f26dd" + dependencies: + get-stdin "^4.0.1" + minimist "^1.1.0" + +text-encoding@0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +"textextensions@1 || 2": + version "2.1.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.1.0.tgz#1be0dc2a0dc244d44be8a09af6a85afb93c4dbc3" + +through2@^2.0.0, through2@^2.0.1: + 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.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +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.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + dependencies: + os-tmpdir "~1.0.1" + +tmp@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +underscore.string@^3.0.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +untildify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" + dependencies: + os-homedir "^1.0.0" + +untildify@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +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.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vinyl-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^2.0.0" + vinyl "^1.1.0" + +vinyl@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yeoman-assert@^2.0.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/yeoman-assert/-/yeoman-assert-2.2.3.tgz#a5682a83632c50ac0ee84173a5a10fd6f3206474" + +yeoman-environment@^1.1.0: + version "1.6.6" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-1.6.6.tgz#cd85fa67d156060e440d7807d7ef7cf0d2d1d671" + dependencies: + chalk "^1.0.0" + debug "^2.0.0" + diff "^2.1.2" + escape-string-regexp "^1.0.2" + globby "^4.0.0" + grouped-queue "^0.3.0" + inquirer "^1.0.2" + lodash "^4.11.1" + log-symbols "^1.0.1" + mem-fs "^1.1.0" + text-table "^0.2.0" + untildify "^2.0.0" + +yeoman-environment@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.2.tgz#504ece28e11b5ac487e90b97d8189afa38db4331" + dependencies: + chalk "^1.0.0" + debug "^2.0.0" + diff "^3.2.0" + escape-string-regexp "^1.0.2" + globby "^6.1.0" + grouped-queue "^0.3.0" + inquirer "^3.0.1" + is-scoped "^1.0.0" + lodash "^4.11.1" + log-symbols "^1.0.1" + mem-fs "^1.1.0" + text-table "^0.2.0" + untildify "^3.0.2" + +yeoman-generator@^0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-0.24.1.tgz#1ca74429d9c5c95db0b22859ec180a2599bc1f8e" + dependencies: + async "^2.0.0" + chalk "^1.0.0" + class-extend "^0.1.0" + cli-table "^0.3.1" + cross-spawn "^4.0.0" + dargs "^4.0.0" + dateformat "^1.0.11" + debug "^2.1.0" + detect-conflict "^1.0.0" + error "^7.0.2" + find-up "^1.0.0" + github-username "^2.0.0" + glob "^7.0.3" + gruntfile-editor "^1.0.0" + html-wiring "^1.0.0" + istextorbinary "^2.1.0" + lodash "^4.11.1" + mem-fs-editor "^2.0.0" + mkdirp "^0.5.0" + nopt "^3.0.0" + path-exists "^2.0.0" + path-is-absolute "^1.0.0" + pretty-bytes "^3.0.1" + read-chunk "^1.0.0" + read-pkg-up "^1.0.1" + rimraf "^2.2.0" + run-async "^2.0.0" + shelljs "^0.7.0" + text-table "^0.2.0" + through2 "^2.0.0" + underscore.string "^3.0.3" + user-home "^2.0.0" + yeoman-assert "^2.0.0" + yeoman-environment "^1.1.0" + yeoman-test "^1.0.0" + yeoman-welcome "^1.0.0" + +yeoman-generator@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-1.1.1.tgz#40c2b4f6cdfbe05e1952fdd72933f0d8925dbdf5" + dependencies: + async "^2.0.0" + chalk "^1.0.0" + class-extend "^0.1.0" + cli-table "^0.3.1" + cross-spawn "^5.0.1" + dargs "^5.1.0" + dateformat "^2.0.0" + debug "^2.1.0" + detect-conflict "^1.0.0" + error "^7.0.2" + find-up "^2.1.0" + github-username "^3.0.0" + glob "^7.0.3" + istextorbinary "^2.1.0" + lodash "^4.11.1" + mem-fs-editor "^3.0.0" + minimist "^1.2.0" + mkdirp "^0.5.0" + path-exists "^3.0.0" + path-is-absolute "^1.0.0" + pretty-bytes "^4.0.2" + read-chunk "^2.0.0" + read-pkg-up "^2.0.0" + rimraf "^2.2.0" + run-async "^2.0.0" + shelljs "^0.7.0" + text-table "^0.2.0" + through2 "^2.0.0" + user-home "^2.0.0" + yeoman-environment "^1.1.0" + +yeoman-test@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/yeoman-test/-/yeoman-test-1.7.0.tgz#3edbee64591f2597027a5b42b1dc058251adc9fe" + dependencies: + inquirer "^3.0.1" + lodash "^4.3.0" + mkdirp "^0.5.1" + pinkie-promise "^2.0.1" + rimraf "^2.4.4" + sinon "^2.3.6" + yeoman-environment "^2.0.0" + yeoman-generator "^1.1.0" + +yeoman-welcome@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/yeoman-welcome/-/yeoman-welcome-1.0.1.tgz#f6cf198fd4fba8a771672c26cdfb8a64795c84ec" + dependencies: + chalk "^1.0.0" + +yosay@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/yosay/-/yosay-1.2.1.tgz#9466ef969830e85b474e267b50f7688693ed3b5b" + dependencies: + ansi-regex "^2.0.0" + ansi-styles "^2.0.0" + chalk "^1.0.0" + cli-boxes "^1.0.0" + pad-component "0.0.1" + repeating "^2.0.0" + string-width "^1.0.0" + strip-ansi "^3.0.0" + taketalk "^1.0.0" + wrap-ansi "^2.0.0"