From 6c77be7efa6a9cfd1c7a3cf76c93699650ce28c7 Mon Sep 17 00:00:00 2001 From: Vajahath Ahmed Date: Sun, 28 Jan 2018 18:27:27 +0530 Subject: [PATCH] initial attempt to ts re-write --- .editorconfig | 27 +- .eslintignore | 2 - .eslintrc.yml | 21 - .gitignore | 81 +- .jsbeautifyrc | 19 - .npmignore | 30 +- .vscode/launch.json | 17 + .vscode/settings.json | 5 + .yo-rc.json | 10 + README.md | 440 ++-- _config.yml | 1 - accessories/building-log.ts | 3 + accessories/formatting-log.ts | 3 + accessories/lint-noFix-log.ts | 3 + accessories/linting-log.ts | 3 + accessories/pre-commit-log.ts | 3 + accessories/prepublish-log.ts | 3 + accessories/real-build-log.ts | 3 + accessories/test-log.ts | 3 + accessories/test-watch-log.ts | 3 + examples/example-1.js | 27 - gulpfile.ts | 11 + index.d.ts | 9 + media/cong.jpg | Bin 0 -> 29153 bytes media/sqlify.png | Bin 13266 -> 0 bytes package.json | 90 +- src/JoinClause.ts | 9 + src/Order.ts | 6 + src/Resource.ts | 19 + src/WhereObj.ts | 3 + src/handles/{cross-join.js => cross-join.ts} | 21 +- src/handles/field.js | 10 - src/handles/field.ts | 12 + src/handles/group.js | 10 - src/handles/group.ts | 11 + src/handles/index.js | 25 - src/handles/index.ts | 25 + src/handles/{join.js => join.ts} | 21 +- src/handles/{left-join.js => left-join.ts} | 21 +- src/handles/order.js | 10 - src/handles/order.ts | 11 + src/handles/{outer-join.js => outer-join.ts} | 21 +- src/handles/returning.js | 10 - src/handles/returning.ts | 11 + src/handles/{right-join.js => right-join.ts} | 21 +- src/handles/set.js | 10 - src/handles/set.ts | 11 + src/handles/where.js | 25 - src/handles/where.ts | 28 + src/index.js | 70 - src/index.ts | 72 + tests/index.spec.js | 171 -- tests/index.spec.ts | 192 ++ tsconfig.json | 16 + tslint.json | 42 + typings/lme.d.ts | 91 + typings/typings.d.ts | 9 + yarn.lock | 2355 ++++++++++++++---- 58 files changed, 2949 insertions(+), 1237 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.yml delete mode 100644 .jsbeautifyrc create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .yo-rc.json delete mode 100644 _config.yml create mode 100644 accessories/building-log.ts create mode 100644 accessories/formatting-log.ts create mode 100644 accessories/lint-noFix-log.ts create mode 100644 accessories/linting-log.ts create mode 100644 accessories/pre-commit-log.ts create mode 100644 accessories/prepublish-log.ts create mode 100644 accessories/real-build-log.ts create mode 100644 accessories/test-log.ts create mode 100644 accessories/test-watch-log.ts delete mode 100644 examples/example-1.js create mode 100644 gulpfile.ts create mode 100644 index.d.ts create mode 100644 media/cong.jpg delete mode 100644 media/sqlify.png create mode 100644 src/JoinClause.ts create mode 100644 src/Order.ts create mode 100644 src/Resource.ts create mode 100644 src/WhereObj.ts rename src/handles/{cross-join.js => cross-join.ts} (51%) delete mode 100644 src/handles/field.js create mode 100644 src/handles/field.ts delete mode 100644 src/handles/group.js create mode 100644 src/handles/group.ts delete mode 100644 src/handles/index.js create mode 100644 src/handles/index.ts rename src/handles/{join.js => join.ts} (50%) rename src/handles/{left-join.js => left-join.ts} (51%) delete mode 100644 src/handles/order.js create mode 100644 src/handles/order.ts rename src/handles/{outer-join.js => outer-join.ts} (51%) delete mode 100644 src/handles/returning.js create mode 100644 src/handles/returning.ts rename src/handles/{right-join.js => right-join.ts} (51%) delete mode 100644 src/handles/set.js create mode 100644 src/handles/set.ts delete mode 100644 src/handles/where.js create mode 100644 src/handles/where.ts delete mode 100644 src/index.js create mode 100644 src/index.ts delete mode 100644 tests/index.spec.js create mode 100644 tests/index.spec.ts create mode 100644 tsconfig.json create mode 100644 tslint.json create mode 100644 typings/lme.d.ts create mode 100644 typings/typings.d.ts diff --git a/.editorconfig b/.editorconfig index 2b26fd1..1718cbf 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,14 +1,13 @@ -# top-most EditorConfig file -root = true - -[*] -charset = utf-8 -end_of_line = crlf -trim_trailing_whitespace = true -insert_final_newline = true -indent_style = tab -indent_size = 4 - -[*{.json,.yml}] -indent_style = space -indent_size = 2 +# top-most EditorConfig file +root = true + +insert_final_newline = true +tab_width = 4 + +[*.js] +indent_style = tab +indent_size = tab + +[*.ts] +indent_style = tab +indent_size = tab diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 179aa6f..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -tests/verifying_config_files/node_modules/ \ No newline at end of file diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index 1a51649..0000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,21 +0,0 @@ -env: - browser: true - node: true -extends: 'eslint:recommended' -rules: - indent: - - error - - tab - quotes: - - error - - single - semi: - - error - - always - object-curly-spacing: - - error - - always - eol-last: - - error - - always - no-console: 0 diff --git a/.gitignore b/.gitignore index 556ccd2..48bb3bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,40 +1,41 @@ -.idea/ -.vscode/ - -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history +mocha-insights/ +credentials/ +dist/ + +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history \ No newline at end of file diff --git a/.jsbeautifyrc b/.jsbeautifyrc deleted file mode 100644 index f3106b3..0000000 --- a/.jsbeautifyrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "html": { - "allowed_file_extensions": ["htm", "html", "xhtml", "shtml", "xml", "svg", "ejs"], - "indent_char": "\t", - "indent_size": 1, - "max_preserve_newlines": 3 - }, - "css": { - "indent_char": "\t", - "indent_size": 1 - }, - "js": { - "allowed_file_extensions": ["js", "json", "jshintrc", "jsbeautifyrc"], - "indent_char": "\t", - "indent_size": 1, - "max_preserve_newlines": 3, - "preserve_newlines": true - } -} diff --git a/.npmignore b/.npmignore index 8911d60..298ad3d 100644 --- a/.npmignore +++ b/.npmignore @@ -1,11 +1,19 @@ -media/ -.jsbeautifyrc -.eslintrc.yml -.travis.yml -test.js -tests/ -.vscode/ -.editorconfig -.eslintignore -.gitignore -.idea/ +.vscode/ +accessories/ +*.map +mocha-insights/ +credentials/ +media/ +node_modules/ +src/ +tests/ +typings/ +.editorconfig +.eslintignore +.eslintrc.yml +.gitignore +.npmignore +.travis.yml +.yo-rc.json +tsconfig.json +tslint.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..28b2154 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible Node.js debug attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [{ + "type": "node", + "request": "launch", + "name": "Debug", + "program": "${workspaceRoot}/dist/index.js", + "smartStep": true, + "outFiles": [ + "../dist/**/*.js" + ], + "protocol": "inspector" + }] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..832270b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "sqlify" + ] +} \ No newline at end of file diff --git a/.yo-rc.json b/.yo-rc.json new file mode 100644 index 0000000..13cf464 --- /dev/null +++ b/.yo-rc.json @@ -0,0 +1,10 @@ +{ + "generator-ts-np": { + "promptValues": { + "githubUsername": "vajahath", + "email": "vajuoff.1@gmail.com", + "twitterUsername": "vajahath7", + "fullName": "Vajahath Ahmed" + } + } +} \ No newline at end of file diff --git a/README.md b/README.md index 28ef09c..2e3ed07 100644 --- a/README.md +++ b/README.md @@ -1,220 +1,220 @@ -# Sqlify -Yet another SQL query builder - -[![npm](https://img.shields.io/npm/v/sqlify.svg)](https://www.npmjs.com/package/sqlify) -[![Build Status](https://travis-ci.org/vajahath/sqlify.svg?branch=master)](https://travis-ci.org/vajahath/sqlify) -[![Known Vulnerabilities](https://snyk.io/test/npm/sqlify/badge.svg)](https://snyk.io/test/npm/sqlify) -[![Gitter chat](https://badges.gitter.im/npm-sqlify/gitter.png)](https://gitter.im/npm-sqlify/Lobby) -[![npm](https://img.shields.io/npm/dt/sqlify.svg)](https://www.npmjs.com/package/sqlify) - -> There are many sql query builders out there. But this one makes more sense to me :wink:. - -![](https://raw.githubusercontent.com/vajahath/sqlify/master/media/sqlify.png) - - -> **Sqlify v2.3** is out! **What's new?** -> - better error handling -> - more squel functions (`order`, `group`) -> - *(migrating from v1 to v2 is easier than you think. It just requires 2 mins, you bet!)* ->
[**migration guide**](#v1-to-v2-migration-guide) - -*:flags: This package is bound to strictly follow [Semantic Versioning](http://semver.org/).* - -[![Greenkeeper badge](https://badges.greenkeeper.io/vajahath/sqlify.svg)](https://greenkeeper.io/) - -## Install -```bash -npm install --save sqlify -``` - -**Read [squel](https://hiddentao.com/squel)'s documentation along with this.** -_This package is a wrapper around [squel](https://hiddentao.com/squel)_ - -## Why? -- Helps you to build dynamic sql queries. -- **Example use case:** suppose, you are getting a POST request to insert some data to your SQL database. - You'll get the data in `req.body` as `{name: "Swat", age: 22, address: "ND"}`. - Now make the query like: - - ```js - let resource = { - set: req.body - } - sqlify(chain, resource); // done! - ``` - -## Examples -#### SELECT -```js -const sql = require('sqlify').squel; -const sqlify = require('sqlify').sqlify; - -let resource = { - field: ['name', 'age', 'address'], - where: { - name: 'Swat', - age: 22 - } -}; -let chain = sql.select().from('users'); -sqlify(chain, resource); - -chain.toString() // => SELECT name, age, address FROM users WHERE (name=Swat) AND (age=22) -``` - -#### INSERT -```js -const sql = require('sqlify').squel; -const sqlify = require('sqlify').sqlify; - -let resource = { - set: { - name: 'Swat', - age: 22 - } -}; -let chain = sql.insert().into('users'); -sqlify(chain, resource); - -chain.toString() // => INSERT INTO users (name, age) VALUES ('Swat', 22) -``` - -## How? - -`sqlify` exposes a **function** and a **module** ([squel](https://www.npmjs.com/package/squel)). - -The function receives 2 arguments. They are: -- `chain` -- `resource` - -#### Step 1: Require the package -```js -const sql = require('sqlify').squel; -const sqlify = require('sqlify').sqlify; -const lme = require('lme') // not necessary. For printing things out.. - -... -``` - -#### Step 2: Initialize `chain` and `resource` -`chain` is an instance of [squel](https://www.npmjs.com/package/squel). -For example, -```js -... - -let chain = squel.select().from('users'); - -... -``` - -`resource` is an object which contains the data to build the query. -Example: -```js -... - -let resource = { - field: ['name', 'age', 'address'], - where: { - name: 'Swa', - age: 22 - } -}; - -... -``` -Where, the properties of `resource` object (in the above case, `field` and `where`) are taken from the chain function names of the [squel](https://www.npmjs.com/package/squel). Use them accordingly. - -#### Step 3: Sqlify -```js -... - -sqlify(chain, resource); - -... -``` - -`sqlify` function wont return anything. It simply do things in in-place. - -#### Step 4: Watch stuff... -```js -... - -// parse query -let query = chain.toString(); -// see it -lme.s(query); -// => SELECT name, age, address FROM users WHERE (name='Swa') AND (age=22) -... -``` - -##### Unclear about something here? Feel free to rise an issue.. - -## Also, -**Since `sqlify` takes in and out chain functions, you can modify it even after `sqlify`ing it.** - ---- - -> :green_heart: Find some time to contribute :star: to accommodate other functionalities from [squel](https://www.npmjs.com/package/squel). - -### supported functions -| | | | | | -|------------|------------|------|-----------|------------| -| cross-join | field | join | left-join | outer-join | -| returning | right-join | set | where | group | -| order | | | | | -| | | | | | - -## Contributors - -- [Lakshmipriya](https://github.com/lakshmipriyamukundan) - - -## v1 to v2 migration guide - -- **change the way you `require` the package:** - - in v1, you required `sqlify` along with `squel` as: - ```js - const sqlify = require('sqlify'); - const squel = require('squel'); - ... - ``` - - in v2 you've to change that code into: - ```js - const sqlify = require('sqlify').sqlify; - const squel = require('sqlify').squel; - ... - ``` -- **change in function name:** change `fields:[]` to `field:[]` in the `resource` object. -

*Oh yes! it's that simple.* -

-Just in case if you liked this package,   [![PayPal][badge_paypal_donate]][paypal-donations] - -## Change log -- v2.3.1 - - enabling Greeenkeeper, better docs -- v2.3.0 - - adds better error handling: (if an unsupported method is used, sqlify throws an err) -- v2.2.0 - - adds `order` function from [squel-order](https://hiddentao.com/squel/api.html#select_order) - - better docs -- v2.1.1 - - adds `group` function from [squel-group](https://hiddentao.com/squel/api.html#select_group) - - better docs -- v2.0.0 - - fixing [#5](https://github.com/vajahath/sqlify/issues/5) and [#2](https://github.com/vajahath/sqlify/issues/2). - - more squel functions -- v1.0.4 - - bug fix with 's in select queries -- v1.0.1, 1.0.2, 1.0.3 - - bug fix (in `package.json`) - - better docs - -- v1.0.0 - - initial release - - -## Licence -MIT © [Vajahath Ahmed](https://twitter.com/vajahath7) - -[badge_paypal_donate]: https://cdn.rawgit.com/vajahath/cloud-codes/a01f087f/badges/paypal_donate.svg -[paypal-donations]: https://paypal.me/vajahath +# Sqlify +Yet another SQL query builder + +[![npm](https://img.shields.io/npm/v/sqlify.svg)](https://www.npmjs.com/package/sqlify) +[![Build Status](https://travis-ci.org/vajahath/sqlify.svg?branch=master)](https://travis-ci.org/vajahath/sqlify) +[![Known Vulnerabilities](https://snyk.io/test/npm/sqlify/badge.svg)](https://snyk.io/test/npm/sqlify) +[![Gitter chat](https://badges.gitter.im/npm-sqlify/gitter.png)](https://gitter.im/npm-sqlify/Lobby) +[![npm](https://img.shields.io/npm/dt/sqlify.svg)](https://www.npmjs.com/package/sqlify) + +> There are many sql query builders out there. But this one makes more sense to me :wink:. + +![](https://raw.githubusercontent.com/vajahath/sqlify/master/media/sqlify.png) + + +> **Sqlify v2.3** is out! **What's new?** +> - better error handling +> - more squel functions (`order`, `group`) +> - *(migrating from v1 to v2 is easier than you think. It just requires 2 mins, you bet!)* +>
[**migration guide**](#v1-to-v2-migration-guide) + +*:flags: This package is bound to strictly follow [Semantic Versioning](http://semver.org/).* + +[![Greenkeeper badge](https://badges.greenkeeper.io/vajahath/sqlify.svg)](https://greenkeeper.io/) + +## Install +```bash +npm install --save sqlify +``` + +**Read [squel](https://hiddentao.com/squel)'s documentation along with this.** +_This package is a wrapper around [squel](https://hiddentao.com/squel)_ + +## Why? +- Helps you to build dynamic sql queries. +- **Example use case:** suppose, you are getting a POST request to insert some data to your SQL database. + You'll get the data in `req.body` as `{name: "Swat", age: 22, address: "ND"}`. + Now make the query like: + + ```js + let resource = { + set: req.body + } + sqlify(chain, resource); // done! + ``` + +## Examples +#### SELECT +```js +const sql = require('sqlify').squel; +const sqlify = require('sqlify').sqlify; + +let resource = { + field: ['name', 'age', 'address'], + where: { + name: 'Swat', + age: 22 + } +}; +let chain = sql.select().from('users'); +sqlify(chain, resource); + +chain.toString() // => SELECT name, age, address FROM users WHERE (name=Swat) AND (age=22) +``` + +#### INSERT +```js +const sql = require('sqlify').squel; +const sqlify = require('sqlify').sqlify; + +let resource = { + set: { + name: 'Swat', + age: 22 + } +}; +let chain = sql.insert().into('users'); +sqlify(chain, resource); + +chain.toString() // => INSERT INTO users (name, age) VALUES ('Swat', 22) +``` + +## How? + +`sqlify` exposes a **function** and a **module** ([squel](https://www.npmjs.com/package/squel)). + +The function receives 2 arguments. They are: +- `chain` +- `resource` + +#### Step 1: Require the package +```js +const sql = require('sqlify').squel; +const sqlify = require('sqlify').sqlify; +const lme = require('lme') // not necessary. For printing things out.. + +... +``` + +#### Step 2: Initialize `chain` and `resource` +`chain` is an instance of [squel](https://www.npmjs.com/package/squel). +For example, +```js +... + +let chain = squel.select().from('users'); + +... +``` + +`resource` is an object which contains the data to build the query. +Example: +```js +... + +let resource = { + field: ['name', 'age', 'address'], + where: { + name: 'Swa', + age: 22 + } +}; + +... +``` +Where, the properties of `resource` object (in the above case, `field` and `where`) are taken from the chain function names of the [squel](https://www.npmjs.com/package/squel). Use them accordingly. + +#### Step 3: Sqlify +```js +... + +sqlify(chain, resource); + +... +``` + +`sqlify` function wont return anything. It simply do things in in-place. + +#### Step 4: Watch stuff... +```js +... + +// parse query +let query = chain.toString(); +// see it +lme.s(query); +// => SELECT name, age, address FROM users WHERE (name='Swa') AND (age=22) +... +``` + +##### Unclear about something here? Feel free to rise an issue.. + +## Also, +**Since `sqlify` takes in and out chain functions, you can modify it even after `sqlify`ing it.** + +--- + +> :green_heart: Find some time to contribute :star: to accommodate other functionalities from [squel](https://www.npmjs.com/package/squel). + +### supported functions +| | | | | | +|------------|------------|------|-----------|------------| +| cross-join | field | join | left-join | outer-join | +| returning | right-join | set | where | group | +| order | | | | | +| | | | | | + +## Contributors + +- [Lakshmipriya](https://github.com/lakshmipriyamukundan) + + +## v1 to v2 migration guide + +- **change the way you `require` the package:** + - in v1, you required `sqlify` along with `squel` as: + ```js + const sqlify = require('sqlify'); + const squel = require('squel'); + ... + ``` + - in v2 you've to change that code into: + ```js + const sqlify = require('sqlify').sqlify; + const squel = require('sqlify').squel; + ... + ``` +- **change in function name:** change `fields:[]` to `field:[]` in the `resource` object. +

*Oh yes! it's that simple.* +

+Just in case if you liked this package,   [![PayPal][badge_paypal_donate]][paypal-donations] + +## Change log +- v2.3.1 + - enabling Greeenkeeper, better docs +- v2.3.0 + - adds better error handling: (if an unsupported method is used, sqlify throws an err) +- v2.2.0 + - adds `order` function from [squel-order](https://hiddentao.com/squel/api.html#select_order) + - better docs +- v2.1.1 + - adds `group` function from [squel-group](https://hiddentao.com/squel/api.html#select_group) + - better docs +- v2.0.0 + - fixing [#5](https://github.com/vajahath/sqlify/issues/5) and [#2](https://github.com/vajahath/sqlify/issues/2). + - more squel functions +- v1.0.4 + - bug fix with 's in select queries +- v1.0.1, 1.0.2, 1.0.3 + - bug fix (in `package.json`) + - better docs + +- v1.0.0 + - initial release + + +## Licence +MIT © [Vajahath Ahmed](https://twitter.com/vajahath7) + +[badge_paypal_donate]: https://cdn.rawgit.com/vajahath/cloud-codes/a01f087f/badges/paypal_donate.svg +[paypal-donations]: https://paypal.me/vajahath diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c419263..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/accessories/building-log.ts b/accessories/building-log.ts new file mode 100644 index 0000000..d96768b --- /dev/null +++ b/accessories/building-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nBuilding package ...\n'); diff --git a/accessories/formatting-log.ts b/accessories/formatting-log.ts new file mode 100644 index 0000000..3d5174c --- /dev/null +++ b/accessories/formatting-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nFormatting codebase ...\n'); diff --git a/accessories/lint-noFix-log.ts b/accessories/lint-noFix-log.ts new file mode 100644 index 0000000..b00a44c --- /dev/null +++ b/accessories/lint-noFix-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nChecking for Formatting and Lint errors ...\n'); diff --git a/accessories/linting-log.ts b/accessories/linting-log.ts new file mode 100644 index 0000000..968f312 --- /dev/null +++ b/accessories/linting-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nPiping through Linter ...\n'); diff --git a/accessories/pre-commit-log.ts b/accessories/pre-commit-log.ts new file mode 100644 index 0000000..386c4bc --- /dev/null +++ b/accessories/pre-commit-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nExecuting Pre-commit checks ...\n'); diff --git a/accessories/prepublish-log.ts b/accessories/prepublish-log.ts new file mode 100644 index 0000000..d11d1e5 --- /dev/null +++ b/accessories/prepublish-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.w('\nExecuting Pre-publish stuffs ...\n'); diff --git a/accessories/real-build-log.ts b/accessories/real-build-log.ts new file mode 100644 index 0000000..b42d4fa --- /dev/null +++ b/accessories/real-build-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.w('\nCompiling ...\n'); diff --git a/accessories/test-log.ts b/accessories/test-log.ts new file mode 100644 index 0000000..fcdbf4a --- /dev/null +++ b/accessories/test-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nExecuting tests ...\n'); diff --git a/accessories/test-watch-log.ts b/accessories/test-watch-log.ts new file mode 100644 index 0000000..7514731 --- /dev/null +++ b/accessories/test-watch-log.ts @@ -0,0 +1,3 @@ +import * as lme from 'lme'; + +lme.i('\nExecuting tests in WATCH mode ...\n'); diff --git a/examples/example-1.js b/examples/example-1.js deleted file mode 100644 index 9bd92e8..0000000 --- a/examples/example-1.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeQuery = require('./../src'); -var sql = require('squel'); -var lme = require('lme'); - -var resource = { - field: [ - 'service_types.service_title', - 'service_pricing.service_pricing_title', - 'service_pricing_sub.service_pricing_sub_title', - 'service_pricing_cost.service_pricing_cost', - 'service_pricing_cost.service_pricing_currency' - ], - join: [ - ['service_pricing', null, 'service_types.service_id = service_pricing.service_type'], - ['service_pricing_sub', null, 'service_pricing.service_pricing_id = service_pricing_sub.service_pricing_id'], - ['service_pricing_cost', null, 'service_pricing_sub.service_pricing_sub_id = service_pricing_cost.service_pricing_sub_id'] - ], - where: { - 'service_types.service_id': 'something', - 'service_pricing_cost.service_pricing_currency': 'something else' - } -}; -var chain = sql.select({ separator: '\n' }).from('service_types'); -makeQuery(chain, resource); - -var query = chain.toString(); -lme.i(query); diff --git a/gulpfile.ts b/gulpfile.ts new file mode 100644 index 0000000..01cba92 --- /dev/null +++ b/gulpfile.ts @@ -0,0 +1,11 @@ +import * as del from 'del'; +import * as gulp from 'gulp'; + +// copy json files from src to dist +gulp.task('copy-json', () => { + return gulp.src('src/**/*.json').pipe(gulp.dest('dist/')); +}); + +gulp.task('clean-build', () => { + return del.sync(['dist/**/*', 'dist/**/.*']); +}); diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..f278ca3 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,9 @@ +/** + * This is the definition file for your package + * ============================================ + * Change this file as per Typescript's guide to + * write high quality definition file. + * Link: https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html\ + * + */ +declare module "sqlify ts"; diff --git a/media/cong.jpg b/media/cong.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7931916ee27fdb8f69431fc10eb6aaa87994b96c GIT binary patch literal 29153 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 literal 0 HcmV?d00001 diff --git a/media/sqlify.png b/media/sqlify.png deleted file mode 100644 index c64ed243418b45b30e1d44d4c27a3aaba73609d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13266 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 D738oT diff --git a/package.json b/package.json index 76eff68..fd5438b 100644 --- a/package.json +++ b/package.json @@ -1,32 +1,58 @@ -{ - "name": "sqlify", - "version": "2.3.1", - "description": "Yet another SQL query builder for Node.js", - "main": "src/index.js", - "scripts": { - "test": "./node_modules/.bin/mocha ./tests --recursive", - "lint": "./node_modules/.bin/eslint . --fix" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/vajahath/sqlify.git" - }, - "author": "Vajahath Ahmed (http://twitter.com/vajahath7)", - "license": "MIT", - "bugs": { - "url": "https://github.com/vajahath/sqlify/issues" - }, - "homepage": "https://github.com/vajahath/sqlify#readme", - "devDependencies": { - "chai": "^4.0.2", - "eslint": "^3.18.0", - "mocha": "^3.2.0" - }, - "dependencies": { - "lme": "^1.5.1", - "squel": "^5.8.0" - }, - "contributors": [ - "Lakshmipriya Mukundan (https://github.com/lakshmipriyamukundan)" - ] -} +{ + "name": "sqlify", + "version": "2.4.0", + "description": "Yet another SQL query builder for Node.js", + "main": "dist/index.js", + "typings": "index.d.ts", + "scripts": { + "prepublishOnly": "ts-node accessories/prepublish-log.ts && npm run build", + "build": "ts-node accessories/building-log.ts && npm run clean-build && npm run lint && ts-node accessories/real-build-log.ts && tsc && npm run copy-json", + "lint": "ts-node accessories/formatting-log.ts && prettier --use-tabs --single-quote --tab-width 4 --write src/**/* typings/**/* tests/**/* && ts-node accessories/linting-log.ts && tslint -c tslint.json -p tsconfig.json -t stylish --fix src/**/*", + "lint-noFix": "ts-node accessories/lint-noFix-log.ts && prettier --use-tabs --single-quote --tab-width 4 src/**/* typings/**/* tests/**/* && tslint -c tslint.json -p tsconfig.json -t stylish src/**/*", + "test": "ts-node accessories/test-log.ts && cross-env NODE_ENV=test mocha tests/ --compilers ts:ts-node/register,tsx:ts-node/register --recursive --reporter spec", + "test-watch": "ts-node accessories/test-watch-log.ts && cross-env NODE_ENV=test mocha tests/ --compilers ts:ts-node/register,tsx:ts-node/register --recursive --reporter spec --watch", + "preCommit-msg": "ts-node accessories/pre-commit-log.ts", + "copy-json": "gulp copy-json", + "clean-build": "gulp clean-build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vajahath/sqlify.git" + }, + "author": "Vajahath Ahmed (http://twitter.com/vajahath7)", + "license": "MIT", + "bugs": { + "url": "https://github.com/vajahath/sqlify/issues" + }, + "homepage": "https://github.com/vajahath/sqlify#readme", + "dependencies": { + "lme": "^1.5.1", + "squel": "^5.8.0" + }, + "contributors": [ + "Lakshmipriya Mukundan (https://github.com/lakshmipriyamukundan)" + ], + "devDependencies": { + "@types/chai": "^4.0.1", + "@types/del": "^3.0.0", + "@types/gulp": "^4.0.4", + "@types/mocha": "^2.2.41", + "@types/node": "^8.0.5", + "chai": "^4.1.0", + "concurrently": "^3.5.0", + "cross-env": "^5.0.1", + "mocha": "^3.4.2", + "pre-commit": "^1.2.2", + "prettier": "^1.5.3", + "ts-node": "^3.3.0", + "tslint": "^5.5.0", + "typescript": "^2.4.2", + "gulp": "^3.9.1", + "gulp-cli": "^1.4.0", + "del": "^3.0.0" + }, + "pre-commit": [ + "preCommit-msg", + "lint-noFix" + ] +} \ No newline at end of file diff --git a/src/JoinClause.ts b/src/JoinClause.ts new file mode 100644 index 0000000..7311908 --- /dev/null +++ b/src/JoinClause.ts @@ -0,0 +1,9 @@ +export class JoinClause extends Array { + [index: number]: string | null; + /** table to join */ + public 0: string; + /** as clause */ + public 1: null | string; + /** condition */ + public 2: string; +} diff --git a/src/Order.ts b/src/Order.ts new file mode 100644 index 0000000..6548caa --- /dev/null +++ b/src/Order.ts @@ -0,0 +1,6 @@ +export class Order { + /** order by field */ + public field: string; + /** ascending ? */ + public asc: boolean; +} diff --git a/src/Resource.ts b/src/Resource.ts new file mode 100644 index 0000000..a957014 --- /dev/null +++ b/src/Resource.ts @@ -0,0 +1,19 @@ +// tslint:disable:variable-name + +import { JoinClause } from './JoinClause'; +import { Order } from './Order'; +import { WhereObj } from './WhereObj'; + +export class Resource { + public field?: string[]; + public where?: WhereObj; + public set?: WhereObj; + public join?: JoinClause[]; + public left_join?: JoinClause[]; + public right_join?: JoinClause[]; + public outer_join?: JoinClause[]; + public cross_join?: JoinClause[]; + public returning?: string[]; + public group?: string[]; + public order?: Order[]; +} diff --git a/src/WhereObj.ts b/src/WhereObj.ts new file mode 100644 index 0000000..3413b8a --- /dev/null +++ b/src/WhereObj.ts @@ -0,0 +1,3 @@ +export class WhereObj { + [key: string]: any; +} diff --git a/src/handles/cross-join.js b/src/handles/cross-join.ts similarity index 51% rename from src/handles/cross-join.js rename to src/handles/cross-join.ts index f314d3a..c57e70f 100644 --- a/src/handles/cross-join.js +++ b/src/handles/cross-join.ts @@ -1,10 +1,11 @@ -/** - * implementing CROSS JOIN - * https://hiddentao.com/squel/api.html#select_cross_join - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.cross_join(item[0], item[1], item[2]); - }); -}; +/** + * implementing CROSS JOIN + * https://hiddentao.com/squel/api.html#select_cross_join + */ +import { Resource } from '../Resource'; + +export const cross_join = (chain: any, resource: Resource['cross_join']) => { + resource.forEach((item) => { + chain = chain.cross_join(item[0], item[1], item[2]); + }); +}; diff --git a/src/handles/field.js b/src/handles/field.js deleted file mode 100644 index cf7b71c..0000000 --- a/src/handles/field.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * implementation of: - * https://hiddentao.com/squel/api.html#select_field - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.field(item); - }); -}; diff --git a/src/handles/field.ts b/src/handles/field.ts new file mode 100644 index 0000000..af09ffa --- /dev/null +++ b/src/handles/field.ts @@ -0,0 +1,12 @@ +/** + * implementation of: + * https://hiddentao.com/squel/api.html#select_field + */ + +import { Resource } from '../Resource'; + +export const field = (chain: any, resource: Resource['field']) => { + resource.forEach((item) => { + chain = chain.field(item); + }); +}; diff --git a/src/handles/group.js b/src/handles/group.js deleted file mode 100644 index 1d25d75..0000000 --- a/src/handles/group.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * implementation of: - * https://hiddentao.com/squel/api.html#select_group - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.group(item); - }); -}; diff --git a/src/handles/group.ts b/src/handles/group.ts new file mode 100644 index 0000000..3963c03 --- /dev/null +++ b/src/handles/group.ts @@ -0,0 +1,11 @@ +/** + * implementation of: + * https://hiddentao.com/squel/api.html#select_group + */ +import { Resource } from '../Resource'; + +export const group = (chain: any, resource: Resource['group']) => { + resource.forEach((item) => { + chain = chain.group(item); + }); +}; diff --git a/src/handles/index.js b/src/handles/index.js deleted file mode 100644 index 7279ce9..0000000 --- a/src/handles/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var field = require('./field'); -var where = require('./where'); -var set = require('./set'); -var join = require('./join'); -var left_join = require('./left-join'); -var right_join = require('./right-join'); -var outer_join = require('./outer-join'); -var cross_join = require('./cross-join'); -var returning = require('./returning'); -var group = require('./group'); -var order = require('./order'); - -module.exports = { - group: group, - field: field, - where: where, - set: set, - join: join, - left_join: left_join, - right_join: right_join, - outer_join: outer_join, - cross_join: cross_join, - returning: returning, - order: order -}; diff --git a/src/handles/index.ts b/src/handles/index.ts new file mode 100644 index 0000000..bbb76ce --- /dev/null +++ b/src/handles/index.ts @@ -0,0 +1,25 @@ +import { cross_join } from './cross-join'; +import { field } from './field'; +import { group } from './group'; +import { join } from './join'; +import { left_join } from './left-join'; +import { order } from './order'; +import { outer_join } from './outer-join'; +import { returning } from './returning'; +import { right_join } from './right-join'; +import { set } from './set'; +import { where } from './where'; + +export { + group, + field, + where, + set, + join, + left_join, + right_join, + outer_join, + cross_join, + returning, + order, +}; diff --git a/src/handles/join.js b/src/handles/join.ts similarity index 50% rename from src/handles/join.js rename to src/handles/join.ts index 8558390..fb17955 100644 --- a/src/handles/join.js +++ b/src/handles/join.ts @@ -1,10 +1,11 @@ -/** - * implementing JOIN - * https://hiddentao.com/squel/api.html#select_join - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.join(item[0], item[1], item[2]); - }); -}; +/** + * implementing JOIN + * https://hiddentao.com/squel/api.html#select_join + */ +import { Resource } from '../Resource'; + +export const join = (chain: any, resource: Resource['join']) => { + resource.forEach((item) => { + chain = chain.join(item[0], item[1], item[2]); + }); +}; diff --git a/src/handles/left-join.js b/src/handles/left-join.ts similarity index 51% rename from src/handles/left-join.js rename to src/handles/left-join.ts index 5869836..16d9a20 100644 --- a/src/handles/left-join.js +++ b/src/handles/left-join.ts @@ -1,10 +1,11 @@ -/** - * implementing LEFT JOIN - * https://hiddentao.com/squel/api.html#select_left_join - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.left_join(item[0], item[1], item[2]); - }); -}; +/** + * implementing LEFT JOIN + * https://hiddentao.com/squel/api.html#select_left_join + */ +import { Resource } from '../Resource'; + +export const left_join = (chain: any, resource: Resource['left_join']) => { + resource.forEach((item) => { + chain = chain.left_join(item[0], item[1], item[2]); + }); +}; diff --git a/src/handles/order.js b/src/handles/order.js deleted file mode 100644 index c866da1..0000000 --- a/src/handles/order.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * implementation of: - * https://hiddentao.com/squel/api.html#select_order - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.order(item.field, item.asc); - }); -}; diff --git a/src/handles/order.ts b/src/handles/order.ts new file mode 100644 index 0000000..632fa8c --- /dev/null +++ b/src/handles/order.ts @@ -0,0 +1,11 @@ +/** + * implementation of: + * https://hiddentao.com/squel/api.html#select_order + */ +import { Resource } from '../Resource'; + +export const order = (chain: any, resource: Resource['order']) => { + resource.forEach((item) => { + chain = chain.order(item.field, item.asc); + }); +}; diff --git a/src/handles/outer-join.js b/src/handles/outer-join.ts similarity index 51% rename from src/handles/outer-join.js rename to src/handles/outer-join.ts index 38877a8..eaede1a 100644 --- a/src/handles/outer-join.js +++ b/src/handles/outer-join.ts @@ -1,10 +1,11 @@ -/** - * implementing OUTER JOIN - * https://hiddentao.com/squel/api.html#select_outer_join - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.outer_join(item[0], item[1], item[2]); - }); -}; +/** + * implementing OUTER JOIN + * https://hiddentao.com/squel/api.html#select_outer_join + */ +import { Resource } from '../Resource'; + +export const outer_join = (chain: any, resource: Resource['outer_join']) => { + resource.forEach((item) => { + chain = chain.outer_join(item[0], item[1], item[2]); + }); +}; diff --git a/src/handles/returning.js b/src/handles/returning.js deleted file mode 100644 index 9f7206e..0000000 --- a/src/handles/returning.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * implementing RETURN (INSERT) - * https://hiddentao.com/squel/api.html#insert_return - */ - -module.exports = function(chain, resource) { - Object.keys(resource).forEach(function(item) { - chain = chain.returning(resource[item]); - }); -}; diff --git a/src/handles/returning.ts b/src/handles/returning.ts new file mode 100644 index 0000000..bb2c5e2 --- /dev/null +++ b/src/handles/returning.ts @@ -0,0 +1,11 @@ +/** + * implementing RETURN (INSERT) + * https://hiddentao.com/squel/api.html#insert_return + */ +import { Resource } from '../Resource'; + +export const returning = (chain: any, resource: Resource['returning']) => { + resource.forEach((item) => { + chain = chain.returning(item); + }); +}; diff --git a/src/handles/right-join.js b/src/handles/right-join.ts similarity index 51% rename from src/handles/right-join.js rename to src/handles/right-join.ts index 1bd09df..d790b47 100644 --- a/src/handles/right-join.js +++ b/src/handles/right-join.ts @@ -1,10 +1,11 @@ -/** - * implementing RIGHT JOIN - * https://hiddentao.com/squel/api.html#select_left_join - */ - -module.exports = function(chain, resource) { - resource.forEach(function(item) { - chain = chain.right_join(item[0], item[1], item[2]); - }); -}; +/** + * implementing RIGHT JOIN + * https://hiddentao.com/squel/api.html#select_left_join + */ +import { Resource } from '../Resource'; + +export const right_join = (chain: any, resource: Resource['right_join']) => { + resource.forEach((item) => { + chain = chain.right_join(item[0], item[1], item[2]); + }); +}; diff --git a/src/handles/set.js b/src/handles/set.js deleted file mode 100644 index a31eb80..0000000 --- a/src/handles/set.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * implementing SET (INSERT) - * https://hiddentao.com/squel/api.html#insert_set - */ - -module.exports = function(chain, resource) { - Object.keys(resource).forEach(function(item) { - chain = chain.set(item, resource[item]); - }); -}; diff --git a/src/handles/set.ts b/src/handles/set.ts new file mode 100644 index 0000000..e0076bf --- /dev/null +++ b/src/handles/set.ts @@ -0,0 +1,11 @@ +/** + * implementing SET (INSERT) + * https://hiddentao.com/squel/api.html#insert_set + */ +import { Resource } from '../Resource'; + +export const set = (chain: any, resource: Resource['set']) => { + Object.keys(resource).forEach((item) => { + chain = chain.set(item, resource[item]); + }); +}; diff --git a/src/handles/where.js b/src/handles/where.js deleted file mode 100644 index f5b166b..0000000 --- a/src/handles/where.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * implementing: WHERE - * https://hiddentao.com/squel/api.html#select_where - */ -var appendingValue; -var lme = require('lme'); - -module.exports = function(chain, resource) { - Object.keys(resource).forEach(function(item) { - appendingValue = resource[item]; - // modify appendingValue to include 's if necessary - switch (typeof(resource[item])) { - case ('number'): - case ('boolean'): - break; - case 'string': - appendingValue = '\'' + appendingValue + '\''; - break; - default: - lme.e('SQLIFY ERR: a type other than "string", "number", "boolean" encountered in \'where\''); - throw new Error('a type other than "string", "number", "boolean" encountered'); - } - chain = chain.where(item + '=' + appendingValue); - }); -}; diff --git a/src/handles/where.ts b/src/handles/where.ts new file mode 100644 index 0000000..3c954a4 --- /dev/null +++ b/src/handles/where.ts @@ -0,0 +1,28 @@ +/** + * implementing: WHERE + * https://hiddentao.com/squel/api.html#select_where + */ + +import { Resource } from '../Resource'; + +let appendingValue = ''; + +export const where = (chain: any, resource: Resource['where']) => { + Object.keys(resource).forEach((item) => { + appendingValue = resource[item]; + // modify appendingValue to include 's if necessary + switch (typeof resource[item]) { + case 'number': + case 'boolean': + break; + case 'string': + appendingValue = '\'' + appendingValue + '\''; + break; + default: + throw new Error( + 'SQLIFY ERR: a type other than "string", "number", "boolean" encountered', + ); + } + chain = chain.where(item + '=' + appendingValue); + }); +}; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index ccbcb89..0000000 --- a/src/index.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * `chain` is the instance of npm squel module - * `resource` includes the data to build the query - */ -var lme = require('lme'); -var squel = require('squel').useFlavour('postgres'); -var handles = require('./handles'); - -var sqlify = function(chain, resource) { - - // iterate through each properties of `resource` - Object.keys(resource).forEach(function(key) { - switch (key) { - case 'field': - handles.field(chain, resource[key]); - break; - - case 'where': - handles.where(chain, resource[key]); - break; - - case 'set': - handles.set(chain, resource[key]); - break; - - case 'join': - handles.join(chain, resource[key]); - break; - - case 'left_join': - handles.left_join(chain, resource[key]); - break; - - case 'right_join': - handles.right_join(chain, resource[key]); - break; - - case 'outer_join': - handles.outer_join(chain, resource[key]); - break; - - case 'cross_join': - handles.cross_join(chain, resource[key]); - break; - - case 'returning': - handles.returning(chain, resource[key]); - break; - - case 'group': - handles.group(chain, resource[key]); - break; - - case 'order': - handles.order(chain, resource[key]); - break; - - default: - lme.e('method ' + key + ' is not implemented'); - throw new Error('SQLIFY ERR: method ' + key + ' is not implemented > please contribute this method > its simple :)'); - // break; - } - }); -}; - -// expose squel and sqlify -module.exports = { - squel: squel, - sqlify: sqlify -}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..6fbf3ea --- /dev/null +++ b/src/index.ts @@ -0,0 +1,72 @@ +/** + * `chain` is the instance of npm squel module + * `resource` includes the data to build the query + */ + +import * as squelLib from 'squel'; + +import * as handles from './handles'; +import { Resource } from './Resource'; + +const squel = squelLib.useFlavour('postgres'); + +export const sqlify = (chain: any, resource: Resource) => { + // iterate through each properties of `resource` + Object.keys(resource).forEach((key) => { + switch (key) { + case 'field': + handles.field(chain, resource[key]); + break; + + case 'where': + handles.where(chain, resource[key]); + break; + + case 'set': + handles.set(chain, resource[key]); + break; + + case 'join': + handles.join(chain, resource[key]); + break; + + case 'left_join': + handles.left_join(chain, resource[key]); + break; + + case 'right_join': + handles.right_join(chain, resource[key]); + break; + + case 'outer_join': + handles.outer_join(chain, resource[key]); + break; + + case 'cross_join': + handles.cross_join(chain, resource[key]); + break; + + case 'returning': + handles.returning(chain, resource[key]); + break; + + case 'group': + handles.group(chain, resource[key]); + break; + + case 'order': + handles.order(chain, resource[key]); + break; + + default: + throw new Error( + 'SQLIFY ERR: method ' + + key + + ' is not implemented > please contribute this method > its simple :)', + ); + // break; + } + }); +}; + +export { squel, Resource }; diff --git a/tests/index.spec.js b/tests/index.spec.js deleted file mode 100644 index 98ebc9f..0000000 --- a/tests/index.spec.js +++ /dev/null @@ -1,171 +0,0 @@ -/*global it describe*/ - -var makeQuery = require('./../src').sqlify; -var sql = require('./../src').squel; - -var expect = require('chai').expect; -// var lme = require('lme'); - -describe('Testing sqlify', function() { - it('should make good query (type 2: INSERT)', function(done) { - var resource = { - set: { - name: 'Divya', - age: 44, - girl: true - } - }; - var chain = sql.insert().into('users'); - makeQuery(chain, resource); - - var query = chain.toString(); - expect(query).to.equal('INSERT INTO users (name, age, girl) VALUES (\'Divya\', 44, TRUE)'); - done(); - }); - - describe('testing some actual scenarios >', function() { - it('case 1 (SELECT field FROM table JOIN JOIN JOIN WHERE cond.)', function(done) { - var resource = { - field: [ - 'service_types.service_title', - 'service_pricing.service_pricing_title', - 'service_pricing_sub.service_pricing_sub_title', - 'service_pricing_cost.service_pricing_cost', - 'service_pricing_cost.service_pricing_currency' - ], - join: [ - ['service_pricing', null, 'service_types.service_id = service_pricing.service_type'], - ['service_pricing_sub', null, 'service_pricing.service_pricing_id = service_pricing_sub.service_pricing_id'], - ['service_pricing_cost', null, 'service_pricing_sub.service_pricing_sub_id = service_pricing_cost.service_pricing_sub_id'] - ], - where: { - 'service_types.service_id': 'something', - 'service_pricing_cost.service_pricing_currency': 'something else' - } - }; - var chain = sql.select().from('users'); - makeQuery(chain, resource); - - var query = chain.toString(); - expect(query).to.equal('SELECT service_types.service_title, service_pricing.service_pricing_title, service_pricing_sub.service_pricing_sub_title, service_pricing_cost.service_pricing_cost, service_pricing_cost.service_pricing_currency FROM users INNER JOIN service_pricing ON (service_types.service_id = service_pricing.service_type) INNER JOIN service_pricing_sub ON (service_pricing.service_pricing_id = service_pricing_sub.service_pricing_id) INNER JOIN service_pricing_cost ON (service_pricing_sub.service_pricing_sub_id = service_pricing_cost.service_pricing_sub_id) WHERE (service_types.service_id=\'something\') AND (service_pricing_cost.service_pricing_currency=\'something else\')'); - done(); - }); - it('case 2 (SELECT field FROM table WHERE cond.)', function(done) { - var resource = { - field: [ - 'fabric_id', - 'fabric_title' - ], - where: { - 'fabrics.fabric_type': 'something' - } - }; - var chain = sql.select().from('fabrics'); - makeQuery(chain, resource); - - var query = chain.toString(); - expect(query).to.equal('SELECT fabric_id, fabric_title FROM fabrics WHERE (fabrics.fabric_type=\'something\')'); - done(); - }); - - it('case 3 (INSERT INTO embroidery_formats (format_title,format_ext,service_type VALUES(\'1\',\'2\',\'3\') RETURNING format_id)', function(done) { - var resource = { - set: { - format_title: 'abc', - format_ext: 'aa', - service_type: 1 - }, - returning: ['format_id'] - }; - var chain = sql.insert().into('embroidery_formats'); - makeQuery(chain, resource); - - var query = chain.toString(); - expect(query).to.equal('INSERT INTO embroidery_formats (format_title, format_ext, service_type) VALUES (\'abc\', \'aa\', 1) RETURNING format_id'); - done(); - }); - - it('case 4 GROUP BY: (SELECT fabric_id, fabric_title FROM fabrics GROUP BY fabric_id)', function(done) { - var resource = { - field: [ - 'fabric_id', - 'fabric_title' - ], - group: ['fabric_id'] - }; - var chain = sql.select().from('fabrics'); - makeQuery(chain, resource); - - var query = chain.toString(); - // lme.w(query); - expect(query).to.equal('SELECT fabric_id, fabric_title FROM fabrics GROUP BY fabric_id'); - done(); - }); - - it('case 5 GROUP BY: (INSERT INTO embroidery_formats (format_title,format_ext,service_type VALUES(\'1\',\'2\',\'3\') RETURNING format_id)', function(done) { - var resource = { - field: [ - 'name', - 'age' - ], - group: ['name', 'age'] - }; - var chain = sql.select().from('fabrics'); - makeQuery(chain, resource); - - var query = chain.toString(); - // lme.w(query); - expect(query).to.equal('SELECT name, age FROM fabrics GROUP BY name, age'); - done(); - }); - - it('case 6 ORDER BY: (SELECT id FROM students ORDER BY id ASC, name ASC, age ASC)', function(done) { - var resource = { - field: [ - 'id' - ], - order: [{ - field: 'id', - asc: true - }, { - field: 'name', - asc: false - }, { - field: 'age', - }] - }; - var chain = sql.select().from('students'); - makeQuery(chain, resource); - - var query = chain.toString(); - // lme.w(query); - expect(query).to.equal('SELECT id FROM students ORDER BY id ASC, name DESC, age ASC'); - done(); - }); - - it('case 7 ERR handling', function(done) { - var resource = { - field: [ - 'id' - ], - order: [{ - field: 'id', - asc: true - }, { - field: 'name', - asc: false - }, { - field: 'age', - }], - blabla: ['he', 'he'] - }; - var chain = sql.select().from('students'); - // makeQuery(chain, resource); - // lme.w(query); - expect(function() { - makeQuery(chain, resource); - }).to.throw(Error); - done(); - }); - }); -}); diff --git a/tests/index.spec.ts b/tests/index.spec.ts new file mode 100644 index 0000000..2708c87 --- /dev/null +++ b/tests/index.spec.ts @@ -0,0 +1,192 @@ +/* tslint:disable: no-unused-expression arrow-parens */ + +import { expect } from 'chai'; +import { Resource, sqlify as makeQuery, squel as sql } from './../src'; + +describe('Testing sqlify', () => { + it('should make good query (type 2: INSERT)', done => { + const resource: Resource = { + set: { + age: 44, + girl: true, + name: 'Divya' + } + }; + const chain = sql.insert().into('users'); + makeQuery(chain, resource); + + const query = chain.toString(); + expect(query).to.equal( + `INSERT INTO users (age, girl, name) VALUES (44, TRUE, 'Divya')` + ); + done(); + }); + + describe('testing some actual scenarios >', () => { + it('case 1 (SELECT field FROM table JOIN JOIN JOIN WHERE cond.)', done => { + const resource: Resource = { + field: [ + 'service_types.service_title', + 'service_pricing.service_pricing_title', + 'service_pricing_sub.service_pricing_sub_title', + 'service_pricing_cost.service_pricing_cost', + 'service_pricing_cost.service_pricing_currency' + ], + join: [ + [ + 'service_pricing', + null, + 'service_types.service_id = service_pricing.service_type' + ], + [ + 'service_pricing_sub', + null, + 'service_pricing.service_pricing_id = service_pricing_sub.service_pricing_id' + ], + [ + 'service_pricing_cost', + null, + 'service_pricing_sub.service_pricing_sub_id = service_pricing_cost.service_pricing_sub_id' + ] + ], + where: { + 'service_types.service_id': 'something', + 'service_pricing_cost.service_pricing_currency': + 'something else' + } + }; + const chain = sql.select().from('users'); + makeQuery(chain, resource); + + const query = chain.toString(); + expect(query).to.equal( + "SELECT service_types.service_title, service_pricing.service_pricing_title, service_pricing_sub.service_pricing_sub_title, service_pricing_cost.service_pricing_cost, service_pricing_cost.service_pricing_currency FROM users INNER JOIN service_pricing ON (service_types.service_id = service_pricing.service_type) INNER JOIN service_pricing_sub ON (service_pricing.service_pricing_id = service_pricing_sub.service_pricing_id) INNER JOIN service_pricing_cost ON (service_pricing_sub.service_pricing_sub_id = service_pricing_cost.service_pricing_sub_id) WHERE (service_types.service_id='something') AND (service_pricing_cost.service_pricing_currency='something else')" + ); + done(); + }); + it('case 2 (SELECT field FROM table WHERE cond.)', function(done) { + const resource: Resource = { + field: ['fabric_id', 'fabric_title'], + where: { + 'fabrics.fabric_type': 'something' + } + }; + const chain = sql.select().from('fabrics'); + makeQuery(chain, resource); + + const query = chain.toString(); + expect(query).to.equal( + "SELECT fabric_id, fabric_title FROM fabrics WHERE (fabrics.fabric_type='something')" + ); + done(); + }); + + it("case 3 (INSERT INTO embroidery_formats (format_title,format_ext,service_type VALUES('1','2','3') RETURNING format_id)", function(done) { + const resource: Resource = { + set: { + format_title: 'abc', + format_ext: 'aa', + service_type: 1 + }, + returning: ['format_id'] + }; + const chain = sql.insert().into('embroidery_formats'); + makeQuery(chain, resource); + + const query = chain.toString(); + expect(query).to.equal( + "INSERT INTO embroidery_formats (format_title, format_ext, service_type) VALUES ('abc', 'aa', 1) RETURNING format_id" + ); + done(); + }); + + it('case 4 GROUP BY: (SELECT fabric_id, fabric_title FROM fabrics GROUP BY fabric_id)', function(done) { + const resource: Resource = { + field: ['fabric_id', 'fabric_title'], + group: ['fabric_id'] + }; + const chain = sql.select().from('fabrics'); + makeQuery(chain, resource); + + const query = chain.toString(); + // lme.w(query); + expect(query).to.equal( + 'SELECT fabric_id, fabric_title FROM fabrics GROUP BY fabric_id' + ); + done(); + }); + + it("case 5 GROUP BY: (INSERT INTO embroidery_formats (format_title,format_ext,service_type VALUES('1','2','3') RETURNING format_id)", done => { + const resource: Resource = { + field: ['name', 'age'], + group: ['name', 'age'] + }; + const chain = sql.select().from('fabrics'); + makeQuery(chain, resource); + + const query = chain.toString(); + // lme.w(query); + expect(query).to.equal( + 'SELECT name, age FROM fabrics GROUP BY name, age' + ); + done(); + }); + + it('case 6 ORDER BY: (SELECT id FROM students ORDER BY id ASC, name ASC, age ASC)', done => { + const resource: Resource = { + field: ['id'], + order: [ + { + field: 'id', + asc: true + }, + { + field: 'name', + asc: false + }, + { + field: 'age', + asc: true + } + ] + }; + const chain = sql.select().from('students'); + makeQuery(chain, resource); + + const query = chain.toString(); + // lme.w(query); + expect(query).to.equal( + 'SELECT id FROM students ORDER BY id ASC, name DESC, age ASC' + ); + done(); + }); + + it('case 7 ERR handling', function(done) { + const resource = { + field: ['id'], + order: [ + { + asc: true, + field: 'id' + }, + { + field: 'name', + asc: false + }, + { + field: 'age', + asc: true + } + ], + blabla: ['he', 'he'] + }; + const chain = sql.select().from('students'); + // makeQuery(chain, resource); + // lme.w(query); + expect(() => { + makeQuery(chain, resource); + }).to.throw(Error); + done(); + }); + }); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..e29c1b8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "noImplicitAny": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "dist", + "baseUrl": ".", + "declaration": true, + "paths": { + "*": ["node_modules/*", "typings/*"] + } + }, + "include": ["src/**/*", "typings/*"] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..b686b47 --- /dev/null +++ b/tslint.json @@ -0,0 +1,42 @@ +{ + "defaultSeverity": "error", + "extends": ["tslint:recommended"], + "jsRules": {}, + "rules": { + "class-name": true, + "comment-format": [true, "check-space"], + "eofline": true, + "forin": true, + "indent": [true, "tabs"], + "jsdoc-format": true, + "label-position": true, + "no-arg": true, + "no-conditional-assignment": true, + "no-construct": true, + "no-debugger": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-inferrable-types": true, + "no-internal-module": true, + "no-shadowed-variable": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "quotemark": [true, "single"], + "radix": true, + "semicolon": [true, "always"], + "switch-default": true, + "triple-equals": [true, "allow-null-check"], + "variable-name": [ + true, + "check-format", + "ban-keywords", + "allow-snake-case" + ], + "prefer-const": true + }, + "rulesDirectory": [] +} diff --git a/typings/lme.d.ts b/typings/lme.d.ts new file mode 100644 index 0000000..5d3c514 --- /dev/null +++ b/typings/lme.d.ts @@ -0,0 +1,91 @@ +/** Declaration file generated by dts-gen */ + +export function d(...args: any[]): void; + +export function dline(char?: any, length?: any): void; + +export function e(...args: any[]): void; + +export function eline(char?: any, length?: any): void; + +export function h(...args: any[]): void; + +export function hline(char?: any, length?: any): void; + +export function i(...args: any[]): void; + +export function iline(char?: any, length?: any): void; + +export function line(char?: any, length?: any): void; + +export function s(...args: any[]): void; + +export function sline(char: any, length: any): void; + +export function t(...args: any[]): void; + +export function tline(char?: any, length?: any): void; + +export function w(...args: any[]): void; + +export function wline(char?: any, length?: any): void; + +export namespace d { + const prototype: {}; +} + +export namespace dline { + const prototype: {}; +} + +export namespace e { + const prototype: {}; +} + +export namespace eline { + const prototype: {}; +} + +export namespace h { + const prototype: {}; +} + +export namespace hline { + const prototype: {}; +} + +export namespace i { + const prototype: {}; +} + +export namespace iline { + const prototype: {}; +} + +export namespace line { + const prototype: {}; +} + +export namespace s { + const prototype: {}; +} + +export namespace sline { + const prototype: {}; +} + +export namespace t { + const prototype: {}; +} + +export namespace tline { + const prototype: {}; +} + +export namespace w { + const prototype: {}; +} + +export namespace wline { + const prototype: {}; +} diff --git a/typings/typings.d.ts b/typings/typings.d.ts new file mode 100644 index 0000000..21c8294 --- /dev/null +++ b/typings/typings.d.ts @@ -0,0 +1,9 @@ +/** + * For including *.json file as + * `import * as from './stuffs.json';` + */ + +declare module '*.json' { + const value: any; + export = value; +} diff --git a/yarn.lock b/yarn.lock index 6bdf90f..9fdc8bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,117 +2,314 @@ # yarn lockfile v1 -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" +"@types/chai@^4.0.1": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.2.tgz#f1af664769cfb50af805431c407425ed619daa21" + +"@types/chokidar@*": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-1.7.4.tgz#04276d076a509a046f21c0933b705ce4b502f8d9" dependencies: - acorn "^3.0.4" + "@types/events" "*" + "@types/node" "*" -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +"@types/del@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/del/-/del-3.0.0.tgz#1c8cd8b6e38da3b572352ca8eaf5527931426288" + dependencies: + "@types/glob" "*" -acorn@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" +"@types/events@*": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-1.1.0.tgz#93b1be91f63c184450385272c47b6496fd028e02" -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" +"@types/glob-stream@*": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/glob-stream/-/glob-stream-6.1.0.tgz#7ede8a33e59140534f8d8adfb8ac9edfb31897bc" + dependencies: + "@types/glob" "*" + "@types/node" "*" -ajv@^4.7.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" +"@types/glob@*": + version "5.0.35" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.35.tgz#1ae151c802cece940443b5ac246925c85189f32a" dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" +"@types/gulp@^4.0.4": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/gulp/-/gulp-4.0.5.tgz#f5f498d5bf9538364792de22490a12c0e6bc5eb4" + dependencies: + "@types/chokidar" "*" + "@types/undertaker" "*" + "@types/vinyl-fs" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + +"@types/mocha@^2.2.41": + version "2.2.47" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.47.tgz#30bbd880834d4af0f609025f282a69b8d4458f06" + +"@types/node@*": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.0.tgz#b85a0bcf1e1cc84eb4901b7e96966aedc6f078d1" + +"@types/node@^8.0.5": + version "8.5.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.9.tgz#7155cfb4ae405bca4dd8df1a214c339e939109bf" + +"@types/undertaker-registry@*": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz#4306d4a03d7acedb974b66530832b90729e1d1da" + +"@types/undertaker@*": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@types/undertaker/-/undertaker-1.1.4.tgz#7babd824afd06277a75dca3d7d9cb748dd36f650" + dependencies: + "@types/events" "*" + "@types/undertaker-registry" "*" + +"@types/vinyl-fs@*": + version "2.4.8" + resolved "https://registry.yarnpkg.com/@types/vinyl-fs/-/vinyl-fs-2.4.8.tgz#cd55c0c625e8ba02858992d9c7265a343704ca77" + dependencies: + "@types/glob-stream" "*" + "@types/node" "*" + "@types/vinyl" "*" + +"@types/vinyl@*": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.2.tgz#4f3b8dae8f5828d3800ef709b0cff488ee852de3" + dependencies: + "@types/node" "*" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-styles@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + 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" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + app-root-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + argparse@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" dependencies: sprintf-js "~1.0.2" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + 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: +array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +atob@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" -babel-code-frame@^6.16.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: - chalk "^1.1.0" + chalk "^1.1.3" esutils "^2.0.2" - js-tokens "^3.0.0" + js-tokens "^3.0.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" -brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -chai@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" +chai@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" dependencies: assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" + check-error "^1.0.1" + deep-eql "^3.0.0" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -122,39 +319,95 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -circular-json@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" +chalk@^2.0.0, chalk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" -cli-cursor@^1.0.1: +check-error@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" dependencies: - restore-cursor "^1.0.1" + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" -cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" 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" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + +commander@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" + commander@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: graceful-readlink ">= 1.0.0" +commander@^2.12.1: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.5.2: +concat-stream@^1.4.7: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -162,253 +415,396 @@ concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" +concurrently@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521" + dependencies: + chalk "0.5.1" + commander "2.6.0" + date-fns "^1.23.0" + lodash "^4.5.1" + rx "2.3.24" + spawn-command "^0.0.2-1" + supports-color "^3.2.3" + tree-kill "^1.1.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +copy-props@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-1.6.0.tgz#f0324bbee99771101e7b3ada112f313c393db8ed" + dependencies: + each-props "^1.2.1" + is-plain-object "^2.0.1" + core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cross-env@^5.0.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.3.tgz#f8ae18faac87692b0a8b4d2f7000d4ec3a85dfd7" + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" dependencies: es5-ext "^0.10.9" -debug@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" +date-fns@^1.23.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" -debug@^2.1.1: +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +debug@2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: ms "2.0.0" -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: - type-detect "0.1.1" + ms "2.0.0" -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-eql@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + dependencies: + type-detect "^4.0.0" + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" dependencies: - globby "^5.0.0" + globby "^6.1.0" is-path-cwd "^1.0.0" is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" + p-map "^1.1.1" + pify "^3.0.0" rimraf "^2.2.8" +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + diff@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" -doctrine@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" +diff@^3.1.0, diff@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.21" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.21.tgz#19a725f9e51d0300bbc1e8e821109fd9daf55925" +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" dependencies: - es6-iterator "2" - es6-symbol "~3.1" + readable-stream "~1.1.9" -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" +each-props@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.1.tgz#fc138f51e3a2774286d4858e02d6e7de462de158" dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" + is-plain-object "^2.0.1" + object.defaults "^1.1.0" -es6-map@^0.1.3: +end-of-stream@~0.1.5: version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" + once "~1.3.0" + +es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.38" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" + dependencies: + es6-iterator "~2.0.3" es6-symbol "~3.1.1" - event-emitter "~0.3.5" -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" +es6-iterator@^2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: +es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1: +escape-string-regexp@1.0.5, escape-string-regexp@^1.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" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esutils@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" + is-posix-bracket "^0.1.0" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" + fill-range "^2.1.0" -eslint@^3.18.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" + homedir-polyfill "^1.0.1" -espree@^3.4.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" dependencies: - acorn "^5.0.1" - acorn-jsx "^3.0.0" + is-extendable "^0.1.0" -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +extend-shallow@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" -esquery@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" +extend@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: - estraverse "^4.0.0" + is-extglob "^1.0.0" + +extglob@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fancy-log@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + time-stamp "^1.0.0" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -esrecurse@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" dependencies: - estraverse "~4.1.0" - object-assign "^4.0.1" + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" -estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" -estraverse@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" +findup-sync@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" dependencies: - d "1" - es5-ext "~0.10.14" + glob "~5.0.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flagged-respawn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" + for-in "^1.0.1" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" + for-in "^1.0.1" -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" + map-cache "^0.2.2" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -generate-function@^2.0.0: +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +get-func-name@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" dependencies: - is-property "^1.0.0" + find-index "^0.1.1" glob@7.1.1: version "7.1.1" @@ -421,7 +817,16 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -432,33 +837,160 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.14.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.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" + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" -"graceful-readlink@>= 1.0.0": - version "1.0.1" +glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +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" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +graceful-fs@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" +gulp-cli@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-1.4.0.tgz#6f5bbe2cd0bdb4849d12cf9e1246a5861f8b4f88" + dependencies: + archy "^1.0.0" + chalk "^1.1.0" + copy-props "^1.4.1" + fancy-log "^1.1.0" + gulplog "^1.0.0" + interpret "^1.0.0" + liftoff "^2.3.0" + lodash.isfunction "^3.0.8" + lodash.isplainobject "^4.0.4" + lodash.sortby "^4.5.0" + matchdep "^1.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + semver-greatest-satisfied-range "^1.0.0" + tildify "^1.0.0" + v8flags "^2.0.9" + wreck "^6.3.0" + yargs "^3.28.0" + +gulp-util@^3.0.0: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + dependencies: + ansi-regex "^0.2.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -469,13 +1001,56 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -ignore@^3.2.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" -imurmurhash@^0.1.4: +has-values@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" inflight@^1.0.4: version "1.0.6" @@ -484,31 +1059,104 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.1: +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2, 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@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-dotfile@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -516,18 +1164,35 @@ is-fullwidth-code-point@^1.0.0: 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-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" -is-my-json-valid@^2.10.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" + is-extglob "^2.1.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-odd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088" + dependencies: + is-number "^3.0.0" is-path-cwd@^1.0.0: version "1.0.0" @@ -540,64 +1205,130 @@ is-path-in-cwd@^1.0.0: is-path-inside "^1.0.0" is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" dependencies: path-is-inside "^1.0.1" -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" -is-resolvable@^1.0.0: +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-relative@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" dependencies: - tryit "^1.0.1" + is-unc-path "^1.0.0" -isarray@^1.0.0, isarray@~1.0.0: +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.0, is-windows@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" -js-yaml@^3.5.1: - version "3.8.4" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" dependencies: - argparse "^1.0.7" - esprima "^3.1.1" + isarray "1.0.0" -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: - jsonify "~0.0.0" + argparse "^1.0.7" + esprima "^4.0.0" json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +lazy-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + dependencies: + set-getter "^0.1.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +liftoff@^2.1.0, liftoff@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" lme@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/lme/-/lme-1.5.1.tgz#147cfa9fb58bebdd9ba4f7cfbddedc8bc0f76e79" + version "1.5.3" + resolved "https://registry.yarnpkg.com/lme/-/lme-1.5.3.tgz#82c55d003d055f371472f338554f93f2d334c432" dependencies: app-root-path "^2.0.1" chalk "^1.1.3" @@ -617,6 +1348,14 @@ lodash._basecreate@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" @@ -625,6 +1364,22 @@ lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + lodash.create@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" @@ -633,6 +1388,12 @@ lodash.create@3.1.1: lodash._basecreate "^3.0.0" lodash._isiterateecall "^3.0.0" +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -641,6 +1402,14 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lodash.isfunction@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b" + +lodash.isplainobject@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -649,91 +1418,338 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash@^4.0.0, lodash@^4.3.0: +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.sortby@^4.5.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash@^4.5.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -minimatch@^3.0.2, minimatch@^3.0.4: +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +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" + +make-error@^1.1.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.2.tgz#8762ffad2444dd8ff1f7c819629fa28e24fea1c4" + +make-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.0.tgz#57bef5dc85d23923ba23767324d8e8f8f3d9694b" + dependencies: + kind-of "^3.1.0" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +matchdep@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-1.0.1.tgz#a57a33804491fbae208aba8f68380437abc2dca5" + dependencies: + findup-sync "~0.3.0" + micromatch "^2.3.7" + resolve "~1.1.6" + stack-trace "0.0.9" + +micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.0.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.5.tgz#d05e168c206472dfbca985bfef4f57797b4cd4ba" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.0" + define-property "^1.0.0" + extend-shallow "^2.0.1" + extglob "^2.0.2" + fragment-cache "^0.2.1" + kind-of "^6.0.0" + nanomatch "^1.2.5" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: brace-expansion "^1.1.7" +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + 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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mixin-deep@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mocha@^3.2.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" +mocha@^3.4.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" dependencies: browser-stdout "1.3.0" commander "2.9.0" - debug "2.6.0" + debug "2.6.8" diff "3.2.0" escape-string-regexp "1.0.5" glob "7.1.1" growl "1.9.2" + he "1.1.1" json3 "3.3.2" lodash.create "3.1.1" mkdirp "0.5.1" supports-color "3.1.2" -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +mute-stdout@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.0.tgz#5b32ea07eb43c9ded6130434cf926f46b2a7fd4d" + +nanomatch@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.7.tgz#53cd4aa109ff68b7f869591fdc9d10daeeea3e79" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + is-odd "^1.0.0" + kind-of "^5.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natives@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.1.tgz#011acce1f7cbd87f7ba6b3093d6cd9392be1c574" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" 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@^4.0.1, object-assign@^4.1.0: +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + 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" +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" 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" + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-shim@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + 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" @@ -746,10 +1762,28 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -760,41 +1794,74 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +pre-commit@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" + dependencies: + cross-spawn "^5.0.1" + spawn-sync "^1.0.15" + which "1.2.x" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +prettier@^1.5.3: + version "1.10.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.10.2.tgz#1af8356d1842276a99a5b5529c82dd9e9ad3cc93" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" 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" -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -readable-stream@^2.2.2: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: - buffer-shims "~1.0.0" core-util-is "~1.0.0" inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +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" - string_decoder "~1.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" util-deprecate "~1.0.1" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" rechoir@^0.6.2: version "0.6.2" @@ -802,69 +1869,219 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9" + dependencies: + extend-shallow "^2.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" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -resolve-from@^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" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" -resolve@^1.1.6: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: path-parse "^1.0.5" -restore-cursor@^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" +resolve@~1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" rimraf@^2.2.8: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -run-async@^0.1.0: +rx@2.3.24: + version "2.3.24" + resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +semver-greatest-satisfied-range@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + dependencies: + sver-compat "^1.5.0" + +semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + +set-getter@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" dependencies: - once "^1.3.0" + to-object-path "^0.3.0" -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" -shelljs@^0.7.5: - version "0.7.7" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" + 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" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^2.0.0" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + +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" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" squel@^5.8.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/squel/-/squel-5.10.0.tgz#e5265f5dc5449b6eb4caff4c1b2bc95bc65adecd" + version "5.12.0" + resolved "https://registry.yarnpkg.com/squel/-/squel-5.12.0.tgz#f8d0310db8d2ca63b5c36c11defc0f7993fcf78e" + +stack-trace@0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-consume@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" string-width@^1.0.1: version "1.0.2" @@ -874,30 +2091,40 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" +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: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" + safe-buffer "~5.1.0" -string_decoder@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98" +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" dependencies: - safe-buffer "^5.0.1" + ansi-regex "^0.2.1" -strip-ansi@^3.0.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-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + 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-json-comments@~2.0.1: +strip-json-comments@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -907,75 +2134,285 @@ supports-color@3.1.2: dependencies: has-flag "^1.0.0" +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" + has-flag "^1.0.0" -text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" +through2@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: - prelude-ls "~1.1.2" + readable-stream "^2.1.5" + xtend "~4.0.1" -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae" + dependencies: + define-property "^0.2.5" + extend-shallow "^2.0.1" + regex-not "^1.0.0" + +tree-kill@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + +ts-node@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" + dependencies: + arrify "^1.0.0" + chalk "^2.0.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.0" + tsconfig "^6.0.0" + v8flags "^3.0.0" + yn "^2.0.0" + +tsconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" + dependencies: + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + +tslib@^1.8.0, tslib@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + +tslint@^5.5.0: + version "5.9.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.12.1" + +tsutils@^2.12.1: + version "2.19.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.19.1.tgz#76d7ebdea9d7a7bf4a05f50ead3701b0168708d7" + dependencies: + tslib "^1.8.1" + +type-detect@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.7.tgz#862bd2cf6058ad92799ff5a5b8cf7b6cec726198" typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" +typescript@^2.4.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" dependencies: - os-homedir "^1.0.0" + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +use@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" + dependencies: + define-property "^0.2.5" + isobject "^3.0.0" + lazy-cache "^2.0.2" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +v8flags@^2.0.2, v8flags@^2.0.9: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +v8flags@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b" + dependencies: + homedir-polyfill "^1.0.1" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +which@1.2.x: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +which@^1.2.14, 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" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + +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" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" +wreck@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/wreck/-/wreck-6.3.0.tgz#a1369769f07bbb62d6a378336a7871fc773c740b" dependencies: - mkdirp "^0.5.1" + boom "2.x.x" + hoek "2.x.x" -xtend@^4.0.0: +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs@^3.28.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"